Compare commits
569 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2cd7238e76 | |||
| 21f0043b27 | |||
| b7599c0f30 | |||
| d8494ef1ae | |||
| 727b32e886 | |||
| 8124efa505 | |||
| a5cff4d797 | |||
| d1e5828644 | |||
| 18d73d6d76 | |||
| 4a3a24dcc1 | |||
| 591159c4a9 | |||
| 7baf959975 | |||
| 3f02935844 | |||
| f98251a05a | |||
| 80f0741103 | |||
| e28707055b | |||
| 698c3415ea | |||
| daf43989fc | |||
| c7586de280 | |||
| 506b9deec5 | |||
| 1fc0191311 | |||
| 1f9e04f72d | |||
| a71bdc761e | |||
| 9d8f4d5cfa | |||
| ee87fdc869 | |||
| bf63a18c5f | |||
| ddba30988b | |||
| b0e2c959eb | |||
| 28bec8e1bf | |||
| 86702186f2 | |||
| 82b1a2bd7a | |||
| d36cf71a2d | |||
| 1dd1062be1 | |||
| c0e3b86064 | |||
| 6210a8491f | |||
| 33a4f05ffa | |||
| a74d3005f8 | |||
| bca833dad7 | |||
| f981e05908 | |||
| b5abd777b0 | |||
| b2c9add47e | |||
| a401a192b8 | |||
| ad1b007dd1 | |||
| 71e35c8b4d | |||
| 2e504b2dac | |||
| 6e9df9e452 | |||
| 8aa5899196 | |||
| b6608ad31d | |||
| edb39039dd | |||
| bacf518189 | |||
| 1244044647 | |||
| b960ce1426 | |||
| c55a889c23 | |||
| 829af30568 | |||
| a3007e11ca | |||
| 9a981b5292 | |||
| 4464a6c3f6 | |||
| d30ac20fad | |||
| 7bb2d94e53 | |||
| 7ff4509858 | |||
| f2997e4c00 | |||
| 133e9d4705 | |||
| 501ca4bcf5 | |||
| 9212942724 | |||
| 683c1a6512 | |||
| 9b0d33048c | |||
| bc8bf2c329 | |||
| f0002501f7 | |||
| c4cc0154be | |||
| cba4c3cdc4 | |||
| c51d3b5465 | |||
| e179adc4a0 | |||
| 47f3740a70 | |||
| 2880370047 | |||
| 61a055a1c6 | |||
| 64b4cfa59f | |||
| c799ffd223 | |||
| 2ec039365f | |||
| 26e731b487 | |||
| 34bae90820 | |||
| b55a052a22 | |||
| 011aabe9ed | |||
| a17a6527f6 | |||
| 122c6256ca | |||
| 73aaff1b29 | |||
| c7fbc16357 | |||
| bc728db15b | |||
| 2eebbd307d | |||
| dc851a729e | |||
| 6007fd630f | |||
| cb0ecb2afb | |||
| 84a785ea67 | |||
| cc1e4d2194 | |||
| b2d84dcebd | |||
| 958d77ba52 | |||
| c4b38869ab | |||
| fd1968dd22 | |||
| 88b80ebdf5 | |||
| 2445ab8d8e | |||
| 0e1931f178 | |||
| 3e923b4993 | |||
| 8181498d86 | |||
| 57dd611111 | |||
| b3162bd41c | |||
| cd2adbad9a | |||
| 99730ac4f9 | |||
| d2ab3383ad | |||
| 3b15a6b39e | |||
| 651e58f443 | |||
| 769f9e33e9 | |||
| cf77bb7cfc | |||
| c75b76ddf5 | |||
| 4dec8d7925 | |||
| 934e7b614c | |||
| 416b14de72 | |||
| b87099c790 | |||
| 052725fdc7 | |||
| f90b79791f | |||
| 4c32c95b33 | |||
| c00d47cc99 | |||
| ea53c7dc85 | |||
| 2b923c681e | |||
| 7a8e918519 | |||
| d99ae3809d | |||
| 51e6d0a336 | |||
| 228844c017 | |||
| 87e628a9e9 | |||
| e6885e25b5 | |||
| f31ffc4596 | |||
| 4114f00c05 | |||
| 8f7209f886 | |||
| d80146c704 | |||
| 577f379a12 | |||
| 3d73915358 | |||
| a5317d50a5 | |||
| 143bd6cc80 | |||
| 5cc8f970c0 | |||
| c9058280e0 | |||
| 5af50cfd55 | |||
| d846142f0c | |||
| 0ba0f9d2b9 | |||
| f4f9c1865e | |||
| c40439ae6b | |||
| 683fa2a392 | |||
| 246bf1df64 | |||
| 9a868e9239 | |||
| ab3cde1939 | |||
| bec3e156fb | |||
| 086afbbaa5 | |||
| cd4d73114c | |||
| 14ca506774 | |||
| 984bf67d84 | |||
| 2b3ae8b638 | |||
| bb9ae18c71 | |||
| ce01457510 | |||
| d1a46b491e | |||
| 31df99f7d6 | |||
| 5e11b2b056 | |||
| d106934336 | |||
| 68718361a7 | |||
| c887865d54 | |||
| dc48944979 | |||
| d22b8b1d3a | |||
| 56619b20cf | |||
| 12ebf77e22 | |||
| 845af8bd96 | |||
| 680f08c2b8 | |||
| 82bac4173e | |||
| 8a8fda3e02 | |||
| 1c5b685398 | |||
| e95084f138 | |||
| e12d268662 | |||
| 6a3f17cd36 | |||
| db0774a81b | |||
| 34615d3a74 | |||
| 189499c10b | |||
| de613a8a98 | |||
| c0369b2e10 | |||
| 07ebbb6c84 | |||
| 73ed657e00 | |||
| b37217b181 | |||
| b02e6e222f | |||
| c52abed4d3 | |||
| 9e57efe82c | |||
| 77ab872bec | |||
| 27acebc5f5 | |||
| 2755d9941c | |||
| 488982f424 | |||
| 086e12c6ca | |||
| 9b19f16698 | |||
| b13fd68848 | |||
| 3e51426379 | |||
| 105781fa76 | |||
| d2be12bb07 | |||
| fdc15e12c4 | |||
| e548743cbf | |||
| 7499f875a6 | |||
| cdef752a9c | |||
| 1483941bea | |||
| 9cc15be7f2 | |||
| 453e1bfaec | |||
| 82439327fa | |||
| f60002e87d | |||
| 9fc6382909 | |||
| ebad08aa97 | |||
| 599f1dd157 | |||
| bb5ce67d57 | |||
| f948ce399e | |||
| 954c60947d | |||
| 98b6783c05 | |||
| 0894d2886a | |||
| 4995b4abe3 | |||
| 35ef19cfc8 | |||
| 09824a718f | |||
| f4e85af53c | |||
| 74a909cfbc | |||
| 0bfdfd8433 | |||
| 1f5cf776b2 | |||
| cdd6840826 | |||
| ab27ee4cf4 | |||
| 6211295155 | |||
| befd7ceb89 | |||
| 2cead6f328 | |||
| 4e3d58f75a | |||
| 24fddf1ded | |||
| 87cd65ff03 | |||
| 219e3d61f8 | |||
| 4ade06f36f | |||
| 786510a937 | |||
| 0c6df39a45 | |||
| 648ad0cd90 | |||
| cd0d43382f | |||
| 98b730c806 | |||
| 4b787b22c8 | |||
| 5c6f5a1610 | |||
| 0b8d5f7b98 | |||
| 314d481dcd | |||
| 0980c68e6f | |||
| 983bfa2088 | |||
| 3a9928de65 | |||
| 1fd5fb2f7e | |||
| 4ac88fa8d3 | |||
| 5f8f9e33f1 | |||
| f0c71ae2ae | |||
| 0c7ecdc954 | |||
| 73a687df7d | |||
| b683110e72 | |||
| 3840015e7d | |||
| 639b8112b6 | |||
| 2bf17f5d3c | |||
| 4823d4c32a | |||
| c8c035eeef | |||
| 155bd09fd0 | |||
| f546e5a8ef | |||
| 2ccb0c8f42 | |||
| 05303ce6c6 | |||
| d8f3029952 | |||
| 09c28f75b3 | |||
| 57671e267d | |||
| b692108f1e | |||
| 2815aecd0c | |||
| b9f2b1e7c6 | |||
| bd9ba7ef1f | |||
| a015bd1ebd | |||
| d6cf167d52 | |||
| 3fc2194fd5 | |||
| 72c14994f0 | |||
| fddb6a31a7 | |||
| 278ae7763a | |||
| 5cafaef0a9 | |||
| fcd297ffb2 | |||
| 969b9eb89d | |||
| 4fb5bd76fb | |||
| 8043bb9087 | |||
| 69912ba3c7 | |||
| 19034d9dff | |||
| cf0fcf5a2a | |||
| 149c593d89 | |||
| ab5a33fc31 | |||
| f5a55b3024 | |||
| 7422ab9e55 | |||
| f66256cc13 | |||
| 9cf7a63c77 | |||
| 7842812e24 | |||
| ec59d7d26b | |||
| ea23525f66 | |||
| 87762a9b17 | |||
| bc3a899acf | |||
| 5e01ffdfd8 | |||
| 794cbd8708 | |||
| 661b485b58 | |||
| 64399d45c1 | |||
| 653a9e6e7f | |||
| 71e07dc6c7 | |||
| 69ceebeb05 | |||
| ccb2724fc4 | |||
| ec6d6adebc | |||
| 3899248305 | |||
| 4557992334 | |||
| d0e9108800 | |||
| dc80d000aa | |||
| 775caabeeb | |||
| e8b6e95f8e | |||
| d2614d01fd | |||
| 4262794668 | |||
| a6237e5473 | |||
| 0b14d785ca | |||
| 6bdf415adb | |||
| ebabdd37b4 | |||
| 11c5230628 | |||
| bfe029bb0c | |||
| cbf12bb54b | |||
| b01d8e01e3 | |||
| 985b222123 | |||
| b4b8929ab1 | |||
| 48a217648c | |||
| 12ae714c70 | |||
| 2c51887668 | |||
| 69e11136e8 | |||
| c2190f71ca | |||
| 5378fee1c3 | |||
| cefc37a553 | |||
| 264253757c | |||
| 2512e958fa | |||
| cb2c0733e2 | |||
| 280aa6da91 | |||
| 9554adda28 | |||
| f3fa7119ac | |||
| 0d022d420b | |||
| ec530a2c91 | |||
| ebeeafc94f | |||
| 17e28ae85d | |||
| da6434a65a | |||
| a2623b1a9a | |||
| 1738b38536 | |||
| 7235647e67 | |||
| 2a1e3b2b77 | |||
| 61823a5d62 | |||
| ba96c6f3bb | |||
| fd8931c87e | |||
| 7530b3c971 | |||
| 64616f1408 | |||
| 004d9b09b8 | |||
| 8d46840e09 | |||
| 753a12f436 | |||
| 8e667e69f6 | |||
| 4d09be25aa | |||
| 0f499e36fb | |||
| f5beaabded | |||
| 248809ca1f | |||
| f9bc7458d4 | |||
| c4459dff40 | |||
| 16381929ba | |||
| f1b03b36f7 | |||
| e9ba6fd034 | |||
| bb03e17e2d | |||
| 09875a5180 | |||
| 4912202cfa | |||
| f57da6655c | |||
| ac34714837 | |||
| b4ce31cae3 | |||
| 5dffbca636 | |||
| fec9fcda7d | |||
| 306776626a | |||
| 15be6827ea | |||
| 8c0a786918 | |||
| 8aa67114a9 | |||
| 1bbb26334a | |||
| 1227b0a633 | |||
| 6c315e8aee | |||
| 88faac7bbc | |||
| 9bb7e8d614 | |||
| 286f97fad0 | |||
| f0a02e0d9d | |||
| 8185bfe893 | |||
| d577cebd89 | |||
| 0e5514003a | |||
| 167161d8ce | |||
| b8b0ecabd8 | |||
| bb05de2e80 | |||
| 7890e87234 | |||
| 25c05867d6 | |||
| a421270c19 | |||
| 764fb57fdc | |||
| 3fd846687e | |||
| ff9c939720 | |||
| 234db2be3f | |||
| fc44d53bb0 | |||
| 555a4b5f5c | |||
| a6e6df1445 | |||
| 2010d697c8 | |||
| 26045a9be5 | |||
| 06e5b8a06a | |||
| 94aef197dd | |||
| a86e7eeba0 | |||
| 95a3ce68ce | |||
| 9ab1e69697 | |||
| 4f03cf7e1e | |||
| 60d80fd5fc | |||
| 350d3ad386 | |||
| d6065e8814 | |||
| 363808a57b | |||
| 3402835c8e | |||
| 911d37e4d7 | |||
| 72e1e242a3 | |||
| c42ff338e7 | |||
| 4f81fcd5cc | |||
| d47f1ef406 | |||
| 422246825b | |||
| b0ccd2a8a0 | |||
| 76c72351a5 | |||
| 03df3c5293 | |||
| dd31574b4f | |||
| eb52ac55a7 | |||
| d167582f6b | |||
| dd6cb054a7 | |||
| b97557ce7b | |||
| 964fd1095e | |||
| fcc6c2384b | |||
| a5d73f41b5 | |||
| 1b305bf789 | |||
| 943752db30 | |||
| 60a2a39e88 | |||
| 532563e861 | |||
| 3ee27bd434 | |||
| 55e68441cb | |||
| 7ec481d99b | |||
| 129e947720 | |||
| e964060a6a | |||
| 74696d2e44 | |||
| 78746fdb6f | |||
| ed2068fb03 | |||
| b61c4d3693 | |||
| 81b9952e34 | |||
| 64958264c5 | |||
| bda52a51a7 | |||
| bab4136411 | |||
| e4fe335e75 | |||
| 0a7ac4d42a | |||
| 95233b5299 | |||
| 8b6f68abcf | |||
| e9dfb3cb63 | |||
| 5b0badc215 | |||
| 6f4398889e | |||
| dd4722fc1f | |||
| eec27f0e89 | |||
| baf51a2e2f | |||
| 256eb17ae5 | |||
| 610d29dab0 | |||
| 5ad4b6249e | |||
| aaef4a2d5b | |||
| 557bd3f438 | |||
| 27b28cf6ec | |||
| cc150cc2c6 | |||
| 345bda69ec | |||
| 478b6b53a9 | |||
| a9a1204ab9 | |||
| e7ced1aeab | |||
| 56f95934f5 | |||
| 88ee62be26 | |||
| 961d41d0bd | |||
| 9c824aa0b5 | |||
| efff2a78c8 | |||
| 608f823516 | |||
| e68ffdbc81 | |||
| 3dc9a8b980 | |||
| bec0b6e8c3 | |||
| 8c01612851 | |||
| b0e5db0eb0 | |||
| 7c8fbc35bc | |||
| b637429e44 | |||
| d52bb78d2c | |||
| 1be36fe6a9 | |||
| 1088375b38 | |||
| 285322982f | |||
| 4e6be9172a | |||
| 0e1333ed5f | |||
| cd74fb6a6d | |||
| ec2d529832 | |||
| 257556bbf5 | |||
| 93d93b4805 | |||
| e368453751 | |||
| d0dc095c84 | |||
| 360fdca5ac | |||
| e1b95913ea | |||
| a3ea9e2985 | |||
| e9bf3e13d0 | |||
| 9e02471ded | |||
| 094fda0e73 | |||
| d2de560060 | |||
| 5315eb546f | |||
| 7fa521a046 | |||
| 0244c4046e | |||
| 7e8c93bea2 | |||
| 8cd7a44a25 | |||
| 9a1e6cc3e8 | |||
| 34220ec447 | |||
| f0135a02f5 | |||
| 0b7e013fbe | |||
| 850eef0c1a | |||
| 5a581f46df | |||
| b334621d76 | |||
| a768855a7a | |||
| 7ddeb0d00f | |||
| 2ba437b6dc | |||
| f2920bc30d | |||
| d043f46270 | |||
| 1e1b111678 | |||
| 1f5ce4f619 | |||
| 524da5dc54 | |||
| a2a6303a22 | |||
| 6805d8c7e0 | |||
| 5ae9de4e3b | |||
| 2f9b930c6b | |||
| e243ef5907 | |||
| 7b162c7513 | |||
| 5b8f105308 | |||
| 1df47352cc | |||
| e4225cbab8 | |||
| 83ca7654b1 | |||
| 8065dbc2e7 | |||
| d03fcad9bd | |||
| e494fc04e5 | |||
| d77c9139ad | |||
| 4479d99a9a | |||
| 072c289f5e | |||
| a538f655be | |||
| b888a6ba37 | |||
| de988f6a76 | |||
| 2b325de680 | |||
| d83fac4247 | |||
| 0a5ea859ea | |||
| 9a93b150f0 | |||
| 5476b9098e | |||
| e5a75cfd1c | |||
| 1f745c4588 | |||
| 6c7f49d563 | |||
| dae51a4a2b | |||
| d113324a90 | |||
| 1cab99b3ca | |||
| f7d08d3371 | |||
| 02d22dca95 | |||
| 7764cb2b80 | |||
| be5f8413ca | |||
| ce48d880d9 | |||
| 8d950620b7 | |||
| 10b33d0f79 | |||
| 2706486559 | |||
| d1e468fefb | |||
| 0ac90ac395 | |||
| fef779feca | |||
| ced890301c | |||
| 7d73d90c1a | |||
| 4e40260f1f | |||
| 3aebb8cb41 | |||
| fcbeb2fa22 | |||
| 7a3cbf1876 | |||
| 3dda72e47f | |||
| 1458349cb3 | |||
| a2bfd5fcfc | |||
| 6501374a34 | |||
| 63669000ab | |||
| f9a62667cf | |||
| 6cc1466baa | |||
| bcd77ac65e | |||
| 0786a0a088 | |||
| c14e79f8df | |||
| 8cc6a30557 | |||
| 5c1f79ab26 |
+11
-11
@@ -1,9 +1,9 @@
|
||||
#!/bin/sh -ex
|
||||
|
||||
# Setup Qt variables
|
||||
export QT_BASE_DIR=/opt/qt${QTVERMIN}
|
||||
export PATH=$QT_BASE_DIR/bin:$PATH
|
||||
export LD_LIBRARY_PATH=$QT_BASE_DIR/lib/x86_64-linux-gnu:$QT_BASE_DIR/lib
|
||||
export QT_BASE_DIR=/opt/qt"${QTVERMIN}"
|
||||
export PATH="$QT_BASE_DIR"/bin:"$PATH"
|
||||
export LD_LIBRARY_PATH="$QT_BASE_DIR"/lib/x86_64-linux-gnu:"$QT_BASE_DIR"/lib
|
||||
|
||||
if [ -z "$CIRRUS_CI" ]; then
|
||||
cd rpcs3 || exit 1
|
||||
@@ -23,19 +23,19 @@ mkdir build && cd build || exit 1
|
||||
|
||||
if [ "$COMPILER" = "gcc" ]; then
|
||||
# These are set in the dockerfile
|
||||
export CC=${GCC_BINARY}
|
||||
export CXX=${GXX_BINARY}
|
||||
export CC="${GCC_BINARY}"
|
||||
export CXX="${GXX_BINARY}"
|
||||
export LINKER=gold
|
||||
# We need to set the following variables for LTO to link properly
|
||||
export AR=/usr/bin/gcc-ar-$GCCVER
|
||||
export RANLIB=/usr/bin/gcc-ranlib-$GCCVER
|
||||
export AR=/usr/bin/gcc-ar-"$GCCVER"
|
||||
export RANLIB=/usr/bin/gcc-ranlib-"$GCCVER"
|
||||
export CFLAGS="-fuse-linker-plugin"
|
||||
else
|
||||
export CC=${CLANG_BINARY}
|
||||
export CXX=${CLANGXX_BINARY}
|
||||
export CC="${CLANG_BINARY}"
|
||||
export CXX="${CLANGXX_BINARY}"
|
||||
export LINKER=lld
|
||||
export AR=/usr/bin/llvm-ar-$LLVMVER
|
||||
export RANLIB=/usr/bin/llvm-ranlib-$LLVMVER
|
||||
export AR=/usr/bin/llvm-ar-"$LLVMVER"
|
||||
export RANLIB=/usr/bin/llvm-ranlib-"$LLVMVER"
|
||||
fi
|
||||
|
||||
export CFLAGS="$CFLAGS -fuse-ld=${LINKER}"
|
||||
|
||||
+3
-3
@@ -7,9 +7,9 @@ export MACOSX_DEPLOYMENT_TARGET=11.6
|
||||
export CXX=clang++
|
||||
export CC=clang
|
||||
export Qt5_DIR="/usr/local/opt/qt@5/lib/cmake/Qt5"
|
||||
export PATH="/usr/local/opt/llvm/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin"
|
||||
export LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib"
|
||||
export CPPFLAGS="-I/usr/local/opt/llvm/include -msse -msse2 -mcx16 -no-pie"
|
||||
export PATH="/usr/local/opt/llvm@13/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin"
|
||||
export LDFLAGS="-L/usr/local/opt/llvm@13/lib -Wl,-rpath,/usr/local/opt/llvm@13/lib"
|
||||
export CPPFLAGS="-I/usr/local/opt/llvm@13/include -msse -msse2 -mcx16 -no-pie"
|
||||
|
||||
git submodule update --init --recursive --depth 1
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ if [ "$DEPLOY_APPIMAGE" = "true" ]; then
|
||||
ls ./appdir/usr/lib/
|
||||
rm -r ./appdir/usr/share/doc
|
||||
cp "$(readlink -f /lib/x86_64-linux-gnu/libnsl.so.1)" ./appdir/usr/lib/libnsl.so.1
|
||||
export PATH=/rpcs3/build/squashfs-root/usr/bin/:${PATH}
|
||||
export PATH=/rpcs3/build/squashfs-root/usr/bin/:"${PATH}"
|
||||
|
||||
# Embed newer libstdc++ for distros that don't come with it (ubuntu 16.04)
|
||||
mkdir -p appdir/usr/optional/ ; mkdir -p appdir/usr/optional/libstdc++/
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ echo "AVVER=$AVVER" >> ../.ci/ci-vars.env
|
||||
|
||||
cd bin
|
||||
mkdir "rpcs3.app/Contents/lib/"
|
||||
cp "/usr/local/opt/llvm/lib/libc++abi.1.0.dylib" "rpcs3.app/Contents/lib/libc++abi.1.dylib"
|
||||
cp "/usr/local/opt/llvm@13/lib/libc++abi.1.0.dylib" "rpcs3.app/Contents/lib/libc++abi.1.dylib"
|
||||
rm -rf "rpcs3.app/Contents/Frameworks/QtPdf.framework" \
|
||||
"rpcs3.app/Contents/Frameworks/QtQml.framework" \
|
||||
"rpcs3.app/Contents/Frameworks/QtQmlModels.framework" \
|
||||
|
||||
+2
-2
@@ -61,7 +61,7 @@ windows_task:
|
||||
|
||||
linux_task:
|
||||
container:
|
||||
image: rpcs3/rpcs3-ci-bionic:1.3
|
||||
image: rpcs3/rpcs3-ci-bionic:1.5
|
||||
cpu: 4
|
||||
memory: 16G
|
||||
env:
|
||||
@@ -108,7 +108,7 @@ freebsd_task:
|
||||
matrix:
|
||||
- name: Cirrus FreeBSD
|
||||
freebsd_instance:
|
||||
image_family: freebsd-13-0
|
||||
image_family: freebsd-13-1
|
||||
cpu: 8
|
||||
memory: 8G
|
||||
env:
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
---
|
||||
name: Regression report
|
||||
about: If something used to work before, but now it doesn't
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
|
||||
## Quick summary
|
||||
Please briefly describe what has stopped working correctly.
|
||||
|
||||
## Details
|
||||
Please describe the regression as accurately as possible.
|
||||
|
||||
#### 0. Make sure you're running with settings as close to default as possible
|
||||
* **Do NOT enable any emulator game patches when reporting issues**
|
||||
* Only change settings that are required for the game to work
|
||||
|
||||
#### 1. Please provide _exact_ build (or commit) information that introduced the regression you're reporting.
|
||||
* Please see [How to find the build that caused a regression](https://wiki.rpcs3.net/index.php?title=Help:Using_different_versions_of_RPCS3#How_to_find_the_build_that_caused_a_regression.3F) in our wiki.
|
||||
* You can find [History of RPCS3 builds](https://rpcs3.net/compatibility?b) here.
|
||||
|
||||
#### 2. Please attach TWO logs:
|
||||
* One for the build with regression.
|
||||
* One for the build that works as expected.
|
||||
|
||||
##### How to obtain RPCS3's log:
|
||||
* Run the game until you find the regression.
|
||||
* Completely close RPCS3, or move to the next step in case it has crashed.
|
||||
* Locate RPCS3's log file:
|
||||
+ ```RPCS3.log``` (It can show up as just RPCS3 and have a notepad icon)
|
||||
or
|
||||
+ ```RPCS3.log.gz``` (It can show up as RPCS3.log and have a zip or rar icon)
|
||||

|
||||
On Linux it will be in ```~/.cache/rpcs3/```.
|
||||
On Windows it will be near the executable.
|
||||
* Attach the log:
|
||||
+ Drag and drop your log file into the issue.
|
||||
+ Or upload it to the cloud, such as Dropbox, Mega etc.
|
||||
|
||||
#### 3. If you describe graphical regression, please provide an RSX capture and a RenderDoc capture that demonstrate it.
|
||||
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
|
||||
Captures will be stored in RPCS3 folder → captures.
|
||||
+ Compress your capture with 7z, Rar etc.
|
||||
And drag and drop it into the issue.
|
||||
+ Or upload it to the cloud, such as Dropbox, Mega etc.
|
||||
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
|
||||
|
||||
#### 4. Please attach screenshots of your problem.
|
||||
* Enable performance overlay with at least medium level of detail.
|
||||
You can find it in _Emulator_ tab in _Settings_.
|
||||
|
||||
#### 5. Please provide comparison with real PS3.
|
||||
|
||||
#### 6. Please provide your system configuration:
|
||||
* OS
|
||||
* CPU
|
||||
* GPU
|
||||
* Driver version
|
||||
* etc.
|
||||
|
||||
#### Please include.
|
||||
* Anything else you deem to be important
|
||||
@@ -0,0 +1,93 @@
|
||||
name: Regression report
|
||||
description: If something used to work before, but now it doesn't
|
||||
title: "[Regression] Enter a title here"
|
||||
labels: []
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Summary
|
||||
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
- type: textarea
|
||||
id: quick-summary
|
||||
attributes:
|
||||
label: Quick summary
|
||||
description: Please briefly describe what has stopped working correctly.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: details
|
||||
attributes:
|
||||
label: Details
|
||||
description: Please describe the regression as accurately as possible. Include screenshots if neccessary.
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Identify the regressed build
|
||||
Please provide the _exact_ build (or commit) information that introduced the regression you're reporting.
|
||||
* Please see [How to find the build that caused a regression](https://wiki.rpcs3.net/index.php?title=Help:Using_different_versions_of_RPCS3#How_to_find_the_build_that_caused_a_regression.3F) in our wiki.
|
||||
* You can find [History of RPCS3 builds](https://rpcs3.net/compatibility?b) here.
|
||||
|
||||
Make sure you're running with settings as close to default as possible
|
||||
* **Do NOT enable any emulator game patches when reporting issues**
|
||||
* Only change settings that are required for the game to work
|
||||
- type: input
|
||||
id: regressed-build
|
||||
attributes:
|
||||
label: Build with regression
|
||||
description: Provide _exact_ build (or commit) information that introduced the regression you're reporting.
|
||||
placeholder: v0.0.23-13948-31df99f7
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Log files
|
||||
Obtaining the log file:
|
||||
* Run the game until you find the regression.
|
||||
* Completely close RPCS3 and locate the log file.
|
||||
|
||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||
* On Windows it will be in the RPCS3 directory near the executable
|
||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Attach two log files
|
||||
description: |
|
||||
Attach one file for the build with regression and another for a build that works.
|
||||
Drag & drop the files into this input field, or upload them to another service (f.ex. Dropbox, Mega) and provide a link.
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Other details
|
||||
If you describe a graphical regression, please provide an RSX capture and/or a RenderDoc capture that demonstrate it.
|
||||
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
|
||||
* Captures will be stored in RPCS3 folder → captures.
|
||||
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
|
||||
- type: textarea
|
||||
id: captures
|
||||
attributes:
|
||||
label: Attach capture files for visual issues
|
||||
description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: system-info
|
||||
attributes:
|
||||
label: System configuration
|
||||
description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: other-details
|
||||
attributes:
|
||||
label: Other details
|
||||
description: Include anything else you deem to be important.
|
||||
validations:
|
||||
required: false
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: If something doesn't work correctly in RPCS3
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
|
||||
## Quick summary
|
||||
Please briefly describe what is not working correctly.
|
||||
|
||||
## Details
|
||||
|
||||
Please describe the problem as accurately as possible.
|
||||
|
||||
#### 0. Make sure you're running with settings as close to default as possible
|
||||
* **Do NOT enable any emulator game patches when reporting issues**
|
||||
* Only change settings that are required for the game to work
|
||||
|
||||
#### 1. Please attach RPCS3's log.
|
||||
* Run the game until you find the issue.
|
||||
* Completely close RPCS3, or move to the next step in case it has crashed.
|
||||
* Locate RPCS3's log file:
|
||||
+ ```RPCS3.log``` (It can show up as just RPCS3 and have a notepad icon)
|
||||
or
|
||||
+ ```RPCS3.log.gz``` (It can show up as RPCS3.log and have a zip or rar icon)
|
||||

|
||||
On Linux it will be in ```~/.cache/rpcs3/```.
|
||||
On Windows it will be near the executable.
|
||||
* Attach the log:
|
||||
+ Drag and drop your log file into the issue.
|
||||
+ Or upload it to the cloud, such as Dropbox, Mega etc.
|
||||
|
||||
#### 2. If you describe graphical issue, please provide an RSX capture and a RenderDoc capture that demonstrate it.
|
||||
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
|
||||
Captures will be stored in RPCS3 folder → captures.
|
||||
+ Compress your capture with 7z, Rar etc.
|
||||
And drag and drop it into the issue.
|
||||
+ Or upload it to the cloud, such as Dropbox, Mega etc.
|
||||
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
|
||||
|
||||
#### 3. Please attach screenshots of your problem.
|
||||
* Enable performance overlay with at least medium level of detail.
|
||||
You can find it in _Emulator_ tab in _Settings_.
|
||||
|
||||
#### 4. Please provide comparison with real PS3.
|
||||
|
||||
#### 5. Please provide your system configuration:
|
||||
* OS
|
||||
* CPU
|
||||
* GPU
|
||||
* Driver version
|
||||
* etc.
|
||||
|
||||
#### Please include.
|
||||
* Anything else you deem to be important
|
||||
@@ -0,0 +1,78 @@
|
||||
name: Bug report
|
||||
description: If something doesn't work correctly in RPCS3
|
||||
title: "Enter a title here"
|
||||
labels: []
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Summary
|
||||
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
- type: textarea
|
||||
id: quick-summary
|
||||
attributes:
|
||||
label: Quick summary
|
||||
description: Please briefly describe what is not working correctly.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: details
|
||||
attributes:
|
||||
label: Details
|
||||
description: |
|
||||
Please describe the problem as accurately as possible.
|
||||
Provide a comparison with a real PS3, if possible.
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Log files
|
||||
|
||||
Provide a log file that includes the bug you're reporting.
|
||||
|
||||
Obtaining the log file:
|
||||
* Run the game until you find the regression.
|
||||
* Completely close RPCS3 and locate the log file.
|
||||
|
||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||
* On Windows it will be in the RPCS3 directory near the executable
|
||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
||||
- type: textarea
|
||||
id: logs
|
||||
attributes:
|
||||
label: Attach a log file
|
||||
description: |
|
||||
Drag & drop the files into this input field, or upload them to another service (f.ex. Dropbox, Mega) and provide a link.
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
# Other details
|
||||
If you describe a graphical issue, please provide an RSX capture and/or a RenderDoc capture that demonstrate it.
|
||||
* To create an RSX capture, use _Create_ _RSX_ _Capture_ under _Utilities_.
|
||||
* Captures will be stored in RPCS3 folder → captures.
|
||||
* To create a RenderDoc capture, please refer to [RenderDoc's documentation](https://renderdoc.org/docs/how/how_capture_frame.html).
|
||||
- type: textarea
|
||||
id: captures
|
||||
attributes:
|
||||
label: Attach capture files for visual issues
|
||||
description: Compress your capture with 7z, Rar etc. and attach it here, or upload it to the cloud (Dropbox, Mega etc) and add a link to it.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: system-info
|
||||
attributes:
|
||||
label: System configuration
|
||||
description: Provide information about your system, such as operating system, CPU and GPU model, GPU driver version and other information that describes your system configuration.
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
id: other-details
|
||||
attributes:
|
||||
label: Other details
|
||||
description: Include anything else you deem to be important.
|
||||
validations:
|
||||
required: false
|
||||
@@ -1,41 +0,0 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: If RPCS3 lacks a feature you would like to see
|
||||
title: '[Feature Request] Enter Feature Title Here'
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
|
||||
## Quick summary
|
||||
Please briefly describe what feature you would like RPCS3 to have.
|
||||
|
||||
## Details
|
||||
|
||||
Please describe the feature as accurately as possible.
|
||||
|
||||
#### 1. Please describe, what part of RPCS3 would be affected by your feature:
|
||||
* Gameplay
|
||||
* Debugging
|
||||
* UI
|
||||
* Patches
|
||||
* Installation
|
||||
* Github
|
||||
* CI
|
||||
* etc.
|
||||
|
||||
#### 2. Please tell us, why your feature is important to RPCS3.
|
||||
|
||||
#### 3. Please attach screenshots of the feature implemented in other projects.
|
||||
|
||||
#### 4. Please provide your system configuration:
|
||||
* OS
|
||||
* CPU
|
||||
* GPU
|
||||
* Driver version
|
||||
* etc.
|
||||
|
||||
#### Please include.
|
||||
* Anything else you deem to be important
|
||||
@@ -0,0 +1,36 @@
|
||||
name: Feature request
|
||||
description: If RPCS3 lacks a feature you would like to see
|
||||
title: "[Feature request] Enter a title here"
|
||||
labels: []
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
- type: textarea
|
||||
id: quick-summary
|
||||
attributes:
|
||||
label: Quick summary
|
||||
description: Please briefly describe what feature you would like RPCS3 to have.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: details
|
||||
attributes:
|
||||
label: Details
|
||||
description: Please describe the feature as accurately as possible.
|
||||
validations:
|
||||
required: false
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please include the following information:
|
||||
* What part of RPCS3 would be affected by your feature? (Gameplay, Debugging, UI, Patches, Installation, CI etc.)
|
||||
* Why your feature is important to RPCS3.
|
||||
* If the feature is implemented in other projects, attach screenshots.
|
||||
* If this feature is something that a game is trying to use, upload a log file for it.
|
||||
|
||||
RPCS3's Log file will be ```RPCS3.log.gz``` (sometimes shows as RPCS3.log with zip icon) or ```RPCS3.log``` (sometimes shows as RPCS3 wtih notepad icon).
|
||||
* On Windows it will be in the RPCS3 directory near the executable
|
||||
* On Linux it will be in ```~/.cache/rpcs3/```
|
||||
* On MacOS it will be in ```~/Library/Caches/rpcs3```. If you're unable to locate it copy paste the path in Spotlight and hit enter.
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
name: Advanced
|
||||
about: For developers and experienced users only
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Please do not ask for help or report compatibility regressions here, use [RPCS3 Discord server](https://discord.me/RPCS3) or [forums](https://forums.rpcs3.net/) instead.
|
||||
|
||||
You're using the advanced template. You're expected to know what to write in order to fill in all the required information for proper report.
|
||||
|
||||
If you're unsure on what to do, please return back to the issue type selection and choose different category.
|
||||
@@ -45,6 +45,9 @@
|
||||
!/bin/soft_oal.dll
|
||||
!/bin/xaudio2_9redist.dll
|
||||
|
||||
# Test Programs
|
||||
!/bin/test/
|
||||
|
||||
# Themes
|
||||
!/bin/GuiConfigs/
|
||||
/bin/GuiConfigs/*.ini
|
||||
|
||||
Vendored
+9
-5
@@ -1,5 +1,5 @@
|
||||
/* 7zTypes.h -- Basic types
|
||||
2021-12-25 : Igor Pavlov : Public domain */
|
||||
2022-04-01 : Igor Pavlov : Public domain */
|
||||
|
||||
#ifndef __7Z_TYPES_H
|
||||
#define __7Z_TYPES_H
|
||||
@@ -133,10 +133,6 @@ typedef int WRes;
|
||||
#define MY__E_ERROR_NEGATIVE_SEEK MY_HRESULT_FROM_errno_CONST_ERROR(EINVAL)
|
||||
*/
|
||||
|
||||
// gcc / clang : (sizeof(long) == sizeof(void*)) in 32/64 bits
|
||||
typedef long INT_PTR;
|
||||
typedef unsigned long UINT_PTR;
|
||||
|
||||
#define TEXT(quote) quote
|
||||
|
||||
#define FILE_ATTRIBUTE_READONLY 0x0001
|
||||
@@ -520,6 +516,14 @@ struct ISzAlloc
|
||||
|
||||
#endif
|
||||
|
||||
#define k_PropVar_TimePrec_0 0
|
||||
#define k_PropVar_TimePrec_Unix 1
|
||||
#define k_PropVar_TimePrec_DOS 2
|
||||
#define k_PropVar_TimePrec_HighPrec 3
|
||||
#define k_PropVar_TimePrec_Base 16
|
||||
#define k_PropVar_TimePrec_100ns (k_PropVar_TimePrec_Base + 7)
|
||||
#define k_PropVar_TimePrec_1ns (k_PropVar_TimePrec_Base + 9)
|
||||
|
||||
EXTERN_C_END
|
||||
|
||||
#endif
|
||||
|
||||
Vendored
+5
-5
@@ -1,7 +1,7 @@
|
||||
#define MY_VER_MAJOR 21
|
||||
#define MY_VER_MINOR 07
|
||||
#define MY_VER_MAJOR 22
|
||||
#define MY_VER_MINOR 01
|
||||
#define MY_VER_BUILD 0
|
||||
#define MY_VERSION_NUMBERS "21.07"
|
||||
#define MY_VERSION_NUMBERS "22.01"
|
||||
#define MY_VERSION MY_VERSION_NUMBERS
|
||||
|
||||
#ifdef MY_CPU_NAME
|
||||
@@ -10,12 +10,12 @@
|
||||
#define MY_VERSION_CPU MY_VERSION
|
||||
#endif
|
||||
|
||||
#define MY_DATE "2021-12-26"
|
||||
#define MY_DATE "2022-07-15"
|
||||
#undef MY_COPYRIGHT
|
||||
#undef MY_VERSION_COPYRIGHT_DATE
|
||||
#define MY_AUTHOR_NAME "Igor Pavlov"
|
||||
#define MY_COPYRIGHT_PD "Igor Pavlov : Public domain"
|
||||
#define MY_COPYRIGHT_CR "Copyright (c) 1999-2021 Igor Pavlov"
|
||||
#define MY_COPYRIGHT_CR "Copyright (c) 1999-2022 Igor Pavlov"
|
||||
|
||||
#ifdef USE_COPYRIGHT_CR
|
||||
#define MY_COPYRIGHT MY_COPYRIGHT_CR
|
||||
|
||||
Vendored
+10
-7
@@ -1,5 +1,5 @@
|
||||
/* CpuArch.h -- CPU specific code
|
||||
2021-07-13 : Igor Pavlov : Public domain */
|
||||
2022-07-15 : Igor Pavlov : Public domain */
|
||||
|
||||
#ifndef __CPU_ARCH_H
|
||||
#define __CPU_ARCH_H
|
||||
@@ -123,12 +123,15 @@ MY_CPU_64BIT means that processor can work with 64-bit registers.
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__sparc64__)
|
||||
#define MY_CPU_NAME "sparc64"
|
||||
#define MY_CPU_64BIT
|
||||
#elif defined(__sparc__)
|
||||
#define MY_CPU_NAME "sparc"
|
||||
/* #define MY_CPU_32BIT */
|
||||
#if defined(__riscv) \
|
||||
|| defined(__riscv__)
|
||||
#if __riscv_xlen == 32
|
||||
#define MY_CPU_NAME "riscv32"
|
||||
#elif __riscv_xlen == 64
|
||||
#define MY_CPU_NAME "riscv64"
|
||||
#else
|
||||
#define MY_CPU_NAME "riscv"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
Vendored
+6
-2
@@ -1,5 +1,5 @@
|
||||
/* DllSecur.c -- DLL loading security
|
||||
2021-12-25 : Igor Pavlov : Public domain */
|
||||
2022-07-15 : Igor Pavlov : Public domain */
|
||||
|
||||
#include "Precomp.h"
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
|
||||
#ifndef UNDER_CE
|
||||
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 8)
|
||||
#pragma GCC diagnostic ignored "-Wcast-function-type"
|
||||
#endif
|
||||
|
||||
typedef BOOL (WINAPI *Func_SetDefaultDllDirectories)(DWORD DirectoryFlags);
|
||||
|
||||
#define MY_LOAD_LIBRARY_SEARCH_USER_DIRS 0x400
|
||||
@@ -34,7 +38,7 @@ static const char * const g_Dlls =
|
||||
#endif
|
||||
|
||||
// #define MY_CAST_FUNC (void(*)())
|
||||
#define MY_CAST_FUNC
|
||||
#define MY_CAST_FUNC
|
||||
|
||||
void My_SetDefaultDllDirectories()
|
||||
{
|
||||
|
||||
Vendored
+4
-7
@@ -1,5 +1,5 @@
|
||||
/* LzmaEnc.c -- LZMA Encoder
|
||||
2021-11-18: Igor Pavlov : Public domain */
|
||||
2022-07-15: Igor Pavlov : Public domain */
|
||||
|
||||
#include "Precomp.h"
|
||||
|
||||
@@ -2970,6 +2970,7 @@ const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp)
|
||||
}
|
||||
|
||||
|
||||
// (desiredPackSize == 0) is not allowed
|
||||
SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit,
|
||||
Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize)
|
||||
{
|
||||
@@ -2990,14 +2991,10 @@ SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, BoolInt reInit,
|
||||
if (reInit)
|
||||
LzmaEnc_Init(p);
|
||||
LzmaEnc_InitPrices(p);
|
||||
|
||||
nowPos64 = p->nowPos64;
|
||||
RangeEnc_Init(&p->rc);
|
||||
p->rc.outStream = &outStream.vt;
|
||||
|
||||
if (desiredPackSize == 0)
|
||||
return SZ_ERROR_OUTPUT_EOF;
|
||||
|
||||
nowPos64 = p->nowPos64;
|
||||
|
||||
res = LzmaEnc_CodeOneBlock(p, desiredPackSize, *unpackSize);
|
||||
|
||||
*unpackSize = (UInt32)(p->nowPos64 - nowPos64);
|
||||
|
||||
Vendored
+5
@@ -18,6 +18,11 @@ add_library(3rdparty_flatbuffers INTERFACE)
|
||||
if (USE_SYSTEM_FLATBUFFERS)
|
||||
pkg_check_modules(FLATBUFFERS REQUIRED IMPORTED_TARGET flatbuffers>=2.0.0)
|
||||
target_link_libraries(3rdparty_flatbuffers INTERFACE PkgConfig::FLATBUFFERS)
|
||||
set(FBS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../rpcs3/Emu/NP/generated/")
|
||||
execute_process(COMMAND flatc --cpp -o "${FBS_DIR}" "${FBS_DIR}/np2_structs.fbs" RESULT_VARIABLE FBS_CMD_ERROR)
|
||||
if(FBS_CMD_ERROR AND NOT FBS_CMD_ERROR EQUAL 0)
|
||||
message(FATAL_ERROR "flatc failed to regenerate flatbuffers headers.")
|
||||
endif()
|
||||
else()
|
||||
target_include_directories(3rdparty_flatbuffers INTERFACE flatbuffers/include)
|
||||
endif()
|
||||
|
||||
Vendored
+1
-1
Submodule 3rdparty/FAudio updated: 0b6d5dabbf...e787ed7655
+24
-3
@@ -153,6 +153,20 @@ typedef int64_t khronos_int64_t;
|
||||
typedef uint64_t khronos_uint64_t;
|
||||
#define KHRONOS_SUPPORT_INT64 1
|
||||
#define KHRONOS_SUPPORT_FLOAT 1
|
||||
/*
|
||||
* To support platform where unsigned long cannot be used interchangeably with
|
||||
* inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
|
||||
* Ideally, we could just use (u)intptr_t everywhere, but this could result in
|
||||
* ABI breakage if khronos_uintptr_t is changed from unsigned long to
|
||||
* unsigned long long or similar (this results in different C++ name mangling).
|
||||
* To avoid changes for existing platforms, we restrict usage of intptr_t to
|
||||
* platforms where the size of a pointer is larger than the size of long.
|
||||
*/
|
||||
#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
|
||||
#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
|
||||
#define KHRONOS_USE_INTPTR_T
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#elif defined(__VMS ) || defined(__sgi)
|
||||
|
||||
@@ -235,14 +249,21 @@ typedef unsigned short int khronos_uint16_t;
|
||||
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
|
||||
* to be the only LLP64 architecture in current use.
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
#ifdef KHRONOS_USE_INTPTR_T
|
||||
typedef intptr_t khronos_intptr_t;
|
||||
typedef uintptr_t khronos_uintptr_t;
|
||||
#elif defined(_WIN64)
|
||||
typedef signed long long int khronos_intptr_t;
|
||||
typedef unsigned long long int khronos_uintptr_t;
|
||||
typedef signed long long int khronos_ssize_t;
|
||||
typedef unsigned long long int khronos_usize_t;
|
||||
#else
|
||||
typedef signed long int khronos_intptr_t;
|
||||
typedef unsigned long int khronos_uintptr_t;
|
||||
#endif
|
||||
|
||||
#if defined(_WIN64)
|
||||
typedef signed long long int khronos_ssize_t;
|
||||
typedef unsigned long long int khronos_usize_t;
|
||||
#else
|
||||
typedef signed long int khronos_ssize_t;
|
||||
typedef unsigned long int khronos_usize_t;
|
||||
#endif
|
||||
Vendored
+36
-2
@@ -32,9 +32,9 @@ extern "C" {
|
||||
#define GLAPI extern
|
||||
#endif
|
||||
|
||||
#define GL_GLEXT_VERSION 20210420
|
||||
#define GL_GLEXT_VERSION 20220530
|
||||
|
||||
#include "khrplatform.h"
|
||||
#include <KHR/khrplatform.h>
|
||||
|
||||
/* Generated C header for:
|
||||
* API: gl
|
||||
@@ -8214,6 +8214,10 @@ GLAPI void APIENTRY glMemoryBarrierEXT (GLbitfield barriers);
|
||||
#define GL_EXT_shader_integer_mix 1
|
||||
#endif /* GL_EXT_shader_integer_mix */
|
||||
|
||||
#ifndef GL_EXT_shader_samples_identical
|
||||
#define GL_EXT_shader_samples_identical 1
|
||||
#endif /* GL_EXT_shader_samples_identical */
|
||||
|
||||
#ifndef GL_EXT_shadow_funcs
|
||||
#define GL_EXT_shadow_funcs 1
|
||||
#endif /* GL_EXT_shadow_funcs */
|
||||
@@ -8625,6 +8629,36 @@ GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
|
||||
#define GL_RGBA_SNORM 0x8F93
|
||||
#endif /* GL_EXT_texture_snorm */
|
||||
|
||||
#ifndef GL_EXT_texture_storage
|
||||
#define GL_EXT_texture_storage 1
|
||||
#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F
|
||||
#define GL_RGBA32F_EXT 0x8814
|
||||
#define GL_RGB32F_EXT 0x8815
|
||||
#define GL_ALPHA32F_EXT 0x8816
|
||||
#define GL_LUMINANCE32F_EXT 0x8818
|
||||
#define GL_LUMINANCE_ALPHA32F_EXT 0x8819
|
||||
#define GL_RGBA16F_EXT 0x881A
|
||||
#define GL_RGB16F_EXT 0x881B
|
||||
#define GL_ALPHA16F_EXT 0x881C
|
||||
#define GL_LUMINANCE16F_EXT 0x881E
|
||||
#define GL_LUMINANCE_ALPHA16F_EXT 0x881F
|
||||
#define GL_BGRA8_EXT 0x93A1
|
||||
#define GL_R8_EXT 0x8229
|
||||
#define GL_RG8_EXT 0x822B
|
||||
#define GL_R32F_EXT 0x822E
|
||||
#define GL_RG32F_EXT 0x8230
|
||||
#define GL_R16F_EXT 0x822D
|
||||
#define GL_RG16F_EXT 0x822F
|
||||
typedef void (APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
|
||||
typedef void (APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
typedef void (APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
|
||||
#ifdef GL_GLEXT_PROTOTYPES
|
||||
GLAPI void APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
|
||||
GLAPI void APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
GLAPI void APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
|
||||
#endif
|
||||
#endif /* GL_EXT_texture_storage */
|
||||
|
||||
#ifndef GL_EXT_texture_swizzle
|
||||
#define GL_EXT_texture_swizzle 1
|
||||
#define GL_TEXTURE_SWIZZLE_R_EXT 0x8E42
|
||||
|
||||
Vendored
+18
-18
@@ -747,12 +747,12 @@ AF1 sharpness){
|
||||
// Immediate constants for peak range.
|
||||
AF2 peakC=AF2(1.0,-1.0*4.0);
|
||||
// Limiters, these need to be high precision RCPs.
|
||||
AF1 hitMinR=mn4R*ARcpF1(AF1_(4.0)*mx4R);
|
||||
AF1 hitMinG=mn4G*ARcpF1(AF1_(4.0)*mx4G);
|
||||
AF1 hitMinB=mn4B*ARcpF1(AF1_(4.0)*mx4B);
|
||||
AF1 hitMaxR=(peakC.x-mx4R)*ARcpF1(AF1_(4.0)*mn4R+peakC.y);
|
||||
AF1 hitMaxG=(peakC.x-mx4G)*ARcpF1(AF1_(4.0)*mn4G+peakC.y);
|
||||
AF1 hitMaxB=(peakC.x-mx4B)*ARcpF1(AF1_(4.0)*mn4B+peakC.y);
|
||||
AF1 hitMinR=min(mn4R,eR)*ARcpF1(AF1_(4.0)*mx4R);
|
||||
AF1 hitMinG=min(mn4G,eG)*ARcpF1(AF1_(4.0)*mx4G);
|
||||
AF1 hitMinB=min(mn4B,eB)*ARcpF1(AF1_(4.0)*mx4B);
|
||||
AF1 hitMaxR=(peakC.x-max(mx4R,eR))*ARcpF1(AF1_(4.0)*mn4R+peakC.y);
|
||||
AF1 hitMaxG=(peakC.x-max(mx4G,eG))*ARcpF1(AF1_(4.0)*mn4G+peakC.y);
|
||||
AF1 hitMaxB=(peakC.x-max(mx4B,eB))*ARcpF1(AF1_(4.0)*mn4B+peakC.y);
|
||||
AF1 lobeR=max(-hitMinR,hitMaxR);
|
||||
AF1 lobeG=max(-hitMinG,hitMaxG);
|
||||
AF1 lobeB=max(-hitMinB,hitMaxB);
|
||||
@@ -845,12 +845,12 @@ AF1 sharpness){
|
||||
// Immediate constants for peak range.
|
||||
AH2 peakC=AH2(1.0,-1.0*4.0);
|
||||
// Limiters, these need to be high precision RCPs.
|
||||
AH1 hitMinR=mn4R*ARcpH1(AH1_(4.0)*mx4R);
|
||||
AH1 hitMinG=mn4G*ARcpH1(AH1_(4.0)*mx4G);
|
||||
AH1 hitMinB=mn4B*ARcpH1(AH1_(4.0)*mx4B);
|
||||
AH1 hitMaxR=(peakC.x-mx4R)*ARcpH1(AH1_(4.0)*mn4R+peakC.y);
|
||||
AH1 hitMaxG=(peakC.x-mx4G)*ARcpH1(AH1_(4.0)*mn4G+peakC.y);
|
||||
AH1 hitMaxB=(peakC.x-mx4B)*ARcpH1(AH1_(4.0)*mn4B+peakC.y);
|
||||
AH1 hitMinR=min(mn4R,eR)*ARcpH1(AH1_(4.0)*mx4R);
|
||||
AH1 hitMinG=min(mn4G,eG)*ARcpH1(AH1_(4.0)*mx4G);
|
||||
AH1 hitMinB=min(mn4B,eB)*ARcpH1(AH1_(4.0)*mx4B);
|
||||
AH1 hitMaxR=(peakC.x-max(mx4R,eR))*ARcpH1(AH1_(4.0)*mn4R+peakC.y);
|
||||
AH1 hitMaxG=(peakC.x-max(mx4G,eG))*ARcpH1(AH1_(4.0)*mn4G+peakC.y);
|
||||
AH1 hitMaxB=(peakC.x-max(mx4B,eB))*ARcpH1(AH1_(4.0)*mn4B+peakC.y);
|
||||
AH1 lobeR=max(-hitMinR,hitMaxR);
|
||||
AH1 lobeG=max(-hitMinG,hitMaxG);
|
||||
AH1 lobeB=max(-hitMinB,hitMaxB);
|
||||
@@ -963,12 +963,12 @@ AF1 sharpness){
|
||||
// Immediate constants for peak range.
|
||||
AH2 peakC=AH2(1.0,-1.0*4.0);
|
||||
// Limiters, these need to be high precision RCPs.
|
||||
AH2 hitMinR=mn4R*ARcpH2(AH2_(4.0)*mx4R);
|
||||
AH2 hitMinG=mn4G*ARcpH2(AH2_(4.0)*mx4G);
|
||||
AH2 hitMinB=mn4B*ARcpH2(AH2_(4.0)*mx4B);
|
||||
AH2 hitMaxR=(peakC.x-mx4R)*ARcpH2(AH2_(4.0)*mn4R+peakC.y);
|
||||
AH2 hitMaxG=(peakC.x-mx4G)*ARcpH2(AH2_(4.0)*mn4G+peakC.y);
|
||||
AH2 hitMaxB=(peakC.x-mx4B)*ARcpH2(AH2_(4.0)*mn4B+peakC.y);
|
||||
AH2 hitMinR=min(mn4R,eR)*ARcpH2(AH2_(4.0)*mx4R);
|
||||
AH2 hitMinG=min(mn4G,eG)*ARcpH2(AH2_(4.0)*mx4G);
|
||||
AH2 hitMinB=min(mn4B,eB)*ARcpH2(AH2_(4.0)*mx4B);
|
||||
AH2 hitMaxR=(peakC.x-max(mx4R,eR))*ARcpH2(AH2_(4.0)*mn4R+peakC.y);
|
||||
AH2 hitMaxG=(peakC.x-max(mx4G,eG))*ARcpH2(AH2_(4.0)*mn4G+peakC.y);
|
||||
AH2 hitMaxB=(peakC.x-max(mx4B,eB))*ARcpH2(AH2_(4.0)*mn4B+peakC.y);
|
||||
AH2 lobeR=max(-hitMinR,hitMaxR);
|
||||
AH2 lobeG=max(-hitMinG,hitMaxG);
|
||||
AH2 lobeB=max(-hitMinB,hitMaxB);
|
||||
|
||||
Vendored
+2
-3
@@ -4,12 +4,11 @@ include(ExternalProject)
|
||||
|
||||
ExternalProject_Add(moltenvk
|
||||
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
|
||||
GIT_TAG 1236d2f
|
||||
GIT_TAG 1112005
|
||||
BUILD_IN_SOURCE 1
|
||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
|
||||
PATCH_COMMAND git apply "${CMAKE_CURRENT_SOURCE_DIR}/patches.patch"
|
||||
CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos
|
||||
BUILD_COMMAND xcodebuild build -quiet -project "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKPackaging.xcodeproj" -scheme "MoltenVK Package \(macOS only\)" -configuration "Release" -arch "x86_64"
|
||||
BUILD_COMMAND xcodebuild build -quiet -project "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKPackaging.xcodeproj" -scheme "MoltenVK Package \(macOS only\)" -configuration "Release" -arch "${CMAKE_HOST_SYSTEM_PROCESSOR}"
|
||||
COMMAND ln -f "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/dylib/macOS/libMoltenVK.dylib" "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib"
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib"
|
||||
|
||||
Vendored
-7
@@ -1,7 +0,0 @@
|
||||
diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision
|
||||
index 777346a0..c1971b45 100644
|
||||
--- a/ExternalRevisions/SPIRV-Cross_repo_revision
|
||||
+++ b/ExternalRevisions/SPIRV-Cross_repo_revision
|
||||
@@ -1 +1 @@
|
||||
-0d4ce028bf8b8a94d325dc1e1c20446153ba19c4
|
||||
+44c3333a1c315ead00c24f7aef5fa8a7ccf49299
|
||||
Vendored
+1
-1
Submodule 3rdparty/SPIRV/SPIRV-Headers updated: 3fdabd0da2...4995a2f272
Vendored
+1
-1
Submodule 3rdparty/SPIRV/SPIRV-Tools updated: 895927bd3f...7826e1941e
Vendored
+9
-9
@@ -39,28 +39,28 @@
|
||||
<PropertyGroup Label="UserMacros">
|
||||
<CmakeGenerator>"Visual Studio $(VisualStudioVersion.Substring(0,2))"</CmakeGenerator>
|
||||
<CmakeReleaseCLI>call vsdevcmd.bat -arch=amd64
|
||||
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Release" -DSPIRV_WERROR=OFF -DSPIRV-Headers_SOURCE_DIR=$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)/SPIRV-Headers')) SPIRV-Tools -B build</CmakeReleaseCLI>
|
||||
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Release" -DSPIRV_WERROR=OFF -DSPIRV-Headers_SOURCE_DIR="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)/SPIRV-Headers').Replace('\', '/'))" SPIRV-Tools -B build</CmakeReleaseCLI>
|
||||
<CmakeDebugCLI>call vsdevcmd.bat -arch=amd64
|
||||
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Debug" -DSPIRV_WERROR=OFF -DSPIRV-Headers_SOURCE_DIR=$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)/SPIRV-Headers')) -S SPIRV-Tools -B build</CmakeDebugCLI>
|
||||
cmake -G $(CmakeGenerator) -A x64 -DCMAKE_BUILD_TYPE="Debug" -DSPIRV_WERROR=OFF -DSPIRV-Headers_SOURCE_DIR="$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)/SPIRV-Headers').Replace('\', '/'))" -S SPIRV-Tools -B build</CmakeDebugCLI>
|
||||
<PropsAbsPath>$([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)..\..\buildfiles\msvc\common_default.props'))</PropsAbsPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<NMakeBuildCommandLine>$(CmakeReleaseCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Release /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m</NMakeBuildCommandLine>
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Release /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m</NMakeBuildCommandLine>
|
||||
<NMakeReBuildCommandLine>$(CmakeReleaseCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Release /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m</NMakeReBuildCommandLine>
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Release /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m</NMakeReBuildCommandLine>
|
||||
<NMakeCleanCommandLine>$(CmakeReleaseCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Release /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m</NMakeCleanCommandLine>
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Release /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m</NMakeCleanCommandLine>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<NMakeBuildCommandLine>$(CmakeDebugCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Debug /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Debug /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m
|
||||
</NMakeBuildCommandLine>
|
||||
<NMakeReBuildCommandLine>$(CmakeDebugCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Debug /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Debug /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m
|
||||
</NMakeReBuildCommandLine>
|
||||
<NMakeCleanCommandLine>$(CmakeDebugCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Debug /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Debug /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m
|
||||
</NMakeCleanCommandLine>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
@@ -68,4 +68,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
Vendored
+2
@@ -27,6 +27,8 @@ target_compile_definitions(soundtouch PUBLIC
|
||||
SOUNDTOUCH_FLOAT_SAMPLES;
|
||||
)
|
||||
|
||||
target_compile_options(soundtouch PRIVATE "-w")
|
||||
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86|X86|amd64|AMD64|em64t|EM64T)")
|
||||
target_compile_definitions(soundtouch PUBLIC
|
||||
SOUNDTOUCH_ALLOW_SSE
|
||||
|
||||
+1276
-1275
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
Vendored
+1
-1
Submodule 3rdparty/asmjit/asmjit updated: fc2a5d82f7...06d0badec5
Vendored
+5
-3
@@ -62,12 +62,13 @@
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64builder.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64compiler.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64emithelper.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64formatter.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64func.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64instapi.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64instdb.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64operand.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64rapass.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\armformatter.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\armfunc.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="asmjit\src\asmjit\core\api-build_p.h" />
|
||||
@@ -134,11 +135,14 @@
|
||||
<ClInclude Include="asmjit\src\asmjit\x86\x86opcode_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\x86\x86operand.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\x86\x86rapass_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64archtraits_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64assembler.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64builder.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64compiler.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64emithelper_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64emitter.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64formatter_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64func_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64globals.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64instapi_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64instdb.h" />
|
||||
@@ -146,9 +150,7 @@
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64operand.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64rapass_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64utils.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armarchtraits_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armformatter_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armfunc_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armglobals.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armoperand.h" />
|
||||
</ItemGroup>
|
||||
|
||||
+5
-3
@@ -52,12 +52,13 @@
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64builder.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64compiler.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64emithelper.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64formatter.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64func.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64instapi.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64instdb.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64operand.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\a64rapass.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\armformatter.cpp" />
|
||||
<ClCompile Include="asmjit\src\asmjit\arm\armfunc.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="asmjit\src\asmjit\core\api-build_p.h" />
|
||||
@@ -124,11 +125,14 @@
|
||||
<ClInclude Include="asmjit\src\asmjit\x86\x86opcode_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\x86\x86operand.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\x86\x86rapass_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64archtraits_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64assembler.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64builder.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64compiler.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64emithelper_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64emitter.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64formatter_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64func_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64globals.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64instapi_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64instdb.h" />
|
||||
@@ -136,9 +140,7 @@
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64operand.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64rapass_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\a64utils.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armarchtraits_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armformatter_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armfunc_p.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armglobals.h" />
|
||||
<ClInclude Include="asmjit\src\asmjit\arm\armoperand.h" />
|
||||
</ItemGroup>
|
||||
|
||||
Vendored
+2
-2
@@ -11,9 +11,9 @@ set(USE_SANITIZERS FALSE CACHE BOOL "Dont't use sanitizers")
|
||||
add_subdirectory(cubeb EXCLUDE_FROM_ALL)
|
||||
add_library(3rdparty::cubeb ALIAS cubeb)
|
||||
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|ARM)")
|
||||
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm|ARM|aarch64|AArch64|Aarch64)")
|
||||
target_compile_definitions(speex PUBLIC
|
||||
_USE_NEON
|
||||
#_USE_NEON
|
||||
)
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86|X86|amd64|AMD64|em64t|EM64T)")
|
||||
target_compile_definitions(speex PUBLIC
|
||||
|
||||
Vendored
+1
-1
Submodule 3rdparty/cubeb/cubeb updated: 708f52cccf...dc511c6b35
Vendored
+1
@@ -12,6 +12,7 @@ else()
|
||||
option(CURL_USE_WOLFSSL "enable wolfSSL for SSL/TLS" ON)
|
||||
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" ON)
|
||||
option(CURL_ZLIB "Set to ON to enable building curl with zlib support." OFF)
|
||||
option(USE_LIBIDN2 "Use libidn2 for IDN support" OFF) # Disabled because MacOs CI doesn't work otherwise
|
||||
set(CURL_CA_PATH "none" CACHE STRING "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.")
|
||||
if(USE_MSVC_STATIC_CRT)
|
||||
set(CURL_STATIC_CRT ON CACHE BOOL "Use static crt to build curl" FORCE)
|
||||
|
||||
Vendored
+1
-1
Submodule 3rdparty/curl/curl updated: 64db5c575d...45ac4d0194
Vendored
+7
-4
@@ -98,6 +98,7 @@
|
||||
<ClCompile Include="curl\lib\escape.c" />
|
||||
<ClCompile Include="curl\lib\file.c" />
|
||||
<ClCompile Include="curl\lib\fileinfo.c" />
|
||||
<ClCompile Include="curl\lib\fopen.c" />
|
||||
<ClCompile Include="curl\lib\formdata.c" />
|
||||
<ClCompile Include="curl\lib\ftp.c" />
|
||||
<ClCompile Include="curl\lib\ftplistparser.c" />
|
||||
@@ -106,6 +107,7 @@
|
||||
<ClCompile Include="curl\lib\gopher.c" />
|
||||
<ClCompile Include="curl\lib\h2h3.c" />
|
||||
<ClCompile Include="curl\lib\hash.c" />
|
||||
<ClCompile Include="curl\lib\headers.c" />
|
||||
<ClCompile Include="curl\lib\hmac.c" />
|
||||
<ClCompile Include="curl\lib\hostasyn.c" />
|
||||
<ClCompile Include="curl\lib\hostip.c" />
|
||||
@@ -169,6 +171,7 @@
|
||||
<ClCompile Include="curl\lib\system_win32.c" />
|
||||
<ClCompile Include="curl\lib\telnet.c" />
|
||||
<ClCompile Include="curl\lib\tftp.c" />
|
||||
<ClCompile Include="curl\lib\timediff.c" />
|
||||
<ClCompile Include="curl\lib\timeval.c" />
|
||||
<ClCompile Include="curl\lib\transfer.c" />
|
||||
<ClCompile Include="curl\lib\url.c" />
|
||||
@@ -235,9 +238,6 @@
|
||||
<ClInclude Include="curl\lib\config-os400.h" />
|
||||
<ClInclude Include="curl\lib\config-plan9.h" />
|
||||
<ClInclude Include="curl\lib\config-riscos.h" />
|
||||
<ClInclude Include="curl\lib\config-symbian.h" />
|
||||
<ClInclude Include="curl\lib\config-tpf.h" />
|
||||
<ClInclude Include="curl\lib\config-vxworks.h" />
|
||||
<ClInclude Include="curl\lib\config-win32.h" />
|
||||
<ClInclude Include="curl\lib\config-win32ce.h" />
|
||||
<ClInclude Include="curl\lib\conncache.h" />
|
||||
@@ -269,7 +269,6 @@
|
||||
<ClInclude Include="curl\lib\curl_range.h" />
|
||||
<ClInclude Include="curl\lib\curl_rtmp.h" />
|
||||
<ClInclude Include="curl\lib\curl_sasl.h" />
|
||||
<ClInclude Include="curl\lib\curl_sec.h" />
|
||||
<ClInclude Include="curl\lib\curl_setup.h" />
|
||||
<ClInclude Include="curl\lib\curl_setup_once.h" />
|
||||
<ClInclude Include="curl\lib\curl_sha256.h" />
|
||||
@@ -281,9 +280,11 @@
|
||||
<ClInclude Include="curl\lib\dynbuf.h" />
|
||||
<ClInclude Include="curl\lib\easyif.h" />
|
||||
<ClInclude Include="curl\lib\easyoptions.h" />
|
||||
<ClInclude Include="curl\lib\easy_lock.h" />
|
||||
<ClInclude Include="curl\lib\escape.h" />
|
||||
<ClInclude Include="curl\lib\file.h" />
|
||||
<ClInclude Include="curl\lib\fileinfo.h" />
|
||||
<ClInclude Include="curl\lib\fopen.h" />
|
||||
<ClInclude Include="curl\lib\formdata.h" />
|
||||
<ClInclude Include="curl\lib\ftp.h" />
|
||||
<ClInclude Include="curl\lib\ftplistparser.h" />
|
||||
@@ -291,6 +292,7 @@
|
||||
<ClInclude Include="curl\lib\gopher.h" />
|
||||
<ClInclude Include="curl\lib\h2h3.h" />
|
||||
<ClInclude Include="curl\lib\hash.h" />
|
||||
<ClInclude Include="curl\lib\headers.h" />
|
||||
<ClInclude Include="curl\lib\hostip.h" />
|
||||
<ClInclude Include="curl\lib\hsts.h" />
|
||||
<ClInclude Include="curl\lib\http.h" />
|
||||
@@ -346,6 +348,7 @@
|
||||
<ClInclude Include="curl\lib\system_win32.h" />
|
||||
<ClInclude Include="curl\lib\telnet.h" />
|
||||
<ClInclude Include="curl\lib\tftp.h" />
|
||||
<ClInclude Include="curl\lib\timediff.h" />
|
||||
<ClInclude Include="curl\lib\timeval.h" />
|
||||
<ClInclude Include="curl\lib\transfer.h" />
|
||||
<ClInclude Include="curl\lib\url.h" />
|
||||
|
||||
+21
-12
@@ -474,6 +474,15 @@
|
||||
<ClCompile Include="curl\lib\vtls\x509asn1.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\headers.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\timediff.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="curl\lib\fopen.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="curl\include\curl\curl.h">
|
||||
@@ -536,15 +545,6 @@
|
||||
<ClInclude Include="curl\lib\config-riscos.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\config-symbian.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\config-tpf.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\config-vxworks.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\config-win32.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@@ -635,9 +635,6 @@
|
||||
<ClInclude Include="curl\lib\curl_sasl.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_sec.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\curl_setup.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
@@ -965,6 +962,18 @@
|
||||
<ClInclude Include="curl\lib\vtls\x509asn1.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\headers.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\timediff.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\easy_lock.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="curl\lib\fopen.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="curl\lib\libcurl.rc">
|
||||
|
||||
Vendored
+1
-1
Submodule 3rdparty/glslang/glslang updated: 9bb8cfffb0...adbf0d3106
Vendored
+7
-7
@@ -46,21 +46,21 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<NMakeBuildCommandLine>$(CmakeReleaseCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Release /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m</NMakeBuildCommandLine>
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Release /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m</NMakeBuildCommandLine>
|
||||
<NMakeReBuildCommandLine>$(CmakeReleaseCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Release /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m</NMakeReBuildCommandLine>
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Release /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m</NMakeReBuildCommandLine>
|
||||
<NMakeCleanCommandLine>$(CmakeReleaseCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Release /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m</NMakeCleanCommandLine>
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Release /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m</NMakeCleanCommandLine>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<NMakeBuildCommandLine>$(CmakeDebugCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Debug /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:build /p:Configuration=Debug /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m
|
||||
</NMakeBuildCommandLine>
|
||||
<NMakeReBuildCommandLine>$(CmakeDebugCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Debug /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Debug /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m
|
||||
</NMakeReBuildCommandLine>
|
||||
<NMakeCleanCommandLine>$(CmakeDebugCLI)
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Debug /p:ForceImportBeforeCppTargets=$(PropsAbsPath) /m
|
||||
msbuild.exe build\ALL_BUILD.vcxproj /t:clean /p:Configuration=Debug /p:ForceImportBeforeCppTargets="$(PropsAbsPath)" /m
|
||||
</NMakeCleanCommandLine>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup>
|
||||
@@ -68,4 +68,4 @@
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
</Project>
|
||||
|
||||
Vendored
+1
-1
Submodule 3rdparty/hidapi/hidapi updated: 6cf133697c...c2aa9dd37c
Vendored
+1
@@ -5,6 +5,7 @@ if(WITH_LLVM)
|
||||
if(BUILD_LLVM_SUBMODULE)
|
||||
message(STATUS "LLVM will be built from the submodule.")
|
||||
|
||||
set(LLVM_TARGETS_TO_BUILD "AArch64;X86")
|
||||
option(LLVM_BUILD_RUNTIME OFF)
|
||||
option(LLVM_BUILD_TOOLS OFF)
|
||||
option(LLVM_INCLUDE_BENCHMARKS OFF)
|
||||
|
||||
Vendored
+622
@@ -0,0 +1,622 @@
|
||||
// Based on https://github.com/PCSX2/pcsx2/blob/edeb0d7bd7258c58273cc4a88a9f9a823d71e48c/pcsx2/IPC.h
|
||||
// and https://github.com/PCSX2/pcsx2/blob/edeb0d7bd7258c58273cc4a88a9f9a823d71e48c/pcsx2/IPC.cpp
|
||||
// Relicensed as GPLv2 for use in RPCS3 with permission from copyright owner (Govanify).
|
||||
|
||||
#pragma once
|
||||
|
||||
//#include "Utilities/Thread.h"
|
||||
#include <string>
|
||||
#include "stdafx.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <thread>
|
||||
#include <sys/types.h>
|
||||
#if _WIN32
|
||||
#define read_portable(a, b, c) (recv(a, b, c, 0))
|
||||
#define write_portable(a, b, c) (send(a, b, c, 0))
|
||||
#define close_portable(a) (closesocket(a))
|
||||
#define bzero(b, len) (memset((b), '\0', (len)), (void)0)
|
||||
#include <WinSock2.h>
|
||||
#include <windows.h>
|
||||
#else
|
||||
#define read_portable(a, b, c) (read(a, b, c))
|
||||
#define write_portable(a, b, c) (write(a, b, c))
|
||||
#define close_portable(a) (close(a))
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
namespace pine
|
||||
{
|
||||
/**
|
||||
* Emulator status enum. @n
|
||||
* A list of possible emulator statuses. @n
|
||||
*/
|
||||
enum EmuStatus : uint32_t
|
||||
{
|
||||
Running = 0, /**< Game is running */
|
||||
Paused = 1, /**< Game is paused */
|
||||
Shutdown = 2, /**< Game is shutdown */
|
||||
};
|
||||
|
||||
typedef unsigned long long SOCKET;
|
||||
|
||||
template<typename Impl>
|
||||
class pine_server : public Impl
|
||||
{
|
||||
public:
|
||||
#ifdef _WIN32
|
||||
// windows claim to have support for AF_UNIX sockets but that is a blatant lie,
|
||||
// their SDK won't even run their own examples, so we go on TCP sockets.
|
||||
SOCKET m_sock;
|
||||
// the message socket used in thread's accept().
|
||||
SOCKET m_msgsock;
|
||||
#else
|
||||
// absolute path of the socket. Stored in XDG_RUNTIME_DIR, if unset /tmp
|
||||
std::string m_socket_name;
|
||||
int m_sock = 0;
|
||||
// the message socket used in thread's accept().
|
||||
int m_msgsock = 0;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Maximum memory used by an IPC message request.
|
||||
* Equivalent to 50,000 Write64 requests.
|
||||
*/
|
||||
#define MAX_IPC_SIZE 650000
|
||||
|
||||
/**
|
||||
* Maximum memory used by an IPC message reply.
|
||||
* Equivalent to 50,000 Read64 replies.
|
||||
*/
|
||||
#define MAX_IPC_RETURN_SIZE 450000
|
||||
|
||||
/**
|
||||
* IPC return buffer.
|
||||
* A preallocated buffer used to store all IPC replies.
|
||||
* to the size of 50.000 MsgWrite64 IPC calls.
|
||||
*/
|
||||
char* m_ret_buffer;
|
||||
|
||||
/**
|
||||
* IPC messages buffer.
|
||||
* A preallocated buffer used to store all IPC messages.
|
||||
*/
|
||||
char* m_ipc_buffer;
|
||||
|
||||
/**
|
||||
* IPC Command messages opcodes.
|
||||
* A list of possible operations possible by the IPC.
|
||||
* Each one of them is what we call an "opcode" and is the first
|
||||
* byte sent by the IPC to differentiate between commands.
|
||||
*/
|
||||
enum IPCCommand : unsigned char
|
||||
{
|
||||
MsgRead8 = 0, /**< Read 8 bit value to memory. */
|
||||
MsgRead16 = 1, /**< Read 16 bit value to memory. */
|
||||
MsgRead32 = 2, /**< Read 32 bit value to memory. */
|
||||
MsgRead64 = 3, /**< Read 64 bit value to memory. */
|
||||
MsgWrite8 = 4, /**< Write 8 bit value to memory. */
|
||||
MsgWrite16 = 5, /**< Write 16 bit value to memory. */
|
||||
MsgWrite32 = 6, /**< Write 32 bit value to memory. */
|
||||
MsgWrite64 = 7, /**< Write 64 bit value to memory. */
|
||||
MsgVersion = 8, /**< Returns RPCS3 version. */
|
||||
MsgTitle = 0xB, /**< Returns the game title. */
|
||||
MsgID = 0xC, /**< Returns the game ID. */
|
||||
MsgUUID = 0xD, /**< Returns the game UUID. */
|
||||
MsgGameVersion = 0xE, /**< Returns the game verion. */
|
||||
MsgStatus = 0xF, /**< Returns the emulator status. */
|
||||
MsgUnimplemented = 0xFF /**< Unimplemented IPC message. */
|
||||
};
|
||||
|
||||
/**
|
||||
* IPC message buffer.
|
||||
* A list of all needed fields to store an IPC message.
|
||||
*/
|
||||
struct IPCBuffer
|
||||
{
|
||||
int size; /**< Size of the buffer. */
|
||||
char* buffer; /**< Buffer. */
|
||||
};
|
||||
|
||||
/**
|
||||
* IPC result codes.
|
||||
* A list of possible result codes the IPC can send back.
|
||||
* Each one of them is what we call an "opcode" or "tag" and is the
|
||||
* first byte sent by the IPC to differentiate between results.
|
||||
*/
|
||||
enum IPCResult : unsigned char
|
||||
{
|
||||
IPC_OK = 0, /**< IPC command successfully completed. */
|
||||
IPC_FAIL = 0xFF /**< IPC command failed to complete. */
|
||||
};
|
||||
|
||||
/**
|
||||
* Internal function, Parses an IPC command.
|
||||
* buf: buffer containing the IPC command.
|
||||
* buf_size: size of the buffer announced.
|
||||
* ret_buffer: buffer that will be used to send the reply.
|
||||
* return value: IPCBuffer containing a buffer with the result
|
||||
* of the command and its size.
|
||||
*/
|
||||
IPCBuffer ParseCommand(char* buf, char* ret_buffer, u32 buf_size)
|
||||
{
|
||||
u32 ret_cnt = 5;
|
||||
u32 buf_cnt = 0;
|
||||
|
||||
while (buf_cnt < buf_size)
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 1, ret_cnt, 0, buf_size))
|
||||
return IPCBuffer{ 5, MakeFailIPC(ret_buffer) };
|
||||
buf_cnt++;
|
||||
// example IPC messages: MsgRead/Write
|
||||
// refer to the client doc for more info on the format
|
||||
// IPC Message event (1 byte)
|
||||
// | Memory address (4 byte)
|
||||
// | | argument (VLE)
|
||||
// | | |
|
||||
// format: XX YY YY YY YY ZZ ZZ ZZ ZZ
|
||||
// reply code: 00 = OK, FF = NOT OK
|
||||
// | return value (VLE)
|
||||
// | |
|
||||
// reply: XX ZZ ZZ ZZ ZZ
|
||||
IPCCommand command = std::bit_cast<IPCCommand>(buf[buf_cnt - 1]);
|
||||
switch (command)
|
||||
{
|
||||
case MsgRead8:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 4, ret_cnt, 1, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr(a))
|
||||
goto error;
|
||||
const u8 res = Impl::read8(a);
|
||||
ToArray(ret_buffer, res, ret_cnt);
|
||||
ret_cnt += 1;
|
||||
buf_cnt += 4;
|
||||
break;
|
||||
}
|
||||
case MsgRead16:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 4, ret_cnt, 2, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr<2>(a))
|
||||
goto error;
|
||||
const u16 res = Impl::read16(a);
|
||||
ToArray(ret_buffer, res, ret_cnt);
|
||||
ret_cnt += 2;
|
||||
buf_cnt += 4;
|
||||
break;
|
||||
}
|
||||
case MsgRead32:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 4, ret_cnt, 4, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr<4>(a))
|
||||
goto error;
|
||||
const u32 res = Impl::read32(a);
|
||||
ToArray(ret_buffer, res, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
buf_cnt += 4;
|
||||
break;
|
||||
}
|
||||
case MsgRead64:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 4, ret_cnt, 8, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr<8>(a))
|
||||
goto error;
|
||||
u64 res = Impl::read64(a);
|
||||
ToArray(ret_buffer, res, ret_cnt);
|
||||
ret_cnt += 8;
|
||||
buf_cnt += 4;
|
||||
break;
|
||||
}
|
||||
case MsgWrite8:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 1 + 4, ret_cnt, 0, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr(a, vm::page_writable))
|
||||
goto error;
|
||||
Impl::write8(a, FromArray<u8>(&buf[buf_cnt], 4));
|
||||
buf_cnt += 5;
|
||||
break;
|
||||
}
|
||||
case MsgWrite16:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 2 + 4, ret_cnt, 0, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr<2>(a, vm::page_writable))
|
||||
goto error;
|
||||
Impl::write16(a, FromArray<u16>(&buf[buf_cnt], 4));
|
||||
buf_cnt += 6;
|
||||
break;
|
||||
}
|
||||
case MsgWrite32:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 4 + 4, ret_cnt, 0, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr<4>(a, vm::page_writable))
|
||||
goto error;
|
||||
Impl::write32(a, FromArray<u32>(&buf[buf_cnt], 4));
|
||||
buf_cnt += 8;
|
||||
break;
|
||||
}
|
||||
case MsgWrite64:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 8 + 4, ret_cnt, 0, buf_size))
|
||||
goto error;
|
||||
const u32 a = FromArray<u32>(&buf[buf_cnt], 0);
|
||||
if (!Impl::template check_addr<8>(a, vm::page_writable))
|
||||
goto error;
|
||||
Impl::write64(a, FromArray<u64>(&buf[buf_cnt], 4));
|
||||
buf_cnt += 12;
|
||||
break;
|
||||
}
|
||||
case MsgVersion:
|
||||
{
|
||||
char version[256] = {};
|
||||
sprintf(version, "RPCS3 %s", Impl::get_version_and_branch().c_str());
|
||||
const u32 size = strlen(version) + 1;
|
||||
version[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], version, size);
|
||||
ret_cnt += size;
|
||||
break;
|
||||
}
|
||||
case MsgStatus:
|
||||
{
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, 4, buf_size))
|
||||
goto error;
|
||||
EmuStatus status = Impl::get_status();
|
||||
ToArray(ret_buffer, status, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
buf_cnt += 4;
|
||||
break;
|
||||
}
|
||||
case MsgTitle:
|
||||
{
|
||||
const auto title_string = Impl::get_title();
|
||||
const auto size = title_string.size() + 1;
|
||||
char* title = new char[size];
|
||||
sprintf(title, "%s", title_string.c_str());
|
||||
title[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], title, size);
|
||||
ret_cnt += size;
|
||||
delete[] title;
|
||||
break;
|
||||
}
|
||||
case MsgID:
|
||||
{
|
||||
const auto title_id_string = Impl::get_title_ID();
|
||||
const auto size = title_id_string.size() + 1;
|
||||
char* title_id = new char[size];
|
||||
sprintf(title_id, "%s", title_id_string.c_str());
|
||||
title_id[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], title_id, size);
|
||||
ret_cnt += size;
|
||||
delete[] title_id;
|
||||
break;
|
||||
}
|
||||
case MsgUUID:
|
||||
{
|
||||
const auto hash_string = Impl::get_executable_hash();
|
||||
const auto size = hash_string.size() + 1;
|
||||
char* hash = new char[size];
|
||||
sprintf(hash, "%s", hash_string.c_str());
|
||||
hash[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size + 4, buf_size))
|
||||
goto error;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], hash, size);
|
||||
ret_cnt += size;
|
||||
delete[] hash;
|
||||
break;
|
||||
}
|
||||
case MsgGameVersion:
|
||||
{
|
||||
const auto game_version_string = Impl::get_app_version();
|
||||
const auto size = game_version_string.size() + 1;
|
||||
char* game_version = new char[size];
|
||||
sprintf(game_version, "%s", game_version_string.c_str());
|
||||
game_version[size] = 0x00;
|
||||
if (!SafetyChecks(buf_cnt, 0, ret_cnt, size, buf_size))
|
||||
goto error;
|
||||
ToArray(ret_buffer, size, ret_cnt);
|
||||
ret_cnt += 4;
|
||||
memcpy(&ret_buffer[ret_cnt], game_version, size);
|
||||
ret_cnt += size;
|
||||
delete[] game_version;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
error:
|
||||
return IPCBuffer{ 5, MakeFailIPC(ret_buffer) };
|
||||
}
|
||||
}
|
||||
}
|
||||
return IPCBuffer{ static_cast<int>(ret_cnt), MakeOkIPC(ret_buffer, ret_cnt) };
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats an IPC buffer
|
||||
* ret_buffer: return buffer to use.
|
||||
* size: size of the IPC buffer.
|
||||
* return value: buffer containing the status code allocated of size
|
||||
*/
|
||||
static inline char* MakeOkIPC(char* ret_buffer, uint32_t size = 5)
|
||||
{
|
||||
ToArray<uint32_t>(ret_buffer, size, 0);
|
||||
ret_buffer[4] = IPC_OK;
|
||||
return ret_buffer;
|
||||
}
|
||||
|
||||
static inline char* MakeFailIPC(char* ret_buffer, uint32_t size = 5)
|
||||
{
|
||||
ToArray<uint32_t>(ret_buffer, size, 0);
|
||||
ret_buffer[4] = IPC_FAIL;
|
||||
return ret_buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes an open socket for IPC communication.
|
||||
* return value: -1 if a fatal failure happened, 0 otherwise.
|
||||
*/
|
||||
int StartSocket()
|
||||
{
|
||||
m_msgsock = accept(m_sock, 0, 0);
|
||||
|
||||
if (m_msgsock == -1)
|
||||
{
|
||||
// everything else is non recoverable in our scope
|
||||
// we also mark as recoverable socket errors where it would block a
|
||||
// non blocking socket, even though our socket is blocking, in case
|
||||
// we ever have to implement a non blocking socket.
|
||||
#ifdef _WIN32
|
||||
int errno_w = WSAGetLastError();
|
||||
if (!(errno_w == WSAECONNRESET || errno_w == WSAEINTR || errno_w == WSAEINPROGRESS || errno_w == WSAEMFILE || errno_w == WSAEWOULDBLOCK))
|
||||
{
|
||||
#else
|
||||
if (!(errno == ECONNABORTED || errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK))
|
||||
{
|
||||
#endif
|
||||
Impl::error("IPC: An unrecoverable error happened! Shutting down...");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Thread used to relay IPC commands.
|
||||
void operator()()
|
||||
{
|
||||
// we allocate once buffers to not have to do mallocs for each IPC
|
||||
// request, as malloc is expansive when we optimize for µs.
|
||||
m_ret_buffer = new char[MAX_IPC_RETURN_SIZE];
|
||||
m_ipc_buffer = new char[MAX_IPC_SIZE];
|
||||
|
||||
if (StartSocket() < 0)
|
||||
return;
|
||||
|
||||
while (thread_ctrl::state() != thread_state::aborting)
|
||||
{
|
||||
// either int or ssize_t depending on the platform, so we have to
|
||||
// use a bunch of auto
|
||||
auto receive_length = 0;
|
||||
auto end_length = 4;
|
||||
|
||||
// while we haven't received the entire packet, maybe due to
|
||||
// socket datagram splittage, we continue to read
|
||||
while (receive_length < end_length)
|
||||
{
|
||||
auto tmp_length = read_portable(m_msgsock, &m_ipc_buffer[receive_length], MAX_IPC_SIZE - receive_length);
|
||||
|
||||
// we recreate the socket if an error happens
|
||||
if (tmp_length <= 0)
|
||||
{
|
||||
receive_length = 0;
|
||||
if (StartSocket() < 0)
|
||||
return;
|
||||
break;
|
||||
}
|
||||
|
||||
receive_length += tmp_length;
|
||||
|
||||
// if we got at least the final size then update
|
||||
if (end_length == 4 && receive_length >= 4)
|
||||
{
|
||||
end_length = FromArray<u32>(m_ipc_buffer, 0);
|
||||
// we'd like to avoid a client trying to do OOB
|
||||
if (end_length > MAX_IPC_SIZE || end_length < 4)
|
||||
{
|
||||
receive_length = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// we remove 4 bytes to get the message size out of the IPC command
|
||||
// size in ParseCommand.
|
||||
// also, if we got a failed command, let's reset the state so we don't
|
||||
// end up deadlocking by getting out of sync, eg when a client
|
||||
// disconnects
|
||||
if (receive_length != 0)
|
||||
{
|
||||
pine_server::IPCBuffer res = ParseCommand(&m_ipc_buffer[4], m_ret_buffer, static_cast<u32>(end_length) - 4);
|
||||
|
||||
// if we cannot send back our answer restart the socket
|
||||
if (write_portable(m_msgsock, res.buffer, res.size) < 0)
|
||||
{
|
||||
if (StartSocket() < 0)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an uint to an char* in little endian
|
||||
* res_array: the array to modify
|
||||
* res: the value to convert
|
||||
* i: when to insert it into the array
|
||||
* return value: res_array
|
||||
* NB: implicitely inlined
|
||||
*/
|
||||
template <typename T>
|
||||
static char* ToArray(char* res_array, T res, int i)
|
||||
{
|
||||
memcpy((res_array + i), reinterpret_cast<char*>(&res), sizeof(T));
|
||||
return res_array;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a char* to an uint in little endian
|
||||
* arr: the array to convert
|
||||
* i: when to load it from the array
|
||||
* return value: the converted value
|
||||
* NB: implicitely inlined
|
||||
*/
|
||||
template <typename T>
|
||||
static T FromArray(char* arr, int i)
|
||||
{
|
||||
return *reinterpret_cast<T*>(arr + i);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures an IPC message isn't too big.
|
||||
* return value: false if checks failed, true otherwise.
|
||||
*/
|
||||
static inline bool SafetyChecks(u32 command_len, int command_size, u32 reply_len, int reply_size = 0, u32 buf_size = MAX_IPC_SIZE - 1)
|
||||
{
|
||||
bool res = ((command_len + command_size) > buf_size ||
|
||||
(reply_len + reply_size) >= MAX_IPC_RETURN_SIZE);
|
||||
if (res) [[unlikely]]
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public:
|
||||
/* Initializers */
|
||||
pine_server() noexcept
|
||||
{
|
||||
#ifdef _WIN32
|
||||
WSADATA wsa;
|
||||
struct sockaddr_in server;
|
||||
m_sock = INVALID_SOCKET;
|
||||
m_msgsock = INVALID_SOCKET;
|
||||
|
||||
if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
|
||||
{
|
||||
Impl::error("IPC: Cannot initialize winsock! Shutting down...");
|
||||
return;
|
||||
}
|
||||
|
||||
if ((m_sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
|
||||
{
|
||||
Impl::error("IPC: Cannot open socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
|
||||
// yes very good windows s/sun/sin/g sure is fine
|
||||
server.sin_family = AF_INET;
|
||||
// localhost only
|
||||
server.sin_addr.s_addr = inet_addr("127.0.0.1");
|
||||
server.sin_port = htons(Impl::get_port());
|
||||
|
||||
if (bind(m_sock, (struct sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
|
||||
{
|
||||
Impl::error("IPC: Error while binding to socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
|
||||
#else
|
||||
char* runtime_dir = nullptr;
|
||||
#ifdef __APPLE__
|
||||
runtime_dir = std::getenv("TMPDIR");
|
||||
#else
|
||||
runtime_dir = std::getenv("XDG_RUNTIME_DIR");
|
||||
#endif
|
||||
// fallback in case macOS or other OSes don't implement the XDG base
|
||||
// spec
|
||||
if (runtime_dir == nullptr)
|
||||
m_socket_name = "/tmp/rpcs3.sock";
|
||||
else
|
||||
{
|
||||
m_socket_name = runtime_dir;
|
||||
m_socket_name += "/rpcs3.sock";
|
||||
}
|
||||
|
||||
m_socket_name = fmt::format("%s.%d", m_socket_name, Impl::get_port());
|
||||
|
||||
struct sockaddr_un server;
|
||||
|
||||
m_sock = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (m_sock < 0)
|
||||
{
|
||||
Impl::error("IPC: Cannot open socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
server.sun_family = AF_UNIX;
|
||||
strcpy(server.sun_path, m_socket_name.c_str());
|
||||
|
||||
// we unlink the socket so that when releasing this thread the socket gets
|
||||
// freed even if we didn't close correctly the loop
|
||||
unlink(m_socket_name.c_str());
|
||||
if (bind(m_sock, std::bit_cast<struct sockaddr*>(&server), sizeof(struct sockaddr_un)))
|
||||
{
|
||||
Impl::error("IPC: Error while binding to socket! Shutting down...");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// maximum queue of 4096 commands before refusing, approximated to the
|
||||
// nearest legal value. We do not use SOMAXCONN as windows have this idea
|
||||
// that a "reasonable" value is 5, which is not.
|
||||
listen(m_sock, 4096);
|
||||
}
|
||||
|
||||
pine_server(const pine_server&) = delete;
|
||||
pine_server& operator=(const pine_server&) = delete;
|
||||
|
||||
void Cleanup()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
WSACleanup();
|
||||
#else
|
||||
unlink(m_socket_name.c_str());
|
||||
#endif
|
||||
close_portable(m_sock);
|
||||
close_portable(m_msgsock);
|
||||
}
|
||||
|
||||
~pine_server()
|
||||
{
|
||||
Cleanup();
|
||||
delete[] m_ret_buffer;
|
||||
delete[] m_ipc_buffer;
|
||||
}
|
||||
|
||||
}; // class pine_server
|
||||
}
|
||||
Vendored
+1
-1
@@ -19,7 +19,7 @@ else()
|
||||
set(WOLFSSL_CHACHA "yes" CACHE INTERNAL "")
|
||||
set(WOLFSSL_FILESYSTEM "yes" CACHE INTERNAL "")
|
||||
set(WOLFSSL_PWDBASED "yes" CACHE INTERNAL "")
|
||||
set(WOLFSSL_FAST_MATH "no" CACHE INTERNAL "")
|
||||
set(WOLFSSL_FAST_MATH "yes" CACHE INTERNAL "")
|
||||
set(WOLFSSL_EXAMPLES "no" CACHE INTERNAL "")
|
||||
set(WOLFSSL_CRYPT_TESTS "no" CACHE INTERNAL "")
|
||||
set(WOLFSSL_ASYNC_THREADS "no" CACHE INTERNAL "")
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
#define HAVE_ECC
|
||||
#define ECC_SHAMIR
|
||||
#define ECC_TIMING_RESISTANT
|
||||
#define USE_FAST_MATH
|
||||
#define FP_MAX_BITS 8192
|
||||
|
||||
/* UTF-8 aware filesystem functions for Windows */
|
||||
#define WOLFSSL_USER_FILESYSTEM
|
||||
|
||||
Vendored
+1
-1
Submodule 3rdparty/wolfssl/wolfssl updated: dcaa218ed8...57aac1c50b
+5
-4
@@ -29,7 +29,7 @@ These are the essentials tools to build RPCS3 on Linux. Some of them can be inst
|
||||
|
||||
#### Arch Linux
|
||||
|
||||
sudo pacman -S glew openal cmake vulkan-validation-layers qt5-base qt5-declarative qt5-multimedia sdl2 sndio jack2
|
||||
sudo pacman -S glew openal cmake vulkan-validation-layers qt5-base qt5-declarative qt5-multimedia sdl2 sndio jack2 base-devel
|
||||
|
||||
#### Debian & Ubuntu
|
||||
|
||||
@@ -102,9 +102,10 @@ git submodule update --init
|
||||
|
||||
#### Configuring the Qt plugin (if used)
|
||||
|
||||
1) Go to the Qt5 menu and edit Qt5 options.
|
||||
2) Add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\5.15.2\msvc2019_64`.
|
||||
3) While selecting the rpcs3qt project, go to Qt5->Project Setting and select the version you added.
|
||||
1) Go to `Extensions->Qt VS Tools->Qt Versions`.
|
||||
2) Add the path to your Qt installation with compiler e.g. `<QtInstallFolder>\5.15.2\msvc2019_64`, version will fill in automatically.
|
||||
3) Go to `Extensions->Qt VS Tools->Options->Legacy Project Format`.
|
||||
4) Set `Build: Run pre-build setup` to `true`.
|
||||
|
||||
#### Building the projects
|
||||
|
||||
|
||||
@@ -123,6 +123,20 @@ add_subdirectory(3rdparty)
|
||||
unset(CMAKE_CXX_FLAGS)
|
||||
unset(CMAKE_C_FLAGS)
|
||||
|
||||
if (DISABLE_LTO)
|
||||
if (CMAKE_C_FLAGS)
|
||||
string(REGEX REPLACE "-flto[^ ]*" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
|
||||
endif()
|
||||
if (CMAKE_CXX_FLAGS)
|
||||
string(REGEX REPLACE "-flto[^ ]*" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
string(FIND "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}" "-flto" FOUND_LTO)
|
||||
if (NOT FOUND_LTO EQUAL -1)
|
||||
message(FATAL_ERROR "Rpcs3 doesn't support building with LTO, use -DDISABLE_LTO=TRUE to force-disable it")
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
add_compile_options(-pthread)
|
||||
endif()
|
||||
|
||||
@@ -262,6 +262,22 @@ void cfg::encode(YAML::Emitter& out, const cfg::_base& rhs)
|
||||
out << YAML::EndMap;
|
||||
return;
|
||||
}
|
||||
case type::device:
|
||||
{
|
||||
out << YAML::BeginMap;
|
||||
for (const auto& [key, info] : static_cast<const device_entry&>(rhs).get_map())
|
||||
{
|
||||
out << YAML::Key << key;
|
||||
out << YAML::BeginMap;
|
||||
out << YAML::Key << "Path" << YAML::Value << info.path;
|
||||
out << YAML::Key << "Serial" << YAML::Value << info.serial;
|
||||
out << YAML::Key << "VID" << YAML::Value << info.vid;
|
||||
out << YAML::Key << "PID" << YAML::Value << info.pid;
|
||||
out << YAML::EndMap;
|
||||
}
|
||||
out << YAML::EndMap;
|
||||
return;
|
||||
}
|
||||
default:
|
||||
{
|
||||
out << rhs.to_string();
|
||||
@@ -355,6 +371,44 @@ void cfg::decode(const YAML::Node& data, cfg::_base& rhs, bool dynamic)
|
||||
static_cast<log_entry&>(rhs).set_map(std::move(values));
|
||||
break;
|
||||
}
|
||||
case type::device:
|
||||
{
|
||||
if (!data.IsMap())
|
||||
{
|
||||
return; // ???
|
||||
}
|
||||
|
||||
map_of_type<device_info> values;
|
||||
|
||||
for (const auto& pair : data)
|
||||
{
|
||||
if (!pair.first.IsScalar() || !pair.second.IsMap()) continue;
|
||||
|
||||
device_info info{};
|
||||
|
||||
for (const auto& key_value : pair.second)
|
||||
{
|
||||
if (!key_value.first.IsScalar() || !key_value.second.IsScalar()) continue;
|
||||
|
||||
if (key_value.first.Scalar() == "Path")
|
||||
info.path = key_value.second.Scalar();
|
||||
|
||||
if (key_value.first.Scalar() == "Serial")
|
||||
info.serial = key_value.second.Scalar();
|
||||
|
||||
if (key_value.first.Scalar() == "VID")
|
||||
info.vid = key_value.second.Scalar();
|
||||
|
||||
if (key_value.first.Scalar() == "PID")
|
||||
info.pid = key_value.second.Scalar();
|
||||
}
|
||||
|
||||
values.emplace(pair.first.Scalar(), std::move(info));
|
||||
}
|
||||
|
||||
static_cast<device_entry&>(rhs).set_map(std::move(values));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
std::string value;
|
||||
@@ -456,3 +510,13 @@ void cfg::log_entry::from_default()
|
||||
{
|
||||
set_map({});
|
||||
}
|
||||
|
||||
void cfg::device_entry::set_map(map_of_type<device_info>&& map)
|
||||
{
|
||||
m_map = std::move(map);
|
||||
}
|
||||
|
||||
void cfg::device_entry::from_default()
|
||||
{
|
||||
m_map = m_default;
|
||||
}
|
||||
|
||||
+39
-2
@@ -37,7 +37,8 @@ namespace cfg
|
||||
string, // cfg::string type
|
||||
set, // cfg::set_entry type
|
||||
map, // cfg::map_entry type
|
||||
log,
|
||||
log, // cfg::log_entry type
|
||||
device, // cfg::device_entry type
|
||||
};
|
||||
|
||||
// Config tree entry abstract base class
|
||||
@@ -179,7 +180,7 @@ namespace cfg
|
||||
|
||||
// Value node with fixed set of possible values, each maps to an enum value of type T.
|
||||
template <typename T>
|
||||
class _enum final : public _base
|
||||
class _enum : public _base
|
||||
{
|
||||
atomic_t<T> m_value;
|
||||
|
||||
@@ -521,4 +522,40 @@ namespace cfg
|
||||
|
||||
void from_default() override;
|
||||
};
|
||||
|
||||
struct device_info
|
||||
{
|
||||
std::string path;
|
||||
std::string serial;
|
||||
std::string vid;
|
||||
std::string pid;
|
||||
};
|
||||
|
||||
class device_entry final : public _base
|
||||
{
|
||||
map_of_type<device_info> m_map{};
|
||||
map_of_type<device_info> m_default{};
|
||||
|
||||
public:
|
||||
device_entry(node* owner, const std::string& name, map_of_type<device_info> def = {})
|
||||
: _base(type::device, owner, name, true)
|
||||
, m_map(std::move(def))
|
||||
{
|
||||
m_default = m_map;
|
||||
}
|
||||
|
||||
const map_of_type<device_info>& get_map() const
|
||||
{
|
||||
return m_map;
|
||||
}
|
||||
|
||||
const map_of_type<device_info>& get_default() const
|
||||
{
|
||||
return m_default;
|
||||
}
|
||||
|
||||
void set_map(map_of_type<device_info>&& map);
|
||||
|
||||
void from_default() override;
|
||||
};
|
||||
}
|
||||
|
||||
+5
-5
@@ -384,7 +384,7 @@ shared_ptr<fs::device_base> fs::set_virtual_device(const std::string& name, shar
|
||||
return get_device_manager().set_device(name, std::move(device));
|
||||
}
|
||||
|
||||
std::string fs::get_parent_dir(const std::string& path, u32 levels)
|
||||
std::string fs::get_parent_dir(std::string_view path, u32 levels)
|
||||
{
|
||||
std::string_view result = path;
|
||||
|
||||
@@ -1788,7 +1788,7 @@ const std::string& fs::get_temp_dir()
|
||||
return s_dir;
|
||||
}
|
||||
|
||||
bool fs::remove_all(const std::string& path, bool remove_root)
|
||||
bool fs::remove_all(const std::string& path, bool remove_root, bool is_no_dir_ok)
|
||||
{
|
||||
if (const auto root_dir = dir(path))
|
||||
{
|
||||
@@ -1817,7 +1817,7 @@ bool fs::remove_all(const std::string& path, bool remove_root)
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
return is_no_dir_ok;
|
||||
}
|
||||
|
||||
if (remove_root)
|
||||
@@ -1981,11 +1981,11 @@ fs::file fs::make_gather(std::vector<fs::file> files)
|
||||
return result;
|
||||
}
|
||||
|
||||
fs::pending_file::pending_file(const std::string& path)
|
||||
fs::pending_file::pending_file(std::string_view path)
|
||||
{
|
||||
do
|
||||
{
|
||||
m_path = fmt::format(u8"%s/$%s.%s.tmp", get_parent_dir(path), std::string_view(path).substr(path.find_last_of(fs::delim) + 1), fmt::base57(utils::get_unique_tsc()));
|
||||
m_path = fmt::format(u8"%s/$%s.%s.tmp", get_parent_dir(path), path.substr(path.find_last_of(fs::delim) + 1), fmt::base57(utils::get_unique_tsc()));
|
||||
|
||||
if (file.open(m_path, fs::create + fs::write + fs::read + fs::excl))
|
||||
{
|
||||
|
||||
+36
-6
@@ -71,6 +71,10 @@ namespace fs
|
||||
s64 atime;
|
||||
s64 mtime;
|
||||
s64 ctime;
|
||||
|
||||
using enable_bitcopy = std::true_type;
|
||||
|
||||
constexpr bool operator==(const stat_t&) const = default;
|
||||
};
|
||||
|
||||
// Helper, layout is equal to iovec struct
|
||||
@@ -105,6 +109,8 @@ namespace fs
|
||||
: stat_t{}
|
||||
{
|
||||
}
|
||||
|
||||
using enable_bitcopy = std::false_type;
|
||||
};
|
||||
|
||||
// Directory handle base
|
||||
@@ -159,7 +165,7 @@ namespace fs
|
||||
shared_ptr<device_base> set_virtual_device(const std::string& name, shared_ptr<device_base> device);
|
||||
|
||||
// Try to get parent directory (returns empty string on failure)
|
||||
std::string get_parent_dir(const std::string& path, u32 levels = 1);
|
||||
std::string get_parent_dir(std::string_view path, u32 levels = 1);
|
||||
|
||||
// Get file information
|
||||
bool stat(const std::string& path, stat_t& info);
|
||||
@@ -637,7 +643,7 @@ namespace fs
|
||||
// This is meant to modify files atomically, overwriting is likely
|
||||
bool commit(bool overwrite = true);
|
||||
|
||||
pending_file(const std::string& path);
|
||||
pending_file(std::string_view path);
|
||||
pending_file(const pending_file&) = delete;
|
||||
pending_file& operator=(const pending_file&) = delete;
|
||||
~pending_file();
|
||||
@@ -648,7 +654,7 @@ namespace fs
|
||||
};
|
||||
|
||||
// Delete directory and all its contents recursively
|
||||
bool remove_all(const std::string& path, bool remove_root = true);
|
||||
bool remove_all(const std::string& path, bool remove_root = true, bool is_no_dir_ok = false);
|
||||
|
||||
// Get size of all files recursively
|
||||
u64 get_dir_size(const std::string& path, u64 rounding_alignment = 1);
|
||||
@@ -681,9 +687,10 @@ namespace fs
|
||||
T obj;
|
||||
u64 pos;
|
||||
|
||||
container_stream(T&& obj)
|
||||
container_stream(T&& obj, const stat_t& init_stat = {})
|
||||
: obj(std::forward<T>(obj))
|
||||
, pos(0)
|
||||
, m_stat(init_stat)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -694,6 +701,7 @@ namespace fs
|
||||
bool trunc(u64 length) override
|
||||
{
|
||||
obj.resize(length);
|
||||
update_time(true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -708,6 +716,7 @@ namespace fs
|
||||
{
|
||||
std::copy(obj.cbegin() + pos, obj.cbegin() + pos + max, static_cast<value_type*>(buffer));
|
||||
pos = pos + max;
|
||||
update_time();
|
||||
return max;
|
||||
}
|
||||
}
|
||||
@@ -743,6 +752,7 @@ namespace fs
|
||||
obj.insert(obj.end(), src + overlap, src + size);
|
||||
pos += size;
|
||||
|
||||
if (size) update_time(true);
|
||||
return size;
|
||||
}
|
||||
|
||||
@@ -767,13 +777,33 @@ namespace fs
|
||||
{
|
||||
return obj.size();
|
||||
}
|
||||
|
||||
stat_t stat() override
|
||||
{
|
||||
return m_stat;
|
||||
}
|
||||
|
||||
private:
|
||||
stat_t m_stat{};
|
||||
|
||||
void update_time(bool write = false)
|
||||
{
|
||||
// TODO: Accurate timestamps
|
||||
m_stat.atime++;
|
||||
|
||||
if (write)
|
||||
{
|
||||
m_stat.mtime = std::max(m_stat.atime, ++m_stat.mtime);
|
||||
m_stat.ctime = m_stat.mtime;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
file make_stream(T&& container = T{})
|
||||
file make_stream(T&& container = T{}, const stat_t& stat = stat_t{})
|
||||
{
|
||||
file result;
|
||||
result.reset(std::make_unique<container_stream<T>>(std::forward<T>(container)));
|
||||
result.reset(std::make_unique<container_stream<T>>(std::forward<T>(container), stat));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+472
-1
@@ -7,6 +7,8 @@
|
||||
#include "mutex.h"
|
||||
#include "util/vm.hpp"
|
||||
#include "util/asm.hpp"
|
||||
#include "util/v128.hpp"
|
||||
#include "util/simd.hpp"
|
||||
#include <charconv>
|
||||
#include <zlib.h>
|
||||
|
||||
@@ -196,7 +198,11 @@ void* jit_runtime_base::_add(asmjit::CodeHolder* code) noexcept
|
||||
ensure(!code->relocateToBase(uptr(p)));
|
||||
|
||||
{
|
||||
// We manage rw <-> rx transitions manually on Apple
|
||||
// because it's easier to keep track of when and where we need to toggle W^X
|
||||
#if !(defined(ARCH_ARM64) && defined(__APPLE__))
|
||||
asmjit::VirtMem::ProtectJitReadWriteScope rwScope(p, codeSize);
|
||||
#endif
|
||||
|
||||
for (asmjit::Section* section : code->_sections)
|
||||
{
|
||||
@@ -248,6 +254,9 @@ void jit_runtime::initialize()
|
||||
|
||||
void jit_runtime::finalize() noexcept
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
pthread_jit_write_protect_np(false);
|
||||
#endif
|
||||
// Reset JIT memory
|
||||
#ifdef CAN_OVERCOMMIT
|
||||
utils::memory_reset(get_jit_memory(), 0x80000000);
|
||||
@@ -262,6 +271,15 @@ void jit_runtime::finalize() noexcept
|
||||
// Restore code/data snapshot
|
||||
std::memcpy(alloc(s_code_init.size(), 1, true), s_code_init.data(), s_code_init.size());
|
||||
std::memcpy(alloc(s_data_init.size(), 1, false), s_data_init.data(), s_data_init.size());
|
||||
|
||||
#ifdef __APPLE__
|
||||
pthread_jit_write_protect_np(true);
|
||||
#endif
|
||||
#ifdef ARCH_ARM64
|
||||
// Flush all cache lines after potentially writing executable code
|
||||
asm("ISB");
|
||||
asm("DSB ISH");
|
||||
#endif
|
||||
}
|
||||
|
||||
jit_runtime_base& asmjit::get_global_runtime()
|
||||
@@ -335,6 +353,435 @@ asmjit::inline_runtime::~inline_runtime()
|
||||
utils::memory_protect(m_data, m_size, utils::protection::rx);
|
||||
}
|
||||
|
||||
#if defined(ARCH_X64)
|
||||
asmjit::simd_builder::simd_builder(CodeHolder* ch) noexcept
|
||||
: native_asm(ch)
|
||||
{
|
||||
_init(true);
|
||||
consts[~v128()] = this->newLabel();
|
||||
}
|
||||
|
||||
asmjit::simd_builder::~simd_builder()
|
||||
{
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::_init(bool full)
|
||||
{
|
||||
if (full && utils::has_avx512_icl())
|
||||
{
|
||||
v0 = x86::zmm0;
|
||||
v1 = x86::zmm1;
|
||||
v2 = x86::zmm2;
|
||||
v3 = x86::zmm3;
|
||||
v4 = x86::zmm4;
|
||||
v5 = x86::zmm5;
|
||||
vsize = 64;
|
||||
}
|
||||
else if (full && utils::has_avx2())
|
||||
{
|
||||
v0 = x86::ymm0;
|
||||
v1 = x86::ymm1;
|
||||
v2 = x86::ymm2;
|
||||
v3 = x86::ymm3;
|
||||
v4 = x86::ymm4;
|
||||
v5 = x86::ymm5;
|
||||
vsize = 32;
|
||||
}
|
||||
else
|
||||
{
|
||||
v0 = x86::xmm0;
|
||||
v1 = x86::xmm1;
|
||||
v2 = x86::xmm2;
|
||||
v3 = x86::xmm3;
|
||||
v4 = x86::xmm4;
|
||||
v5 = x86::xmm5;
|
||||
vsize = 16;
|
||||
}
|
||||
|
||||
if (full && utils::has_avx512())
|
||||
{
|
||||
vmask = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
vmask = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::operator()() noexcept
|
||||
{
|
||||
for (auto&& [x, y] : consts)
|
||||
{
|
||||
this->align(AlignMode::kData, 16);
|
||||
this->bind(y);
|
||||
this->embed(&x, 16);
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_cleanup_ret()
|
||||
{
|
||||
if (utils::has_avx() && vsize > 16)
|
||||
this->vzeroupper();
|
||||
this->ret();
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_set_all_zeros(const Operand& v)
|
||||
{
|
||||
x86::Xmm reg(v.id());
|
||||
if (utils::has_avx())
|
||||
this->vpxor(reg, reg, reg);
|
||||
else
|
||||
this->xorps(reg, reg);
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_set_all_ones(const Operand& v)
|
||||
{
|
||||
x86::Xmm reg(v.id());
|
||||
if (x86::Zmm zr(v.id()); zr == v)
|
||||
this->vpternlogd(zr, zr, zr, 0xff);
|
||||
else if (x86::Ymm yr(v.id()); yr == v)
|
||||
this->vpcmpeqd(yr, yr, yr);
|
||||
else if (utils::has_avx())
|
||||
this->vpcmpeqd(reg, reg, reg);
|
||||
else
|
||||
this->pcmpeqd(reg, reg);
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_set_const(const Operand& v, const v128& val)
|
||||
{
|
||||
if (!val._u)
|
||||
return vec_set_all_zeros(v);
|
||||
if (!~val._u)
|
||||
return vec_set_all_ones(v);
|
||||
else
|
||||
{
|
||||
Label co = consts[val];
|
||||
if (!co.isValid())
|
||||
co = consts[val] = this->newLabel();
|
||||
if (x86::Zmm zr(v.id()); zr == v)
|
||||
this->vbroadcasti32x4(zr, x86::oword_ptr(co));
|
||||
else if (x86::Ymm yr(v.id()); yr == v)
|
||||
this->vbroadcasti128(yr, x86::oword_ptr(co));
|
||||
else if (utils::has_avx())
|
||||
this->vmovaps(x86::Xmm(v.id()), x86::oword_ptr(co));
|
||||
else
|
||||
this->movaps(x86::Xmm(v.id()), x86::oword_ptr(co));
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_clobbering_test(u32 esize, const Operand& v, const Operand& rhs)
|
||||
{
|
||||
if (esize == 64)
|
||||
{
|
||||
this->emit(x86::Inst::kIdVptestmd, x86::k0, v, rhs);
|
||||
this->ktestw(x86::k0, x86::k0);
|
||||
}
|
||||
else if (esize == 32)
|
||||
{
|
||||
this->emit(x86::Inst::kIdVptest, v, rhs);
|
||||
}
|
||||
else if (esize == 16 && utils::has_sse41())
|
||||
{
|
||||
this->emit(x86::Inst::kIdPtest, v, rhs);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (v != rhs)
|
||||
this->emit(x86::Inst::kIdPand, v, rhs);
|
||||
if (esize == 16)
|
||||
this->emit(x86::Inst::kIdPacksswb, v, v);
|
||||
this->emit(x86::Inst::kIdMovq, x86::rax, v);
|
||||
if (esize == 16 || esize == 8)
|
||||
this->test(x86::rax, x86::rax);
|
||||
else if (esize == 4)
|
||||
this->test(x86::eax, x86::eax);
|
||||
else if (esize == 2)
|
||||
this->test(x86::ax, x86::ax);
|
||||
else if (esize == 1)
|
||||
this->test(x86::al, x86::al);
|
||||
else
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
}
|
||||
|
||||
asmjit::x86::Mem asmjit::simd_builder::ptr_scale_for_vec(u32 esize, const x86::Gp& base, const x86::Gp& index)
|
||||
{
|
||||
switch (ensure(esize))
|
||||
{
|
||||
case 1: return x86::ptr(base, index, 0, 0);
|
||||
case 2: return x86::ptr(base, index, 1, 0);
|
||||
case 4: return x86::ptr(base, index, 2, 0);
|
||||
case 8: return x86::ptr(base, index, 3, 0);
|
||||
default: fmt::throw_exception("Bad esize");
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_load_unaligned(u32 esize, const Operand& v, const x86::Mem& src)
|
||||
{
|
||||
ensure(std::has_single_bit(esize));
|
||||
ensure(std::has_single_bit(vsize));
|
||||
|
||||
if (esize == 2)
|
||||
{
|
||||
ensure(vsize >= 2);
|
||||
if (vsize == 2)
|
||||
vec_set_all_zeros(v);
|
||||
if (vsize == 2 && utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVpinsrw, x86::Xmm(v.id()), x86::Xmm(v.id()), src, Imm(0));
|
||||
else if (vsize == 2)
|
||||
this->emit(x86::Inst::kIdPinsrw, v, src, Imm(0));
|
||||
else if (vmask && vmask < 8)
|
||||
this->emit(x86::Inst::kIdVmovdqu16, v, src);
|
||||
else
|
||||
return vec_load_unaligned(vsize, v, src);
|
||||
}
|
||||
else if (esize == 4)
|
||||
{
|
||||
ensure(vsize >= 4);
|
||||
if (vsize == 4 && utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVmovd, x86::Xmm(v.id()), src);
|
||||
else if (vsize == 4)
|
||||
this->emit(x86::Inst::kIdMovd, v, src);
|
||||
else if (vmask && vmask < 8)
|
||||
this->emit(x86::Inst::kIdVmovdqu32, v, src);
|
||||
else
|
||||
return vec_load_unaligned(vsize, v, src);
|
||||
}
|
||||
else if (esize == 8)
|
||||
{
|
||||
ensure(vsize >= 8);
|
||||
if (vsize == 8 && utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVmovq, x86::Xmm(v.id()), src);
|
||||
else if (vsize == 8)
|
||||
this->emit(x86::Inst::kIdMovq, v, src);
|
||||
else if (vmask && vmask < 8)
|
||||
this->emit(x86::Inst::kIdVmovdqu64, v, src);
|
||||
else
|
||||
return vec_load_unaligned(vsize, v, src);
|
||||
}
|
||||
else if (esize >= 16)
|
||||
{
|
||||
ensure(vsize >= 16);
|
||||
if (utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVmovdqu, v, src);
|
||||
else
|
||||
this->emit(x86::Inst::kIdMovups, v, src);
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_store_unaligned(u32 esize, const Operand& v, const x86::Mem& dst)
|
||||
{
|
||||
ensure(std::has_single_bit(esize));
|
||||
ensure(std::has_single_bit(vsize));
|
||||
|
||||
if (esize == 2)
|
||||
{
|
||||
ensure(vsize >= 2);
|
||||
if (vsize == 2 && utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVpextrw, dst, x86::Xmm(v.id()), Imm(0));
|
||||
else if (vsize == 2 && utils::has_sse41())
|
||||
this->emit(x86::Inst::kIdPextrw, dst, v, Imm(0));
|
||||
else if (vsize == 2)
|
||||
this->push(x86::rax), this->pextrw(x86::eax, x86::Xmm(v.id()), 0), this->mov(dst, x86::ax), this->pop(x86::rax);
|
||||
else if ((vmask && vmask < 8) || vsize >= 64)
|
||||
this->emit(x86::Inst::kIdVmovdqu16, dst, v);
|
||||
else
|
||||
return vec_store_unaligned(vsize, v, dst);
|
||||
}
|
||||
else if (esize == 4)
|
||||
{
|
||||
ensure(vsize >= 4);
|
||||
if (vsize == 4 && utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVmovd, dst, x86::Xmm(v.id()));
|
||||
else if (vsize == 4)
|
||||
this->emit(x86::Inst::kIdMovd, dst, v);
|
||||
else if ((vmask && vmask < 8) || vsize >= 64)
|
||||
this->emit(x86::Inst::kIdVmovdqu32, dst, v);
|
||||
else
|
||||
return vec_store_unaligned(vsize, v, dst);
|
||||
}
|
||||
else if (esize == 8)
|
||||
{
|
||||
ensure(vsize >= 8);
|
||||
if (vsize == 8 && utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVmovq, dst, x86::Xmm(v.id()));
|
||||
else if (vsize == 8)
|
||||
this->emit(x86::Inst::kIdMovq, dst, v);
|
||||
else if ((vmask && vmask < 8) || vsize >= 64)
|
||||
this->emit(x86::Inst::kIdVmovdqu64, dst, v);
|
||||
else
|
||||
return vec_store_unaligned(vsize, v, dst);
|
||||
}
|
||||
else if (esize >= 16)
|
||||
{
|
||||
ensure(vsize >= 16);
|
||||
if ((vmask && vmask < 8) || vsize >= 64)
|
||||
this->emit(x86::Inst::kIdVmovdqu64, dst, v); // Not really needed
|
||||
else if (utils::has_avx())
|
||||
this->emit(x86::Inst::kIdVmovdqu, dst, v);
|
||||
else
|
||||
this->emit(x86::Inst::kIdMovups, dst, v);
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::_vec_binary_op(x86::Inst::Id sse_op, x86::Inst::Id vex_op, x86::Inst::Id evex_op, const Operand& dst, const Operand& lhs, const Operand& rhs)
|
||||
{
|
||||
if (utils::has_avx())
|
||||
{
|
||||
if (vex_op == x86::Inst::kIdNone || this->_extraReg.isReg())
|
||||
{
|
||||
this->evex().emit(evex_op, dst, lhs, rhs);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->emit(vex_op, dst, lhs, rhs);
|
||||
}
|
||||
}
|
||||
else if (dst == lhs)
|
||||
{
|
||||
this->emit(sse_op, dst, rhs);
|
||||
}
|
||||
else if (dst == rhs)
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
else
|
||||
{
|
||||
this->emit(x86::Inst::kIdMovaps, dst, lhs);
|
||||
this->emit(sse_op, dst, rhs);
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_umin(u32 esize, const Operand& dst, const Operand& lhs, const Operand& rhs)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
if (esize == 2)
|
||||
{
|
||||
if (utils::has_sse41())
|
||||
return _vec_binary_op(kIdPminuw, kIdVpminuw, kIdVpminuw, dst, lhs, rhs);
|
||||
}
|
||||
else if (esize == 4)
|
||||
{
|
||||
if (utils::has_sse41())
|
||||
return _vec_binary_op(kIdPminud, kIdVpminud, kIdVpminud, dst, lhs, rhs);
|
||||
}
|
||||
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_umax(u32 esize, const Operand& dst, const Operand& lhs, const Operand& rhs)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
if (esize == 2)
|
||||
{
|
||||
if (utils::has_sse41())
|
||||
return _vec_binary_op(kIdPmaxuw, kIdVpmaxuw, kIdVpmaxuw, dst, lhs, rhs);
|
||||
}
|
||||
else if (esize == 4)
|
||||
{
|
||||
if (utils::has_sse41())
|
||||
return _vec_binary_op(kIdPmaxud, kIdVpmaxud, kIdVpmaxud, dst, lhs, rhs);
|
||||
}
|
||||
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_umin_horizontal_i128(u32 esize, const x86::Gp& dst, const Operand& src, const Operand& tmp)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
if (!utils::has_sse41())
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
|
||||
ensure(src != tmp);
|
||||
|
||||
if (esize == 2)
|
||||
{
|
||||
this->emit(utils::has_avx() ? kIdVphminposuw : kIdPhminposuw, x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->emit(utils::has_avx() ? kIdVpextrw : kIdPextrw, dst, x86::Xmm(tmp.id()), Imm(0));
|
||||
}
|
||||
else if (esize == 4)
|
||||
{
|
||||
if (utils::has_avx())
|
||||
{
|
||||
this->vpsrldq(x86::Xmm(tmp.id()), x86::Xmm(src.id()), 8);
|
||||
this->vpminud(x86::Xmm(tmp.id()), x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->vpsrldq(x86::Xmm(src.id()), x86::Xmm(tmp.id()), 4);
|
||||
this->vpminud(x86::Xmm(src.id()), x86::Xmm(src.id()), x86::Xmm(tmp.id()));
|
||||
this->vmovd(dst.r32(), x86::Xmm(src.id()));
|
||||
}
|
||||
else
|
||||
{
|
||||
this->movdqa(x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->psrldq(x86::Xmm(tmp.id()), 8);
|
||||
this->pminud(x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->movdqa(x86::Xmm(src.id()), x86::Xmm(tmp.id()));
|
||||
this->psrldq(x86::Xmm(src.id()), 4);
|
||||
this->pminud(x86::Xmm(src.id()), x86::Xmm(tmp.id()));
|
||||
this->movd(dst.r32(), x86::Xmm(src.id()));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
}
|
||||
|
||||
void asmjit::simd_builder::vec_umax_horizontal_i128(u32 esize, const x86::Gp& dst, const Operand& src, const Operand& tmp)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
if (!utils::has_sse41())
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
|
||||
ensure(src != tmp);
|
||||
|
||||
if (esize == 2)
|
||||
{
|
||||
vec_set_all_ones(x86::Xmm(tmp.id()));
|
||||
vec_xor(esize, x86::Xmm(tmp.id()), x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->emit(utils::has_avx() ? kIdVphminposuw : kIdPhminposuw, x86::Xmm(tmp.id()), x86::Xmm(tmp.id()));
|
||||
this->emit(utils::has_avx() ? kIdVpextrw : kIdPextrw, dst, x86::Xmm(tmp.id()), Imm(0));
|
||||
this->not_(dst.r16());
|
||||
}
|
||||
else if (esize == 4)
|
||||
{
|
||||
if (utils::has_avx())
|
||||
{
|
||||
this->vpsrldq(x86::Xmm(tmp.id()), x86::Xmm(src.id()), 8);
|
||||
this->vpmaxud(x86::Xmm(tmp.id()), x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->vpsrldq(x86::Xmm(src.id()), x86::Xmm(tmp.id()), 4);
|
||||
this->vpmaxud(x86::Xmm(src.id()), x86::Xmm(src.id()), x86::Xmm(tmp.id()));
|
||||
this->vmovd(dst.r32(), x86::Xmm(src.id()));
|
||||
}
|
||||
else
|
||||
{
|
||||
this->movdqa(x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->psrldq(x86::Xmm(tmp.id()), 8);
|
||||
this->pmaxud(x86::Xmm(tmp.id()), x86::Xmm(src.id()));
|
||||
this->movdqa(x86::Xmm(src.id()), x86::Xmm(tmp.id()));
|
||||
this->psrldq(x86::Xmm(src.id()), 4);
|
||||
this->pmaxud(x86::Xmm(src.id()), x86::Xmm(tmp.id()));
|
||||
this->movd(dst.r32(), x86::Xmm(src.id()));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::throw_exception("Unimplemented");
|
||||
}
|
||||
}
|
||||
#endif /* X86 */
|
||||
|
||||
#ifdef LLVM_AVAILABLE
|
||||
|
||||
#include <unordered_map>
|
||||
@@ -432,6 +879,21 @@ static u64 make_null_function(const std::string& name)
|
||||
c.db(ch);
|
||||
c.db(0);
|
||||
c.align(AlignMode::kData, 16);
|
||||
#else
|
||||
// AArch64 implementation
|
||||
Label jmp_address = c.newLabel();
|
||||
Label data = c.newLabel();
|
||||
// Force absolute jump to prevent out of bounds PC-rel jmp
|
||||
c.ldr(args[0], arm::ptr(jmp_address));
|
||||
c.br(args[0]);
|
||||
c.align(AlignMode::kCode, 16);
|
||||
|
||||
c.bind(data);
|
||||
c.embed(name.c_str(), name.size());
|
||||
c.embedUInt8(0U);
|
||||
c.bind(jmp_address);
|
||||
c.embedUInt64(reinterpret_cast<u64>(&null));
|
||||
c.align(AlignMode::kData, 16);
|
||||
#endif
|
||||
});
|
||||
|
||||
@@ -840,6 +1302,10 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
|
||||
std::string result;
|
||||
|
||||
auto null_mod = std::make_unique<llvm::Module> ("null_", *m_context);
|
||||
#if defined(__APPLE__) && defined(ARCH_ARM64)
|
||||
// Force override triple on Apple arm64 or we'll get linking errors.
|
||||
null_mod->setTargetTriple(llvm::Triple::normalize(utils::c_llvm_default_triple));
|
||||
#endif
|
||||
|
||||
if (_link.empty())
|
||||
{
|
||||
@@ -852,7 +1318,7 @@ jit_compiler::jit_compiler(const std::unordered_map<std::string, u64>& _link, co
|
||||
else
|
||||
{
|
||||
mem = std::make_unique<MemoryManager2>();
|
||||
null_mod->setTargetTriple(llvm::Triple::normalize("x86_64-unknown-linux-gnu"));
|
||||
null_mod->setTargetTriple(llvm::Triple::normalize(utils::c_llvm_default_triple));
|
||||
}
|
||||
|
||||
// Auxiliary JIT (does not use custom memory manager, only writes the objects)
|
||||
@@ -961,6 +1427,11 @@ bool jit_compiler::check(const std::string& path)
|
||||
return false;
|
||||
}
|
||||
|
||||
void jit_compiler::update_global_mapping(const std::string& name, u64 addr)
|
||||
{
|
||||
m_engine->updateGlobalMapping(name, addr);
|
||||
}
|
||||
|
||||
void jit_compiler::fin()
|
||||
{
|
||||
m_engine->finalizeObject();
|
||||
|
||||
+164
-34
@@ -42,6 +42,7 @@
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <unordered_map>
|
||||
#include <util/v128.hpp>
|
||||
|
||||
#if defined(ARCH_X64)
|
||||
using native_asm = asmjit::x86::Assembler;
|
||||
@@ -211,40 +212,136 @@ namespace asmjit
|
||||
}
|
||||
|
||||
#if defined(ARCH_X64)
|
||||
template <uint Size>
|
||||
struct native_vec;
|
||||
|
||||
template <>
|
||||
struct native_vec<16> { using type = x86::Xmm; };
|
||||
|
||||
template <>
|
||||
struct native_vec<32> { using type = x86::Ymm; };
|
||||
|
||||
template <>
|
||||
struct native_vec<64> { using type = x86::Zmm; };
|
||||
|
||||
template <uint Size>
|
||||
using native_vec_t = typename native_vec<Size>::type;
|
||||
|
||||
// if (count > step) { for (; ctr < (count - step); ctr += step) {...} count -= ctr; }
|
||||
inline void build_incomplete_loop(native_asm& c, auto ctr, auto count, u32 step, auto&& build)
|
||||
struct simd_builder : native_asm
|
||||
{
|
||||
asmjit::Label body = c.newLabel();
|
||||
asmjit::Label exit = c.newLabel();
|
||||
std::unordered_map<v128, Label> consts;
|
||||
|
||||
ensure((step & (step - 1)) == 0);
|
||||
c.cmp(count, step);
|
||||
c.jbe(exit);
|
||||
c.sub(count, step);
|
||||
c.align(asmjit::AlignMode::kCode, 16);
|
||||
c.bind(body);
|
||||
build();
|
||||
c.add(ctr, step);
|
||||
c.sub(count, step);
|
||||
c.ja(body);
|
||||
c.add(count, step);
|
||||
c.bind(exit);
|
||||
}
|
||||
Operand v0, v1, v2, v3, v4, v5;
|
||||
|
||||
uint vsize = 16;
|
||||
uint vmask = 0;
|
||||
|
||||
simd_builder(CodeHolder* ch) noexcept;
|
||||
~simd_builder();
|
||||
|
||||
void operator()() noexcept;
|
||||
|
||||
void _init(bool full);
|
||||
void vec_cleanup_ret();
|
||||
void vec_set_all_zeros(const Operand& v);
|
||||
void vec_set_all_ones(const Operand& v);
|
||||
void vec_set_const(const Operand& v, const v128& value);
|
||||
void vec_clobbering_test(u32 esize, const Operand& v, const Operand& rhs);
|
||||
|
||||
// return x86::ptr(base, ctr, X, 0) where X is set for esize accordingly
|
||||
x86::Mem ptr_scale_for_vec(u32 esize, const x86::Gp& base, const x86::Gp& index);
|
||||
|
||||
void vec_load_unaligned(u32 esize, const Operand& v, const x86::Mem& src);
|
||||
void vec_store_unaligned(u32 esize, const Operand& v, const x86::Mem& dst);
|
||||
void vec_partial_move(u32 esize, const Operand& dst, const Operand& src);
|
||||
|
||||
void _vec_binary_op(x86::Inst::Id sse_op, x86::Inst::Id vex_op, x86::Inst::Id evex_op, const Operand& dst, const Operand& lhs, const Operand& rhs);
|
||||
|
||||
void vec_shuffle_xi8(const Operand& dst, const Operand& lhs, const Operand& rhs)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
_vec_binary_op(kIdPshufb, kIdVpshufb, kIdVpshufb, dst, lhs, rhs);
|
||||
}
|
||||
|
||||
void vec_xor(u32, const Operand& dst, const Operand& lhs, const Operand& rhs)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
_vec_binary_op(kIdPxor, kIdVpxor, kIdVpxord, dst, lhs, rhs);
|
||||
}
|
||||
|
||||
void vec_or(u32, const Operand& dst, const Operand& lhs, const Operand& rhs)
|
||||
{
|
||||
using enum x86::Inst::Id;
|
||||
_vec_binary_op(kIdPor, kIdVpor, kIdVpord, dst, lhs, rhs);
|
||||
}
|
||||
|
||||
void vec_umin(u32 esize, const Operand& dst, const Operand& lhs, const Operand& rhs);
|
||||
void vec_umax(u32 esize, const Operand& dst, const Operand& lhs, const Operand& rhs);
|
||||
|
||||
void vec_umin_horizontal_i128(u32 esize, const x86::Gp& dst, const Operand& src, const Operand& tmp);
|
||||
void vec_umax_horizontal_i128(u32 esize, const x86::Gp& dst, const Operand& src, const Operand& tmp);
|
||||
|
||||
simd_builder& keep_if_not_masked()
|
||||
{
|
||||
if (vmask && vmask < 8)
|
||||
{
|
||||
this->k(x86::KReg(vmask));
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
simd_builder& zero_if_not_masked()
|
||||
{
|
||||
if (vmask && vmask < 8)
|
||||
{
|
||||
this->k(x86::KReg(vmask));
|
||||
this->z();
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
void build_loop(u32 esize, auto reg_ctr, auto reg_cnt, auto&& build, auto&& reduce)
|
||||
{
|
||||
ensure((esize & (esize - 1)) == 0);
|
||||
ensure(esize <= vsize);
|
||||
|
||||
Label body = this->newLabel();
|
||||
Label next = this->newLabel();
|
||||
Label exit = this->newLabel();
|
||||
|
||||
const u32 step = vsize / esize;
|
||||
|
||||
this->xor_(reg_ctr.r32(), reg_ctr.r32()); // Reset counter reg
|
||||
this->sub(reg_cnt, step);
|
||||
this->jb(next); // If count < step, skip main loop body
|
||||
this->align(AlignMode::kCode, 16);
|
||||
this->bind(body);
|
||||
build();
|
||||
this->add(reg_ctr, step);
|
||||
this->sub(reg_cnt, step);
|
||||
this->ja(body);
|
||||
this->bind(next);
|
||||
if (!vmask)
|
||||
reduce();
|
||||
this->add(reg_cnt, step);
|
||||
this->jz(exit);
|
||||
|
||||
if (vmask)
|
||||
{
|
||||
// Build single last iteration (masked)
|
||||
this->bzhi(reg_cnt, x86::Mem(consts[~u128()], 0), reg_cnt);
|
||||
this->kmovq(x86::k7, reg_cnt);
|
||||
vmask = 7;
|
||||
build();
|
||||
vmask = -1;
|
||||
reduce();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Build tail loop (reduced vector width)
|
||||
Label body = this->newLabel();
|
||||
this->align(AlignMode::kCode, 16);
|
||||
this->bind(body);
|
||||
const uint vsz = vsize / step;
|
||||
this->_init(false);
|
||||
vsize = vsz;
|
||||
build();
|
||||
this->_init(true);
|
||||
this->inc(reg_ctr);
|
||||
this->sub(reg_cnt, 1);
|
||||
this->ja(body);
|
||||
}
|
||||
|
||||
this->bind(exit);
|
||||
}
|
||||
};
|
||||
|
||||
// for (; count > 0; ctr++, count--)
|
||||
inline void build_loop(native_asm& c, auto ctr, auto count, auto&& build)
|
||||
@@ -262,16 +359,40 @@ namespace asmjit
|
||||
c.ja(body);
|
||||
c.bind(exit);
|
||||
}
|
||||
|
||||
inline void maybe_flush_lbr(native_asm& c, uint count = 2)
|
||||
{
|
||||
// Workaround for bad LBR callstacks which happen in some situations (mainly TSX) - execute additional RETs
|
||||
Label next = c.newLabel();
|
||||
c.lea(x86::rcx, x86::qword_ptr(next));
|
||||
|
||||
for (u32 i = 0; i < count; i++)
|
||||
{
|
||||
c.push(x86::rcx);
|
||||
c.sub(x86::rcx, 16);
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < count; i++)
|
||||
{
|
||||
c.ret();
|
||||
c.align(asmjit::AlignMode::kCode, 16);
|
||||
}
|
||||
|
||||
c.bind(next);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Build runtime function with asmjit::X86Assembler
|
||||
template <typename FT, typename Asm = native_asm, typename F>
|
||||
inline FT build_function_asm(std::string_view name, F&& builder)
|
||||
inline FT build_function_asm(std::string_view name, F&& builder, ::jit_runtime* custom_runtime = nullptr)
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
pthread_jit_write_protect_np(false);
|
||||
#endif
|
||||
using namespace asmjit;
|
||||
|
||||
auto& rt = get_global_runtime();
|
||||
auto& rt = custom_runtime ? *custom_runtime : get_global_runtime();
|
||||
|
||||
CodeHolder code;
|
||||
code.init(rt.environment());
|
||||
@@ -309,6 +430,12 @@ inline FT build_function_asm(std::string_view name, F&& builder)
|
||||
builder(compiler, args);
|
||||
}
|
||||
|
||||
if constexpr (std::is_invocable_r_v<void, Asm>)
|
||||
{
|
||||
// Finalization
|
||||
compiler();
|
||||
}
|
||||
|
||||
const auto result = rt._add(&code);
|
||||
jit_announce(result, code.codeSize(), name);
|
||||
return reinterpret_cast<FT>(uptr(result));
|
||||
@@ -359,6 +486,9 @@ public:
|
||||
// Add object (path to obj file)
|
||||
void add(const std::string& path);
|
||||
|
||||
// Update global mapping for a single value
|
||||
void update_global_mapping(const std::string& name, u64 addr);
|
||||
|
||||
// Check object file
|
||||
static bool check(const std::string& path);
|
||||
|
||||
|
||||
+34
-1
@@ -5,6 +5,8 @@
|
||||
#include "util/logs.hpp"
|
||||
#include "util/v128.hpp"
|
||||
|
||||
#include <locale>
|
||||
#include <codecvt>
|
||||
#include <algorithm>
|
||||
#include <string_view>
|
||||
#include "Thread.h"
|
||||
@@ -15,25 +17,41 @@
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
std::string wchar_to_utf8(std::wstring_view src)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
std::string utf8_string;
|
||||
const auto tmp_size = WideCharToMultiByte(CP_UTF8, 0, src.data(), src.size(), nullptr, 0, nullptr, nullptr);
|
||||
utf8_string.resize(tmp_size);
|
||||
WideCharToMultiByte(CP_UTF8, 0, src.data(), src.size(), utf8_string.data(), tmp_size, nullptr, nullptr);
|
||||
return utf8_string;
|
||||
#else
|
||||
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter{};
|
||||
return converter.to_bytes(src.data());
|
||||
#endif
|
||||
}
|
||||
|
||||
std::string utf16_to_utf8(std::u16string_view src)
|
||||
{
|
||||
std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> converter{};
|
||||
return converter.to_bytes(src.data());
|
||||
}
|
||||
|
||||
std::wstring utf8_to_wchar(std::string_view src)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
std::wstring wchar_string;
|
||||
const auto tmp_size = MultiByteToWideChar(CP_UTF8, 0, src.data(), src.size(), nullptr, 0);
|
||||
wchar_string.resize(tmp_size);
|
||||
MultiByteToWideChar(CP_UTF8, 0, src.data(), src.size(), wchar_string.data(), tmp_size);
|
||||
return wchar_string;
|
||||
#else
|
||||
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t> converter{};
|
||||
return converter.from_bytes(src.data());
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
std::string fmt::win_error_to_string(unsigned long error, void* module_handle)
|
||||
{
|
||||
std::string message;
|
||||
@@ -134,6 +152,11 @@ void fmt_class_string<const char*>::format(std::string& out, u64 arg)
|
||||
}
|
||||
}
|
||||
|
||||
void fmt_class_string<const wchar_t*>::format(std::string& out, u64 arg)
|
||||
{
|
||||
out += wchar_to_utf8(reinterpret_cast<const wchar_t*>(arg));
|
||||
}
|
||||
|
||||
template <>
|
||||
void fmt_class_string<std::string>::format(std::string& out, u64 arg)
|
||||
{
|
||||
@@ -592,3 +615,13 @@ bool fmt::match(const std::string& source, const std::string& mask)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string get_file_extension(const std::string& file_path)
|
||||
{
|
||||
if (usz dotpos = file_path.find_last_of('.'); dotpos != std::string::npos && dotpos + 1 < file_path.size())
|
||||
{
|
||||
return file_path.substr(dotpos + 1);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -226,6 +226,17 @@ struct fmt_class_string<char8_t*, void> : fmt_class_string<const char8_t*>
|
||||
{
|
||||
};
|
||||
|
||||
template <>
|
||||
struct fmt_class_string<const wchar_t*, void>
|
||||
{
|
||||
static void format(std::string& out, u64 arg);
|
||||
};
|
||||
|
||||
template <>
|
||||
struct fmt_class_string<wchar_t*, void> : fmt_class_string<const wchar_t*>
|
||||
{
|
||||
};
|
||||
|
||||
namespace fmt
|
||||
{
|
||||
// Both uchar and std::byte are allowed
|
||||
|
||||
+4
-2
@@ -8,10 +8,9 @@
|
||||
|
||||
#include "util/types.hpp"
|
||||
|
||||
#ifdef _WIN32
|
||||
std::wstring utf8_to_wchar(std::string_view src);
|
||||
std::string wchar_to_utf8(std::wstring_view src);
|
||||
#endif
|
||||
std::string utf16_to_utf8(std::u16string_view src);
|
||||
|
||||
// Copy null-terminated string from a std::string or a char array to a char array with truncation
|
||||
template <typename D, typename T>
|
||||
@@ -28,6 +27,9 @@ bool try_to_int64(s64* out, std::string_view value, s64 min, s64 max);
|
||||
// Convert string to unsigned integer
|
||||
bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max);
|
||||
|
||||
// Get the file extension of a file path ("png", "jpg", etc.)
|
||||
std::string get_file_extension(const std::string& file_path);
|
||||
|
||||
namespace fmt
|
||||
{
|
||||
std::string replace_all(std::string_view src, std::string_view from, std::string_view to, usz count = -1);
|
||||
|
||||
+75
-23
@@ -8,7 +8,6 @@
|
||||
#include "Thread.h"
|
||||
#include "Utilities/JIT.h"
|
||||
#include <thread>
|
||||
#include <sstream>
|
||||
#include <cfenv>
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -17,6 +16,7 @@
|
||||
#include <process.h>
|
||||
#include <sysinfoapi.h>
|
||||
#else
|
||||
#define _GNU_SOURCE
|
||||
#ifdef __APPLE__
|
||||
#define _XOPEN_SOURCE
|
||||
#define __USE_GNU
|
||||
@@ -96,14 +96,6 @@ extern thread_local std::string(*g_tls_log_prefix)();
|
||||
// Report error and call std::abort(), defined in main.cpp
|
||||
[[noreturn]] void report_fatal_error(std::string_view);
|
||||
|
||||
template <>
|
||||
void fmt_class_string<std::thread::id>::format(std::string& out, u64 arg)
|
||||
{
|
||||
std::ostringstream ss;
|
||||
ss << get_object(arg);
|
||||
out += ss.str();
|
||||
}
|
||||
|
||||
std::string dump_useful_thread_info()
|
||||
{
|
||||
thread_local volatile bool guard = false;
|
||||
@@ -119,7 +111,7 @@ std::string dump_useful_thread_info()
|
||||
|
||||
if (auto cpu = get_current_cpu_thread())
|
||||
{
|
||||
result = cpu->dump_all();
|
||||
cpu->dump_all(result);
|
||||
}
|
||||
|
||||
guard = false;
|
||||
@@ -1248,16 +1240,18 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
|
||||
|
||||
const auto cpu = get_current_cpu_thread();
|
||||
|
||||
if (rsx::g_access_violation_handler)
|
||||
if (addr < RAW_SPU_BASE_ADDR && vm::check_addr(addr) && rsx::g_access_violation_handler)
|
||||
{
|
||||
bool state_changed = false;
|
||||
|
||||
if (cpu)
|
||||
{
|
||||
vm::temporary_unlock(*cpu);
|
||||
state_changed = vm::temporary_unlock(*cpu);
|
||||
}
|
||||
|
||||
bool handled = rsx::g_access_violation_handler(addr, is_writing);
|
||||
|
||||
if (cpu && (cpu->state += cpu_flag::temp, cpu->test_stopped()))
|
||||
if (state_changed && (cpu->state += cpu_flag::temp, cpu->test_stopped()))
|
||||
{
|
||||
//
|
||||
}
|
||||
@@ -1423,6 +1417,11 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
|
||||
{
|
||||
g_tls_access_violation_recovered = true;
|
||||
|
||||
if (vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const auto area = vm::reserve_map(vm::any, addr & -0x10000, 0x10000);
|
||||
|
||||
if (!area)
|
||||
@@ -1430,15 +1429,14 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
|
||||
return false;
|
||||
}
|
||||
|
||||
if (vm::reader_lock rlock; vm::check_addr(addr, 0))
|
||||
if (vm::writer_lock mlock; area->flags & vm::preallocated || vm::check_addr(addr, 0))
|
||||
{
|
||||
// For allocated memory with protection lower than required (such as protection::no or read-only while writing to it)
|
||||
utils::memory_protect(vm::base(addr & -0x1000), 0x1000, utils::protection::rw);
|
||||
return true;
|
||||
}
|
||||
|
||||
area->falloc(addr & -0x10000, 0x10000);
|
||||
return vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable);
|
||||
return area->falloc(addr & -0x10000, 0x10000) || vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable);
|
||||
};
|
||||
|
||||
if (cpu && (cpu->id_type() == 1 || cpu->id_type() == 2))
|
||||
@@ -1485,7 +1483,7 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
|
||||
|
||||
u64 data3;
|
||||
{
|
||||
vm::reader_lock rlock;
|
||||
vm::writer_lock rlock;
|
||||
if (vm::check_addr(addr, is_writing ? vm::page_writable : vm::page_readable))
|
||||
{
|
||||
// Memory was allocated inbetween, retry
|
||||
@@ -1532,14 +1530,14 @@ bool handle_access_violation(u32 addr, bool is_writing, ucontext_t* context) noe
|
||||
// If we fail due to being busy, wait a bit and try again.
|
||||
while (static_cast<u32>(sending_error) == CELL_EBUSY)
|
||||
{
|
||||
thread_ctrl::wait_for(1000);
|
||||
sending_error = sys_event_port_send(pf_port_id, data1, data2, data3);
|
||||
|
||||
if (cpu->is_stopped())
|
||||
{
|
||||
sending_error = {};
|
||||
break;
|
||||
}
|
||||
|
||||
thread_ctrl::wait_for(1000);
|
||||
sending_error = sys_event_port_send(pf_port_id, data1, data2, data3);
|
||||
}
|
||||
|
||||
if (sending_error)
|
||||
@@ -1640,7 +1638,7 @@ static void append_thread_name(std::string& msg)
|
||||
}
|
||||
else
|
||||
{
|
||||
fmt::append(msg, "Thread id = %s.\n", std::this_thread::get_id());
|
||||
fmt::append(msg, "Thread id = %u.\n", thread_ctrl::get_tid());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2318,14 +2316,14 @@ thread_state thread_ctrl::state()
|
||||
return static_cast<thread_state>(_this->m_sync & 3);
|
||||
}
|
||||
|
||||
void thread_ctrl::_wait_for(u64 usec, [[maybe_unused]] bool alert /* true */)
|
||||
void thread_ctrl::wait_for(u64 usec, [[maybe_unused]] bool alert /* true */)
|
||||
{
|
||||
auto _this = g_tls_this_thread;
|
||||
|
||||
#ifdef __linux__
|
||||
static thread_local struct linux_timer_handle_t
|
||||
{
|
||||
// Allocate timer only if needed (i.e. someone calls _wait_for with alert and short period)
|
||||
// Allocate timer only if needed (i.e. someone calls wait_for with alert and short period)
|
||||
const int m_timer = timerfd_create(CLOCK_MONOTONIC, 0);
|
||||
|
||||
linux_timer_handle_t() noexcept
|
||||
@@ -2379,6 +2377,58 @@ void thread_ctrl::_wait_for(u64 usec, [[maybe_unused]] bool alert /* true */)
|
||||
list.wait(atomic_wait_timeout{usec <= 0xffff'ffff'ffff'ffff / 1000 ? usec * 1000 : 0xffff'ffff'ffff'ffff});
|
||||
}
|
||||
|
||||
void thread_ctrl::wait_for_accurate(u64 usec)
|
||||
{
|
||||
if (!usec)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
const auto until = std::chrono::steady_clock::now() + 1us * usec;
|
||||
|
||||
while (true)
|
||||
{
|
||||
#ifdef __linux__
|
||||
// NOTE: Assumption that timer initialization has succeeded
|
||||
u64 host_min_quantum = usec <= 1000 ? 10 : 50;
|
||||
#else
|
||||
// Host scheduler quantum for windows (worst case)
|
||||
// NOTE: On ps3 this function has very high accuracy
|
||||
constexpr u64 host_min_quantum = 500;
|
||||
#endif
|
||||
if (usec >= host_min_quantum)
|
||||
{
|
||||
#ifdef __linux__
|
||||
// Do not wait for the last quantum to avoid loss of accuracy
|
||||
wait_for(usec - ((usec % host_min_quantum) + host_min_quantum), false);
|
||||
#else
|
||||
// Wait on multiple of min quantum for large durations to avoid overloading low thread cpus
|
||||
wait_for(usec - (usec % host_min_quantum), false);
|
||||
#endif
|
||||
}
|
||||
// TODO: Determine best value for yield delay
|
||||
else if (usec >= host_min_quantum / 2)
|
||||
{
|
||||
std::this_thread::yield();
|
||||
}
|
||||
else
|
||||
{
|
||||
busy_wait(100);
|
||||
}
|
||||
|
||||
const auto current = std::chrono::steady_clock::now();
|
||||
|
||||
if (current >= until)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
usec = (until - current).count();
|
||||
}
|
||||
}
|
||||
|
||||
std::string thread_ctrl::get_name_cached()
|
||||
{
|
||||
auto _this = thread_ctrl::g_tls_this_thread;
|
||||
@@ -3083,6 +3133,8 @@ u64 thread_ctrl::get_tid()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
return GetCurrentThreadId();
|
||||
#elif defined(__linux__)
|
||||
return syscall(SYS_gettid);
|
||||
#else
|
||||
return reinterpret_cast<u64>(pthread_self());
|
||||
#endif
|
||||
|
||||
+27
-16
@@ -201,9 +201,6 @@ class thread_ctrl final
|
||||
// Target cpu core layout
|
||||
static atomic_t<native_core_arrangement> g_native_core_layout;
|
||||
|
||||
// Internal waiting function, may throw. Infinite value is -1.
|
||||
static void _wait_for(u64 usec, bool alert);
|
||||
|
||||
friend class thread_base;
|
||||
|
||||
// Optimized get_name() for logging
|
||||
@@ -263,21 +260,21 @@ public:
|
||||
// Read current state, possibly executing some tasks
|
||||
static thread_state state();
|
||||
|
||||
// Wait once with timeout. May spuriously return false.
|
||||
static inline void wait_for(u64 usec, bool alert = true)
|
||||
{
|
||||
_wait_for(usec, alert);
|
||||
}
|
||||
// Wait once with timeout. Infinite value is -1.
|
||||
static void wait_for(u64 usec, bool alert = true);
|
||||
|
||||
// Waiting with accurate timeout
|
||||
static void wait_for_accurate(u64 usec);
|
||||
|
||||
// Wait.
|
||||
static inline void wait()
|
||||
{
|
||||
_wait_for(-1, true);
|
||||
wait_for(-1, true);
|
||||
}
|
||||
|
||||
// Wait for both thread sync var and provided atomic var
|
||||
template <atomic_wait::op Op = atomic_wait::op::eq, typename T, typename U>
|
||||
static inline void wait_on(T& wait, U old, u64 usec = -1)
|
||||
template <uint Max, typename Func>
|
||||
static inline void wait_on_custom(Func&& setter, u64 usec = -1)
|
||||
{
|
||||
auto _this = g_tls_this_thread;
|
||||
|
||||
@@ -286,13 +283,19 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
atomic_wait::list<3> list{};
|
||||
list.set<0, Op>(wait, old);
|
||||
list.set<1>(_this->m_sync, 0, 4 + 1);
|
||||
list.set<2>(_this->m_taskq, nullptr);
|
||||
atomic_wait::list<Max + 2> list{};
|
||||
list.template set<Max>(_this->m_sync, 0, 4 + 1);
|
||||
list.template set<Max + 1>(_this->m_taskq, nullptr);
|
||||
setter(list);
|
||||
list.wait(atomic_wait_timeout{usec <= 0xffff'ffff'ffff'ffff / 1000 ? usec * 1000 : 0xffff'ffff'ffff'ffff});
|
||||
}
|
||||
|
||||
template <atomic_wait::op Op = atomic_wait::op::eq, typename T, typename U>
|
||||
static inline void wait_on(T& wait, U old, u64 usec = -1)
|
||||
{
|
||||
wait_on_custom<1>([&](atomic_wait::list<3>& list){ list.set<0, Op>(wait, old); }, usec);
|
||||
}
|
||||
|
||||
// Exit.
|
||||
[[noreturn]] static void emergency_exit(std::string_view reason);
|
||||
|
||||
@@ -632,13 +635,21 @@ public:
|
||||
// Join thread by thread_state::finished
|
||||
named_thread& operator=(thread_state s)
|
||||
{
|
||||
bool notify_sync = false;
|
||||
|
||||
if (s >= thread_state::aborting && thread::m_sync.fetch_op([](u64& v){ return !(v & 3) && (v |= 1); }).second)
|
||||
{
|
||||
notify_sync = true;
|
||||
}
|
||||
|
||||
if constexpr (std::is_assignable_v<Context&, thread_state>)
|
||||
{
|
||||
static_cast<Context&>(*this) = s;
|
||||
}
|
||||
|
||||
if (s >= thread_state::aborting && thread::m_sync.fetch_op([](u64& v){ return !(v & 3) && (v |= 1); }).second)
|
||||
if (notify_sync)
|
||||
{
|
||||
// Notify after context abortion has been made so all conditions for wake-up be satisfied by the time of notification
|
||||
thread::m_sync.notify_one(1);
|
||||
}
|
||||
|
||||
|
||||
+10
-11
@@ -1,37 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "util/types.hpp"
|
||||
#include "util/vm.hpp"
|
||||
#include "StrFmt.h"
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
namespace utils
|
||||
{
|
||||
class address_range_vector;
|
||||
|
||||
|
||||
/**
|
||||
* Constexprs
|
||||
* Helpers
|
||||
*/
|
||||
constexpr inline u32 page_start(u32 addr)
|
||||
static inline u32 page_start(u32 addr)
|
||||
{
|
||||
return addr & ~4095u;
|
||||
return addr & ~(c_page_size - 1);
|
||||
}
|
||||
|
||||
constexpr inline u32 next_page(u32 addr)
|
||||
static inline u32 next_page(u32 addr)
|
||||
{
|
||||
return page_start(addr + 4096u);
|
||||
return page_start(addr) + c_page_size;
|
||||
}
|
||||
|
||||
constexpr inline u32 page_end(u32 addr)
|
||||
static inline u32 page_end(u32 addr)
|
||||
{
|
||||
return next_page(addr) - 1;
|
||||
}
|
||||
|
||||
constexpr inline u32 is_page_aligned(u32 addr)
|
||||
static inline u32 is_page_aligned(u32 val)
|
||||
{
|
||||
return page_start(addr) == addr;
|
||||
return (val & (c_page_size - 1)) == 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -186,7 +185,7 @@ namespace utils
|
||||
|
||||
bool is_page_range() const
|
||||
{
|
||||
return (valid() && start % 4096u == 0 && length() % 4096u == 0);
|
||||
return (valid() && is_page_aligned(start) && is_page_aligned(length()));
|
||||
}
|
||||
|
||||
address_range to_page_range() const
|
||||
|
||||
+14
-1
@@ -610,8 +610,21 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
|
||||
|
||||
if (alloc_map)
|
||||
{
|
||||
if ((p.alloc_addr = alloc_map->falloc(alloc_at, alloc_size, nullptr, flags)))
|
||||
if (alloc_map->falloc(alloc_at, alloc_size, nullptr, flags))
|
||||
{
|
||||
if (vm::check_addr(alloc_at, vm::page_1m_size))
|
||||
{
|
||||
p.alloc_addr = alloc_at & -0x100000;
|
||||
}
|
||||
else if (vm::check_addr(alloc_at, vm::page_64k_size))
|
||||
{
|
||||
p.alloc_addr = alloc_at & -0x10000;
|
||||
}
|
||||
else
|
||||
{
|
||||
p.alloc_addr = alloc_at & -0x1000;
|
||||
}
|
||||
|
||||
if (flags & vm::alloc_executable)
|
||||
{
|
||||
ppu_register_range(alloc_at, alloc_size);
|
||||
|
||||
+4
-4
@@ -164,12 +164,12 @@ public:
|
||||
return r;
|
||||
}
|
||||
|
||||
constexpr bool all_of(bs_t arg)
|
||||
constexpr bool all_of(bs_t arg) const
|
||||
{
|
||||
return (m_data & arg.m_data) == arg.m_data;
|
||||
}
|
||||
|
||||
constexpr bool none_of(bs_t arg)
|
||||
constexpr bool none_of(bs_t arg) const
|
||||
{
|
||||
return (m_data & arg.m_data) == 0;
|
||||
}
|
||||
@@ -371,12 +371,12 @@ public:
|
||||
bool bit_test_reset(uint bit) = delete;
|
||||
bool bit_test_invert(uint bit) = delete;
|
||||
|
||||
bool all_of(bs_t arg)
|
||||
bool all_of(bs_t arg) const
|
||||
{
|
||||
return base::load().all_of(arg);
|
||||
}
|
||||
|
||||
bool none_of(bs_t arg)
|
||||
bool none_of(bs_t arg) const
|
||||
{
|
||||
return base::load().none_of(arg);
|
||||
}
|
||||
|
||||
@@ -700,6 +700,12 @@ template<typename T>
|
||||
struct size3_base
|
||||
{
|
||||
T width, height, depth;
|
||||
|
||||
template<typename NT>
|
||||
explicit constexpr operator size3_base<NT>() const
|
||||
{
|
||||
return{ static_cast<NT>(width), static_cast<NT>(height), static_cast<NT>(depth) };
|
||||
}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
|
||||
+13
-1
@@ -3,7 +3,7 @@
|
||||
#include "util/types.hpp"
|
||||
#include "util/atomic.hpp"
|
||||
|
||||
//! Simple sizeless array base for concurrent access. Cannot shrink, only growths automatically.
|
||||
//! Simple unshrinkable array base for concurrent access. Only growths automatically.
|
||||
//! There is no way to know the current size. The smaller index is, the faster it's accessed.
|
||||
//!
|
||||
//! T is the type of elements. Currently, default constructor of T shall be constexpr.
|
||||
@@ -47,6 +47,18 @@ public:
|
||||
// Access recursively
|
||||
return (*m_next)[index - N];
|
||||
}
|
||||
|
||||
u64 size() const
|
||||
{
|
||||
u64 size_n = 0;
|
||||
|
||||
for (auto ptr = this; ptr; ptr = ptr->m_next)
|
||||
{
|
||||
size_n += N;
|
||||
}
|
||||
|
||||
return size_n;
|
||||
}
|
||||
};
|
||||
|
||||
//! Simple lock-free FIFO queue base. Based on lf_array<T, N> itself. Currently uses 32-bit counters.
|
||||
|
||||
+29
-3
@@ -6,14 +6,27 @@ void shared_mutex::imp_lock_shared(u32 val)
|
||||
{
|
||||
ensure(val < c_err); // "shared_mutex underflow"
|
||||
|
||||
// Try to steal the notification bit
|
||||
if (val & c_sig && m_value.compare_exchange(val, val - c_sig + 1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
busy_wait();
|
||||
|
||||
if (try_lock_shared())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const u32 old = m_value;
|
||||
|
||||
if (old & c_sig && m_value.compare_and_swap_test(old, old - c_sig + 1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
busy_wait();
|
||||
}
|
||||
|
||||
// Acquire writer lock and downgrade
|
||||
@@ -75,11 +88,24 @@ void shared_mutex::imp_lock(u32 val)
|
||||
{
|
||||
ensure(val < c_err); // "shared_mutex underflow"
|
||||
|
||||
// Try to steal the notification bit
|
||||
if (val & c_sig && m_value.compare_exchange(val, val - c_sig + c_one))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
busy_wait();
|
||||
|
||||
if (!m_value && try_lock())
|
||||
const u32 old = m_value;
|
||||
|
||||
if (!old && try_lock())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (old & c_sig && m_value.compare_and_swap_test(old, old - c_sig + c_one))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -171,6 +171,11 @@ public:
|
||||
{
|
||||
return m_value.load() < c_one - 1;
|
||||
}
|
||||
|
||||
bool has_waiters() const
|
||||
{
|
||||
return m_value.load() > c_one;
|
||||
}
|
||||
};
|
||||
|
||||
// Simplified shared (reader) lock implementation.
|
||||
|
||||
+151
-78
@@ -1,129 +1,202 @@
|
||||
#include "Utilities/simple_ringbuf.h"
|
||||
|
||||
simple_ringbuf::simple_ringbuf(u32 size)
|
||||
simple_ringbuf::simple_ringbuf(u64 size)
|
||||
{
|
||||
set_buf_size(size);
|
||||
}
|
||||
|
||||
simple_ringbuf::~simple_ringbuf()
|
||||
{
|
||||
rw_ptr.load(); // Sync
|
||||
}
|
||||
|
||||
simple_ringbuf::simple_ringbuf(const simple_ringbuf& other)
|
||||
{
|
||||
ctr_state old = other.rw_ptr.load();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
buf = other.buf;
|
||||
rw_ptr = old;
|
||||
|
||||
const ctr_state current = other.rw_ptr.load();
|
||||
if (old == current)
|
||||
{
|
||||
break;
|
||||
}
|
||||
old = current;
|
||||
}
|
||||
}
|
||||
|
||||
simple_ringbuf& simple_ringbuf::operator=(const simple_ringbuf& other)
|
||||
{
|
||||
if (this == &other) return *this;
|
||||
|
||||
ctr_state old = other.rw_ptr.load();
|
||||
|
||||
for (;;)
|
||||
{
|
||||
buf = other.buf;
|
||||
rw_ptr = old;
|
||||
|
||||
const ctr_state current = other.rw_ptr.load();
|
||||
if (old == current)
|
||||
{
|
||||
break;
|
||||
}
|
||||
old = current;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
simple_ringbuf::simple_ringbuf(simple_ringbuf&& other)
|
||||
{
|
||||
rw_ptr = other.rw_ptr.load();
|
||||
buf_size = other.buf_size;
|
||||
const ctr_state other_rw_ptr = other.rw_ptr.load();
|
||||
buf = std::move(other.buf);
|
||||
initialized = other.initialized.observe();
|
||||
rw_ptr = other_rw_ptr;
|
||||
|
||||
other.buf_size = 0;
|
||||
other.rw_ptr = 0;
|
||||
other.initialized = false;
|
||||
other.rw_ptr.store({});
|
||||
}
|
||||
|
||||
simple_ringbuf& simple_ringbuf::operator=(simple_ringbuf&& other)
|
||||
{
|
||||
if (this == &other) return *this;
|
||||
|
||||
rw_ptr = other.rw_ptr.load();
|
||||
buf_size = other.buf_size;
|
||||
const ctr_state other_rw_ptr = other.rw_ptr.load();
|
||||
buf = std::move(other.buf);
|
||||
initialized = other.initialized.observe();
|
||||
rw_ptr = other_rw_ptr;
|
||||
|
||||
other.buf_size = 0;
|
||||
other.rw_ptr = 0;
|
||||
other.initialized = false;
|
||||
other.rw_ptr.store({});
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
u32 simple_ringbuf::get_free_size() const
|
||||
u64 simple_ringbuf::get_free_size() const
|
||||
{
|
||||
const u64 _rw_ptr = rw_ptr;
|
||||
const u32 rd = static_cast<u32>(_rw_ptr);
|
||||
const u32 wr = static_cast<u32>(_rw_ptr >> 32);
|
||||
|
||||
return wr >= rd ? buf_size - 1 - (wr - rd) : rd - wr - 1U;
|
||||
return get_free_size(rw_ptr);
|
||||
}
|
||||
|
||||
u32 simple_ringbuf::get_used_size() const
|
||||
u64 simple_ringbuf::get_used_size() const
|
||||
{
|
||||
return buf_size - 1 - get_free_size();
|
||||
return get_used_size(rw_ptr);
|
||||
}
|
||||
|
||||
u32 simple_ringbuf::get_total_size() const
|
||||
u64 simple_ringbuf::get_total_size() const
|
||||
{
|
||||
return buf_size;
|
||||
rw_ptr.load(); // Sync
|
||||
return buf.size() - 1;
|
||||
}
|
||||
|
||||
void simple_ringbuf::set_buf_size(u32 size)
|
||||
u64 simple_ringbuf::get_free_size(ctr_state val) const
|
||||
{
|
||||
ensure(size);
|
||||
const u64 buf_size = buf.size();
|
||||
const u64 rd = val.read_ptr % buf_size;
|
||||
const u64 wr = val.write_ptr % buf_size;
|
||||
|
||||
this->buf_size = size + 1;
|
||||
buf = std::make_unique<u8[]>(this->buf_size);
|
||||
flush();
|
||||
initialized = true;
|
||||
return (wr >= rd ? buf_size + rd - wr : rd - wr) - 1;
|
||||
}
|
||||
|
||||
void simple_ringbuf::flush()
|
||||
u64 simple_ringbuf::get_used_size(ctr_state val) const
|
||||
{
|
||||
rw_ptr.atomic_op([&](u64 &val)
|
||||
const u64 buf_size = buf.size();
|
||||
const u64 rd = val.read_ptr % buf_size;
|
||||
const u64 wr = val.write_ptr % buf_size;
|
||||
|
||||
return wr >= rd ? wr - rd : buf_size + wr - rd;
|
||||
}
|
||||
|
||||
void simple_ringbuf::set_buf_size(u64 size)
|
||||
{
|
||||
ensure(size != umax);
|
||||
|
||||
buf.resize(size + 1);
|
||||
rw_ptr.store({});
|
||||
}
|
||||
|
||||
void simple_ringbuf::writer_flush(u64 cnt)
|
||||
{
|
||||
rw_ptr.atomic_op([&](ctr_state& val)
|
||||
{
|
||||
val = static_cast<u32>(val >> 32) | (val & 0xFFFFFFFF'00000000);
|
||||
const u64 used = get_used_size(val);
|
||||
if (used == 0) return;
|
||||
|
||||
val.write_ptr += buf.size() - std::min<u64>(used, cnt);
|
||||
});
|
||||
}
|
||||
|
||||
u32 simple_ringbuf::push(const void *data, u32 size)
|
||||
void simple_ringbuf::reader_flush(u64 cnt)
|
||||
{
|
||||
ensure(data != nullptr && initialized.observe());
|
||||
|
||||
const u32 old = static_cast<u32>(rw_ptr.load() >> 32);
|
||||
const u32 to_push = std::min(size, get_free_size());
|
||||
auto b_data = static_cast<const u8*>(data);
|
||||
|
||||
if (!to_push) return 0;
|
||||
|
||||
if (old + to_push > buf_size)
|
||||
rw_ptr.atomic_op([&](ctr_state& val)
|
||||
{
|
||||
const auto first_write_sz = buf_size - old;
|
||||
memcpy(&buf[old], b_data, first_write_sz);
|
||||
memcpy(&buf[0], b_data + first_write_sz, to_push - first_write_sz);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(&buf[old], b_data, to_push);
|
||||
}
|
||||
|
||||
rw_ptr.atomic_op([&](u64 &val)
|
||||
{
|
||||
val = static_cast<u64>((old + to_push) % buf_size) << 32 | static_cast<u32>(val);
|
||||
val.read_ptr += std::min(get_used_size(val), cnt);
|
||||
});
|
||||
|
||||
return to_push;
|
||||
}
|
||||
|
||||
u32 simple_ringbuf::pop(void *data, u32 size)
|
||||
u64 simple_ringbuf::push(const void* data, u64 size, bool force)
|
||||
{
|
||||
ensure(data != nullptr && initialized.observe());
|
||||
ensure(data != nullptr);
|
||||
|
||||
const u32 old = static_cast<u32>(rw_ptr.load());
|
||||
const u32 to_pop = std::min(size, get_used_size());
|
||||
u8 *b_data = static_cast<u8*>(data);
|
||||
|
||||
if (!to_pop) return 0;
|
||||
|
||||
if (old + to_pop > buf_size)
|
||||
return rw_ptr.atomic_op([&](ctr_state& val) -> u64
|
||||
{
|
||||
const auto first_read_sz = buf_size - old;
|
||||
memcpy(b_data, &buf[old], first_read_sz);
|
||||
memcpy(b_data + first_read_sz, &buf[0], to_pop - first_read_sz);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(b_data, &buf[old], to_pop);
|
||||
}
|
||||
const u64 buf_size = buf.size();
|
||||
const u64 old = val.write_ptr % buf_size;
|
||||
const u64 free_size = get_free_size(val);
|
||||
const u64 to_push = std::min(size, free_size);
|
||||
const auto b_data = static_cast<const u8*>(data);
|
||||
|
||||
rw_ptr.atomic_op([&](u64 &val)
|
||||
{
|
||||
val = (old + to_pop) % buf_size | (val & 0xFFFFFFFF'00000000);
|
||||
if (!to_push || (!force && free_size < size))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (old + to_push > buf_size)
|
||||
{
|
||||
const auto first_write_sz = buf_size - old;
|
||||
memcpy(&buf[old], b_data, first_write_sz);
|
||||
memcpy(&buf[0], b_data + first_write_sz, to_push - first_write_sz);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(&buf[old], b_data, to_push);
|
||||
}
|
||||
|
||||
val.write_ptr += to_push;
|
||||
|
||||
return to_push;
|
||||
});
|
||||
}
|
||||
|
||||
u64 simple_ringbuf::pop(void* data, u64 size, bool force)
|
||||
{
|
||||
ensure(data != nullptr);
|
||||
|
||||
return rw_ptr.atomic_op([&](ctr_state& val) -> u64
|
||||
{
|
||||
const u64 buf_size = buf.size();
|
||||
const u64 old = val.read_ptr % buf_size;
|
||||
const u64 used_size = get_used_size(val);
|
||||
const u64 to_pop = std::min(size, used_size);
|
||||
const auto b_data = static_cast<u8*>(data);
|
||||
|
||||
if (!to_pop || (!force && used_size < size))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (old + to_pop > buf_size)
|
||||
{
|
||||
const auto first_read_sz = buf_size - old;
|
||||
memcpy(b_data, &buf[old], first_read_sz);
|
||||
memcpy(b_data + first_read_sz, &buf[0], to_pop - first_read_sz);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(b_data, &buf[old], to_pop);
|
||||
}
|
||||
|
||||
val.read_ptr += to_pop;
|
||||
|
||||
return to_pop;
|
||||
});
|
||||
|
||||
return to_pop;
|
||||
}
|
||||
|
||||
+39
-23
@@ -2,37 +2,53 @@
|
||||
|
||||
#include "util/types.hpp"
|
||||
#include "util/atomic.hpp"
|
||||
#include <vector>
|
||||
|
||||
// Single reader/writer simple ringbuffer.
|
||||
// Counters are 32-bit.
|
||||
class simple_ringbuf
|
||||
{
|
||||
private:
|
||||
|
||||
atomic_t<u64> rw_ptr = 0;
|
||||
u32 buf_size = 0;
|
||||
std::unique_ptr<u8[]> buf{};
|
||||
atomic_t<bool> initialized = false;
|
||||
|
||||
public:
|
||||
|
||||
simple_ringbuf() {};
|
||||
simple_ringbuf(u32 size);
|
||||
simple_ringbuf(u64 size = 0);
|
||||
virtual ~simple_ringbuf();
|
||||
|
||||
simple_ringbuf(const simple_ringbuf&) = delete;
|
||||
simple_ringbuf& operator=(const simple_ringbuf&) = delete;
|
||||
|
||||
simple_ringbuf(simple_ringbuf&& other);
|
||||
simple_ringbuf& operator=(simple_ringbuf&& other);
|
||||
|
||||
u32 get_free_size() const;
|
||||
u32 get_used_size() const;
|
||||
u32 get_total_size() const;
|
||||
simple_ringbuf(const simple_ringbuf& other);
|
||||
simple_ringbuf& operator=(const simple_ringbuf& other);
|
||||
|
||||
// Thread unsafe functions.
|
||||
void set_buf_size(u32 size);
|
||||
void flush(); // Could be safely called from reader.
|
||||
simple_ringbuf(simple_ringbuf&& other);
|
||||
simple_ringbuf& operator=(simple_ringbuf&& other);
|
||||
void set_buf_size(u64 size);
|
||||
|
||||
u32 push(const void *data, u32 size);
|
||||
u32 pop(void *data, u32 size);
|
||||
// Helper functions
|
||||
u64 get_free_size() const;
|
||||
u64 get_used_size() const;
|
||||
u64 get_total_size() const;
|
||||
|
||||
// Writer functions
|
||||
u64 push(const void* data, u64 size, bool force = false);
|
||||
void writer_flush(u64 cnt = umax);
|
||||
|
||||
// Reader functions
|
||||
u64 pop(void* data, u64 size, bool force = false);
|
||||
void reader_flush(u64 cnt = umax);
|
||||
|
||||
private:
|
||||
|
||||
struct ctr_state
|
||||
{
|
||||
alignas(sizeof(u64) * 2)
|
||||
u64 read_ptr = 0;
|
||||
u64 write_ptr = 0;
|
||||
|
||||
auto operator<=>(const ctr_state& other) const = default;
|
||||
};
|
||||
|
||||
static_assert(sizeof(ctr_state) == sizeof(u64) * 2);
|
||||
|
||||
atomic_t<ctr_state> rw_ptr{};
|
||||
std::vector<u8> buf{};
|
||||
|
||||
u64 get_free_size(ctr_state val) const;
|
||||
u64 get_used_size(ctr_state val) const;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
#include "stdafx.h"
|
||||
#include "stack_trace.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <Windows.h>
|
||||
#define DBGHELP_TRANSLATE_TCHAR
|
||||
#include <DbgHelp.h>
|
||||
#include <codecvt>
|
||||
#else
|
||||
#include <execinfo.h>
|
||||
#endif
|
||||
|
||||
namespace utils
|
||||
{
|
||||
#ifdef _WIN32
|
||||
std::string wstr_to_utf8(LPWSTR data, int str_len)
|
||||
{
|
||||
if (!str_len)
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
// Calculate size
|
||||
const auto length = WideCharToMultiByte(CP_UTF8, 0, data, str_len, NULL, 0, NULL, NULL);
|
||||
|
||||
// Convert
|
||||
std::vector<char> out(length + 1, 0);
|
||||
WideCharToMultiByte(CP_UTF8, 0, data, str_len, out.data(), length, NULL, NULL);
|
||||
return out.data();
|
||||
}
|
||||
|
||||
std::vector<void*> get_backtrace(int max_depth)
|
||||
{
|
||||
std::vector<void*> result = {};
|
||||
|
||||
const auto hProcess = ::GetCurrentProcess();
|
||||
const auto hThread = ::GetCurrentThread();
|
||||
|
||||
CONTEXT context{};
|
||||
RtlCaptureContext(&context);
|
||||
|
||||
STACKFRAME64 stack = {};
|
||||
stack.AddrPC.Offset = context.Rip;
|
||||
stack.AddrPC.Mode = AddrModeFlat;
|
||||
stack.AddrStack.Offset = context.Rsp;
|
||||
stack.AddrStack.Mode = AddrModeFlat;
|
||||
stack.AddrFrame.Offset = context.Rbp;
|
||||
stack.AddrFrame.Mode = AddrModeFlat;
|
||||
|
||||
while (max_depth--)
|
||||
{
|
||||
if (!StackWalk64(
|
||||
IMAGE_FILE_MACHINE_AMD64,
|
||||
hProcess,
|
||||
hThread,
|
||||
&stack,
|
||||
&context,
|
||||
NULL,
|
||||
SymFunctionTableAccess64,
|
||||
SymGetModuleBase64,
|
||||
NULL))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
result.push_back(reinterpret_cast<void*>(stack.AddrPC.Offset));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<std::string> get_backtrace_symbols(const std::vector<void*>& stack)
|
||||
{
|
||||
std::vector<std::string> result = {};
|
||||
std::vector<u8> symbol_buf(sizeof(SYMBOL_INFO) + sizeof(TCHAR) * 256);
|
||||
|
||||
const auto hProcess = ::GetCurrentProcess();
|
||||
|
||||
auto sym = reinterpret_cast<SYMBOL_INFO*>(symbol_buf.data());
|
||||
sym->SizeOfStruct = sizeof(SYMBOL_INFO);
|
||||
sym->MaxNameLen = 256;
|
||||
|
||||
IMAGEHLP_LINEW64 line_info{};
|
||||
line_info.SizeOfStruct = sizeof(IMAGEHLP_LINEW64);
|
||||
|
||||
SymInitialize(hProcess, NULL, TRUE);
|
||||
SymSetOptions(SYMOPT_LOAD_LINES);
|
||||
|
||||
for (const auto& pointer : stack)
|
||||
{
|
||||
DWORD64 unused;
|
||||
SymFromAddr(hProcess, reinterpret_cast<DWORD64>(pointer), &unused, sym);
|
||||
|
||||
if (sym->NameLen)
|
||||
{
|
||||
const auto function_name = wstr_to_utf8(sym->Name, static_cast<int>(sym->NameLen));
|
||||
|
||||
// Attempt to get file and line information if available
|
||||
DWORD unused2;
|
||||
if (SymGetLineFromAddrW(hProcess, reinterpret_cast<DWORD64>(pointer), &unused2, &line_info))
|
||||
{
|
||||
const auto full_path = fmt::format("%s:%u %s", wstr_to_utf8(line_info.FileName, -1), line_info.LineNumber, function_name);
|
||||
result.push_back(full_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
result.push_back(function_name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result.push_back(fmt::format("rpcs3@0xp", pointer));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
std::vector<void*> get_backtrace(int max_depth)
|
||||
{
|
||||
std::vector<void*> result(max_depth);
|
||||
int depth = backtrace(result.data(), max_depth);
|
||||
|
||||
result.resize(depth);
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<std::string> get_backtrace_symbols(const std::vector<void*>& stack)
|
||||
{
|
||||
std::vector<std::string> result;
|
||||
result.reserve(stack.size());
|
||||
|
||||
const auto symbols = backtrace_symbols(stack.data(), static_cast<int>(stack.size()));
|
||||
for (usz i = 0; i < stack.size(); ++i)
|
||||
{
|
||||
result.push_back(symbols[i]);
|
||||
}
|
||||
|
||||
free(symbols);
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
#include <util/types.hpp>
|
||||
#include <util/logs.hpp>
|
||||
|
||||
namespace utils
|
||||
{
|
||||
std::vector<void*> get_backtrace(int max_depth = 255);
|
||||
std::vector<std::string> get_backtrace_symbols(const std::vector<void*>& stack);
|
||||
|
||||
FORCE_INLINE void print_trace(logs::channel& logger, int max_depth = 255)
|
||||
{
|
||||
const auto trace = get_backtrace(max_depth);
|
||||
const auto lines = get_backtrace_symbols(trace);
|
||||
|
||||
for (const auto& line : lines)
|
||||
{
|
||||
logger.error("%s", line);
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -99,13 +99,13 @@ inline int futex(volatile void* uaddr, int futex_op, uint val, const timespec* t
|
||||
|
||||
if (!timeout)
|
||||
{
|
||||
rec.cv.wait(lock, [&] { return !rec.mask; });
|
||||
rec.cv.wait(lock, FN(!rec.mask));
|
||||
}
|
||||
else if (futex_op == FUTEX_WAIT)
|
||||
{
|
||||
const auto nsec = std::chrono::nanoseconds(timeout->tv_nsec + timeout->tv_sec * 1000000000ull);
|
||||
|
||||
if (!rec.cv.wait_for(lock, nsec, [&] { return !rec.mask; }))
|
||||
if (!rec.cv.wait_for(lock, nsec, FN(!rec.mask)))
|
||||
{
|
||||
res = -1;
|
||||
errno = ETIMEDOUT;
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
#include "util/types.hpp"
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
|
||||
// Thread-safe object pool with garbage collection
|
||||
class universal_pool
|
||||
{
|
||||
public:
|
||||
|
||||
universal_pool(u32 gc_interval = 10000) : gc_interval(gc_interval)
|
||||
{
|
||||
}
|
||||
|
||||
~universal_pool()
|
||||
{
|
||||
std::lock_guard lock(mutex);
|
||||
storage.clear();
|
||||
}
|
||||
|
||||
universal_pool(const universal_pool&) = delete;
|
||||
universal_pool& operator=(const universal_pool&) = delete;
|
||||
|
||||
void set_gc_interval(u32 new_val)
|
||||
{
|
||||
gc_interval = new_val;
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
requires (std::invocable<F&> && std::is_same_v<std::invoke_result_t<F&>, std::shared_ptr<void>>)
|
||||
void add_op(F func)
|
||||
{
|
||||
std::lock_guard lock(mutex);
|
||||
if (std::shared_ptr<void> new_val = std::invoke(func); new_val)
|
||||
{
|
||||
storage.push_back(new_val);
|
||||
}
|
||||
delete_unused();
|
||||
}
|
||||
|
||||
void force_gc()
|
||||
{
|
||||
std::lock_guard lock(mutex);
|
||||
delete_unused();
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void delete_unused()
|
||||
{
|
||||
const u32 gc_int = gc_interval.observe();
|
||||
|
||||
if (u64 crnt_time = get_system_time(); gc_int == 0 || crnt_time > gc_last_time + gc_int)
|
||||
{
|
||||
gc_last_time = crnt_time;
|
||||
storage.erase
|
||||
(
|
||||
std::remove_if(storage.begin(), storage.end(), [](auto& obj) { return obj.use_count() <= 1; }),
|
||||
storage.end()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
shared_mutex mutex{};
|
||||
std::vector<std::shared_ptr<void>> storage{};
|
||||
u64 gc_last_time = get_system_time();
|
||||
atomic_t<u32> gc_interval = 0;
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
class transactional_storage
|
||||
{
|
||||
public:
|
||||
|
||||
transactional_storage(std::shared_ptr<universal_pool> pool, std::shared_ptr<T> obj = std::make_shared<T>())
|
||||
{
|
||||
ensure(pool && obj);
|
||||
|
||||
this->pool = pool;
|
||||
add(obj);
|
||||
}
|
||||
|
||||
transactional_storage(const transactional_storage&) = delete;
|
||||
transactional_storage& operator=(const transactional_storage&) = delete;
|
||||
|
||||
transactional_storage(transactional_storage&& other)
|
||||
{
|
||||
pool = std::move(other.pool);
|
||||
|
||||
std::unique_lock lock_other{other.current_mutex};
|
||||
const std::shared_ptr<T> other_current = other.current;
|
||||
other.current = nullptr;
|
||||
lock_other.unlock();
|
||||
|
||||
std::lock_guard lock{current_mutex};
|
||||
current = other_current;
|
||||
}
|
||||
|
||||
transactional_storage& operator=(transactional_storage&& other)
|
||||
{
|
||||
if (this == &other) return *this;
|
||||
|
||||
pool = std::move(other.pool);
|
||||
|
||||
std::unique_lock lock_other{other.current_mutex};
|
||||
const std::shared_ptr<T> other_current = other.current;
|
||||
other.current = nullptr;
|
||||
lock_other.unlock();
|
||||
|
||||
std::lock_guard lock{current_mutex};
|
||||
current = other_current;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
std::shared_ptr<const T> get_current()
|
||||
{
|
||||
reader_lock lock(current_mutex);
|
||||
return current;
|
||||
}
|
||||
|
||||
void add(std::shared_ptr<T> obj)
|
||||
{
|
||||
if (!obj)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
pool->add_op([&]() -> std::shared_ptr<void>
|
||||
{
|
||||
{
|
||||
std::lock_guard lock{current_mutex};
|
||||
current = obj;
|
||||
}
|
||||
return std::move(obj);
|
||||
});
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
requires (std::invocable<F&> && std::is_same_v<std::invoke_result_t<F&>, std::shared_ptr<T>>)
|
||||
void add_op(F func)
|
||||
{
|
||||
pool->add_op([&]() -> std::shared_ptr<void>
|
||||
{
|
||||
std::shared_ptr<T> obj = std::invoke(func);
|
||||
if (obj)
|
||||
{
|
||||
std::lock_guard lock{current_mutex};
|
||||
current = obj;
|
||||
}
|
||||
return obj;
|
||||
});
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
shared_mutex current_mutex{};
|
||||
std::shared_ptr<T> current{};
|
||||
std::shared_ptr<universal_pool> pool{};
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
Nekotekina Theme for RPCS3 by GooseWing
|
||||
v1.0
|
||||
v1.1
|
||||
|
||||
Based on YoRHa Theme for RPCS3
|
||||
by Ani @ https://github.com/AniLeo
|
||||
@@ -60,21 +60,21 @@ QWidget {
|
||||
}
|
||||
|
||||
|
||||
/* LLE: Style QListWidget checkboxes (QListWidget) */
|
||||
#lleList::indicator {
|
||||
/* HLE/LLE: Style QListWidget checkboxes (QListWidget) */
|
||||
QListWidget::indicator, QTreeWidget::indicator {
|
||||
border: 0.05em solid #4d4940;
|
||||
}
|
||||
#lleList::indicator::unchecked {
|
||||
background-color: #b3ac98;
|
||||
QListWidget::indicator::unchecked, QTreeWidget::indicator::unchecked {
|
||||
background-color: #705722; /* Dark */
|
||||
}
|
||||
#lleList::indicator::checked {
|
||||
background-color: #4d4940;
|
||||
QListWidget::indicator::checked, QTreeWidget::indicator::checked {
|
||||
background-color: #ffd785; /* Light */
|
||||
}
|
||||
#lleList::indicator::disabled {
|
||||
background-color: #828790;
|
||||
QListWidget::indicator::disabled, QTreeWidget::indicator::disabled {
|
||||
background-color: #828790; /* Gray */
|
||||
}
|
||||
#lleList::item::selected {
|
||||
color: #4d4940;
|
||||
QListWidget::item::selected, QTreeWidget::item::selected {
|
||||
background-color: #5c471c;
|
||||
}
|
||||
|
||||
|
||||
@@ -85,10 +85,9 @@ QToolTip {
|
||||
border: 0.10em solid #705722;
|
||||
}
|
||||
|
||||
|
||||
/* CG Disasm and Trophy Manager: background-image doesn't work, use static color */
|
||||
QWidget#cg_disasm, QWidget#trophy_manager {
|
||||
background: #6e695c;
|
||||
/* CG Disasm and Trophy Manager */
|
||||
QWidget#trophy_manager, QWidget#cg_disasm, QWidget#log_viewer {
|
||||
border-image: url("GuiConfigs/kot-bg.jpg");
|
||||
}
|
||||
|
||||
|
||||
@@ -111,32 +110,20 @@ QHeaderView::section {
|
||||
}
|
||||
|
||||
|
||||
/* All other Tabs */
|
||||
|
||||
/* All Tabs */
|
||||
QTabWidget::tab-bar {
|
||||
alignment: center; /* Centel all tabs */
|
||||
}
|
||||
/* Move tabs on log viewer back to the left side */
|
||||
QTabWidget#tab_widget_log::tab-bar {
|
||||
alignment: left;
|
||||
}
|
||||
QTabBar {
|
||||
border-bottom: 0.05em solid #ffd785;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
QTabBar::tab {
|
||||
background: transparent;
|
||||
padding-left: 0.50em;
|
||||
padding-right: 0.50em;
|
||||
padding-top: 0.25em;
|
||||
padding-bottom: 0.25em;
|
||||
margin-right: 0.25em;
|
||||
}
|
||||
QTabBar::tab::selected {
|
||||
background: #705722;
|
||||
color: #ffd785;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
|
||||
/* Settings Dialog: Tabs */
|
||||
QTabBar#tab_bar_settings {
|
||||
border-bottom: 0.05em solid #705722;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
QTabBar::tab#tab_bar_settings {
|
||||
background: transparent;
|
||||
width: 5.20em;
|
||||
padding-left: 0.50em;
|
||||
@@ -147,19 +134,25 @@ QTabBar::tab#tab_bar_settings {
|
||||
font-size: 10.5pt;
|
||||
font-weight: 550;
|
||||
}
|
||||
QTabBar::tab:last#tab_bar_settings {
|
||||
QTabBar::tab:last {
|
||||
margin-right: 0em;
|
||||
}
|
||||
QTabBar::tab:!selected:hover#tab_bar_settings {
|
||||
background: transparent;
|
||||
color: #705722;
|
||||
}
|
||||
QTabBar::tab::selected#tab_bar_settings {
|
||||
QTabBar::tab::selected {
|
||||
background: #bfa163;
|
||||
color: #705722;
|
||||
border-bottom-style: solid;
|
||||
margin-top: 0.15em;
|
||||
border-top-left-radius: 0.3em;
|
||||
border-top-right-radius: 0.3em;
|
||||
}
|
||||
/* Fix the tabs in VFS being cropped */
|
||||
#vfs_dialog QTabBar::tab {
|
||||
width: 5.50em;
|
||||
}
|
||||
/* The first tab is wider than others */
|
||||
#vfs_dialog QTabBar::tab:first {
|
||||
width: 7.45em;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Checkboxes */
|
||||
@@ -254,6 +247,9 @@ QSpinBox, QDoubleSpinBox {
|
||||
border-radius: 0.10em;
|
||||
color: #ffd785;
|
||||
}
|
||||
QSpinBox::disabled, QDoubleSpinBox::disabled {
|
||||
background-color: #828790;
|
||||
}
|
||||
|
||||
|
||||
/* Styles Sliders */
|
||||
@@ -274,8 +270,16 @@ QSlider#sizeSlider::groove:horizontal {
|
||||
}
|
||||
|
||||
/* Log and Debugger borders */
|
||||
QTextEdit {
|
||||
border: 0.05em solid #4d4940;
|
||||
QTextEdit, QPlainTextEdit {
|
||||
background: rgba(52, 49, 40, 0.9);
|
||||
color: #ffd785;
|
||||
font-family: none;
|
||||
font-size: 8.50pt;
|
||||
}
|
||||
|
||||
#debugger QListWidget, #debugger QTextEdit {
|
||||
border: 0.05em solid #ffd785;
|
||||
background: rgba(52, 49, 40, 0.9);
|
||||
}
|
||||
|
||||
|
||||
@@ -298,6 +302,19 @@ QDockWidget::close-button, QDockWidget::float-button {
|
||||
}
|
||||
|
||||
|
||||
/* Calendar fixes */
|
||||
QDateTimeEdit, QDateTimeEdit::drop-down {
|
||||
background: transparent;
|
||||
border: 0.05em solid #ffd785;
|
||||
border-radius: 0.10em;
|
||||
color: #ffd785;
|
||||
}
|
||||
QCalendarWidget QWidget{
|
||||
background-color: #bfa163;
|
||||
color: #4d4940;
|
||||
}
|
||||
|
||||
|
||||
/* Disable ugly borders */
|
||||
QTabWidget::pane {
|
||||
border: 0em solid #4d4940;
|
||||
@@ -353,9 +370,9 @@ QLabel#l_controller {
|
||||
/* Game Grid Font */
|
||||
QTableWidget#game_grid {
|
||||
font-weight: 600;
|
||||
color: #4d4940;
|
||||
color: #ffd785;
|
||||
text-transform: uppercase;
|
||||
selection-color: #aea993;
|
||||
selection-color: #ffd785;
|
||||
}
|
||||
QTableWidget#game_grid::item:selected:active {
|
||||
selection-background-color: #4d4940;
|
||||
@@ -374,7 +391,7 @@ QLabel#color_button {
|
||||
/* Search bar on main Toolbar */
|
||||
QLineEdit#mw_searchbar {
|
||||
margin-left: 0.7em;
|
||||
color: #4d4940;
|
||||
color: #ffd785;
|
||||
font-size: 10.25pt;
|
||||
}
|
||||
|
||||
@@ -397,7 +414,7 @@ QLabel#gamelist_icon_background_color {
|
||||
|
||||
/* Set Windows Taskbar Thumbnail colors */
|
||||
QLabel#thumbnail_icon_color {
|
||||
color: #4d4940;
|
||||
color: #ffd785;
|
||||
}
|
||||
|
||||
|
||||
@@ -437,13 +454,22 @@ QLabel#log_stack {
|
||||
|
||||
/* Memory Viewer */
|
||||
QLabel#memory_viewer_address_panel {
|
||||
color: #0000ff; /* Font Color: Blue */
|
||||
color: #ffd785; /* Font Color: Light */
|
||||
border: 0.05em solid #ffd785;
|
||||
background: rgba(52, 49, 40, 0.9);
|
||||
font-family: none;
|
||||
}
|
||||
QLabel#memory_viewer_hex_panel {
|
||||
color: #4d4940; /* Font Color: Grey */
|
||||
color: #bfa163; /* Font Color: Grey */
|
||||
border: 0.05em solid #ffd785;
|
||||
background: rgba(52, 49, 40, 0.9);
|
||||
font-family: none;
|
||||
}
|
||||
QLabel#memory_viewer_ascii_panel {
|
||||
color: #4d4940; /* Font Color: Grey */
|
||||
color: #bfa163; /* Font Color: Grey */
|
||||
border: 0.05em solid #ffd785;
|
||||
background: rgba(52, 49, 40, 0.9);
|
||||
font-family: none;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ YoRHa Theme for RPCS3
|
||||
by Ani @ https://github.com/AniLeo
|
||||
r1 (2018.02.27)
|
||||
r2 (2021.08.28)
|
||||
r3 (2022.08.20)
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -26,7 +27,7 @@ aea993
|
||||
|
||||
/* Every widget */
|
||||
QWidget {
|
||||
font-family: SCE-PS3 Rodin LATIN;
|
||||
font-family: "SCE-PS3 Rodin LATIN";
|
||||
font-size: 9.00pt;
|
||||
|
||||
color: #292929;
|
||||
@@ -98,6 +99,9 @@ QToolTip {
|
||||
}
|
||||
|
||||
/* Table headers */
|
||||
QHeaderView {
|
||||
color: #b3ac98;
|
||||
}
|
||||
QHeaderView::section {
|
||||
text-transform: uppercase;
|
||||
background: #4d4940;
|
||||
@@ -109,22 +113,32 @@ QHeaderView::section {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* All other Tabs */
|
||||
/* All Tabs */
|
||||
QTabBar {
|
||||
border-bottom: 0.05em solid #4d4940;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
QTabBar::tab {
|
||||
background: transparent;
|
||||
width: 4.80em;
|
||||
padding-left: 0.50em;
|
||||
padding-right: 0.50em;
|
||||
padding-top: 0.25em;
|
||||
padding-bottom: 0.25em;
|
||||
padding-top: 0.65em;
|
||||
padding-bottom: 0.65em;
|
||||
margin-right: 0.25em;
|
||||
font-size: 10.5pt;
|
||||
font-weight: 550;
|
||||
}
|
||||
QTabBar::tab:last {
|
||||
margin-right: 0em;
|
||||
}
|
||||
QTabBar::tab:!selected:hover {
|
||||
background: transparent;
|
||||
color: #4d4940;
|
||||
}
|
||||
QTabBar::tab::selected {
|
||||
background: #4d4940;
|
||||
color: #aea993;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
|
||||
/* Checkboxes */
|
||||
@@ -153,29 +167,35 @@ QCheckBox::indicator::disabled, QRadioButton::indicator::disabled {
|
||||
background-color: #828790; /* Gray */
|
||||
}
|
||||
|
||||
/* Combo Boxes */
|
||||
QComboBox {
|
||||
/* Combo Boxes, Datetime dropdown */
|
||||
QComboBox, QDateTimeEdit, QLineEdit {
|
||||
background: transparent;
|
||||
color: #4d4940;
|
||||
border: 0.05em solid #1e1e1e;
|
||||
border-radius: 0.15em;
|
||||
padding-bottom: 0.2em;
|
||||
padding-left: 0.4em;
|
||||
padding-top: 0.1em;
|
||||
padding-bottom: 0.1em;
|
||||
}
|
||||
QComboBox QAbstractItemView {
|
||||
background: #b3ac98;
|
||||
}
|
||||
QComboBox::disabled {
|
||||
QComboBox::disabled, QDateTimeEdit::disabled, QLineEdit::disabled {
|
||||
background: #828790;
|
||||
color: #4d4940;
|
||||
}
|
||||
/* Text boxes need less left padding than combo boxes */
|
||||
QComboBox {
|
||||
padding-left: 0.4em;
|
||||
}
|
||||
QLineEdit {
|
||||
padding-left: 0.2em;
|
||||
}
|
||||
|
||||
/* Group Boxes (Settings Dialog) */
|
||||
QGroupBox {
|
||||
margin-top: 1em;
|
||||
border: 0.05em solid #4d4940;
|
||||
text-transform: uppercase;
|
||||
font-size: 9.00pt;
|
||||
}
|
||||
QGroupBox::title {
|
||||
subcontrol-origin: margin;
|
||||
@@ -236,6 +256,10 @@ QDockWidget::close-button, QDockWidget::float-button {
|
||||
QTabWidget::pane {
|
||||
border: 0em solid #4d4940;
|
||||
}
|
||||
/* Center tabs */
|
||||
QTabWidget::tab-bar {
|
||||
alignment: center;
|
||||
}
|
||||
|
||||
/* Top menu bar */
|
||||
QMenuBar {
|
||||
@@ -284,6 +308,12 @@ QToolButton::hover {
|
||||
background-color: #b3ac98;
|
||||
}
|
||||
|
||||
/* Calendar widget */
|
||||
QCalendarWidget QWidget{
|
||||
background: #b3ac98;
|
||||
color: #4d4940;
|
||||
}
|
||||
|
||||
|
||||
/*** RPCS3 Specifics ***/
|
||||
|
||||
@@ -303,40 +333,24 @@ QWidget#trophy_manager, QWidget#cg_disasm, QWidget#log_viewer, QMainWindow#main_
|
||||
border: 0.05em solid #4d4940;
|
||||
color: #292929;
|
||||
font-family: none;
|
||||
font-size: 9.50pt;
|
||||
font-size: 9.5pt;
|
||||
}
|
||||
|
||||
/* Pad Settings, Emulator Settings Dialogs: Tabs */
|
||||
#pad_settings_dialog QTabWidget::tab-bar {
|
||||
alignment: center;
|
||||
/* Align the log widget tabs to the left */
|
||||
QTabWidget#tab_widget_log::tab-bar {
|
||||
alignment: left;
|
||||
}
|
||||
QTabBar#tab_bar_settings, #pad_settings_dialog QTabBar {
|
||||
border-bottom: 0.05em solid #4d4940;
|
||||
text-transform: uppercase;
|
||||
|
||||
/* Restore log section QTabBar to small sizes */
|
||||
QTabBar#tab_bar_log {
|
||||
border-bottom: 0;
|
||||
}
|
||||
QTabBar::tab#tab_bar_settings, #pad_settings_dialog QTabBar::tab {
|
||||
background: transparent;
|
||||
width: 5.20em;
|
||||
padding-left: 0.50em;
|
||||
padding-right: 0.50em;
|
||||
padding-top: 0.65em;
|
||||
padding-bottom: 0.65em;
|
||||
margin-right: 0.25em;
|
||||
font-size: 10.5pt;
|
||||
font-weight: 550;
|
||||
}
|
||||
QTabBar::tab:last#tab_bar_settings, #pad_settings_dialog QTabBar::tab:last {
|
||||
margin-right: 0em;
|
||||
}
|
||||
QTabBar::tab:!selected:hover#tab_bar_settings, #pad_settings_dialog QTabBar::tab:!selected:hover {
|
||||
background: transparent;
|
||||
color: #4d4940;
|
||||
}
|
||||
QTabBar::tab::selected#tab_bar_settings, #pad_settings_dialog QTabBar::tab::selected {
|
||||
background: #4d4940;
|
||||
color: #aea993;
|
||||
border-bottom-style: solid;
|
||||
margin-top: 0.15em;
|
||||
QTabBar#tab_bar_log::tab {
|
||||
width: 2.00em;
|
||||
padding: 0.25em;
|
||||
font-size: 9.0pt;
|
||||
font-weight: 400;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* Pad Settings: Controller Image */
|
||||
@@ -362,6 +376,7 @@ QLineEdit#mw_searchbar {
|
||||
margin-left: 0.7em;
|
||||
color: #4d4940;
|
||||
font-size: 10.25pt;
|
||||
border: 0em;
|
||||
}
|
||||
|
||||
/* Set Theme UI colors */
|
||||
@@ -440,3 +455,11 @@ QWidget#trophy_notification_frame {
|
||||
QSlider#sizeSlider::groove:horizontal {
|
||||
height: 1.5em;
|
||||
}
|
||||
|
||||
/*
|
||||
On Patch Creator, it's the patch validation label
|
||||
since we can't avoid repainting color, let's bold it instead
|
||||
*/
|
||||
QLabel#validLabel {
|
||||
font-weight: 600;
|
||||
}
|
||||
@@ -12676,3 +12676,858 @@
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-08-29T06:56:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-08-29T08:41:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: use buffers during button translation\n\nThis should reduce some random noise by assgning the values once instead of twice","sha":"977d729ee050693a68678f29dcd8b9859d156059"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-08-29T07:08:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-08-29T08:41:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: move pressure sensitivity to the handlers\n\nThis removes a data race where the button was kept pressed but the values ingame could vary","sha":"b07960d3bccdcb8d3050774b8502573f98f3455b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-08-29T19:03:17Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-08-29T19:03:17Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Patch cooperate with system SPU group creation (#10791)","sha":"67813737279dba78593b13e2407b71b37bb1d9f8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-08-29T14:45:51Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-08-30T08:41:19Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx/fp: Handle signed operator precedence\n\nThis was marked TODO for a long time\n- Unsigned remap seems to be overriden by gamma mask (Resistance 3)\n- We already know sign mask overrides gamma mask from UE3 titles","sha":"a5e455d8ed1046c85bcbc5fca6c371530bbfe114"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-08-29T20:22:41Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-08-30T08:41:19Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Rework gamma override mask from RGBA to ARGB to match other per-channel mask registers","sha":"b5dcfb3431d767600fee6d5f3fa5d28dc862a944"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-25T14:47:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-30T11:42:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"vm_native: detect overcommit support on FreeBSD and other OS\n\nUsed in sparse memory initialization code.","sha":"63104af8e9eebd03f9947da3319eecc993704c66"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-29T19:15:03Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-30T11:42:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fixup get-commit-db utility","sha":"8db02dcf40224f78a5b920242eefae00fb9b7fd9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-29T19:15:49Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-30T11:42:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Update commits","sha":"f0ab4b51dc6bdc3d339a5a368d17987f5ad411dc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-08-31T08:35:55Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-31T09:30:22Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Removes need for sys/sysctl.h on linux","sha":"1e108d97b26428bb202e0b0ce9dcef8df5618a6a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18597453?v=4","date":"2021-08-31T10:07:49Z","email":"cpluspluspython@gmail.com","login":"supperpiccle","name":"Justin Lewis"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-08-31T10:07:49Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Fixes build issue with LLVM on Windows with cmake (#10776)\n\nLLVM fails to build on Windows with C++ 20 standard. When building LLVM\r\non Windows, we use C++ 14 already. This commit changes the c++ standard\r\nto be picked by each subdirectory rather than the standard being picked\r\nby the root level cmake file.","sha":"ae491f04a14195322821d565a66c49b68d238b32"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-08-29T00:54:18Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-31T11:02:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Expand byteswap elimination to more instructions","sha":"a86b2781159d693281310d9f58bd7f05ae4a7e8a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-08-29T04:48:00Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-31T11:02:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Add VNNI optimized variant of sumb\n- Uses vpdpbusd to horrizontally add values, for some reason this is much faster than the normal horizontal add instructions.","sha":"d304b5239190518215d82f5ce90d1b3c7cd9b60a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-08-30T17:32:51Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-31T11:02:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Add m_use_vnni\n- Alderlake and Sapphirerapids will require an update to the llvm fork before they can be detected","sha":"43cc62d2679f2dc2a1c0a0a4a169869d8adf001f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-08-31T22:03:30Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-08-31T22:03:30Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"rpcs3_version: Bump to 0.0.18","sha":"9c0c8f2bc7a09aa09825992964e8a916b25d888b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11366022?v=4","date":"2021-09-01T07:58:05Z","email":"polar@ever3st.com","login":"p01arst0rm","name":"polar"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-01T07:58:05Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"BUILD: Refactor wolfssl submodule (#10780)","sha":"ee6e4c493d782fff5f92cbdad6c14f904f02012a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-01T10:38:17Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-01T10:38:17Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Patches/PPU: Extend and improve patching capabilities (code allocations, jumps to any address) (#10779)\n\n* Patches/PPU: Implement dynamic code allocation + Any-Address jump patches\r\n\r\nAlso fix deallocation path of fixed allocation patches.","sha":"b40ed5bdb74a38f6dab346b10b857e280fdb10a0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T11:38:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T11:38:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fixup for #10779","sha":"ad6a72e369bec4d598df500bf59a7aecbda64c50"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T13:56:38Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T13:56:38Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fixup No.2 for #10779","sha":"06f733a7f2dcbfb9a88ad3b8a8d96ee7c245ad56"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-02T17:00:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-02T17:39:42Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Silence some warnings","sha":"0debcfed0a525ec5414c126a13fb5ec52bbdde37"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-02T18:48:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-04T08:39:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: patch creator","sha":"3c0681ad6de0de0b924d40b398a46167612987e9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-04T07:13:32Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-04T09:58:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: Anti-Log spam enhancement","sha":"ea2c5294df4145a101bc8d9e466adf1461f82c45"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-04T07:27:40Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-04T09:58:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: Anti-log spam enhancement","sha":"fe0c164de2dc8b73c43efb5324e6a5393092cca4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T00:15:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T08:16:25Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: fix custom pad config removal","sha":"76ac8ffbd6d89ba53856dea56778f5ee34b9104a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T01:03:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T08:16:25Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: fix custom pad config saving","sha":"17fb601c025eea99023f90b682f37604bb3a1722"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T01:12:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T08:16:25Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: fix custom pad config loading","sha":"aca9884e7640b6c07b093698a72aabea0b54d865"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T01:38:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T08:16:25Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"VS: add missing generated file","sha":"cbc1c472d5f237fcc89fbab8207eac8decffd561"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T16:40:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-06T08:00:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"remove deprecated avcodec_register_all\n\nWe already use newer avcodec code anyway.","sha":"052507089844f87dbab42c43cff7dca548ff3a8e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-04T18:50:53Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-06T17:04:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Implement precise ZCULL stats","sha":"472efc08ebe6ff1485e103711c515d1dc7443979"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-05T12:22:03Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-06T17:04:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Implement ZPASS results scaling for precise stats","sha":"53457262d414fdc0d4ea218313facc435ba7a9ec"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-05T15:02:29Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-06T17:04:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Add ZCULL control options to the GUI","sha":"ea949a5f288d76b7d29a08a3b51c3f70d26a9e03"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-05T20:07:57Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-06T17:04:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Add enums for zcull precision control","sha":"b3f002f68f0a51fda441ad78434e54ac60567238"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-06T19:26:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-06T19:26:23Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Enable PPU java mode handling by default (#10825)\n\nI don't remember if we had decided to do this, so I'll just make a PR and Ani or Neko can merge if needed.","sha":"7bb830a2285b2ce67489a16bfefc738e57251c19"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-06T16:17:21Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-06T23:13:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Debugger/Disasm: Name SPU Syscalls","sha":"dfbc49513dd17aae2665d6f4c92e6c346e945a51"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-07T06:27:23Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T06:51:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Log emulation pause/unpause events","sha":"6a340afb8a9770c4a121dde609be5d8cbd8eeb46"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26035046?v=4","date":"2021-09-07T10:10:53Z","email":"26035046+Talkashie@users.noreply.github.com","login":"Talkashie","name":"Talkashie"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T11:26:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"fix\n\nMakes things more consistent.\n\nThere were cases where both \"Alt-Enter\" and \"Alt+Enter\" were being used, so I made them all use the same style.\n\nAdded more commas and periods to give a more natural flow of sentences.","sha":"00618995d98e74ad982d1af59a928cbfcd174641"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T17:10:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T18:15:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Add missing Boot confirmation","sha":"57473ff98dcfd945a860a555c9eb7860f0efb4dc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T18:42:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T18:15:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: reimplement lost optimization\n\nWe don't need to check all the buttons constantly","sha":"a74156fe5b53dfa132e950ec480b5cc28dc14f58"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T19:56:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T18:15:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: make pad_thread a named_thread","sha":"29256df5b175dc7eaa68787f0e1691b061894371"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T23:43:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T18:40:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: release unused data when switching list modes","sha":"4d70c483b2bdff96dbf53f7348d55e54c970f54d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T23:00:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T18:40:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: release scaled pixmaps from memory if possible","sha":"2fb68bfc0345ff8f6de4c206179329297f4e07ec"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T23:59:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T19:56:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: remove deprecated playtime code","sha":"1a443cf6b5271da19be902fd73c4501e56a9d1dc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T00:13:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-08T19:56:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"System: remove deprecated custom config location","sha":"69faf14a793a77d4258f09d7c00c614a72a7473b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-07T16:42:08Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-09T17:30:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Do not allow to unpause after fatal error occured in emulation\n\n* Plus fix #10590","sha":"bd66dfedc90e0a30312a1d7008ad8cb744bf605b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-07T18:09:14Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-09T17:30:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Ensure frozen emulation for special executables inspection modes","sha":"df080fbc532adb9fb35ddc04bcc9fb21c122581e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-08T12:23:50Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-09T19:56:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Reimplement config selection for game startup\n\n* Implement manual selection of config file.\n* Implement default config option.\n* Fix bug which led to 'force global config' to not work in some games. (any game using process relaunch such most game collections, RDR, MGS4 etc)\n* Relax CLI config purpose - instead the emulator forever ignoring any other config except for the one provided in arg, use it only for the CLI-booted game.","sha":"1cbcf7e1adf9ad01b746dc592d6722cc6995a8d4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-01T19:52:50Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-10T08:46:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fixup No.3 after #10779","sha":"fafefb2cf57370cdf760419f984713f677b8cf23"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-02T15:14:26Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-10T08:46:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Patches/PPU: Add jump_link patch type","sha":"f98595bee582edb6c2d40a377ac7c05a82110919"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-07-27T09:04:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-11T19:13:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add support for sc vtrm crypto\n\nFor VSH for @Clienthax","sha":"8dc98bbc1b5899cb3e9f359f2375711863acfb1f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23005148?v=4","date":"2021-09-11T21:55:53Z","email":"cjj19970505@live.cn","login":"cjj19970505","name":"陈俊嘉"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-11T21:55:53Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"BUILD: a couple of cmake msvc compile fixes (#10799)\n\n* cmake: a couple of msvc compile fixes\r\n\r\nThrow error when using multi-config generators.\r\nAdd USE_MSVC_STATIC_CRT option for statically linking with CRT.\r\nSet curl's CURL_STATIC_CRT aligned with USE_MSVC_STATIC_CRT.\r\nFix cmake configs of 7z and OpenAL in msvc build.\r\nRemove unecessary hard coded compiling and linking flags.\r\nUse debug option in windeployqt when configuring for a debug build.\r\nSearch for windeployqt tool in configure time.\r\nAdd vcpkg's Qt support.\r\n\r\n* Fix some typos","sha":"42e3add6a1a5e2a28b5e83389ebea7540606cb0d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-06T11:52:56Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-12T16:05:26Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Improve sys_fs_close logging","sha":"c7f5475b5647e616f8da38112ee8e253beae850a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-11T10:05:43Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-12T16:05:26Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Add debugging info for when sys_tty_write is executed","sha":"677d5f09cedeb3742c90544f05c6650f2a8bd8d1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-11T10:37:39Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-12T16:05:26Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix vm::try_alloc regression","sha":"91fefd4671e4aa511718edd6b8fdbacc5b0d5bb0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-12T18:28:48Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-12T18:28:48Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Fixup default config-path (#10863)\n\nFixes #10862","sha":"fe6cb4774e98b377ec0b2900820130bfd26b5318"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-11T05:26:08Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-13T17:53:34Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"vm: Fix vm::unmap\n\n* Make vm::unmap atomic, squash the memory unmapping process inside this function while still using the same VM mutex ownership.\n* Make vm::unmap not fail due to random vm::get calls, shared_ptr reference count is no longer a condition.\n* Fix sys_mmapper_free_address spuriously failing with EBUSY due to random vm::get calls.\n* Fix sys_vm_unmap race condition due to non-atomic vm::unmap.\n* Add an optional verification block ptr arg to vm::unmap, used by patches.","sha":"50ad7ba1f6298cb5b8bea0b10ab3e23378d27b50"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-09T19:23:04Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-13T19:36:53Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix user_interface::alloc_thread_bit() usage","sha":"5600430a056beb94351bfad2fbae72fc1d39684b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-11T11:34:14Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-15T15:08:58Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix sys_prx_start/stop_module for older firmware\n\nThe old structure is only 32 bytes long, not containing prologue/epilogue functions.","sha":"8b48fd95fe69e41b7d80f33cd2a7ddfad35c3c7e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-12T23:21:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:43:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Emu.Load: add more logging","sha":"6378e16fdf3d5bce7cd3629b42b6300e312700f3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:03:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:43:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix player selection checks","sha":"b955469721c26feae387dd886887ba77802f2020"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:12:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:43:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: reset config when null pad handler is selected","sha":"460fb669499556bc060c70c54068141b00dd5f6b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:26:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:43:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Relocate pad handler parameter changes","sha":"e56609d8362ed4d61f5fa596893da07f268bbd59"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:28:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-15T19:43:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Reset stick positions on pad handler change\n\nFixes weird stick positions when pads are disconnected or not sticks are not supported.","sha":"e3eaf5f29ef9645f8ef9d051582ceb9760fb91ea"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-16T03:34:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-16T03:34:06Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Qt: add changelog to updater (#10844)","sha":"56e982375e23ddfbcc3547d3e636383f60052ddb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1712979?v=4","date":"2021-09-16T09:17:35Z","email":"dsdominykas@gmail.com","login":"xddxd","name":"xddxd"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-16T11:09:21Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Enable the precise occlusion query feature","sha":"d511e76a6369a2e3df50b638c9624239083fcd02"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1712979?v=4","date":"2021-09-16T10:18:43Z","email":"dsdominykas@gmail.com","login":"xddxd","name":"xddxd"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-16T11:09:21Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Switch from r16ui to r16","sha":"bcda172ae7272d9b67e062c79d23249d42c6eed7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11366022?v=4","date":"2021-09-16T12:59:08Z","email":"polar@ever3st.com","login":"p01arst0rm","name":"polar"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-16T12:59:08Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"cmake corrections (#10782)","sha":"c6c4aa4634cca296671d7e7c9ea2195ae8dea609"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-15T17:29:40Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-16T16:09:18Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_prx: Implement sys_prx_get_module_id_by_address","sha":"ae4f837f57e6b7983804eb5af5b53f722c83cdc1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-15T17:33:31Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-16T16:09:18Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_prx: Improve sys_prx_get_module_info error checking","sha":"9c2d94ca1aa1bf03dc8c594e6c167b27a952e41c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-13T02:12:51Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-16T18:28:52Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix BDVD path setting","sha":"e5876b3a1b6a6949ba038d80da108569857e7268"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-05T11:12:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-16T20:18:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: Show feedback while stopping ppu compilation","sha":"da4f4dafbdce7d54187e4fc001497eb263b962c7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-16T21:05:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-16T21:05:29Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"cellSearch: more stubs and implementations (#10578)","sha":"1a2fad4eac93590b386f749f3f70498633efb65d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6665256?v=4","date":"2021-07-18T19:19:58Z","email":"nik18.1995@gmail.com","login":"NicknineTheEagle","name":"NicknineTheEagle"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-16T21:54:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fully implement sceNpDrmVerifyUpgradeLicense","sha":"4fcc1c0f3106965fb67297d3ff0c6210db318e93"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6665256?v=4","date":"2021-07-18T19:51:08Z","email":"nik18.1995@gmail.com","login":"NicknineTheEagle","name":"NicknineTheEagle"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-16T21:54:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Refresh game list after installing RAP files via menus","sha":"b30ac48513b594b5d1eb560723ad91909f1b097e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T11:04:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: reimplement ctlz, ctpop","sha":"95c36221fa8aaa7e99d2aa9765f58fba45b6bb7e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-08-31T16:35:45Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: reimplement avg","sha":"38dfc88e8d938cc067f473a8f2248bfd62b6cb65"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T10:43:34Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: reimpelement fsqrt, fabs","sha":"f188019244e33fcdfba5c127d5e6822b781b3128"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T13:20:33Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: add line number in get_const_vector automatically","sha":"7cf9d1380b2797780408a9fe3129d8e3109efa9e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T16:34:07Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"SPU LLVM: implement missing constant mask handling in SHUFB","sha":"144244e9026aec158da36bc3078403e4588d9e81"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T16:49:27Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"SPU LLVM: optimize SHUFB for permutation-only shuffles\n\nDrop constant generation when unused.","sha":"2acb6ed60d3dfd5875982609ade52e5d20ee7505"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T17:43:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: reimplement fmuladd, force hw fma if present","sha":"1685769bd98222cec07ad0e8c885d41a5cf05b58"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T18:07:02Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: implement fpcast","sha":"7ec7f261b1839f31fb28a385453fa4b67fc8c35b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-01T18:33:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"SPU LLVM: implement FI instruction\n\nUse approximate reciprocal in FRSQEST.","sha":"86ead1b93b9254867744a6b150bbd6a883b09fa6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-03T09:21:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: reimplement pshufb, add 'calli'\n\nImplement postponed custom intrinsic replacement.\nMake bitcast operator static like other ones.","sha":"4b8ee85995521cafc0eac191e7ed126bff219f91"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-03T12:44:24Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: reimplement fre, frsqe, fmax, fmin","sha":"2268aa9093fcfba66cb8f27dda8ec1f37ec97e3e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-05T17:33:19Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: implement absd and match helpers\n\nMatcheable expression absd(a, b) (absolute difference).","sha":"67b3fc70f839bfc9d1d9b0c82e5f79eda24ee1f8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-06T18:07:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL / SPU LLVM: implement infinite precision shifts\n\nRemove old make_*** helpers in favor of matcheable expressions.","sha":"543fb7a9cbd1962c4ff8836f76bd1b5c5a6e02f7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-07T15:35:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"SPU LLVM: make intrinsics for most xfloat instructions","sha":"aba332d4c48d83150bc27eefd4aabfeb886f81ea"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-07T16:42:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"SPU LLVM: implement spu_re, spu_rsqrte\n\nImprove matching with peek_through_bitcasts() helper.\nImplement erase_stores() helper.","sha":"d28b0ba2faf72ebc41a53059de17f3285b374e53"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-13T18:56:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T07:23:43Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"SPU LLVM: implement SQRT and DIV pattern detection (xf)","sha":"9e62ca562bbcf082a05955a60f135c100178015e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2020-06-27T14:38:49Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T08:38:10Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU MFC: Implement MFC commands execution shuffling","sha":"975aae1d13be3234ad594ff7c1bed6315b0aff05"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-17T09:01:29Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-17T11:02:22Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"CPUThread: Prevent recursive check_state calls","sha":"ddec5d6908938d7509120b73d8e92f7598cd9e33"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-17T16:38:04Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-17T17:12:08Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix stupid overflow","sha":"c2ab3c664c02e2dbc614ffea3d3f554cf9421c6b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-10T18:27:33Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Emu: Fix disc game move from hdd0/game","sha":"73bdf7481e244118bfb3102870dfc0404639f3db"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-15T23:34:20Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Implement Emulator::GetFakeCat()\n\nI still have nightmares about that cat.","sha":"1f3b1e1c99e92dd1193abe1c48b6334c0ef6d806"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-16T06:09:30Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"GUI: PARAM.SFO formatting","sha":"e4f92ddf77e0e0264e4d180ae99ad84eae341ed4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-16T08:04:47Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"PKG: Debugging messages","sha":"77c252a4c07df194eba3662d4742abfad1eb264f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-16T08:30:36Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"PKG: Implement SDATA decryption","sha":"3e84a2acc0274432a5124bf5ee93009003bd015f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-16T09:50:30Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix Emulator::IsPathInsideDir","sha":"5736fa3351f3efc9b8ec068643afe6057488f1c7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-17T07:29:06Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:15:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"System.cpp: Remove outdated and bugged code-block","sha":"c37c6fb6dec1e0d513e6aba3f79c9eff50939fc4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T22:09:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:45:14Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"System: only init fxo objects if a game is started\n\nThe progress_dialog and patch system aren't needed unless a game is started.\nBefore, they were both initialized everytime we added a single game to the game list or even when simply started RPCS3.\nThis both means that a thread was needlessly idling all the time and even worse: The patch.yml was read countless times when we didn't need it.","sha":"129ade2f7344b4beeeec3003e74e948b795bad8a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T20:44:05Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T21:13:24Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"silence some warnings","sha":"1f1d1da87bbf72c0af40084fa491866d5000878f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-07T21:39:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T21:13:24Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: wait when emulation is paused\n\nThis decreases my cpu usage by to <1% during Emu.Pause()","sha":"14a425e487b63a3b49cade8b48e7e4c90b2567b9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T22:15:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-17T22:58:05Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"CLI: add \"high-res-timer\" argument (defaults to 1)","sha":"ebde86b967f975f3317836b3ba8348957c329dfb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-17T15:02:19Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-18T16:43:55Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"GUI Settings: Add MFC Delay Command checkbox\n\nLimited control over \"MFC Commands Shuffling Limit\" setting.","sha":"5f729d4dbf38bccce4f4e5a2726ec7d11242c4e2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-17T15:12:48Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-18T16:43:55Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU MFC: Add shuffling in steps setting","sha":"5870da0b55f85b5df7ffc394dabf2415173d3bf6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-17T17:18:12Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-18T16:43:55Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU: cpu_work() fixup, fix recursion in AV handler","sha":"e10c6cbaf78d4fc7a387f25395a11075504129f1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-18T16:36:07Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"AniLeo"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-18T17:20:55Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"unpkg: Don't append title ID to license packages","sha":"1f8f428a59daf20b66d382ea4a26b9be8d6bcf5d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-18T16:42:53Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"AniLeo"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-18T17:20:55Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"edat: Check for the correct directory","sha":"c9955050231c7431283e33e49feff51c9c33ae1f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T09:04:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T18:30:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Overlays: Fix position of centered perf-overlay","sha":"a50e22a11f8723594ef4789c82867e3416a4ee19"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T21:00:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T21:46:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: fix keyboard_pad_handler pressure sensitivity","sha":"e307a1b4bda48fb8f3f99bf37455fcbab321a214"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-08-25T12:26:41Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-20T05:59:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio fix","sha":"38d5f688b3428da3433dc43db838821b866c367f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-21T08:29:32Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-21T08:29:32Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Fix memory leak in cellOskDialog (#10895)","sha":"17a074e1aca52cdd104555f93264c7feafcbc7d2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-19T16:01:12Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-21T16:53:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Enable stencil export extension when required","sha":"19b2da25904628ca4194c2da87dd0c0f7ff38d24"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-19T17:20:12Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-21T16:53:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Rewrite memory initialization","sha":"0a8d9a12abb3a1fd2da270026c031f633c617296"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-19T19:01:25Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-21T16:53:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Rework how depth/stencil initialization+clear works","sha":"dabfce5c822cd53365b49f20f8a08ba1c5629242"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-19T19:22:48Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-21T16:53:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Enable sampler mirror-clamped-to-edge as an extension","sha":"334999f639db6a3dba78fdb33dcd6c32509ab837"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-19T20:18:20Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-21T16:53:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Invariably clear the texture state if referenced.","sha":"46b30279817f6ffa78613baf3de41792dc381bca"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-19T22:29:05Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-21T16:53:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix 3D texture decode\n\n- 3D mipmaps are shrunk in all 3 axes, they are not 2D array textures.\n- Fixes mip1-mipN for all situations","sha":"3c7ada8e83e61c789178131042b0cbdf0a1cf848"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T18:32:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: dont send INPUT_ENTERED unless continuous","sha":"70c291753c5d583e32f329858b907b51e8408916"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T19:12:42Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: fix dialog abort w/o user interaction","sha":"81a01134bbb559cb56a8bafa3b940ba3216bbd7c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T19:21:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: stub some settings","sha":"696a3c4a42a8f8956c1614457bddacbba5650024"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-19T19:51:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: reset options after unload","sha":"80ef0ce9b55308c4323a1273147dc2ef87ee58b9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-20T18:39:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: do not notify INPUT_ENTERED on each input\n\nApparently the event is only sent when a user confirms the dialog during any continuous mode with seperate windows.","sha":"f7870d49682aac1cc1950f119514f87868c69509"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-20T19:19:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: partially implement cellOskDialogExtUpdateInputText","sha":"e3ec71c6832f6821fad037ff5ddd76be2adecc9f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-20T22:59:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T21:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOsk: partially implement continuous mode","sha":"a7cb513a89e3ae9c0cdcf79c9880591c013004fd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-21T20:26:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-22T06:06:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"perf_overlay: fix initial graph positions with detail level none","sha":"f1037f75d985efc7cd0cb4cc9801f0ff6bf3769a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-21T08:45:32Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-22T11:57:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix cellFsSdataOpenByFd flags","sha":"5ae7dbf77cefa0b8cfc19ea7a6d84adfb1d02593"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-21T08:46:40Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-22T11:57:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_fs: Fix SDATA/EDATA file-stat","sha":"4237039d5367376249b731192b7bfd023dc7af69"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-21T09:07:01Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-22T11:57:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_fs: Fix sys_fs_read/write when nbytes is 0","sha":"3e064462977ae0bfa84b93fa5f677ad64c3ed39f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-21T09:49:59Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-22T11:57:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_fs: Add write log messages for SDATA/EDATA","sha":"d0e31f4ec36ab9318d2e18fd119d5ece3a5ce2b3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-22T18:47:53Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-22T22:45:37Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix scanning for upload heap types.\n\n- HOST_CACHED support must be prioritized, but is not a mandate.\n- Scan for that flag explicitly and fall back to uncached if it is not supported.\n- Uncached memory is too slow for our requirements to contend with cached memory.","sha":"e4aff539b0508a4621d91ebd1bc5095ba4faf039"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-23T19:37:36Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-23T19:37:36Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"ci: Switch QT mirror (#10918)","sha":"7167fbf545be3e1f7fa8bac65a2a3f9dfd04b6a7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-23T17:49:49Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-24T18:05:11Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Debugger: Implement editing instruction for entire SPU group","sha":"fff0c96bf38d1ada075e524c4753a7f263c06449"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-22T20:42:40Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T16:21:59Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Remove unused lambda","sha":"4323ca4a012117778efeebcefd2673f0bf1991cb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-22T18:30:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T16:21:59Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"VFS: add logging to mount","sha":"da91a841b7ac801d1d4a838988e602ee928e8502"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-22T19:44:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T16:21:59Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix VFS regression\n\nImplements cfg_mode","sha":"8f1dc7a2d46e12a22dfbfb8f2f843dc86ac7248b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-23T18:12:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T16:21:59Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"VFS: move VFS settings to seperate file","sha":"269c4604aaecf433caeb9a427b835995b5cad956"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-25T20:48:12Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-25T23:29:21Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"config: Disable SPU loop detection by default","sha":"e58911cc95584f9bb0f3a68ac48532d3bda31dbe"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-25T20:50:42Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-25T23:29:21Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"ui: Remove SPU Cache from settings dialog","sha":"ecc55048c5ffb3e29d4bf6d94defad441757b7de"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-25T20:53:53Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-09-25T23:29:21Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"config: Remove Lower SPU Priority setting","sha":"df96be199b26d01ef13e88d45c75e83ec94e34e7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-26T09:57:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-26T10:08:40Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Fix SnapSlider in settings\n\nThe SnapSlider function is used to snap the current slider to certain values if modified with the mouse.\nBut it only triggered if the user was dragging the handle of the slider and not if the bar itself was clicked.\n\nThis is fixed by using an eventFilter that listens for mousepress and mouserelease events instead of the sliderPressed and sliderReleased signals.\nMaybe this is a Qt bug, but I don't want to bother with reporting this right now.","sha":"b217e8384c5804d00bfdd730a41efb98c6dbc341"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-06T07:33:44Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-26T17:49:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Patches/PPU: Implement HLE/LLE/With-TOC function call patches\n\nExample patches:\n [ jumpf, 0x12340, \"cellGcmSys:cellGcmSetFlip\"] // Places a call to cellGcmSetFlip at 0x12340\n [ jumpf, 0x12340, \"cellGcmSys:0xDC09357E\"] // Same, using FNID\n [ jumpf, 0x12340, 0x2345678 ] # Function OPD based call eading OPD at 0x2345678","sha":"65c9cd99cd9501833fe174ee2f0e51bb2a7cb0b6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-25T23:11:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-26T18:28:17Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Remove some lwmutex log spam\n\nI don't know if there's a reason for the warning message.\nSo I'll just change it and see how many developers throw insults at me :)","sha":"2821eb73971c16ba0c6e2bae4b7b700be9ddf73c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-27T18:22:05Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-28T09:12:12Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Debugger/Disasm: Name PPU Syscalls","sha":"34c36c73ee6776a10cb946bc18a1b09acb5fe943"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-27T18:37:56Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-28T09:12:12Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Bugfix after recent PPU patches pr","sha":"e7b9513d4a32418ff4e534c3bc635df2610842b0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-15T17:46:03Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Minor optimization; avoid preparing unused vertex streams\n\n- Also discards unused program state variables","sha":"3e09b97f589467e4a9bde300cfdde61dd86630ec"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-17T19:59:37Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Avoid calling get_system_time() every draw call","sha":"6781eb7c76c8a752b3819475aa270584b941dda6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-18T11:23:29Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Avoid get_system_time for simple draw ordering","sha":"9aafd8c09f17de4a64198b2a775f85224d8784c1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-17T20:19:20Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Simplify texture cache OOM tracking a bit","sha":"7f830d555d4383b5ad3dd2e987d9ebe1c7977b15"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-17T20:01:53Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: refactor rsx_utils a bit\n\n- Move obviously standalone things to their own utility files","sha":"7b9fb7ad9cffad1c886df66bfbb0e9af41fbb8a9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-22T19:31:06Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Enable descriptor indexing extension if supported","sha":"62979c7bd9ea75908bf57276b584257e3eb89e3f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-22T20:06:44Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Refactor descriptors a bit","sha":"24642a4c18fb0643ef6b85d6206abe994d259700"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-22T22:29:23Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Implement basic descriptor updates batching","sha":"4752c4014b6519fae59c0d9ea85e636a59e37291"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-24T18:23:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Optimize basic descriptor batching","sha":"381c7544fa6daf4f0ac35d6c5dcf6174af6ca8b9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-23T19:54:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Enable deferred descriptor updates via descriptor-indexing","sha":"ba2a8ebf2eccdc042df0df8d0fa397b4640f374e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-24T23:01:27Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Optimize thread self-tests","sha":"2e22a0d9bba9d794bb88c9abcc6f918ce04440e7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T18:42:27Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Implement descriptor allocation batching","sha":"7c5b5d25e3e9493850e21f46220f0379f4ff95b7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T18:49:47Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Whitespace fix","sha":"9595297a3a7ef2c8e4230437428b3db447c7125c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-25T20:53:34Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Make the new descriptor system spec compliant","sha":"eed38e1bbcb16096fd3d4a06998c922a8aeec1ea"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-26T11:30:08Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T14:43:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Add deregister event for sets\n\n- Unused in practice, but this is more for peace of mind.","sha":"3d49976b3c0f2d2fe5fbd9dba0419c13b389c6ba"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T17:42:38Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T20:18:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Clean up around vkQueueSubmit handling\n\n- Explicitly declare one version for CB flush and the other for Async flush\n- Always flush descriptors on CB flush in case of page fault handling.\n Other threads other than offloader can also enter the method and require normal flow.\n- Fix overlapping interrupt IDs.\n- Minor formatting fixes","sha":"dc8fc9fc798e24ccf9933d80db2b6242abf62be6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T20:48:22Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-09-28T22:20:32Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Use a dynamic number of descriptor allocations","sha":"f90bf2dd403aa11689a32bfb11814ba9914145ed"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2020-09-29T19:20:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T17:52:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"settings: Fixup for ranged combobox fallback\n\n# Conflicts:\n#\t3rdparty/SPIRV/SPIRV-Headers\n#\t3rdparty/SPIRV/SPIRV-Tools\n#\t3rdparty/yaml-cpp/yaml-cpp\n#\t3rdparty/zlib/zlib","sha":"42de2a3e0b607911a98fdc83613df39e73bd385c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2020-09-29T22:04:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T17:52:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"settings_dialog: Add Restore Defaults button\n\nOnly works for config.yml for now (not gui settings)","sha":"019fa390f2ecbfa9861caa31689cc1ee1893a7db"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T19:28:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T20:38:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix downloader taskbar progress","sha":"797b69fe8f1d90ed627d04000711bb2a56c82a79"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T19:47:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T20:38:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Add sound if download fails","sha":"3f55067414b621e5c70e8998779bbaf205cb744e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-25T22:58:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T20:38:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt/Linux: Implement SignalFailure with dbus","sha":"45f5819ef30c630250294e5f345425f53c797058"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-25T22:51:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-29T20:38:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt/Linux: Properly hide taskbar progress when done","sha":"8b3a3e4ac825689d1a8879a465c822c9c0065676"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-09-26T08:40:47Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T10:22:35Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Use VDBPSADBW in SUMB\n- This instruction can be used to sum bytes horrizontally if the second input vector is all zeroes.","sha":"f9ab077908b001995a271761a7a4ce4cf2047d30"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-09-29T09:09:42Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T10:22:35Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Optimize branches following byteswaps\n- The first element can be extracted via vmovd rather than vpextrd, which saves 1 uop.","sha":"86716dc37bc520bce2f19144eee8b58bf0a35b5a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-09-30T08:45:41Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T10:22:35Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"LLVM DSL: reimplement vdbpsadbw","sha":"2cfa5406e74bc989b6ba621fa10226d7fccc15cf"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T13:39:38Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T14:53:47Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM Fixup for VDBPSADBW\n\nFixes #10947","sha":"55ec4808f1da1f305466f1ca9400dbf577c2c47f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-27T06:53:28Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T17:48:47Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"PKG: Simplify files management","sha":"056d43eca760dd3e58e6c5a09765ddefe578b91a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-30T18:17:16Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-09-30T18:33:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Update unpkg.cpp","sha":"65e9388f00d65d825e49be88ad9260062dea4edc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-30T18:33:55Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-09-30T18:33:55Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Suggest tweaking the setting \"Stub PPU Traps\" after PPU trap (#10921)","sha":"71b15c1fa67b22eae9079ebb1c4c7926b122adb1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7947461?v=4","date":"2021-10-01T23:07:58Z","email":"CookiePLMonster@users.noreply.github.com","login":"CookiePLMonster","name":"Silent"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-10-01T23:07:58Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Set up VS environment before calling cmake in glslang and spirv (#10952)\n\nThis makes VS use its own cmake instead of the one in PATH,\r\nif available.","sha":"02e1c4981878c342aab1f793a2cb87793ce26bef"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-28T22:27:09Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-02T07:15:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix clang-format for new ugly lambda indentations","sha":"c765de81d4614f41a9c6eed425471d227e06d663"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-26T17:45:24Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-02T09:29:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"GUI Utilities: Implement PS3 SDAT/EDAT decryption","sha":"63f16d7a469569b20568c2ec735672c67a32331b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-04T17:13:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-04T17:57:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Overlays: fix small performance overlay font sizes","sha":"af11546b1e10988988dc984a0300a0fe24315116"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-04T18:54:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-04T19:21:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: increase mouse acceleration maximum","sha":"d8435163bb1fa25ad224c3b1338b707fdcce951b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T16:38:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T18:16:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix config mode reset","sha":"f72d148d37441066682c723f5f357ed032171f79"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T17:10:05Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T18:16:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add missing cpu_flag formatting","sha":"c7e5a62909df9d8685e8a7de664b7e82cd9a6332"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T16:51:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T18:16:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update yaml-cpp","sha":"70308d05f3260c795d41b76e15297ce658ca5062"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-06T23:32:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-07T07:49:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellKb: implement key repeat\n\n- Implements key repeat functionality\n- Fixes an issue where games registered keys repeatedly even though we weren't actually setting multiple key presses.","sha":"eb850681ee24ca49d4ae29afeb46a601e1031db8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-07T11:35:36Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-07T12:27:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add edat install support","sha":"8e3112734e0f436db9ac6401499285b14f576e21"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-05T15:52:11Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-09T12:10:36Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Silence compiler warning","sha":"f1d9a014c0b5dea40f8eeda06eb0561ed301b32d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-05T17:33:58Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-09T12:10:36Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Rewrite shader decompiler texture dispatch","sha":"b3725baf5a22a47cb25ae7ba35cadf3f7f39391e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-09T17:56:50Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-10T07:34:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Make pad and patches config savinng atomic","sha":"75e66ab5e02061b52434d8e48accc1d277d99cb7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-09T18:07:52Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-10T07:34:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"fs: Add fs::write_new, promotes safe file creation (no overwrite)","sha":"24e76f296057a42ef54cc386ac9425d8f494d26b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-05T20:52:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-10T08:08:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: write version changes to update.log","sha":"e5793acd78a2654c7ac30b983f3b04f750e1e658"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-09-30T23:47:14Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-10T08:34:03Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: log hid_get_feature_report return values","sha":"7df7ac57cc28f0be5ca7ee7fa609a732cab3082b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-03-30T08:58:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-10T08:34:03Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"DS4: add ZEROPLUS Brook Mars controller","sha":"877dd1f98d0865b753e86dda51cf2cff0f5897cb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-09T12:12:05Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-10T13:15:28Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Alias register binding points a bit\n\n- While aliasing is easy to break, it allows outdated hw to run","sha":"e1d1d16227159a768eaf42a7c850bb1aa2cefef7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-09T21:17:00Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-10T13:15:28Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix decoding of linear cubemaps\n\n- 128-byte boundary is not observed in linear tiling. Verified in hw.","sha":"479150b214c9a5b8bd5cefb997b58cd7ef3eaf27"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-11T16:28:13Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-11T16:34:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"PPU DisAsm: Fix CMPLI disassembly","sha":"15af1bca69451b0a0600b618a7b032024ced925e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2020-11-17T01:19:17Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T20:20:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rpcn v0.4.0","sha":"ea9dc9317d5421e014674f94c4e6460fd1a5531f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T17:34:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T22:40:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNpDrmIsAvailable: add param checks","sha":"780a234467419a9f643ede2018218db9af1b84e8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T17:55:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T22:40:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNpInit: fix error check order","sha":"e2a9c0a8f3c64cb8d571a5337bdeb35642e33cbb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T18:28:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T22:40:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNp: more error checks","sha":"80ef3486006842b019b59c320ada9b307b88e68d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T21:22:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T22:40:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNpCustomMenu: improvements","sha":"8f328b26246c004a0faf0b797b963d9afa4855c1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T21:43:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-11T22:40:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNpFriendlist: some improvements","sha":"3832d4fa1c9b9bcee7de9da43b93d555adefa678"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11153579?v=4","date":"2021-10-11T22:26:52Z","email":"jbeich@FreeBSD.org","login":"jbeich","name":"Jan Beich"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-11T23:11:58Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"vm_native: unbreak runtime on FreeBSD after 63104af8e9ee\n\nshm_open() returns a file descriptor on success, not zero. As SHM_ANON\nonly exists on FreeBSD which also has memfd_create use the same code\nas on Linux.\n\n$ rpcs3\n[...]\nVerification failed (in file rpcs3/util/vm_native.cpp:478[:4], in function shm) (errno=2)\nSegmentation fault","sha":"1a90adfb5ea380820f8dd7d6331b2c2f787ea34d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11153579?v=4","date":"2021-10-11T22:37:10Z","email":"jbeich@FreeBSD.org","login":"jbeich","name":"Jan Beich"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-11T23:11:58Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"vm_native: simplify vm.overcommit sysctl\n\ndragonfly$ sysctl vm.overcommit\nsysctl: unknown oid 'vm.overcommit'\n\nfreebsd$ rg VM_OVERCOMMIT /usr/include\n/usr/include/vm/vm_param.h\n89:#define VM_OVERCOMMIT 12 /* vm.overcommit */","sha":"7a24642c56f10292f435698ed769c9ca7a42959c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-12T09:16:38Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-12T10:47:08Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix some texture decode instructions\n\n- Fix TEX1D_PROJ definition\n- Make TEX3D_PROJ cubemap-compatible","sha":"d58df667b9e4efda11b9d808845bc19458f5acb4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-11T23:17:28Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-12T15:30:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix rpcn create/login not returning proper error","sha":"df39bd39b06271f06f8ff62f047350276307de89"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-12T17:45:54Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-12T18:20:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rpcn: wait for signal before connect","sha":"8a72bdb42232a5d84f7336e588d1ec2c9cf1729c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-12T20:12:30Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-10-12T20:12:30Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"GUI Utilities: Implement instruction search, PPU/SPU disasm improvements (#10968)\n\n* GUI Utilities: Implement instruction search in PS3 memory\r\n* String Searcher: Case insensitive search\r\n* PPU DisAsm: Comment constants with ORI\r\n* PPU DisAsm: Add 64-bit constant support\r\n* SPU/PPU DisAsm: Print CELL errors in disasm\r\n* PPU DisAsm: Constant comparison support","sha":"ab50e5483ed428d79bccf0a37b58415f9c8456fd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/27760396?v=4","date":"2021-10-12T21:29:19Z","email":"shockdudex@gmail.com","login":"shockdude","name":"shockdude"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-10-12T21:29:19Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Add emulated DJ Hero turntable controller in Settings I/O tab","sha":"cd73d738e5175e307654c1911642c938fcd64796"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-13T01:32:32Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-13T06:17:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Defaults to 127.0.0.1 when failing to discover IP","sha":"68fdc4952854ed5cd5cef097bbb5c9ef12258901"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-10-04T23:52:10Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-13T14:51:54Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"PPU/SPU LLVM: Emulate VPERM2B with a 256 bit wide VPERMB\n- Save 1 uop by using 256 wide VPERMB instead of VPERM2B. (Compiles down to a vinserti128 and vpermb)","sha":"f06c8b22e8cd171a5dbd5549d3719018a033b50e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-13T05:26:57Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-13T19:18:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Enables resend token button","sha":"ab6c74b3c12a7264a2693233c5326a47c62e4f24"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-14T16:42:19Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T17:28:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"RPCN: Set error state on empty login/password","sha":"caea340985c606e6928a5d50be50f9954026ee4b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T19:49:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T20:06:12Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNpDrmIsAvailable: fix error check\n\nNo idea where I saw this check. Probably looked at the wrong function","sha":"1584aba387c2a784ca8077df6af001585ffb6039"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T20:26:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T23:20:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"mmjoy: add member prefix to blacklist","sha":"90548468ee1b5fc0866b03c7a80e4000e2cde37c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T22:12:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-14T23:20:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"DS4: add version check","sha":"792ac5ed6439c4c2d421a58efa179d869b337bd2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-16T07:36:00Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-16T08:56:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"PPUDisAsm: Fixup SC printing, support LV1 syscalls","sha":"43302f937cf07849f54ee3ca31f7418a50962d5f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-15T01:41:05Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-16T09:41:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: redirects 0.0.0.0 packets on windows","sha":"0e625e193ea83f3b488db7cbfbb847885ffc9400"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-15T04:27:02Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-16T09:41:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: getsockname on unbound p2p socket fix","sha":"683c061e6052272d3077317a0e93ed28c16e2f66"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-16T11:44:56Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-16T13:03:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"PPUDisAsm: Fix MFSPR/MTSPR disassembly","sha":"a4bd1755cf58ddc1459eea8ac02de6e844831f8f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-17T10:15:58Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-10-17T10:15:58Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"SPU/PPU DisAsm: Implement more constant formation patterns","sha":"12efd29121173ab305e1cc578079860faf8fb6b2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-19T09:53:08Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-10-19T09:53:08Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"vm_native.cpp: Fix DeviceIoControl usage (#11029)","sha":"c6641748cec9f1bc216965e83c3ba4295f3251c9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-18T21:21:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T20:09:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: remove pad settings size constraint\n\nThis might fix some scrolling issues (or add more)","sha":"9c1f258be36b2fe2fcb108e039fa5ef01c97613b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T23:01:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-20T00:09:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Linux: add org.mate.ScreenSaver as fallback","sha":"cb953a418f27d4180965ae367d623e7b5f1f08f9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-19T17:33:24Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-20T09:05:39Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fully allow CB change in emit_geometry\n\n- upload_vertex_data can trigger a flush to CELL which will result in CB flush.\n Ensure CB state is correctly reloaded in such a situation.","sha":"4ed92f4155ddbff9436688ff7785289f58d9d36d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-23T15:17:16Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-20T12:46:50Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU: Implement interrupts handling for remaining events","sha":"c0c52c33b963d0fb7c92cb9e9f6955eabbbda5ca"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-10-21T15:13:21Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T20:35:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"XAudio2: Update from 1.2.6 to 1.2.8","sha":"361ef33856822a4e15de6a7f1dd26105623b6f57"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-10-21T15:16:00Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T20:35:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"FAudio: Update from 21.07 to 21.10","sha":"2acac6757081eb4c5391f56bc1fd85921a2aeb9c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-10-21T15:18:00Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T20:35:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cURL: Update from 7.77.0 to 7.79.1","sha":"266ab2814553e71b61e354870187dd094ca20b47"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-10-21T15:20:10Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T20:35:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"stb_truetype: Update from 1.25 to 1.26","sha":"5fb0b2c190d0f4ae3c6de9019834fb748df0f59e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-10-21T15:28:13Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T20:35:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"glslang: Update from 11.5.0 to 11.6.0","sha":"8b4f3fa7756b2f107de06cdeeed70d8e4ef67de9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-20T19:15:54Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-22T12:37:47Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix possible fs::create_path recursion overflow","sha":"9afa9609798f07021c23e40983f0ac170cb2c609"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-22T15:38:00Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-23T06:31:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"fix: cleanup basic handler in np term","sha":"962e140ceaaba312951e65619c4f1395403a65bc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-23T17:49:28Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T00:22:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"[Win32] Allow renaming uppercase RAP/EDAT to lowercase with drag-and-drop from /exdata","sha":"9ba9d9424ed953061cadae900440be08018475d0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/27760396?v=4","date":"2021-10-16T05:57:37Z","email":"shockdudex@gmail.com","login":"shockdude","name":"shockdude"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T01:04:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add emulated Guitar Hero Live guitar controller in Settings I/O tab","sha":"590483b81f10685b9ad44c33178b8ba4751a6340"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/37698908?v=4","date":"2021-07-10T14:52:50Z","email":"37698908+illusion0001@users.noreply.github.com","login":"illusion0001","name":"illusion0001"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T03:24:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Screenshot: sort folders by Title IDs","sha":"c549d7154bfb18689574538756d9e3fc8116ba78"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T02:40:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T08:38:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix richtext_item_delegate palette\n\nWe have to use the styled palette instead of the default palette in order to fix the style of lists as seen the pkg installer.","sha":"d63a712cc5f6940d3a58108f8fcf29466f5b882a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-15T17:59:55Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:03:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Allow booting any ELF inside disc directory, not just ones at 'PS3_GAME/USRDIR/'","sha":"ee7ed1fdc30b098b2a80dcba65f7711b4fae1606"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-13T18:18:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: Add qt camera handler","sha":"08011e9b78a777081e0bf895a79ac7e0c9e3b2d3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-17T10:38:09Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix qt camera width and height for non-default resolutions","sha":"3fac832567c1ec14b325e3039ffe76f7ea439440"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-17T11:18:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: implement CELL_CAMERA_READ_DIRECT","sha":"e4b242955cbd9dec2feed14ec65e2e693b757318"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-17T13:35:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: add error handling to qt camera","sha":"81c216f3303f26d349af856be3cc424aee2ad889"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-17T17:16:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix buffer size for YUV","sha":"bf71b1fcf793f9accad4767951ed726861d15c6d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-17T19:22:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix camera interaction","sha":"843aed228ecc8d2c6e25d16fff646d21f71ab791"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-18T22:19:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: sprinkle some mutexes and handle disconnected cameras during open phase","sha":"263b7854c114c2358a40a10b3d0f90c63ca8adf5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T00:59:03Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: improve image conversion speed","sha":"d1ac92fd996630102b36bd3100e929c9b51c5ade"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T15:55:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: move camera handler interaction to seperate functions","sha":"214c1ccc7e48ee1a355e08f62a0a1f26c4cf1788"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T16:00:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: log qt camera handler status strings","sha":"d93f16fe875eaaeff637a84a56e6cb07701c5a7d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T16:52:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix buffer allocation","sha":"9a6285942bdf02754f4f381942336cf39e6a0302"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T17:18:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix qt camera handler format","sha":"67ba381dfed094d217685ad45bcc25f028ce75ca"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-19T17:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix regular YUV422 conversion of qt camera handler","sha":"76c1681173c068ddd9e4ae3a82a071b18658b4a7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-20T16:23:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: silence some log errors","sha":"5eabe9aa33b7f07c20120f9f674af94ec6e06702"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-20T17:03:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix some typos (fixes camera attachment in Kung Fu Live)","sha":"77f6db25430ef038c3cf4b82593cdcefac53a42c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-20T23:47:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: Implement dynamic camera selection","sha":"f66b29f043e108fb81476a2571a609b0a2d166b3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T01:28:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: add some more logging and fix some warnings","sha":"d161d8c545dc8ebd2704ffa452e04118693c5e59"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T22:48:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: support all formats and set RGB32 if possible","sha":"60d35e17acd06ba16443769d783cee77559d88df"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T23:56:03Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix compilation on linux","sha":"e67cf6832160b499bac6eac069d7f4431cdcc422"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-21T23:56:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: add QtMultimedia to ci","sha":"354db953e6363571b368f8e7065b3087aacee56f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-22T12:51:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: don't flip qt image vertically by default","sha":"9dc6d920cee4911caf950796749ed4b913f60dae"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-22T14:58:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:32:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Add camera settings dialog","sha":"e51656e0701c4b38c3b24676090d5e5e503069b9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/37698908?v=4","date":"2021-10-24T03:30:38Z","email":"37698908+illusion0001@users.noreply.github.com","login":"illusion0001","name":"illusion0001"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T11:12:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Screenshot: add Title ID to filename","sha":"00c87a8fc9d4d0150ec69f2f340d7ebb3758f5cc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-20T17:47:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T13:01:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellGem: hook up camera","sha":"be972f04ac0eeec85ff69ad063acfaa1dfbed429"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T12:48:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T13:01:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellCamera: fix qt handler crash if object is destroyed from another thread","sha":"5e436984a2b5753ad340d2c97462bf3be6e86237"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-24T09:45:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-26T07:18:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: add sound-effect to screenshots","sha":"d5ca9dacb64c6ca2f6ac6a540089dd3e6c47cfa3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-26T21:48:42Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-26T22:25:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Lower some log spam\n\nThese functions probably aren't perfect, but they spam a lot of unnecessary log messages.","sha":"2af2db2cbfd6f1d43fc859135dad4c236ca22209"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/29807355?v=4","date":"2021-10-27T00:13:07Z","email":"29807355+capriots@users.noreply.github.com","login":"capriots","name":"capriots"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-10-27T07:24:02Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Correct channel order\n\nDocumentation says the order is Front L, Front R, Center, LFE, Surround L, Surround R, Rear L, Rear R","sha":"ac300c73562497d28f6ecdee37a817b10aa5315b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-26T17:24:07Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-27T09:30:43Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Fix decoding of wide, swizzled textures\n\n- Handle pre-byteswapped data (swizzled usually) in the compute-safe path","sha":"2587545eed16e94c2158e7a748a32d67241da3a4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-26T19:21:24Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-27T09:30:43Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Disable shader interpreter if hardware does not support bindless textures","sha":"99fc90648bdece549658c833c977dc357ec63fa2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-26T20:41:26Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-27T09:30:43Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Use real image dimensions when decoding compressed textures\n\n- Image size is already correctly calculated using block dimensions","sha":"c733e794dec92aef3e495f54de695cf1c5ad9bbd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-26T20:43:27Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-27T09:30:43Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Do not reuse/destroy sections that have references held\n\n- Avoids a situation where blit-dst and blit-src have overlapping ranges. Uploading blit-dst destroys blit-src and vice-versa.\n This is not the end of the world, but blit-src should be kept around until the operation is completed to avoid stale references!","sha":"78bcb0fd5394cd42375d9f1952963a344f05c5aa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-27T21:43:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-28T19:01:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Use svg instead of png","sha":"7f4b6b1ae7e74fd57391732c84a1cb4036e4790c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-28T21:33:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-28T21:54:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix QSvg deployment","sha":"aff7d8a994e63814310b6aa690e2b2642972a109"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-29T13:46:34Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-29T17:15:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"SPU DisAsm: Print SPU floats","sha":"a90376a7c46e8a6f9b94fdc1d6e87e6fceb77ce0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-20T17:51:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-29T17:46:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Emu: Move VFS mount to Init","sha":"e9fe90244f515df6b4de17c99b51fdd69421edb8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-29T18:15:25Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T15:16:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: fix trophy notification pop-up locations","sha":"244aa6879ae7b430d99377ffa46b3e71aecb0de4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-29T19:17:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T15:16:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: add fade to trophy notification pop-ups","sha":"f262e77fbdec0a35b757b9a7d1811181f2defd9a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-29T20:04:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T15:16:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: add optional sound to trophy popup","sha":"0e20acdf55f79493f392d77839d3a774faaaadeb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-30T14:37:53Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T19:33:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"PS3 String Searcher: Implement instruction searching in embedded SPU images","sha":"edcc2a9e0dc6a96fca9fed0f7e235f3c25f1163f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-30T16:07:14Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T19:33:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"SPU DisAsm: Force decimal point insertion for constant floats","sha":"646ad3eed486ba719491e0e53359d8e9fabec7ed"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T17:48:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T20:44:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix missing vfs mount","sha":"4e6b37ca04479a296d8bbee56446920adc5e5fdd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T18:44:25Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T20:44:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: multithreaded trophy icon refresh","sha":"20331a77cecb760c9d5d64bb838b3d0951a9e9f4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T20:31:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T20:44:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: fix trophy notification sound in queue","sha":"33e80a733d8a5c32758817e40dc4a2b6cfed380b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-31T02:13:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-31T03:12:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add more logging for Emulator Stop events\n\nThis should give us more insight into the conditions that cause emulation stops.\nThis may also help find false issue reports.","sha":"f258ae795ccfc618af5bb75ce4161861d35de67e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-31T03:01:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-31T09:14:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: fix offset of right edge oriented graphs when detail level is none","sha":"84f123041a7aa6d919d2e1a321ffc1f3f9877f2f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-31T03:04:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-31T09:14:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: fix graph offset error after applying new config\n\nI already had this figured out last time but forgot the dynamic config use case.","sha":"1650dd1c7d41730d572e3e30fcecf65eb7dee8f3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-30T11:22:56Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-10-31T11:32:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix sampling in X when 0 pitch is given\n\n- A pitch of 0 still allows 1-dimensional addressing.","sha":"5b0ef401f7f2518c295c1a6496335385e98aafc9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-31T12:24:41Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-10-31T12:24:41Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"GUI: Always show thread name for fatal messages (#11090)","sha":"e31173e33e4448632c5e74a46dd7deb354167a10"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-11-01T02:45:07Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"AniLeo"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-11-01T03:05:52Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"rpcs3_version: Bump to 0.0.19","sha":"46a54f5474133eae424078dc29e0e0fa5210e7fb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-28T18:53:34Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-01T09:04:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: Implement NTSC fixup mode, improve VBLANK accuracy","sha":"58040d478aad749ffae87b0097c26614bf820a4f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-29T18:51:17Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-01T09:04:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: Fix typo in VBLANK processing regarding emulation pause","sha":"4369fb234ead41743fb99af35ea6ed1280200f36"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-29T19:23:29Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-01T09:04:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: Fixate time stamp of VBLANK","sha":"b84e95d7686cb92cec5144d771f1c215a38ab573"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-11-01T15:48:49Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-01T17:04:26Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU ASMJIT: Disable 512 wide spu verification\n- Apparantly this crashes every game.","sha":"37383f4217e1c510a543e100d0ca495800b3361a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-02T16:30:03Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-02T17:11:08Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM 13","sha":"69f321a47127d00697840cd795fd39020f3b7a68"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-02T21:19:03Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-03T13:58:30Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Configure pitch correctly for pitch-zero textures (1D)","sha":"ad00c442314177b631222260d7b159c8ed4b5cfc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-11-03T19:31:46Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-03T19:31:46Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"CPUTranslator: Enable FMA for alderlake CPUs (#11106)","sha":"1a0392bf15fc01e55eda94f5e886a88844c25ad0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-11-04T16:44:25Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Whatcookie"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-04T16:44:25Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"SPU/SYSINFO: Disable TSX by default for TSX-FA cpus (#11105)\n\n- Also detect the new RTM_ALWAYS_ABORT bit in cpuid\r\n- This new bit indicates that RTM is disabled in the microcode\r\n- On cpus with RTM_ALWAYS_ABORT TSX can be renabled by writing 0x4 to the msr 0x0000010F","sha":"bf6044fcedc508696d4a3d205958230c1562b169"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-04T17:24:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-04T18:05:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Do not clip region using renderpass renderarea, we have scissor for that","sha":"933d96af5f332c7c26bf620689863ce9d78463fa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-10-15T09:11:16Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-04T18:32:15Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fixes of PS3 filesystem EDAT/SDAT handling\n\n* Return EFSSPEIFIC if encountered corrupted EDAT or an unmatched key in sys_fs_open and sys_fs_read.\n* Fix validate_dev_klic() for license-free EDAT.\n* Fix EDATADecrypter::ReadData() for when size + pos > file_size but pos < file_size.\n* Try to save up to 16 decryption keys. Educated guess based on NPDRM file descriptors count llimit.\n* Return LICENCE_NOT_FOUND if needed RAP file is not found in sceNpDrmIsAvailable.\n* Check additional sys_fs_open errors for sceNpDrmOpen. (EISDIR, ENOTMOUNTED)","sha":"c49ebba64809ce3d02060202bffb9ab651c494be"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-04T20:18:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-04T20:41:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"fix npDrmIsAvailable","sha":"af3ef02ca091a8925b8ac0227d94a3322fb80e52"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1712979?v=4","date":"2021-11-04T21:28:19Z","email":"dsdominykas@gmail.com","login":"xddxd","name":"xddxd"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-04T21:28:19Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Specify the compiler for llvm_build (#11110)","sha":"c3888f5bbb7715730c5522c79a5a1e8cb5001950"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-04T19:01:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-04T22:34:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Consider TSX-FA in settings dialog","sha":"067b35217afd861a8e2bf31e6839d19e98192853"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-04T20:04:01Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-05T20:55:07Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Restore shader disassembler to working state","sha":"f7eacf70ec74d4ca34ba6d3fa388f202a8d24161"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-04T22:33:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-06T00:02:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: improve fsr tooltip area","sha":"dac0baac0de70aa3b50d15e548a4d3453f53ea51"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-04T23:02:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-06T00:02:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"vk: make upscaler dynamic\n\nThe config option was marked as dynamic, but was never actually changed ingame","sha":"88bb26afb4262e6d679c1f87b4026f14fcbd71af"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-05T15:32:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-06T12:47:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix initial TSX selection","sha":"f9abe4049411bd4282534087940332cf0407d217"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-11-05T21:05:04Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-06T18:12:12Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Hook up 128 bit spu verification\n- Also fix FMA enablement for sapphirerapids","sha":"7573d7289b603deb8f8f9b6bf008ebd2ec13c98f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-11-07T15:23:51Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-07T15:23:51Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"llvm: Add AVX-512 detection for Alderlake (#11121)","sha":"53f2594983f72cbaddbabe43622d7aa0957f1b6d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6632271?v=4","date":"2021-07-25T18:40:35Z","email":"velocityra@gmail.com","login":"VelocityRa","name":"Nick Renieris"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T10:10:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"The Velocity Improvements: RoomData/RoomMemberData commands & fixes\n\nmodules/np2: Correct some SceNpMaching2 ptr type endianness\nnp/handler: Use STL .contains() method\nIgnore USECRYPTO & USESIGNATURE in recvfrom/sendto\nImplement RoomData/RoomMemberData commands","sha":"b70f08d850e398333598a8e66310d798da2a3fa2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-26T10:00:17Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T10:10:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rpcn: extra changes","sha":"704e74b90451eff736646a6811cb5d895a7b7199"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-10-28T04:36:57Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T10:10:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rpcn: new allocator + refactoring of np_handler","sha":"516cb959cbdb35f29e636f85b04fe372f84b6bba"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-02T23:53:57Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T10:10:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"NP: Cache Manager + improvements","sha":"d41e40542073b2ad8f6430f94ae4413d569ecaff"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-06T20:18:31Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T10:10:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"NP: Implement sceNpBasicGetFriendListEntry","sha":"c194804fec8f726dab0142f08e0ed89aeef6652c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-07T16:26:30Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T10:10:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"NP: Implement sceNpMatching2DeleteServerContext","sha":"dc0793b731f87569b730a037524beb6ad4309698"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-08T17:58:24Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-09T09:39:49Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix texture state propagation between unrelated draw calls\n\n- Older games can load all textures before a draw sequence and then swap shaders for different draws.\n- Optimizations in texture state streaming make it so that only referenced data is carried forward.","sha":"7e3eab99158d27263d4c358e9c4bbf601a6fba97"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-08T19:47:15Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-10T11:43:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"NP: add signaling_handler wakeup on connect queue","sha":"50bf528f3fabe6ab81b04b4184460b88a378d768"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-10T17:30:48Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-10T19:03:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Special nullptr optParam->cbFunc case fix","sha":"b736691bdefaf09370940b483bea972cfce61333"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-10T22:34:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-10T23:36:42Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"curl: add verbose logging\n\nand really verbose logging i you use --verbose-curl","sha":"2359ba9aed780cd004f98613582055423a2c9d63"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-11T03:54:53Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T06:35:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add HAVE_SNI definition to curl build for wolfssl","sha":"2248007c9a3ed81e565ac7958a429861e805e32b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-11T04:06:47Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T07:11:14Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fixes rpcn_client.h func ptr comparison warning","sha":"ba727e13aecb78433183f959846340d774f2dd49"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-10-26T08:56:47Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-11T09:58:38Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Optimize branch following ORX\n- test the input of ORX directly for zeroes, instead of the result","sha":"3fde455932e9d210adb6afe9b40ba2fac4e538b0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T13:20:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T16:37:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Curl: fix --verbose-curl option","sha":"cbec04cd0fb9ec814cd24cc3b7879154fed4db38"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/9744201?v=4","date":"2021-11-11T18:57:23Z","email":"cglmrfreeman@users.noreply.github.com","login":"cglmrfreeman","name":"cglmrfreeman"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-11T18:57:23Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Update OpenSUSE Qt5 dependencies (#11135)","sha":"48ad7ca3a081250b4ce6f49f6aa31cce2fd0805a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T20:59:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T22:06:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix initial pad settings dialog size and position","sha":"8b3ed7b5991d649c726c9b966b30032540ce598b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23005148?v=4","date":"2021-11-13T15:11:49Z","email":"cjj19970505@live.cn","login":"cjj19970505","name":"陈俊嘉"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-13T15:11:49Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Disable vulkan in Windows build when HAVE_VULKAN is off and other cmake build fixes. (#11118)\n\n* Make WolfSSL build support multi-config generator.\r\nFix a build error in Windows when using QT's moc.\r\nDisable vulkan in Windows build when HAVE_VULKAN is off.\r\n\r\n* add WIN32_LEAN_AND_MEAN definition to VS project.\r\nadd HAVE_VULKAN definition to VS project.\r\nDefine NTSTATUS in main.cpp.","sha":"05881ffa6272e716547c38bad7fa9ff65877e0e4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-13T17:22:54Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-13T17:22:54Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sys_event: Fix PPU queue forced uproot of waiters (#11147)","sha":"48ad959697eab6158231121815e882571c3fadbe"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-13T23:15:27Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-13T23:15:27Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Account empty EDAT (#11146)\n\n* Improve sys_fs_open logging","sha":"cfe08de951d5a4349dc909eab40af0115b7f304b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-14T15:49:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-14T16:07:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix headless mode","sha":"7dc3a50ddfd79d2f24322d5b30c094d709c4b0f9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-13T16:35:22Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-15T15:14:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Clear some leaking register state between runs","sha":"1f627caa81c58199e2ebdf4b6a012cf518dc81dd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-13T20:47:07Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-15T15:14:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Properly implement immediate mode rendering\n\n- Treat the draw commands as being consumed on-the-fly with ATTR0 as provoking attribute\n- Analysing streams sent to RSX and the results implies they are consumed fully inline.\n This only makes sense if a provoking attribute is present. The 'static' register is truly the immediate register for the draw.","sha":"59b1c324a991b14bf82e6f2afa3c20c2a26a258b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-30T22:48:41Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T22:03:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: add system sounds","sha":"ff5e31f396c42cfd9e1bb02bb097de8657fa9280"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T21:15:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T00:38:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellGem: add comment about hack","sha":"26475f8f40b5e80f57beb9d47642b0fd30f1d443"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T21:16:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T00:38:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: add made up CELL_PAD_CTRL_PS enum\n\nAnd remove useless comment about 0x0 buttons. It's a bitmap, so 0x0 is literally useless.","sha":"56241838c0fe240e1d5404f1afe82abcae2fb062"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T21:20:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T00:38:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: add R3, L3 and PS buttons\n\nUnused at the moment","sha":"44b42f68fdee6af5a2e0487b52a7a3764657f9c7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T21:21:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T00:38:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: add stick input to native dialogs","sha":"f6e04ffdd2f29cfa13e55a0bd4db54256057d39c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-16T08:02:43Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-16T08:02:43Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Qt: Fix log prefix in log_frame","sha":"6283600b8444683da2d771bb8222599fc80ac2ee"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T17:26:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T08:31:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Some typo/warning fixes","sha":"0d7b7585a812ec288f9c76fb509f5c465e35d5f1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T17:26:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T08:31:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellRtcGetDaysInMonth: fix param check","sha":"f6af5ff13acee20fd9cc636390b10fd790072221"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T17:28:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T08:31:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellKbCnvRawCode: use proper constants\n\nand comment out unreachable code","sha":"026efd96b27747238c70292a7a58afccf6a60381"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T17:30:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T08:31:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: fix possible segfault","sha":"4d0330bf82c008f5076f3f17084cc03c0f1bd8b0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-15T17:31:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-16T08:31:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"VK: fix NVIDIA driverVersion check","sha":"0f7534c7557fbfbbd8e3111b03bb45f94194208c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-16T12:13:34Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-16T12:13:34Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Update LLVM commit","sha":"fef8905dc224a8be691cfaef19fe32cfa057bb4f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-17T18:02:01Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-17T18:02:01Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Implement sceNpManagerGetPsHandle (#11164)","sha":"22910c02a912d9efaf1df3cae1c4031297f54bf4"}
|
||||
{"author":{"avatar":null,"date":"2021-11-17T19:19:53Z","email":"arus@arushome.lan","login":null,"name":"Artur"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-17T20:29:24Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Properly recognize triggers and axes for evdev pads.","sha":"9f35c3f52dec6c36eaf4aec6b5b9736e607f7074"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-17T21:20:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-17T21:53:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: only show prefix for fatal messages\n\nAlways messages are supposed to be humanly readable","sha":"de2be9063655b5a92a9acbb19019320c62a434ca"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-18T01:41:48Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-18T14:50:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update SpuTest to v1.1.2","sha":"3587cfd2df6c3319a2fe1e1a7dda010abed25f86"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-18T11:25:02Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-18T15:47:54Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Update LLVM commit (fixup)","sha":"3d859a7493dd21ecaf793bfe1da28d87469a373f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-19T17:44:22Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-20T06:57:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"GUI: Rename memory string searching tool to \"Memory Searcher\"","sha":"7352a5a495498cfb3d1e790244951be8f64b3bd5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-19T17:12:17Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-20T06:57:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Memory Searcher: Peek full string in log, fix case-insensitive search","sha":"e5eb7271104b64764f505d939019d8b30ed81c8f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-07-28T15:17:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-20T07:43:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: simplify backup icon copy procedure","sha":"7eee9e7b05605a031f909e7708afdf740bd9ac24"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-07-28T15:31:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-20T07:43:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: simplify callbacks.resolve_path","sha":"5272dd951b0605c8eccde6c433d604c8b2acd14d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-07-28T19:09:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-20T07:43:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"improvise CELL_SAVEDATA_ERRDIALOG_NOREPEAT","sha":"09ead539a5e4af9810c270cf946b2c1efdc281f3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-07-28T19:46:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-20T07:43:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSaveData: always log setList and setBuf\n\nFor debugging","sha":"22e3075c64109f65d91038aee9648143b309fbd2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-22T08:13:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-22T08:41:12Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Input: Log path on hid_open_path error","sha":"e7fc2bfa3b145bed275f9c1ee40b39055e1ab953"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-21T09:26:38Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-22T11:48:34Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"lv2: Add missing reservation disowning in lv2_obj::yield","sha":"f7b55ec8d4e13d3cae4984912abd21ea5fc95c35"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-21T09:41:05Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-22T11:48:34Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Debugger: Show PPU reservation data\n\nAsterisk marks the offset of data that had been given to the guest PPU code.","sha":"524b065bc87669f8fbf7dc374930bf0bc5601476"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-12T17:32:35Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-22T18:03:07Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_fs: Place all path-format checks upfront, implement more checks","sha":"c52d44738197069585affe85db45e1e94c1d9516"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/4204285?v=4","date":"2021-11-18T21:46:41Z","email":"orbea@riseup.net","login":"orbea","name":"orbea"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-22T20:45:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cmake: Use GNUInstalldirs","sha":"59f253ba242d509bc1d2eb41e2d075e40745aa87"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/27760396?v=4","date":"2021-11-23T02:19:36Z","email":"shockdudex@gmail.com","login":"shockdude","name":"shockdude"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-23T02:19:36Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sys_usbd: make emulated turntable interrupt transfer as fast as possible\n\nAlso add missing mutex","sha":"f9434091c3021c524a19ae56c823a9f75371d238"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2021-11-22T16:39:37Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"AniLeo"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-23T21:48:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"vk: Remove lavapipe workaround\n\nCurrent lavapipe version now has support for \nshaderStorageBufferArrayDynamicIndexing","sha":"1df8f52a9ff4ad33a6ad06cbdb7b201a14805a14"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1056270?v=4","date":"2021-11-22T17:52:18Z","email":"clienthax@gmail.com","login":"clienthax","name":"clienthax"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-23T22:41:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Stub uvc camera init","sha":"4c0ef37a5cb32eb37fa93ec865379380f1fda793"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-15T19:58:57Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-24T13:02:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Update sampler format class when inheriting mipmap slices/sections","sha":"97bd8f7bc1bcbccbf48c2ec66b103b82bb5ba4c0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-16T20:01:51Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-24T13:02:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Enable handling of X16 blit targets","sha":"58f0fa3ca5ea548bcd45ae91018e8f33251a90f6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-16T20:09:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-24T13:02:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix handling of scaling requests for packed formats\n\n- One does not simply interpolate RGB565 components as U16 data!","sha":"a21c6c4628187b74db9923c48bf8cc35c1b1f131"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-17T20:02:08Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-24T13:02:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Roll back some optimizations\n\n- Just use RGB565 for all blit targets. Avoids really dumb transforms done by GPU hw.\n- When X16 is used, all the channels get written to R channel alone. CmdBlit does perform format conversion!\n- gl: Force image copy when blit is requested with compatible targets. Avoids format conversion issues.","sha":"94a3b1cfe84f036af720c320fc8c23d365ae91ee"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-22T22:03:40Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-24T13:02:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Unused var","sha":"4df1a938b1d3521bfe5cbe66e24d55725ff90da2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/4204285?v=4","date":"2021-11-24T06:40:04Z","email":"orbea@riseup.net","login":"orbea","name":"orbea"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-24T18:14:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rpcs3: Fix the DATADIR path for AppImage\n\nEven when DATADIR is defined the other paths may still be correct.\n\nFixes: https://github.com/RPCS3/rpcs3/issues/11195","sha":"a84223bdc6ea3b2c6d371508a0eed4ced8b24170"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2021-11-24T18:41:05Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestrel"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-24T18:41:05Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Audio backend improvements\n\nCallback based audio update.\r\nUpgraded common backend interface.\r\nAdded Cubeb backend.\r\nSupport multiple audio providers.\r\nDropped pulse, alsa, openal backends.","sha":"37a722cc1deac48658ced76d251aedcd9a9dac03"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1056270?v=4","date":"2021-11-24T20:59:48Z","email":"clienthax@gmail.com","login":"clienthax","name":"clienthax"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-24T20:59:48Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Emulated v406 usio","sha":"2b924175aa694ec877e7e5843a0fc5eb7cd7bcf8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-23T14:52:41Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-24T23:53:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Impl sys_usbd_get_device_location","sha":"5e158bd3f25ecd7ae01695f3ff2d5bfbccb1d754"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-25T15:03:32Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-25T18:42:12Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Ignore Log subsection for config obsolete check","sha":"276ee81da812bee01cb75d13e273d82f80c91cf6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-11-27T01:49:35Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-27T01:49:35Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sys_usbd improvements (#11202)","sha":"4fe17fcecf9c1386cab033f2d43695e901f5c0ab"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-27T13:39:48Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-27T14:47:41Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix sloppy format matching test","sha":"44fe6f6d393ce638471a497f9a0e299554b87197"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-27T16:22:25Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-27T22:44:21Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix incorrect mixed transfer modes for mipmapped VTC","sha":"38bfefcdfad44a94e5c2fc661917ce432b53f246"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2021-11-29T11:52:02Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestral"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-29T19:43:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"CellAudio fixes","sha":"e5005597fe65855274bac6cea81c6f354ae1577b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-24T20:20:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-29T21:12:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update FAudio to version 21.11","sha":"09b047611b52332ca4122dccb04fef55603a7999"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-24T20:21:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-29T21:12:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update glslang to version 11.7.1","sha":"a586d1c529b9d5561a3f504b5904fedffe562b24"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-29T20:50:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-29T21:12:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update xxHash to version 0.8.1","sha":"270c2e58a078a0f4bf6d62f3cff6685bca374f7d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11153579?v=4","date":"2021-11-30T16:12:37Z","email":"jbeich@FreeBSD.org","login":"jbeich","name":"Jan Beich"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-11-30T16:12:37Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"CI: switch FreeBSD to Clang/libc++ 13 (#11214)","sha":"f910a152f1f1e228ffacc154b268ccf74db16dae"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-12-01T16:09:07Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-12-01T16:09:07Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"fs::file: always use strict reading mode for large reads (#11206)","sha":"f16949c2928714537e18e4589f9ec0493d3f729b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-02T20:57:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T20:55:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"VK/GL: honor game's aspect ratio when scaling","sha":"c8d4a0dcdc44a933be403c8886fdc897c6dc19f3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-11-09T20:06:52Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T20:55:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: Fix image scaling\n\n- Specifically fixes a corner case where double transforms are required.\n Technically this can be made more readable using transformation matrices:\n * M1 = transform_virtual_to_physical()\n * M2 = transform_image_to_virtual()\n * M3 = M1 * M2\n * Result = Input * M3\n But we don't use a CPU-side matrix library and it is not reasonable to do this on the GPU.","sha":"22a7b026e7d9387acc6b29fbf4d60b824f04178a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-10T21:18:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T20:55:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"avconf: Add const to fxo references","sha":"aea1ec2594fd5f0bdf3ac988ac98b35d8b56b420"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-11T21:23:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T20:55:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAvconfExt: add some trivial param checks","sha":"88d0b7d135d807af76722129a65fc4d9a993c11a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-12T09:04:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T20:55:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: default initialize RsxDisplayInfo","sha":"474baca6d80ccfb64c817c43e5b86aaaadc2d224"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-01T14:30:39Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T20:55:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: Simplify unconstrained aspect ratio conversion\n\n- There is a reason resolutions are defined by only a height variable.","sha":"9bb46aa9442d3d655860f499d08a70d17fc4756d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-12-02T10:17:10Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-12-02T10:17:10Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sys_spu: Implement SPU image segment info checks (#11211)","sha":"0ab36ef44d2dd30b67427e9fa89fae988e6d131c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-02T13:02:08Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-12-02T13:02:08Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"rsx: Add some sensible fallbacks (#11219)\n\n* rsx: Add some sensible fallbacks\r\n\r\n* Update GLPresent.cpp\r\n\r\n* Update VKPresent.cpp\r\n\r\n* Update rsx_utils.h\r\n\r\n* Update rsx_utils.cpp","sha":"02832d9623c1e389bbbd20ee7f27aadf2421c5d7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/2715503?v=4","date":"2021-11-28T07:19:44Z","email":"dh.rpcs3@gmail.com","login":"DHrpcs3","name":"DH"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T18:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"[Utilities] Fixed area_base operator* scalar type","sha":"813c3298ad771fc5d0d0614d3400a9089eb8c084"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/2715503?v=4","date":"2021-11-28T07:21:41Z","email":"dh.rpcs3@gmail.com","login":"DHrpcs3","name":"DH"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T18:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fixed debug build compilation errors\nconst_str_t constructor without arguments shoud be constexpr for usage as default initializer in constexpr functions","sha":"56d922999f422171af7b1f1c8344cfe8762c299b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/2715503?v=4","date":"2021-11-28T07:22:34Z","email":"dh.rpcs3@gmail.com","login":"DHrpcs3","name":"DH"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T18:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"sys_spu_thread: Removed unused field access","sha":"29818673756dee7ed1487719195df894a2b7e372"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/2715503?v=4","date":"2021-11-28T07:30:41Z","email":"dh.rpcs3@gmail.com","login":"DHrpcs3","name":"DH"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T18:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"[Config] Use std::less<> for std::map<...>\nReduces amount of string copies\n[Utilities] fmt::replace_all: avoid creation of temporary strings","sha":"cccfb89aa08cef786bb0803189fb6d0863706864"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/2715503?v=4","date":"2021-11-28T07:33:24Z","email":"dh.rpcs3@gmail.com","login":"DHrpcs3","name":"DH"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T18:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"[rsx] reduce size of config structs","sha":"49c02854f59197f61fae639f7ce3d89167c0edc1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-02-10T17:20:14Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: modernize some code with new DSL\n\nPPU: rewritten instructions VMHADDSHS, VMHRADDSHS\nPPU: added optimized path for VPERM (ra=rb)","sha":"abe498f35c298e55612bfd29a1bd51dc40ee797d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-06-17T15:24:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: rewrite some packing instructions\n\nRewritten VPKSHSS, VPKSHUS, VPKSWSS, VPKSWUS.\nDecoupled saturation test from sat pack pattern.","sha":"e7c827f73b0ac36b161001b2211b3707761f641d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-06-18T06:29:46Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: rewrite more packing instructions\n\nRewritten VPKUHUM, VPKUHUS, VPKUWUM, VPKUWUS.\nDecoupled saturation test from sat pack pattern.","sha":"86b194014bb9ebbabc30e3669010c098fe70d25d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-06-25T07:50:42Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: allow to drop setting SAT flag (optimization, module-wide)\n\nImplement ppu_attr::has_mfvscr (partially, module-wide search).\nIf this instruction isn't found, allow to drop setting SAT flag.\nIt's based on presumption that only MFVSCR can retrieve SAT flag.","sha":"c9d8e59dbf92845ad09f3ee2e88dc5381bc29ad4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-06-29T20:16:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: modernize most vector instructions\n\nRewritten VSUM instructions:\nVSUMSWS, VSUM2SWS, VSUM4SBS, VSUM4SHS, VSUM4UBS","sha":"04c9d013903110cc5cc51f025b8d5a395dad0459"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-25T18:15:24Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: inline remaining vector instructions","sha":"209b14fbaccabcab16722d165d887762b167bc93"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-26T17:01:29Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-02T21:14:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: rewrite and optimize saturation bit\n\nUse vector accumulator","sha":"e3e39e8de360da466d0206fd77f0d8aacc8e5798"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-12-04T10:14:46Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-04T22:22:32Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"logging: Tell apart PPU access violation caused by executing unmapped memory","sha":"cb4711203bcba3624d03095017ea2c75d55cee2c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-12-05T22:23:05Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-06T09:34:11Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Fix vgf2p8affineqb usage\n- Reverse the order of the bytes in the selection masks. Previously it was assumed that byte 0 would determine the output of bit 0, but byte 7 determines the output of bit 0.","sha":"0617e9e14b2066dca610f4a75857f8da1eabc74f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/85196642?v=4","date":"2021-12-06T10:42:10Z","email":"85196642+Void48@users.noreply.github.com","login":"Void48","name":"Void48"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-06T11:05:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update README.md","sha":"a09fd80905a55c39ead8ff1c64d9761a313e5ef7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-02T23:45:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-06T19:50:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVideoOutConfigure: treat unknown aspect as AUTO","sha":"a4ad0a9468b7a5f96a76032986ed3bacb393be6c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-22T11:49:30Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-07T10:04:10Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Put std::hash specialization out of std","sha":"d6420b8803ae4fec21725f2b4141b172702fc961"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-11-30T14:40:46Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-07T10:04:10Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Introduce coroutine support (util/coro.hpp)\n\nImplement coroutine types `lazy` and `generator` in stx namespace.\nImplement fs::list_dir_recursively.","sha":"6b40d69a8f4b472bbbbe5e97d68a8a7f35cf5be0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-07T10:21:24Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-07T10:21:24Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM DSL: print some debug info in get_const_vector<v128>","sha":"6730dc1dc486f9ab2a742e7ae4647af94c6f8a78"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-07T12:35:51Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-07T12:35:51Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: fix bitcast usage to enable constant folding","sha":"8abd3e8bb4767f622129bc4faec7c3a501567e7e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-07T17:46:31Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-08T20:58:32Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Improve image aspect tests\n\n- Replace old format-based detection with proper aspect test.\n Explicit image aspect has been available for a long time, but older\n code was not updated.","sha":"7ca15c60bbb8b941679d5d7f6aa7b61848643520"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-07T20:06:13Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-08T20:58:32Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Avoid skipping input mask checks due to static flow control","sha":"d523f9cc6b730137d0e2be5d8097f750311a46fe"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1712979?v=4","date":"2021-12-07T22:09:48Z","email":"dsdominykas@gmail.com","login":"xddxd","name":"xddxd"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-09T00:21:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Remove unnecessary define","sha":"f690d550455c6bb16a6a2fbcd3b1ebe7cdccd9a6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T21:32:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-09T00:46:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio: use members instead of config values","sha":"e6b4655142c7f1e6329d8ee2245e313a33e11fe8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T21:36:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-09T00:46:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio: move some stuff to cpp","sha":"68466f05b6491a7c5e2e3401940b7f00b71423fd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-01T23:58:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-09T00:46:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio: recover Cubeb on failed initialization","sha":"3f3b4bc36393bb632141ff509804b730e9382775"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-02T00:00:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-09T00:46:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio: relax FAudio error handling","sha":"5f7e5a9844302dc4523c15fd5e6bea6fb4fb7356"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-02T00:01:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-09T00:46:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio: Recover XAudio on failed initialization","sha":"f48c5358023ade4356ad32b390db0f21e5c8383e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1056270?v=4","date":"2021-11-30T13:16:27Z","email":"clienthax@gmail.com","login":"clienthax","name":"clienthax"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-10T13:23:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Debug SPRX check","sha":"6f9adbd162c7b4a3f3d936ae573522d6a2a3de70"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-10T13:24:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-10T16:27:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix screenshot path creation","sha":"56fe450959f28ee3ce667816d5a312da2e549fc2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-12-10T16:18:42Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-10T16:32:10Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Disable affineqb shufb paths temporarilly","sha":"2f93df480bbc3f4cc84ab71bc47fb735a09725e8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2021-12-12T20:35:56Z","email":"alisfquarto@live.it","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-12-12T20:35:56Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"macOS moltenVK support and SIGBUS handling (#11252)","sha":"08333e0876af55c204493514cd2ce145c59eb807"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-12T23:13:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-14T19:30:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSaveData: prevent some potential crashes due to corrupt files","sha":"cc21d1b3cfe51f61d5c40e485d47fb18b03c20d6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2021-12-15T07:17:11Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-15T15:05:55Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Add missing virtual destructors to some base class","sha":"43b7d1fe986ad992611037afaf2d9c4bbc3d139e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-16T22:19:09Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-17T16:21:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Input: implement stick multipliers for keyboard","sha":"bf739aa156c4d5fa3abcfac70b65eaff5e7ce2f4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-16T22:48:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-17T16:21:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Input: fix min stick input of keyboard pad handler","sha":"18f59d3be87546a689b0438701a84b3bfdacf1af"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-17T18:48:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-17T18:48:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"TSX/PPU: fix conditional store regression","sha":"3e1e1a683c9d74c5fd1f2f9987e9646fdf7cb337"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-18T15:12:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-19T17:23:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"TSX: refactoring M\n\nRemove first stage 'optimistic' transactions.","sha":"61c64d1060f755b91f3fff02f5655085f7bc6f5a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-18T23:06:08Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-19T17:23:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"TSX: enable same data optimization for PUTLLC","sha":"c0bafbc8043e84089effd5a403f0d35e7654a2e2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2021-12-21T09:36:09Z","email":"alisfquarto@live.it","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-12-21T09:36:09Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Fix remap_vector redefinition on macOS (#11271)","sha":"47e4a95d8f05dfc114b2ed9ef1a4fb7d5aa9ef61"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-04T22:41:53Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-21T20:28:09Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"BufferUtils: refactoring\n\nOptimize CPU capability tests for arch-tuned builds.\nSeparate streaming and non-streaming utilities.\nRewritten copy_data_swap_u32(_cmp) with AVX2 path.","sha":"76ccaf5e6fcc986b074b7645020adb7a03f0f388"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-15T14:47:02Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-21T20:28:09Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Use aligned stores in write_index_array_data_to_buffer\n\nEnsure that target buffer is cache line aligned.\nImprove stx::make_single to support alignment.","sha":"262ff016190d0229b08501e2b787d60b505b5cf9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-17T13:40:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-21T20:28:09Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Use PAUSE in vk::query_pool_manager::get_query_result","sha":"12e3c9e08ba2b8edbfddd6fdc45bb94812f75510"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-22T16:27:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-22T16:27:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Implement \"built_function\" utility (runtime-generated assembly)\n\nSimilar to build_function_asm, but links without indirection.\nAchieved by emitting code directly into a byte array.","sha":"dcd011048dca283e1647c75a2a7e23f7207f2af6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-19T21:48:47Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-22T19:08:53Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Remove zclip hackery\n\n- Calculates precise Z value as requested by the game\n- Works properly if the underlying Z format matches the PS3 1:1 but may cause minor problems otherwise","sha":"1ce53491999e8d72219dcfa10d45c6fb87014984"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-20T18:33:45Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-22T19:08:53Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Enable fallback for devices without wide integer Z buffers","sha":"de495952fdf64e3df2dd3d6ed9b4880a6d0917a7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-21T09:11:25Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-22T19:08:53Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Handle floating point shenanigans\n\n- If near and far clip are too close together, the API will not distinguish between them leading to out of bounds values","sha":"56dd09f4fe8b1376057e1fa581ddf633d267f790"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-23T23:00:21Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-24T08:35:50Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Drop libwayland-client from official appimages","sha":"d9a130862486e257887cd337749c232f505a6330"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-24T11:11:47Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-24T12:13:33Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Exercise caution when testing for overlaps in invalidated sections","sha":"39ef39aa4e7cc939367ce4f7727eaea74e897eec"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-24T11:21:37Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-24T12:13:33Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Remove noisy debug print","sha":"28d7af313b5d0dac72ae869b2aee4658f660af8c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2021-12-24T12:46:37Z","email":"alisfquarto@live.it","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2021-12-24T12:46:37Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"macOS: Implement texture converter for Metal (2) (#11289)\n\n* macOS: Implement texture converter for Metal (2)\r\n\r\n* Fix texture conversion formatting","sha":"a0040e6fb1236be0f9bf2911e4f887dccb15a80a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-12-24T18:19:24Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-24T23:22:49Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"sys_rsx: Outlaw mapping sys_vm memory to RSX IO address-space","sha":"6ee9d0f35f925c0d41813635ec220a60033db11c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10002815?v=4","date":"2021-12-26T00:32:53Z","email":"me+github@jlay.io","login":"joshlay","name":"Josh Lay"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-12-26T08:20:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fedora (35): Adjust to Pipewire adoption ++QT deps\n\nProvided build steps didn't work on Fedora 35, these packages seem to settle things 😄","sha":"b4ec4f46b8508ddf23de53f39b8effb570a1955b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-26T09:10:47Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2021-12-26T09:50:31Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix zclip w scaling","sha":"a9303acfdfc56b69f8d0280809522d0f6d218710"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-21T20:25:23Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T11:40:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Don't use vm::preallocated flag in patch enclave allocs","sha":"e3e6fb54895d0e5939e2bc9b4bd8fcfccd783e7f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-23T15:03:48Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T11:40:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Re-refactor copy_data_swap_u32 again\n\nDrop AVX2 path for now, since it usually operates on small data.\nRely on automatic SSE vectorization on recent compilers.\nSide refactoring on JIT.h to workaround weird conflict issue.","sha":"3cd8891ab8affea4841aa1009afabf49e0a102d0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-23T15:14:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T11:40:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"BufferUtils: remove dead code (vertex streaming)\n\nRIP. It won't be useful.","sha":"599e00d6dab62b7329d4325c72a4ca008d9e17e9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-24T14:37:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T11:40:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Disable built_function on __APPLE__\n\nWorkaround for #11287","sha":"d36a715b24ce9e3dbb05fd20c1259a3a788d7f14"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-24T14:57:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T11:40:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"copy_data_swap_u32: build AVX-512 path","sha":"8b4b6ba9468e58425eb58436bef6861abb05cc8b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-25T14:18:41Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T11:40:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"rsx_methods.cpp: optimize compile time (120s to 10s)\n\nUntemplate NV308A_COLOR","sha":"510041a8734aac02c88fb772c1eb35f3e59744d9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-24T17:33:32Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T13:41:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"LLVM: enable some JIT events (Intel, Perf)\n\nMade some related adjustments.\nCurrently incomplete.","sha":"d8360332124ea52677b8beaf5d1b89bb2221a3ad"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T16:21:50Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T19:01:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Add an error check in JITAnnouncer event listener\n\nThis is a bit strange one.","sha":"122555fb66c3ab1ca55473289c683b7b8e016436"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T23:24:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-26T23:24:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Update LLVM commit","sha":"7b24df0957d01fd47b0d7ed267d6cc2837ff3305"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-27T13:17:48Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-27T13:17:53Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fix builds on additional platforms\n\nLLVMIntelJITEvents is awailable only Windows/Linux","sha":"9cfdd8afea446e2ef7939f7e0709d28647d1995b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1056270?v=4","date":"2021-12-26T17:13:01Z","email":"clienthax@gmail.com","login":"clienthax","name":"clienthax"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-27T17:58:09Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Handle SYS_NET_IPPROTO_IP get/setsockopt\nImprove net logging.\n\nShould allow latest vsh to load (Depending on windows version apparantly..)","sha":"6837370a629bb11120d99085b706755d2a634cf0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/5672538?v=4","date":"2021-01-16T00:43:09Z","email":"theracermaster@gmail.com","login":"al3xtjames","name":"Alex James"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-27T23:02:44Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"GDB: Rework to_hex/hex_to functions\n\nmacOS defines uint64 as an alias of unsigned long long. Drop the length\nmodifiers to resolve the warning on macOS:\n\nrpcs3/rpcs3/Emu/GDB.cpp:107:37: warning: format specifies type 'unsigned long *' but the argument has type 'u64 *' (aka 'unsigned long long *') [-Wformat]\n sscanf_s(val.c_str(), \"%\" HEX_U64, &result);\n ~~~~~~~~~~ ^~~~~~~\n\nAlso use std::from_chars to implement hex_to_{u8,u32,u64} instead of\nsscanf.","sha":"900d7df40f6e0c4b1b5b7d23c200e86c65d18643"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-28T19:25:36Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-28T23:45:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Update ASMJIT (new upstream API)","sha":"cb2748ae089e877fd0867ef5ab95ae7b6f2dca6c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-01-01T00:32:14Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-01T00:32:14Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"rpcs3_version: Bump to 0.0.20 (#11318)","sha":"61d9852632e5b417acf47299532c9f80f54d0fd5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-02T09:01:31Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-02T11:29:38Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Fully drop alignment restriction for compressed textures\n\n- This is just not part of spec, there is no enforcement for multiple of block size for width or height of s3tc compressed images.\n- This restriction does indeed exist for ASTC and ETC but we're not using those formats.","sha":"7c47b0029cbfc281da24d48304e035b3cfb75902"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-10-26T21:26:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-02T15:18:31Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"HLE: fix some types","sha":"1c014299eb5b4de380c467d2442c1d9e48b9c43f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2021-10-30T03:55:47Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-02T18:35:46Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU: Use REP MOVSB in do_dma_transfer\n- Try to use REP MOVSB when the size of the transfer is above a certain threshold\n- This threshold is determined by the ERMS and FSRM cpuid flags\n- The threshold values are (roughly) taken from GLIBC\n- A threshold of 0xFFFFFFFF indicates that the cpu has neither flag","sha":"31a5a77ae5276d70ec576427ee2d2863ea082c23"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-02T08:57:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-02T22:33:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Rebase hidapi to 0.11.0","sha":"13136ec083e6041f1fd4dd0c7f5ff61cdb1eb788"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-01-02T21:13:55Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-02T22:33:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"hidapi CMakeLists.txt fix","sha":"39a832d07f27153c6886e373fc0e4fe9edaf0944"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23005148?v=4","date":"2022-01-02T07:10:58Z","email":"cjj19970505@live.cn","login":"cjj19970505","name":"陈俊嘉"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-02T22:59:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add multi-config generator build support for Windows.","sha":"20cc2d72671948ec47014ba1998c67d62f8b17e8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-01-03T02:33:20Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-03T02:33:20Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"llvm: Update to latest submodule commit (#11325)","sha":"0d4543ca2a3d23a21d5ac9ba8654bddcf143c438"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/2995486?v=4","date":"2022-01-04T15:07:56Z","email":"Florin9doi@users.noreply.github.com","login":"Florin9doi","name":"Florin9doi"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-04T17:03:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"USB: Improve SingStar emulation","sha":"0e07d3c58fb146671b6910a8016e0203a40519a9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1056270?v=4","date":"2021-12-02T15:41:53Z","email":"clienthax@gmail.com","login":"clienthax","name":"clienthax"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-04T19:47:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fcntl 0xc0000007, 0xc0000015, 0xc000001c","sha":"350257e1a4445d7ad6e7eeadbb2d9d7f5e5f4e35"}
|
||||
{"author":{"avatar":null,"date":"2022-01-03T15:33:33Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-04T20:23:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix macOS hidapi CMakeLists","sha":"81c2fb508bf6c711fe473a0156efb2e2880301bd"}
|
||||
{"author":{"avatar":null,"date":"2022-01-04T19:55:42Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-04T20:23:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"macOS CI","sha":"7c39c1de9b8a128eb52b13495dca1771ba3f040b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-01-05T17:41:01Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-05T17:41:01Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"rsx: Fix wrong fault report in initialization (#11323)\n\n* rsx: Fix wrong fault report in initialization\r\n\r\n* Ensure emu.isstopped() == true at RPCS3 startup\r\n\r\nBased on zero initialization.","sha":"bba528e2aeff8d0dcc4e06194ed0a1bf7dc679ba"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2022-01-07T05:29:16Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestral"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-07T08:48:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellAudio: fix enqueued samples computation","sha":"9766d87126664b4f77abbbedfd2e3a7229d9c120"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-04T22:27:49Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-07T19:55:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Add optimized version of section removal code","sha":"6889b48973f49b04e49c9660bff9c7fa95c76422"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-04T22:28:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-07T19:55:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Bump surface removal threshold values\n\n- It is much slower to attempt surface removal than to render duplicates on the host GPU","sha":"7563655221e0805be7ca5f7f271b883e112d2b41"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-05T17:25:16Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-07T19:55:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Rework invalidation tagging","sha":"92824b67294faf6da54403d6c4e6060d4d87b3d6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-06T19:34:28Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-07T19:55:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: use coverage ratio to determine when too much data is overlapping","sha":"83026fd26356a6c4d2ec6b360a706cbb3632b2bb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2022-01-10T00:43:54Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestrel"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-10T00:43:54Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"More sys_uart packets (#11332)\n\n* Additional sys_uart packets added","sha":"1adc408ad74dd8b0097f50b1de28a2a925053d68"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-09T19:11:51Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-10T09:27:30Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"cellGame: Fall back to VERSION field if APP_VER is missing from PARAM.SFO","sha":"d874ca5d8c09cef10cbcc948b6f0bc5413c81c5a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-09T20:07:18Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-10T09:27:30Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Use 32 bit integers for pitch\n\n- RSX max pitch = 65536 which requires 17 bits","sha":"6d737e61fd4750f83a517ac96e454de4e844121f"}
|
||||
{"author":{"avatar":null,"date":"2022-01-10T13:37:26Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-10T16:18:49Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Disable OpenGL on macOS","sha":"29a6db8960ca1bc91a70a1243bc2c157460e0bc9"}
|
||||
{"author":{"avatar":null,"date":"2022-01-10T13:37:43Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-10T16:18:49Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"macOS: Warn if Vulkan is not supported","sha":"09700360f72c5440580d83e957bb94e1202e6bd7"}
|
||||
{"author":{"avatar":null,"date":"2022-01-10T12:44:41Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-10T19:34:12Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update wolfssl","sha":"b95065148796409e3b1d1366a6f122dc62143514"}
|
||||
{"author":{"avatar":null,"date":"2022-01-10T13:48:26Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-10T21:54:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"macOS: Fix arrow keys","sha":"ed542b2cb4f19f0ecdecce0659879c18e2d97855"}
|
||||
{"author":{"avatar":null,"date":"2022-01-10T13:14:14Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-11T05:05:17Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"macOS: Set correct maxfiles (fixes shader cache and SPU LLVM)","sha":"3571e6ef85efb3cd93dbc3b136c8e44cc304fa34"}
|
||||
{"author":{"avatar":null,"date":"2022-01-10T13:15:04Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-11T05:05:17Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Log maxfiles to file and stderr on *NIX","sha":"37f24d8c1cea9ae85a72c695ec4f3b5f9174a157"}
|
||||
{"author":{"avatar":null,"date":"2022-01-11T03:04:58Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-11T05:05:17Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"macOS: Increase thread stack size to 8 MiB","sha":"0d1c0e72a6049359a461e2557b36dff87ceaaa29"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-01-11T22:17:26Z","email":"alisfquarto@live.it","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-11T22:17:26Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Implement proper macOS version check (#11352)","sha":"ef66b002e0f5c83342e0a529ea0739fc67cfca50"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7947461?v=4","date":"2022-01-11T18:42:52Z","email":"zdanio95@gmail.com","login":"CookiePLMonster","name":"Silent"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T00:35:15Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"WolfSSL: Use a custom UTF-8 aware fopen on Windows\n\nFixes loading cacert.pem from Unicode directories","sha":"8c9090fd037ca300e95e0087dd50741498e90038"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-20T08:44:33Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T00:37:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"fs: Reimplement path resolving using std::filesystem::weakly_canonical","sha":"0c4b2ff06bcbb996911dfb864c31ad22d521f6b9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-20T08:57:49Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T00:37:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Bugfix of Emulator::Load disc path searching\n\nTurns out fs::file does not always fail when provding a path to a directory.","sha":"b9179de288828217a94608aeae2312f7c7146207"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-20T18:14:48Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T00:37:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"shared_ptr.cpp: Remove std::swap specialization","sha":"108846055b25b4a5a35ce4bfad1210cfbf3e3cfe"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-20T18:29:10Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T00:37:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Update PPUTranslator::MTFSFI for its intention to be clearer","sha":"a60cee65361962d349003c602b7374442d91616f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-11-20T18:34:08Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T00:37:39Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"aes.cpp: Use secured memory resetting","sha":"ef0bee9228a1fc9eeec24b14d956a4140f0a7b37"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-12T19:29:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T21:07:25Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"VFS: fix missing path deliminators","sha":"84753db574112c4f879e8ee372ba00b541782f91"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-12T20:20:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-12T21:07:25Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"FS: use std::filesystem::u8path","sha":"cd016be86e2faeaf940d6bc45742b564f2e0929c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/77000356?v=4","date":"2022-01-12T22:21:02Z","email":"pencilartassault@hotmail.com","login":"MalikIdreesHasanKhan","name":"Malik Idrees Hasan Khan"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-12T22:21:02Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Fix typos (#11361)","sha":"949e93bec7ade8d5854b6bb71f00b862775e4f93"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/19759300?v=4","date":"2022-01-13T04:24:04Z","email":"MSuih@users.noreply.github.com","login":"MSuih","name":"MSuih"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-13T04:24:04Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Revert recent file system changes (#11370)\n\n* Revert \"FS: use std::filesystem::u8path\"\r\n\r\nThis reverts commit cd016be86e2faeaf940d6bc45742b564f2e0929c.\r\n\r\n* Revert \"VFS: fix missing path deliminators\"\r\n\r\nThis reverts commit 84753db574112c4f879e8ee372ba00b541782f91.\r\n\r\n* Revert \"Bugfix of Emulator::Load disc path searching\"\r\n\r\nThis reverts commit b9179de288828217a94608aeae2312f7c7146207.\r\n\r\n* Revert \"fs: Reimplement path resolving using std::filesystem::weakly_canonical\"\r\n\r\nThis reverts commit 0c4b2ff06bcbb996911dfb864c31ad22d521f6b9.","sha":"f52602777877afa34a697cf84483b5c2dbbbaf69"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-13T22:47:15Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-14T07:21:38Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Enable shading rate hack for all GPUs\n\n- This is a hack, ideally we should be using coverage-based masking when writing the exploded texture.\n- We do not have access to the fragment coverage mask and it is non-trivial to integrate it in a competent manner.","sha":"d6aa834b5f305439d5e5d21cd7443d9bcc8cf86d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2021-12-30T16:39:18Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T03:48:04Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Initial Linux Aarch64 support\n\n* Update asmjit dependency (aarch64 branch)\n* Disable USE_DISCORD_RPC by default\n* Dump some JIT objects in rpcs3 cache dir\n* Add SIGILL handler for all platforms\n* Fix resetting zeroing denormals in thread pool\n* Refactor most v128:: utils into global gv_** functions\n* Refactor PPU interpreter (incomplete), remove \"precise\"\n* - Instruction specializations with multiple accuracy flags\n* - Adjust calling convention for speed\n* - Removed precise/fast setting, replaced with static\n* - Started refactoring interpreters for building at runtime JIT\n* (I got tired of poor compiler optimizations)\n* - Expose some accuracy settings (SAT, NJ, VNAN, FPCC)\n* - Add exec_bytes PPU thread variable (akin to cycle count)\n* PPU LLVM: fix VCTUXS+VCTSXS instruction NaN results\n* SPU interpreter: remove \"precise\" for now (extremely non-portable)\n* - As with PPU, settings changed to static/dynamic for interpreters.\n* - Precise options will be implemented later\n* Fix termination after fatal error dialog","sha":"580bd2b25eba04f9f30d3ed1df3b3f31e0387b02"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-15T12:30:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-15T12:48:03Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Fix accurateXFloat enabled state in settings dialog","sha":"1c0b3fc7e0a0c8546b4a146bd4a7b5075d8916d9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T11:30:13Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T14:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: restore previous NJ mode handling option\n\nFix the divergence between PPU Interpreter and LLVM.","sha":"e9efa73eed912a64baf5e2d19e6861725959bf28"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T12:28:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T14:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: fix VNMSUBFP sign handling\n\nPPU cache needs to be cleared.","sha":"6dda0471281413a582f3d719895e8d336f943168"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T14:36:08Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T14:36:57Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: fix VMINFP and VMAXFP accuracy\n\nPPU cache needs to be cleared.","sha":"df24cff0b19eaaaebe06b6037a97dbe9120e351e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T18:13:31Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T18:13:31Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: improve accuracy of VSL/VSR\n\nPasses tests, should now be equal to interpreter.","sha":"f95395b351249850b5e9a7197499dda299bbbed6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T22:00:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T22:00:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU Interpreter: fix accuracy flag dispatch","sha":"22240777aa153fcccb590a744d87d5de89585d3b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T22:16:46Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-15T22:34:47Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: Rename new ppu_use_nj_bit setting to flip it back\n\nSome mistakes were made.","sha":"5b980b99a03cebe11784f1caf93e0337a4126571"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-15T11:49:51Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-17T07:28:23Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Surface format remapping enhancements","sha":"f923eaf09a9424109f2fd6594a5051a5cd690653"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-15T19:28:11Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-17T07:28:23Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Round up 8-bit ROP output on NVIDIA cards\n\n- NV GPUs have a tendancy to be off by a very small margin, breaking rendering when greaterThan/lessThan checks are used.\n- NOTE: Currently this setting is using the sRGB flag which indicates 8-bit output.\n Only one game is currently known to care about this behaviour so this is good enough for now.","sha":"c38ca21a81eb5231f39e023b1979cc25e52b409c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-16T13:59:46Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-17T07:28:23Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Optimize 8-bit rounding logic a bit\n\n- NV hw does not like the raw use of round()","sha":"3e794e7fdb1e1f4a1c6c59cb75e21adc90d8c04e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-16T11:03:41Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-17T09:38:10Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix invalid descriptor setup if subdraw0 has broken vertex setup","sha":"000ec7162960f036526bad30ea4ea1711c8a59b5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-01-16T22:51:04Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-17T20:27:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Force close socket in sys_net_bnet_close","sha":"58fdf5815066ae81d8ad326177a116e6319df011"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-16T03:33:59Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T21:10:19Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fix PPU decoder settings dialog","sha":"14170afe8a02c09dcf6a6752f3935ae2816de793"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-16T04:47:42Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T21:10:19Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: more interpreter refactoring (VPERM)\n\nNotably, runtime-built SSSE3 version of VPERM.\nSome other instructions are refactored and vectorized.\nAarch64 impl of multiple instructions including VPERM.","sha":"b404d37eb04158cb75e679a65bb815a76d47b35b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-16T18:00:22Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T21:10:19Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: refactor VPack instructions","sha":"248f9424ac62b727ccb6109aea11b2832144ea02"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T08:32:44Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T21:10:32Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: refactor vector rounding instructions\n\nFix: nearbyint -> roundeven","sha":"14cca55b50543f573995f017d1cbc7c6d14b0c12"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T16:24:53Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T21:10:32Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Remove unnecessary asmjit::imm_ptr","sha":"4704367382bc13ae57a2523ce10f61574ecf27c1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-17T21:08:41Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-18T01:20:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: improve interpreter codegen\n\nImplement more sensible check for EVEX prefix and SSE","sha":"4728478247b197b89d8ed2ee26730228ae0bf818"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-18T01:21:42Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-18T01:21:42Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"ARM: don't calibrate TSC, use cntfrq_el0 info","sha":"08b02efc6c490e98c79c49427e1f87c1ded49d9c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-11-18T19:47:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-18T19:24:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: check for patch updates","sha":"484a3e6824fdcc2273a09ae357789b36102b0c27"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-19T18:37:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-19T19:41:05Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix RestoreDefaults crash\n\nFor some reason rpcs3 crashes when I restore the defaults of multiple configs one after another in the settings dialog.\nUsing the other signal seems to work.\nI don't wanna investigate this nonsense though, so I'll just accept the fix as is.","sha":"d92008abe4e9ddb321d1e9d7db6a3b01167f6f6a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-18T23:41:32Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-19T20:01:31Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: refactor shift and splat instructions\n\nFix utils::rol32/64 functions.\nFix immediate clamping in splat instructions.\nOther fixes.","sha":"b42fae09897642e1a180de98d15e78b27a327c46"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T05:31:05Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T05:31:08Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: fixup for old CPU\n\nAbort building interpreter function when out of registers.","sha":"d572d90bb751acc76576ebfa783c27aa0186d95c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T08:43:41Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T11:42:58Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: print internal interpreter build error","sha":"327c57702468bc456f5e4d50cb11c928947a3110"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T11:41:27Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T11:42:58Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: fix crash on SSE41 CPU in internal builder","sha":"8c3fb3998c4217f9fcb85a803fe61febe791a064"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-18T21:47:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-20T16:21:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Keep the total number of allocated samplers under control","sha":"2331dc3256fb2b6056000d821bd5790848a51f17"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-19T21:04:40Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-20T16:21:24Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Avoid leaking descriptor copies","sha":"3942a464fe6f09bd964b37f98e49f1d5af826886"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T08:44:04Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T18:16:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU LLVM: use masked stores for STVLX/STVRX\n\nDrop maskmove intrinsic, not portable.\nIts implicit NT hint may also hurt performance.","sha":"349f251d146af388a29d64b3644eb6f00e7d52b3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T11:42:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T18:16:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: rewrite LVLX/LVRX/STVLX/STVRX instructions","sha":"17b1a34ebf124f4f2bab09fc6125290599a87059"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T18:15:40Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T18:16:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Use global variable in gv_zeroupper","sha":"628354ba92a344248a053f4fc0de4f7a6d630819"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T19:57:21Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-20T21:05:40Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: rewrite LVSL/LVSR instructions\n\nMake the tables endian-agnostic.","sha":"aa7c9dd15d85b51506516f6e4c68906005d3b987"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T09:49:52Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T09:49:52Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: rewrite MFOCRF+MFCR instructions","sha":"0de9960772e5f3aa1d1d3654c68551e122cbffe9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T10:42:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T10:57:46Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU/simd.hpp: minor changes in DP instructions","sha":"a4d94a83b9b46cba0c74d5633daa5859670b57a6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T13:07:48Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T13:07:48Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: port FP convert instructions to Aarch64","sha":"00274bb4da69dfa4ac3da61d200c51ba54659d1f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11153579?v=4","date":"2022-01-21T16:17:23Z","email":"jbeich@FreeBSD.org","login":"jbeich","name":"Jan Beich"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T18:36:17Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"cellAVdec: constify AVCodec for ffmpeg >= 5.0\n\nrpcs3/Emu/Cell/Modules/cellAdec.cpp:325:12: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers\n codec = avcodec_find_decoder(AV_CODEC_ID_ATRAC3P);\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nrpcs3/Emu/Cell/Modules/cellAdec.cpp:331:12: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers\n codec = avcodec_find_decoder(AV_CODEC_ID_MP3);\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nrpcs3/Emu/Cell/Modules/cellVdec.cpp:143:12: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers\n codec = avcodec_find_decoder(AV_CODEC_ID_MPEG2VIDEO);\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nrpcs3/Emu/Cell/Modules/cellVdec.cpp:148:12: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers\n codec = avcodec_find_decoder(AV_CODEC_ID_H264);\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\nrpcs3/Emu/Cell/Modules/cellVdec.cpp:153:12: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers\n codec = avcodec_find_decoder(AV_CODEC_ID_MPEG4);\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~","sha":"511ca82e30e46baa7b94d96dbc33f97a67ea3fa4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11153579?v=4","date":"2022-01-21T17:12:13Z","email":"jbeich@FreeBSD.org","login":"jbeich","name":"Jan Beich"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-21T18:36:17Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"cellVdec: constify AVInputFormat for ffmpeg >= 5.0\n\nrpcs3/Emu/Cell/Modules/cellAdec.cpp:326:19: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers\n input_format = av_find_input_format(\"oma\");\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~\nrpcs3/Emu/Cell/Modules/cellAdec.cpp:332:19: error: assigning to 'AVInputFormat *' from 'const AVInputFormat *' discards qualifiers\n input_format = av_find_input_format(\"mp3\");\n ^~~~~~~~~~~~~~~~~~~~~~~~~~~","sha":"f2ed50e6b07f315f8fe2cfa6da0dcd50b90ea844"}
|
||||
{"author":{"avatar":null,"date":"2022-01-17T23:23:08Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-21T23:17:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Disable macOS swizzling workaround","sha":"6b5f0957cec6017ad5981e67f2eb5c424699fd72"}
|
||||
{"author":{"avatar":null,"date":"2022-01-17T23:25:59Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-21T23:17:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Initial support for Apple GPUs","sha":"c7140df5f802e92b3a958dd6bab52747f151f439"}
|
||||
{"author":{"avatar":null,"date":"2022-01-20T21:06:55Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-21T23:17:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"macOS: Implement texture swizzling for 16-bit formats","sha":"801e7f3c2f23bcf94147ce1a8c5590a7d6a6487c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T09:36:36Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T10:16:48Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Only enable DCC workaround if the format features allow it","sha":"6ffd38c3932536bb8e6c3c804a76e974d160ea8e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T11:00:29Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T21:03:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix local slice height calculation","sha":"7f216f2581803d4509090dfe240c789d958a38ef"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T11:00:45Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T21:03:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Take depth into account when calculating coverage","sha":"4f8b5849b7bedd38b51c5ad7928482438bf2861a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T11:56:45Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-22T21:03:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Improve coverage checking logic to handle 3D and cubemap resources","sha":"2f7d38bb8178e9cf75727c01b675343011a2326e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-01-23T05:01:04Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-23T10:04:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add a QGroupBox in RPCN password window","sha":"8c2fd50957be3af05c04a9bb782dce8505fb6400"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-23T11:30:21Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-24T16:14:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Rework format feature validation\n\n- Requirements have changed a lot over the years. We no longer blit Z formats around for example because they never support linear filtering\n- Removing some unused requirements allows more hardware to be usable","sha":"1fa82eec898f8c390a3ba79ac71102eaffee2e1e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-23T12:54:49Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-24T16:14:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"qt: Encourage users to use better ZCULL synchronization options\n\n- From looking at logs, users are not actually changing ZCULL settings because they do not realize how slow 'Precise' mode is.\n By marking precise as the 'slowest' mode, we can get the message across that better options exist.\n- Also updates the tooltips with more useful information.","sha":"5920372929947876796d9009e82f48a373d01556"}
|
||||
{"author":{"avatar":null,"date":"2022-01-24T10:18:08Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-24T19:16:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"macOS: Fix DS3 init on Monterey","sha":"d2897bc6a0bf201415377e2b8c5f32dd5c42be99"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-23T12:20:07Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-24T19:21:41Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Remove built_function\n\nWith today's branch prediction techniques, it's hardly useful.","sha":"12c83b340d311eeb45a679afbeb70a81b1b93669"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-23T12:23:54Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-24T19:39:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Call avcodec_register_all in case of old ffmpeg\n\nApparently it's still possible to break without it.","sha":"065ee621b8758326b39354edce0931878b98a579"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-23T22:18:07Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-24T19:39:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fix abuse of fs::pending_file\n\nDebug dumps don't fall into category which needs atomic rewrite.","sha":"14951d87130966d8eb242d83b9e6cecd7730dafb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-23T12:22:00Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-25T00:16:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Improve JIT profiling on Linux\n\nAdd JIT object dumping functionality.\nAdd source for objdump interception utility.","sha":"11ee1f3eb288650e5163885f177df66fd352e37d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-24T19:22:42Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-25T00:16:37Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Add loop building utilities for ASMJIT\n\nRefactor copy_data_swap_u32 a bit","sha":"0db9850a730d439a530e810c4e08fccef47499c5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-24T22:01:03Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-25T18:34:21Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix float16 requirement issue","sha":"3a1676e55876da7948e9589362f1f94102d1afb3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-01-26T06:54:05Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T07:35:52Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"overlay_controls.cpp: Improve image_info ctor withstandability","sha":"73ff506b882c6a833835665ca2d4f505fd4efa72"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-24T23:13:09Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-26T09:08:36Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix missing typeless info update","sha":"3fa45ff9943f956079f4bedc482afba039365d83"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-25T18:53:53Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-26T09:08:36Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Clean up format bitcast checks and register D32F type for FORMAT_CLASS16F\n\n- Also hides a dangerous export for vulkan, same as GL","sha":"ffe00e86193c95234fa9a9dcf6cc06fa59e6a03f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T01:48:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T12:46:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Implement utils::memory_map_fd (partial)\n\nImprove JIT profiling dump format (data + name, mmap)\nImprove objdump interception util (better speed, fix bugs)\nRename spu_ubertrampoline to __ub+number","sha":"dba2baba9c65dc5d7ca99c33bb23b61fef77c49d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T11:24:06Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T12:46:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fix overlays::image_info constructor","sha":"3a1082fe0dd4c1a5e73a962e21da781462d818e3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T12:41:29Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-26T12:46:16Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Fixup creating image path","sha":"16aae4eb7726bee15ebad4dd4b19b1b7804e2659"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-26T20:22:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-26T21:02:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Windows Hotfix: Update hidapi","sha":"b0f064156416d8dab45af75c0fc9cb7880f96ea2"}
|
||||
{"author":{"avatar":null,"date":"2022-01-22T17:16:34Z","email":"@a.a","login":null,"name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-27T08:40:32Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"macOS CI: Don't hardcode moltenVK and llvm version-specific paths","sha":"bb65e6797fb312aaba46de894b73a37a836c50a4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-01-29T19:10:48Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-01-29T19:10:48Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Implement fs::isfile (#11447)","sha":"781b2b4548769ba15c7fbd0b897ce0f3c2d5c481"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-28T13:42:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-30T07:56:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix working buffer calculation for emulated D16F operations","sha":"d063f0b335a6d675313524b05c317fe22170993d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-28T14:39:45Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-30T07:56:15Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix 'grow' behavior when we reach the size limit\n\n- Just swap out the current heap ptr and spawn a fresh one. Chances are, we can spare 1GB of host memory.","sha":"0e320d17c1a5254d8c28b98ffaef2cffd0a1a597"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-28T19:42:55Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-30T11:58:51Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Validate requested images before attempting to upload them\n\n- Do not allow dimensions of 0 to reach the backend APIs","sha":"86919ec0e198895bf6e6004f2e4153903500fee0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/26352541?v=4","date":"2022-01-29T18:22:09Z","email":"MalcolmJestadt@gmail.com","login":"Whatcookie","name":"Malcolm Jestadt"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-31T05:02:48Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU LLVM: Add relaxed xfloat option\n- This new setting is on by default\n- It's active when approximate default is disabled\n- Approximate xfloat is now exposed to the gui","sha":"91673f8fdce183c1f3079517efc278246d6c5159"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/633382?v=4","date":"2022-01-31T12:50:20Z","email":"sandrain@gmail.com","login":"sandrain","name":"Hyogi Sim"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-01-31T14:05:18Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix linkage error on debug build with clang-13\n\nDebug build with clang-13 fails with \"undefined references\" to the\nstatic const members in spu_channel class. This patch replaces the const\ndefinitions with constexpr constants.","sha":"3a804674c91bfa75a2a4f7da7f624af801be1eb8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2022-01-05T08:26:12Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestral"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-31T20:20:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"SoundTouch resampler integration","sha":"107107107c1aedd1c7a8edc16843533a26808522"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2022-01-10T12:26:33Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestral"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-31T20:20:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"XAudio: fix deinitialization order","sha":"681bab558bdd597715e609047e9aee9f350bb955"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2022-01-11T11:40:06Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestral"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-31T20:20:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Audio: prevent click at play/pause\n\nCubeb uses internal rate resampler and it's not being flushed during call to stream_stop.\nThis results in noticeable click when emulator is unpaused.\nReset last sample buffer on pause for all backends.","sha":"7977fbb9c58f58e61722e44a509b5c313cfb3962"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-27T20:06:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-01T18:28:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: add missing nullptr checks for pad","sha":"8efc29972dd883d230a5729701e0f762eaaacc61"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-27T22:57:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-01T18:28:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"input: add enumeration threads for each hid_pad_handler\n\nThere was a roughly 60 ms lag for each hid handler every 2 seconds. (sucks if you use all 3 hid handlers)","sha":"a4c4548c3a5ba663df3263e051840c9409e41319"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-01T19:53:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-01T20:21:42Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix compat download abort","sha":"fd0e7a4efa73a8c4afa10b974da75917337e0cb5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-02-03T09:56:36Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-03T12:25:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rpcn: add cookie impl to tickets","sha":"6c5b8dc31c180e6ca88d68d299effc08512cf8a1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-02-05T10:49:29Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-02-05T10:49:29Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Implement Emulator::GracefulShutdown()","sha":"e951c619c59b37ea044cbaec5525f9309d92a0b7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-31T19:49:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T11:22:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: adjust wording for updates","sha":"eacf5a3813c02078204f9dcdd20eff619e07c50a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T19:23:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T23:09:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: add scrollbar to settings dialog","sha":"09a60cdefa53091ee9df4bc869cd432d5938835e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T21:07:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T23:09:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: make about dialog resizable","sha":"4ad255b8e0d67db58ad7b82893f0ae4e4fae6614"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T21:18:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-05T23:09:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: make patch manager dialog resizable","sha":"05e80aad9065cc9fbb1b6702c661365ab07de8be"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-02-05T20:15:45Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-06T11:26:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add overlay animations","sha":"6b370e85d56b5fd1432fa95680c5c5928cbfc90d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-06T10:59:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-06T12:02:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: save settings dialog window state","sha":"02cdf8ac637f85cd4e8da1309bdfbeb5aaf6d403"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-05T18:11:56Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T12:49:50Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Use image hot-cache for faster allocation times\n\n- Creating new images is expensive.\n- We can keep around a set of images that have been recently discarded and use them instead of creating new ones from scratch each time.","sha":"dca3d477c932ba8bce459c9af21d517e3520fc23"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-05T18:53:34Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T12:49:50Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Silence compiler warnings","sha":"51f9310b9fa65295dc1929087348428f26cf0dfc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-05T19:26:42Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T12:49:50Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix WCB crash","sha":"a2d33a7d768c252bd6edb5456b427d7a7663f433"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T11:23:46Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T12:49:50Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Speed up cached image search a bit","sha":"90d368ae3081738a758673888d434e371578db19"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-02-06T18:52:02Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-06T19:37:12Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP","sha":"987166f4da20e19d01777d0bfad64a811d8de1d1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T20:30:31Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-07T06:25:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix memory tagging and add some security checks","sha":"247759b75b0bb22bb8da3f5548d7d440c2139baa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-06T21:29:23Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-07T06:25:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Lower performance warnings to 'warn' level instead of 'error' level to avoid causing panic for users","sha":"2d9f21a2ead622c76674dac15bb27aaf0be19aca"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-20T17:44:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-07T18:42:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Rename CallAfter to CallFromMainThread","sha":"d172b9add63d0535b7572a411a7af9d5a6b9b2fa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-08T19:49:09Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-10T19:20:56Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Fix up multiple resource allocation routines\n\n- Originally part of async bringup. Imported to allow smoother transition.","sha":"48b54131f6a9ac967f85576c1af28651d0aea70a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-08T21:44:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-10T19:20:56Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Rewrite resource management","sha":"f667b52ccad60e150e14beef3f0a7b62840114d7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-10T19:01:40Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-10T19:20:56Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: End the current frame before performing cache cleanup to release in-flight data","sha":"ec3e8de7807a75e0430c7aa7721f184d1e445f35"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-01-27T23:09:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-10T19:38:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Input: multithreaded handlers\n\nImplements naive multithreading for input handlers.","sha":"d6597038eeb36f6dbb6bb422d6a2edac63a62df6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-12T00:15:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-12T01:54:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Use RPCS3/asmjit fork","sha":"4f4a80cc045ddda27bd593ce0202202ee49c9d2f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-12T11:02:03Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-12T11:46:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Terminate headless rpcs3 if nothing was booted","sha":"7895d43a98f93241624d347fb744489d30e55de8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-01-30T11:56:22Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:39:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Spec-compliant async compute","sha":"cef512a123159828f0d504e8be51f106eb017488"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-11T17:57:19Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:39:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix linux build","sha":"44cc254620e525f99edcea4cd84aa9cec294fd51"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-11T18:22:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:39:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Ignore queue transfer stuff when using 'fast' mode","sha":"c8ad8b18bbd0e8c1683a307b2781a96a4b513388"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-12T20:06:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:39:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Per work-queue scratch resources\n\n- Avoids parallel tasks from trampling over each other's data","sha":"df5295ae8502890e76ac577ea4ade8f955aefae0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T08:57:51Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:39:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"qt: Update tooltips","sha":"b7a57ac4b0ae21f03e7f57b1af63f0952ce56e69"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:22:53Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T11:39:42Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"qt: Add translation resources","sha":"9581e4ff989f8c2e3711cf66e10d1e52ad2687d0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T10:43:00Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T12:31:39Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Remove pointless assert","sha":"f382d54e9aba54092ba8abbf601e0e450c6902f8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T10:51:35Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T12:31:39Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Drop unused native format ABGR8","sha":"314b63eebf27084aaf63e969db01657699802d49"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T10:53:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-13T12:31:39Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"gl: Harmonize format conversion values\n\n- Return values that are true to the PS3, not the host.","sha":"2d5d5746d1578db95c10229df3e81f33d7f7a765"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-02-14T19:03:40Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-02-14T19:03:40Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"cellSaveData: Check filename format of savedata files (#11502)","sha":"fd6c33980b14adf8379d29e5393731ecda02c9c9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-14T18:38:32Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-15T19:30:59Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Bump vulkan headers requirement","sha":"abd8bd6f3619c805d52807f321b78d4baf89c252"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-15T21:35:40Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-16T13:33:27Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk/dma: Initialize COW DMA block contents to avoid leaks\n\n- It is possible to lose data when uploading since the result of map_dma can change types and handles.\n- Consider sync-on-exit for inherited spans\n\nNot a problem when using passthrough DMA, but this extension does not work properly on NVIDIA + windows","sha":"254ddcad514cc7b07a3242813edd9366f546506e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-01-24T08:13:54Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-02-16T15:09:13Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Fix sys_fs_close FD state logging","sha":"e39797d86057921f8bd205c78a397790673d56f7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-02-16T15:54:18Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-16T16:08:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fixes some unchecked derefs in sceNp logging","sha":"6bd8a93ff4cb256452a91b445dec333a105b6eb9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-15T18:46:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-16T18:50:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"RSX: Fix rsx capture stop\n\nRSX captures froze on stop, at least with Vulkan.","sha":"4be9e0d3963f3c061e73f309cc56f72d6e7d7c8b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-16T23:10:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-19T13:27:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMusic: fix cellMusicSetVolume log messages","sha":"3f69ceac4088c059970a2a4536a5cb300fa8e4f9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-16T23:23:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-19T13:27:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSearch: silence irrelevant log error","sha":"8171c7766cd39617d55f4c638f63e08715b260cb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-16T23:48:42Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-19T13:27:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSearch: log audio and video metadata","sha":"91d7f28c6732c94b3062950ecb7f3a8380b628e6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-02-17T23:19:11Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T07:47:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add MoltenVK Semaphore setting","sha":"7801e8368b92e89c7cbc24873b2650784eba681d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2020-05-11T10:27:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T10:56:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rsx: add boost mode shortcut","sha":"93e7988df758bda46867f9544dd56eef5ebed70a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T09:10:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T11:29:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSearch: more logging","sha":"2147fe479c03e5761ce64b2930e5752f21c3f9ce"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T11:42:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T12:23:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: properly hide metal sempahore if not apple","sha":"e5bb0ba004b8519935267d5750ecc59d3ff602ef"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-12T01:19:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T12:23:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: create rpcs3 shortcuts","sha":"0a34403ef8be3d63187ccaa9a0eaaea07c8a7dd2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T14:22:41Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T20:06:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSearch: fix cellSearchStartListSearch\n\nFixes listing BGM in Gundam.\nThe returned content was always empty.\nPlayback of the tracks will still require a MusicSelectionContext and cellMusic playback, which isn't implemented yet.","sha":"b1a9e87ecfa2b3ff5a8d4ffc28566aa5cce8f49b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T19:52:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T20:06:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Unbreak macOS builds","sha":"9214df482e6d87ce505ddf0a440c247bde72c176"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T23:45:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-21T00:14:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"linux: fix shortcut icon aspect ratio","sha":"13e1305a76aa76fd716a873b3f0450a4428b68dd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T23:45:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-21T00:14:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"windows: fix windows shortcut paths","sha":"771f3c49e5f0e992979c12635f1e2d8ec19abdb9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-02-21T13:35:15Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-21T18:11:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix macOS builds","sha":"b57ea3a2299565bf3e02f2695e65c9906ae6f9dd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-02-21T13:35:34Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-21T18:11:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"macOS: Implement shortcuts","sha":"574e934bf3a1817be54a6ab67cb35fbd03fb9f25"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-19T21:05:36Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Rewrite command buffer chains","sha":"b791d90b35cab11481c958810b09626856fda284"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-20T14:26:09Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Move renderer types to a separate file\n\n- Makes my life easier managing conflicts","sha":"83407c386c36c841223a1f1ffaecc1c19b8cf71e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-20T14:32:21Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Remove pointless function (VKGSRender::open_command_buffer)\n\nA relic of the past, back before we wrote wrappers for raw handles.","sha":"1f9ade0ab6f900c01e0a5d593d0749073141a156"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-20T14:36:32Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Remove hardcoded command buffer list length","sha":"397a795e755465cf467c06399bf3351dad012548"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T18:33:20Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Remove unused variables","sha":"12fd43e1c6f42245c5ae80593cc4843a52be3e6a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-20T14:50:57Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix build","sha":"0809e7cf9f8c29ece7549e42b2b60dbd268d4424"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T18:51:23Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-21T20:58:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Drop redundant declaration","sha":"10e6b43a2fd439229e803ec0306356dd0328b953"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-22T05:32:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-22T13:19:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"update_manager: add some logging","sha":"fa6736e69d387db6972b865b904db1f1a81497fa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-22T04:29:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-22T13:19:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"shortcuts: add some logging, fix shortcut path","sha":"1144121d08750e120009ca0ff0584dc0ed5fa3d0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-22T12:52:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-22T13:19:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: set organization name","sha":"c5680c29bd095df716bfb5494d38f58bafeb49be"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-19T17:22:52Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T09:57:04Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Implement host GPU sync labels","sha":"c7e49b58a8f6c159b403ce7f9d65b4c892ecbb31"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-19T17:43:31Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T09:57:04Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Add the option to the advanced tab","sha":"24587ab4594e9e9ef815c90db0bb92b0117c0ff9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-19T22:48:43Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T09:57:04Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk/rsx: Tuning and optimization for host labels","sha":"da559b556831dd40273f2dc0fe463f32c4c1490a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-22T22:39:04Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T09:57:04Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Remove leftover dprints","sha":"6fd2a9b67710f8fcabb90853200f19ddf557546b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-22T22:50:21Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T09:57:04Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Drain the label queue before using the CPU fallback to avoid out-of-order signals\n\n- This avoids crashes in some game engines which expect RSX semaphores to signal in the order they are submitted.","sha":"6b8b23c401766b2704eaa0621aea2cbf9a8fad8b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T17:55:11Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-23T18:15:08Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Disable passthrough DMA for proprietary intel driver","sha":"f3823232e0f4a6a9236399c4fa5fedc91e82439f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-02-23T22:40:18Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-02-23T22:40:18Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"Qt: show time of day in 'last played' game info, log current time when RPCS3 boots (#11220)","sha":"86a04a867bfbeeaa75000447ebfacaedc9b5a717"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-24T17:42:48Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-25T07:53:55Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Flush dma offloader on texture read sema","sha":"6db5d83615e2e4ce7839c6dc9e25ed46ab428e35"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-25T18:59:09Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-02-26T07:28:46Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Do not enable passthrough DMA unconditionally (yet)\n\n- There are still some kinks to work out. Host labels do not fix all the bugs which means I missed something.","sha":"e035000864260a754c6f486a1004a9cd9fea1341"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-02-26T12:49:43Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-02-26T12:49:43Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"gui/themes: YoRHa by Ani (r2) (#10785)\n\n- Styled Log Viewer\r\n- Styled CG Disasm's text boxes\r\n- Fixed list widget checkbox and row styling\r\n- Fixed missing styling on Debugger\r\n- Fixed text alignment on table headers\r\n- Fixed QSpinBox buttons\r\n- Styled disabled QSpinbox\r\n- Styled Pad Settings tabs to look the same as Settings Dialog\r\n- Centered Pad Settings tabs\r\n- Separated first row from game list table headers so there's some \r\nspacing in between when highlighting that row\r\n- Refactored some code to style global QT properties instead of specific \r\nRPCS3 elements\r\n- Separated RPCS3 specific code from global code","sha":"7d26e61d829d943f4fefdb6fd7f7e6bc8bcac363"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-02-26T14:49:42Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-27T10:16:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Set min macOS version to 11.6","sha":"f0093375b8caee7cef7d45cb21efbfb4854577a2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-02-26T14:50:03Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-27T10:16:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Round macOS icon","sha":"af95ff5f8b31f047d84c7c5117c19a453fda39fa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-27T20:48:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-28T07:19:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: store pad settings state and remove max size","sha":"42aa8f263a7322d132c8e8c2146373899d16456d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-02-28T23:01:15Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-02-28T23:29:49Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"rpcs3_version: Bump to 0.0.21","sha":"a8e62e1bc1ca6d9e9d4c2309398806f3566f42d0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-01T07:45:50Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-03-01T07:45:50Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"rsx: Downgrade depth-1 3D images to 2D (#11593)\n\n- Fixes problems with implicit view types derived from dimensions.","sha":"6c096b72b5294758067a002f981563bbd618d30d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-01T17:20:22Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-01T18:51:55Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Revert \"rsx: Downgrade depth-1 3D images to 2D (#11593)\"\n\nThis reverts commit 6c096b72b5294758067a002f981563bbd618d30d.","sha":"00a1864a9559ca7b00a278e57f187ebbf8375703"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-01T17:41:02Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-01T18:51:55Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Encode image type when caching resources","sha":"0dbfe314a300e60207099b94c9ff8c221d3bff8d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-20T18:01:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-03T07:25:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMusic: implement qt music handler","sha":"15e74357cf13010094d391788d1dfe2e9a142ee3"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-02-25T06:35:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-03T07:25:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix some enumeration warnings","sha":"e33b1306060a3d892a585f6ccfbbfeed7ca9382b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-03-05T11:44:16Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-05T13:33:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix macOS CI Qt path","sha":"f61ee85f803e85c62def2d65b4dd4be1a11bbba1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-05T13:20:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-05T17:34:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMusicDecode: initial implementation\n\nImplements the basic functionality of cellMusicDecode.\nWorks with Space Invaders (if you add the list selection from the other PR).\nProbably fixes SSX custom music.","sha":"aafd74f9eab4e96c68f2a740350d3b196f85e8ef"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-06T11:09:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-06T11:57:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMusic: fix qt music handler resume","sha":"00f6763228b912a0e38374fc6ee4f6f62d5dccd2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2021-06-19T16:33:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-08T08:02:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMusic/Decode: add SelectContents functions","sha":"cd97d74f0f0fbde8be9bbe6248b4fee8daa1c15a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-05T13:19:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix surface write coherency when MSAA is active","sha":"6812fa476416dff234588d914f71a31b1817967c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-05T15:42:53Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Optimize metrics a bit\n\n- For some reason this has a massive impact on performance above some arbitrary threshold of calls\n Shows up under surface_cache::get_merged_memory_region when doing gathers.","sha":"0df903090d636559110b33b4ae201e5bec804cbb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-05T15:59:21Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix build","sha":"8d3d290e33ceb83bc6b7a19a3af2ae8ae13630a1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-06T09:45:46Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fully process texture if surface cache configuration changed","sha":"762b594927b34140c86b5c9bb578f47ce1b58c08"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-06T12:09:28Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Avoid calling slow functions every draw call\n\n- Use TSC for timing where interval duration matters.\n- Use atomic counter for ordering timestamps otherwise.","sha":"cfecbb24cac03bbc1ac50711d379b229c6fbbfe7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-06T12:12:29Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Reduce the performance impact of enabling the profiling timer\n\n- Just use TSC if available","sha":"454a724f4e618344a9bc1f01e99b2572d6932147"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-06T12:32:38Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix clang build","sha":"3e4faf602aae4878f70247efaa1e649865515e5c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-06T14:33:32Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-08T19:06:26Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix msvc build","sha":"59a0cf94abc353c72c4b3d0da3140fa6c31e7886"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6665256?v=4","date":"2022-03-07T09:24:28Z","email":"nik18.1995@gmail.com","login":"NicknineTheEagle","name":"NicknineTheEagle"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-03-09T19:39:30Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Use simpler C00 unlock EDAT check in GUI","sha":"1670769119da643a7e1883a6e3969069cb356c1d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-09T21:06:03Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-10T17:43:58Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Clean up surface cache routines around RTT invalidate","sha":"1943d9819fdf04a4c7319547a6ed351261736b45"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-10T21:01:36Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-10T22:15:13Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Unconditionally set MSAA flags if MSAA is active","sha":"78b8bd80e43b6ffa5ee169e7d84972fe03d8ee9b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-12T00:56:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-12T19:48:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMic: remove cellMicRead error spam","sha":"686d2759f434476dc1a1ca128cd75cbbd077fdc8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-03-05T16:32:35Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-14T07:28:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Low Power Mode detection\n\nChange low to reduced\n\nLow Power Mode detection\n\nFix namespace space\n\nLow Power Mode detection\n\nFix namespace space\n\nLow Power Mode detection","sha":"ce7b1576e04c8130e9e4b6182f564d3fcd8f751f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-03-05T18:03:47Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-14T07:28:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Build on Monterey and set target to 11.6","sha":"f3a325fe1af75aed7758b0ba8db9f4b032b3f044"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-11T20:08:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-16T18:42:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Log cpu usage periodically","sha":"04df3928667d40f17fca9d15f97858ec2e4259b0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-16T18:59:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-16T21:20:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"StrFmt: print src_loc error as string","sha":"7a1a4541c0f90776ac444644cd89466e62dc1ca4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-16T19:44:47Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-16T21:20:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cpu_stats: fmt::win_error_to_string","sha":"e58906cb4df26c14fcade07d7c15ab432dae6882"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-16T22:56:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-17T17:59:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add rpcs3 location checks to main\n\nDon't allow running RPCS3 from temp dirs.\nAbort if the folder has no write permissions.","sha":"9c5ed01130da77fa102ad39b6cb7aab8af805a63"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-13T08:32:04Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-17T19:02:20Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx/vk: Rework MSAA implementation","sha":"bc7ed8eaabd57cb4ab7c91bf3d353a73faf9660f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-17T23:00:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-17T23:33:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Revert writable folder check\n\nThis doesn't seem to work as intended","sha":"7a86cffd0af76c56e9b0c0d1b7cf7e3e728a6e69"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-17T23:16:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-18T00:47:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Decrease log spam in case that per core cpu usage cannot be queried","sha":"539ac328062c7f11f8edd68ec74cea43e755396f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-17T20:04:43Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-18T07:09:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSaveData: CELL_SAVEDATA_FOCUSPOS_NEWDATA\n\nUntested, but focus position is clamped anyway.","sha":"ff34a73fbd32df0ef52e1136cbe1c96dcd8caf8e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/719492?v=4","date":"2022-03-18T03:21:31Z","email":"computers57@hotmail.com","login":"MaddTheSane","name":"C.W. Betts"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-18T12:19:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix macdeployqt.\nThis is based off of the instructions found here: https://riptutorial.com/qt/example/24133/integrating-with-cmake","sha":"39201e5042fd0d57f6b65fea1a26b397d970f49b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-19T23:19:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-20T03:27:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"evdev: improve latency","sha":"3972022fa239a776715a1f21380ad278559111be"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/3681128?v=4","date":"2022-02-26T10:30:16Z","email":"aliaspider@gmail.com","login":"aliaspider","name":"aliaspider"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-03-21T05:49:01Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"fix vfs::host::rename.\n- resolve_path requires the path to be valid and can only be used before\nthe call to fs::rename, not after.","sha":"5797673daada281e8b60fa6467bd10ecd4792a7e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7947461?v=4","date":"2022-01-15T11:19:55Z","email":"zdanio95@gmail.com","login":"CookiePLMonster","name":"Silent"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-21T14:47:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update WolfSSL submodule","sha":"791ee013ac11b90c3ea5866a01e74518a80f2997"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7947461?v=4","date":"2022-01-15T11:20:48Z","email":"zdanio95@gmail.com","login":"CookiePLMonster","name":"Silent"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-21T14:47:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"WolfSSL: Use a custom UTF-8 aware _stat on Windows","sha":"c5748983f6ce0fa83424a56486624ab9381e726d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-20T20:03:46Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Optimize surface store for faster scanning","sha":"35ec4de77614cc25df53ec48c19431f65e98e716"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-20T22:45:00Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix linux","sha":"56540a55ec24e060b65d642cd7df42d54f9c408f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-21T21:04:39Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Rework ranged map\n\n- Adds metadata lookup for intersecting range calculations\n- Make fetch/put methods more explicit","sha":"43c7417906dc1dec674310e36069da1082d9774b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-21T21:14:13Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Bump surface cache block size to 16M","sha":"d0402332f71ebec5ef5c5e199dddf762b4d6caff"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-21T21:45:03Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Block size back down to 4MB\n\n- 4M is a good compromise, a 720p surface occupies just under 4MB","sha":"26ee1246ae5b19008b8075ee0926cda33329558c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-22T18:13:47Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix ambiguous comparison operator warning","sha":"1ab5b481ff4a0a7d55502361191d0f8acb36621d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-22T18:37:49Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T08:26:06Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix vulkan compilation warnings","sha":"af0e1f609e5a554b55446aa292df8901f0ceacb4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-03-23T10:26:24Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-23T18:35:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Warning Fixes","sha":"a4d715e25d69d00ce18b124570122a8a2dac0541"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/8901018?v=4","date":"2022-02-16T04:23:57Z","email":"jedistephen@hotmail.com","login":"JohnHolmesII","name":"JohnHolmesII"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-24T09:09:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"CI: Update Vulkan to minimum version","sha":"e650d11b306b5ea07b4f30a6e59de679d70a0b0a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T19:53:18Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Relocatable transform constants","sha":"9a2d4fe46b358af369bf58b23d6cda472dea754c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T20:59:42Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix program generation and compact referenced data blocks","sha":"d057ffe80f74aca648b5733230495a5d86c2810b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T22:23:20Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Handle vertex shaders with no constant references\n\n- If no vc[] refs exist, do not upload anything!","sha":"de0e660d288bd9eca4b347a3396103d655785dbc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-23T22:51:59Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix OGL","sha":"96742852ebe30ae8b1470cc16d551d6718933e58"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-24T18:31:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Invalidate transform block on program change\n\n- Since each program now does a remap of the outputs, we need to reupload the constants\n- This is not a loss, constants are almost always changing between draw calls anyway","sha":"1592ecdc559912366786fda56275f0ecb44beb82"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-24T20:25:54Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Restore UBO alignment\n\n- NV requires some very large alignment thresholds","sha":"ef65c47592b6df04529158db66c7c3b9c802b44e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-25T18:18:46Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-26T13:10:18Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix interpreter","sha":"e66d6a9399077feb2ff8094947b47cf17916a053"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-03-25T17:51:55Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-03-26T20:09:20Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: correct behaviour under external debugger\n\nMay require setting \"Assume External Debugger\" to true.","sha":"0a617a05d0905e9781bb39ec176d0f25b6c5881f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-03-27T08:37:11Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-03-27T08:37:11Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"PPU: fix step execution after BP","sha":"98cee991efb182d7d2bbde5ffa5e985fb068ac04"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-27T16:49:49Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T16:55:34Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Force resolve explicitly for transfer operations","sha":"ffa841e7c134bd56253a6c57e06c656129338315"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-27T16:58:58Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T16:55:34Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"vk: Rebuild swapchain in case of unexpected errors during present","sha":"b645a7faf5e18d712342f20d9e87310ba091702c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-27T17:25:34Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T16:55:34Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix leaking surface cache refs from texture cache\n\n- Lock surfaces in use by texture cache to prevent complete deletion\n- Remove discarded surfaces from the reprotect cache to avoid uaf","sha":"d98d152d2359151f5b6c2ce0ddda35bf96437f07"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-27T19:38:27Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T16:55:34Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Reduce log spam a bit","sha":"2b42895bc79c12b5c31e47bed7e99723e623a36a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-27T19:48:49Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T16:55:34Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Disable ref count on exit","sha":"94a7e52c1f52b1df24f579309b65e5fa71b8418f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T19:29:39Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-29T09:35:32Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Handle DMA block init where empty pages exist in the range","sha":"f45343a3453cdd9d5277d0c3e81124307bf295c4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T20:42:08Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-29T09:35:32Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Handle in-place image swaps when locking data for WCB/WDB\n\n- Rare, but possible if a surface address is switched from color to depth usage\n- In such a case, deref the old image and ref the new one to avoid leaks","sha":"e037b5c4389c16115d117d8615c0085bc77e34cd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-28T20:57:44Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-29T09:35:32Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Avoid unnecessary memprotect syscalls","sha":"4a86638ce898e3bd68ade8e7ba794253782ea411"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-17T22:18:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-31T21:02:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sceNpTrophyGetTrophyIcon: SCE_NP_TROPHY_ERROR_HIDDEN\n\nAnd prevent some possible segfaults","sha":"ee98f577e26e8c04b5c3e17f6f0a1235216ad606"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-31T20:01:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T00:24:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"soundtouch: fix debug build","sha":"c803bf18495e20cc3d1da2d7e59dab5ef9d6affe"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T01:44:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T16:38:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Emu: actually wait 5 seconds during GraceFulShutdown","sha":"36e3939ec2f35ad0e148b19cda689e4b848b90f9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T01:44:05Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T16:38:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix GracefulShutdown regression\n\nBy replacing Emu.Stop() with GracefulShutdown() in gs_frame::close(), the game window was now unknowingly closed recursively, causing RPCS3 to crash in some cases.\nLet's just ignore any consecutive calls to close() from now on.\nAlso don't close the window internally on a close event. request a shutdown instead.","sha":"4f12f8b04f18cd303fc4695600e6c083021a0cb2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T15:57:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-01T16:38:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"gs_frame: remove unnecessary CallFromMainThread\n\nQt events should run on the main thread anyway.","sha":"3002e592c367c9414fafc3df6cefddcaab32cf71"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-29T23:19:17Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T13:51:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Implement basic 2D bilinear filtering for MSAA images","sha":"a8441b28e8096783a24950832ef0dbefca61bbe6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-30T19:09:13Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T13:51:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"glsl: Rewrite MS sampling implementation","sha":"43b267ea511c3e24a57beaac41c065970adc4aec"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-30T19:11:28Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T13:51:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx/glsl: Fixup","sha":"49c84f099a71a64571df0022b809198c77ea40ff"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-30T20:00:50Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T13:51:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"6-tap experiment","sha":"15b7e4f05ecbb074df243cabf9c30e4eb083111a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-03-31T20:13:35Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T13:51:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rework weighting scheme","sha":"ca35a75a7db6b464d3d202172b56ebfe291eaebc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-01T18:53:25Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T13:51:03Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Optimize software sampling further for the 6-tap kernel","sha":"fc05511354da331d0491f597e620206111450a91"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-04T18:39:33Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-05T11:07:05Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Fix surface cache scanning and removal","sha":"e53bbd668b4e0f72b8f94f921d34af522c5b7a6a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-07T22:46:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-07T23:25:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Implement simple filter in log viewer","sha":"fb03a3bf67265a264044ccb6f5d366a59bb534f9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-05T19:21:14Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2: format some enums\n\nMakes them more readable","sha":"3024026d9e4c0f61e4787d92615841526657d218"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-05T19:42:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2: more constants","sha":"a841ba4084ab8b28a2542bfe4fbbd07b6ffe48fd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-05T22:17:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2: more stubs and errors","sha":"3c2cf79675795208e11a3a8daddf4a8bf751b7f4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-06T21:15:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2InitParam: remove overzealous code.\n\nThe function is intended as a constructor, so it doesn't make sense to check struct members","sha":"81f8ece236a67e2ba9e2fc0ce73e8144dbbb379b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-06T21:46:44Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2SetWindowString: add strlen check","sha":"8a2826f3a9e7980bdf1e461bf166bd1b7c93479c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-06T22:32:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2: more improvements","sha":"47401cba1f423144c20de7f4eeb7426d6f7ab9e6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-07T19:45:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2EstimateMemoryContainerSize","sha":"0dc176b4f1935a285a11cc2acf4a71f586b8230b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-07T20:21:54Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellSysutilAvc2 fixes","sha":"bcc097718fea946b504de142601a7c95bcd9dbd2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-07T21:51:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T18:07:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"revert cellSysutilAvc2Load\n\nI think I mistook the subfunc for the main func","sha":"544cec0434c511122410cacd1441c77369a678ae"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-08T11:36:15Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-08T19:46:09Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Add SPU XFloat Accuracy combobox","sha":"f4d02861097bda264c6085307b3aa19702125e85"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-09T12:51:22Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-04-09T12:51:22Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sys_net refactor (#11740)","sha":"72b2876b6a250b4d3d7076bb42b147f5cca38f70"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-09T15:36:31Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-09T17:24:08Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"re-add scope to sys_net_bnet_poll","sha":"855b23b3fec386dc89cb98f14dfe59930e9c9136"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-08T23:14:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T19:26:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Patch manager: add node location to patch errors","sha":"499fe3e218b34b6dea87a53f3a87da9817b8917f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T18:16:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T19:26:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Patch manager: check for invalid value node","sha":"4dfb47cdd9505ad37dc36d9fb5604cb502ddcf57"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T18:54:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T19:26:06Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Patch manager: detailed message box for long logs","sha":"039d19dacf793f9ff590840e148708f141265b7c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-09T18:07:11Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T19:56:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Various sys_net improvements\n\nImplement P2PS select\nAdjust P2P sendto return value","sha":"c06cb4664acfecc1cfada8af5a6ec39ee50230cc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-09T22:01:31Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T22:23:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"rpcn: validate callbacks before queuing them","sha":"8fb2d04ce8685b999134aa6d5cc94087bf7c3b08"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T21:28:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T06:38:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellGameGetBootGameInfo","sha":"d84a0c650323a4454d375b1e97a44ba6d957a523"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T21:41:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T06:38:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: fix cellOskDialogAbort error format","sha":"9279736fe6bda764a275c9ba0afe12899e906ef6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-09T21:44:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T06:38:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialogAbort: always send finished event\n\nNo idea if this is really correct, but it fixes the PS-Home OSK dialog freeze.","sha":"20801615f38a9d734bd16e396333dab31df37f20"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-10T05:42:25Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T09:15:41Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: Fix return values being tagged as errors","sha":"f8ea50caae9df7ac2954c9941516b2fdc5338a93"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-09T10:13:08Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T12:31:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"PARAM.SFO loader improvement","sha":"c35da0085f119d057710c86e43ba987fc07da64d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-10T12:28:11Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T13:12:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: fix dns redirection","sha":"4087b4e6b9dfdf713a2b112390ef3326e3aa50b1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-10T12:54:21Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T13:42:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix get_roomdata_external_list callback event id","sha":"cbc067b490e4659e9c7902c936a8d332bac28aaa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/1056270?v=4","date":"2022-04-10T13:14:17Z","email":"clienthax@gmail.com","login":"clienthax","name":"clienthax"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T16:28:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add stubs.","sha":"127ad508b43e88a29d59072d385e83df89bc4d0c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T20:20:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T22:12:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Allow to filter the log multiple times","sha":"f24b0c2ffe557d55202a5f28df1433b39a4d41aa"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T21:24:24Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T22:12:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: allow to filter the log viewer with log levels","sha":"3ed5a935fb4f66da84c32d7cd1856de0d36f85af"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T20:26:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T21:59:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: add show threads option to log viewer","sha":"8f02ea1d4244130bc21237bca17eeb2062963257"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T21:05:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T21:59:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: add last thread actions option to log viewer","sha":"5407e42b764c866a7bd1b14a58b010e58416017b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-10T16:13:45Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T06:58:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: bind & getsockname accuracy","sha":"4d265357589a7c9c80d5c6d1cc871bb6939b669d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T07:26:05Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T08:21:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"patch_manager: check if address has hex format","sha":"b04bd5fa746ef37f4b26eeafe3fd31a6050edfe9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-11T20:31:40Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-13T12:48:28Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Implement Z value snapping to account for precision errors","sha":"2db68acab98f02d0bee7975e3d5a506522e5c398"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-12T18:57:25Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-13T12:48:28Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Automatically determine the epsilon value programatically","sha":"60cbd7a88c8ade6f7f3570cf2162fd064cad55ac"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/9814000?v=4","date":"2022-01-05T08:32:13Z","email":"zionnimchuk@gmail.com","login":"hcorion","name":"Zion Nimchuk"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-13T16:05:16Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Move binary release deployment from Azure to Cirrus","sha":"5684b5909fac35266dd1abac86667a0d0ea7c320"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/9814000?v=4","date":"2022-04-13T16:55:17Z","email":"zionnimchuk@gmail.com","login":"hcorion","name":"Zion"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-13T17:19:31Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Update with new cirrus GitHub key","sha":"f6a06a5618a87ab9bf55107a8a8ee5df6b08b186"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/9814000?v=4","date":"2022-04-13T18:50:05Z","email":"zionnimchuk@gmail.com","login":"hcorion","name":"Zion"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-13T19:34:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Set BUILD_SOURCEBRANCHNAME on Cirrus to fix build warning","sha":"ccd472426381184fafa98d4381aca444bee12f64"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-13T17:07:20Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-13T20:39:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"overlays: Fix frame timing","sha":"89de1a8cf6324387664369c50eb1d10b86d2b283"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-13T19:29:26Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-13T20:39:01Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Separate guest flip timer from host timing operations","sha":"57aee92bfe975a52ba756196cabe68ad45e22ffb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-13T21:18:03Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T06:26:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add some error handling to sys_usbd","sha":"91768c025c25ef2fc17143f7b6604c1985d1d15c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-13T14:53:36Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T07:18:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net fixes\n\nFix lv2_socket_p2ps::connect\nFix sys_net_bnet_poll","sha":"d6b026314409980734605e9275950f835f04e8df"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-13T21:17:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T11:35:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Add git fallback to git-version-gen.cmd\n\n%ProgramFiles% points to the x86 folder on cirrus, but git only exists in Program Files","sha":"8516e9da70657385c61648718b47e212e42c0f89"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T14:43:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T16:37:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"test","sha":"3d31e2f2a9a465c19f2729a937411a1db5f1a15c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T18:53:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T21:16:40Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"windows: adjust git version script to cirrus ci","sha":"3c231ee9b7e406292af303133930327c0f13a386"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T20:32:45Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T21:16:40Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: unify version displays\n\nThe only version that is different is the game window due to some formatting.\nAnd the update message due to some logic that is better left unchanged.","sha":"841f815be3476e97e27690eb926420a56943cff6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T22:22:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-14T22:45:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"windows: fix git version script release check\n\nHopefully","sha":"21f744e21868ca2d91047bc732ef742a3eb8be58"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-14T10:39:30Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-15T17:43:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net fixes and extra logging","sha":"26d8120168c075ea407c5a2eca6d3c609464b223"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-03-25T15:17:25Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-15T19:34:51Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"RSX-Debugger: Implement backwards scrolling\n\n* Use 2 points of known true RSX code roots and follow them in order to peek at the current section of valid RSX code:\nThese roots are: current RSX instruction address and the last targeted address by a branch instruction.","sha":"1d51f3af0cf47b2e56f2545933eefe8caaf7db75"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-03-25T15:19:02Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-15T19:34:51Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Log a snippet of guest thread code at crash","sha":"6783bcd273b5697e7a2283837891166abf8d96b7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-16T12:00:04Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-04-16T12:00:04Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sys_net: SYS_NET_ENETDOWN for offline dns rqsts (#11822)","sha":"895af3c3abae3dc92bd082156dffb9711cad89df"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-16T11:19:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-16T18:49:50Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Add timestamp filter to log viewer\n\nThis is incredibly useful if you want to copy paste two logs into Meld for example","sha":"184bd51b87da77824b06e83e46fa83373c16a4a8"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-16T21:10:06Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-16T22:06:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"sys_net: Fix race between dnshook and nc","sha":"563af4211a2afec08b94e469578c9e209b144dd0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-04-14T01:22:16Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-17T15:04:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"MoltenVK as a submodule","sha":"b5db0d0397e2735607a65ee59d81fc575af29fa2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/41972888?v=4","date":"2022-04-17T21:07:10Z","email":"41972888+Timo654@users.noreply.github.com","login":"Timo654","name":"Timo654"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-18T14:01:19Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Interpret negative values in game patches","sha":"afae58b23122524cdef99140ca54be9a41364e89"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/12076140?v=4","date":"2022-04-04T19:36:13Z","email":"sguo35@gmail.com","login":"sguo35","name":"sguo35"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-18T14:53:54Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"build-macos: fix cmake config for arm64","sha":"219ddf3e118e0967ee452ffd3ffa4a8706119de1"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/12076140?v=4","date":"2022-04-04T19:37:10Z","email":"sguo35@gmail.com","login":"sguo35","name":"sguo35"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-18T14:53:54Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"macos: fix build for arm64\n\nAdds arm64 branches to some x86 specific code and modifies some casting\nlogic to make Clang happy","sha":"e761b3235cea7f41d258a298aa00dfae6bf26e21"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-19T17:58:10Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-19T19:58:29Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix compressed pitch calculation","sha":"bca7b02ae997408339c4e786f8e67bfca6979318"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-19T21:44:03Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T06:28:46Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update main_window.cpp","sha":"f1a37da94c2250122c3ba2d70a0dfa73106e3dbc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T21:44:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T06:10:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"libav: log more error codes as string","sha":"d8bbec95948c57451174bcb14bb0a9c9b5151c2f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-03-25T09:31:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T18:56:11Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellGameGetParamString: check_mode for category","sha":"e9af0bb72b06ab5e759fa71a70b40fd5c503700e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T18:54:02Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T19:23:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: Replace some deprecated Qt5 stuff","sha":"8d781a737b9f4154fb55d2efd4f93911ecc3b5fd"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-10T10:32:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: implement CELL_VDEC_ERROR_SEQ","sha":"c6f3f386dff5ed0cce2cba30b190a0f1dd3fcc6c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T21:52:23Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"CELL_CODEC_PTS_INVALID, CELL_CODEC_DTS_INVALID","sha":"db731d307ecb0289d121ad77dc3afad004504b9f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T22:46:29Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: add more error logging","sha":"771009f3338f4dcd6850f56aa95c538edc7c6819"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T23:31:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"CellVdecPicAttr","sha":"548b748f50ac9fadeb832a5387bf78910f99ea79"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-11T23:32:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"CellVdecDivxSpecificInfo2 (who knows if this is correct...)","sha":"fb3752a8efdce6d7f45ca0115a544f543408e918"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T17:54:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdecDecodeAu: add codec type check","sha":"ee3a302cf235d7872d4620e3ebfa64978552ad1a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T18:48:55Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdecDecodeAuEx2: some REd guesswork","sha":"bd5bff321e3bc00246e8d74c692413d586d35273"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T20:25:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: call av_dict_free","sha":"61ada2c1dc120403d33cb76ce54a3263960b7d02"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-12T22:03:15Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: fix out format line offsets\n\nFixes video output in Uncharted 2","sha":"9c919db9ae066d43f7fe5d5d0e96e9e20bb121db"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-13T16:02:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdecDecodeAu: fix param check","sha":"512eb93a62788b6bf7809d11f1cdef2d0d771661"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-13T19:41:53Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdecGetPicture and cellVdecGetPictureExt swap\n\nThis fixes a possible issue with the error handling order.","sha":"9f51003366bbcf0715eff1e316db952e0bba342f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-13T19:57:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: Remove irritating while loop","sha":"7c65c1e3aa7c93e4b6c89913b0b8e7d80b4018e7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T07:32:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T20:22:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: use av_error_to_string","sha":"f42e647430d037afa5595081301a56deba9353af"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T21:43:39Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-21T22:00:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Qt: fix access to uninitialized Pad object\n\nFixes a crash when opening the pad settings before the pad handlers are initialized.","sha":"6a671554041917453e5c285f0a195b2e44d2a07d"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-22T05:39:57Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-22T15:20:23Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Allow NV0039 0x2100","sha":"f92b4879475ad7864794e6c4dc0fe2fc1d7315f2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-22T18:11:35Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-22T18:56:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellGameGetParamString: fix patch mode","sha":"1d6fbf1c3566b45268999d98a0af5dce2ba99d10"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-22T18:35:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-22T18:56:21Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"HLE: simplify some error formats","sha":"8acb62f6ee159f0c6bc7df76399cf83d9348d764"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/16190165?v=4","date":"2022-01-05T05:44:15Z","email":"16190165+Vestrel@users.noreply.github.com","login":"Vestrel","name":"Vestral"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:00:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update cubeb to latest version","sha":"f6de42a2ae6762f890dd19eb46fd8a1edd40b32e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-04-23T10:11:20Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:26:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"7z: Update from 19.00 to 21.07","sha":"7ef112cf3030ca66bbc2ee00686a6ce496a851f2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-04-23T10:16:38Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:26:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"FAudio: Update from 21.11 to 22.04","sha":"e7c5f48d15a58eaf0952f70ed2623ebda8a02e2e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-04-23T10:30:59Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:26:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"pugixml: Update from v1.11.4 to v1.12.1","sha":"9df6e97c886ec15dcf23f32a64b079b46a230ea2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-04-23T10:33:28Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:26:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"zlib: Update from v1.2.11 to v1.2.12","sha":"ed801de01631b64d4bb550cac9bfff97fd530b4a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-04-23T10:40:10Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:26:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"glslang: Update from 11.7.1 to 11.9.0","sha":"bfd10d7b06e3ff772ad15cf209054aae304534a9"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-23T19:03:58Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T06:26:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"curl: update from 7.79.1 to 7.82.0","sha":"b7c17504854adb16a04f7a00b6b65450cabb10d0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/7950891?v=4","date":"2022-04-19T02:13:02Z","email":"nastys@users.noreply.github.com","login":"nastys","name":"nastys"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T07:25:13Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Make MSL Fast Math and software vkSemaphore optional","sha":"f21b298e5e545c0da43b0529489e9e7abab1440c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T07:40:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T08:23:17Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"curl: fix cmake","sha":"572a335c38da7d7ca5fb512e9a4f0e774f168330"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T07:23:37Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T09:05:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"libav: remove deprecated option refcounted_frames\n\nAccording to https://github.com/FFmpeg/FFmpeg/blob/fe85afbf8cb2b9cf8cb28cb13bff654949b43823/doc/APIchanges#L743\nthis option is deprecated and obsolete for the newer send/receive logic.\nShould fix runtime exceptions with newer ffmpeg versions.","sha":"fb27ed4deb5a94964d59978de7770b4dcde49d1e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-22T17:57:22Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-24T10:15:54Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Optimization: disable atomic_wait_engine notify callback for SPU\n\nDisable placebo callback calls in notify_all.\nDon't use callback at all if TSX.\nBased on kd-11 findings.","sha":"6d3052c5dd818e5c5e985f62e5276cf4aadafa8c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-24T10:26:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-24T10:26:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"msg":"Reduce stack usage in atomic_wait_engine::notify_all","sha":"cd6aa0774f0b786b2a8d294e42aa1563d3535b7e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/11153579?v=4","date":"2022-04-24T10:16:51Z","email":"jbeich@FreeBSD.org","login":"jbeich","name":"Jan Beich"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-24T12:40:33Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Thread: define how to access PC on BSD aarch64 after 580bd2b25eba\n\nUtilities/Thread.cpp:1799:51: error: no member named 'pc' in '__mcontext'\n const bool is_executing = uptr(info->si_addr) == RIP(context);\n ^~~~~~~~~~~~\nUtilities/Thread.cpp:1800:62: error: no member named 'pc' in '__mcontext'\n const u32 insn = is_executing ? 0 : *reinterpret_cast<u32*>(RIP(context));\n ^~~~~~~~~~~~\nUtilities/Thread.cpp:1836:90: error: no member named 'pc' in '__mcontext'\n std::string msg = fmt::format(\"Segfault %s location %p at %p.\\n\", cause, info->si_addr, RIP(context));\n ^~~~~~~~~~~~\nUtilities/Thread.cpp:1229:46: note: expanded from macro 'RIP'\n #define RIP(context) ((context)->uc_mcontext.pc)\n ~~~~~~~~~~~~~~~~~~~~~~ ^\n\nBased on https://github.com/mozilla/gecko-dev/commit/480b73c38c73","sha":"f04655c81480ae9fa0cec27f040236393bff0d5a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-23T08:31:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: add handle to more log messages","sha":"b67cda7cbba19765b38c245f9f48787326413797"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-23T13:09:08Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: improve logging a bit","sha":"2c03467eec83e9f63d871a71410c200de556d08b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-23T15:44:48Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: fix cellVdecStartSeq (restart mode)","sha":"92843444805a54cb16fbca31dec7671c32e5046b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-23T16:25:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: add callback and command id logging","sha":"eac4e991bd7b26ad343b70a59a99cd464f2bd009"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-23T18:33:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: send AUDONE before PICOUT","sha":"dcda332a93ce268989e755011f9beee0148e84df"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T09:51:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdecStartSeq: log level warning","sha":"06cbc967220e50d5b0d25d1cfe3c3d1c345cd363"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T11:14:19Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: log sequence id of commands","sha":"79247842154d4e6b11793156a9ca5996df275d96"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T11:52:51Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T15:39:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellVdec: send AUDONE even when the queue is being flushed/restarted\n\nFixes GT6 regression","sha":"c175cdf3d8b9ac49274e5cefc01e93bfe3ee376b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T12:17:00Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T17:11:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Log: Add spacer between error and fmt if necessary","sha":"1d40c06c198ae04dcac574a9b540052687222827"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T12:35:01Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T17:11:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Log: ensure fmt","sha":"e52386ccfb33a92d975013cf7e3e2699034f03fc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T12:35:26Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T17:11:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Log: add ability to force log all errors","sha":"9acc606e4d0fa8dd83f228db92dbf6502d38d39c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-24T15:38:32Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T17:43:40Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update flatbuffers to v2.0.6","sha":"d02a8ba2b90b3fc8a2d18696b4f062e47968ecf2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/27760396?v=4","date":"2022-04-24T06:15:43Z","email":"shockdudex@gmail.com","login":"shockdude","name":"shockdude"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-24T18:18:36Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Make Guitar Hero Live Guitar GHTV button bindable\nAlso make emulated interrupt transfer as fast as possible","sha":"43d26fa6b6e10a93bc2a81d617ec761e278799c7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-04T19:04:04Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"keyboard: use std::array, default init, + KbButton","sha":"abf80cc112f2428523cc705e83e7fe46940a7171"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-04T20:49:59Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"OSK: handle keyboard input","sha":"ffd36ea662af02897e9d86291e9765afe3bfa192"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-04T22:34:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"OSK: Ignore gamepad input if a key was pressed","sha":"aee91b4f6f98b7ccf4c66a50de83e913a8763bfe"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-19T17:15:12Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: add some error checks and TODOs","sha":"43e7776f4dfabad7170907f64bf87715cd69f438"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-19T18:27:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: implement device mask and lock","sha":"9adab801acbffd3b52e94b687fd9f6fb80418cd0"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-19T20:30:20Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"OSK: allow device input during interception","sha":"0ff293707aaa26087a9a94ad427397aec50acc9e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-19T21:36:18Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: implement KeyboardEventHookCallback","sha":"71f8280c5ea83c9bab8d14e87f0677156d8e3268"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T16:16:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: implement base_color","sha":"b29f106c515cf870a530e192970f362198479f83"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T16:32:30Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: only log actual input loop errors","sha":"918984ee6494fd23d96117474fd57666eff6871f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T16:42:32Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: implement dimmer_enabled","sha":"8864f944e221f6c4571fe79ffedc6b5c0e074384"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T16:47:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellMusic: lower some log levels to reduce spam","sha":"3d0f751211216240cd97487c0b63bfaad197bfbc"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T19:28:22Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"OSK: flush key input to prevent key event spam","sha":"5fad7e1b8719333232c9250f4c817268527c3bf6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-20T20:44:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: add event_hook_callback logging\n\nAnd refactor the callback a bit","sha":"a1abc79f28f7cc919101c40654100aa07676ed9c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T16:44:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: ignore input if kb pad handler is active","sha":"8f14f392fdaf3750171e6476c5c34a64e758a455"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:17:33Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"OSK/overlays: handle keyboard enter and escape","sha":"ff7636ea01f530dcb0477c0c8e43caa3318e144e"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:23:24Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T17:44:56Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"overlays: enable key repeat by default","sha":"8d662e932755534fb82589c3a34b0ae451fad9d5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2021-09-06T12:45:13Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T18:15:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"TAR: Allow to use save_directory with a buffer not 512-bytes aligned","sha":"27becdec9752edd598336b0d1d22162dcccafcca"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-25T06:39:58Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T18:15:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"TRPLoader: Use std::string_view","sha":"7329fa9cf5ef2154b5313213d842d07b5447f786"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-25T06:22:11Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T18:15:10Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix instructions editor, implement preview for to-be-edited instructions","sha":"08ebc59db04c88b8f99f6acab4f0525f15546e19"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T22:15:27Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T22:51:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Input: log interception and its source function","sha":"c8700dd24684d04fc253a04265caa5a41a4ef394"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T22:20:07Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T22:51:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"OSK/overlays: fix initial input interception\n\nDon't use default interception if we already intercept with custom params.","sha":"3183d73e4d8ccd02221afe2548820464b686bb9c"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T22:20:57Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-25T22:51:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"cellOskDialog: do not intercept input unless we actually show a dialog","sha":"e0d3a3b0ed6b42351dfe610d3ad97ef2dac96196"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/5994581?v=4","date":"2022-04-26T21:00:03Z","email":"5994581+cipherxof@users.noreply.github.com","login":"cipherxof","name":"trigger"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-26T21:23:34Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update buid instructions for Arch\n\nThe qt5-multimedia dependency is required for compilation on Arch Linux, otherwise you will receive the following error.\r\n\r\n```\r\nCMake Error at 3rdparty/qt5.cmake:12 (target_link_libraries):\r\n The link interface of target \"3rdparty_qt5\" contains:\r\n\r\n Qt5::Multimedia\r\n```","sha":"e9570d1a0045926f63ec8ea9af68f81743d4f365"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-27T21:16:16Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/19864447?v=4","date":"2022-04-27T21:16:16Z","email":"noreply@github.com","login":"web-flow","name":"GitHub"},"msg":"sceNpMatching2CreateContext checks psn state (#11887)","sha":"5746df4046915e959928945d372b07e1501af06f"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-24T08:56:42Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-27T22:31:07Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx: Improve lowered precision comparison emulation","sha":"e236ba4dafa028f4613c72ddeb36f6dff85438b6"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-24T10:03:22Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-27T22:31:07Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"Fix typos","sha":"95ac7724a68736dbb58fd8cbc5d752be4c21b7eb"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-27T21:15:54Z","email":"karokidii@gmail.com","login":"kd-11","name":"kd-11"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/15904127?v=4","date":"2022-04-27T22:31:07Z","email":"15904127+kd-11@users.noreply.github.com","login":"kd-11","name":"kd-11"},"msg":"rsx/vp: Zero-initialize temporary registers","sha":"7a434d19a6d2ace1382c1394a7101ffab4046ae7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6031700?v=4","date":"2022-04-28T17:18:12Z","email":"RipleyTom@users.noreply.github.com","login":"RipleyTom","name":"RipleyTom"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-29T00:04:52Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Update libusb to v1.0.26","sha":"8316469cfcfb076d5a9772557b0de522f39616d2"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-28T15:11:12Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-30T11:01:31Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Debugger: Keep instruction's panel up-to-date with memory changes","sha":"159f9494a95490a892e13ffc0bb71d55a20b7217"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-30T19:27:25Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-05-01T07:21:49Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"Fix forced HLE injection","sha":"5eeb79ffa14f42fc33d111562eee9cfdd65a458b"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-05-01T12:34:29Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/10283761?v=4","date":"2022-05-01T13:23:47Z","email":"ani-leo@outlook.com","login":"AniLeo","name":"Ani"},"msg":"rpcs3_version: Bump to 0.0.22","sha":"799c4837d3d601c7e89d922afb499e6a1d0a7f83"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-04-30T13:51:52Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-02T07:29:28Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"vm: remove g_mutex, use g_range_lock instead\n\nSimplification and performance improvements.","sha":"5c1f79ab265a556dd363f4200662f9757b4eadc5"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-05-01T12:04:56Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-02T14:01:02Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Debugger: Fix instruction pointer for good","sha":"8cc6a305577ef5828349ae78e42ce0c6ea315f0a"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-05-01T12:48:37Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-02T14:01:02Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"Debugger: Fix instruction selection","sha":"c14e79f8df167a0a85de4e933c715f4a3bc24558"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-02T20:05:48Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Nekotekina"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-03T05:27:44Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"PPU LLVM: match interpreter for VEXPTEFP/VLOGEFP","sha":"0786a0a0886749c1e24bf46990789f0570391da4"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-26T18:35:28Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-05-03T16:19:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"halfplement cellVideoExport","sha":"bcd77ac65ed27031ff738bcccfebdac78833c252"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-04-28T01:47:38Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/23019877?v=4","date":"2022-05-03T16:19:31Z","email":"studienricky89@googlemail.com","login":"Megamouse","name":"Megamouse"},"msg":"halfplement cellRec","sha":"6cc1466baaa4cbb8327eb0047ab199b379ffb679"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-04-27T16:46:09Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-03T17:47:36Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"SPU/PPU Loader: Implement linker/PS3 compiler executable files loading","sha":"f9a62667cf79fb10c50c233b764ffec0a8327fe7"}
|
||||
{"author":{"avatar":"https://avatars.githubusercontent.com/u/18193363?v=4","date":"2022-05-03T18:08:56Z","email":"elad3356p@gmail.com","login":"elad335","name":"Eladash"},"committer":{"avatar":"https://avatars.githubusercontent.com/u/6028184?v=4","date":"2022-05-04T09:03:10Z","email":"nekotekina@gmail.com","login":"Nekotekina","name":"Ivan"},"msg":"PPU Loader Fix removing writablity permission for RSX/SPU writable segments","sha":"63669000ab7ff31c49be86acdc56c0f724007d05"}
|
||||
|
||||
Binary file not shown.
+1
-1
Submodule llvm updated: 509d31ad89...5521155be5
@@ -85,6 +85,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcubeb", "3rdparty\cubeb\
|
||||
EndProject
|
||||
Project("{508c291a-3d18-49f5-b25d-f7c8db92cb21}") = "soundtouch", "3rdparty\SoundTouch\soundtouch.vcxproj", "{508c291a-3d18-49f5-b25d-f7c8db92cb21}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pine", "pine", "{A55DA1B5-CC17-4525-BE7F-1659CE17BB56}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
3rdparty\pine\pine_server.h = 3rdparty\pine\pine_server.h
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
@@ -202,6 +207,7 @@ Global
|
||||
{9610627D-20FE-4B07-8CE3-9FF68A5F1EC2} = {10FBF193-D532-4CCF-B875-4C7091A7F6C2}
|
||||
{FDA7B080-03B0-48C8-B24F-88118981422A} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||
{508c291a-3d18-49f5-b25d-f7c8db92cb21} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||
{A55DA1B5-CC17-4525-BE7F-1659CE17BB56} = {6C3B64A0-8F8A-4DC4-8C0B-D71EBEED7FA8}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {06CC7920-E085-4B81-9582-8DE8AAD42510}
|
||||
|
||||
@@ -138,6 +138,11 @@ find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${_qt_bin_dir}")
|
||||
|
||||
# Copy icons to executable directory
|
||||
if(APPLE)
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Debug" OR CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
|
||||
set(QT_DEPLOY_FLAGS "-no-strip")
|
||||
else()
|
||||
set(QT_DEPLOY_FLAGS "")
|
||||
endif()
|
||||
add_custom_command(TARGET rpcs3 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
${RPCS3_SRC_DIR}/rpcs3.icns $<TARGET_FILE_DIR:rpcs3>/../Resources/rpcs3.icns
|
||||
@@ -147,7 +152,7 @@ if(APPLE)
|
||||
${CMAKE_SOURCE_DIR}/bin/GuiConfigs $<TARGET_FILE_DIR:rpcs3>/../Resources/GuiConfigs
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${CMAKE_SOURCE_DIR}/bin/git $<TARGET_FILE_DIR:rpcs3>/../Resources/git
|
||||
COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${PROJECT_BINARY_DIR}/bin/rpcs3.app")
|
||||
COMMAND "${MACDEPLOYQT_EXECUTABLE}" "${PROJECT_BINARY_DIR}/bin/rpcs3.app" "${QT_DEPLOY_FLAGS}")
|
||||
elseif(UNIX)
|
||||
add_custom_command(TARGET rpcs3 POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
@@ -210,4 +215,6 @@ if(UNIX AND NOT APPLE)
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||
install(DIRECTORY ../bin/git
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||
install(DIRECTORY ../bin/test
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/rpcs3)
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
#include "stdafx.h"
|
||||
#include "decrypt_binaries.h"
|
||||
#include "unedat.h"
|
||||
#include "unself.h"
|
||||
#include "Emu/IdManager.h"
|
||||
#include "Emu/System.h"
|
||||
#include "Utilities/StrUtil.h"
|
||||
|
||||
#include <charconv>
|
||||
#include <iostream>
|
||||
|
||||
LOG_CHANNEL(dec_log, "DECRYPT");
|
||||
|
||||
void decrypt_sprx_libraries(std::vector<std::string> modules, std::function<std::string(std::string old_path, std::string path, bool tried)> input_cb)
|
||||
{
|
||||
if (modules.empty())
|
||||
{
|
||||
std::cout << "No paths specified" << std::endl; // For CLI
|
||||
return;
|
||||
}
|
||||
|
||||
dec_log.notice("Decrypting binaries...");
|
||||
std::cout << "Decrypting binaries..." << std::endl; // For CLI
|
||||
|
||||
// Always start with no KLIC
|
||||
std::vector<u128> klics{u128{}};
|
||||
|
||||
if (const auto keys = g_fxo->try_get<loaded_npdrm_keys>())
|
||||
{
|
||||
// Second klic: get it from a running game
|
||||
if (const u128 klic = keys->last_key())
|
||||
{
|
||||
klics.emplace_back(klic);
|
||||
}
|
||||
}
|
||||
|
||||
// Try to use the key that has been for the current running ELF
|
||||
klics.insert(klics.end(), Emu.klic.begin(), Emu.klic.end());
|
||||
|
||||
for (const std::string& _module : modules)
|
||||
{
|
||||
const std::string old_path = _module;
|
||||
|
||||
fs::file elf_file;
|
||||
|
||||
bool tried = false;
|
||||
bool invalid = false;
|
||||
usz key_it = 0;
|
||||
u32 file_magic{};
|
||||
|
||||
while (true)
|
||||
{
|
||||
for (; key_it < klics.size(); key_it++)
|
||||
{
|
||||
if (!elf_file.open(old_path) || !elf_file.read(file_magic))
|
||||
{
|
||||
file_magic = 0;
|
||||
}
|
||||
|
||||
switch (file_magic)
|
||||
{
|
||||
case "SCE\0"_u32:
|
||||
{
|
||||
// First KLIC is no KLIC
|
||||
elf_file = decrypt_self(std::move(elf_file), key_it != 0 ? reinterpret_cast<u8*>(&klics[key_it]) : nullptr);
|
||||
|
||||
if (!elf_file)
|
||||
{
|
||||
// Try another key
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case "NPD\0"_u32:
|
||||
{
|
||||
// EDAT / SDAT
|
||||
elf_file = DecryptEDAT(elf_file, old_path, key_it != 0 ? 8 : 1, reinterpret_cast<u8*>(&klics[key_it]), true);
|
||||
|
||||
if (!elf_file)
|
||||
{
|
||||
// Try another key
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
invalid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (invalid)
|
||||
{
|
||||
elf_file.close();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (elf_file)
|
||||
{
|
||||
const std::string exec_ext = fmt::to_lower(_module).ends_with(".sprx") ? ".prx" : ".elf";
|
||||
const std::string new_path = file_magic == "NPD\0"_u32 ? old_path + ".unedat" :
|
||||
old_path.substr(0, old_path.find_last_of('.')) + exec_ext;
|
||||
|
||||
if (fs::file new_file{new_path, fs::rewrite})
|
||||
{
|
||||
new_file.write(elf_file.to_string());
|
||||
dec_log.success("Decrypted %s -> %s", old_path, new_path);
|
||||
std::cout << "Decrypted " << old_path << " -> " << new_path << std::endl; // For CLI
|
||||
}
|
||||
else
|
||||
{
|
||||
dec_log.error("Failed to create %s", new_path);
|
||||
std::cout << "Failed to create " << new_path << std::endl; // For CLI
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (!invalid)
|
||||
{
|
||||
// Allow the user to manually type KLIC if decryption failed
|
||||
|
||||
const std::string filename = old_path.substr(old_path.find_last_of(fs::delim) + 1);
|
||||
const std::string text = input_cb ? input_cb(old_path, filename, tried) : "";
|
||||
|
||||
if (!text.empty())
|
||||
{
|
||||
auto& klic = (tried ? klics.back() : klics.emplace_back());
|
||||
|
||||
ensure(text.size() == 32);
|
||||
|
||||
// It must succeed (only hex characters are present)
|
||||
u64 lo_ = 0;
|
||||
u64 hi_ = 0;
|
||||
std::from_chars(&text[0], &text[16], lo_, 16);
|
||||
std::from_chars(&text[16], &text[32], hi_, 16);
|
||||
|
||||
be_t<u64> lo = std::bit_cast<be_t<u64>>(lo_);
|
||||
be_t<u64> hi = std::bit_cast<be_t<u64>>(hi_);
|
||||
|
||||
klic = (u128{+hi} << 64) | +lo;
|
||||
|
||||
// Retry with specified KLIC
|
||||
key_it -= +std::exchange(tried, true); // Rewind on second and above attempt
|
||||
dec_log.notice("KLIC entered for %s: %s", filename, klic);
|
||||
continue;
|
||||
}
|
||||
|
||||
dec_log.notice("User has cancelled entering KLIC.");
|
||||
}
|
||||
|
||||
dec_log.error("Failed to decrypt \"%s\".", old_path);
|
||||
std::cout << "Failed to decrypt \"" << old_path << "\"." << std::endl; // For CLI
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
dec_log.notice("Finished decrypting all binaries.");
|
||||
std::cout << "Finished decrypting all binaries." << std::endl; // For CLI
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
|
||||
void decrypt_sprx_libraries(std::vector<std::string> modules, std::function<std::string(std::string old_path, std::string path, bool tried)> input_cb);
|
||||
@@ -647,8 +647,8 @@ void read_npd_edat_header(const fs::file* input, NPD_HEADER& NPD, EDAT_HEADER& E
|
||||
memcpy(NPD.digest, &npd_header[64], 0x10);
|
||||
memcpy(NPD.title_hash, &npd_header[80], 0x10);
|
||||
memcpy(NPD.dev_hash, &npd_header[96], 0x10);
|
||||
NPD.unk1 = swap64(*reinterpret_cast<u64*>(&npd_header[112]));
|
||||
NPD.unk2 = swap64(*reinterpret_cast<u64*>(&npd_header[120]));
|
||||
NPD.activate_time = swap64(*reinterpret_cast<s64*>(&npd_header[112]));
|
||||
NPD.expire_time = swap64(*reinterpret_cast<s64*>(&npd_header[120]));
|
||||
|
||||
EDAT.flags = swap32(*reinterpret_cast<s32*>(&edat_header[0]));
|
||||
EDAT.block_size = swap32(*reinterpret_cast<s32*>(&edat_header[4]));
|
||||
@@ -785,7 +785,7 @@ u128 GetEdatRifKeyFromRapFile(const fs::file& rap_file)
|
||||
return rifkey;
|
||||
}
|
||||
|
||||
bool VerifyEDATHeaderWithKLicense(const fs::file& input, const std::string& input_file_name, const u8* custom_klic, std::string* contentID, u32* license)
|
||||
bool VerifyEDATHeaderWithKLicense(const fs::file& input, const std::string& input_file_name, const u8* custom_klic, NPD_HEADER* npd_out)
|
||||
{
|
||||
// Setup NPD and EDAT/SDAT structs.
|
||||
NPD_HEADER NPD;
|
||||
@@ -818,8 +818,11 @@ bool VerifyEDATHeaderWithKLicense(const fs::file& input, const std::string& inpu
|
||||
std::string_view sv{NPD.content_id, std::size(NPD.content_id)};
|
||||
sv = sv.substr(0, sv.find_first_of('\0'));
|
||||
|
||||
if (contentID) *contentID = std::string(sv);
|
||||
if (license) *license = (NPD.license & 3);
|
||||
if (npd_out)
|
||||
{
|
||||
memcpy(npd_out, &NPD, sizeof(NPD_HEADER));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+12
-5
@@ -26,11 +26,17 @@ struct loaded_npdrm_keys
|
||||
}
|
||||
|
||||
// TODO: Check if correct for ELF files usage
|
||||
u128 last_key() const
|
||||
u128 last_key(usz backwards = 0) const
|
||||
{
|
||||
backwards++;
|
||||
const usz pos = dec_keys_pos;
|
||||
return pos ? dec_keys[(pos - 1) % std::size(dec_keys)].load() : u128{};
|
||||
return pos >= backwards ? dec_keys[(pos - backwards) % std::size(dec_keys)].load() : u128{};
|
||||
}
|
||||
|
||||
SAVESTATE_INIT_POS(2);
|
||||
loaded_npdrm_keys() = default;
|
||||
loaded_npdrm_keys(utils::serial& ar);
|
||||
void save(utils::serial& ar);
|
||||
};
|
||||
|
||||
struct NPD_HEADER
|
||||
@@ -43,8 +49,8 @@ struct NPD_HEADER
|
||||
u8 digest[0x10];
|
||||
u8 title_hash[0x10];
|
||||
u8 dev_hash[0x10];
|
||||
u64 unk1;
|
||||
u64 unk2;
|
||||
s64 activate_time;
|
||||
s64 expire_time;
|
||||
};
|
||||
|
||||
struct EDAT_HEADER
|
||||
@@ -57,7 +63,8 @@ struct EDAT_HEADER
|
||||
// Decrypts full file, or null/empty file
|
||||
extern fs::file DecryptEDAT(const fs::file& input, const std::string& input_file_name, int mode, u8 *custom_klic, bool verbose);
|
||||
|
||||
extern bool VerifyEDATHeaderWithKLicense(const fs::file& input, const std::string& input_file_name, const u8* custom_klic, std::string* contentID = nullptr, u32* license = nullptr);
|
||||
extern void read_npd_edat_header(const fs::file* input, NPD_HEADER& NPD, EDAT_HEADER& EDAT);
|
||||
extern bool VerifyEDATHeaderWithKLicense(const fs::file& input, const std::string& input_file_name, const u8* custom_klic, NPD_HEADER *npd_out = nullptr);
|
||||
|
||||
u128 GetEdatRifKeyFromRapFile(const fs::file& rap_file);
|
||||
|
||||
|
||||
@@ -286,7 +286,7 @@ bool package_reader::read_metadata()
|
||||
|
||||
if (packet.size == m_metadata.title_id.size())
|
||||
{
|
||||
archive_read(&m_metadata.title_id, m_metadata.title_id.size());
|
||||
archive_read(&m_metadata.title_id.front(), m_metadata.title_id.size());
|
||||
m_metadata.title_id = fmt::trim(m_metadata.title_id);
|
||||
pkg_log.notice("Metadata: Title ID = %s", m_metadata.title_id);
|
||||
continue;
|
||||
|
||||
+92
-47
@@ -279,15 +279,15 @@ void ControlInfo::Load(const fs::file& f)
|
||||
else if (type == 3)
|
||||
{
|
||||
npdrm.magic = Read32(f);
|
||||
npdrm.unknown1 = Read32(f);
|
||||
npdrm.version = Read32(f);
|
||||
npdrm.license = Read32(f);
|
||||
npdrm.type = Read32(f);
|
||||
f.read(npdrm.content_id, 48);
|
||||
f.read(npdrm.digest, 16);
|
||||
f.read(npdrm.invdigest, 16);
|
||||
f.read(npdrm.xordigest, 16);
|
||||
npdrm.unknown2 = Read64(f);
|
||||
npdrm.unknown3 = Read64(f);
|
||||
f.read(npdrm.title_hash, 16);
|
||||
f.read(npdrm.dev_hash, 16);
|
||||
npdrm.activate_time = Read64(f);
|
||||
npdrm.expire_time = Read64(f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -325,15 +325,15 @@ void ControlInfo::Show() const
|
||||
else if (type == 3)
|
||||
{
|
||||
self_log.notice("Magic: 0x%08x", npdrm.magic);
|
||||
self_log.notice("Unknown1: 0x%08x", npdrm.unknown1);
|
||||
self_log.notice("Version: 0x%08x", npdrm.version);
|
||||
self_log.notice("License: 0x%08x", npdrm.license);
|
||||
self_log.notice("Type: 0x%08x", npdrm.type);
|
||||
self_log.notice("ContentID: %s", npdrm.content_id);
|
||||
self_log.notice("Digest: %s", npdrm.digest);
|
||||
self_log.notice("Inverse digest: %s", npdrm.invdigest);
|
||||
self_log.notice("XOR digest: %s", npdrm.xordigest);
|
||||
self_log.notice("Unknown2: 0x%llx", npdrm.unknown2);
|
||||
self_log.notice("Unknown3: 0x%llx", npdrm.unknown3);
|
||||
self_log.notice("Inverse digest: %s", npdrm.title_hash);
|
||||
self_log.notice("XOR digest: %s", npdrm.dev_hash);
|
||||
self_log.notice("Activation time: 0x%llx", npdrm.activate_time);
|
||||
self_log.notice("Expiration time: 0x%llx", npdrm.expire_time);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -639,7 +639,7 @@ bool SCEDecrypter::LoadHeaders()
|
||||
// Check SCE magic.
|
||||
if (!sce_hdr.CheckMagic())
|
||||
{
|
||||
self_log.error("SELF: Not a SELF file!");
|
||||
self_log.error("Not a SELF file!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -683,7 +683,7 @@ bool SCEDecrypter::LoadMetadata(const u8 erk[32], const u8 riv[16])
|
||||
if ((meta_info.key_pad[0] != 0x00) ||
|
||||
(meta_info.iv_pad[0] != 0x00))
|
||||
{
|
||||
self_log.error("SELF: Failed to decrypt metadata info!");
|
||||
self_log.error("Failed to decrypt metadata info!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -879,7 +879,7 @@ bool SELFDecrypter::LoadHeaders(bool isElf32, SelfAdditionalInfo* out_info)
|
||||
// Check SCE magic.
|
||||
if (!sce_hdr.CheckMagic())
|
||||
{
|
||||
self_log.error("SELF: Not a SELF file!");
|
||||
self_log.error("Not a SELF file!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -909,7 +909,7 @@ bool SELFDecrypter::LoadHeaders(bool isElf32, SelfAdditionalInfo* out_info)
|
||||
phdr32_arr.clear();
|
||||
if(elf32_hdr.e_phoff == 0 && elf32_hdr.e_phnum)
|
||||
{
|
||||
self_log.error("SELF: ELF program header offset is null!");
|
||||
self_log.error("ELF program header offset is null!");
|
||||
return false;
|
||||
}
|
||||
self_f.seek(self_hdr.se_phdroff);
|
||||
@@ -925,7 +925,7 @@ bool SELFDecrypter::LoadHeaders(bool isElf32, SelfAdditionalInfo* out_info)
|
||||
|
||||
if (elf64_hdr.e_phoff == 0 && elf64_hdr.e_phnum)
|
||||
{
|
||||
self_log.error("SELF: ELF program header offset is null!");
|
||||
self_log.error("ELF program header offset is null!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -977,7 +977,7 @@ bool SELFDecrypter::LoadHeaders(bool isElf32, SelfAdditionalInfo* out_info)
|
||||
|
||||
if (elf32_hdr.e_shoff == 0 && elf32_hdr.e_shnum)
|
||||
{
|
||||
self_log.warning("SELF: ELF section header offset is null!");
|
||||
self_log.warning("ELF section header offset is null!");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -994,7 +994,7 @@ bool SELFDecrypter::LoadHeaders(bool isElf32, SelfAdditionalInfo* out_info)
|
||||
shdr64_arr.clear();
|
||||
if (elf64_hdr.e_shoff == 0 && elf64_hdr.e_shnum)
|
||||
{
|
||||
self_log.warning("SELF: ELF section header offset is null!");
|
||||
self_log.warning("ELF section header offset is null!");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1062,47 +1062,37 @@ void SELFDecrypter::ShowHeaders(bool isElf32)
|
||||
bool SELFDecrypter::DecryptNPDRM(u8 *metadata, u32 metadata_size)
|
||||
{
|
||||
aes_context aes;
|
||||
ControlInfo *ctrl = NULL;
|
||||
u8 npdrm_key[0x10];
|
||||
u8 npdrm_iv[0x10];
|
||||
|
||||
// Parse the control info structures to find the NPDRM control info.
|
||||
for(unsigned int i = 0; i < ctrlinfo_arr.size(); i++)
|
||||
{
|
||||
if (ctrlinfo_arr[i].type == 3)
|
||||
{
|
||||
ctrl = &ctrlinfo_arr[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Check if we have a valid NPDRM control info structure.
|
||||
// If not, the data has no NPDRM layer.
|
||||
if (!ctrl)
|
||||
const NPD_HEADER* npd = GetNPDHeader();
|
||||
if (!npd)
|
||||
{
|
||||
self_log.trace("SELF: No NPDRM control info found!");
|
||||
self_log.trace("No NPDRM control info found!");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (ctrl->npdrm.license == 1) // Network license.
|
||||
if (npd->license == 1) // Network license.
|
||||
{
|
||||
// Try to find a RAP file to get the key.
|
||||
if (!GetKeyFromRap(ctrl->npdrm.content_id, npdrm_key))
|
||||
if (!GetKeyFromRap(npd->content_id, npdrm_key))
|
||||
{
|
||||
self_log.error("SELF: Can't decrypt network NPDRM!");
|
||||
self_log.error("Can't decrypt network NPDRM!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (ctrl->npdrm.license == 2) // Local license.
|
||||
else if (npd->license == 2) // Local license.
|
||||
{
|
||||
// Try to find a RAP file to get the key.
|
||||
if (!GetKeyFromRap(ctrl->npdrm.content_id, npdrm_key))
|
||||
if (!GetKeyFromRap(npd->content_id, npdrm_key))
|
||||
{
|
||||
self_log.error("SELF: Can't find RAP file for NPDRM decryption!");
|
||||
self_log.error("Can't find RAP file for NPDRM decryption!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (ctrl->npdrm.license == 3) // Free license.
|
||||
else if (npd->license == 3) // Free license.
|
||||
{
|
||||
// Use klicensee if available.
|
||||
if (key_v.GetKlicenseeKey() != nullptr)
|
||||
@@ -1112,7 +1102,7 @@ bool SELFDecrypter::DecryptNPDRM(u8 *metadata, u32 metadata_size)
|
||||
}
|
||||
else
|
||||
{
|
||||
self_log.error("SELF: Invalid NPDRM license type!");
|
||||
self_log.error("Invalid NPDRM license type!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1130,6 +1120,20 @@ bool SELFDecrypter::DecryptNPDRM(u8 *metadata, u32 metadata_size)
|
||||
return true;
|
||||
}
|
||||
|
||||
const NPD_HEADER* SELFDecrypter::GetNPDHeader() const
|
||||
{
|
||||
// Parse the control info structures to find the NPDRM control info.
|
||||
for (const ControlInfo& info : ctrlinfo_arr)
|
||||
{
|
||||
if (info.type == 3)
|
||||
{
|
||||
return &info.npdrm;
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool SELFDecrypter::LoadMetadata(u8* klic_key)
|
||||
{
|
||||
aes_context aes;
|
||||
@@ -1178,7 +1182,7 @@ bool SELFDecrypter::LoadMetadata(u8* klic_key)
|
||||
if ((meta_info.key_pad[0] != 0x00) ||
|
||||
(meta_info.iv_pad[0] != 0x00))
|
||||
{
|
||||
self_log.error("SELF: Failed to decrypt metadata info!");
|
||||
self_log.error("Failed to decrypt metadata info!");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1288,14 +1292,14 @@ fs::file SELFDecrypter::MakeElf(bool isElf32)
|
||||
return e;
|
||||
}
|
||||
|
||||
bool SELFDecrypter::GetKeyFromRap(u8* content_id, u8* npdrm_key)
|
||||
bool SELFDecrypter::GetKeyFromRap(const char* content_id, u8* npdrm_key)
|
||||
{
|
||||
// Set empty RAP key.
|
||||
u8 rap_key[0x10];
|
||||
memset(rap_key, 0, 0x10);
|
||||
|
||||
// Try to find a matching RAP file under exdata folder.
|
||||
const std::string ci_str = reinterpret_cast<const char*>(content_id);
|
||||
const std::string ci_str = content_id;
|
||||
const std::string rap_path = rpcs3::utils::get_rap_file_path(ci_str);
|
||||
|
||||
// Open the RAP file and read the key.
|
||||
@@ -1431,21 +1435,21 @@ fs::file decrypt_self(fs::file elf_or_self, u8* klic_key, SelfAdditionalInfo* ou
|
||||
// Load the SELF file headers.
|
||||
if (!self_dec.LoadHeaders(isElf32, out_info))
|
||||
{
|
||||
self_log.error("SELF: Failed to load SELF file headers!");
|
||||
self_log.error("Failed to load SELF file headers!");
|
||||
return fs::file{};
|
||||
}
|
||||
|
||||
// Load and decrypt the SELF file metadata.
|
||||
if (!self_dec.LoadMetadata(klic_key))
|
||||
{
|
||||
self_log.error("SELF: Failed to load SELF file metadata!");
|
||||
self_log.error("Failed to load SELF file metadata!");
|
||||
return fs::file{};
|
||||
}
|
||||
|
||||
// Decrypt the SELF file data.
|
||||
if (!self_dec.DecryptData())
|
||||
{
|
||||
self_log.error("SELF: Failed to decrypt SELF file data!");
|
||||
self_log.error("Failed to decrypt SELF file data!");
|
||||
return fs::file{};
|
||||
}
|
||||
|
||||
@@ -1456,7 +1460,7 @@ fs::file decrypt_self(fs::file elf_or_self, u8* klic_key, SelfAdditionalInfo* ou
|
||||
return elf_or_self;
|
||||
}
|
||||
|
||||
bool verify_npdrm_self_headers(const fs::file& self, u8* klic_key)
|
||||
bool verify_npdrm_self_headers(const fs::file& self, u8* klic_key, NPD_HEADER* npd_out)
|
||||
{
|
||||
if (!self)
|
||||
return false;
|
||||
@@ -1474,20 +1478,61 @@ bool verify_npdrm_self_headers(const fs::file& self, u8* klic_key)
|
||||
// Load the SELF file headers.
|
||||
if (!self_dec.LoadHeaders(isElf32))
|
||||
{
|
||||
self_log.error("SELF: Failed to load SELF file headers!");
|
||||
self_log.error("Failed to load SELF file headers!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Load and decrypt the SELF file metadata.
|
||||
if (!self_dec.LoadMetadata(klic_key))
|
||||
{
|
||||
self_log.error("SELF: Failed to load SELF file metadata!");
|
||||
self_log.error("Failed to load SELF file metadata!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (npd_out)
|
||||
{
|
||||
if (const NPD_HEADER* npd = self_dec.GetNPDHeader())
|
||||
{
|
||||
memcpy(npd_out, npd, sizeof(NPD_HEADER));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool get_npdrm_self_header(const fs::file& self, NPD_HEADER &npd_out)
|
||||
{
|
||||
if (!self)
|
||||
return false;
|
||||
|
||||
self.seek(0);
|
||||
|
||||
if (self.size() >= 4 && self.read<u32>() == "SCE\0"_u32 && !IsDebugSelf(self))
|
||||
{
|
||||
// Check the ELF file class (32 or 64 bit).
|
||||
const bool isElf32 = IsSelfElf32(self);
|
||||
|
||||
// Start the decrypter on this SELF file.
|
||||
SELFDecrypter self_dec(self);
|
||||
|
||||
// Load the SELF file headers.
|
||||
if (!self_dec.LoadHeaders(isElf32))
|
||||
{
|
||||
self_log.error("Failed to load SELF file headers!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (const NPD_HEADER* npd = self_dec.GetNPDHeader())
|
||||
{
|
||||
memcpy(&npd_out, npd, sizeof(NPD_HEADER));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
u128 get_default_self_klic()
|
||||
{
|
||||
return std::bit_cast<u128>(NP_KLIC_FREE);
|
||||
|
||||
+7
-16
@@ -7,6 +7,8 @@
|
||||
#include "Utilities/File.h"
|
||||
#include "util/logs.hpp"
|
||||
|
||||
#include "unedat.h"
|
||||
|
||||
LOG_CHANNEL(self_log, "SELF");
|
||||
|
||||
struct AppInfo
|
||||
@@ -85,20 +87,7 @@ struct ControlInfo
|
||||
} file_digest_40;
|
||||
|
||||
// type 3 0x90 bytes
|
||||
struct
|
||||
{
|
||||
u32 magic;
|
||||
u32 unknown1;
|
||||
u32 license;
|
||||
u32 type;
|
||||
u8 content_id[48];
|
||||
u8 digest[16];
|
||||
u8 invdigest[16];
|
||||
u8 xordigest[16];
|
||||
u64 unknown2;
|
||||
u64 unknown3;
|
||||
|
||||
} npdrm;
|
||||
NPD_HEADER npdrm;
|
||||
};
|
||||
|
||||
void Load(const fs::file& f);
|
||||
@@ -427,7 +416,8 @@ public:
|
||||
bool LoadMetadata(u8* klic_key);
|
||||
bool DecryptData();
|
||||
bool DecryptNPDRM(u8 *metadata, u32 metadata_size);
|
||||
static bool GetKeyFromRap(u8 *content_id, u8 *npdrm_key);
|
||||
const NPD_HEADER* GetNPDHeader() const;
|
||||
static bool GetKeyFromRap(const char *content_id, u8 *npdrm_key);
|
||||
|
||||
private:
|
||||
template<typename EHdr, typename SHdr, typename PHdr>
|
||||
@@ -507,6 +497,7 @@ private:
|
||||
};
|
||||
|
||||
fs::file decrypt_self(fs::file elf_or_self, u8* klic_key = nullptr, SelfAdditionalInfo* additional_info = nullptr);
|
||||
bool verify_npdrm_self_headers(const fs::file& self, u8* klic_key = nullptr);
|
||||
bool verify_npdrm_self_headers(const fs::file& self, u8* klic_key = nullptr, NPD_HEADER* npd_out = nullptr);
|
||||
bool get_npdrm_self_header(const fs::file& self, NPD_HEADER& npd);
|
||||
|
||||
u128 get_default_self_klic();
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "utils.h"
|
||||
#include "aes.h"
|
||||
#include "sha1.h"
|
||||
#include "sha256.h"
|
||||
#include "key_vault.h"
|
||||
#include <cstring>
|
||||
#include <stdio.h>
|
||||
@@ -138,6 +139,27 @@ char* extract_file_name(const char* file_path, char real_file_name[CRYPTO_MAX_PA
|
||||
return real_file_name;
|
||||
}
|
||||
|
||||
std::string sha256_get_hash(const char* data, usz size, bool lower_case)
|
||||
{
|
||||
u8 res_hash[32];
|
||||
mbedtls_sha256_context ctx;
|
||||
mbedtls_sha256_init(&ctx);
|
||||
mbedtls_sha256_starts_ret(&ctx, 0);
|
||||
mbedtls_sha256_update_ret(&ctx, reinterpret_cast<const unsigned char*>(data), size);
|
||||
mbedtls_sha256_finish_ret(&ctx, res_hash);
|
||||
|
||||
std::string res_hash_string("0000000000000000000000000000000000000000000000000000000000000000");
|
||||
|
||||
for (usz index = 0; index < 32; index++)
|
||||
{
|
||||
const auto pal = lower_case ? "0123456789abcdef" : "0123456789ABCDEF";
|
||||
res_hash_string[index * 2] = pal[res_hash[index] >> 4];
|
||||
res_hash_string[(index * 2) + 1] = pal[res_hash[index] & 15];
|
||||
}
|
||||
|
||||
return res_hash_string;
|
||||
}
|
||||
|
||||
void mbedtls_zeroize(void *v, size_t n)
|
||||
{
|
||||
static void *(*const volatile unop_memset)(void *, int, size_t) = &memset;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user