Compare commits

...

990 Commits

Author SHA1 Message Date
Ani df718bcb0f rpcs3_version: Bump to 0.0.26 2023-01-07 22:47:41 +00:00
Eladash 8eefbcae45 VSH/UI: Add VSH to game grid
* Custom VSH config.
* VSH shortcut creation.
2023-01-07 22:52:50 +01:00
Megamouse 8cf28730cb Update submodules 2023-01-07 21:50:02 +01:00
Megamouse f894e2b9a2 Qt: Fix open_dir for paths with multiple slashes 2023-01-07 16:07:41 +01:00
Megamouse e3cd31f057 update_manager: Simplify wchar conversion 2023-01-07 16:07:41 +01:00
Foxxcoon 05086cda3b Fix #11126 2023-01-07 16:40:39 +03:00
Elad Ashkenazi 7c2d6f8a23 PKG: Pack multiple PKGs into fast+efficient install (#13147) 2023-01-03 15:31:39 +03:00
kd-11 7423abb136 rsx: Remove incorrect hack 2023-01-02 23:03:39 +03:00
Megamouse 310fa7127d VS: Add SDL dependency to rpcs3 project 2022-12-30 22:02:41 +01:00
Elad Ashkenazi 3250c16cdc Restrict package installation to 1 thread
It is possible that a package contains the same file multiple times.
This leads to possible corruption or installation failure when they are extracted on different threads.
(easy to reproduce with DeS)
2022-12-30 21:10:23 +01:00
Eladash 02f35383bd PKG: Implement Multi-threaded installation 2022-12-30 17:48:14 +03:00
Eladash 1d5fef4930 PKG: Create directories first 2022-12-30 17:48:14 +03:00
Eladash dddea008e9 unedat.cpp: Remove outdated lock 2022-12-30 17:48:14 +03:00
Elad Ashkenazi dd8ec8f09e PKG install hotfix 2022-12-30 17:48:14 +03:00
Megamouse 98dbbd84ac Qt: fix size watcher cancellation on soft refresh
Also setting the cancel flag manually since the canceled signal seems to be very unreliable (I managed to trigger it rarely)
2022-12-30 13:43:55 +01:00
Elad Ashkenazi 382a27cb2f Allow to cancel dir size calculation (#13134) 2022-12-30 09:34:35 +01:00
Nekotekina eeda958f33 fs: fix read/read_at/write (Unix)
It's known that too huge read can require multiple syscalls.
2022-12-29 16:19:54 +03:00
Nekotekina 2f9cac8d18 fs: implement file::read_at
Reads from the given offset; does not seek; thread-safe.
2022-12-29 16:19:54 +03:00
kd-11 9d432187aa vk: Fix bug that made fall-out barriers never get triggered 2022-12-28 17:37:50 +03:00
kd-11 b13165f95a vk/rtts: Account for corner case where the same texture can be bound to more than 1 slot 2022-12-28 17:37:50 +03:00
kd-11 110c20d25f vk: Restructure framebuffer loop barrier management 2022-12-28 17:37:50 +03:00
kd-11 4def7f143c rsx: Fix logicOp behavior when blending is also active 2022-12-27 02:56:43 +03:00
kd-11 908d524631 vk: Add some missing PCI IDs 2022-12-27 02:00:28 +03:00
Megamouse 6c74274502 Qt: fix size_on_disk filetype 2022-12-25 17:16:49 +03:00
Eladash ee8cd82e9d Demote PRX export already loaded error 2022-12-25 16:10:32 +03:00
Eladash 820e692e57 PRX: Implement multi-referenced library management 2022-12-25 16:10:32 +03:00
Megamouse 5b95cfda40 Qt: Improve Check Config utility
Warn if the user selects a weird file.
Allow more file types and show them all by default.
2022-12-22 23:51:32 +01:00
Megamouse b2c4fed39c Qt: stop all async refresh threads on close 2022-12-22 21:47:47 +01:00
Megamouse 96c6dc01eb Qt: Implement config check in Utilities and log viewer 2022-12-22 09:09:51 +01:00
Megamouse f545532556 cellSaveData: add some more info to log error 2022-12-22 09:09:51 +01:00
Megamouse 8ac9968096 Qt: optimize log viewer file loading 2022-12-19 23:18:58 +01:00
Megamouse a9ee9a69a4 Qt: show some more info about the current log viewer state 2022-12-19 23:18:58 +01:00
Megamouse 46a50265a3 Qt: save some log viewer filter settings 2022-12-19 23:18:58 +01:00
kd-11 41e9e0b965 rsx: Restructure color format enum to clearly separate float from int formats 2022-12-19 23:13:25 +03:00
kd-11 388d090b91 rsx: Propagate surface format changes to shader ROP control 2022-12-19 23:13:25 +03:00
Ani 1a60fb3c96 cirrus: Update rpcs3-ci-bionic to 1.6 (#13064) 2022-12-18 16:07:11 +00:00
Elad Ashkenazi baa2768a69 StrUtil.h: Prevent an overflow in strcpy_trunc 2022-12-17 19:55:16 +01:00
kd-11 04fb86556a rsx: Fix surface metadata life-cycle
- Beware of clone operations. Blindly inheriting the parent's metadata is wrong.
- It is possible, especially when reusing a pre-existing slice, that the parent and child info has diverged
2022-12-17 20:16:58 +03:00
kd-11 90cf47cdce rsx: Handle some corner cases in surface locking 2022-12-17 20:16:58 +03:00
kd-11 bf96cbe980 rsx: Fix const RTV/DSV cast from texture cache 2022-12-17 20:16:58 +03:00
kd-11 66dc1cc15d rsx: Conditionally skip flush if no new data was introduced 2022-12-17 20:16:58 +03:00
kd-11 a05e3f02b8 rsx: Avoid expensive protection scan by sharing some data between surface and texture cache 2022-12-17 20:16:58 +03:00
Megamouse 8ec01450f8 Qt: check dir size async 2022-12-17 16:19:22 +01:00
Megamouse b2962e0522 Qt: show item count in category filter 2022-12-17 16:19:22 +01:00
Eladash 8980fc5524 rsx: Fix exceptions 2022-12-17 14:27:20 +01:00
Eladash f54da22f6f UI: Report Game Size On Disk, Make Game Removal An Informed Decision 2022-12-17 12:27:17 +01:00
kd-11 cebc0ec4a1 vk: Add missing memory barrier 2022-12-17 13:10:32 +03:00
brian218 812224f7f7 Stop LV2 Watchdog when CELL_SYSUTIL_REQUEST_EXITGAME is issued 2022-12-15 13:12:40 +03:00
brian218 d78e2dad29 sys_game: Made the LV2 Watchdog restarts the game forcefully 2022-12-15 13:12:40 +03:00
kd-11 7e35679ec2 vk: Revise some TRANSFER->TRANSFER barriers that introduced RAW hazards when copying images 2022-12-14 03:24:37 +03:00
kd-11 b39f457363 vk: Zero-initialize scratch VRAM allocations 2022-12-14 03:24:37 +03:00
Megamouse 18b7955384 SDL handler 2022-12-13 11:56:48 +01:00
Ani 0e625e6928 PSF: Add AS as valid category
Used for some PS3 Applications
2022-12-13 09:34:21 +01:00
brian218 65ae85061f Misc and minor improvements of syscalls used by VSH (#13067) 2022-12-13 07:33:17 +01:00
Megamouse e2c1547d95 Qt: facepalm fix in open_dir 2022-12-12 20:19:07 +01:00
kd-11 2d5a427bd4 gl: Throw exception if we cannot initialize critical requirements 2022-12-12 14:23:06 +03:00
Megamouse 45bd0d1f25 rsx_debugger: fix overflow and some warning 2022-12-11 21:39:18 +01:00
Megamouse f38084f0cf Qt: don't show message if only the rpcs3 games dir shortcut was created 2022-12-11 21:39:18 +01:00
Ani 0d929a210f NP: Disable some logging (#13061) 2022-12-11 16:49:14 +00:00
Megamouse 057f5beac6 Qt: remove cache dir when deleting games 2022-12-11 15:29:01 +01:00
kd-11 26021e11f7 gl: Require GLSL 450 when using barycentric extension 2022-12-11 15:21:58 +03:00
kd-11 941ecc76a1 ci: Update glslang to sdk-1.3.224.1 2022-12-11 15:21:58 +03:00
kd-11 12806af6aa Bump windows vulkan SDK version 2022-12-11 15:21:58 +03:00
kd-11 55886b0a50 gl: Fix shader extension requirements 2022-12-11 15:21:58 +03:00
kd-11 577b5ef2bd Support compiling with older SDK headers 2022-12-11 15:21:58 +03:00
kd-11 780c38a5e5 gl: Silence compiler warning spam 2022-12-11 15:21:58 +03:00
kd-11 6756bf7d4b rsx: Only request attribute interpolation if the GPU requires it and the driver supports it 2022-12-11 15:21:58 +03:00
kd-11 9c0b2338cf rsx: Fix shader compilation 2022-12-11 15:21:58 +03:00
kd-11 a0ef1a672c rsx: Implement interpolation using barycentrics 2022-12-11 15:21:58 +03:00
kd-11 1fd265d316 rsx: Properly flag the program control if needed 2022-12-11 15:21:58 +03:00
kd-11 e3b23822fd rsx: Pass on shader flags to the cache 2022-12-11 15:21:58 +03:00
brian218 ab3c8268f0 sys_sm: Implemented sys_sm_shutdown() (#13048) 2022-12-11 09:10:06 +01:00
Megamouse 6f306121a6 Qt: fix opening folders by using util functions 2022-12-10 22:54:26 +01:00
Megamouse 8399516475 cli: fix title_path 2022-12-10 18:18:16 +01:00
Megamouse a60ea61291 linux: fix shortcut cli args 2022-12-10 18:18:16 +01:00
Megamouse 64cff74861 Qt: simplify shortcut creation 2022-12-10 18:18:16 +01:00
Elad Ashkenazi e2c1e656b9 RSSX Debugger: Do not show invalid color buffers 2022-12-10 16:51:49 +01:00
brian218 cdc1d0c02b sys_fs: sys_fs_get_mount_info(): Made g_mp_sys_dev_root always reported as mounted 2022-12-10 15:28:04 +01:00
Eladash 151a0955cf rsx: Implement draw call stepping 2022-12-10 15:09:42 +01:00
Eladash 40406bd3fe RSX debugger: Implement Texture Dumper
Also fix many bugs in textures display.
2022-12-10 15:09:42 +01:00
Megamouse 1cc3e6e510 cellRec: hotfix for pre-recording 2022-12-10 04:10:40 +01:00
Megamouse 064ab58f3c cellRec: move data instead of memcpy 2022-12-10 03:24:40 +01:00
Megamouse 85c0a2e602 cellRec: add more logging 2022-12-10 03:24:40 +01:00
shinra-electric 809e880bd1 [3rdParty] Update MoltenVK to 1.3.236 & set MSL Fastmath to On Demand (#13035)
* Update MoltenVK to 1.2.236

* Change mvk_config.fastMathEnabled from a bool to Int

fastMathEnabled now has three options:
NEVER = 0
ALWAYS = 1 
ON_DEMAND = 2

On demand seems better, since it will use fast math except for shaders that are incompatible.
2022-12-09 20:49:56 +01:00
Eladash 7df093c94b Make it work with LLVM
Allow multiple entries for a single code.
2022-12-09 21:16:05 +03:00
Eladash f572e29a13 PPU: Add new patch function for SONIC 06 2022-12-09 21:16:05 +03:00
brian218 681a6ef73c Qt: Improved the shown path in overlay message "Recording stopped" 2022-12-09 16:40:38 +01:00
shinra-electric bf37087a10 Fix build errors by changing AVCodec* to a const
...rather than a variable. 

Allows RPCS3 to build on macOS again (Xcode 14.1)
2022-12-09 14:21:37 +03:00
Eladash a18b46d8ad Path hotfix 2022-12-09 12:20:57 +03:00
Eladash 74bb90b414 System.cpp: protect boot arguments 2022-12-09 12:20:57 +03:00
Eladash 8334767c16 GUI: bring relative game shortcut to the GUI 2022-12-09 12:20:57 +03:00
Eladash 0d126afb1f PKG: Ask to user if he wants to install game shortcut on PKG installation 2022-12-09 12:20:57 +03:00
Eladash b7d80ab335 Add support to boot using PS3 game path or TITLEID in CLI and shortcuts
Allowing to move of game directories without having to update the shortcut path. (as long as it is registered within RPCS3 UI).
2022-12-09 12:20:57 +03:00
Megamouse b0e376ae76 rsx/qt: add recording to game window 2022-12-08 21:08:37 +01:00
Megamouse a3bcb6c15a cellRec: implement proper recording
Everything should work mostly. I didn't find a game to test the external input though.
2022-12-08 21:08:37 +01:00
Megamouse 88269636d3 utils: implement video encoder and image sink 2022-12-08 21:08:37 +01:00
Megamouse 4f5076346d Qt: minor camera config warning fixes 2022-12-08 21:08:37 +01:00
Megamouse 89de913e95 Qt: reset screenshot toggle in gs_frame desctructor 2022-12-08 21:08:37 +01:00
Megamouse 0e73c4598e cellVideoExport: fix file paths 2022-12-08 21:08:37 +01:00
Megamouse 6b8aef9fdd cellAdec: fix some uninitialized member warnings 2022-12-08 21:08:37 +01:00
Jan Beich 1811dd67bf CI: switch FreeBSD to Clang/libc++ 15 2022-12-08 19:36:12 +01:00
brian218 6d4379059c sys_fs: Integrated get_mount_count() into sys_fs_get_mount_info_size() 2022-12-08 18:31:46 +01:00
brian218 a0f3704b41 sys_fs: Integrated the function of get_vfs() into get_mp() 2022-12-08 18:31:46 +01:00
brian218 9274b3f14d USIO: Fixed "Card Reader Not Connected" Error 2022-12-07 20:20:52 +01:00
brian218 0a3e540a10 sys_fs: get_vfs() minor fixup 2022-12-07 20:20:52 +01:00
Megamouse 4657afd899 Qt: remove entire cache dir of a serial on remove all caches 2022-12-07 18:55:56 +01:00
Megamouse 2082f06443 Qt: remove empty cache dirs if possible 2022-12-07 18:55:56 +01:00
Megamouse b49f8623f6 Windows: Check WSAStartup result 2022-12-07 18:11:01 +01:00
Megamouse 69e4138223 Try to fix dll checks 2022-12-07 00:00:45 +01:00
Elad Ashkenazi 5fec8666e3 Dont append main thread's ID on fatal error dialog (#13021) 2022-12-06 22:18:26 +01:00
Megamouse 8af4a94864 Qt: add context menu to trophy game table 2022-12-06 21:30:08 +01:00
Megamouse ab873129f8 Qt: add copy name and description to trophy context menu 2022-12-06 21:30:08 +01:00
kd-11 6155207407 ux: Instruct the user to delete the dlls from the installation folder. 2022-12-06 20:46:35 +01:00
kd-11 98a58daf57 Fix build 2022-12-06 20:46:35 +01:00
kd-11 0aaa40cd53 ux: Update vcredist links and optionally disable help text from error dialog 2022-12-06 20:46:35 +01:00
Megamouse a6b44ea1bb Qt: support fatal error as htmk 2022-12-06 20:46:35 +01:00
kd-11 ca0ca2e5a8 ux/core: Add module verification step for some critical libraries
- Prevents running the emu with downloaded dll files
2022-12-06 20:46:35 +01:00
RipleyTom 14a388b3fe Increase max number of skylanders to 8 2022-12-06 18:14:58 +01:00
Eladash 82a8d96fba sys_fs hotfix
Co-Authored-By: brian218 <17809637+brian218@users.noreply.github.com>
2022-12-03 17:53:39 +01:00
Elad Ashkenazi ad3ea966cb Add RPCS3/games/ for automatic games detection, support PSN games outside HDD0 (#12982)
* SFO: Do not load PARAM.SFO with illegal TITLE_ID
* Add support for PSN games outside HDD0
* Add RPCS3/games/ for automatic game detection
2022-12-02 13:18:07 +03:00
brian218 8d9dd1d19c Implemented sys_fs_newfs() 2022-12-02 08:18:46 +01:00
Megamouse 337ee77a99 evdev_gun: "fix" BSD 2022-11-30 19:38:42 +01:00
Megamouse c09991ebdb evdev_gun: convert udev code to evdev 2022-11-30 19:38:42 +01:00
Megamouse 5188293242 evdev gun support cleanup 2022-11-30 19:38:42 +01:00
Nicolas Adenis-Lamarre 2805fe0a06 evdev gun support
supports guns via evdev. multiple guns.
extra buttons are configurable (guns can be configured for that).

Signed-off-by: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@gmail.com>
2022-11-30 19:38:42 +01:00
Team XLink Developers b4757b514d Add ability to have sockets bind to a local IP address (#12998) 2022-11-30 18:35:42 +03:00
Elad Ashkenazi 630edde10f logs.cpp: fix regression (#12995)
Fixes #12994
2022-11-29 22:56:18 +03:00
Eladash e9e139c364 logs improvements
* Do not use unsafe pointer arithmetics exceeding existing memory. (exceeding m_fptr)
* Properly use the enire 32MB of the buffer, previously only 16MB were used for cuncurrent access.
* Fix a bug occurring after attempting to push 1TB (40 bits).
* Flush the log before hitting a debugging breakpoint.
2022-11-28 18:52:11 +03:00
Julien Reichardt 60c01ef9a9 Use uppercase RPCS3 name in the metainfo file 2022-11-28 06:20:48 +03:00
Megamouse 5dbadccd7f Log PSF path on error 2022-11-27 22:07:15 +01:00
Megamouse 49a968219f Silence some usually irrelevant errors 2022-11-27 22:07:15 +01:00
Eladash 8b934abcf2 Improve error_code, make HDD1 errors be warnings 2022-11-26 16:33:47 +03:00
Nekotekina fa74d3e88c vm: implement lock-free try_access with range locking 2022-11-26 09:30:11 +03:00
Nekotekina 1123e25136 Implement ref_ptr (see read_from_ptr)
Type `aref`: reference wrapper
2022-11-26 09:30:11 +03:00
Nekotekina 7c15001042 Implement read_from_ptr<>() util
Doing std::bit_cast on a "span".
Should be usable in constexpr.
2022-11-26 09:30:11 +03:00
Nekotekina bf388e5428 cfmt/StrFmt: support s128 formatting (untested) 2022-11-26 09:30:11 +03:00
Paweł Kotiuk 661be41c5a Update AppStream Metadata
Add some fields according to specification from https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html
2022-11-24 20:45:04 +01:00
kd-11 8be4ac6869 gl: Fix rotation operations in blit engine 2022-11-22 12:15:18 +03:00
kd-11 81f9259063 gl: Add support for capture debug markers 2022-11-22 12:15:18 +03:00
kd-11 a97424d46c rsx: Fix low precision shader option 2022-11-22 12:15:18 +03:00
brian218 b639f3c8ec Fixed up lv2_fs_mount_point stuff & Fixed loop.tmp potential leak 2022-11-19 10:42:49 +01:00
brian218 13ca1a7f09 Further implemented sys_fs_get_mount_info() and sys_fs_get_mount_info_size() 2022-11-19 10:42:49 +01:00
brian218 16098c38c8 sys_ss_appliance_info_manager(): Fixed VSH error 80029567 and 80029564 2022-11-19 10:42:49 +01:00
kd-11 c4b259e0f8 rsx: Always enable ROP output quantization on NV 2022-11-18 23:06:47 +03:00
kd-11 e04855a0da rsx: Improve ROP output handling
- Perform 8-bit quantization/rounding before emulated operations like ALPHA_TEST
2022-11-18 23:06:47 +03:00
Megamouse 8199f97e7a Qt: add option to automatically resize the game window 2022-11-17 19:58:18 +01:00
Megamouse 2eef3ab645 Update glslang and SPIRV from sdk-1.3.224.1 to sdk-1.3.231.0 2022-11-17 16:04:18 +01:00
Megamouse d56ec56458 Update wolfssl from v5.4.0 to v5.5.0 2022-11-17 16:04:18 +01:00
Megamouse 0293415db1 Update curl from 7.84 to 7.86 2022-11-17 16:04:18 +01:00
Megamouse 6e935d9d84 Update pugixml from v1.12.1 to v1.13 2022-11-17 16:04:18 +01:00
Elad Ashkenazi 99ae561caa cellPad: Noise-cancelling log changes (#12958) 2022-11-16 20:00:22 +01:00
MSuih 3f8421fc17 Add enable exclusive fullscreen mode setting 2022-11-14 17:50:13 +01:00
Megamouse 324b1039cf set cellVideoOutSetGamma to trace
It is spammed a lot in some games and we already know it works.
2022-11-12 11:23:58 +03:00
Megamouse 961d905433 Loader: disable unsupported PPU decoder settings 2022-11-12 11:23:58 +03:00
Megamouse 3c79f3943f Minor simplifcation in ppu_finalize 2022-11-12 11:23:58 +03:00
Megamouse 1e7b2c052a Loader: skip savestate check in add_only mode 2022-11-12 11:23:58 +03:00
Megamouse ff082b98cb VS: fix compilation on VS 17.4 2022-11-12 11:23:58 +03:00
kd-11 3236931416 Whitespace fix only 2022-11-11 12:09:23 +03:00
kd-11 ed0c798252 Wait for renderer to initialize before skipping it for system progress initialization. 2022-11-11 12:09:23 +03:00
kd-11 5943b802d7 grammar 2022-11-11 12:09:23 +03:00
Eladash b875a86e1d PRX: export functions on start() 2022-11-09 02:28:12 +03:00
Eladash 0a35a62235 sys_prx: Make PPU imports/exports thread-safe 2022-11-09 02:28:12 +03:00
kd-11 e98b07de03 vk: Set line width when rasterizing points (workaround)
- Fixes point rendering when using AMD drivers.
2022-11-07 23:12:31 +03:00
kd-11 de5217745c gl: Fix point size export 2022-11-07 23:12:31 +03:00
RipleyTom ec53adc2b7 Fix get_member_and_attrs 2022-11-07 12:31:18 +01:00
Eladash b57ab74ee7 cfg: Partial support for case-insensitivity for true-false settings 2022-11-05 10:36:46 +01:00
Eladash 69368d972d Savestates: Move "Start Paused" setting to UI 2022-11-05 10:36:46 +01:00
Ani a00f9e4211 rpcs3_version: Bump to 0.0.25 2022-11-01 21:50:08 +00:00
brian218 3cb9cd7724 sys_fs: Minor fixup (#12913)
Stubbed sys_fs_newfs
2022-11-01 19:49:50 +03:00
Eladash 9632d0ab8a Emu: fixup message when the application has crashed 2022-11-01 19:08:55 +03:00
brian218 68b68e676b sys_fs.cpp: Satisfy Clang 2022-10-31 18:53:09 +03:00
brian218 c7ced46707 Add support for mounting and unmounting CELL_FS_SIMPLEFS 2022-10-31 18:53:09 +03:00
brian218 ecc194cb62 Use DECR's Product Code when Debug Console Mode is enabled 2022-10-31 18:53:09 +03:00
Nekotekina a1b4ffcf52 VFS.cpp: fixup for mounting files 2022-10-31 14:20:02 +03:00
Nekotekina ae809ad320 Unexpected bugfixes
Mostly unaligned memory access.
Also includes workarounds for ubsan execution.
2022-10-31 14:20:02 +03:00
kd-11 7d1c18a569 Fix LOD bias widget title. 2022-10-31 13:39:37 +03:00
kd-11 71f034c4ea Move 'LOD bias addend' to debug tab 2022-10-31 13:39:37 +03:00
kd-11 b156b40f8f rsx: Fix clear color for formats with less than 32-bit width 2022-10-31 13:39:37 +03:00
Darkhost1999 8d5a9dc722 Add Texture lod bias to UI (#12905) 2022-10-30 21:06:53 +01:00
RipleyTom 06dc6909c4 implement sceNpManagerGetMyLanguages 2022-10-30 18:00:54 +01:00
capriots c639b7d5f4 cellAudioAdd6chData(): fix channel order 2022-10-30 04:50:02 +01:00
Megamouse a38e144320 overlays: use the system keyboard layout for osk 2022-10-29 22:56:08 +02:00
Megamouse 059c45f202 overlays: implement osk keyboard cursor actions 2022-10-29 22:56:08 +02:00
Megamouse eccceea7fb overlays: implement osk delete action 2022-10-29 22:56:08 +02:00
Megamouse ad340c3007 overlays/osk: Implement fallback for unknown keys
Note that those keys won't be passed to the cellOsk event hook callback
2022-10-29 22:56:08 +02:00
Elad Ashkenazi c214f45e14 Savestates/rsx/IO: Resume emulation on long START press, enable "Start Paused" by defaut (#12881)
* Savestates: Enable "Start Paused" by default
* Emu/rsx/IO: Resume emulation on long START press
* rsx: fix missing graphics with savestates' "Start Paused" setting
* rsx/overlays: Add simple reference counting for messages to hide them manually
* Move some code in Emulator::Pause() so thread pausing is the first thing done by this function
2022-10-29 19:53:00 +02:00
Elad Ashkenazi c8620070b9 Savestates/System.cpp: Realized fix for suspend mode (#12883) 2022-10-28 09:51:46 +02:00
brian218 61a371b106 Implemented sys_fs_mount() and sys_fs_unmount() 2022-10-28 08:51:41 +02:00
shinra-electric 5210df6882 [3rdParty] Update MoltenVK to 1.2.231 2022-10-25 07:22:44 +02:00
shinra-electric edb7991979 Remove MVK Semaphore Support Style options
This line is no longer needed as MVK will select the appropriate support style automatically. 

See https://github.com/KhronosGroup/MoltenVK/pull/1738
2022-10-25 07:22:44 +02:00
Elad Ashkenazi 90d6069a16 Update System.cpp 2022-10-24 18:54:53 +03:00
RipleyTom 880a4e3ca6 SceNpScore: improvements 2022-10-24 00:49:44 +02:00
Eladash 18e30c7e44 rsx: Implement custom fractional frame limit 2022-10-24 00:10:37 +02:00
Eladash 0113224cb6 cfg: Implement float config entry
Add missing string empty checks
2022-10-24 00:10:37 +02:00
Eladash d1bd936765 rsx: Unlimit texture LOD bias addend
It's a relative setting and actual bias ranges from -16 to +16, so the maximum difference an addend would make is 32.
2022-10-24 00:10:37 +02:00
kd-11 2c41eecdb1 rsx: Force position invariance on GPUs where it matters 2022-10-24 00:49:44 +03:00
Elad Ashkenazi 1a9e38a1dd System.cpp: Minor regression fix (#12874)
Do not move savestate if the actual boot is unsuccessful.
2022-10-23 18:07:44 +03:00
Eladash 9f3f619774 Minor cleanup 2022-10-23 13:06:57 +02:00
Eladash 795e234c6f game list: Silence some warning 2022-10-23 13:06:57 +02:00
Eladash 23fdcbfeb8 Add one missing line, fix savestate restart 2022-10-23 13:06:57 +02:00
Eladash ee3e36672c Savestates: Rename savestate when booting the game regularly (suspend mode) 2022-10-23 10:49:58 +02:00
Eladash 119b4e4529 Savestates/Menu: Add "Create Savestate" Button 2022-10-23 10:49:58 +02:00
Eladash cc6112cbc4 Savestates: Auto-relaunch savestate when suspen mode is off 2022-10-23 10:49:58 +02:00
Eladash f16c9cd3c6 Savestates: Disable HDD1 saving optimization
HDD1 is very volatile, it was a bad idea not to save it.
2022-10-23 10:49:58 +02:00
Eladash 9e4c24baa3 qt: Add "suspend Emulation Mode Savestates" to advanced tab 2022-10-23 10:49:58 +02:00
Elad Ashkenazi 801609fb78 Make RPCS3 not delete savestate on boot by default 2022-10-23 10:49:58 +02:00
Megamouse 4c8630d29f sceNpTrophyRegisterContext: log tls error 2022-10-22 22:30:23 +02:00
Megamouse 4e426af114 Qt: replace nul character with 0 in the log viewer
Fixes cropped content
2022-10-22 22:30:23 +02:00
Megamouse 5b66fe47db sceNpTrophyCreateContext: do not log nul characters 2022-10-22 22:30:23 +02:00
RipleyTom 7ae9b15b5c sys_net: return appropriate packet size for P2P 2022-10-22 20:14:32 +03:00
RipleyTom 67323994fc Implement sceNpScoreSanitizeComment 2022-10-22 18:43:13 +02:00
kd-11 fcc7a7452a vk: Fix scratch buf size calculation when uploading DSVs 2022-10-22 15:11:40 +03:00
kd-11 1bb0caed6f gl: Add missing memory barrier after texture decode 2022-10-22 15:11:40 +03:00
Elad Ashkenazi 23a445619b Savestates: +1 Bug 2022-10-22 13:37:33 +02:00
RipleyTom 837d9ca688 Disable AlignConsecutiveAssignments 2022-10-22 11:32:04 +02:00
RipleyTom 9b121a6414 sys_net: improvements
sys_net: implement reusable addr for p2p sockets
sys_net: implement getpeername for P2PS
sys_net: sockets inherit NBIO from their parent
2022-10-22 11:32:04 +02:00
Megamouse 5f1aafb961 Dualsense: Enable improved rumble emulation (or so)
Also disable audio haptics to save power
2022-10-22 10:26:26 +02:00
Megamouse 615ff08d1a Dualsense: Release LEDs on when the handler is destroyed 2022-10-22 10:26:26 +02:00
Megamouse 3320d1e1c7 Dualsense: Read firmware version as seen in firmware installer 2022-10-22 10:26:26 +02:00
Megamouse 3deb177ab7 Dualsense: name some report members based on SDL2 2022-10-22 10:26:26 +02:00
Megamouse 41dad58489 Loader/Input: Process Qt events instead of yielding during init 2022-10-21 23:42:01 +02:00
Megamouse cb8a240f1a Qt/Input: Properly clear pad selection in pad settings
Fixes a rare issue that causes a newly selected pad handler with no pads to try to connect a previously selected pad from another handler.
2022-10-21 23:42:01 +02:00
Megamouse 871ef2cdfe Input: return pad connection in get_next_button_press
This fix some minor race condition in the UI that had no real consequences just by chance.
2022-10-21 23:42:01 +02:00
Megamouse 6c0bc43776 Input: change brightness data type in hid to u32 2022-10-21 23:42:01 +02:00
Megamouse a16d18d83c Input: rename misleading ThreadProc to process 2022-10-21 23:42:01 +02:00
Megamouse e499c3c6e3 Input: move m_is_init to base class 2022-10-21 23:42:01 +02:00
Megamouse ddd261c943 Input: refactor vibration
There's no need to deal with vibration levels outside of the handlers.
All we need to know is the 0-255 DS3 range which is given by the u8 type.
2022-10-21 23:42:01 +02:00
Vestral a1f9ff0aaa Cubeb: rewrite locking 2022-10-21 22:15:49 +02:00
Megamouse d636ea9338 Update dependencies
zlib  1.2.12 -> 1.2.13
libpng 1.6.37 -> 1.6.38
glslang sdk-1.3.216.0 -> sdk-1.3.224.1
SPIRV-Headers sdk-1.3.211.0 -> sdk-1.3.224.1
SPIRV-Tools sdk-1.3.211.0 -> sdk-1.3.224.1
2022-10-21 20:44:46 +02:00
Megamouse 1747e68d1d Fix warning 2022-10-21 20:44:46 +02:00
Elad Ashkenazi c4c710d39d GUI TTY: fix a regression (#12855) 2022-10-21 19:05:21 +02:00
brian218 9a5dbda063 Changed the log level of LV2 Watchdog's being triggered 2022-10-21 17:38:59 +02:00
kd-11 bd9c876e36 gl: Handle clip plane switching using API calls and the state tracker 2022-10-21 13:45:45 +03:00
Eladash 903d847058 cellAudio: Implement setting to disable sampling skip 2022-10-21 09:32:49 +02:00
brian218 789e42e26f sys_sm_shutdown() log minor fixup 2022-10-21 02:09:08 +02:00
brian218 85e11ca341 USIO Input Enhancement 2022-10-20 21:00:38 +02:00
Eladash 0da81d22d3 SPU Profiler: fix CPU usage when emulation is paused
Avoid collecting samples when the thread paused.
2022-10-20 11:22:33 +03:00
Eladash 52b993095d SPU Profiler: nearly always print on Emu.Pause() 2022-10-20 11:22:33 +03:00
Megamouse 363e0a40e5 Input: Allow to toggle player LED (Dualsense and DS3) 2022-10-19 22:55:50 +02:00
Eladash 7ea0a6d642 sys_game_watchdog minor fixups 2022-10-18 13:08:48 +02:00
Megamouse 035d410a89 evdev: change default axis for gyro 2022-10-18 00:19:01 +02:00
Megamouse b0b42071f2 Input: Fix Dualsense gyro axis and adjust DS4 resolution 2022-10-18 00:19:01 +02:00
brian218 5c24009eb5 Implemented sys_game_watchdog syscalls 2022-10-17 20:32:01 +03:00
Eladash 00340f33c3 GUI/TTY: fix UI deadlock when TTY is being spammed 2022-10-17 19:12:51 +03:00
RipleyTom 01c285fc4a RPCN v0.7
Bump protocol version
Improve signaling RTT calculation for client
Implement score game data functions
Various sceNpScore fixes
Verify flatbuffer buffers
Use std::variant for transaction specific data
2022-10-17 09:57:10 +02:00
Eladash 87797e117e sys_spu: Some more fixes of wait flag misuse 2022-10-16 20:55:36 +03:00
Eladash a5cc9a5517 Update cellFsGetDirectoryEntries to use wait flag correctly 2022-10-16 20:55:36 +03:00
Eladash 806acf8cd0 sys_fs: Fixed placement of check_state() and add some bugfixes 2022-10-16 20:55:36 +03:00
kd-11 04f6302ecc Fix decode shader compilation 2022-10-16 19:58:30 +03:00
kd-11 1df977fae2 gl: Avoid including unnecessary headers 2022-10-16 19:58:30 +03:00
kd-11 9105c2cf4a gl: Refactor capabilities and add GLSL version detection support. 2022-10-16 19:58:30 +03:00
kd-11 6d43fcf8fb gl: Fall back to renderpass decoder on ATI drivers 2022-10-16 19:58:30 +03:00
Megamouse fafae1cbb5 cellRtc: Fix some param checks 2022-10-15 19:56:53 +02:00
brian218 419e673d5b Fix USIO Backup behavior 2022-10-15 14:38:43 +02:00
brian218 48f47de95c Added USB passthrough for H050 USJ PCB 2022-10-15 14:38:43 +02:00
brian218 44a1df4353 usb_device: Updated control_transfer in order to prevent some games from being frozen 2022-10-15 14:38:43 +02:00
Megamouse 13b3c78c7f Input: fix MMJOY axis identification 2022-10-15 13:17:16 +02:00
Megamouse e362c2c078 Input: fix some type warnings 2022-10-15 13:17:16 +02:00
Megamouse 814adbb8c4 Input: simplify InitPadConfig 2022-10-15 13:17:16 +02:00
Megamouse cf86b6c107 Input: keep old port status when reconnecting ldd pads
The port status might not change currently, but it should be more correct this way.
2022-10-12 22:30:09 +02:00
Megamouse 12a83e5a1c Input: simplify unnecessarily complex ldd reload 2022-10-12 22:30:09 +02:00
Megamouse 0f769eec81 Input: log more pad information 2022-10-12 21:01:02 +02:00
kd-11 0737c788fc rsx: Fix parsing of broken command streams with hanging begin/end commands without a pair.
- While these are game bugs, the parser shouldn't break on encountering them.
2022-10-12 11:19:52 +03:00
kd-11 3fe9aea5b5 rsx/overlays: Allow some basic communication from the UI components to the backend renderers 2022-10-11 23:13:12 +02:00
Megamouse ab6ba848b8 overlays: simplify overlay_media_list_dialog 2022-10-11 23:13:12 +02:00
Elad Ashkenazi 0a38800e44 Savestates: fix endless renaming of used savestates (#12780) 2022-10-11 17:02:25 +03:00
kd-11 6be5618d22 config: Add missing option 2022-10-11 14:00:34 +03:00
kd-11 95d9462a71 settings: Remove misleading comment 2022-10-11 14:00:34 +03:00
kd-11 e05cd9f47b qt: Add translation for shader precision 2022-10-11 14:00:34 +03:00
kd-11 aa09302ca0 Clean up some unnecessary changes
- Hopefully nothing breaks 🤞
2022-10-11 14:00:34 +03:00
kd-11 6d6b9fd269 Qt: Apply tooltip hover to parent groupbox.
Co-authored-by: Megamouse <studienricky89@googlemail.com>
2022-10-11 14:00:34 +03:00
kd-11 6d265452cf rsxqt: Fix shader precision tooltip 2022-10-11 14:00:34 +03:00
kd-11 65d20f2d08 gl: Add mesa support for polygon offset 2022-10-11 14:00:34 +03:00
kd-11 a229e30b08 rsx: Implement RSX-compliant polygon offset 2022-10-11 14:00:34 +03:00
kd-11 d246a37b11 rsx: Move fp16 toggle to a global shader precision option 2022-10-11 14:00:34 +03:00
brian218 e839595053 Implemented sys_game_get_system_sw_version() 2022-10-11 08:32:49 +02:00
brian218 a711eb31f4 Corrected the implementation of sys_game_board_storage_read() 2022-10-11 08:32:49 +02:00
brian218 b117a6d4cd Improved the compatibility of USIO for old versions of games 2022-10-11 07:51:21 +02:00
Megamouse 36b1004e26 cubeb: ignore callbacks for unknown streams or contexts 2022-10-11 00:09:28 +02:00
Megamouse c75c47fdd2 cubeb: add some more logging and error checks 2022-10-11 00:09:28 +02:00
Megamouse 0f626c8d30 Qt: delay first log frame update
This fixes the log not scrolling automatically when we first open RPCS3 with a low log level.
2022-10-10 23:21:49 +02:00
Megamouse 021783dcc1 Qt: throw if a translation is expected in GetLocalizedSetting 2022-10-10 22:46:42 +02:00
Megamouse 1f339862db Qt: add missing translation comment 2022-10-10 22:46:42 +02:00
Megamouse 4446d9ce4b cellSubDisplay: add error checks 2022-10-10 21:26:27 +02:00
Elad Ashkenazi 92b08a4faf rsx: Fixup a bug after mfc list optimization (#12782) 2022-10-10 04:04:41 +03:00
brian218 d311b4bd53 Update sys_game_board_storage_read() 2022-10-09 21:05:10 +03:00
Eladash a6dfc3be2f SPU: Enable the MFC list optimization for Atomic RSX FIFO 2022-10-09 19:27:46 +03:00
Eladash 750e7b73e3 Optimize vm::range_lock a bit
Bad conditions led to optimization misses and long-generated code.
2022-10-09 19:27:46 +03:00
Eladash 6a36967e6f SPU: Inline and batch MFC list transfers 2022-10-09 19:27:46 +03:00
kd-11 d6d7ade6e3 vk: Reload state on dynamic state changed 2022-10-09 03:00:39 +03:00
shinra-electric 151d98df51 Update based on feedback by GovanifY 2022-10-09 02:16:08 +03:00
shinra-electric fa744e53d3 Replace sprintf with snprintf to silence compiler warning
This fixes the following compiler deprecation warning

`warning: 'sprintf' is deprecated: This function is provided for compatibility reasons only.  Due to security concerns inherent in the design of sprintf(3), it is highly recommended that you use snprintf(3) instead.`
2022-10-09 02:16:08 +03:00
Elad Ashkenazi e0df2c584f rsx: Attempt to fix frame limiter 2022-10-09 01:33:40 +03:00
kd-11 3c88477270 Fixup for scissor/viewport invalidation rules 2022-10-07 15:27:54 +03:00
kd-11 df46e5137c gl: Fix texture reconstruction logic
- Use correct target types
- Fix key generation to apply differently for each target type
2022-10-07 11:53:34 +03:00
kd-11 ffe8133865 vk: Avoid unnecessary dynamic state updates 2022-10-07 11:53:34 +03:00
kd-11 7140e82189 rsx: Fix program invalidation rules 2022-10-07 11:53:34 +03:00
Elad Ashkenazi cb743da215 sys_spu: fixup raw spu destroy regression
Caused a missed cpu_thread::state notification which is required now.
2022-10-06 12:23:51 +03:00
Elad Ashkenazi 4d24ba1f35 PPU Precompilation: Abort compilation as soon as possible on Emu.Stop() 2022-10-06 12:23:51 +03:00
kd-11 87411da95f gl: Explicitly declare gl_Position as invariant when using MESA 2022-10-06 06:41:24 +03:00
Eladash d25d1ecb3a LV2: Avoid using multi-variable atomic waiting on cpu_thread::state wait 2022-10-04 16:28:34 +03:00
Eladash 2a00a88e2a SPU LLVM: don't force-enter process_mfc_cmd() because it's slower 2022-10-04 16:28:34 +03:00
Eladash b01220d2c5 debugger: Don't refresh no-thread window at a high rate 2022-10-04 16:28:34 +03:00
Eladash 58dd2bff41 Savestates: Fix unintentional pause when saving with HLE VDEC contexts 2022-10-04 14:14:38 +03:00
Eladash f34773ed73 Savestates: Make Ctrl+R work when not ingame
Restore old behavior of Ctrl+R making it restart emulation when stoppped.
2022-10-04 14:14:38 +03:00
Eladash 9b5cc7cda7 System.cpp: Fix RSX thread abort 2022-10-04 14:14:38 +03:00
Elad Ashkenazi 77db8f04b9 Savestates: fix saving in HLE functions 2022-10-04 14:14:38 +03:00
Eladash 9319bc579c cellAudio: Always send periodic sampling events 2022-10-04 13:41:57 +03:00
kd-11 73784b9e12 Fix GCC build 2022-10-03 12:57:16 +03:00
kd-11 533f960854 rsx: Handle some more corner cases 2022-10-03 12:57:16 +03:00
kd-11 765208a181 rsx: Avoid clobbering CELL memory when splitting fbos 2022-10-03 12:57:16 +03:00
kd-11 4417701ea7 rsx: Track orphaned surfaces' parent addresses 2022-10-03 12:57:16 +03:00
kd-11 f66eaf8f44 rsx: Add some handy util functions to simple_array 2022-10-03 12:57:16 +03:00
kd-11 0dd9c386ee Fix running the emulator with AUDIT enabled 2022-10-03 12:57:16 +03:00
Eladash af8c871411 Add origin PRX names for log messages 2022-10-02 20:03:27 +03:00
brian218 50e1e6596e USIO Backup Minor Optimization 2022-10-01 17:32:22 +03:00
Malcolm Jestadt d8897c585d PPU/SPU LLVM: Allow Zen4 cpus to use VPERMI2B/VPERMT2B instead of the vperm2b256to128 path
- Zen4 based cpus can process VPERM2B in a single uop, unlike intel where it is 3 uops.
2022-10-01 15:38:29 +03:00
Megamouse 7d32dc312f Qt: pad settings: clear input data on thread pause
Fixes incorrectly disabled buttons when changing from a handler with a disconnected pad to any other handler
2022-10-01 13:49:58 +02:00
RipleyTom eff1e4bd7e CELL_NET_CTL_INFO_IP_ADDRESS returns external address 2022-10-01 11:56:41 +02:00
nastys ac50b46608 Mac CI fixes 2022-10-01 11:01:21 +02:00
kd-11 a0e2a3db1d Fix underflow in ZCULL sync 2022-09-30 23:44:37 +03:00
Elad Ashkenazi 0cc981ec18 SPU: fix atomicity of inaccurate GETLLAR 2022-09-30 15:26:08 +03:00
RipleyTom 8170b91f76 sceNpScore: return error on 0 scores returned 2022-09-28 21:58:11 +02:00
RipleyTom d1a7bb0136 Fix faulty GetScoreFriendsRequest 2022-09-28 21:58:11 +02:00
RipleyTom 56caa10e56 Fix blocking raw socket recvfrom 2022-09-28 21:58:11 +02:00
brian218 926496b59d USIO: Save Game Settings - Full Implementation 2022-09-28 16:54:55 +03:00
kd-11 102d30db2d vk: Update support for framebuffer loops to comply with current spec 2022-09-28 12:55:31 +03:00
kd-11 5281a85b67 rsx: Fix compiler warnings 2022-09-28 12:55:31 +03:00
kd-11 de28c812e8 rsx: Re-evaluate color MRT setup when the surface target type changes 2022-09-28 12:55:31 +03:00
RipleyTom eea73deab3 RPCN v0.6 2022-09-27 23:39:54 +03:00
kd-11 67c02e3522 vk: Bump compute descriptor pool size to 8k
- TODO: This should be dynamic.
2022-09-27 14:58:47 +03:00
kd-11 19dd2a693b gl: Fix transform job assert 2022-09-27 14:58:47 +03:00
Ani 3df133652a gui: Rename full width AVX-512 (#12709)
Some people think that this is a toggle to enable and disable AVX-512 support, let's make it more clear
2022-09-26 23:40:04 +01:00
xddxd 80d2034083 Update LLVM commit (Zen Detection) 2022-09-26 20:40:26 +01:00
shinra-electric db9389d24c [macOS] Ask CMake to look in the right place for include & link directories (#12516)
* Ask CMake to look in the right place for include_directories and link_directories on macOS (arm64 and x86_64)

Homebrew installs to a different location on Arm Macs compared to Intel Macs. 

This change prevents this error when compiling on Arm:   
`ld: warning: directory not found for option '-L/opt/local/lib'`

Use STREQUAL instead of MATCHES, since MATCHES is supposed to be used with regular expressions. 

Also update the homebrew directories for Intel, since they were wrong.

Remove the conditional check for x86 Apple, as usr/local is part of the default search path.
Tested on Intel and the warning does not appear.
2022-09-26 18:07:05 +01:00
brian218 c996be321c sys_game_board_storage_read(): Add more known code & Improve byte casting 2022-09-26 17:17:49 +01:00
Nekotekina 6ff6a4989a Implement at32() util
Works like .at() but uses source location for "exception".
2022-09-26 18:04:15 +03:00
cohaereo 2655255d4d sys_net: Implement sys_net_bnet_sendmsg for native sockets 2022-09-25 18:24:47 +03:00
Eladash 8485afa3a5 PPU debugger: report ppu_thread::ack_suspend state 2022-09-25 14:31:39 +03:00
Eladash 2759091ede Debugger: Rewind SPU captures
Very basic implementation, can be improved.
2022-09-25 14:31:39 +03:00
Eladash ae02b71a85 Savestates/Debugger: fix mfc debug option with savestates 2022-09-25 14:31:39 +03:00
Eladash 4445569bb0 Savestates: Don't actually delete savestates 2022-09-25 14:31:39 +03:00
Nekotekina a604394b20 BufferUtils: fix regression on AVX path
primitive_restart_impl::upload_untouched was broken.
Bug in vec_broadcast_gpr on AVX path.
2022-09-24 17:23:12 +03:00
kd-11 dd8a337b14 rsx: Fix some more warnings 2022-09-22 23:46:48 +03:00
kd-11 0572d44996 gl: Fix enum collision 2022-09-22 23:46:48 +03:00
kd-11 38aa116c59 Fix build 2022-09-22 23:46:48 +03:00
kd-11 61666bae69 rsx: Fix hardware deswizzle not getting used when hardware deswizzle flag is not set 2022-09-22 23:46:48 +03:00
kd-11 362a26a404 gl: Fix D24X8 accelerated encode/decode
- PS3 D24X8 is swapped as a full word, unlike PC.
- Add missing paths to handle custom swap behavior.
2022-09-22 23:46:48 +03:00
kd-11 81fa3da101 gl: Minor optimization around test..set patterns in the state tracker 2022-09-22 23:46:48 +03:00
RipleyTom bd1fb86492 Fix pkg batch install dlg on linux 2022-09-22 19:41:09 +02:00
Elad Ashkenazi 238298f695 sys_ppu_thread: Fix surmixer hack (#12689)
* sys_ppu_thread: Fix surmixer hack

* Hotfix after #12678
2022-09-21 21:10:59 +03:00
Eladash 194f7375da SPU/LV2: Fix tiny race conditions 2022-09-21 20:35:34 +03:00
brian218 3581c5b078 USIO: Save Game Settings 2022-09-21 14:43:24 +03:00
Marc Riera c5572acd38 Allow USB passthrough for Densha de GO! controller 2022-09-21 12:04:16 +03:00
nastys acc2fea7e3 Update MoltenVK to 250e1f9 and single queue (#12620) 2022-09-20 11:12:27 +03:00
kd-11 3dc7b64fa1 rsx: Fix initialization of null cubemap resources 2022-09-19 19:13:46 +03:00
kd-11 79f2c21dfb gl: Restrict compute image bindings to [0-8]
NVIDIA only supports 8 compute image slots even on modern GPUs.
2022-09-19 01:37:10 +03:00
kd-11 df36c44bc2 gl: Avoid UBO/SSBO binding index collisions
- Some drivers don't like this. Actually only RADV.
- Almost all GPUs going back 15 years have a large number of UBO slots but limited SSBO slots.
  Move UBO slots up as we have tons more headroom there.
2022-09-19 01:37:10 +03:00
Nekotekina c4db65cc08 Fix one more warning 2022-09-18 18:35:17 +03:00
Nekotekina c86ddb3b7d cellImeJp: fix regression 2022-09-18 18:35:17 +03:00
Florin9doi a1aebdc5d6 Request macOS 10.14.+ permissions (#12600) 2022-09-17 18:26:22 +01:00
Nekotekina b49a1f27eb Warning fixes 2022-09-17 16:35:02 +03:00
brian218 e7fd84e031 USIO: Keep LastGameStatus Memory 2022-09-17 10:59:28 +03:00
Eladash 9d9e18f614 CPU preemption control: don't yield if we can't stop 2022-09-16 18:57:55 +03:00
Eladash c8199de188 CPU preemption control: Improve stutter elimination 2022-09-16 18:57:55 +03:00
Eladash fc331da883 CPU preemption control: remove yield before thread stop 2022-09-16 18:57:55 +03:00
Eladash b6d3fa8c66 CPU preemption control: avoidance in reservation operations 2022-09-16 18:57:55 +03:00
Eladash 3cebea1801 CPU preemption control: extend range to 400 2022-09-16 18:57:55 +03:00
Eladash 2e9ee81dcd CPU preemption control: Improve analysis 2022-09-16 18:57:55 +03:00
Eladash cf4da5c4d1 CPU preemption control: bugfixes 2022-09-16 18:57:55 +03:00
Eladash 9d1ec0b319 CPU preemption control: try to minimize sleep time gaps between setups 2022-09-16 18:57:55 +03:00
Eladash 9c5108c1ca CPU preemption control: Add one more debug variable 2022-09-16 18:57:55 +03:00
Eladash 2807be7080 SPU: Regression fix after #12648 2022-09-13 20:11:30 +03:00
Eladash ec7b18dab5 Implement independent CPU preemptions 2022-09-13 19:28:20 +03:00
brian218 b9e20dc5c9 sys_game_board_storage_read(): Fix regression after #12637 2022-09-13 12:57:43 +03:00
Eladash cfdc852f03 SPU: Power consumption reduction when using SPU inaccurate reservations 2022-09-13 11:21:01 +03:00
Eladash 92514e33bb Avoid reservation notifications in liblv2.sprx 2022-09-13 11:21:01 +03:00
kd-11 572a2a06d1 rsx: Properly reset occlusion counters even when the register is not in use. 2022-09-12 17:15:06 +03:00
Eladash f076fcd539 cellMusic: Implement some error checking 2022-09-12 15:04:23 +03:00
Eladash 4ac59875af ppu: add some debug information 2022-09-12 15:04:23 +03:00
Eladash 780ca38f2f SPU: Extend Inaccurate SPU reservations 2022-09-12 14:16:39 +03:00
Ethan Rushbrook 97ea5e9dba readme: improvements
Fixed platform availability
Fixed discord link (discord.me is not valid)
2022-09-12 13:34:58 +03:00
Yui 9e83bc6544 Add the ability to set the PSID from the configuration (#12637) 2022-09-12 13:23:13 +03:00
Eladash 37aefe5811 sys_ppu_thread: Fix max thread name size 2022-09-12 12:57:39 +03:00
kd-11 d686b48f65 rsx: Simplify FIFO concurrent access. 2022-09-09 23:17:27 +03:00
kd-11 f319362e35 vk: Fix queue concurrency behavior for images 2022-09-09 23:17:27 +03:00
kd-11 0d9b1654ec asm: Avoid ALU instructions on busy wait cycles 2022-09-09 23:17:27 +03:00
kd-11 940e726754 rsx: Minor FIFO cleanup 2022-09-09 23:17:27 +03:00
kd-11 f43824762a rsx: Get rid of an allocation in analyse_vertex_data that adds about 5% overhead.
This method is called many thousands of times per frame and that single allocation introduces a small perf hit.
Just get rid of it, it doesn't improve anything to have it there.
2022-09-09 23:17:27 +03:00
kd-11 cd53bb7eff rsx: Avoid on-the-fly ZCULL allocations with unordered_map 2022-09-09 23:17:27 +03:00
Eladash 60fc90bb8e System.cpp: Fix Create Firmware Cache 2022-09-08 19:38:11 +03:00
Nekotekina a9437d69ab simd_builder: fixups
Fix resetting vmask in reduce() step.
Fix AVX-512 loads in vec_load_unaligned().
Fix bzhi reg size in build_look().
2022-09-08 18:12:15 +03:00
Nekotekina 5d91caebe9 Linux: delete /tmp/perf.map on exit 2022-09-08 16:56:06 +03:00
Eladash eb4131e1c7 cellGame: Minor revert
I think there are many more bugs here..
2022-09-07 20:42:23 +03:00
Eladash 07f0ba213e SPU: Allow special channel storage in channel busy waiting period
Move code to SPUThread.cpp.
2022-09-07 20:42:23 +03:00
Eladash 48382564d1 SPU: Implement "quintuple" Inbound MBOX storage 2022-09-07 20:42:23 +03:00
Eladash 274386a078 rsx: Add some debugging information 2022-09-07 18:39:32 +03:00
Eladash 557d015662 System.cpp: Fix Create PPU Cache regression 2022-09-07 18:39:32 +03:00
Nekotekina 5985f0eefa BufferUtils: cleanup regarding ARM64 2022-09-07 17:59:07 +03:00
Nekotekina 82258915da BufferUtils: rewrite remaining intrinsic code with simd_builder 2022-09-07 17:59:07 +03:00
Nekotekina 11a1f090d3 BufferUtils: simd_builder refactoring
Some simplifications implemented.
2022-09-07 17:59:07 +03:00
sguo35 a0d48c588a spu/arm64: clean up assembly code generation
Clean up asmjit usage so we don't unnecessarily allocate memory
anymore for SPURecompiler functions.
2022-09-07 17:33:01 +03:00
Eladash 5e2424da58 IdManager.cpp: Fix cellFs IDs 2022-09-07 17:05:51 +03:00
Eladash 72a6696f5c cellGame Fix PS3 disc insert 2022-09-07 17:05:51 +03:00
brian218 9087116ee5 Fix USIO fault when it received unsupported FW commands 2022-09-07 16:42:37 +03:00
Eladash 89e0dcba5e cellVdec: Adjust for reservations 2022-09-07 16:05:56 +03:00
Eladash 7698064f5a SPU: Untangle VM lock to avoid deadlocks 2022-09-07 16:05:56 +03:00
Megamouse ab31e96385 Qt: batch stack suffix updates
No need to patch the suffix every single time. We can just do it when we exit the stack loop.
2022-09-05 21:20:14 +02:00
Megamouse a9dcad629b Qt: fix weird missing space in stack log 2022-09-05 21:20:14 +02:00
Megamouse e49679484a Qt: simplify log logic. We can in fact only flush once.
Also invert a negation
2022-09-05 21:20:14 +02:00
Elad Ashkenazi 290226539f Fix ARM build (#12606) 2022-09-04 21:11:04 +03:00
brian218 75efc79930 Implemented sys_game_board_storage_read() 2022-09-04 13:28:05 +03:00
Nick Renieris 905496e926 PPU: Fix STVLX
Fixes Sly 2 and Sly 3 crash on boot (RSX desync).
2022-09-04 12:27:29 +03:00
srive 64579eef7e Update tooltips.h 2022-09-02 08:59:08 +02:00
Elad Ashkenazi e0a648240f Unlog sceNpUtilCmpNpId 2022-09-02 08:29:09 +02:00
Eladash 7bad8f3348 Savestates/SPU: Minor fixup after fb01ed55 2022-09-01 20:09:28 +03:00
Eladash 11a197a387 Savestates/RSX: fix unintentional vblank thread spin after abort 2022-09-01 20:09:28 +03:00
Eladash ee1384341e rsx: Implement atomic vertex upload (with Strict Rendering Mode) 2022-09-01 20:09:28 +03:00
Eladash fb01ed55e5 SPU: Fix potential deadlock in event queue syscalls 2022-09-01 19:03:38 +03:00
Elad Ashkenazi 5a0a5d9ff1 vm.cpp: Fix emulation stopping on SPU access violation (#12586) 2022-09-01 18:23:18 +03:00
Nekotekina 58e3232710 BufferUtils: Fix regression in upload_untouched 2022-09-01 17:39:04 +03:00
Ani 2cd7238e76 rpcs3_version: Bump to 0.0.24 2022-08-31 23:24:42 +01:00
Ani 21f0043b27 gui/themes: YoRHa by Ani (r3) (#11585) 2022-08-31 22:47:42 +01:00
Elad Ashkenazi b7599c0f30 Update Thread.cpp 2022-08-31 22:19:05 +03:00
Elad Ashkenazi d8494ef1ae Update Thread.cpp 2022-08-31 22:19:05 +03:00
Elad Ashkenazi 727b32e886 RawSPU: Do not assume GPU memory fault on SPU MMIO 2022-08-31 22:19:05 +03:00
Ani 8124efa505 cubeb: Update from 2022.04.13 to 2022.07.21 2022-08-31 17:59:35 +01:00
Ani a5cff4d797 glext: Update from 2021.04.20 to 2022.05.30 2022-08-31 17:59:35 +01:00
Ani d1e5828644 XAudio2: Update from 1.2.8 to 1.2.9 2022-08-31 17:59:35 +01:00
Ani 18d73d6d76 FAudio: Update from 22.07 to 22.08 2022-08-31 17:59:35 +01:00
Ani 4a3a24dcc1 7z: Update from 21.07 to 22.01 2022-08-31 17:59:35 +01:00
Eladash 591159c4a9 Debugger: Prevent possible "current instruction" duplication when the thread is running 2022-08-30 08:57:33 +02:00
Eladash 7baf959975 Avoid empty resume output when using PPU debug option 2022-08-30 08:57:33 +02:00
Eladash 3f02935844 Add some debugging information 2022-08-30 08:57:33 +02:00
RipleyTom f98251a05a Fixes -w leaking 2022-08-30 07:46:42 +02:00
Nekotekina 80f0741103 simd_builder: fix constant locations 2022-08-29 14:32:56 +03:00
Nekotekina e28707055b Implement simd_builder for x86
ASMJIT-based tool for building vectorized loops (such as ones in BufferUtils.cpp)
2022-08-28 18:38:52 +03:00
brian218 698c3415ea Fixed SIG: Thread terminated due to fatal error: Failed to read hex string: invalid argument
Fixed the error which occurred when a game attempted to read the VID/PID of an undefined VFS USB device:

SIG: Thread terminated due to fatal error: Failed to read hex string: invalid argument
(in file C:\Users\ContainerAdministrator\AppData\Local\Temp\cirrus-ci-build\rpcs3\Emu\Cell\lv2\sys_fs.cpp:1942[:25], in function sys_fs_fcntl)
2022-08-26 08:45:14 +02:00
Eladash daf43989fc Thread.h: Improve thread abort performance 2022-08-25 23:54:56 +03:00
Eladash c7586de280 Savestates/sys_fs: Fix saving encrypted and split-files file descriptors 2022-08-25 23:54:56 +03:00
Eladash 506b9deec5 Savestates/SPU LLVM: Improve saving performance 2022-08-25 23:54:56 +03:00
kd-11 1fc0191311 Fix build 2022-08-23 23:49:46 +03:00
kd-11 1f9e04f72d rsx/vk: Implement flushing surface cache blocks to linear mem 2022-08-23 23:49:46 +03:00
Eladash a71bdc761e SPU/Debugger: Improve debugging reservations
Simplify and make the debugging results more consistent.
2022-08-22 18:24:26 +03:00
Eladash 9d8f4d5cfa Bugfix after #12523 2022-08-22 18:24:26 +03:00
Eladash ee87fdc869 Fix GETLLAR spin detection 2022-08-22 08:33:22 +03:00
Eladash bf63a18c5f SPU Add ability to specify percentage of busy waiting 2022-08-21 15:02:01 +03:00
Eladash ddba30988b vm: Attempt to not remove cpu_flag::wait flag during access violation 2022-08-21 15:02:01 +03:00
Eladash b0e2c959eb SPU: Disable notification if no changes were made in PUTLLC 2022-08-21 15:02:01 +03:00
Eladash 28bec8e1bf SPU: Implement custom reservation condition in atomic wait 2022-08-21 15:02:01 +03:00
Eladash 86702186f2 PPU: Detect lwmutex reservation pattern and optimize it 2022-08-21 15:02:01 +03:00
Eladash 82b1a2bd7a SPU: add the concept of inaccurate reservations
Implement cellSpursRequestIdleSpu
2022-08-21 15:02:01 +03:00
Eladash d36cf71a2d Savestates: Fix PPU analysis when patches are applied 2022-08-21 15:02:01 +03:00
Eladash 1dd1062be1 PPU LLVM: Fix HLE function injection 2022-08-21 15:02:01 +03:00
Eladash c0e3b86064 SPU: Optimize spu_thread::get_events() 2022-08-21 15:02:01 +03:00
Eladash 6210a8491f SPU: Optimize and enable SPU GETLLAR Polling detection by default
* Make this setting guard all reservation waitings. (renamed)
* Revert atomic list usage: it's more expensive and not needed because it has a timeout and is not optimized for the rest of the waitables.
2022-08-21 15:02:01 +03:00
Eladash 33a4f05ffa SPU: Interleave loads/stores in reservation access utilities 2022-08-21 15:02:01 +03:00
Ani a74d3005f8 vk: Update FSR from 1.0 to 1.0.2 (#12538) 2022-08-20 17:37:42 +01:00
kd-11 bca833dad7 Fix surface reuse 2022-08-20 01:23:15 +03:00
kd-11 f981e05908 rsx: Do not lie about surface details 2022-08-20 01:23:15 +03:00
kd-11 b5abd777b0 rsx: Allow longer dispatch queues to accomodate games with high draw call count 2022-08-19 20:29:32 +03:00
Elad Ashkenazi b2c9add47e rsx: Fix semaphore timeout on boot
Allow semaphore timeout to be disabled again.
2022-08-19 15:40:20 +03:00
kd-11 a401a192b8 Fixup for dst_stage 2022-08-19 14:29:20 +03:00
kd-11 ad1b007dd1 Fix whitespace 2022-08-19 14:29:20 +03:00
kd-11 71e35c8b4d vk: Implement support for VK_EXT_attachment_feedback_loop_layout 2022-08-19 14:29:20 +03:00
kd-11 2e504b2dac rsx: Silence some warnings 2022-08-19 14:29:20 +03:00
Jan Beich 6e9df9e452 CI: upgrade FreeBSD to 13.1
FreeBSD doesn't support /latest and /quarterly package repos on EOL
versions. 13.0 reaches EOL on 2022-08-31, so avoid CI breakage.
2022-08-19 13:46:01 +03:00
Trevor Mack 8aa5899196 Update BUILDING.md
Updating the 'Configuring the Qt plugin' section with more details and for the new versions of the plugin.
2022-08-18 08:41:46 +02:00
Nekotekina b6608ad31d vm_native: rewrite win7 workaround 2022-08-15 12:26:17 +03:00
kd-11 edb39039dd Fix linux build 2022-08-14 23:53:50 +03:00
kd-11 bacf518189 rsx: Fix 2D intersection tests 2022-08-14 23:53:50 +03:00
kd-11 1244044647 util: Provide stack-trace utilities 2022-08-14 23:53:50 +03:00
kd-11 b960ce1426 vk: Align write length when pre-filling buffers with constant patterns 2022-08-14 23:53:50 +03:00
kd-11 c55a889c23 vk: Initialize buffer info blocks to avoid null descriptors 2022-08-14 23:53:50 +03:00
Megamouse 829af30568 evdev: add motion device 2022-08-14 11:04:57 +02:00
Eladash a3007e11ca SPU: Fix minor race in sys_spu_thread_receive_event
Check final cpu_state::state value for suspend state because that's the variable the thread waits on.
2022-08-12 15:20:48 +03:00
Eladash 9a981b5292 rsx_debugger: Fix memory leak 2022-08-12 15:20:48 +03:00
Eladash 4464a6c3f6 CG-Disasm: Name input/output vetex arrays 2022-08-12 15:20:48 +03:00
Eladash d30ac20fad Debugger: Fix and use centered PC by default
* Fix instruction-selection dependent functionality.
* Remove odd instruction position jumps in add/remove breakpoint.
* Make PC fixate at 1/3 of the frame because knowing future instructions is more important than knowing the previous.
2022-08-12 15:20:48 +03:00
Nekotekina 7bb2d94e53 vm: use sparse files to emulate overcommit memory
Fix shm::map_critical page flags.
2022-08-12 13:59:03 +03:00
Eladash 7ff4509858 sys_lwcond: Fix a loose notification in cond wait 2022-08-11 12:44:40 +03:00
Eladash f2997e4c00 LV2: Fix the most annoying race ever
Timeline of the race:
1. The PPU is in SLEEP state. state = suspend.
2. lv2_obj::awake is called on the traced thread and is now in ONPROC state, state = signal.
3. lv2_obj::awake is called by another thread externally with a priority higher than our traced thread and appends it to g_pending. state = suspend + signal.
4. lv2_obj::sleep/set_priority (higering priority) is called on any thread which is in ONPROC. Causing it to enter SLEEP or RUNNING state, while the traced thread is back in queue in ONPROC. state = suspend + signal.
5. The traced thread finally calls lv2_obj::awake on itself, g_pending decrements to 0 and we a have a rescheduling event, after XOR state = 0!!! (no signal)
6. In check_state: cpu_sleep_called is now true and remains this way.
7. Another thread with a higher prioty kicks in and appends the traced thread into g_pending. state = suspend.
8. The traced thread is at cpu_thread::cpu_wait(), and that's where it's gonna spend the rest of its life.
2022-08-11 12:44:40 +03:00
Eladash 133e9d4705 CPUThread.cpp: Fix cpu_flag::pending reset 2022-08-11 11:42:16 +03:00
Eladash 501ca4bcf5 logs: Prevent potential deadlock of the main thread in stack mode
If a thread logs faster than the GUI thread can print on screen.
2022-08-11 11:42:16 +03:00
Eladash 9212942724 kernel_explorer: Add info about ppu_thread::ack_suspend
The wording is bad but unless the emulation went downhill it shouldn't print on screen repeatedly.
2022-08-11 11:42:16 +03:00
Eladash 683c1a6512 LV2: Optimize sys_ppu_thread a bit 2022-08-11 11:42:16 +03:00
Eladash 9b0d33048c Savestates/LV2: Fix race on _sys_lwcond_queue_wait saving
cpu_flag::again modification requires exclusive access.
2022-08-11 11:42:16 +03:00
Eladash bc8bf2c329 sys_cond/lwcond: Fix waiting time in the debugger for mutex lock 2022-08-11 11:42:16 +03:00
Elad Ashkenazi f0002501f7 sys_mutex/lwmutex: Regression fixes after #12378 2022-08-11 11:42:16 +03:00
Elad Ashkenazi c4cc0154be LV2: Optimizations and fixes
Fix and optimize sys_ppu_thread_yield

Fix LV2 syscalls with timeout bug. (use ppu_thread::cancel_sleep instead)

Move timeout notification out of mutex scope

Allow g_waiting timeouts to be awaked in scope
2022-08-11 11:42:16 +03:00
shinra-electric cba4c3cdc4 [macOS] Update hid_pad_handler.cpp to prevent DS4 from disconnecting (#12493)
Prevents DS4 (and possibly DS3) from disconnecting from bluetooth after 15 minutes by using hidapi's non-exclusive mode. 
The most recent version of hidapi, 0.12 from two months ago, added "macOS-specific function(s) to open device(s) in non-exclusive mode".
2022-08-11 07:14:37 +02:00
kd-11 c51d3b5465 Workaround for msvc weirdness 2022-08-09 18:32:54 +03:00
kd-11 e179adc4a0 rsx: Refactor surface cache storage 2022-08-09 18:32:54 +03:00
Elad Ashkenazi 47f3740a70 System.cpp: Replace std::filesystem usage (#12474) 2022-08-08 05:46:32 +03:00
nastys 2880370047 Update MoltenVK (#12456) 2022-08-07 20:54:31 +01:00
kd-11 61a055a1c6 Tuning 2022-08-07 22:14:49 +03:00
kd-11 64b4cfa59f rsx: Erase surface background when reloading after a pitch mismatch 2022-08-07 22:14:49 +03:00
kd-11 c799ffd223 rsx: Stubs for pitch conversion 2022-08-07 22:14:49 +03:00
Eladash 2ec039365f shared_mutex: Optimize busy-waiting by detecting waiters and try to steal the notifying bit
Add an unused has_waiters() method.
2022-08-07 20:23:54 +03:00
Eladash 26e731b487 LV2: Re-add dropped optimization by previous commit
Currently only for lock-free syscalls.
2022-08-07 20:23:54 +03:00
Eladash 34bae90820 LV2: Move nearly all notifications out of all mutex scopes including IDM 2022-08-07 20:23:54 +03:00
Eladash b55a052a22 IdManager.h: Do not lock IDM mutex if the preliminary ID check failed
Optimizes common ESRCH failures. (lambda variants only atm)
2022-08-07 20:23:54 +03:00
Eladash 011aabe9ed LV2: Make sys_mutex and sys_lwmutex lock-free, add some busy waiting in sys_mutex_lock 2022-08-07 20:23:54 +03:00
Eladash a17a6527f6 LV2: Move memory unlocking outside of mutex ownership and make it conditional 2022-08-07 20:23:54 +03:00
Eladash 122c6256ca A fix of _spurs::add_workload 2022-08-07 20:23:54 +03:00
Eladash 73aaff1b29 LV2: allocation-free synchronization syscalls
* Show waiters' ID in kernel explorer.
* Remove deque dependency from sys_sync.h
2022-08-07 20:23:54 +03:00
Eladash c7fbc16357 SPU: Postpone notifications to afterward group mutex ownership 2022-08-07 20:23:54 +03:00
Eladash bc728db15b LV2: Add busy waiting before entering atomic wait 2022-08-07 20:23:54 +03:00
Eladash 2eebbd307d LV2: Minor optimization regarding signal flag 2022-08-07 20:23:54 +03:00
Eladash dc851a729e LV2: Postpone thread notifications to afterward mutex ownership(s) 2022-08-07 20:23:54 +03:00
Eladash 6007fd630f Do not use lv2_obj::g_waiting when not needed in sys_timer_usleep 2022-08-07 20:23:54 +03:00
Megamouse cb0ecb2afb cellPngEnc 2022-08-06 10:35:10 +02:00
sguo35 84a785ea67 arm64: implement pshufb intrinsic 2022-08-05 22:53:11 +02:00
sguo35 cc1e4d2194 ppu/arm64: don't restore rsp on ppu_gateway return
Don't restore rsp on ppu_gateway return, since it can be reentrant. Also
change some registers to align with the x86 version's 32bit/64bit
usages.
2022-08-05 22:53:11 +02:00
Megamouse b2d84dcebd Qt: Add save filtered log to menu of log viewer 2022-08-05 20:50:51 +02:00
Megamouse 958d77ba52 Qt: filter log viewer when opening a file 2022-08-05 20:50:51 +02:00
Megamouse c4b38869ab Input: fix pad initialization 2022-08-05 20:16:21 +02:00
Eladash fd1968dd22 Savestates: Save SFO directory path for PSN games 2022-08-05 19:19:16 +03:00
Elad Ashkenazi 88b80ebdf5 sys_net: Fix missing locks in some syscalls (#12459) 2022-08-04 21:31:34 +03:00
kd-11 2445ab8d8e Fix RSX capture playback 2022-08-04 19:01:45 +03:00
Elad Ashkenazi 0e1931f178 sys_lwcond: Fix rare race on mode 3 signal (#12413) 2022-08-04 14:13:51 +03:00
kd-11 3e923b4993 rsx: Optimize VTX_FMT_SNORM16 decoding
- Cuts down SNORM16 overhead by ~65%
2022-08-03 23:33:31 +03:00
kd-11 8181498d86 gl: Alias UBO/SSBO slots to avoid exceeding the available number of binding slots.
- The sets are different anyway and should not overwrite each other in a proper driver.
2022-08-03 23:33:31 +03:00
kd-11 57dd611111 gl: Fix incomplete stencil view of depth-stencil texture
- Samplers must use point sampling for stencil views
2022-08-03 23:33:31 +03:00
Eladash b3162bd41c rsx/vp: Fix SNORM16 vertex decoding 2022-08-03 18:11:46 +03:00
Elad Ashkenazi cd2adbad9a Update rsx_methods.cpp 2022-08-03 17:15:59 +03:00
Elad Ashkenazi 99730ac4f9 Update rsx_methods.cpp 2022-08-03 17:15:59 +03:00
Elad Ashkenazi d2ab3383ad Update rsx_methods.cpp 2022-08-03 17:15:59 +03:00
Elad Ashkenazi 3b15a6b39e Update rsx_methods.cpp 2022-08-03 17:15:59 +03:00
Elad Ashkenazi 651e58f443 rsx: Trivial optimization 2022-08-03 17:15:59 +03:00
Eladash 769f9e33e9 Savestates/RSX: Fix fifo_control::restore_state 2022-08-03 15:35:41 +03:00
Eladash cf77bb7cfc Savestates/MSVC: Replace bugged std::unique (compiler bug) 2022-08-03 15:35:41 +03:00
Megamouse c75b76ddf5 cellPhotoImport: fallback to extension if sub_type is unknown 2022-08-02 01:43:23 +02:00
Megamouse 4dec8d7925 cellPhotoImport: allow dev_hdd1 2022-08-02 01:43:23 +02:00
Megamouse 934e7b614c cellPhotoExport/cellVideoExport: fix filenames 2022-08-02 01:43:23 +02:00
Megamouse 416b14de72 cellPhotoExport: first implementation 2022-08-01 19:11:14 +02:00
Megamouse b87099c790 cellVideoExport: fix some copy pasta errors and prevent file overwrite 2022-08-01 19:11:14 +02:00
kd-11 052725fdc7 rsx: Do not require ZCULL buffer binding to enable ZPASS counting
- ZPASS data is still accessible in unbuffered mode.
  The only thing that buffered ZCULL enables is something closer to early-Z where large blocks of pixels can be dicarded earlier.
  It is strictly a performance optimization and not required for ZPASS to work.
- Update ZCULL stat calculations to take into account unbuffered Z
2022-08-01 00:23:54 +03:00
Megamouse f90b79791f HLE: fix file not found errors in media functions 2022-07-31 16:45:05 +02:00
RipleyTom 4c32c95b33 Enable wolfssl fast-math option (#12427) 2022-07-30 18:19:19 +01:00
Megamouse c00d47cc99 Update wolfssl to v5.4.0-stable 2022-07-30 14:33:14 +02:00
Megamouse ea53c7dc85 Update curl to curl-7_84_0 2022-07-30 14:33:14 +02:00
Megamouse 2b923c681e Update FAudio to 22.07 2022-07-30 14:33:14 +02:00
Elad Ashkenazi 7a8e918519 Update System.cpp 2022-07-30 08:33:09 +02:00
Elad Ashkenazi d99ae3809d Update keyboard_pad_handler.cpp 2022-07-29 13:45:19 +02:00
Malcolm Jestadt 51e6d0a336 SPU LLVM: Add integer compare optimization for FCMGT 2022-07-29 11:59:59 +03:00
Megamouse 228844c017 overlays: fix line wrapping and position of lines
- Fix off by one issue when we wrapping a line caused by unnecessary zeroed whitespaces.
- Fix centering of lines that end with carriage return caused by overzealous reset of counters.
- Remove fabs where there shouldn't be any
2022-07-29 09:26:45 +02:00
Megamouse 87e628a9e9 cellPhotoDecode: optimize get_scaled_image 2022-07-29 08:05:35 +02:00
Megamouse e6885e25b5 Qt: fix image ratio in screenshot_manager_dialog 2022-07-29 03:14:29 +02:00
Megamouse f31ffc4596 Implement cellPhotoDecode 2022-07-28 09:06:48 +02:00
Megamouse 4114f00c05 cellPhotoImport: fix vfs path and add some logging 2022-07-28 09:06:48 +02:00
Megamouse 8f7209f886 cellMusicSelectionContext: fix log message facepalm 2022-07-27 07:39:55 +02:00
Megamouse d80146c704 cellMusic: Fix resume, fast forward and rewind
- Sadly rewind does not work with the QMediaPlayer on windows
2022-07-27 07:39:55 +02:00
Megamouse 577f379a12 implement cellPhotoImport 2022-07-26 17:27:35 +02:00
Megamouse 3d73915358 cellSearch: improve populate_photo_info, read image headers 2022-07-26 17:27:35 +02:00
Megamouse a5317d50a5 cellMusicSelectionContext: log playlist 2022-07-26 17:27:35 +02:00
MSuih 143bd6cc80 Fix typo in tooltips.h 2022-07-25 21:28:24 +02:00
MSuih 5cc8f970c0 Fix minor issues with issue templates 2022-07-25 21:28:24 +02:00
kd-11 c9058280e0 vk: Fix a potential deadlock 2022-07-25 21:05:31 +03:00
kd-11 5af50cfd55 vk: Handle corner cases
- Fix up flush sequence in DMA handling (WCB)
- Do not request resource sharing if queue family is not different!
2022-07-25 21:05:31 +03:00
kd-11 d846142f0c vk: Reimplement compliant async texture streaming
- Use CONCURRENT queue access instead of fighting with queue acquire/release via submit chains.
  The minor benefits of forcing EXCLUSIVE mode are buried under the huge penalty of multiple vkQueueSubmit.
  Batching submits does not help alleviate this situation. We simply must avoid interrupting execution.
2022-07-25 21:05:31 +03:00
Elad Ashkenazi 0ba0f9d2b9 Disable Disc update redirection for manual ELF loader (#12381) 2022-07-22 20:35:15 +02:00
Elad Ashkenazi f4f9c1865e Savestates: Implement compatibility with disc Demon's Souls (#12379)
* Savestates: Implement compatibility with virtual /dev_bdvd/PS3_GAME
2022-07-22 19:23:23 +03:00
Megamouse c40439ae6b cellMusic/Decode: implement playlist shuffle and repeat 2022-07-22 08:42:43 +02:00
Megamouse 683fa2a392 Mount custom dev_bdvd if a disc game was mounted from dev_hdd0 2022-07-22 07:36:49 +02:00
kd-11 246bf1df64 Use C++17 ctor for string_view 2022-07-21 22:29:40 +03:00
kd-11 9a868e9239 gl: Silence compiler warning 2022-07-21 22:29:40 +03:00
kd-11 ab3cde1939 gl: Do some macro patching for intel driver 2022-07-21 22:29:40 +03:00
kd-11 bec3e156fb vk: Disable robust buffer access for ANV
- Robust access is nice, but we don't actually need it
2022-07-21 22:29:40 +03:00
Megamouse 086afbbaa5 overlays: implement back and focus in media_list_dialog 2022-07-21 01:36:33 +02:00
Megamouse cd4d73114c overlays: fix media_list_dialog title 2022-07-21 01:36:33 +02:00
Megamouse 14ca506774 Qt/savedata: use rsx overlays selection_code 2022-07-21 01:36:33 +02:00
MSuih 984bf67d84 Replace issue templates with issue forms (#12373) 2022-07-20 20:22:12 +01:00
Eladash 2b3ae8b638 Revert another change 2022-07-20 18:11:52 +03:00
Eladash bb9ae18c71 Savestates: Fix sys_rwlock_wunlock saving 2022-07-20 18:11:52 +03:00
Eladash ce01457510 Fix futile wait regression in sys_lwcond_signal 2022-07-20 18:11:52 +03:00
Megamouse d1a46b491e cellMusic: add some error checks and copy context to callback 2022-07-20 07:09:38 +02:00
Elad Ashkenazi 31df99f7d6 Logs: Flush unreported errors when turning off Stack Cell errors (#12366) 2022-07-19 17:05:51 +02:00
Eladash 5e11b2b056 log_frame: Minor fix for stack mode 2022-07-19 10:43:51 +03:00
Eladash d106934336 Savestates: Fix saving sys_mutex_unlock 2022-07-19 10:43:51 +03:00
Eladash 68718361a7 Allow non-existing paths in vfs::retrieve 2022-07-19 10:43:51 +03:00
Eladash c887865d54 Perform cleanup after Emulator::Load failures 2022-07-19 10:43:51 +03:00
Eladash dc48944979 Prefer BDVD over HDD0 in vfs::retrieve 2022-07-19 10:43:51 +03:00
Eladash d22b8b1d3a Savestates: Do not restart after Ctrl+S for now 2022-07-19 10:43:51 +03:00
Eladash 56619b20cf Savestates: savestate reload fix 2022-07-19 10:43:51 +03:00
Eladash 12ebf77e22 Savestates: save sys_spu_initialize settings 2022-07-19 10:43:51 +03:00
Megamouse 845af8bd96 cellGifDec: random stuff because I was bored 2022-07-18 22:23:25 +02:00
kd-11 680f08c2b8 gl: Destroy barrier signals correctly 2022-07-18 18:58:22 +03:00
kd-11 82bac4173e gl: Reuse scratch images 2022-07-18 18:58:22 +03:00
kd-11 8a8fda3e02 gl: Combine RGBA8/D24S8 readback and byteswap into one operation 2022-07-18 18:58:22 +03:00
kd-11 1c5b685398 gl: Only toggle state settings that are relevant to the current RSX state 2022-07-18 18:58:22 +03:00
kd-11 e95084f138 gl: Use DSA for imageview configuration and avoid needless bind operations 2022-07-18 18:58:22 +03:00
kd-11 e12d268662 gl: Implement support for texture1D decode 2022-07-18 18:58:22 +03:00
kd-11 6a3f17cd36 gl: Fix compute invocation counts for format handling code 2022-07-18 18:58:22 +03:00
Erik S. V. Jansson db0774a81b Fix spirv/glslang.vcxproj build to support spaces.
e.g. cloning into D:\Source Code\C++\rpcs3 will cause spirv and glslang
to error during MSBuild. All other parts of rpcs3 compile fine so these
are probably the only places which fail when the project is placed in a
path with spaces in it. I've at least been able to compile + run rpcs3.
2022-07-18 01:27:56 +03:00
Megamouse 34615d3a74 cellMic: slow down if no mics are configured 2022-07-17 19:31:05 +02:00
Zion Nimchuk 189499c10b Fix shellcheck errors 2022-07-17 15:14:02 +03:00
Zion Nimchuk de613a8a98 Docker version bump 2022-07-17 15:14:02 +03:00
Eladash c0369b2e10 sys_net: Implement sys_net_abort 2022-07-17 14:53:03 +03:00
Megamouse 07ebbb6c84 cellSysutilAvc2SetStreamingTarget: remove ensure 2022-07-16 20:09:13 +02:00
sguo35 73ed657e00 spu/arm64: fix 16 byte branch patch alignment 2022-07-15 12:37:33 +03:00
sguo35 b37217b181 windows: fix build for asmjit update 2022-07-15 12:37:33 +03:00
sguo35 b02e6e222f arm64: enable fma and "avx" on Apple and Cortex CPUs 2022-07-15 12:37:33 +03:00
sguo35 c52abed4d3 spu: implement ubertrampoline generator for arm64
Implement the ubertrampoline generator for arm64. It generally follows
the x86 version, but uses asmjit to generate code instead of writing raw
opcodes to memory, trading memory usage for readability. Currently the
trampoline implementation is fairly inefficient in terms of instruction
size and is substantially larger than the x86 version.
2022-07-15 12:37:33 +03:00
sguo35 9e57efe82c spu: implement assembly functions for arm64 2022-07-15 12:37:33 +03:00
sguo35 77ab872bec spu: remove rotqby C++ impl
rotqby C++ implementation is broken, since replacing it with the
intrinsic version reliably fixes spurs test. A conditional branch
immediately after a rotqby instruction will fail using the C++ version
but succeed using the intrinsic.
2022-07-15 12:37:33 +03:00
sguo35 27acebc5f5 spu: use portable llvm recompiler on arm64
Since there is not yet an arm64 version of the assembly (fast) version.
2022-07-15 12:37:33 +03:00
sguo35 2755d9941c ppu: fix a bug where arm64 sp wasn't being saved
ASMJIT can silently fail and drop instructions when invalid operations
are performed (e.g. loading/storing sp). Explicitly move sp to a gp
register before doing loads/stores to fix this.
2022-07-15 12:37:33 +03:00
sguo35 488982f424 spu: external function calls should be marked non-tail
Mark external function calls as non-tail, since they aren't tail calls
and assuming they are will cause returns to fail in Arm64 GHC CC.
2022-07-15 12:37:33 +03:00
sguo35 086e12c6ca mac: mmap calls should initialize with r/w page perms
Mac/Arm64 pages should be R/W by default due to 16k page
incompatibility. Without this there will be segfaults due to invalid
permissions.
2022-07-15 12:37:33 +03:00
sguo35 9b19f16698 arm64: add optimized 16byte ld/st for armv8.4a+
16B ldp/stp are atomic on v8.4a+. See Arm Architecture Reference Manual,
"Changes to single-copy atomicity in Armv8.4". Add load/release atomic
impls for this instruction and add detection for 8.4a+ capability.
2022-07-15 12:37:33 +03:00
sguo35 b13fd68848 [3rdparty] update asmjit dependency 2022-07-15 12:37:33 +03:00
Eladash 3e51426379 Savestates/SPU: Kill emulation when its safe to save SPU state 2022-07-15 09:30:53 +03:00
Megamouse 105781fa76 overlays: properly align lines with leading or trailing whitespace 2022-07-14 23:32:20 +02:00
Megamouse d2be12bb07 overlays: find missing characters lost during wrapped rendering 2022-07-14 23:32:20 +02:00
Megamouse fdc15e12c4 overlays: properly calculate offsets for wrapped text 2022-07-14 23:32:20 +02:00
Eladash e548743cbf Fixup rsx cpatures 2022-07-14 18:50:31 +03:00
Megamouse 7499f875a6 cellCrossControllerInitialize: add dialog 2022-07-13 19:12:46 +02:00
kd-11 cdef752a9c gl: Fix 2D->3D splat in CopyBufferToImage 2022-07-13 02:09:58 +03:00
kd-11 1483941bea gl: Implement row alignment in CopyBufferToImage routines 2022-07-13 02:09:58 +03:00
kd-11 9cc15be7f2 Fix linux build 2022-07-13 02:09:58 +03:00
kd-11 453e1bfaec gl: Silence compiler warning 2022-07-13 02:09:58 +03:00
kd-11 82439327fa gl: Support loading data from SSBO using compute shaders
- Gives better performance than using raw draw calls.
- Does not work with all formats. The draw call version is still used when needed.
2022-07-13 02:09:58 +03:00
kd-11 f60002e87d gl: Optimize memory barriers a bit
- Move waits to server side
- Increase the scratch buffer size to avoid waiting on barriers
2022-07-13 02:09:58 +03:00
kd-11 9fc6382909 gl: Finalize BGRA storage format internals
- Performance is terrible but it works properly now
2022-07-13 02:09:58 +03:00
kd-11 ebad08aa97 gl: Fix image creation for virtual formats 2022-07-13 02:09:58 +03:00
kd-11 599f1dd157 gl: Properly match BGRA RTT formats 2022-07-13 02:09:58 +03:00
kd-11 bb5ce67d57 gl: Handle corner cases for CopyBufferToImage
- Handle 3D textures and cubemaps
- Handle writing to mip > 0
2022-07-13 02:09:58 +03:00
kd-11 f948ce399e gl: Implement CopyBufferToImage in software
- Overrides the drivers CopyBufferToImage handling where possible
2022-07-13 02:09:58 +03:00
kd-11 954c60947d gl: Avoid calling gl functions without a context even if the object is GL_NONE
- While calling glDestroyXXXX with GL_NONE is a no-op, calling it without a context will crash some drivers.
2022-07-13 02:09:58 +03:00
kd-11 98b6783c05 gl: Fix image views broken after refactor 2022-07-13 02:09:58 +03:00
kd-11 0894d2886a Fix build 2022-07-13 02:09:58 +03:00
kd-11 4995b4abe3 gl: Do not use raw GL image copy command for RSX data 2022-07-13 02:09:58 +03:00
kd-11 35ef19cfc8 gl: Refactor the rest of GLHelpers 2022-07-13 02:09:58 +03:00
kd-11 09824a718f gl: Separate BGRA8 storage from RGBA8 2022-07-13 02:09:58 +03:00
Megamouse f4e85af53c sceNpUtil: implement skeleton bandwidth test 2022-07-12 22:45:40 +02:00
Eladash 74a909cfbc logs: Batch log messages (optimization) 2022-07-12 21:37:06 +02:00
Eladash 0bfdfd8433 Savestates: Implement Ctrl+R to reload the most recent savestate
Ctrl+R no longer means Resume emulation, this functionality has been transferred to Ctrl+P which is also capable of pausing the emulation. (so it's now a toggle)
2022-07-12 15:15:42 +03:00
Eladash 1f5cf776b2 Savestates: Fix "Suspend Emulation Savestate Mode" setting 2022-07-12 15:15:42 +03:00
Eladash cdd6840826 Savestates/SPU: Complete fix for saving sys_spu_thread_receive_event 2022-07-12 15:15:42 +03:00
Eladash ab27ee4cf4 Savestates/RSX: Save NV406E semaphore waiting 2022-07-12 15:15:42 +03:00
Eladash 6211295155 atomic.hpp: Truncation warning fix 2022-07-12 15:15:42 +03:00
Eladash befd7ceb89 Savestates/sys_spu: Minor fix in saving sys_spu_thread_receive_event 2022-07-10 14:19:59 +03:00
Eladash 2cead6f328 Savestates/SPU: Fix saving sys_spu_thread_send_event 2022-07-10 14:19:59 +03:00
Eladash 4e3d58f75a Savestates: Fix crash when savestating before PPU/SPU compilation finishes
Unintentional concurrent access to m_ar ptr itself.
2022-07-10 14:19:59 +03:00
Eladash 24fddf1ded rsx: Fix emu stopping crash when using multi-threaded rsx
FXO signaled abort before it completed its work, leading to unsignalled vk::fence and deadlock. Fix it by deregistering it from FXO.
2022-07-10 14:19:59 +03:00
Eladash 87cd65ff03 Savestates: support game collections 2022-07-10 14:19:59 +03:00
Eladash 219e3d61f8 Minor fix in shm::map_critical 2022-07-10 14:19:59 +03:00
Eladash 4ade06f36f Savestates/RSX: Restore the ZCULL control state
And fix the ZCULL control state at the initial state of RSX.
2022-07-10 14:19:59 +03:00
Nekotekina 786510a937 Use gettid() on Linux, don't use std::thread::id
pthread_self() returns a large opaque pointer which is harder to use.
2022-07-10 12:22:28 +03:00
Megamouse 0c6df39a45 cellSearch: more error checks and shuffle 2022-07-09 16:39:10 +02:00
Vestrel 648ad0cd90 cellAudio: fix downmix if device doesn't support multichannel (#12328)
* cellAudio: fix downmix if device doesn't support multichannel
* Downmix in 2 stages
2022-07-09 15:25:28 +02:00
Megamouse cd0d43382f Qt: fix custom settings audio device corruption 2022-07-08 23:56:10 +02:00
Vestrel 98b730c806 Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
Nekotekina 4b787b22c8 Implement FN (lambda shortener)
Useful for some higher order functions.
Allows to make short lambdas even shorter.
2022-07-08 14:47:41 +03:00
Nekotekina 5c6f5a1610 Cleanse LOG_CONSTINIT macro
Should be unnecessary.
2022-07-08 14:47:41 +03:00
Eladash 0b8d5f7b98 Savestates: Fix argv 2022-07-08 12:57:43 +03:00
Eladash 314d481dcd Savestates: Fix typo in page size setting 2022-07-08 12:57:43 +03:00
Eladash 0980c68e6f Savestates: Increase timeout for emulation stopping 2022-07-08 12:57:43 +03:00
Eladash 983bfa2088 Savestates: Decryption of executable fix 2022-07-08 12:57:43 +03:00
Eladash 3a9928de65 Savestates: Log file descriptor information 2022-07-08 12:57:43 +03:00
Eladash 1fd5fb2f7e Savestates: Fix minor race with LV2 timers 2022-07-08 12:57:43 +03:00
Eladash 4ac88fa8d3 Savestates/RSX: Save drawing context 2022-07-08 12:57:43 +03:00
Eladash 5f8f9e33f1 RSX/Savestates: Replace GCM hack with a proper fix 2022-07-08 12:57:43 +03:00
Eladash f0c71ae2ae Savestates: Fix saving sys_event_queue_destroy 2022-07-08 12:57:43 +03:00
Megamouse 0c7ecdc954 cellMusicDecode: add more error checks and silence some log messages 2022-07-08 07:55:46 +02:00
Elad Ashkenazi 73a687df7d Savestates/Not Savestates: Fix exitspawn to HDD0 executable with mounted BDVD 2022-07-07 21:59:39 +02:00
Megamouse b683110e72 cellGem/overlays: show cursor if necessary 2022-07-07 12:40:23 +02:00
Megamouse 3840015e7d cellGem: implement basic ds3 cursor movement 2022-07-06 21:49:31 +02:00
Megamouse 639b8112b6 Input: make move handler dynamic 2022-07-06 21:49:31 +02:00
Megamouse 2bf17f5d3c input: fix horrible pad hacks 2022-07-06 21:49:31 +02:00
Megamouse 4823d4c32a input: add background input option
Adds an option to disable background input to the IO tab in the settings dialog.
This will disable pad input as well as ps move and overlays input when the window is unfocused.
2022-07-06 21:49:31 +02:00
Eladash c8c035eeef Regression fix 2022-07-06 20:07:09 +02:00
Eladash 155bd09fd0 Savestates: Cleanup v128 usage
It's compatible with bitwise serialization so it is faster to load/save it this way.
2022-07-06 19:43:25 +03:00
Eladash f546e5a8ef VM/Savestates: Replace bugged read-only block optimization 2022-07-06 19:43:25 +03:00
Eladash 2ccb0c8f42 SPU LLVM/Savestates: Remove unneeded store insurance and add related fix 2022-07-06 19:43:25 +03:00
Eladash 05303ce6c6 GUI: regression fix
Improperly resolved git conflict when rebasing savestates.
2022-07-06 19:43:25 +03:00
Eladash d8f3029952 Log LV2 periodic timers 2022-07-06 19:43:25 +03:00
Eladash 09c28f75b3 Savestates: Fix LV2 timers (fixes audio in some games) 2022-07-06 19:43:25 +03:00
Eladash 57671e267d Savestates: save cellAudioOut 2022-07-06 19:43:25 +03:00
Eladash b692108f1e Savestates: HLE state saving POC in sys_lwmutex 2022-07-06 19:43:25 +03:00
Eladash 2815aecd0c Savestates: Save SPU decrementer state 2022-07-06 19:43:25 +03:00
Megamouse b9f2b1e7c6 Qt: add UUID reset button 2022-07-05 09:09:00 +02:00
Eladash bd9ba7ef1f Remove incorrect Emu.IsStopped() checks 2022-07-05 08:25:36 +02:00
Eladash a015bd1ebd Savestates: Add missing position placement 2022-07-05 08:25:36 +02:00
Eladash d6cf167d52 Savestates: Minor optimization of size 2022-07-05 08:25:36 +02:00
Eladash 3fc2194fd5 Savestates: Fix zombie PPU threads saving 2022-07-05 08:25:36 +02:00
Eladash 72c14994f0 Savestates: Fix memory containers initialization (invalidates old savestates) 2022-07-05 08:25:36 +02:00
kd-11 fddb6a31a7 Use utils::c_page_size 2022-07-04 22:35:05 +03:00
kd-11 278ae7763a Use better macro notation 2022-07-04 22:35:05 +03:00
kd-11 5cafaef0a9 Aarch64 fixes for RSX 2022-07-04 22:35:05 +03:00
Elad Ashkenazi fcd297ffb2 Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
Ani 969b9eb89d rpcs3_version: Bump to 0.0.23 2022-07-02 13:20:41 +01:00
Megamouse 4fb5bd76fb Qt: Use exe dir instead emu dir for updates
This should fix the auto-updater when EmulatorDir is set to a different location
2022-06-30 22:19:32 +02:00
Megamouse 8043bb9087 Qt: log uuid
This creates and logs a unique identifier and saves it to a file.
The ID will be logged for statistical purposes and stay the same until recreated.
2022-06-30 21:36:11 +02:00
Nekotekina 69912ba3c7 Partial revert for cf0fcf5a2a 2022-06-30 14:38:14 +03:00
nastys 19034d9dff fix macos ci 2022-06-29 10:48:21 +03:00
Eladash cf0fcf5a2a SPU: Implement execution wake-up delay 2022-06-28 19:54:25 +03:00
Eladash 149c593d89 Make fs::get_parent_dir/fs::pending_file use string_view as argument 2022-06-27 15:03:39 +03:00
Megamouse ab5a33fc31 Qt: Properly repaint the Emulation menu icons 2022-06-27 10:13:03 +02:00
Eladash f5a55b3024 rsx: Fixup after #12052 for frame limiter off 2022-06-25 17:39:07 +03:00
Eladash 7422ab9e55 rsx: Do not discard flip notifications 2022-06-25 15:30:41 +02:00
Eladash f66256cc13 rsx: PS3 Native frame limiter improvements, add Infinite frame limiter
* Do not wait on DEVICE 0x30 semaphore, it seems like it is something to do with queue command synchronization.
 - This also fixes cellGcmSetFlipWithWaitLabel which is built specifically to enable accurate RSX flipping time, its waiting command is confirmed to be placed **AFTER** DEVICE 0x30 waiting.
* Fix default vsync state to be enabled. (and set it to enabled in cellGcmSetVBlankFrequency as well)
* Add experimental "Infinite" frame limiter mode.
* Fix spurious enabling of second vblank.
2022-06-25 15:30:41 +02:00
Megamouse 9cf7a63c77 Emu: Implement BlockingCallFromMainThread
Reduces some copy-paste clutter throughout the project
2022-06-25 14:01:40 +03:00
Megamouse 7842812e24 Qt: fix music handler destructor 2022-06-24 19:50:22 +02:00
Nekotekina ec59d7d26b Fixup for Emu.EjectDisc() 2022-06-24 19:55:44 +03:00
Nekotekina ea23525f66 sys_fs: Add mountpoint for /dev_ps2disc 2022-06-24 19:55:44 +03:00
Megamouse 87762a9b17 cellGame: implement disc change callbacks 2022-06-24 17:34:21 +02:00
Elad Ashkenazi bc3a899acf Debugger: Simplify and optimize #12269 (#12275) 2022-06-24 11:26:44 +02:00
Eladash 5e01ffdfd8 Debugger: Optimize cpu_thread::dump_regs()
Reuse string buffer. Copies and reallocations are expensive with such large strings.
2022-06-23 22:41:32 +02:00
Eladash 794cbd8708 Debugger: Refresh at 100hz during debugger interaction (was 20hz) 2022-06-23 22:41:32 +02:00
Megamouse 661b485b58 HLE: more error checks 2022-06-22 21:47:06 +02:00
Eladash 64399d45c1 vm: Make falloc return value bool
Allow to check properly for the success of 0 address allocation.
2022-06-22 21:01:37 +03:00
Nekotekina 653a9e6e7f Debugger: always print cpu_thread::dump_misc()
Was removed for some reason.
2022-06-22 18:53:29 +03:00
Eladash 71e07dc6c7 IdManager.h: Improvements
* Ensure ::PtrSame<T, Derived> is true.
* Allow id_base, id_step and id_count to be of enumeration type.
* Fix potential deadlock in kernel explorer.

idm::select:
* Allow to select multiple inherited object types for idm::select.
* Allow function reference types. (they don't allow access to operator() directly, use deducing std::function constructor instead)
* Ensure ::is_same_ptr<T, object_type> is true.
2022-06-22 17:24:47 +03:00
Elad Ashkenazi 69ceebeb05 Debugger: Hide breakpoint and callstack list if unused (#12266) 2022-06-21 23:42:42 +02:00
Eladash ccb2724fc4 Debugger: Implement SPU breakpoints 2022-06-21 16:59:45 +03:00
Eladash ec6d6adebc RSX Memory Viewer: Fix local memory displaying 2022-06-21 16:59:45 +03:00
Eladash 3899248305 RSX Debugger: Stable NOP skipping
Allow addresses of NOP blocks to remain consistent in between debugger position changes except for the first which can shrink or grow.
2022-06-21 16:59:45 +03:00
Megamouse 4557992334 Qt: add optional states to toolbar icons 2022-06-20 21:15:14 +02:00
Eladash d0e9108800 SPU: Implement "double" SNR storage 2022-06-20 20:50:11 +03:00
Eladash dc80d000aa SPU Disasm: Detect sys_event_flag_set_bit syscall 2022-06-20 20:50:11 +03:00
sguo35 775caabeeb [ppu] Fix function trampoline for arm64
- Refactor function manager trampoline to be cleaner
- Add trampoline impl for arm64
- Force all JIT entrypoints on Apple to toggle W^X
2022-06-20 15:08:27 +03:00
sguo35 e8b6e95f8e [3rdparty] Disable warnings for soundtouch dependency
Disabling warnings for soundtouch allows Clang to compile in debug mode.
2022-06-20 15:08:27 +03:00
sguo35 d2614d01fd [ppu] fix a macOS arm64 regression
Always override the LLVM triple to prevent linking errors.
2022-06-20 15:08:27 +03:00
isJuhn 4262794668 Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
capriots a6237e5473 cellAudio(Out): properly implement all downmixing modes (#12252) 2022-06-19 17:08:03 +02:00
Megamouse 0b14d785ca stub cellHttp 2022-06-19 07:07:31 +02:00
capriots 6bdf415adb Fix audio renderer not resetting after cellAudioOutConfigure() was called 2022-06-19 06:09:29 +02:00
Megamouse ebabdd37b4 cellAudioOut: fix sound_mode exception
Turns out some games don't configure proper channel counts after all,
which triggers an ensure in cellAudioOutGetState.
Let's select the current sound_mode in cellAudioOutConfigure.
Keep the old one if no match was found.

Also moves some code from AudioBackend to cellAudioOut for thread safety (see mutex).
2022-06-18 18:17:43 +02:00
Megamouse 11c5230628 stub cellSysutilRegisterCallbackDispatcher 2022-06-15 20:46:24 +02:00
Megamouse bfe029bb0c cellSysutil: implement some bgm fxo stuff 2022-06-15 20:46:24 +02:00
Megamouse cbf12bb54b cellSysutil: stub cellSysutilGameDataExit functions 2022-06-15 20:46:24 +02:00
Megamouse b01d8e01e3 cellSysutilRegisterCallback: fix potential read out of bounds 2022-06-15 20:46:24 +02:00
Megamouse 985b222123 Update SPIR-V to v2022.2 2022-06-14 18:25:32 +02:00
Megamouse b4b8929ab1 Update curl to v7.83.1 2022-06-14 18:25:32 +02:00
Megamouse 48a217648c Update glslang to v11.10.0 2022-06-14 18:25:32 +02:00
Megamouse 12ae714c70 Update wolfssl to v5.3.0-stable 2022-06-14 18:25:32 +02:00
Megamouse 2c51887668 Update hidapi to v0.12.0 2022-06-14 18:25:32 +02:00
Megamouse 69e11136e8 Update FAudio to v22.06 2022-06-14 18:25:32 +02:00
Ivan c2190f71ca SPU/PPU LLVM: fix triple setup (regression fix) (#12228) 2022-06-14 18:13:43 +03:00
Elad Ashkenazi 5378fee1c3 SPUAnalyzer.h: Add missing category check functions (#12222)
Some instructions were moved into integer category.
2022-06-14 16:04:24 +03:00
Jeff Guo cefc37a553 PPU LLVM arm64+macOS port (#12115)
* BufferUtils: use naive function pointer on Apple arm64

Use naive function pointer on Apple arm64 because ASLR breaks asmjit.
See BufferUtils.cpp comment for explanation on why this happens and how
to fix if you want to use asmjit.

* build-macos: fix source maps for Mac

Tell Qt not to strip debug symbols when we're in debug or relwithdebinfo
modes.

* LLVM PPU: fix aarch64 on macOS

Force MachO on macOS to fix LLVM being unable to patch relocations
during codegen. Adds Aarch64 NEON intrinsics for x86 intrinsics used by
PPUTranslator/Recompiler.

* virtual memory: use 16k pages on aarch64 macOS

Temporary hack to get things working by using 16k pages instead of 4k
pages in VM emulation.

* PPU/SPU: fix NEON intrinsics and compilation for arm64 macOS

Fixes some intrinsics usage and patches usages of asmjit to properly
emit absolute jmps so ASLR doesn't cause out of bounds rel jumps. Also
patches the SPU recompiler to properly work on arm64 by telling LLVM to
target arm64.

* virtual memory: fix W^X toggles on macOS aarch64

Fixes W^X on macOS aarch64 by setting all JIT mmap'd regions to default
to RW mode. For both SPU and PPU execution threads, when initialization
finishes we toggle to RX mode. This exploits Apple's per-thread setting
for RW/RX to let us be technically compliant with the OS's W^X
    enforcement while not needing to actually separate the memory
    allocated for code/data.

* PPU: implement aarch64 specific functions

Implements ppu_gateway for arm64 and patches LLVM initialization to use
the correct triple. Adds some fixes for macOS W^X JIT restrictions when
entering/exiting JITed code.

* PPU: Mark rpcs3 calls as non-tail

Strictly speaking, rpcs3 JIT -> C++ calls are not tail calls. If you
call a function inside e.g. an L2 syscall, it will clobber LR on arm64
and subtly break returns in emulated code. Only JIT -> JIT "calls"
should be tail.

* macOS/arm64: compatibility fixes

* vm: patch virtual memory for arm64 macOS

Tag mmap calls with MAP_JIT to allow W^X on macOS. Fix mmap calls to
existing mmap'd addresses that were tagged with MAP_JIT on macOS. Fix
memory unmapping on 16K page machines with a hack to mark "unmapped"
pages as RW.

* PPU: remove wrong comment

* PPU: fix a merge regression

* vm: remove 16k page hacks

* PPU: formatting fixes

* PPU: fix arm64 null function assembly

* ppu: clean up arch-specific instructions
2022-06-14 15:28:38 +03:00
Eladash 264253757c rsx: Improve Null Renderer 2022-06-12 20:54:42 +03:00
Ani 2512e958fa glsl: Avoid implicit int->uint conversions (#12220) 2022-06-12 18:05:43 +01:00
Nekotekina cb2c0733e2 SPU LLVM: fix vrangeps usage in clamp_smax 2022-06-12 16:40:04 +02:00
Elad Ashkenazi 280aa6da91 rsx: Fix NV406E semaphore_acquire timeout detection (#12205) 2022-06-12 12:34:29 +03:00
Megamouse 9554adda28 Qt: remove "Send Exit CMD" menu option
This is pointless now, since we always exit games with this command.
2022-06-12 11:17:30 +02:00
Megamouse f3fa7119ac Qt: Also parse changelog with "Background" update 2022-06-12 09:19:18 +02:00
Malcolm Jestadt 0d022d420b RSX: Add more wide paths for upload_untouched
- Adds AVX512 path for upload_untouched u16 with primitive restart, and
  AVX2 and AVX512 paths for upload_untouched without restart
- The AVX512 paths handle the remainder in simd code with masking, which
  provided a large speedup
- On my i5-1135G7 in demons souls benchmarking a scene in boletaria with
  a lot of geometry on screen via perf:
SSE4_1                      0.64%
AVX2                        0.59%
AVX512                      0.56%
AVX512 w/ remainder masking 0.51%
2022-06-12 06:23:55 +03:00
Elad Ashkenazi ec530a2c91 rsx: Suggest to try setting RSX FIFO Accuracy to a higher mode of accuracy on crash (#12204) 2022-06-11 23:26:12 +02:00
Malcolm Jestadt ebeeafc94f SPU LLVM: Use vrangeps in clamp_smax
- This instruction can clamp a value between a range of values, something which previously needed 2 instructions.
- With the immediate byte set to 0x2 it will compute the minimum between the absolute value of the first input and the second input, and then copy the sign from the first input to the result.
2022-06-11 18:25:31 +03:00
Elad Ashkenazi 17e28ae85d SPU LLVM: Improve expression matching detection for moved registers 2022-06-11 16:13:58 +03:00
RipleyTom da6434a65a Implements sys_fs_fcntl 0xC0000008 & 0xC000001A (#11957) 2022-06-11 13:12:42 +01:00
Megamouse a2623b1a9a DS3: fix other report size check.
The Report size also seems to be generic here, so let's only check if anything got returned at all.
Also add missing logging for result < 0.
2022-06-10 18:46:12 +02:00
Elad Ashkenazi 1738b38536 vm_native.cpp: Use Windows 10 memory mapping API (the correct API) 2022-06-10 14:27:02 +03:00
Megamouse 7235647e67 DS3: fix report size check.
The Report size seems to be generic here, so let's only check if anything got returned at all.
2022-06-10 06:47:01 +02:00
Megamouse 2a1e3b2b77 sys_rsxaudio: use max channel count from configured sound_modes 2022-06-09 18:59:13 +02:00
Megamouse 61823a5d62 sys_rsxaudio: only update config if the fxo is initialized 2022-06-09 18:59:13 +02:00
Megamouse ba96c6f3bb cellAudioOut: properly implement downMixer
If the PS3 downMixer is enabled, the game uses 8 channel input and 2 or 6 channel output
2022-06-09 18:59:13 +02:00
Megamouse fd8931c87e cellAudio: simplify sound mixer
There was no need to treat the first mix differently if all it did was init the buffer anyway.
Let's just always memset to zero.
2022-06-09 18:59:13 +02:00
kd-11 7530b3c971 vk: Fix image view search and destroy 2022-06-09 02:13:55 +03:00
Malcolm Jestadt 64616f1408 SPU LLVM: Microfixes
- Avoid vpermb path in shufb when op.ra == op.rb
- Reverse indices with (c ^ 0xf) rather than (~c) in vpermb path, vpternlogd is a 3 input operation and requires needless mov instructions to avoid destroying inputs
2022-06-08 22:50:30 +03:00
Elad Ashkenazi 004d9b09b8 LLVM: Fix 0 vector constant observation 2022-06-08 19:31:39 +03:00
Nekotekina 8d46840e09 Enable ppu_feed_data in PPU Interpreter 2022-06-07 15:24:50 +03:00
Nekotekina 753a12f436 Enable call history in PPU Interpreter 2022-06-07 15:24:50 +03:00
Megamouse 8e667e69f6 initial cellGameThemeInstall and cellGameThemeInstallFromBuffer 2022-06-07 07:37:30 +02:00
Megamouse 4d09be25aa cellMsgDialog: send DRAWING_END on abort 2022-06-06 20:07:01 +02:00
Eladash 0f499e36fb Optimize emulation stopping for when cellSysutilCheckCallback is not called 2022-06-06 19:21:41 +02:00
Eladash f5beaabded cellSysutil: Implement DRAWING callbacks
Also fixed a minor race in cellUserInfo regarding status of dialog
2022-06-06 19:21:41 +02:00
Elad Ashkenazi 248809ca1f cellGame: Revert cellGameDataCheckCreate2 change for now 2022-06-06 13:41:20 +02:00
Eladash f9bc7458d4 rsx: Resurgence of HLE GCM 2022-06-06 12:56:25 +02:00
Megamouse c4459dff40 Qt: use dedicated thread for getting input in the pad settings
This fixes the slow motion and rubber banding in the pad settings dialog while using HID handlers.
Previously everything was running on the main thread including the UI updates.
This meant that the poll rate was simply too slow and we were never up to date with the current data.
2022-06-06 00:15:27 +02:00
Eladash 16381929ba vm_var.h: Ensure 16-bytes alignment of gvar
Some PPU instructions require memory to be aligned otherwise they produce different results. I've already seen their usage in cellSaveData disassembly so may as well ensure it for all.
2022-06-05 20:47:49 +02:00
Eladash f1b03b36f7 cellGame: Make stats storage non-temporary, fix cbSet->setParam initial value 2022-06-05 20:47:49 +02:00
Megamouse e9ba6fd034 Qt: use unique_ptr for Ui objects. Should fix some mem-leaks 2022-06-05 19:07:03 +02:00
Megamouse bb03e17e2d HID: optimize get_next_button_press a bit 2022-06-05 19:07:03 +02:00
Megamouse 09875a5180 HID: properly check return values and report IDs 2022-06-05 19:07:03 +02:00
Megamouse 4912202cfa HID: zeroize buffers before getting a report, use std::array 2022-06-05 19:07:03 +02:00
Megamouse f57da6655c DualSense: Fix firmware report on newer versions
Newer versions of the DualSense return 64, while old versions return 65.
2022-06-05 19:07:03 +02:00
Megamouse ac34714837 CellAudioOut: Add some placeholders to CellAudioOutCodingType 2022-06-05 13:34:34 +02:00
Megamouse b4ce31cae3 cellAudioOut: update TODO comments for CELL_AUDIO_OUT_SECONDARY 2022-06-05 13:34:34 +02:00
Megamouse 5dffbca636 cellAudioOut: Only add LPCM 2ch. to secondary output 2022-06-05 13:34:34 +02:00
Megamouse fec9fcda7d Fix msvc parsing error caused by different naming 2022-06-05 13:34:34 +02:00
Megamouse 306776626a cellAudioOut: set latency to 13 2022-06-05 13:34:34 +02:00
Megamouse 15be6827ea cellAudioOutGetConfigure: Store and return set config seperately 2022-06-05 13:34:34 +02:00
Megamouse 8c0a786918 cellAudioOutConfigure: don't return error on unsupported config
Apparently the config simply isn't changed
2022-06-05 13:34:34 +02:00
Megamouse 8aa67114a9 cellAudioOut: Prefer 7.1 if available and supported
Select 7.1 as initial mode if the PARAM.SFO supports it and we enabled it
2022-06-05 13:34:34 +02:00
Megamouse 1bbb26334a cellAudioOut: Use bev_bdvd for disc game PARAM.SFO
Game Data PARAM.SFO does not contain SOUND_FORMAT
2022-06-05 13:34:34 +02:00
Malcolm Jestadt 1227b0a633 SPU LLVM: Reneable icelake shufb paths
- The previous code works just fine
2022-06-05 13:08:00 +03:00
kd-11 6c315e8aee gl: Disallow overlapping binding points 2022-06-05 10:13:41 +03:00
Elad Ashkenazi 88faac7bbc rsx: Minor fixup (#12165) 2022-06-04 15:04:27 +01:00
Elad Ashkenazi 9bb7e8d614 rsx: Implement atomic FIFO fetching (stability improvement) (non-default setting) (#12107) 2022-06-04 15:35:06 +03:00
kd-11 286f97fad0 rsx: Reduce some error spam 2022-06-04 14:02:33 +03:00
kd-11 f0a02e0d9d gl: Fix leaking texture views 2022-06-04 14:02:33 +03:00
kd-11 8185bfe893 gl: Track image destruction and remove handles from state tracker
- Handles are reused for different resources which can cause problems
2022-06-04 14:02:33 +03:00
kd-11 d577cebd89 gl: Refactor image and command-context handling
- Move texture object code out of the monolithic header
- All texture binds go through the shared state
- Transient texture binds use a dedicated temp image slot shared with native UI
2022-06-04 14:02:33 +03:00
Malcolm Jestadt 0e5514003a SPU LLVM: Optimize LQR/STQR
- Avoid type mismatch between adds that prevented llvm from combining the operations
2022-06-03 16:16:28 +03:00
kd-11 167161d8ce rsx: Restore some accidentally removed depth-format conversion macros 2022-06-03 11:54:09 +03:00
kd-11 b8b0ecabd8 gl: Fix data pointer on the optimized AMD path 2022-06-03 11:54:09 +03:00
kd-11 bb05de2e80 gl: Fix copypasta 2022-06-03 11:54:09 +03:00
kd-11 7890e87234 gl: Fix warning 2022-06-03 11:54:09 +03:00
kd-11 25c05867d6 gl: Fix ring buffer remove() function
- Fixes crash on running a second game in the same session
2022-06-03 11:54:09 +03:00
kd-11 a421270c19 gl: Use new scratch buffer system 2022-06-03 11:54:09 +03:00
kd-11 764fb57fdc gl: Implement scratch ring buffer with memory barriers 2022-06-03 11:54:09 +03:00
kd-11 3fd846687e gl: Refactor buffer object code 2022-06-03 11:54:09 +03:00
kd-11 ff9c939720 gl: Assume decode buffer is to be used as SSBO as this seems to be a hint to the driver about where to put the buffer
Part of OpenGL's achilles' heel - the API does not distinguish between VRAM and SYSTEM memory at all and relies on developers wrestling with the driver's heurestic algorithm for this.
2022-06-03 11:54:09 +03:00
kd-11 234db2be3f gl: Fix texture binding in overlay renderer 2022-06-03 11:54:09 +03:00
kd-11 fc44d53bb0 gl: Reset buffer size on destroying the GPU handle 2022-06-03 11:54:09 +03:00
kd-11 555a4b5f5c gl: Suggest readback buffer as ssbo if it is not provided
- We're likely to jump into a compute or readback pass anyway.
2022-06-03 11:54:09 +03:00
kd-11 a6e6df1445 gl: Implement fast texture readback for D24X8 and RGBA8/BGRA8 2022-06-03 11:54:09 +03:00
RipleyTom 2010d697c8 feat: add boot test menu entry 2022-06-03 01:15:54 +02:00
Megamouse 26045a9be5 Move test elfs to test dir
TEST12345 is already taken by dev builds
2022-06-02 23:19:34 +02:00
Megamouse 06e5b8a06a cellAudioOut: add stereo, 5.1 and 7.1 for covenience 2022-06-02 13:12:04 +02:00
Megamouse 94aef197dd cellAudioOut: switch to manual multi-selection of format as seen on PS3 2022-06-02 13:12:04 +02:00
Megamouse a86e7eeba0 cellAudioOut: Always add Linear PCM 2 Ch., also add 5.1 when 7.1 is selected 2022-06-02 13:12:04 +02:00
Megamouse 95a3ce68ce cellAudioOut: log all added sound modes 2022-06-02 13:12:04 +02:00
Megamouse 9ab1e69697 cellAudioOut: simplify sfo access and make it foolproof 2022-06-02 13:12:04 +02:00
Megamouse 4f03cf7e1e PSF: move resolution flags to enum 2022-06-02 13:12:04 +02:00
Megamouse 60d80fd5fc PSF: move sound format flags to enum 2022-06-02 13:12:04 +02:00
Megamouse 350d3ad386 cellAudioOut: fix AC3/DTS mixup 2022-06-02 13:12:04 +02:00
Megamouse d6065e8814 cellAudioOut: add sound modes even if they aren't supported 2022-06-02 13:12:04 +02:00
Megamouse 363808a57b cellAudioOut: simplify sound mode initialization 2022-06-02 13:12:04 +02:00
Megamouse 3402835c8e cellAudioOut: apply review fixes, add some comments 2022-06-02 13:12:04 +02:00
Megamouse 911d37e4d7 cellAudioOut: use 2 channel LPCM by default and also use it as fallback 2022-06-02 13:12:04 +02:00
Megamouse 72e1e242a3 cellAudio: use format instead of downmix 2022-06-02 13:12:04 +02:00
Megamouse c42ff338e7 cellAudioOutGetSoundAvailability: return channel count based on available sound modes 2022-06-02 13:12:04 +02:00
Megamouse 4f81fcd5cc cellAudioOutConfigure: move sound_modes to fxo, implement waitForEvent 2022-06-02 13:12:04 +02:00
Megamouse d47f1ef406 cellAudio: Implement application based downmix settings 2022-06-02 13:12:04 +02:00
Nekotekina 422246825b vm: workaround bigger native page size for 4k pages
Always allocate full memory block if native page size > 4k
2022-06-02 12:56:49 +03:00
Nekotekina b0ccd2a8a0 Implement utils::c_page_size (unused)
Query platform memory page size.
2022-06-02 12:56:49 +03:00
Nekotekina 76c72351a5 rsx_methods: fix warning 2022-06-02 12:56:49 +03:00
Megamouse 03df3c5293 cellAudioQuit: do not clear event queues
They seem to be handled independently.
2022-05-31 23:38:29 +02:00
RipleyTom dd31574b4f fix: changes execl to execv for compatibility with checkrt 2022-05-31 22:55:31 +02:00
kd-11 eb52ac55a7 gl: Fix AMD buffer decode 2022-05-31 23:34:14 +03:00
kd-11 d167582f6b gl: Implement on-chip buffer-to-d24x8 conversion 2022-05-31 23:34:14 +03:00
kd-11 dd6cb054a7 gl: Add missing viewport save 2022-05-31 23:34:14 +03:00
kd-11 b97557ce7b gl: Use DSA for compressed texture upload 2022-05-31 23:34:14 +03:00
kd-11 964fd1095e gl: Properly preserve texture state
- Remove rogue glBindTexture calls and use gl commandstate object instead
2022-05-31 23:34:14 +03:00
kd-11 fcc6c2384b Fix linux build 2022-05-31 23:34:14 +03:00
kd-11 a5d73f41b5 gl: Remove debug message 2022-05-31 23:34:14 +03:00
kd-11 1b305bf789 gl: Workaround for poor AMD OpenGL performance
- Turns out the AMD driver really hates it if you render with a mapped index buffer.
  The driver internally seems to make a copy of the consumed indices and uses that. Very slow.
  I was able to isolate this after observing that glDrawArrays is not entirely shit, but glDrawElements duration scaled linearly with the number of vertices.
2022-05-31 23:34:14 +03:00
kd-11 943752db30 gl: Compute optimizations
- Keep buffers around longer to allow driver heurestics to work
- Properly initialize the shaders to allow optimal workgroup dispatch size
2022-05-31 23:34:14 +03:00
kd-11 60a2a39e88 gl: Deswizzle textures on the GPU 2022-05-31 23:34:14 +03:00
kd-11 532563e861 gl: Update some more buffer-object functions 2022-05-31 23:34:14 +03:00
kd-11 3ee27bd434 gl: Optimize consumption of buffer objects when uploading textures 2022-05-31 23:34:14 +03:00
kd-11 55e68441cb gl: Commit to bindless framebuffer object management 2022-05-31 23:34:14 +03:00
kd-11 7ec481d99b rsx: Allocate scratch memory using simple array with no default initialize
- This cuts down processing time significantly by eliminating calls to memset_stosb
2022-05-31 23:34:14 +03:00
kd-11 129e947720 gl: Improve CS throughput
- Avoids making too many invocations, especially given the 1D nature of some GPU dispatch handlers
2022-05-31 23:34:14 +03:00
kd-11 e964060a6a gl: Handle texture binding using the global state tracker 2022-05-31 23:34:14 +03:00
kd-11 74696d2e44 gl: Commit to a consistent global state 2022-05-31 23:34:14 +03:00
kd-11 78746fdb6f gl: Commit to using DSA for internal buffer management
- Gets rid of spammy BindBuffer calls on every draw
2022-05-31 23:34:14 +03:00
kd-11 ed2068fb03 gl: Rewrite buffer mapping 2022-05-31 23:34:14 +03:00
kd-11 b61c4d3693 gl: Fix stat counters 2022-05-31 23:34:14 +03:00
kd-11 81b9952e34 gl: Do not allow cross-aspect bitcasts
- There is special handling for some cross-aspect bitcasts in vulkan, but this is not possible using OpenGL
2022-05-31 23:34:14 +03:00
brian2081 64958264c5 Fix issue #12137 2022-05-31 23:06:46 +03:00
Elad Ashkenazi bda52a51a7 Debugger: Show HEX view of floating-point PPU registers 2022-05-31 07:36:10 +02:00
Megamouse bab4136411 Qt: fix tooltips and widget states in settings 2022-05-30 23:38:16 +02:00
Darkhost1999 e4fe335e75 Qt: add vblank_ntsc_fixup to UI (#12042) 2022-05-30 20:17:43 +02:00
Darkhost1999 0a7ac4d42a Qt: Misc text updates (#12110) 2022-05-30 19:35:41 +02:00
Elad Ashkenazi 95233b5299 rsx: Fix deadlock in vm::_page_unmap 2022-05-30 11:53:34 +03:00
RipleyTom 8b6f68abcf fix: parsing bug in read_metadata 2022-05-29 22:36:30 +02:00
Malcolm Jestadt e9dfb3cb63 SPU LLVM: Fixup for inline MFC transfers
- Could previsouly segfault when src and dst were swapped. Just use unaligned instructions instead.
2022-05-29 19:08:36 +03:00
Vestral 5b0badc215 sys_rsxaudio: timer fix 2022-05-29 14:59:12 +02:00
Malcolm Jestadt 6f4398889e SPU LLVM: Optimize inline MFC transfers
- Use wider instructions when possible
2022-05-29 15:32:25 +03:00
Eladash dd4722fc1f rsx: Fix second VBLANK time
Turns out that both VBLANK time and flip time clock at 80Mhz which is MFTB rate, just that cellGcmGetLastFlipTime is missing conversion to microseconds, so odd.
2022-05-29 14:23:28 +02:00
Eladash eec27f0e89 Revert "rsx: Fix FLIP time"
This reverts commit 256eb17ae5.
2022-05-29 14:23:28 +02:00
RipleyTom baf51a2e2f fix: unset APPDIR before launching new appimage 2022-05-29 08:09:07 +02:00
Eladash 256eb17ae5 rsx: Fix FLIP time 2022-05-28 13:00:42 +02:00
Elad Ashkenazi 610d29dab0 rsx: Fix VBLANK time 2022-05-28 13:00:42 +02:00
Malcolm Jestadt 5ad4b6249e Update LLVM commit
- Contains a commit that makes AVX-512 code size smaller
2022-05-27 18:40:57 +03:00
RipleyTom aaef4a2d5b More verbose errors in nt_p2p_port 2022-05-27 08:56:39 +02:00
GooseWing 557bd3f438 gui/themes: Nekotekina by GooseWing (update) (#11588) 2022-05-27 08:15:58 +02:00
Eladash 27b28cf6ec sys_spu: Fix spu_thread_group_terminate deadlock 2022-05-26 18:04:52 +03:00
Jan Beich cc150cc2c6 build/cmake: unbreak USE_SYSTEM_FLATBUFFERS after bec0b6e8c3
-- Checking for module 'flatbuffers>=2.0.0'
--   Found flatbuffers, version 2.0.6
CMake Error at 3rdparty/CMakeLists.txt:24 (message):
  Flatbuffers flatc execute failed with: ''
2022-05-26 09:32:52 +02:00
Megamouse 345bda69ec Overlays: Add screenshot message to queue 2022-05-26 08:52:12 +02:00
Gabriel Costa 478b6b53a9 Add base-devel to Arch Linux in Building.md 2022-05-26 08:01:39 +02:00
Eladash a9a1204ab9 sys_rsx: Full reset of flip semaphore 2022-05-25 17:36:28 +03:00
Eladash e7ced1aeab Debugger: Implement SPU mailbox content display 2022-05-25 17:36:28 +03:00
Eladash 56f95934f5 Fix cellVdec regression to be harmonized with the new interrupts model 2022-05-25 17:36:28 +03:00
Megamouse 88ee62be26 cellAdec: fix uninitialized default size of AVPacketHolder (#12077) 2022-05-25 11:40:51 +02:00
Eladash 961d41d0bd RawSPU: Reinvoke pending interrupts if missed 2022-05-25 11:46:51 +03:00
kd-11 9c824aa0b5 vk: Enable event scope hack for INTEL proprietary drivers 2022-05-24 20:11:31 +03:00
kd-11 efff2a78c8 vk: Restructure how the conditional render evaluation is done (#12071)
Fixes conditional render fast-path
2022-05-24 11:11:21 +03:00
Vestral 608f823516 sys_rsxaudio: Add id to kernel explorer and some fixes 2022-05-23 13:10:46 +02:00
RipleyTom e68ffdbc81 Add a message overlay 2022-05-23 08:38:02 +02:00
RipleyTom 3dc9a8b980 fix lv2_socket_native::accept 2022-05-23 07:36:51 +02:00
RipleyTom bec0b6e8c3 Add regeneration for system flatbuffers users 2022-05-22 23:43:04 +02:00
RipleyTom 8c01612851 Warn about LTO and adds an option to remove LTO flags 2022-05-22 23:03:20 +02:00
MSuih b0e5db0eb0 Limit range of wake-up delay slider + adjust tooltip 2022-05-22 22:32:19 +02:00
kd-11 7c8fbc35bc rsx: Move PS3-compliant behavior to a new option 2022-05-21 16:35:35 +03:00
kd-11 b637429e44 Fix display flickering 2022-05-21 16:35:35 +03:00
kd-11 d52bb78d2c rsx: Trivial non-blocking display synchronization 2022-05-21 16:35:35 +03:00
Eladash 1be36fe6a9 Remove all HDD0's temporary game data created by cellGame at boot 2022-05-21 10:57:12 +03:00
Eladash 1088375b38 Wipe clean VSH's temporary directory of choice at boot 2022-05-21 10:57:12 +03:00
Eladash 285322982f Do not dare to touch HDD1 cache during game process respawn! 2022-05-21 10:57:12 +03:00
kd-11 4e6be9172a rsx: Asynchronously flush the pipelines when handing ZCULL memory access violations 2022-05-21 10:06:32 +03:00
kd-11 0e1333ed5f rsx: Deadlock avoidance of accurate RSX reservations 2022-05-21 10:06:32 +03:00
Eladash cd74fb6a6d rsx: Implement HW accurate frame limiter 2022-05-20 22:40:48 +02:00
kd-11 ec2d529832 rsx: Separate loop interrupts from graphics state
- The interrupts are for multithreaded signals andmake the main loop run more aggressively for the next cycle
2022-05-20 16:29:27 +03:00
kd-11 257556bbf5 rsx: Add eng lock before flagging memory unmap
- This is much better than polling on atomics every cycle for something that happens a few times during gameplay
2022-05-20 16:29:27 +03:00
kd-11 93d93b4805 rsx: Fix typo 2022-05-20 16:29:27 +03:00
kd-11 e368453751 rsx: Rework loop interrupts a bit
- Reset backend interrupt in core handler
- Separate memory config interrupt from regular backend interrupt
2022-05-20 16:29:27 +03:00
kd-11 d0dc095c84 rsx: Silence some log spam 2022-05-20 16:29:27 +03:00
kd-11 360fdca5ac vk: Avoid multimap when handling image views 2022-05-20 16:29:27 +03:00
kd-11 e1b95913ea rsx/zcull: Improve deadlock avoidance
- Do not acquire eng lock while holding the page lock
  RSXThread may be waiting on the page lock and will never ack the pause request
2022-05-20 16:29:27 +03:00
kd-11 a3ea9e2985 rsx/zcull: Less aggressive disabling of optimizations 2022-05-20 16:29:27 +03:00
kd-11 e9bf3e13d0 rsx/zcull: Pause the main thread before flushing reports 2022-05-20 16:29:27 +03:00
kd-11 9e02471ded Fix VS 2022-05-20 16:29:27 +03:00
kd-11 094fda0e73 Crash fix 2022-05-20 16:29:27 +03:00
kd-11 d2de560060 rsx: Improve sync_hint callback interface 2022-05-20 16:29:27 +03:00
kd-11 5315eb546f rsx: Stop spamming ZCULL update method
- This has a negative impact when ZCULL is active due to spamming __rdtsc
- While the method is fast, it is not free and some checks are done before the instruction can be emitted
  Let's use the saved time to actually get something useful done
2022-05-20 16:29:27 +03:00
kd-11 7fa521a046 rsx/vk: Redesign how conditional rendering hints work
- Pass a sync address to the backend
- Ignore the hint if the query is running in lazy mode
- Do not submit CBs too close to each other. Submits are expensive
2022-05-20 16:29:27 +03:00
kd-11 0244c4046e rsx: Lower performance hit due to frequency fetch 2022-05-20 16:29:27 +03:00
kd-11 7e8c93bea2 Random optimization 2022-05-20 16:29:27 +03:00
kd-11 8cd7a44a25 gcm: Force HLE of cellGcmGetTimestamp
- This is the only way to know if a report is being used for ZCULL or timestamps only.
  If the game is not reading the ZCULL data, the access guards will detect it and optimize usage around that.
2022-05-20 16:29:27 +03:00
kd-11 9a1e6cc3e8 rsx: Implement RSX reports area access detection and optimize around it
- If nobody is reading RSX reports, do not be in a hurry to write them
- Requires HLE of some methods (cellGcmGetTimestamp) to function correctly
2022-05-20 16:29:27 +03:00
kd-11 34220ec447 lv2: Make some struct declarations uniform 2022-05-20 16:29:27 +03:00
kd-11 f0135a02f5 vk: Unconditionally enable hw acceleration for conditional evaluation 2022-05-20 16:29:27 +03:00
kd-11 0b7e013fbe rsx: Simplify ZCULL logic a bit 2022-05-20 16:29:27 +03:00
kd-11 850eef0c1a rsx: Move ZCULL logic to its own file
- It's over 1k lines of code in its own namespace; it really should be in its own file
2022-05-20 16:29:27 +03:00
Elad Ashkenazi 5a581f46df Add a constraint about vm area approx matching 2022-05-19 21:29:18 +03:00
Eladash b334621d76 PPU DisAssembler: Prevent false function descriptor detection 2022-05-19 21:29:18 +03:00
Elad Ashkenazi a768855a7a Update PPUThread.cpp 2022-05-19 18:16:53 +03:00
Eladash 7ddeb0d00f Implement sys_process_exit3 2022-05-19 13:59:52 +03:00
Eladash 2ba437b6dc SPU: Implement timer freezing ability 2022-05-14 22:03:47 +03:00
Eladash f2920bc30d Debugger: Fix instruction "pop-in" when resizing
Display incomplete elements.
2022-05-14 10:46:07 +02:00
Eladash d043f46270 Fix recursion in the debugger 2022-05-14 10:46:07 +02:00
Megamouse 1e1b111678 sceNp: register custom menu 2022-05-13 21:52:14 +02:00
Eladash 1f5ce4f619 Loader: Fix out-of-bounds access of string
There was no need to manually align size, it only creates a bug with memcpy usage.
2022-05-13 19:53:48 +03:00
Eladash 524da5dc54 LV2: Memory state post-exitspawn fixes
* Fix memory capacity if SDK version of the following executable differs from the original process'.
* Keep user memory containers, they are not freed at exitspawn!

Hw test https://github.com/elad335/myps3tests/commit/4bf60023ee3779a221da968732fc622b85266c5b
2022-05-13 13:15:07 +03:00
Eladash a2a6303a22 PPU LLVM: Precompile system-internal executables if booting a dev_flash's program 2022-05-12 19:55:07 +03:00
Eladash 6805d8c7e0 SPU: Fix race on SPU Mailbox last value reading 2022-05-12 13:44:12 +03:00
Megamouse 5ae9de4e3b CLI: add decrypt option 2022-05-11 21:13:20 +02:00
RipleyTom 2f9b930c6b Fix for ticket parsing 2022-05-11 19:03:54 +02:00
Nekotekina e243ef5907 PPU: implement accurate FRES
Implemented with an accurate lookup table.
2022-05-11 10:46:08 +03:00
doesthisusername 7b162c7513 PPU: implement quasi-accurate FRSQRTE
Denormals are handled like zeros.
NaN handling is inaccurate in some cases.

Co-authored-by: Nekotekina <nekotekina@gmail.com>
2022-05-11 10:46:08 +03:00
JoãoPaulo 5b8f105308 Update FW 4.89 Latest Version
Updates the latest FW version according to: https://www.playstation.com/en-us/support/hardware/ps3/system-software/
List of changes:
Version 4.89
Signing in to PlayStation Network now requires a device password for enhanced account protection.
Account creation for PlayStation Network and some account management features are no longer available on the console. Use your PC or mobile browser to use account management features with improved performance, speed, and safety.
2022-05-11 00:17:01 +02:00
NicknineTheEagle 1df47352cc Implemented sceNpDrmGetTimelimit 2022-05-10 23:24:00 +02:00
NicknineTheEagle e4225cbab8 Fixed duplicate prefix in SELF log 2022-05-10 23:24:00 +02:00
NicknineTheEagle 83ca7654b1 Return NPD header in verify_npdrm_self_headers and VerifyEDATHeaderWithKLicense 2022-05-10 23:24:00 +02:00
NicknineTheEagle 8065dbc2e7 Unified NPD header in unedat.h 2022-05-10 23:24:00 +02:00
Eladash d03fcad9bd cellAudio: Some bugfixes
* Reading position storage is 16 bytes aligned according to hw test.
* Fix cellAudioGetPortConfig portSize reporting, now matches PS3.
* Remove ghost code about unearthly 6 channels cellAudio port mode.
2022-05-10 22:39:34 +02:00
Megamouse e494fc04e5 sceNp: add some constants 2022-05-10 21:55:35 +02:00
Eladash d77c9139ad Debugger: Show constant-formed attribute of register value 2022-05-10 22:34:29 +03:00
RipleyTom 4479d99a9a Implement sceNpManagerGetTicketParam 2022-05-10 21:04:15 +02:00
Megamouse 072c289f5e Qt: add new vfs usb tab 2022-05-10 19:39:35 +02:00
Megamouse a538f655be sys_fs_fcntl: hook up usb device info 2022-05-10 19:39:35 +02:00
Megamouse b888a6ba37 VFS: Add device_info to vfs config 2022-05-10 19:39:35 +02:00
Eladash de988f6a76 MSELF extractor: Ensure the files' dwellings 2022-05-10 09:58:59 +03:00
Megamouse 2b325de680 Workaround: Force audio provider
This hides the audio_provider box in the settings and forces the proper provider based on boot path.
Stop-gap solution until we decided what to do with vsh settings.
2022-05-08 02:08:20 +02:00
Megamouse d83fac4247 cellAudio: fix timestamp exception 2022-05-08 02:08:20 +02:00
Nekotekina 0a5ea859ea atomic.cpp: fix race in cond_id_lock() 2022-05-07 21:25:38 +03:00
Megamouse 9a93b150f0 input: properly log hid_error (strfmt wchar_t) 2022-05-07 17:12:31 +02:00
Megamouse 5476b9098e cellHttp: add more errors 2022-05-07 14:46:57 +02:00
Megamouse e5a75cfd1c sceNpTrophyGetTrophyUnlockState: handle read_only 2022-05-07 13:58:05 +02:00
Megamouse 1f745c4588 sceNpTrophyRegisterContext: add read_only check 2022-05-07 13:58:05 +02:00
Megamouse 6c7f49d563 sceNpTrophy: don't use TROPHY.TRP in CreateContext 2022-05-07 13:58:05 +02:00
Megamouse dae51a4a2b sceNpTrophy: remove confirmed comment 2022-05-07 13:58:05 +02:00
Megamouse d113324a90 sceNpTrophyRegisterContext: handle SHOW_ERROR_EXIT 2022-05-07 13:58:05 +02:00
Eladash 1cab99b3ca Make CPU Profiler able to print stats which sum up the records of all SPU threads
Hitherto the statistics have been exclusively thread-specific.

Other improvements:
* Fixed container management so a collision of a new element with an older element of the record will become impossible.
* Added thread name to thread-specific information printing.
* Fixed condition to abort SPU block statistics collection, now matches SPU LLVM Profiler's.
* Fix possible division by 0 by checking `samples`.
2022-05-07 12:57:54 +03:00
Nekotekina f7d08d3371 ELF: fix sh_flag bitset enum 2022-05-06 15:44:29 +03:00
RipleyTom 02d22dca95 Add Top Shot Elite controllers to whitelist 2022-05-05 22:33:50 +02:00
Megamouse 7764cb2b80 Qt: disable mouse movement mode groupbox 2022-05-05 21:39:12 +02:00
Eladash be5f8413ca Avoid using PUTLLC in PUTLLUC if we know SPU LR has already been raised (#11940) 2022-05-05 22:15:08 +03:00
RipleyTom ce48d880d9 Fix for device2host control transfers 2022-05-05 19:24:01 +02:00
RipleyTom 8d950620b7 dnshook: add asterisk support 2022-05-05 18:49:39 +02:00
Nekotekina 10b33d0f79 SPU: optimize conflicting PUTLLUC (No-TSX)
Enable previously TSX-only optimization.
2022-05-05 19:16:16 +03:00
Megamouse 2706486559 input: add absolute mouse movement mode 2022-05-05 16:50:39 +02:00
Vestrel d1e468fefb sys_rsxaudio: Initial implementation (#11907) 2022-05-05 15:47:44 +02:00
RipleyTom 0ac90ac395 sys_net: ensures return from raw socket calls 2022-05-05 14:37:54 +02:00
Megamouse fef779feca cellRec: fix pOpt pointer type 2022-05-05 12:23:12 +02:00
Megamouse ced890301c cellRec: fix some warning 2022-05-05 12:23:12 +02:00
Megamouse 7d73d90c1a cellGameExec: fix warnings 2022-05-05 12:23:12 +02:00
Darkhost1999 4e40260f1f Add Force_Disable_Exclusive_Fullscreen_Mode to UI (#11923) 2022-05-05 11:19:03 +02:00
Eladash 3aebb8cb41 Tentative fix for unreadable ELF sections without flags 2022-05-05 07:33:07 +03:00
Eladash fcbeb2fa22 Remove slow vm::writer_lock usage from SPUThread.cpp 2022-05-04 23:36:57 +03:00
Eladash 7a3cbf1876 Fix Emulator::argv state after failed PS3 exitspawn 2022-05-04 23:36:57 +03:00
Eladash 3dda72e47f SPU: Cache reservation memory direct access handle (optimization) 2022-05-04 20:28:55 +03:00
Nekotekina 1458349cb3 Update commits.lst 2022-05-04 16:12:32 +03:00
Nekotekina a2bfd5fcfc Minor AArch64 support changes 2022-05-04 16:12:32 +03:00
Nekotekina 6501374a34 Add supporters 2022-05-04 16:12:32 +03:00
Eladash 63669000ab PPU Loader Fix removing writablity permission for RSX/SPU writable segments 2022-05-04 12:03:10 +03:00
Eladash f9a62667cf SPU/PPU Loader: Implement linker/PS3 compiler executable files loading 2022-05-03 20:47:36 +03:00
Megamouse 6cc1466baa halfplement cellRec 2022-05-03 18:19:31 +02:00
Megamouse bcd77ac65e halfplement cellVideoExport 2022-05-03 18:19:31 +02:00
Nekotekina 0786a0a088 PPU LLVM: match interpreter for VEXPTEFP/VLOGEFP 2022-05-03 08:27:44 +03:00
Eladash c14e79f8df Debugger: Fix instruction selection 2022-05-02 17:01:02 +03:00
Eladash 8cc6a30557 Debugger: Fix instruction pointer for good 2022-05-02 17:01:02 +03:00
Nekotekina 5c1f79ab26 vm: remove g_mutex, use g_range_lock instead
Simplification and performance improvements.
2022-05-02 10:29:28 +03:00
751 changed files with 69736 additions and 20427 deletions
+5 -3
View File
@@ -7,11 +7,12 @@ git submodule -q update --init --depth 1 $(awk '/path/ && !/llvm/ { print $3 }'
# Prefer newer Clang than in base system (see also .ci/install-freebsd.sh)
# libc++ isn't in llvm* packages, so download manually
fetch https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-13.0.1-rc1.tar.gz
tar xf llvm*.tar.gz
export CC=clang13 CXX=clang++13
fetch https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.6/llvm-project-15.0.6.src.tar.xz
tar xf llvm*.tar.xz
export CC=clang15 CXX=clang++15
cmake -B libcxx_build -G Ninja -S llvm*/libcxx \
-DLLVM_CCACHE_BUILD=ON \
-DLIBCXX_INCLUDE_BENCHMARKS=OFF \
-DCMAKE_INSTALL_PREFIX:PATH=libcxx_prefix
cmake --build libcxx_build
cmake --install libcxx_build
@@ -20,6 +21,7 @@ export LDFLAGS="$LDFLAGS -nostdlib++ -L$PWD/libcxx_prefix/lib -l:libc++.a -lcxxr
CONFIGURE_ARGS="
-DWITH_LLVM=OFF
-DUSE_SDL=OFF
-DUSE_PRECOMPILED_HEADERS=OFF
-DUSE_NATIVE_INSTRUCTIONS=OFF
-DUSE_SYSTEM_FFMPEG=ON
+12 -11
View File
@@ -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}"
@@ -51,6 +51,7 @@ cmake .. \
-DCMAKE_AR="$AR" \
-DCMAKE_RANLIB="$RANLIB" \
-DUSE_SYSTEM_CURL=ON \
-DUSE_SDL=OFF \
-DOpenGL_GL_PREFERENCE=LEGACY \
-G Ninja
+4 -4
View File
@@ -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
@@ -19,7 +19,7 @@ sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVer
mkdir build && cd build || exit 1
cmake .. \
-DUSE_DISCORD_RPC=OFF -DUSE_VULKAN=ON -DUSE_ALSA=OFF -DUSE_PULSE=OFF -DUSE_AUDIOUNIT=ON \
-DUSE_SDL=ON -DUSE_DISCORD_RPC=OFF -DUSE_VULKAN=ON -DUSE_ALSA=OFF -DUSE_PULSE=OFF -DUSE_AUDIOUNIT=ON \
-DLLVM_CCACHE_BUILD=OFF -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF \
-DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF \
-DLLVM_INCLUDE_UTILS=OFF -DLLVM_USE_PERF=OFF -DLLVM_ENABLE_Z3_SOLVER=OFF \
+1 -1
View File
@@ -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
View File
@@ -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/c++/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" \
+1 -1
View File
@@ -9,7 +9,7 @@ export ASSUME_ALWAYS_YES=true
pkg info # debug
# Prefer newer Clang than in base system (see also .ci/build-freebsd.sh)
pkg install llvm13
pkg install llvm15
# Mandatory dependencies (qt5-dbus and qt5-gui are pulled via qt5-widgets)
pkg install git ccache cmake ninja qt5-qmake qt5-buildtools qt5-widgets qt5-concurrent qt5-multimedia qt5-svg glew openal-soft ffmpeg
+1 -1
View File
@@ -21,7 +21,7 @@ QT_MM_URL="${QT_HOST}${QT_PREFIX}qtmultimedia${QT_SUFFIX}"
QT_SVG_URL="${QT_HOST}${QT_PREFIX}qtsvg${QT_SUFFIX}"
LLVMLIBS_URL='https://github.com/RPCS3/llvm-mirror/releases/download/custom-build-win/llvmlibs_mt.7z'
GLSLANG_URL='https://github.com/RPCS3/glslang/releases/download/custom-build-win/glslanglibs_mt.7z'
VULKAN_SDK_URL="https://www.dropbox.com/s/o918fc11pfk8x9c/VulkanSDK-${VULKAN_VER}-Installer.exe"
VULKAN_SDK_URL="https://www.dropbox.com/s/cs77c3iv5mbo0bt/VulkanSDK-${VULKAN_VER}-Installer.exe"
DEP_URLS=" \
$QT_BASE_URL \
+4 -4
View File
@@ -23,8 +23,8 @@ windows_task:
QT_VER_MSVC: 'msvc2019'
QT_DATE: '202011130602'
QTDIR: C:\Qt\${QT_VER}\${QT_VER_MSVC}_64
VULKAN_VER: '1.3.204.0'
VULKAN_SDK_SHA: '41f4996335cc5a545d7b2f6e5ff29cf3867789aae4be053a7069aa93408861fa'
VULKAN_VER: '1.3.224.1'
VULKAN_SDK_SHA: '2029e652e39ee6a6036cff3765da31e1e6c595fd2413d3cd111dfab7855621ea'
VULKAN_SDK: C:\VulkanSDK\${VULKAN_VER}
CACHE_DIR: "./cache"
UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e
@@ -61,7 +61,7 @@ windows_task:
linux_task:
container:
image: rpcs3/rpcs3-ci-bionic:1.3
image: rpcs3/rpcs3-ci-bionic:1.6
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 -1
View File
@@ -21,7 +21,7 @@ Cpp11BracedListStyle: true
IndentCaseLabels: false
SortIncludes: false
ReflowComments: true
AlignConsecutiveAssignments: true
AlignConsecutiveAssignments: false
AlignTrailingComments: true
AlignAfterOpenBracket: DontAlign
ConstructorInitializerAllOnOneLineOrOnePerLine: false
@@ -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)
![image](https://user-images.githubusercontent.com/44116740/84433247-aa15fa80-ac36-11ea-913e-6fe25a1d040e.png)
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
-59
View File
@@ -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)
![image](https://user-images.githubusercontent.com/44116740/84433247-aa15fa80-ac36-11ea-913e-6fe25a1d040e.png)
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
+78
View File
@@ -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.
+14
View File
@@ -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.
+3
View File
@@ -45,6 +45,9 @@
!/bin/soft_oal.dll
!/bin/xaudio2_9redist.dll
# Test Programs
!/bin/test/
# Themes
!/bin/GuiConfigs/
/bin/GuiConfigs/*.ini
+4
View File
@@ -76,3 +76,7 @@
path = 3rdparty/SoundTouch/soundtouch
url = ../../RPCS3/soundtouch.git
ignore = dirty
[submodule "3rdparty/libsdl-org/SDL"]
path = 3rdparty/libsdl-org/SDL
url = https://github.com/libsdl-org/SDL.git
ignore = dirty
+9 -5
View File
@@ -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
+5 -5
View File
@@ -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
+10 -7
View File
@@ -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
+6 -2
View File
@@ -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()
{
+4 -7
View File
@@ -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);
+30 -2
View File
@@ -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()
@@ -160,10 +165,10 @@ if(USE_VULKAN)
message("-- RPCS3: MoltenVK submodule")
execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK"
)
execute_process(COMMAND "${CMAKE_COMMAND}" --build .
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK"
)
add_library(moltenvk_lib SHARED IMPORTED)
@@ -324,6 +329,28 @@ add_subdirectory(wolfssl EXCLUDE_FROM_ALL)
# CURL
add_subdirectory(curl EXCLUDE_FROM_ALL)
# SDL2
set(SDL2_TARGET 3rdparty_dummy_lib)
if(USE_SDL)
if(USE_SYSTEM_SDL)
find_package(SDL2)
if(SDL2_FOUND AND NOT SDL2_VERSION VERSION_LESS 2.24.0)
message(STATUS "Using system SDL2")
add_library(3rdparty_sdl2 INTERFACE)
target_compile_definitions(3rdparty_sdl2 INTERFACE -DHAVE_SDL2=1)
set(SDL2_TARGET 3rdparty_sdl2)
else()
message(FATAL_ERROR "SDL2 is not available on this system")
endif()
else()
message(STATUS "Using static SDL2 from 3rdparty")
add_library(3rdparty_sdl2 INTERFACE)
target_compile_definitions(3rdparty_sdl2 INTERFACE -DHAVE_SDL2=1)
add_subdirectory(libsdl-org EXCLUDE_FROM_ALL)
set(SDL2_TARGET 3rdparty_sdl2)
endif()
endif()
# add nice ALIAS targets for ease of use
if(USE_SYSTEM_LIBUSB)
add_library(3rdparty::libusb ALIAS usb-1.0-shared)
@@ -350,3 +377,4 @@ add_library(3rdparty::glew ALIAS 3rdparty_glew)
add_library(3rdparty::wolfssl ALIAS wolfssl)
add_library(3rdparty::libcurl ALIAS libcurl)
add_library(3rdparty::soundtouch ALIAS soundtouch)
add_library(3rdparty::sdl2 ALIAS ${SDL2_TARGET})
+24 -3
View File
@@ -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
+36 -2
View File
@@ -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
+18 -18
View File
@@ -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);
+2 -3
View File
@@ -4,12 +4,11 @@ include(ExternalProject)
ExternalProject_Add(moltenvk
GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git
GIT_TAG 1236d2f
GIT_TAG a307b24
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"
-7
View File
@@ -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
+9 -9
View File
@@ -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>
+2
View File
@@ -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
File diff suppressed because it is too large Load Diff
Binary file not shown.
+5 -3
View File
@@ -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
View File
@@ -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>
+2 -2
View File
@@ -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
+1
View File
@@ -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)
+16 -7
View File
@@ -66,12 +66,12 @@
<ClCompile Include="curl\lib\base64.c" />
<ClCompile Include="curl\lib\bufref.c" />
<ClCompile Include="curl\lib\c-hyper.c" />
<ClCompile Include="curl\lib\cfilters.c" />
<ClCompile Include="curl\lib\conncache.c" />
<ClCompile Include="curl\lib\connect.c" />
<ClCompile Include="curl\lib\content_encoding.c" />
<ClCompile Include="curl\lib\cookie.c" />
<ClCompile Include="curl\lib\curl_addrinfo.c" />
<ClCompile Include="curl\lib\curl_ctype.c" />
<ClCompile Include="curl\lib\curl_des.c" />
<ClCompile Include="curl\lib\curl_endian.c" />
<ClCompile Include="curl\lib\curl_fnmatch.c" />
@@ -90,7 +90,6 @@
<ClCompile Include="curl\lib\curl_threads.c" />
<ClCompile Include="curl\lib\dict.c" />
<ClCompile Include="curl\lib\doh.c" />
<ClCompile Include="curl\lib\dotdot.c" />
<ClCompile Include="curl\lib\dynbuf.c" />
<ClCompile Include="curl\lib\easy.c" />
<ClCompile Include="curl\lib\easygetopt.c" />
@@ -98,6 +97,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 +106,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" />
@@ -121,7 +122,7 @@
<ClCompile Include="curl\lib\http_negotiate.c" />
<ClCompile Include="curl\lib\http_ntlm.c" />
<ClCompile Include="curl\lib\http_proxy.c" />
<ClCompile Include="curl\lib\idn_win32.c" />
<ClCompile Include="curl\lib\idn.c" />
<ClCompile Include="curl\lib\if2ip.c" />
<ClCompile Include="curl\lib\imap.c" />
<ClCompile Include="curl\lib\inet_ntop.c" />
@@ -138,6 +139,7 @@
<ClCompile Include="curl\lib\multi.c" />
<ClCompile Include="curl\lib\netrc.c" />
<ClCompile Include="curl\lib\nonblock.c" />
<ClCompile Include="curl\lib\noproxy.c" />
<ClCompile Include="curl\lib\openldap.c" />
<ClCompile Include="curl\lib\parsedate.c" />
<ClCompile Include="curl\lib\pingpong.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" />
@@ -212,6 +215,7 @@
<ClCompile Include="curl\lib\vtls\sectransp.c" />
<ClCompile Include="curl\lib\vtls\vtls.c" />
<ClCompile Include="curl\lib\vtls\wolfssl.c" />
<ClCompile Include="curl\lib\ws.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="curl\include\curl\curl.h" />
@@ -229,15 +233,13 @@
<ClInclude Include="curl\lib\asyn.h" />
<ClInclude Include="curl\lib\bufref.h" />
<ClInclude Include="curl\lib\c-hyper.h" />
<ClInclude Include="curl\lib\cfilters.h" />
<ClInclude Include="curl\lib\config-amigaos.h" />
<ClInclude Include="curl\lib\config-dos.h" />
<ClInclude Include="curl\lib\config-mac.h" />
<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 +271,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,16 +282,20 @@
<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" />
<ClInclude Include="curl\lib\functypes.h" />
<ClInclude Include="curl\lib\getinfo.h" />
<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" />
@@ -301,6 +306,7 @@
<ClInclude Include="curl\lib\http_negotiate.h" />
<ClInclude Include="curl\lib\http_ntlm.h" />
<ClInclude Include="curl\lib\http_proxy.h" />
<ClInclude Include="curl\lib\idn.h" />
<ClInclude Include="curl\lib\if2ip.h" />
<ClInclude Include="curl\lib\imap.h" />
<ClInclude Include="curl\lib\inet_ntop.h" />
@@ -313,6 +319,7 @@
<ClInclude Include="curl\lib\multiif.h" />
<ClInclude Include="curl\lib\netrc.h" />
<ClInclude Include="curl\lib\nonblock.h" />
<ClInclude Include="curl\lib\noproxy.h" />
<ClInclude Include="curl\lib\parsedate.h" />
<ClInclude Include="curl\lib\pingpong.h" />
<ClInclude Include="curl\lib\pop3.h" />
@@ -346,6 +353,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" />
@@ -377,6 +385,7 @@
<ClInclude Include="curl\lib\vtls\sectransp.h" />
<ClInclude Include="curl\lib\vtls\vtls.h" />
<ClInclude Include="curl\lib\vtls\wolfssl.h" />
<ClInclude Include="curl\lib\ws.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="curl\lib\libcurl.rc" />
+48 -21
View File
@@ -48,9 +48,6 @@
<ClCompile Include="curl\lib\curl_addrinfo.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curl_ctype.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\curl_des.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -105,9 +102,6 @@
<ClCompile Include="curl\lib\doh.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\dotdot.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\easy.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -180,9 +174,6 @@
<ClCompile Include="curl\lib\http_proxy.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\idn_win32.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\if2ip.c">
<Filter>Source Files</Filter>
</ClCompile>
@@ -474,6 +465,27 @@
<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>
<ClCompile Include="curl\lib\noproxy.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\ws.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\cfilters.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="curl\lib\idn.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="curl\include\curl\curl.h">
@@ -536,15 +548,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 +638,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 +965,33 @@
<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>
<ClInclude Include="curl\lib\functypes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\noproxy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\ws.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\cfilters.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="curl\lib\idn.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="curl\lib\libcurl.rc">
+7 -7
View File
@@ -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>
+11
View File
@@ -0,0 +1,11 @@
option(SDL2_DISABLE_SDL2MAIN "" ON)
option(SDL2_DISABLE_INSTALL "" ON)
option(SDL2_DISABLE_UNINSTALL "" ON)
set(SDL_SHARED OFF)
set(SDL_SHARED_ENABLED_BY_DEFAULT OFF)
set(SDL_STATIC ON)
set(SDL_STATIC_ENABLED_BY_DEFAULT ON)
set(SDL_TEST OFF)
set(SDL_TEST_ENABLED_BY_DEFAULT OFF)
set(OPT_DEF_LIBC ON)
add_subdirectory(SDL EXCLUDE_FROM_ALL)
Vendored Submodule
+1
Submodule 3rdparty/libsdl-org/SDL added at f070c83a60
+461
View File
@@ -0,0 +1,461 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClInclude Include="SDL\include\begin_code.h" />
<ClInclude Include="SDL\include\close_code.h" />
<ClInclude Include="SDL\include\SDL.h" />
<ClInclude Include="SDL\include\SDL_assert.h" />
<ClInclude Include="SDL\include\SDL_atomic.h" />
<ClInclude Include="SDL\include\SDL_audio.h" />
<ClInclude Include="SDL\include\SDL_bits.h" />
<ClInclude Include="SDL\include\SDL_blendmode.h" />
<ClInclude Include="SDL\include\SDL_clipboard.h" />
<ClInclude Include="SDL\include\SDL_config.h" />
<ClInclude Include="SDL\include\SDL_config_windows.h" />
<ClInclude Include="SDL\include\SDL_copying.h" />
<ClInclude Include="SDL\include\SDL_cpuinfo.h" />
<ClInclude Include="SDL\include\SDL_egl.h" />
<ClInclude Include="SDL\include\SDL_endian.h" />
<ClInclude Include="SDL\include\SDL_error.h" />
<ClInclude Include="SDL\include\SDL_events.h" />
<ClInclude Include="SDL\include\SDL_filesystem.h" />
<ClInclude Include="SDL\include\SDL_gamecontroller.h" />
<ClInclude Include="SDL\include\SDL_gesture.h" />
<ClInclude Include="SDL\include\SDL_guid.h" />
<ClInclude Include="SDL\include\SDL_haptic.h" />
<ClInclude Include="SDL\include\SDL_hints.h" />
<ClInclude Include="SDL\include\SDL_hidapi.h" />
<ClInclude Include="SDL\include\SDL_joystick.h" />
<ClInclude Include="SDL\include\SDL_keyboard.h" />
<ClInclude Include="SDL\include\SDL_keycode.h" />
<ClInclude Include="SDL\include\SDL_loadso.h" />
<ClInclude Include="SDL\include\SDL_locale.h" />
<ClInclude Include="SDL\include\SDL_log.h" />
<ClInclude Include="SDL\include\SDL_main.h" />
<ClInclude Include="SDL\include\SDL_messagebox.h" />
<ClInclude Include="SDL\include\SDL_metal.h" />
<ClInclude Include="SDL\include\SDL_misc.h" />
<ClInclude Include="SDL\include\SDL_mouse.h" />
<ClInclude Include="SDL\include\SDL_mutex.h" />
<ClInclude Include="SDL\include\SDL_name.h" />
<ClInclude Include="SDL\include\SDL_opengl.h" />
<ClInclude Include="SDL\include\SDL_opengl_glext.h" />
<ClInclude Include="SDL\include\SDL_opengles.h" />
<ClInclude Include="SDL\include\SDL_opengles2.h" />
<ClInclude Include="SDL\include\SDL_opengles2_gl2.h" />
<ClInclude Include="SDL\include\SDL_opengles2_gl2ext.h" />
<ClInclude Include="SDL\include\SDL_opengles2_gl2platform.h" />
<ClInclude Include="SDL\include\SDL_opengles2_khrplatform.h" />
<ClInclude Include="SDL\include\SDL_pixels.h" />
<ClInclude Include="SDL\include\SDL_platform.h" />
<ClInclude Include="SDL\include\SDL_power.h" />
<ClInclude Include="SDL\include\SDL_quit.h" />
<ClInclude Include="SDL\include\SDL_rect.h" />
<ClInclude Include="SDL\include\SDL_render.h" />
<ClInclude Include="SDL\include\SDL_revision.h" />
<ClInclude Include="SDL\include\SDL_rwops.h" />
<ClInclude Include="SDL\include\SDL_scancode.h" />
<ClInclude Include="SDL\include\SDL_sensor.h" />
<ClInclude Include="SDL\include\SDL_shape.h" />
<ClInclude Include="SDL\include\SDL_stdinc.h" />
<ClInclude Include="SDL\include\SDL_surface.h" />
<ClInclude Include="SDL\include\SDL_system.h" />
<ClInclude Include="SDL\include\SDL_syswm.h" />
<ClInclude Include="SDL\include\SDL_test.h" />
<ClInclude Include="SDL\include\SDL_test_assert.h" />
<ClInclude Include="SDL\include\SDL_test_common.h" />
<ClInclude Include="SDL\include\SDL_test_compare.h" />
<ClInclude Include="SDL\include\SDL_test_crc32.h" />
<ClInclude Include="SDL\include\SDL_test_font.h" />
<ClInclude Include="SDL\include\SDL_test_fuzzer.h" />
<ClInclude Include="SDL\include\SDL_test_harness.h" />
<ClInclude Include="SDL\include\SDL_test_images.h" />
<ClInclude Include="SDL\include\SDL_test_log.h" />
<ClInclude Include="SDL\include\SDL_test_md5.h" />
<ClInclude Include="SDL\include\SDL_test_memory.h" />
<ClInclude Include="SDL\include\SDL_test_random.h" />
<ClInclude Include="SDL\include\SDL_thread.h" />
<ClInclude Include="SDL\include\SDL_timer.h" />
<ClInclude Include="SDL\include\SDL_touch.h" />
<ClInclude Include="SDL\include\SDL_types.h" />
<ClInclude Include="SDL\include\SDL_version.h" />
<ClInclude Include="SDL\include\SDL_video.h" />
<ClInclude Include="SDL\include\SDL_vulkan.h" />
<ClInclude Include="SDL\src\audio\directsound\SDL_directsound.h" />
<ClInclude Include="SDL\src\audio\disk\SDL_diskaudio.h" />
<ClInclude Include="SDL\src\audio\dummy\SDL_dummyaudio.h" />
<ClInclude Include="SDL\src\audio\SDL_audio_c.h" />
<ClInclude Include="SDL\src\audio\SDL_audiodev_c.h" />
<ClInclude Include="SDL\src\audio\SDL_sysaudio.h" />
<ClInclude Include="SDL\src\audio\SDL_wave.h" />
<ClInclude Include="SDL\src\audio\wasapi\SDL_wasapi.h" />
<ClInclude Include="SDL\src\audio\winmm\SDL_winmm.h" />
<ClInclude Include="SDL\src\core\windows\SDL_directx.h" />
<ClInclude Include="SDL\src\core\windows\SDL_hid.h" />
<ClInclude Include="SDL\src\core\windows\SDL_immdevice.h" />
<ClInclude Include="SDL\src\core\windows\SDL_windows.h" />
<ClInclude Include="SDL\src\core\windows\SDL_xinput.h" />
<ClInclude Include="SDL\src\dynapi\SDL_dynapi.h" />
<ClInclude Include="SDL\src\dynapi\SDL_dynapi_overrides.h" />
<ClInclude Include="SDL\src\dynapi\SDL_dynapi_procs.h" />
<ClInclude Include="SDL\src\events\blank_cursor.h" />
<ClInclude Include="SDL\src\events\default_cursor.h" />
<ClInclude Include="SDL\src\events\scancodes_windows.h" />
<ClInclude Include="SDL\src\events\SDL_clipboardevents_c.h" />
<ClInclude Include="SDL\src\events\SDL_displayevents_c.h" />
<ClInclude Include="SDL\src\events\SDL_dropevents_c.h" />
<ClInclude Include="SDL\src\events\SDL_events_c.h" />
<ClInclude Include="SDL\src\events\SDL_gesture_c.h" />
<ClInclude Include="SDL\src\events\SDL_keyboard_c.h" />
<ClInclude Include="SDL\src\events\SDL_mouse_c.h" />
<ClInclude Include="SDL\src\events\SDL_touch_c.h" />
<ClInclude Include="SDL\src\events\SDL_windowevents_c.h" />
<ClInclude Include="SDL\src\haptic\SDL_haptic_c.h" />
<ClInclude Include="SDL\src\haptic\SDL_syshaptic.h" />
<ClInclude Include="SDL\src\haptic\windows\SDL_dinputhaptic_c.h" />
<ClInclude Include="SDL\src\haptic\windows\SDL_windowshaptic_c.h" />
<ClInclude Include="SDL\src\haptic\windows\SDL_xinputhaptic_c.h" />
<ClInclude Include="SDL\src\hidapi\hidapi\hidapi.h" />
<ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" />
<ClInclude Include="SDL\src\joystick\controller_type.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapijoystick_c.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_nintendo.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.h" />
<ClInclude Include="SDL\src\joystick\SDL_gamecontrollerdb.h" />
<ClInclude Include="SDL\src\joystick\SDL_joystick_c.h" />
<ClInclude Include="SDL\src\joystick\SDL_sysjoystick.h" />
<ClInclude Include="SDL\src\joystick\usb_ids.h" />
<ClInclude Include="SDL\src\joystick\virtual\SDL_virtualjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_dinputjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_rawinputjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_windowsjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_xinputjoystick_c.h" />
<ClInclude Include="SDL\src\libm\math_libm.h" />
<ClInclude Include="SDL\src\libm\math_private.h" />
<ClInclude Include="SDL\src\locale\SDL_syslocale.h" />
<ClInclude Include="SDL\src\misc\SDL_sysurl.h" />
<ClInclude Include="SDL\src\power\SDL_syspower.h" />
<ClInclude Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.h" />
<ClInclude Include="SDL\src\render\direct3d12\SDL_shaders_d3d12.h" />
<ClInclude Include="SDL\src\render\direct3d\SDL_shaders_d3d.h" />
<ClInclude Include="SDL\src\render\opengles2\SDL_gles2funcs.h" />
<ClInclude Include="SDL\src\render\opengles2\SDL_shaders_gles2.h" />
<ClInclude Include="SDL\src\render\opengl\SDL_glfuncs.h" />
<ClInclude Include="SDL\src\render\opengl\SDL_shaders_gl.h" />
<ClInclude Include="SDL\src\render\SDL_d3dmath.h" />
<ClInclude Include="SDL\src\render\SDL_sysrender.h" />
<ClInclude Include="SDL\src\render\SDL_yuv_sw_c.h" />
<ClInclude Include="SDL\src\render\software\SDL_blendfillrect.h" />
<ClInclude Include="SDL\src\render\software\SDL_blendline.h" />
<ClInclude Include="SDL\src\render\software\SDL_blendpoint.h" />
<ClInclude Include="SDL\src\render\software\SDL_draw.h" />
<ClInclude Include="SDL\src\render\software\SDL_drawline.h" />
<ClInclude Include="SDL\src\render\software\SDL_drawpoint.h" />
<ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h" />
<ClInclude Include="SDL\src\render\software\SDL_rotate.h" />
<ClInclude Include="SDL\src\render\software\SDL_triangle.h" />
<ClInclude Include="SDL\src\SDL_assert_c.h" />
<ClInclude Include="SDL\src\SDL_dataqueue.h" />
<ClInclude Include="SDL\src\SDL_error_c.h" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_ps3.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_steam.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_wii.c" />
<ClCompile Include="SDL\src\SDL_guid.c" />
<ClInclude Include="SDL\src\SDL_hints_c.h" />
<ClInclude Include="SDL\src\SDL_internal.h" />
<ClInclude Include="SDL\src\SDL_list.h" />
<ClInclude Include="SDL\src\SDL_log_c.h" />
<ClInclude Include="SDL\src\sensor\dummy\SDL_dummysensor.h" />
<ClInclude Include="SDL\src\sensor\SDL_sensor_c.h" />
<ClInclude Include="SDL\src\sensor\SDL_syssensor.h" />
<ClInclude Include="SDL\src\sensor\windows\SDL_windowssensor.h" />
<ClInclude Include="SDL\src\thread\SDL_systhread.h" />
<ClInclude Include="SDL\src\thread\SDL_thread_c.h" />
<ClInclude Include="SDL\src\thread\generic\SDL_syscond_c.h" />
<ClInclude Include="SDL\src\thread\windows\SDL_sysmutex_c.h" />
<ClInclude Include="SDL\src\thread\windows\SDL_systhread_c.h" />
<ClInclude Include="SDL\src\timer\SDL_timer_c.h" />
<ClInclude Include="SDL\src\video\dummy\SDL_nullevents_c.h" />
<ClInclude Include="SDL\src\video\dummy\SDL_nullframebuffer_c.h" />
<ClInclude Include="SDL\src\video\dummy\SDL_nullvideo.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_icd.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_layer.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_platform.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_sdk_platform.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan.hpp" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_android.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_beta.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_core.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_directfb.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_fuchsia.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_ggp.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_ios.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_macos.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_metal.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_vi.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_wayland.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_win32.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xcb.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib_xrandr.h" />
<ClInclude Include="SDL\src\video\SDL_blit.h" />
<ClInclude Include="SDL\src\video\SDL_blit_auto.h" />
<ClInclude Include="SDL\src\video\SDL_blit_copy.h" />
<ClInclude Include="SDL\src\video\SDL_blit_slow.h" />
<ClInclude Include="SDL\src\video\SDL_egl_c.h" />
<ClInclude Include="SDL\src\video\SDL_pixels_c.h" />
<ClInclude Include="SDL\src\video\SDL_rect_c.h" />
<ClInclude Include="SDL\src\video\SDL_RLEaccel_c.h" />
<ClInclude Include="SDL\src\video\SDL_shape_internals.h" />
<ClInclude Include="SDL\src\video\SDL_sysvideo.h" />
<ClInclude Include="SDL\src\video\SDL_vulkan_internal.h" />
<ClInclude Include="SDL\src\video\SDL_yuv_c.h" />
<ClInclude Include="SDL\src\video\windows\SDL_msctf.h" />
<ClInclude Include="SDL\src\video\windows\SDL_vkeys.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsevents.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsframebuffer.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowskeyboard.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsmessagebox.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsmodes.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsmouse.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsopengl.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsopengles.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsshape.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsvideo.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsvulkan.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowswindow.h" />
<ClInclude Include="SDL\src\video\windows\wmmsg.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std_func.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="SDL\src\atomic\SDL_atomic.c" />
<ClCompile Include="SDL\src\atomic\SDL_spinlock.c" />
<ClCompile Include="SDL\src\audio\directsound\SDL_directsound.c" />
<ClCompile Include="SDL\src\audio\disk\SDL_diskaudio.c" />
<ClCompile Include="SDL\src\audio\dummy\SDL_dummyaudio.c" />
<ClCompile Include="SDL\src\audio\SDL_audio.c" />
<ClCompile Include="SDL\src\audio\SDL_audiocvt.c" />
<ClCompile Include="SDL\src\audio\SDL_audiodev.c" />
<ClCompile Include="SDL\src\audio\SDL_audiotypecvt.c" />
<ClCompile Include="SDL\src\audio\SDL_mixer.c" />
<ClCompile Include="SDL\src\audio\SDL_wave.c" />
<ClCompile Include="SDL\src\audio\winmm\SDL_winmm.c" />
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" />
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi_win32.c" />
<ClCompile Include="SDL\src\core\windows\SDL_hid.c" />
<ClCompile Include="SDL\src\core\windows\SDL_immdevice.c" />
<ClCompile Include="SDL\src\core\windows\SDL_windows.c" />
<ClCompile Include="SDL\src\core\windows\SDL_xinput.c" />
<ClCompile Include="SDL\src\cpuinfo\SDL_cpuinfo.c" />
<ClCompile Include="SDL\src\dynapi\SDL_dynapi.c" />
<ClCompile Include="SDL\src\events\SDL_clipboardevents.c" />
<ClCompile Include="SDL\src\events\SDL_displayevents.c" />
<ClCompile Include="SDL\src\events\SDL_dropevents.c" />
<ClCompile Include="SDL\src\events\SDL_events.c" />
<ClCompile Include="SDL\src\events\SDL_gesture.c" />
<ClCompile Include="SDL\src\events\SDL_keyboard.c" />
<ClCompile Include="SDL\src\events\SDL_mouse.c" />
<ClCompile Include="SDL\src\events\SDL_quit.c" />
<ClCompile Include="SDL\src\events\SDL_touch.c" />
<ClCompile Include="SDL\src\events\SDL_windowevents.c" />
<ClCompile Include="SDL\src\file\SDL_rwops.c" />
<ClCompile Include="SDL\src\filesystem\windows\SDL_sysfilesystem.c" />
<ClCompile Include="SDL\src\haptic\dummy\SDL_syshaptic.c" />
<ClCompile Include="SDL\src\haptic\SDL_haptic.c" />
<ClCompile Include="SDL\src\haptic\windows\SDL_dinputhaptic.c" />
<ClCompile Include="SDL\src\haptic\windows\SDL_windowshaptic.c" />
<ClCompile Include="SDL\src\haptic\windows\SDL_xinputhaptic.c" />
<ClCompile Include="SDL\src\hidapi\SDL_hidapi.c" />
<ClCompile Include="SDL\src\joystick\controller_type.c" />
<ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapijoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gamecube.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_luna.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_ps4.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_ps5.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_shield.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_stadia.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_switch.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_xbox360.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_xbox360w.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_xboxone.c" />
<ClCompile Include="SDL\src\joystick\SDL_gamecontroller.c" />
<ClCompile Include="SDL\src\joystick\SDL_joystick.c" />
<ClCompile Include="SDL\src\joystick\virtual\SDL_virtualjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_dinputjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_rawinputjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_windowsjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_windows_gaming_input.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_xinputjoystick.c" />
<ClCompile Include="SDL\src\libm\e_atan2.c" />
<ClCompile Include="SDL\src\libm\e_exp.c" />
<ClCompile Include="SDL\src\libm\e_fmod.c" />
<ClCompile Include="SDL\src\libm\e_log.c" />
<ClCompile Include="SDL\src\libm\e_log10.c" />
<ClCompile Include="SDL\src\libm\e_pow.c" />
<ClCompile Include="SDL\src\libm\e_rem_pio2.c" />
<ClCompile Include="SDL\src\libm\e_sqrt.c" />
<ClCompile Include="SDL\src\libm\k_cos.c" />
<ClCompile Include="SDL\src\libm\k_rem_pio2.c" />
<ClCompile Include="SDL\src\libm\k_sin.c" />
<ClCompile Include="SDL\src\libm\k_tan.c" />
<ClCompile Include="SDL\src\libm\s_atan.c" />
<ClCompile Include="SDL\src\libm\s_copysign.c" />
<ClCompile Include="SDL\src\libm\s_cos.c" />
<ClCompile Include="SDL\src\libm\s_fabs.c" />
<ClCompile Include="SDL\src\libm\s_floor.c" />
<ClCompile Include="SDL\src\libm\s_scalbn.c" />
<ClCompile Include="SDL\src\libm\s_sin.c" />
<ClCompile Include="SDL\src\libm\s_tan.c" />
<ClCompile Include="SDL\src\loadso\windows\SDL_sysloadso.c" />
<ClCompile Include="SDL\src\locale\SDL_locale.c" />
<ClCompile Include="SDL\src\locale\windows\SDL_syslocale.c" />
<ClCompile Include="SDL\src\misc\SDL_url.c" />
<ClCompile Include="SDL\src\misc\windows\SDL_sysurl.c" />
<ClCompile Include="SDL\src\power\SDL_power.c" />
<ClCompile Include="SDL\src\power\windows\SDL_syspower.c" />
<ClCompile Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.c" />
<ClCompile Include="SDL\src\render\direct3d12\SDL_render_d3d12.c" />
<ClCompile Include="SDL\src\render\direct3d12\SDL_shaders_d3d12.c" />
<ClCompile Include="SDL\src\render\direct3d\SDL_render_d3d.c" />
<ClCompile Include="SDL\src\render\direct3d11\SDL_render_d3d11.c" />
<ClCompile Include="SDL\src\render\direct3d\SDL_shaders_d3d.c" />
<ClCompile Include="SDL\src\render\opengl\SDL_render_gl.c" />
<ClCompile Include="SDL\src\render\opengl\SDL_shaders_gl.c" />
<ClCompile Include="SDL\src\render\opengles2\SDL_render_gles2.c" />
<ClCompile Include="SDL\src\render\opengles2\SDL_shaders_gles2.c" />
<ClCompile Include="SDL\src\render\SDL_d3dmath.c" />
<ClCompile Include="SDL\src\render\SDL_render.c" />
<ClCompile Include="SDL\src\render\SDL_yuv_sw.c" />
<ClCompile Include="SDL\src\render\software\SDL_blendfillrect.c" />
<ClCompile Include="SDL\src\render\software\SDL_blendline.c" />
<ClCompile Include="SDL\src\render\software\SDL_blendpoint.c" />
<ClCompile Include="SDL\src\render\software\SDL_drawline.c" />
<ClCompile Include="SDL\src\render\software\SDL_drawpoint.c" />
<ClCompile Include="SDL\src\render\software\SDL_render_sw.c" />
<ClCompile Include="SDL\src\render\software\SDL_rotate.c" />
<ClCompile Include="SDL\src\render\software\SDL_triangle.c" />
<ClCompile Include="SDL\src\SDL.c" />
<ClCompile Include="SDL\src\SDL_assert.c" />
<ClCompile Include="SDL\src\SDL_dataqueue.c" />
<ClCompile Include="SDL\src\SDL_list.c" />
<ClCompile Include="SDL\src\SDL_error.c" />
<ClCompile Include="SDL\src\SDL_hints.c" />
<ClCompile Include="SDL\src\SDL_log.c" />
<ClCompile Include="SDL\src\SDL_utils.c" />
<ClCompile Include="SDL\src\sensor\dummy\SDL_dummysensor.c" />
<ClCompile Include="SDL\src\sensor\SDL_sensor.c" />
<ClCompile Include="SDL\src\sensor\windows\SDL_windowssensor.c" />
<ClCompile Include="SDL\src\stdlib\SDL_crc16.c" />
<ClCompile Include="SDL\src\stdlib\SDL_crc32.c" />
<ClCompile Include="SDL\src\stdlib\SDL_getenv.c" />
<ClCompile Include="SDL\src\stdlib\SDL_iconv.c" />
<ClCompile Include="SDL\src\stdlib\SDL_malloc.c" />
<ClCompile Include="SDL\src\stdlib\SDL_mslibc.c" />
<ClCompile Include="SDL\src\stdlib\SDL_qsort.c" />
<ClCompile Include="SDL\src\stdlib\SDL_stdlib.c" />
<ClCompile Include="SDL\src\stdlib\SDL_string.c" />
<ClCompile Include="SDL\src\stdlib\SDL_strtokr.c" />
<ClCompile Include="SDL\src\thread\generic\SDL_syscond.c" />
<ClCompile Include="SDL\src\thread\SDL_thread.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_syscond_cv.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_sysmutex.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_syssem.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_systhread.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_systls.c" />
<ClCompile Include="SDL\src\timer\SDL_timer.c" />
<ClCompile Include="SDL\src\timer\windows\SDL_systimer.c" />
<ClCompile Include="SDL\src\video\dummy\SDL_nullevents.c" />
<ClCompile Include="SDL\src\video\dummy\SDL_nullframebuffer.c" />
<ClCompile Include="SDL\src\video\dummy\SDL_nullvideo.c" />
<ClCompile Include="SDL\src\video\SDL_blit.c" />
<ClCompile Include="SDL\src\video\SDL_blit_0.c" />
<ClCompile Include="SDL\src\video\SDL_blit_1.c" />
<ClCompile Include="SDL\src\video\SDL_blit_A.c" />
<ClCompile Include="SDL\src\video\SDL_blit_auto.c" />
<ClCompile Include="SDL\src\video\SDL_blit_copy.c" />
<ClCompile Include="SDL\src\video\SDL_blit_N.c" />
<ClCompile Include="SDL\src\video\SDL_blit_slow.c" />
<ClCompile Include="SDL\src\video\SDL_bmp.c" />
<ClCompile Include="SDL\src\video\SDL_clipboard.c" />
<ClCompile Include="SDL\src\video\SDL_egl.c" />
<ClCompile Include="SDL\src\video\SDL_fillrect.c" />
<ClCompile Include="SDL\src\video\SDL_pixels.c" />
<ClCompile Include="SDL\src\video\SDL_rect.c" />
<ClCompile Include="SDL\src\video\SDL_RLEaccel.c" />
<ClCompile Include="SDL\src\video\SDL_shape.c" />
<ClCompile Include="SDL\src\video\SDL_stretch.c" />
<ClCompile Include="SDL\src\video\SDL_surface.c" />
<ClCompile Include="SDL\src\video\SDL_video.c" />
<ClCompile Include="SDL\src\video\SDL_vulkan_utils.c" />
<ClCompile Include="SDL\src\video\SDL_yuv.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsevents.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsframebuffer.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmodes.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmouse.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsopengl.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsopengles.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsshape.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsvideo.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsvulkan.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowswindow.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb.c" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{8DC244EE-A0BD-4038-BAF7-CFAFA5EB2BAA}</ProjectGuid>
</PropertyGroup>
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default.props" />
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<Import Project="$(SolutionDir)\buildfiles\msvc\common_default_macros.props" />
<PropertyGroup Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)\buildfiles\msvc\rpcs3_default.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(SolutionDir)\buildfiles\msvc\rpcs3_debug.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(SolutionDir)\buildfiles\msvc\rpcs3_release.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
<ClCompile>
<WarningLevel>TurnOffAllWarnings</WarningLevel>
<SDLCheck>false</SDLCheck>
<AdditionalIncludeDirectories>SDL\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">ProgramDatabase</DebugInformationFormat>
</ClCompile>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+413
View File
@@ -0,0 +1,413 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="SDL\src\SDL_guid.c" />
<ClCompile Include="SDL\src\atomic\SDL_atomic.c" />
<ClCompile Include="SDL\src\atomic\SDL_spinlock.c" />
<ClCompile Include="SDL\src\audio\directsound\SDL_directsound.c" />
<ClCompile Include="SDL\src\audio\disk\SDL_diskaudio.c" />
<ClCompile Include="SDL\src\audio\dummy\SDL_dummyaudio.c" />
<ClCompile Include="SDL\src\audio\SDL_audio.c" />
<ClCompile Include="SDL\src\audio\SDL_audiocvt.c" />
<ClCompile Include="SDL\src\audio\SDL_audiodev.c" />
<ClCompile Include="SDL\src\audio\SDL_audiotypecvt.c" />
<ClCompile Include="SDL\src\audio\SDL_mixer.c" />
<ClCompile Include="SDL\src\audio\SDL_wave.c" />
<ClCompile Include="SDL\src\audio\winmm\SDL_winmm.c" />
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi.c" />
<ClCompile Include="SDL\src\audio\wasapi\SDL_wasapi_win32.c" />
<ClCompile Include="SDL\src\core\windows\SDL_hid.c" />
<ClCompile Include="SDL\src\core\windows\SDL_immdevice.c" />
<ClCompile Include="SDL\src\core\windows\SDL_windows.c" />
<ClCompile Include="SDL\src\core\windows\SDL_xinput.c" />
<ClCompile Include="SDL\src\cpuinfo\SDL_cpuinfo.c" />
<ClCompile Include="SDL\src\dynapi\SDL_dynapi.c" />
<ClCompile Include="SDL\src\events\SDL_clipboardevents.c" />
<ClCompile Include="SDL\src\events\SDL_displayevents.c" />
<ClCompile Include="SDL\src\events\SDL_dropevents.c" />
<ClCompile Include="SDL\src\events\SDL_events.c" />
<ClCompile Include="SDL\src\events\SDL_gesture.c" />
<ClCompile Include="SDL\src\events\SDL_keyboard.c" />
<ClCompile Include="SDL\src\events\SDL_mouse.c" />
<ClCompile Include="SDL\src\events\SDL_quit.c" />
<ClCompile Include="SDL\src\events\SDL_touch.c" />
<ClCompile Include="SDL\src\events\SDL_windowevents.c" />
<ClCompile Include="SDL\src\file\SDL_rwops.c" />
<ClCompile Include="SDL\src\filesystem\windows\SDL_sysfilesystem.c" />
<ClCompile Include="SDL\src\haptic\dummy\SDL_syshaptic.c" />
<ClCompile Include="SDL\src\haptic\SDL_haptic.c" />
<ClCompile Include="SDL\src\haptic\windows\SDL_dinputhaptic.c" />
<ClCompile Include="SDL\src\haptic\windows\SDL_windowshaptic.c" />
<ClCompile Include="SDL\src\haptic\windows\SDL_xinputhaptic.c" />
<ClCompile Include="SDL\src\hidapi\SDL_hidapi.c" />
<ClCompile Include="SDL\src\joystick\controller_type.c" />
<ClCompile Include="SDL\src\joystick\dummy\SDL_sysjoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapijoystick.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_combined.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_gamecube.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_luna.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_ps4.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_ps5.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_shield.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_stadia.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_switch.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_xbox360.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_xbox360w.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_xboxone.c" />
<ClCompile Include="SDL\src\joystick\SDL_gamecontroller.c" />
<ClCompile Include="SDL\src\joystick\SDL_joystick.c" />
<ClCompile Include="SDL\src\joystick\virtual\SDL_virtualjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_dinputjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_rawinputjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_windowsjoystick.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_windows_gaming_input.c" />
<ClCompile Include="SDL\src\joystick\windows\SDL_xinputjoystick.c" />
<ClCompile Include="SDL\src\libm\e_atan2.c" />
<ClCompile Include="SDL\src\libm\e_exp.c" />
<ClCompile Include="SDL\src\libm\e_fmod.c" />
<ClCompile Include="SDL\src\libm\e_log.c" />
<ClCompile Include="SDL\src\libm\e_log10.c" />
<ClCompile Include="SDL\src\libm\e_pow.c" />
<ClCompile Include="SDL\src\libm\e_rem_pio2.c" />
<ClCompile Include="SDL\src\libm\e_sqrt.c" />
<ClCompile Include="SDL\src\libm\k_cos.c" />
<ClCompile Include="SDL\src\libm\k_rem_pio2.c" />
<ClCompile Include="SDL\src\libm\k_sin.c" />
<ClCompile Include="SDL\src\libm\k_tan.c" />
<ClCompile Include="SDL\src\libm\s_atan.c" />
<ClCompile Include="SDL\src\libm\s_copysign.c" />
<ClCompile Include="SDL\src\libm\s_cos.c" />
<ClCompile Include="SDL\src\libm\s_fabs.c" />
<ClCompile Include="SDL\src\libm\s_floor.c" />
<ClCompile Include="SDL\src\libm\s_scalbn.c" />
<ClCompile Include="SDL\src\libm\s_sin.c" />
<ClCompile Include="SDL\src\libm\s_tan.c" />
<ClCompile Include="SDL\src\loadso\windows\SDL_sysloadso.c" />
<ClCompile Include="SDL\src\locale\SDL_locale.c" />
<ClCompile Include="SDL\src\locale\windows\SDL_syslocale.c" />
<ClCompile Include="SDL\src\misc\SDL_url.c" />
<ClCompile Include="SDL\src\misc\windows\SDL_sysurl.c" />
<ClCompile Include="SDL\src\power\SDL_power.c" />
<ClCompile Include="SDL\src\power\windows\SDL_syspower.c" />
<ClCompile Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.c" />
<ClCompile Include="SDL\src\render\direct3d12\SDL_render_d3d12.c" />
<ClCompile Include="SDL\src\render\direct3d12\SDL_shaders_d3d12.c" />
<ClCompile Include="SDL\src\render\direct3d\SDL_render_d3d.c" />
<ClCompile Include="SDL\src\render\direct3d11\SDL_render_d3d11.c" />
<ClCompile Include="SDL\src\render\direct3d\SDL_shaders_d3d.c" />
<ClCompile Include="SDL\src\render\opengl\SDL_render_gl.c" />
<ClCompile Include="SDL\src\render\opengl\SDL_shaders_gl.c" />
<ClCompile Include="SDL\src\render\opengles2\SDL_render_gles2.c" />
<ClCompile Include="SDL\src\render\opengles2\SDL_shaders_gles2.c" />
<ClCompile Include="SDL\src\render\SDL_d3dmath.c" />
<ClCompile Include="SDL\src\render\SDL_render.c" />
<ClCompile Include="SDL\src\render\SDL_yuv_sw.c" />
<ClCompile Include="SDL\src\render\software\SDL_blendfillrect.c" />
<ClCompile Include="SDL\src\render\software\SDL_blendline.c" />
<ClCompile Include="SDL\src\render\software\SDL_blendpoint.c" />
<ClCompile Include="SDL\src\render\software\SDL_drawline.c" />
<ClCompile Include="SDL\src\render\software\SDL_drawpoint.c" />
<ClCompile Include="SDL\src\render\software\SDL_render_sw.c" />
<ClCompile Include="SDL\src\render\software\SDL_rotate.c" />
<ClCompile Include="SDL\src\render\software\SDL_triangle.c" />
<ClCompile Include="SDL\src\SDL.c" />
<ClCompile Include="SDL\src\SDL_assert.c" />
<ClCompile Include="SDL\src\SDL_dataqueue.c" />
<ClCompile Include="SDL\src\SDL_list.c" />
<ClCompile Include="SDL\src\SDL_error.c" />
<ClCompile Include="SDL\src\SDL_hints.c" />
<ClCompile Include="SDL\src\SDL_log.c" />
<ClCompile Include="SDL\src\SDL_utils.c" />
<ClCompile Include="SDL\src\sensor\dummy\SDL_dummysensor.c" />
<ClCompile Include="SDL\src\sensor\SDL_sensor.c" />
<ClCompile Include="SDL\src\sensor\windows\SDL_windowssensor.c" />
<ClCompile Include="SDL\src\stdlib\SDL_crc16.c" />
<ClCompile Include="SDL\src\stdlib\SDL_crc32.c" />
<ClCompile Include="SDL\src\stdlib\SDL_getenv.c" />
<ClCompile Include="SDL\src\stdlib\SDL_iconv.c" />
<ClCompile Include="SDL\src\stdlib\SDL_malloc.c" />
<ClCompile Include="SDL\src\stdlib\SDL_mslibc.c" />
<ClCompile Include="SDL\src\stdlib\SDL_qsort.c" />
<ClCompile Include="SDL\src\stdlib\SDL_stdlib.c" />
<ClCompile Include="SDL\src\stdlib\SDL_string.c" />
<ClCompile Include="SDL\src\stdlib\SDL_strtokr.c" />
<ClCompile Include="SDL\src\thread\generic\SDL_syscond.c" />
<ClCompile Include="SDL\src\thread\SDL_thread.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_syscond_cv.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_sysmutex.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_syssem.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_systhread.c" />
<ClCompile Include="SDL\src\thread\windows\SDL_systls.c" />
<ClCompile Include="SDL\src\timer\SDL_timer.c" />
<ClCompile Include="SDL\src\timer\windows\SDL_systimer.c" />
<ClCompile Include="SDL\src\video\dummy\SDL_nullevents.c" />
<ClCompile Include="SDL\src\video\dummy\SDL_nullframebuffer.c" />
<ClCompile Include="SDL\src\video\dummy\SDL_nullvideo.c" />
<ClCompile Include="SDL\src\video\SDL_blit.c" />
<ClCompile Include="SDL\src\video\SDL_blit_0.c" />
<ClCompile Include="SDL\src\video\SDL_blit_1.c" />
<ClCompile Include="SDL\src\video\SDL_blit_A.c" />
<ClCompile Include="SDL\src\video\SDL_blit_auto.c" />
<ClCompile Include="SDL\src\video\SDL_blit_copy.c" />
<ClCompile Include="SDL\src\video\SDL_blit_N.c" />
<ClCompile Include="SDL\src\video\SDL_blit_slow.c" />
<ClCompile Include="SDL\src\video\SDL_bmp.c" />
<ClCompile Include="SDL\src\video\SDL_clipboard.c" />
<ClCompile Include="SDL\src\video\SDL_egl.c" />
<ClCompile Include="SDL\src\video\SDL_fillrect.c" />
<ClCompile Include="SDL\src\video\SDL_pixels.c" />
<ClCompile Include="SDL\src\video\SDL_rect.c" />
<ClCompile Include="SDL\src\video\SDL_RLEaccel.c" />
<ClCompile Include="SDL\src\video\SDL_shape.c" />
<ClCompile Include="SDL\src\video\SDL_stretch.c" />
<ClCompile Include="SDL\src\video\SDL_surface.c" />
<ClCompile Include="SDL\src\video\SDL_video.c" />
<ClCompile Include="SDL\src\video\SDL_vulkan_utils.c" />
<ClCompile Include="SDL\src\video\SDL_yuv.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsclipboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsevents.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsframebuffer.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowskeyboard.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmessagebox.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmodes.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsmouse.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsopengl.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsopengles.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsshape.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsvideo.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowsvulkan.c" />
<ClCompile Include="SDL\src\video\windows\SDL_windowswindow.c" />
<ClCompile Include="SDL\src\video\yuv2rgb\yuv_rgb.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_ps3.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_steam.c" />
<ClCompile Include="SDL\src\joystick\hidapi\SDL_hidapi_wii.c" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="SDL\include\begin_code.h" />
<ClInclude Include="SDL\include\close_code.h" />
<ClInclude Include="SDL\include\SDL.h" />
<ClInclude Include="SDL\include\SDL_assert.h" />
<ClInclude Include="SDL\include\SDL_atomic.h" />
<ClInclude Include="SDL\include\SDL_audio.h" />
<ClInclude Include="SDL\include\SDL_bits.h" />
<ClInclude Include="SDL\include\SDL_blendmode.h" />
<ClInclude Include="SDL\include\SDL_clipboard.h" />
<ClInclude Include="SDL\include\SDL_config.h" />
<ClInclude Include="SDL\include\SDL_config_windows.h" />
<ClInclude Include="SDL\include\SDL_copying.h" />
<ClInclude Include="SDL\include\SDL_cpuinfo.h" />
<ClInclude Include="SDL\include\SDL_egl.h" />
<ClInclude Include="SDL\include\SDL_endian.h" />
<ClInclude Include="SDL\include\SDL_error.h" />
<ClInclude Include="SDL\include\SDL_events.h" />
<ClInclude Include="SDL\include\SDL_filesystem.h" />
<ClInclude Include="SDL\include\SDL_gamecontroller.h" />
<ClInclude Include="SDL\include\SDL_gesture.h" />
<ClInclude Include="SDL\include\SDL_guid.h" />
<ClInclude Include="SDL\include\SDL_haptic.h" />
<ClInclude Include="SDL\include\SDL_hints.h" />
<ClInclude Include="SDL\include\SDL_hidapi.h" />
<ClInclude Include="SDL\include\SDL_joystick.h" />
<ClInclude Include="SDL\include\SDL_keyboard.h" />
<ClInclude Include="SDL\include\SDL_keycode.h" />
<ClInclude Include="SDL\include\SDL_loadso.h" />
<ClInclude Include="SDL\include\SDL_locale.h" />
<ClInclude Include="SDL\include\SDL_log.h" />
<ClInclude Include="SDL\include\SDL_main.h" />
<ClInclude Include="SDL\include\SDL_messagebox.h" />
<ClInclude Include="SDL\include\SDL_metal.h" />
<ClInclude Include="SDL\include\SDL_misc.h" />
<ClInclude Include="SDL\include\SDL_mouse.h" />
<ClInclude Include="SDL\include\SDL_mutex.h" />
<ClInclude Include="SDL\include\SDL_name.h" />
<ClInclude Include="SDL\include\SDL_opengl.h" />
<ClInclude Include="SDL\include\SDL_opengl_glext.h" />
<ClInclude Include="SDL\include\SDL_opengles.h" />
<ClInclude Include="SDL\include\SDL_opengles2.h" />
<ClInclude Include="SDL\include\SDL_opengles2_gl2.h" />
<ClInclude Include="SDL\include\SDL_opengles2_gl2ext.h" />
<ClInclude Include="SDL\include\SDL_opengles2_gl2platform.h" />
<ClInclude Include="SDL\include\SDL_opengles2_khrplatform.h" />
<ClInclude Include="SDL\include\SDL_pixels.h" />
<ClInclude Include="SDL\include\SDL_platform.h" />
<ClInclude Include="SDL\include\SDL_power.h" />
<ClInclude Include="SDL\include\SDL_quit.h" />
<ClInclude Include="SDL\include\SDL_rect.h" />
<ClInclude Include="SDL\include\SDL_render.h" />
<ClInclude Include="SDL\include\SDL_revision.h" />
<ClInclude Include="SDL\include\SDL_rwops.h" />
<ClInclude Include="SDL\include\SDL_scancode.h" />
<ClInclude Include="SDL\include\SDL_sensor.h" />
<ClInclude Include="SDL\include\SDL_shape.h" />
<ClInclude Include="SDL\include\SDL_stdinc.h" />
<ClInclude Include="SDL\include\SDL_surface.h" />
<ClInclude Include="SDL\include\SDL_system.h" />
<ClInclude Include="SDL\include\SDL_syswm.h" />
<ClInclude Include="SDL\include\SDL_test.h" />
<ClInclude Include="SDL\include\SDL_test_assert.h" />
<ClInclude Include="SDL\include\SDL_test_common.h" />
<ClInclude Include="SDL\include\SDL_test_compare.h" />
<ClInclude Include="SDL\include\SDL_test_crc32.h" />
<ClInclude Include="SDL\include\SDL_test_font.h" />
<ClInclude Include="SDL\include\SDL_test_fuzzer.h" />
<ClInclude Include="SDL\include\SDL_test_harness.h" />
<ClInclude Include="SDL\include\SDL_test_images.h" />
<ClInclude Include="SDL\include\SDL_test_log.h" />
<ClInclude Include="SDL\include\SDL_test_md5.h" />
<ClInclude Include="SDL\include\SDL_test_memory.h" />
<ClInclude Include="SDL\include\SDL_test_random.h" />
<ClInclude Include="SDL\include\SDL_thread.h" />
<ClInclude Include="SDL\include\SDL_timer.h" />
<ClInclude Include="SDL\include\SDL_touch.h" />
<ClInclude Include="SDL\include\SDL_types.h" />
<ClInclude Include="SDL\include\SDL_version.h" />
<ClInclude Include="SDL\include\SDL_video.h" />
<ClInclude Include="SDL\include\SDL_vulkan.h" />
<ClInclude Include="SDL\src\audio\directsound\SDL_directsound.h" />
<ClInclude Include="SDL\src\audio\disk\SDL_diskaudio.h" />
<ClInclude Include="SDL\src\audio\dummy\SDL_dummyaudio.h" />
<ClInclude Include="SDL\src\audio\SDL_audio_c.h" />
<ClInclude Include="SDL\src\audio\SDL_audiodev_c.h" />
<ClInclude Include="SDL\src\audio\SDL_sysaudio.h" />
<ClInclude Include="SDL\src\audio\SDL_wave.h" />
<ClInclude Include="SDL\src\audio\wasapi\SDL_wasapi.h" />
<ClInclude Include="SDL\src\audio\winmm\SDL_winmm.h" />
<ClInclude Include="SDL\src\core\windows\SDL_directx.h" />
<ClInclude Include="SDL\src\core\windows\SDL_hid.h" />
<ClInclude Include="SDL\src\core\windows\SDL_immdevice.h" />
<ClInclude Include="SDL\src\core\windows\SDL_windows.h" />
<ClInclude Include="SDL\src\core\windows\SDL_xinput.h" />
<ClInclude Include="SDL\src\dynapi\SDL_dynapi.h" />
<ClInclude Include="SDL\src\dynapi\SDL_dynapi_overrides.h" />
<ClInclude Include="SDL\src\dynapi\SDL_dynapi_procs.h" />
<ClInclude Include="SDL\src\events\blank_cursor.h" />
<ClInclude Include="SDL\src\events\default_cursor.h" />
<ClInclude Include="SDL\src\events\scancodes_windows.h" />
<ClInclude Include="SDL\src\events\SDL_clipboardevents_c.h" />
<ClInclude Include="SDL\src\events\SDL_displayevents_c.h" />
<ClInclude Include="SDL\src\events\SDL_dropevents_c.h" />
<ClInclude Include="SDL\src\events\SDL_events_c.h" />
<ClInclude Include="SDL\src\events\SDL_gesture_c.h" />
<ClInclude Include="SDL\src\events\SDL_keyboard_c.h" />
<ClInclude Include="SDL\src\events\SDL_mouse_c.h" />
<ClInclude Include="SDL\src\events\SDL_touch_c.h" />
<ClInclude Include="SDL\src\events\SDL_windowevents_c.h" />
<ClInclude Include="SDL\src\haptic\SDL_haptic_c.h" />
<ClInclude Include="SDL\src\haptic\SDL_syshaptic.h" />
<ClInclude Include="SDL\src\haptic\windows\SDL_dinputhaptic_c.h" />
<ClInclude Include="SDL\src\haptic\windows\SDL_windowshaptic_c.h" />
<ClInclude Include="SDL\src\haptic\windows\SDL_xinputhaptic_c.h" />
<ClInclude Include="SDL\src\hidapi\hidapi\hidapi.h" />
<ClInclude Include="SDL\src\hidapi\SDL_hidapi_c.h" />
<ClInclude Include="SDL\src\joystick\controller_type.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapijoystick_c.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_rumble.h" />
<ClInclude Include="SDL\src\joystick\SDL_gamecontrollerdb.h" />
<ClInclude Include="SDL\src\joystick\SDL_joystick_c.h" />
<ClInclude Include="SDL\src\joystick\SDL_sysjoystick.h" />
<ClInclude Include="SDL\src\joystick\usb_ids.h" />
<ClInclude Include="SDL\src\joystick\virtual\SDL_virtualjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_dinputjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_rawinputjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_windowsjoystick_c.h" />
<ClInclude Include="SDL\src\joystick\windows\SDL_xinputjoystick_c.h" />
<ClInclude Include="SDL\src\libm\math_libm.h" />
<ClInclude Include="SDL\src\libm\math_private.h" />
<ClInclude Include="SDL\src\locale\SDL_syslocale.h" />
<ClInclude Include="SDL\src\misc\SDL_sysurl.h" />
<ClInclude Include="SDL\src\power\SDL_syspower.h" />
<ClInclude Include="SDL\src\render\direct3d11\SDL_shaders_d3d11.h" />
<ClInclude Include="SDL\src\render\direct3d12\SDL_shaders_d3d12.h" />
<ClInclude Include="SDL\src\render\direct3d\SDL_shaders_d3d.h" />
<ClInclude Include="SDL\src\render\opengles2\SDL_gles2funcs.h" />
<ClInclude Include="SDL\src\render\opengles2\SDL_shaders_gles2.h" />
<ClInclude Include="SDL\src\render\opengl\SDL_glfuncs.h" />
<ClInclude Include="SDL\src\render\opengl\SDL_shaders_gl.h" />
<ClInclude Include="SDL\src\render\SDL_d3dmath.h" />
<ClInclude Include="SDL\src\render\SDL_sysrender.h" />
<ClInclude Include="SDL\src\render\SDL_yuv_sw_c.h" />
<ClInclude Include="SDL\src\render\software\SDL_blendfillrect.h" />
<ClInclude Include="SDL\src\render\software\SDL_blendline.h" />
<ClInclude Include="SDL\src\render\software\SDL_blendpoint.h" />
<ClInclude Include="SDL\src\render\software\SDL_draw.h" />
<ClInclude Include="SDL\src\render\software\SDL_drawline.h" />
<ClInclude Include="SDL\src\render\software\SDL_drawpoint.h" />
<ClInclude Include="SDL\src\render\software\SDL_render_sw_c.h" />
<ClInclude Include="SDL\src\render\software\SDL_rotate.h" />
<ClInclude Include="SDL\src\render\software\SDL_triangle.h" />
<ClInclude Include="SDL\src\SDL_assert_c.h" />
<ClInclude Include="SDL\src\SDL_dataqueue.h" />
<ClInclude Include="SDL\src\SDL_error_c.h" />
<ClInclude Include="SDL\src\SDL_hints_c.h" />
<ClInclude Include="SDL\src\SDL_internal.h" />
<ClInclude Include="SDL\src\SDL_list.h" />
<ClInclude Include="SDL\src\SDL_log_c.h" />
<ClInclude Include="SDL\src\sensor\dummy\SDL_dummysensor.h" />
<ClInclude Include="SDL\src\sensor\SDL_sensor_c.h" />
<ClInclude Include="SDL\src\sensor\SDL_syssensor.h" />
<ClInclude Include="SDL\src\sensor\windows\SDL_windowssensor.h" />
<ClInclude Include="SDL\src\thread\SDL_systhread.h" />
<ClInclude Include="SDL\src\thread\SDL_thread_c.h" />
<ClInclude Include="SDL\src\thread\generic\SDL_syscond_c.h" />
<ClInclude Include="SDL\src\thread\windows\SDL_sysmutex_c.h" />
<ClInclude Include="SDL\src\thread\windows\SDL_systhread_c.h" />
<ClInclude Include="SDL\src\timer\SDL_timer_c.h" />
<ClInclude Include="SDL\src\video\dummy\SDL_nullevents_c.h" />
<ClInclude Include="SDL\src\video\dummy\SDL_nullframebuffer_c.h" />
<ClInclude Include="SDL\src\video\dummy\SDL_nullvideo.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_icd.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_layer.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_platform.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vk_sdk_platform.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan.hpp" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_android.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_beta.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_core.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_directfb.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_fuchsia.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_ggp.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_ios.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_macos.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_metal.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_vi.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_wayland.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_win32.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xcb.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib.h" />
<ClInclude Include="SDL\src\video\khronos\vulkan\vulkan_xlib_xrandr.h" />
<ClInclude Include="SDL\src\video\SDL_blit.h" />
<ClInclude Include="SDL\src\video\SDL_blit_auto.h" />
<ClInclude Include="SDL\src\video\SDL_blit_copy.h" />
<ClInclude Include="SDL\src\video\SDL_blit_slow.h" />
<ClInclude Include="SDL\src\video\SDL_egl_c.h" />
<ClInclude Include="SDL\src\video\SDL_pixels_c.h" />
<ClInclude Include="SDL\src\video\SDL_rect_c.h" />
<ClInclude Include="SDL\src\video\SDL_RLEaccel_c.h" />
<ClInclude Include="SDL\src\video\SDL_shape_internals.h" />
<ClInclude Include="SDL\src\video\SDL_sysvideo.h" />
<ClInclude Include="SDL\src\video\SDL_vulkan_internal.h" />
<ClInclude Include="SDL\src\video\SDL_yuv_c.h" />
<ClInclude Include="SDL\src\video\windows\SDL_msctf.h" />
<ClInclude Include="SDL\src\video\windows\SDL_vkeys.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsclipboard.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsevents.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsframebuffer.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowskeyboard.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsmessagebox.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsmodes.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsmouse.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsopengl.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsopengles.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsshape.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsvideo.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowsvulkan.h" />
<ClInclude Include="SDL\src\video\windows\SDL_windowswindow.h" />
<ClInclude Include="SDL\src\video\windows\wmmsg.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_sse_func.h" />
<ClInclude Include="SDL\src\video\yuv2rgb\yuv_rgb_std_func.h" />
<ClInclude Include="SDL\src\joystick\hidapi\SDL_hidapi_nintendo.h" />
</ItemGroup>
</Project>
+1
View File
@@ -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)
+617
View File
@@ -0,0 +1,617 @@
// 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] = {};
snprintf(version, sizeof(version), "RPCS3 %s", Impl::get_version_and_branch().c_str());
const u32 size = strlen(version) + 1;
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];
snprintf(title, size, "%s", title_string.c_str());
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];
snprintf(title_id, size, "%s", title_id_string.c_str());
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];
snprintf(hash, size, "%s", hash_string.c_str());
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];
snprintf(game_version, size, "%s", game_version_string.c_str());
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
}
+3 -2
View File
@@ -5,9 +5,10 @@ if(USE_SYSTEM_WOLFSSL)
target_link_libraries(wolfssl INTERFACE PkgConfig::WolfSSL)
else()
# TODO(cjj19970505@live.cn)
# OPENSSL_EXTRA, WOLFSSL_DES_ECB and HAVE_SNI are unconfigurable from CMake cache.
# OPENSSL_EXTRA, and HAVE_SNI are unconfigurable from CMake cache.
# but they do have it in a TODO list (wolfssl/CMakeList, 1021)
add_compile_definitions(OPENSSL_EXTRA WOLFSSL_DES_ECB HAVE_SNI HAVE_WRITE_DUP)
add_compile_definitions(FP_MAX_BITS=8192)
set(WOLFSSL_TLS13 "no" CACHE INTERNAL "")
set(WOLFSSL_SHA224 "yes" CACHE INTERNAL "")
@@ -19,7 +20,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 "")
+2
View File
@@ -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
+7 -6
View File
@@ -11,7 +11,7 @@ Other instructions may be found [here](https://wiki.rpcs3.net/index.php?title=Bu
* [Python 3.6+](https://www.python.org/downloads/) (add to PATH)
* [Qt 5.15.2](https://www.qt.io/download-qt-installer)
* [Visual Studio 2019](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community)
* [Vulkan SDK 1.2.198+](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html))
* [Vulkan SDK 1.2.224+](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html))
**Either add the** `QTDIR` **environment variable, e.g.** `<QtInstallFolder>\5.15.2\msvc2019_64\` **, or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2019)**
@@ -22,14 +22,14 @@ These are the essentials tools to build RPCS3 on Linux. Some of them can be inst
* Clang 12+ or GCC 11+
* [CMake 3.16.9+](https://www.cmake.org/download/)
* [Qt 5.15.2](https://www.qt.io/download-qt-installer)
* [Vulkan SDK 1.2.198+](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html))
* [Vulkan SDK 1.2.224+](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html))
* [SDL2](https://www.libsdl.org/download-2.0.php) (for the FAudio backend)
**If you have an NVIDIA GPU, you may need to install the libglvnd package.**
#### 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
+19 -3
View File
@@ -21,6 +21,8 @@ option(USE_DISCORD_RPC "Discord rich presence integration" OFF)
option(USE_SYSTEM_ZLIB "Prefer system ZLIB instead of the builtin one" ON)
option(USE_VULKAN "Vulkan render backend" ON)
option(USE_PRECOMPILED_HEADERS "Use precompiled headers" OFF)
option(USE_SDL "Enables SDL input handler" OFF)
option(USE_SYSTEM_SDL "Prefer system SDL instead of the builtin one" OFF)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/buildfiles/cmake")
@@ -104,9 +106,9 @@ if(WIN32)
add_definitions(-D_WIN32_WINNT=0x0602)
endif()
if(APPLE)
include_directories(/opt/local/include)
link_directories(/opt/local/lib)
if(APPLE AND CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
include_directories(/opt/homebrew/include)
link_directories(/opt/homebrew/lib)
endif()
# Warnings are silenced for 3rdparty code
@@ -123,6 +125,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()
+2 -2
View File
@@ -5,10 +5,10 @@ RPCS3
[![Cirrus CI - Base Branch Build Status](https://img.shields.io/cirrus/github/RPCS3/rpcs3?label=Cirrus%20CI%20(FreeBSD)&logo=cirrus-ci)](https://cirrus-ci.com/github/RPCS3/rpcs3)
[![RPCS3 discord server](https://img.shields.io/discord/272035812277878785?color=5865F2&label=RPCS3%20Discord&logo=discord&logoColor=white)](https://discord.me/rpcs3)
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows and Linux.
The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows, Linux, macOS and FreeBSD.
You can find some basic information on our [**website**](https://rpcs3.net/). Game info is being populated on the [**Wiki**](https://wiki.rpcs3.net/).
For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our [**forums**](https://forums.rpcs3.net) and our [**Discord server**](https://discord.me/RPCS3).
For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our [**forums**](https://forums.rpcs3.net) and our [**Discord server**](https://discord.gg/RPCS3).
[**Support Lead Developers Nekotekina and kd-11 on Patreon**](https://www.patreon.com/Nekotekina)
+120 -8
View File
@@ -60,9 +60,15 @@ std::vector<std::string> cfg::make_int_range(s64 min, s64 max)
bool try_to_int64(s64* out, std::string_view value, s64 min, s64 max)
{
if (value.empty())
{
if (out) cfg_log.error("cfg::try_to_uint64(): called with an empty string");
return false;
}
s64 result;
const char* start = &value.front();
const char* end = &value.back() + 1;
const char* start = value.data();
const char* end = start + value.size();
int base = 10;
int sign = +1;
@@ -72,7 +78,7 @@ bool try_to_int64(s64* out, std::string_view value, s64 min, s64 max)
start += 1;
}
if (start[0] == '0' && (start[1] == 'x' || start[1] == 'X'))
if (start[0] == '0' && value.size() >= 2 && (start[1] == 'x' || start[1] == 'X'))
{
// Limited hex support
base = 16;
@@ -106,12 +112,18 @@ std::vector<std::string> cfg::make_uint_range(u64 min, u64 max)
bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max)
{
if (value.empty())
{
if (out) cfg_log.error("cfg::try_to_uint64(): called with an empty string");
return false;
}
u64 result;
const char* start = &value.front();
const char* end = &value.back() + 1;
const char* start = value.data();
const char* end = start + value.size();
int base = 10;
if (start[0] == '0' && (start[1] == 'x' || start[1] == 'X'))
if (start[0] == '0' && value.size() >= 2 && (start[1] == 'x' || start[1] == 'X'))
{
// Limited hex support
base = 16;
@@ -136,6 +148,42 @@ bool try_to_uint64(u64* out, std::string_view value, u64 min, u64 max)
return true;
}
std::vector<std::string> cfg::make_float_range(f64 min, f64 max)
{
return {std::to_string(min), std::to_string(max)};
}
bool try_to_float(f64* out, std::string_view value, f64 min, f64 max)
{
if (value.empty())
{
if (out) cfg_log.error("cfg::try_to_float(): called with an empty string");
return false;
}
// std::from_chars float is yet to be implemented on Xcode it seems
// And strtod doesn't support ranged view so we need to ensure it meets a null terminator
const std::string str = std::string{value};
char* end_check{};
const double result = std::strtod(str.data(), &end_check);
if (end_check != str.data() + str.size())
{
if (out) cfg_log.error("cfg::try_to_float('%s'): invalid float", value);
return false;
}
if (result < min || result > max)
{
if (out) cfg_log.error("cfg::try_to_float('%s'): out of bounds (%f..%f)", value, min, max);
return false;
}
if (out) *out = result;
return true;
}
bool cfg::try_to_enum_value(u64* out, decltype(&fmt_class_string<int>::format) func, std::string_view value)
{
u64 max = umax;
@@ -162,8 +210,8 @@ bool cfg::try_to_enum_value(u64* out, decltype(&fmt_class_string<int>::format) f
}
u64 result;
const char* start = &value.front();
const char* end = &value.back() + 1;
const char* start = value.data();
const char* end = start + value.size();
int base = 10;
if (start[0] == '0' && (start[1] == 'x' || start[1] == 'X'))
@@ -262,6 +310,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 +419,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 +558,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;
}
+159 -7
View File
@@ -20,6 +20,9 @@ namespace cfg
// Format min and max unsigned values
std::vector<std::string> make_uint_range(u64 min, u64 max);
// Format min and max float values
std::vector<std::string> make_float_range(f64 min, f64 max);
// Internal hack
bool try_to_enum_value(u64* out, decltype(&fmt_class_string<int>::format) func, std::string_view);
@@ -37,7 +40,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
@@ -76,7 +80,13 @@ namespace cfg
// Convert to string (optional)
virtual std::string to_string() const
{
return{};
return {};
}
// Convert default to string (optional)
virtual std::string def_to_string() const
{
return {};
}
// Try to convert from string (optional)
@@ -85,7 +95,7 @@ namespace cfg
// Get string list (optional)
virtual std::vector<std::string> to_list() const
{
return{};
return {};
}
// Set multiple values. Implementation-specific, optional.
@@ -159,11 +169,24 @@ namespace cfg
return m_value ? "true" : "false";
}
std::string def_to_string() const override
{
return def ? "true" : "false";
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
if (value == "false")
if (value.size() != 4 && value.size() != 5)
{
return false;
}
char copy[5];
std::transform(value.begin(), value.end(), std::begin(copy), ::tolower);
if (value.size() == 5 && std::string_view{copy, 5} == "false")
m_value = false;
else if (value == "true")
else if (value.size() == 4 && std::string_view{copy, 4} == "true")
m_value = true;
else
return false;
@@ -179,7 +202,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;
@@ -220,6 +243,13 @@ namespace cfg
return result; // TODO: ???
}
std::string def_to_string() const override
{
std::string result;
fmt_class_string<T>::format(result, fmt_unveil<T>::get(def));
return result; // TODO: ???
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
u64 result;
@@ -285,6 +315,11 @@ namespace cfg
return std::to_string(m_value);
}
std::string def_to_string() const override
{
return std::to_string(def);
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
s64 result;
@@ -308,6 +343,77 @@ namespace cfg
}
};
// Float entry with custom Min/Max range.
template <s32 Min, s32 Max>
class _float final : public _base
{
static_assert(Min < Max, "Invalid cfg::_float range");
using float_type = f64;
atomic_t<float_type> m_value;
public:
float_type def;
// Expose range
static constexpr float_type max = Max;
static constexpr float_type min = Min;
_float(node* owner, const std::string& name, float_type def = std::min<float_type>(Max, std::max<float_type>(Min, 0)), bool dynamic = false)
: _base(type::_int, owner, name, dynamic)
, m_value(def)
, def(def)
{
}
operator float_type() const
{
return m_value;
}
float_type get() const
{
return m_value;
}
void from_default() override
{
m_value = def;
}
std::string to_string() const override
{
return std::to_string(m_value);
}
std::string def_to_string() const override
{
return std::to_string(def);
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
f64 result;
if (try_to_float(&result, value, Min, Max))
{
m_value = static_cast<float_type>(result);
return true;
}
return false;
}
void set(const f64& value)
{
m_value = static_cast<float_type>(value);
}
std::vector<std::string> to_list() const override
{
return make_float_range(Min, Max);
}
};
// Alias for 32 bit int
using int32 = _int<s32{smin}, s32{smax}>;
@@ -359,6 +465,11 @@ namespace cfg
return std::to_string(m_value);
}
std::string def_to_string() const override
{
return std::to_string(def);
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
u64 result;
@@ -430,6 +541,11 @@ namespace cfg
return *m_value.load().get();
}
std::string def_to_string() const override
{
return def;
}
bool from_string(std::string_view value, bool /*dynamic*/ = false) override
{
m_value = std::string(value);
@@ -463,7 +579,7 @@ namespace cfg
std::vector<std::string> to_list() const override
{
return{ m_set.begin(), m_set.end() };
return { m_set.begin(), m_set.end() };
}
bool from_list(std::vector<std::string>&& list) override
@@ -521,4 +637,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;
};
}
+156 -21
View File
@@ -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;
@@ -437,6 +437,9 @@ std::string fs::get_parent_dir(const std::string& path, u32 levels)
bool fs::stat(const std::string& path, stat_t& info)
{
// Ensure consistent information on failure
info = {};
if (auto device = get_virtual_device(path))
{
return device->stat(path, info);
@@ -1103,10 +1106,12 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
class windows_file final : public file_base
{
const HANDLE m_handle;
atomic_t<u64> m_pos;
public:
windows_file(HANDLE handle)
: m_handle(handle)
, m_pos(0)
{
}
@@ -1162,7 +1167,39 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
const DWORD size = static_cast<DWORD>(std::min<u64>(count, DWORD{umax} & -4096));
DWORD nread = 0;
ensure(ReadFile(m_handle, data, size, &nread, nullptr)); // "file::read"
OVERLAPPED ovl{};
const u64 pos = m_pos;
ovl.Offset = DWORD(pos);
ovl.OffsetHigh = DWORD(pos >> 32);
ensure(ReadFile(m_handle, data, size, &nread, &ovl) || GetLastError() == ERROR_HANDLE_EOF); // "file::read"
nread_sum += nread;
m_pos += nread;
if (nread < size)
{
break;
}
count -= size;
data += size;
}
return nread_sum;
}
u64 read_at(u64 offset, void* buffer, u64 count) override
{
u64 nread_sum = 0;
for (char* data = static_cast<char*>(buffer); count;)
{
const DWORD size = static_cast<DWORD>(std::min<u64>(count, DWORD{umax} & -4096));
DWORD nread = 0;
OVERLAPPED ovl{};
ovl.Offset = DWORD(offset);
ovl.OffsetHigh = DWORD(offset >> 32);
ensure(ReadFile(m_handle, data, size, &nread, &ovl) || GetLastError() == ERROR_HANDLE_EOF); // "file::read"
nread_sum += nread;
if (nread < size)
@@ -1172,6 +1209,7 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
count -= size;
data += size;
offset += size;
}
return nread_sum;
@@ -1186,8 +1224,13 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
const DWORD size = static_cast<DWORD>(std::min<u64>(count, DWORD{umax} & -4096));
DWORD nwritten = 0;
ensure(WriteFile(m_handle, data, size, &nwritten, nullptr)); // "file::write"
OVERLAPPED ovl{};
const u64 pos = m_pos;
ovl.Offset = DWORD(pos);
ovl.OffsetHigh = DWORD(pos >> 32);
ensure(WriteFile(m_handle, data, size, &nwritten, &ovl)); // "file::write"
nwritten_sum += nwritten;
m_pos += nwritten;
if (nwritten < size)
{
@@ -1208,20 +1251,19 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
fmt::throw_exception("Invalid whence (0x%x)", whence);
}
LARGE_INTEGER pos;
pos.QuadPart = offset;
const s64 new_pos =
whence == fs::seek_set ? offset :
whence == fs::seek_cur ? offset + m_pos :
whence == fs::seek_end ? offset + size() : -1;
const DWORD mode =
whence == seek_set ? FILE_BEGIN :
whence == seek_cur ? FILE_CURRENT : FILE_END;
if (!SetFilePointerEx(m_handle, pos, &pos, mode))
if (new_pos < 0)
{
g_tls_error = to_error(GetLastError());
fs::g_tls_error = fs::error::inval;
return -1;
}
return pos.QuadPart;
m_pos = new_pos;
return m_pos;
}
u64 size() override
@@ -1340,16 +1382,55 @@ fs::file::file(const std::string& path, bs_t<open_mode> mode)
u64 read(void* buffer, u64 count) override
{
const auto result = ::read(m_fd, buffer, count);
ensure(result != -1); // "file::read"
u64 result = 0;
// Loop because (huge?) read can be processed partially
while (auto r = ::read(m_fd, buffer, count))
{
ensure(r > 0); // "file::read"
count -= r;
result += r;
buffer = static_cast<u8*>(buffer) + r;
if (!count)
break;
}
return result;
}
u64 read_at(u64 offset, void* buffer, u64 count) override
{
u64 result = 0;
// For safety; see read()
while (auto r = ::pread(m_fd, buffer, count, offset))
{
ensure(r > 0); // "file::read_at"
count -= r;
offset += r;
result += r;
buffer = static_cast<u8*>(buffer) + r;
if (!count)
break;
}
return result;
}
u64 write(const void* buffer, u64 count) override
{
const auto result = ::write(m_fd, buffer, count);
ensure(result != -1); // "file::write"
u64 result = 0;
// For safety; see read()
while (auto r = ::write(m_fd, buffer, count))
{
ensure(r > 0); // "file::write"
count -= r;
result += r;
buffer = static_cast<const u8*>(buffer) + r;
if (!count)
break;
}
return result;
}
@@ -1463,6 +1544,21 @@ fs::file::file(const void* ptr, usz size)
return 0;
}
u64 read_at(u64 offset, void* buffer, u64 count) override
{
if (offset < m_size)
{
// Get readable size
if (const u64 result = std::min<u64>(count, m_size - offset))
{
std::memcpy(buffer, m_ptr + offset, result);
return result;
}
}
return 0;
}
u64 write(const void*, u64) override
{
return 0;
@@ -1788,7 +1884,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 +1913,7 @@ bool fs::remove_all(const std::string& path, bool remove_root)
}
else
{
return false;
return is_no_dir_ok;
}
if (remove_root)
@@ -1828,7 +1924,7 @@ bool fs::remove_all(const std::string& path, bool remove_root)
return true;
}
u64 fs::get_dir_size(const std::string& path, u64 rounding_alignment)
u64 fs::get_dir_size(const std::string& path, u64 rounding_alignment, atomic_t<bool>* cancel_flag)
{
u64 result = 0;
@@ -1841,6 +1937,11 @@ u64 fs::get_dir_size(const std::string& path, u64 rounding_alignment)
for (const auto& entry : root_dir)
{
if (cancel_flag && *cancel_flag)
{
return umax;
}
if (entry.name == "." || entry.name == "..")
{
continue;
@@ -1948,6 +2049,40 @@ fs::file fs::make_gather(std::vector<fs::file> files)
return 0;
}
u64 read_at(u64 start, void* buffer, u64 size) override
{
if (start < end)
{
u64 pos = start;
// Get readable size
if (const u64 max = std::min<u64>(size, end - pos))
{
u8* buf_out = static_cast<u8*>(buffer);
u64 buf_max = max;
for (auto it = ends.upper_bound(pos); it != ends.end(); ++it)
{
const u64 count = std::min<u64>(it->first - pos, buf_max);
const u64 read = files[it->second].read_at(files[it->second].size() + pos - it->first, buf_out, count);
buf_out += count;
buf_max -= count;
pos += read;
if (read < count || buf_max == 0)
{
break;
}
}
return pos - start;
}
}
return 0;
}
u64 write(const void*, u64) override
{
return 0;
@@ -1981,11 +2116,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))
{
+68 -7
View File
@@ -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
@@ -89,6 +93,7 @@ namespace fs
virtual void sync();
virtual bool trunc(u64 length) = 0;
virtual u64 read(void* buffer, u64 size) = 0;
virtual u64 read_at(u64 offset, void* buffer, u64 size) = 0;
virtual u64 write(const void* buffer, u64 size) = 0;
virtual u64 seek(s64 offset, seek_mode whence) = 0;
virtual u64 size() = 0;
@@ -105,6 +110,8 @@ namespace fs
: stat_t{}
{
}
using enable_bitcopy = std::false_type;
};
// Directory handle base
@@ -159,7 +166,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);
@@ -295,6 +302,17 @@ namespace fs
return m_file->read(buffer, count);
}
// Read the data from the file at specified offset in thread-safe manner
u64 read_at(u64 offset, void* buffer, u64 count,
u32 line = __builtin_LINE(),
u32 col = __builtin_COLUMN(),
const char* file = __builtin_FILE(),
const char* func = __builtin_FUNCTION()) const
{
if (!m_file) xnull({line, col, file, func});
return m_file->read_at(offset, buffer, count);
}
// Write the data to the file and return the amount of data actually written
u64 write(const void* buffer, u64 count,
u32 line = __builtin_LINE(),
@@ -637,7 +655,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,10 +666,10 @@ 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);
u64 get_dir_size(const std::string& path, u64 rounding_alignment = 1, atomic_t<bool>* cancel_flag = nullptr);
enum class error : uint
{
@@ -681,9 +699,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 +713,7 @@ namespace fs
bool trunc(u64 length) override
{
obj.resize(length);
update_time(true);
return true;
}
@@ -708,6 +728,25 @@ namespace fs
{
std::copy(obj.cbegin() + pos, obj.cbegin() + pos + max, static_cast<value_type*>(buffer));
pos = pos + max;
update_time();
return max;
}
}
return 0;
}
u64 read_at(u64 offset, void* buffer, u64 size) override
{
const u64 end = obj.size();
if (offset < end)
{
// Get readable size
if (const u64 max = std::min<u64>(size, end - offset))
{
std::copy(obj.cbegin() + offset, obj.cbegin() + offset + max, static_cast<value_type*>(buffer));
update_time();
return max;
}
}
@@ -743,6 +782,7 @@ namespace fs
obj.insert(obj.end(), src + overlap, src + size);
pos += size;
if (size) update_time(true);
return size;
}
@@ -767,13 +807,34 @@ 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++;
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;
}
+538 -7
View File
@@ -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>
@@ -18,6 +20,34 @@ LOG_CHANNEL(jit_log, "JIT");
void jit_announce(uptr func, usz size, std::string_view name)
{
#ifdef __linux__
static const struct tmp_perf_map
{
std::string name{fmt::format("/tmp/perf-%d.map", getpid())};
fs::file data{name, fs::rewrite + fs::append};
tmp_perf_map() = default;
tmp_perf_map(const tmp_perf_map&) = delete;
tmp_perf_map& operator=(const tmp_perf_map&) = delete;
~tmp_perf_map()
{
fs::remove_file(name);
}
} s_map;
if (size && name.size())
{
s_map.data.write(fmt::format("%x %x %s\n", func, size, name));
}
if (!func && !size && !name.size())
{
fs::remove_file(s_map.name);
return;
}
#endif
if (!size)
{
jit_log.error("Empty function announced: %s (%p)", name, func);
@@ -81,12 +111,6 @@ void jit_announce(uptr func, usz size, std::string_view name)
dump.write(reinterpret_cast<uchar*>(func), size);
}
}
#ifdef __linux__
static const fs::file s_map(fmt::format("/tmp/perf-%d.map", getpid()), fs::rewrite + fs::append);
s_map.write(fmt::format("%x %x %s\n", func, size, name));
#endif
}
static u8* get_jit_memory()
@@ -196,7 +220,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 +276,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 +293,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 +375,473 @@ 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(0);
consts[~v128()] = this->newLabel();
}
asmjit::simd_builder::~simd_builder()
{
}
void asmjit::simd_builder::_init(uint new_vsize)
{
if ((!new_vsize && utils::has_avx512_icl()) || new_vsize == 64)
{
v0 = x86::zmm0;
v1 = x86::zmm1;
v2 = x86::zmm2;
v3 = x86::zmm3;
v4 = x86::zmm4;
v5 = x86::zmm5;
vsize = 64;
}
else if ((!new_vsize && utils::has_avx2()) || new_vsize == 32)
{
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 = new_vsize ? new_vsize : 16;
}
if (utils::has_avx512())
{
if (!new_vsize)
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_avx())
{
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");
}
}
void asmjit::simd_builder::vec_broadcast_gpr(u32 esize, const Operand& v, const x86::Gp& r)
{
if (esize == 2)
{
if (utils::has_avx512())
this->emit(x86::Inst::kIdVpbroadcastw, v, r.r32());
else if (utils::has_avx())
{
this->emit(x86::Inst::kIdVmovd, v, r.r32());
if (utils::has_avx2())
this->emit(x86::Inst::kIdVpbroadcastw, v, v);
else
{
this->emit(x86::Inst::kIdVpunpcklwd, v, v, v);
this->emit(x86::Inst::kIdVpshufd, v, v, Imm(0));
}
}
else
{
this->emit(x86::Inst::kIdMovd, v, r.r32());
this->emit(x86::Inst::kIdPunpcklwd, v, v);
this->emit(x86::Inst::kIdPshufd, v, v, Imm(0));
}
}
else if (esize == 4)
{
if (utils::has_avx512())
this->emit(x86::Inst::kIdVpbroadcastd, v, r.r32());
else if (utils::has_avx())
{
this->emit(x86::Inst::kIdVmovd, v, r.r32());
if (utils::has_avx2())
this->emit(x86::Inst::kIdVpbroadcastd, v, v);
else
this->emit(x86::Inst::kIdVpshufd, v, v, Imm(0));
}
else
{
this->emit(x86::Inst::kIdMovd, v, r.r32());
this->emit(x86::Inst::kIdPshufd, v, v, Imm(0));
}
}
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) || vsize >= 64)
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) || vsize >= 64)
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) || vsize >= 64)
this->emit(x86::Inst::kIdVmovdqu64, v, src);
else
return vec_load_unaligned(vsize, v, src);
}
else if (esize >= 16)
{
ensure(vsize >= 16);
if ((vmask && vmask < 8) || vsize >= 64)
this->emit(x86::Inst::kIdVmovdqu64, v, src); // Not really needed
else 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 (evex_op != x86::Inst::kIdNone && (vex_op == x86::Inst::kIdNone || this->_extraReg.isReg() || vsize >= 64))
{
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_cmp_eq(u32 esize, const Operand& dst, const Operand& lhs, const Operand& rhs)
{
using enum x86::Inst::Id;
if (esize == 2)
{
if (vsize == 64)
{
this->evex().emit(kIdVpcmpeqw, x86::k0, lhs, rhs);
this->evex().emit(kIdVpmovm2w, dst, x86::k0);
}
else
{
_vec_binary_op(kIdPcmpeqw, kIdVpcmpeqw, kIdNone, dst, lhs, rhs);
}
}
else if (esize == 4)
{
if (vsize == 64)
{
this->evex().emit(kIdVpcmpeqd, x86::k0, lhs, rhs);
this->evex().emit(kIdVpmovm2d, dst, x86::k0);
}
else
{
_vec_binary_op(kIdPcmpeqw, kIdVpcmpeqw, kIdNone, dst, lhs, rhs);
}
}
else
{
fmt::throw_exception("Unimplemented");
}
}
void asmjit::simd_builder::vec_extract_high(u32, const Operand& dst, const Operand& src)
{
if (vsize == 32)
this->vextracti32x8(x86::Ymm(dst.id()), x86::Zmm(src.id()), 1);
else if (vsize == 16)
this->vextracti128(x86::Xmm(dst.id()), x86::Ymm(src.id()), 1);
else
{
if (utils::has_avx())
this->vpsrldq(x86::Xmm(dst.id()), x86::Xmm(src.id()), vsize);
else
{
this->movdqa(x86::Xmm(dst.id()), x86::Xmm(src.id()));
this->psrldq(x86::Xmm(dst.id()), vsize);
}
}
}
void asmjit::simd_builder::vec_extract_gpr(u32 esize, const x86::Gp& dst, const Operand& src)
{
if (esize == 8 && utils::has_avx())
this->vmovq(dst.r64(), x86::Xmm(src.id()));
else if (esize == 8)
this->movq(dst.r64(), x86::Xmm(src.id()));
else if (esize == 4 && utils::has_avx())
this->vmovd(dst.r32(), x86::Xmm(src.id()));
else if (esize == 4)
this->movd(dst.r32(), x86::Xmm(src.id()));
else if (esize == 2 && utils::has_avx())
this->vpextrw(dst.r32(), x86::Xmm(src.id()), 0);
else if (esize == 2)
this->pextrw(dst.r32(), x86::Xmm(src.id()), 0);
else
fmt::throw_exception("Unimplemented");
}
#endif /* X86 */
#ifdef LLVM_AVAILABLE
#include <unordered_map>
@@ -432,6 +939,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 +1362,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 +1378,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 +1487,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();
+210 -34
View File
@@ -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,182 @@ 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(uint new_vsize = 0);
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);
void vec_broadcast_gpr(u32 esize, const Operand& v, const x86::Gp& r);
// 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_andn(u32, const Operand& dst, const Operand& lhs, const Operand& rhs)
{
using enum x86::Inst::Id;
_vec_binary_op(kIdPandn, kIdVpandn, kIdVpandnd, 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_cmp_eq(u32 esize, const Operand& dst, const Operand& lhs, const Operand& rhs);
void vec_extract_high(u32 esize, const Operand& dst, const Operand& src);
void vec_extract_gpr(u32 esize, const x86::Gp& dst, const Operand& src);
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, const x86::Gp& reg_ctr, const x86::Gp& 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->cmp(reg_cnt, step);
this->jb(next); // If count < step, skip main loop body
this->align(AlignMode::kCode, 16);
this->bind(body);
this->sub(reg_cnt, step);
build();
this->add(reg_ctr, step);
this->cmp(reg_cnt, step);
this->jae(body);
this->bind(next);
if (vmask)
{
// Build single last iteration (masked)
this->test(reg_cnt, reg_cnt);
this->jz(exit);
if (esize == 1 && vsize == 64)
{
this->bzhi(reg_cnt.r64(), x86::Mem(consts[~u128()], 0), reg_cnt.r64());
this->kmovq(x86::k7, reg_cnt.r64());
}
else
{
this->bzhi(reg_cnt.r32(), x86::Mem(consts[~u128()], 0), reg_cnt.r32());
this->kmovd(x86::k7, reg_cnt.r32());
}
vmask = 7;
build();
// Rollout reduction step
this->bind(exit);
while (true)
{
vsize /= 2;
if (vsize < esize)
break;
this->_init(vsize);
reduce();
}
}
else
{
// Build unrolled loop tail (reduced vector width)
while (true)
{
vsize /= 2;
if (vsize < esize)
break;
// Shall not clobber flags
this->_init(vsize);
reduce();
if (vsize == esize)
{
// Last "iteration"
this->test(reg_cnt, reg_cnt);
this->jz(exit);
build();
}
else
{
const u32 step = vsize / esize;
Label next = this->newLabel();
this->cmp(reg_cnt, step);
this->jb(next);
build();
this->add(reg_ctr, step);
this->sub(reg_cnt, step);
this->bind(next);
}
}
this->bind(exit);
}
this->_init(0);
}
};
// for (; count > 0; ctr++, count--)
inline void build_loop(native_asm& c, auto ctr, auto count, auto&& build)
@@ -262,16 +405,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 +476,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 +532,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);
+37 -3
View File
@@ -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)
{
@@ -426,7 +449,7 @@ struct fmt::cfmt_src
{
// Hack: use known function pointers to determine type
#define TYPE(type) \
if (sup[extra].fmt_string == &fmt_class_string<type>::format) return sizeof(type);
if (sup[extra].fmt_string == &fmt_class_string<type>::format) return sizeof(type);
TYPE(int);
TYPE(llong);
@@ -434,10 +457,11 @@ struct fmt::cfmt_src
TYPE(short);
if (std::is_signed<char>::value) TYPE(char);
TYPE(long);
TYPE(u128);
TYPE(s128);
#undef TYPE
if (sup[extra].fmt_string == &fmt_class_string<u128>::format)
return -1;
return 0;
}
@@ -592,3 +616,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 {};
}
+11
View File
@@ -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
+8 -3
View File
@@ -8,16 +8,15 @@
#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>
inline void strcpy_trunc(D& dst, const T& src)
{
const usz count = std::size(src) >= std::size(dst) ? std::size(dst) - 1 : std::size(src);
const usz count = std::size(src) >= std::size(dst) ? std::max<usz>(std::size(dst), 1) - 1 : std::size(src);
std::memcpy(std::data(dst), std::data(src), count);
std::memset(std::data(dst) + count, 0, std::size(dst) - count);
}
@@ -28,6 +27,12 @@ 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);
// Convert string to float
bool try_to_float(f64* out, std::string_view value, f64 min, f64 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);
+89 -35
View File
@@ -8,7 +8,6 @@
#include "Thread.h"
#include "Utilities/JIT.h"
#include <thread>
#include <sstream>
#include <cfenv>
#ifdef _WIN32
@@ -17,6 +16,9 @@
#include <process.h>
#include <sysinfoapi.h>
#else
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#ifdef __APPLE__
#define _XOPEN_SOURCE
#define __USE_GNU
@@ -94,35 +96,21 @@ thread_local bool g_tls_access_violation_recovered = false;
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();
}
[[noreturn]] void report_fatal_error(std::string_view text, bool is_html = false, bool include_help_text = true);
std::string dump_useful_thread_info()
{
thread_local volatile bool guard = false;
std::string result;
// In case the dumping function was the cause for the exception/access violation
// Avoid recursion
if (std::exchange(guard, true))
{
return result;
}
if (auto cpu = get_current_cpu_thread())
{
result = cpu->dump_all();
// Wrap it to disable some internal exceptions when printing (not thrown on main thread)
Emu.BlockingCallFromMainThread([&]()
{
cpu->dump_all(result);
});
}
guard = false;
return result;
}
@@ -1248,16 +1236,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 +1413,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 +1425,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 +1479,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 +1526,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 +1634,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());
}
}
@@ -1927,7 +1921,10 @@ const bool s_terminate_handler_set = []() -> bool
std::set_terminate([]()
{
if (IsDebuggerPresent())
{
logs::listener::sync_all();
utils::trap();
}
report_fatal_error("RPCS3 has abnormally terminated.");
});
@@ -2065,7 +2062,7 @@ void thread_base::set_name(std::string name)
u64 thread_base::finalize(thread_state result_state) noexcept
{
// Report pending errors
error_code::error_report(0, 0, 0, 0);
error_code::error_report(0, nullptr, nullptr, nullptr, nullptr);
#ifdef _WIN32
static thread_local ULONG64 tls_cycles{};
@@ -2318,14 +2315,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 +2376,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;
@@ -2598,7 +2647,10 @@ void thread_base::exec()
sig_log.fatal("Thread terminated due to fatal error: %s", reason);
if (IsDebuggerPresent())
{
logs::listener::sync_all();
utils::trap();
}
if (const auto _this = g_tls_this_thread)
{
@@ -3083,6 +3135,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
View File
@@ -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
View File
@@ -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
+48 -17
View File
@@ -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);
@@ -690,8 +703,6 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
}
case patch_type::code_alloc:
{
relocate_instructions_at = 0;
const u32 out_branch = vm::try_get_addr(dst + (offset & -4)).first;
// Allow only if points to a PPU executable instruction
@@ -702,10 +713,17 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
const u32 alloc_size = utils::align(static_cast<u32>(p.value.long_value + 1) * 4, 0x10000);
// Check if should maybe reuse previous code cave allocation (0 size)
if (alloc_size - 4 != 0)
{
// Nope
relocate_instructions_at = 0;
}
// Always executable
u64 flags = vm::alloc_executable | vm::alloc_unwritable;
switch (p.offset % patch_engine::mem_protection::mask)
switch (p.offset & patch_engine::mem_protection::mask)
{
case patch_engine::mem_protection::rw:
case patch_engine::mem_protection::wx:
@@ -725,7 +743,7 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
// Range allowed for absolute branches to operate at
// It takes into account that we need to put a branch for return at the end of memory space
const u32 addr = p.alloc_addr = alloc_map->alloc(alloc_size, nullptr, 0x10000, flags);
const u32 addr = p.alloc_addr = (relocate_instructions_at ? relocate_instructions_at : alloc_map->alloc(alloc_size, nullptr, 0x10000, flags));
if (!addr)
{
@@ -738,18 +756,31 @@ static usz apply_modification(std::basic_string<u32>& applied, const patch_engin
// NOP filled
std::fill_n(vm::get_super_ptr<u32>(addr), p.value.long_value, 0x60000000);
// Register code
ppu_register_range(addr, alloc_size);
// Check if already registered by previous code allocation
if (relocate_instructions_at != addr)
{
// Register code
ppu_register_range(addr, alloc_size);
}
// Write branch to code
ppu_form_branch_to_code(out_branch, addr);
resval = out_branch & -4;
// Write address of the allocated memory to the code entry
*vm::get_super_ptr<u32>(resval) = addr;
// Write branch to return to code
ppu_form_branch_to_code(addr + static_cast<u32>(p.value.long_value) * 4, resval + 4);
if (!ppu_form_branch_to_code(addr + static_cast<u32>(p.value.long_value) * 4, resval + 4))
{
patch_log.error("Failed to write return jump at 0x%x", addr + static_cast<u32>(p.value.long_value) * 4);
ensure(alloc_map->dealloc(addr));
continue;
}
// Write branch to code
if (!ppu_form_branch_to_code(out_branch, addr))
{
patch_log.error("Failed to jump to code cave at 0x%x", out_branch);
ensure(alloc_map->dealloc(addr));
continue;
}
relocate_instructions_at = addr;
break;
}
@@ -926,7 +957,7 @@ std::basic_string<u32> patch_engine::apply(const std::string& name, u8* dst, u32
}
std::basic_string<u32> applied_total;
const auto& container = m_map.at(name);
const auto& container = ::at32(m_map, name);
const auto& serial = Emu.GetTitleID();
const auto& app_version = Emu.GetAppVersion();
@@ -962,7 +993,7 @@ std::basic_string<u32> patch_engine::apply(const std::string& name, u8* dst, u32
continue;
}
const auto& app_versions = serials.at(found_serial);
const auto& app_versions = ::at32(serials, found_serial);
std::string found_app_version;
if (app_versions.find(app_version) != app_versions.end())
@@ -975,7 +1006,7 @@ std::basic_string<u32> patch_engine::apply(const std::string& name, u8* dst, u32
is_all_versions = true;
}
if (!found_app_version.empty() && app_versions.at(found_app_version))
if (!found_app_version.empty() && ::at32(app_versions, found_app_version))
{
// This patch is enabled
if (is_all_serials)
@@ -1060,7 +1091,7 @@ void patch_engine::unload(const std::string& name)
return;
}
const auto& container = m_map.at(name);
const auto& container = ::at32(m_map, name);
for (const auto& [description, patch] : container.patch_info_map)
{
+4 -4
View File
@@ -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);
}
+33 -20
View File
@@ -367,9 +367,11 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
break;
}
if (!ctx.type)
const usz src_type = src.type(ctx.args);
if (!ctx.type || src_type > 8)
{
ctx.type = static_cast<u8>(src.type(ctx.args));
ctx.type = static_cast<u8>(src_type);
if (!ctx.type)
{
@@ -379,7 +381,13 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
// Sign-extended argument expected
const u64 val = src.template get<u64>(ctx.args);
const bool negative = ctx.type && static_cast<s64>(val) < 0;
bool negative = ctx.type && ctx.type <= 8 && static_cast<s64>(val) < 0;
if (ctx.type == 16)
{
u128 val2 = *reinterpret_cast<const u128*>(val);
negative = !!(val2 & (u128{1} << 127));
}
const usz start = out.size();
@@ -398,15 +406,14 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
out.push_back(' ');
}
if (ctx.type == 16)
if (ctx.type >= 16)
{
// TODO: support negative values (s128)
u128 val2 = *reinterpret_cast<u128*>(val);
write_decimal(val2, ctx.prec);
u128 val2 = *reinterpret_cast<const u128*>(val);
write_decimal(negative ? u128{} - val2 : val2, ctx.prec);
}
else
{
write_decimal(negative ? 0 - val : val, ctx.prec);
write_decimal(negative ? u64{} - val : val, ctx.prec);
}
}
@@ -438,9 +445,11 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
break;
}
if (!ctx.type)
const usz src_type = src.type(ctx.args);
if (!ctx.type || src_type > 8)
{
ctx.type = static_cast<u8>(src.type(ctx.args));
ctx.type = static_cast<u8>(src_type);
if (!ctx.type)
{
@@ -471,9 +480,9 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
if ((ctx.alter && val) || !ctx.dot || ctx.prec)
{
if (ctx.type == 16)
if (ctx.type >= 16)
{
u128 val2 = *reinterpret_cast<u128*>(val);
u128 val2 = *reinterpret_cast<const u128*>(val);
write_octal(val2, ctx.prec);
}
else
@@ -504,9 +513,11 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
break;
}
if (!ctx.type)
const usz src_type = src.type(ctx.args);
if (!ctx.type || src_type > 8)
{
ctx.type = static_cast<u8>(src.type(ctx.args));
ctx.type = static_cast<u8>(src_type);
if (!ctx.type)
{
@@ -537,9 +548,9 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
if ((ctx.alter && val) || !ctx.dot || ctx.prec)
{
if (ctx.type == 16)
if (ctx.type >= 16)
{
u128 val2 = *reinterpret_cast<u128*>(val);
u128 val2 = *reinterpret_cast<const u128*>(val);
write_hex(val2, ch == 'X', ctx.prec);
}
else
@@ -576,9 +587,11 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
break;
}
if (!ctx.type)
const usz src_type = src.type(ctx.args);
if (!ctx.type || src_type > 8)
{
ctx.type = static_cast<u8>(src.type(ctx.args));
ctx.type = static_cast<u8>(src_type);
if (!ctx.type)
{
@@ -599,9 +612,9 @@ usz cfmt_append(Dst& out, const Char* fmt, Src&& src)
if (!ctx.dot || ctx.prec)
{
if (ctx.type == 16)
if (ctx.type >= 16)
{
u128 val2 = *reinterpret_cast<u128*>(val);
u128 val2 = *reinterpret_cast<const u128*>(val);
write_decimal(val2, ctx.prec);
}
else
+6
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+5
View File
@@ -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
View File
@@ -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
View File
@@ -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;
};
+144
View File
@@ -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
}
+46
View File
@@ -0,0 +1,46 @@
#pragma once
#include <util/types.hpp>
#include <util/logs.hpp>
namespace utils
{
namespace stack_trace
{
// Printing utilities
template <typename T>
concept Logger = requires (T& t, const std::string& msg)
{
{ t.print(msg) };
};
struct print_to_log
{
logs::channel& log;
public:
print_to_log(logs::channel& chan)
: log(chan)
{}
void print(const std::string& s)
{
log.error("%s", s);
}
};
}
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(stack_trace::Logger auto& 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.print(line);
}
}
}
+2 -2
View File
@@ -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;
+159
View File
@@ -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{};
};
+4 -2
View File
@@ -30,7 +30,8 @@ namespace utils
if (lo())
{
version += "." + std::to_string(lo());
version += '.';
version += std::to_string(lo());
}
if (type() != version_type::release)
@@ -40,7 +41,8 @@ namespace utils
version += "-" + postfix();
}
version += " " + utils::to_string(type());
version += ' ';
version += utils::to_string(type());
if (type_index() > 1)
{
+2 -2
View File
@@ -70,8 +70,8 @@ jobs:
QT_VER_MSVC: 'msvc2019'
QT_DATE: '202011130602'
QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64
VULKAN_VER: '1.3.204.0'
VULKAN_SDK_SHA: '41f4996335cc5a545d7b2f6e5ff29cf3867789aae4be053a7069aa93408861fa'
VULKAN_VER: '1.3.224.1'
VULKAN_SDK_SHA: '2029e652e39ee6a6036cff3765da31e1e6c595fd2413d3cd111dfab7855621ea'
VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER)
CACHE_DIR: ./cache
UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e
+79 -53
View File
@@ -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;
}
+64 -41
View File
@@ -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;
}
+855
View File
@@ -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"}

Some files were not shown because too many files have changed in this diff Show More