GS/DB/ImGui: Various changes#14601
Merged
Merged
Conversation
Mrlinkwii
suggested changes
Jun 20, 2026
Mrlinkwii
left a comment
Contributor
There was a problem hiding this comment.
GameIndex.md also needs updating
Mrlinkwii
suggested changes
Jun 24, 2026
Mrlinkwii
left a comment
Contributor
There was a problem hiding this comment.
GameIndex.md still needs updating
Mrlinkwii
approved these changes
Jun 25, 2026
Hancock33
added a commit
to Hancock33/batocera.piboy
that referenced
this pull request
Jun 28, 2026
------------------------------------------------------------------------------------------ dolphin-emu.mk baf91d4436449ef9b7e5afe2988cbba0fcc60eb8 # Version: Commits on Jun 25, 2026 ------------------------------------------------------------------------------------------ Merge pull request #14591 from TryTwo/Registers_Fix Debugger: Register Widget bug fix. Block updates when changing types, ------------------------------------------------------------------------------------------ duckstation.mk ad705e7d873aa98ec71d6e6df170c0b07db832df # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------------ Qt: Fix saved geometry being lost in nogui mode, ----------------------------------------------------------------------------------- eden.mk 629ebf1bdee023d3d3ecc96c3276cf3285f8f727 # Version: Commits on Jun 26, 2026 ----------------------------------------------------------------------------------- [video_core/maxwell3d] compute macro param address on demand (#4067) ---------------------------------------------------- pcsx2.mk v2.7.431 # Version: Commits on Jun 26, 2026 ---------------------------------------------------- - [GS/DB/ImGui: Various changes](PCSX2/pcsx2#14601) ------------------------------------------------------------------------------------- ppsspp.mk dee3cbac84f5a905661e2204d04ef47cc1fba32a # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------- Merge pull request #21859 from hrydgard/vulkan-lifetime-issue Fix a Vulkan lifetime issue causing invalid descriptors on shutdown, ------------------------------------------------------------------------------------ rpcs3.mk a7fc31f3212c55bf0b70b45875c52dfc94f6641a # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------ [SPU LLVM] Additional `SHUFB` splat/special-index fast paths (#18945), ----------------------------------------------------- ryujinx.mk 1.3.322 # Version: Commits on Jun 26, 2026 ----------------------------------------------------- 1.3.322 ----------------------------------------------------------------------------------------- xenia-edge.mk 58a8fd5ce0961e901c2cd4a2e78f8f4b46e2b34a # Version: Commits on Jun 26, 2026 ----------------------------------------------------------------------------------------- Merge remote-tracking branch 'upstream/canary_experimental' into edge (no-op, revert upstream changes keeping local), ----------------------------------------------------------------------------------- ymir.mk f042cb5bfbaa35e68e65ad27fae1a07c51aa33b0 # Version: Commits on Jun 26, 2026 ----------------------------------------------------------------------------------- fix(gamedb): Slow down VDP1 execution speed in 3D Baseball to fix team name plates and announcer voice line glitches, ------------------------------------------------------------------------------------------- moonlight-qt.mk e223bf9a1beffdda71df31a22321f45d16c9f3fe # Version: Commits on Jun 15, 2026 ------------------------------------------------------------------------------------------- Use libplacebo renderer on macOS, --------------------------------------------------------------- ruffle.mk nightly-2026-06-26 # Version: Commits on Jun 26, 2026 --------------------------------------------------------------- ## What's Changed * ci: Update Edge wdio headless arguments for stability by @danielhjacobs in ruffle-rs/ruffle#24064 **Full Changelog**: ruffle-rs/ruffle@nightly-2026-06-25...nightly-2026-06-26, --------------------------------------------------------------------------------------- thextech.mk 2f29bfc62b90a11222c94cea4d34889634143f0e # Version: Commits on Jun 26, 2026 --------------------------------------------------------------------------------------- Wii: add overscan options (#1148), ------------------------------------------------------------------------ aic8800.mk 5.0+git20260123.5f7be68d-6 # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------ feat: release 5.0+git20260123.5f7be68d-6, ------------------------------------------------ 7zip.mk 26.02 # Version: Commits on Jun 25, 2026 ------------------------------------------------ 26.02, ---------------------------------------------------------------------------------------- ryzen-smu.mk 1be4fb1cd9d60b5ddefc2a4201a898766a731400 # Version: Commits on Jun 25, 2026 ---------------------------------------------------------------------------------------- smu: document verified support for Ryzen AI 9 HX 370 (Strix Point) (#47) Tested on AMD Ryzen AI 9 HX 370: - CPUID: family 0x1A, model 0x24, stepping 0x0 - Codename resolved via case 0x24 -> CODENAME_STRIXPOINT - PM table version: 0x005D0009, size: 0xD54 (3412 bytes) - SMU firmware: 11.93.4.0, MP1 IF version: 13 - All PM table sensors read successfully Signed-off-by: Salman Wahib <sxlmnwb.dev@gmail.com>, ----------------------------------------------------------- syncthing.mk v2.1.2-rc.4 # Version: Commits on Jun 26, 2026 ----------------------------------------------------------- ## Major changes in 2.1 - Devices and folders can now be grouped in the GUI by setting the new `group` attribute. - HTTP and HTTPS proxies with support for CONNECT can now be used, in addition to the existing support for SOCKS proxies (the environment variable `all_proxy=https://...`). - Block indexing can be turned off for folders where it's more desirable to optimise for reduced database size and overhead than minimal transfer size (the `blockIndexing` attribute on folder configuration). - GUI login session duration can be configured to be longer or shorter than the default one week, or set to infinitely long. The cookie path can also be adjusted. (The `sessionCookieDurationS` and `sessionCookiePath` attributes in the GUI configuration.) This release is also available as: * APT repository: https://apt.syncthing.net/ * Docker image: `docker.io/syncthing/syncthing:2.1.2-rc.4` or `ghcr.io/syncthing/syncthing:2.1.2-rc.4` (`{docker,ghcr}.io/syncthing/syncthing:2` to follow just the major version) ## What's Changed ### Fixes * fix: on Windows don't allocate console if not opened inside one by @Shablone in syncthing/syncthing#10726 * fix(connections): do not report connection metrics for self (ref #10509) by @calmh in syncthing/syncthing#10724 * fix: let umask do the thing by @calmh in syncthing/syncthing#10723 * fix(fs, model): improve symlink resilience in file shortcut by @calmh in syncthing/syncthing#10739 * fix(protocol): always expect & validate block hash in requests by @calmh in syncthing/syncthing#10738 * fix(protocol): be more stringent about blocks in non-file entries by @calmh in syncthing/syncthing#10737 * fix(protocol): loosen restriction on size of directory entries by @calmh in syncthing/syncthing#10743 * fix(folder): check if context canceled when scanning (fixes #10363) by @henriksb1 in syncthing/syncthing#10757 * fix(config): remove extraneous defaults setting while unmarshalling folder options (fixes #10746, fixes #10389) by @calmh in syncthing/syncthing#10763 * fix(sqlite): update last migration to set schema version, counts by @calmh in syncthing/syncthing#10768 ### Other * chore(syncthing): open URLs via Windows API instead via cmd.exe by @Shablone in syncthing/syncthing#10712 * chore(db, model): separate methods to drop a device vs its files by @imsodin in syncthing/syncthing#10480 * build(deps): update dependencies by @calmh in syncthing/syncthing#10740 * build: use Go 1.26 for Windows as well by @calmh in syncthing/syncthing#10744 * chore(osutil): fixup test for symlinked folder root by @calmh in syncthing/syncthing#10758 * chore(model): increase default value for num hashers by @calmh in syncthing/syncthing#10761 * chore: stop treating dirs as having size 128 by @imsodin in syncthing/syncthing#10750 * chore(versioner): attempt to prevent blatantly unsafe external versioner commands (fixes #10721) by @calmh in syncthing/syncthing#10722 ## New Contributors * @Shablone made their first contribution in syncthing/syncthing#10712 * @henriksb1 made their first contribution in syncthing/syncthing#10757 **Full Changelog**: syncthing/syncthing@v2.1.1...v2.1.2-rc.4, ------------------------------------------------------------------------------------------- shader-slang.mk 1a0c2a6d1110969d2d0fc4d24971fb5d69811327 # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------------- Restrict WaveGetWaveIndex / WaveGetNumWaves to compute-class stages via capability (#11769) ## Motivation `WaveGetWaveIndex()` and `WaveGetNumWaves()` emit spec-invalid SPIR-V (and invalid GLSL) when called from a raytracing entry point. Repro: ```slang RWStructuredBuffer<uint> output; [shader( aygeneration\)] void main() { output[0] = WaveGetWaveIndex(); output[1] = WaveGetNumWaves(); } ``` ``` SLANG_RUN_SPIRV_VALIDATION=1 slangc -target spirv -entry main -stage raygeneration -emit-spirv-directly -o out.spv repro.slang ``` ``` [VUID-SubgroupId-SubgroupId-04367] Vulkan spec allows BuiltIn SubgroupId to be used only with GLCompute, MeshNV, TaskNV, MeshEXT or TaskEXT execution model. ``` Both lower to GLSL `gl_SubgroupID` / `gl_NumSubgroups` and SPIR-V `BuiltIn SubgroupId` / `NumSubgroups`, which the GLSL and Vulkan SPIR-V environment specs restrict to compute-class execution models (VUID-SubgroupId-SubgroupId-04367 / VUID-NumSubgroups-NumSubgroups-04293). The failure only surfaced downstream at `spirv-val` time. ## Proposed solution Encode the stage restriction in the **capability system** rather than with a `static_assert` in the intrinsic body (per maintainer feedback that this class of error belongs to the capability system, not static-assert / IR checking). Add a `subgroup_workgroup_index` capability that, on `glsl`/`spirv`, only permits compute-class stages (`compute`, `mesh`, `amplification`) while keeping the existing atoms for the other targets (`_sm_6_0`, `_cuda_sm_7_0`, `wgsl`, `metal`, which retain their own compute-only `__stage_switch` handling). `[require(...)]` it on the two intrinsics, and propagate it to the `gl_NumSubgroups` / `gl_SubgroupID` GLSL compatibility properties that wrap them. Misuse from any other stage is now a capability diagnostic (`E36107`) at compile time: ``` error[E36107]: unavailable features in entry point --> repro.slang:4:6 | 4 | void main() | ^^^^ entrypoint 'main' uses features that are not available in '_raygen' stage for 'spirv' compilation target. ``` This mirrors the existing `WorkgroupCount()` precedent (`[require(glsl_spirv, GLSL_430_SPIRV_1_0_compute)]` + `[require(glsl_spirv, meshshading)]`), and unlike amending `subgroup_basic` directly it does **not** over-restrict the many other subgroup intrinsics (`WaveGetLaneIndex`, ballot/vote/arithmetic ops) that are valid in all stages. ## Change summary | File | Change | | --- | --- | | `source/slang/slang-capabilities.capdef` | Add `subgroup_workgroup_index` capability: compute-class-only on glsl/spirv, unchanged elsewhere. | | `source/slang/hlsl.meta.slang` | `WaveGetWaveIndex` / `WaveGetNumWaves` now `[require(..., subgroup_workgroup_index)]`; docstrings note the stage restriction. | | `source/slang/glsl.meta.slang` | `gl_NumSubgroups` / `gl_SubgroupID` properties require `subgroup_workgroup_index` so the restriction propagates through the GLSL-compat layer. | | `docs/user-guide/a3-02-reference-capability-atoms.md` | Regenerated capability reference (new atom entry). | | `tests/spirv/wave-get-wave-index-raytracing.slang` | New `DIAGNOSTIC_TEST` asserting the `E36107` capability diagnostic from a raygeneration entry point. | ## Concepts and vocabulary - **Capability atom / `[require(target, feature)]`**: a function declares the target+feature capabilities its body needs. `getDeclaredCapabilitySet` (slang-check-decl.cpp) unions the requirements; `processLateRequireCapabilityInsts` (slang-ir-late-require-capability.cpp) checks an entry point's stage/target against them and emits `entry-point-uses-unavailable-capability` (E36107) on a mismatch. - **Stage \keyhole\**: an entry point carries exactly one stage atom (e.g. `_raygen`); a `+ compute`/`+ mesh`/`+ amplification` conjunction in the required set means the set is unsatisfiable for any other stage, which is what produces the diagnostic. - **`subgroup_workgroup_index`**: the new atom. On glsl/spirv it is `GL_KHR_shader_subgroup_basic + {compute|mesh|amplification}`; on the other targets it is the same disjuncts `subgroup_basic` uses. ## Process report The defect is that `WaveGetWaveIndex`/`WaveGetNumWaves` advertised, via `[require(..., subgroup_basic)]`, that they work on every stage `subgroup_basic` allows, when on glsl/spirv they are only valid on compute-class stages. The principled fix is to make the declared capability match reality, so the capability checker (which already exists for exactly this purpose) rejects misuse — instead of detecting it with a `static_assert` in the lowering body, which is the wrong layer. `subgroup_basic` itself is shared by many subgroup intrinsics that *are* valid in fragment/vertex/etc., so restricting it would be wrong (over-restriction). Hence a dedicated `subgroup_workgroup_index` atom applied only to the two affected intrinsics. Verified that `WaveGetLaneIndex` (still `subgroup_basic`) continues to pass the capability check in a fragment shader, confirming the new atom is correctly scoped. The capability change exposed a real dependency in the core module: the GLSL-compat properties `gl_NumSubgroups` / `gl_SubgroupID` (glsl.meta.slang) call these intrinsics and previously declared `[require(glsl_spirv, subgroup_basic)]`. After the change the checker reported `E36117 'dependencies not compatible on stage'` for them — correctly, since a wrapper that claims all-stage support cannot call a compute-class-only callee. These GLSL builtins carry the same spec restriction, so propagating `subgroup_workgroup_index` to them is the correct fix, not a workaround. Verified on a debug build: raygeneration → `E36107`; compute and mesh → valid SPIR-V under `SLANG_RUN_SPIRV_VALIDATION=1`. Tests: `tests/spirv/` (463), `tests/*wave*` (106), `tests/*capability*` (128) all pass. Fixes #11303, ----------------------------------------------- dxvk.mk v3.0 # Version: Commits on Jun 25, 2026 ----------------------------------------------- ## Shader compiler changes DXVK now uses [dxbc-spirv](https://github.com/doitsujin/dxbc-spirv) for shader compilation, replacing the legacy shader translation code for all supported shader models. This fixes a number of issues that were previously impossible to address: - Rendering issues in games that are caused either by games relying on undefined behaviour, or by FXC generating invalid code in some cases, as seen in **Postal: Brain Damaged** (#3488) and **Snowrunner** (see Mesa issue [#13251](https://gitlab.freedesktop.org/mesa/mesa/-/issues/13251)). - The generated code is more compact than naively translated SPIR-V, which substantially reduces DXVK's memory footprint. In games such as **Overwatch** or **God of War**, this can save around 1 GiB of system memory. - Shader compilation is now fully offloaded to worker threads, which can reduce the start-up time in games such as **Days Gone** and **Final Fantasy XIV**, or reduce stutter in some cases. Previously, DXVK would perform the SPIR-V translation on the application thread and only compile the actual Vulkan pipelines on workers. - DXVK's own intermediate representation of compiled shaders is now cached on disk inside the `AppData/Local` directory of the current Wine prefix. This is necessary because compile times have increased compared to the old compiler. The cache path can be changed with the environment variable `DXVK_SHADER_CACHE_PATH`. Shader Model 1-3 support for D3D9 was implemented by @K0bin. **Note:** Outside of specific edge cases, the new compiler is **not** expected to improve overall performance. For developers: When making changes to the shader compiler, set `DXVK_SHADER_CACHE=0` to avoid loading stale shaders. ## Descriptor heaps The new Vulkan extension `VK_EXT_descriptor_heap` is now used by default on drivers that support it. Compared to the older binding model implementation based on `VK_EXT_descriptor_buffer`, this new model is expected to achieve roughly the same level of CPU-bound performance, while reducing the GPU-bound performance penalty observed on Nvidia GPUs. The descriptor buffer path introduced in DXVK 2.7 is thus deprecated and will be removed in a future release. **Note**: For Nvidia drivers, version **595.84** or newer is required for this feature to work. The feature is disabled on older drivers due to performance regressions. DXVK will print the log message `info: Binding model: Descriptor heap` if the extension is used. ## D3D9 changes ### Fixed-function pipeline In order to emulate the legacy fixed-function pipeline that allows D3D8 and D3D9 games to perform rendering without shaders, DXVK previously generated its own shaders code on the fly based on pipeline state. In some games, such as **Unreal Tournament 2004**, this could lead to noticeable stuttering even after prolonged periods of gameplay. To fix this, DXVK now implements the fixed-function pipeline as a pair of ubershaders, for which optimized variants are compiled in the background as the game sets up different fixed-function setups. For more details, see PR #5192. ### Buffer upload optimizations In order to more closely match Windows behaviour, various types of buffers that were previously placed directly in VRAM are now uploaded on demand, and a strategy was implemented to limit the amount of memory in flight, which fixes address space-related crashes in a number of 32-bit D3D9 games. See PR #5350 for details. **Note:** These changees may also improve performance on systems without Resizeable BAR in games such as **GTA IV**. ### Multisampling render state On systems that sufficiently support `VK_EXT_sample_locations` and `VK_EXT_extended_dynamic_state3`, the `D3DRS_MULTISAMPLEANTIALIAS` render state now works correctly to allow apps to use single-sampled rasterization while rendering to multisampled render targets. This fixes UI rendering issues in **Anno 1701** (#1415), **Men of War Assault Squad** (#4946), and similar issues in other games with MSAA enabled. ## Other changes ### Shared resources Shared resources now work on Wine's upstream implementation, and no longer require Proton-specific patches. (PR #5257). The legacy path will continue to work for the time being to not unnecessarily break older Proton versions, but will likely be dropped in a future release. ### Frame rate limiter The environment variable `DXVK_FRAME_RATE` to enable the built-in frame rate limiter was removed. Users are encouraged to use external limiters such as those of Gamescope or Mangohud instead, which will usually provide a smoother experience. Users that wish to keep using the built-in limiter can use the [configuration option](https://github.com/doitsujin/dxvk/wiki/Configuration) `dxvk.maxFrameRate = n`. ## Bug fixes and Improvements - Fixed a number of minor Vulkan validation errors. - Fixed various issues with software vertex processing in D3D8/9, including games such as **Vietcong** or **The I of the Dragon**. (PR #5656) - Fixed incorrect D3D8/9 fixed-function fog calculations in some cases. This affects **Sea Dogs**. (#5165) - If supported by the driver, `VK_EXT_border_color_swizzle` is now used to fix border color behaviour for various emulated D3D9 texture formats. (#5388, PR #5390) - Reduced unnecessary GPU synchronization to allow overlapping mutliple independent render passes, as well as render passes with compute shaders. This is especially effective on systems that support `VK_KHR_unified_image_layouts`, and can improve GPU-bound performance in games such as **Dirt Rally 2**. - The asynchronous transfer queue is now used more aggressively to perform resource uploads into VRAM. (PR #5713) - The D3D11 Class Linkage feature is now supported. No games are known to use this feature, but some demo applications that do use it should work now. - Optimized various common D3D9 code paths to reduce CPU overhead. This helps games such as **Resident Evil 6**. - Optimized D3D9 shader constant uploads to reduce memory usage and improve performance. (PR #5686, #5689) - DXVK will no longer spoof the vendor ID of Intel GPUs via DXGI for games shipping with XeSS 2. This spoofing was only necessary with older XeSS versions, but started causing issues with various D3D12 titles. - **Bioshock Infinite**: Fixed a long-standing issue where the game would exhaust the sampler pool and start flickering. (PR #5376) - **Borderlands 2**: Fix flickering grass when enabling anisotropic filtering. (#5441, PR #5549) - **Colin McRae Rally 3**: Fix broken rendering with SilentPatch. (#4803, PR #5213) - **Fallout New Vegas**: Fixed depth resolve issue with certain mods. (#5665) - **Insurgency & Counter-Strike: Global Offensive**: Worked around engine bug causing missing textures. (PR #5602) - **Jump Space**: Worked around a case of undefined behaviour that would lead to artifacting around objects in certain scenes. - **Max Payne**: Fixed a crash when launching the game with more than one monitor connected. (PR #5221) - **Railroad Tycoon 3**: Fixed Z-fighting issues on terrain. (#4114) - **Sang-Froid: Tales of Werewolves**: Fixed various issues with fixed-function lighting. - **Splinter Cell 4**: Worked around an issue where the game does not render correctly when it detects AMD GPUs. (#5729) - **The Sims 3**: Worked around an issue where the game would deliberately lower shadow quality on AMD cards. - **Total War: Pharaoh**: Worked around a game bug that would cause the main menu to flicker, and worked around a major performance issue that is caused by questionable shader code when MSAA is enabled. (PR #5517) - **Witch on the Holy Night**: Fixed drop-down shadows in the gallery not displaying properly. (#3785) - **World of Final Fantasy**: Worked around an issue where the game deliberately decides not to render water and certain character hair when detecting an AMD GPU. ## Driver support Many of the features and extensions added in **Vulkan 1.4** are now **required**. In practice, this means that a driver recent enough to support Vulkan 1.4 is now also needed to run DXVK. The [Driver Support](https://github.com/doitsujin/dxvk/wiki/Driver-support) page was updated accordingly. <sub>This is not scary, just make sure your drivers aren't several years out of date.</sub> ### RDNA1/2 on Windows While this release will generally work, AMD's Windows driver for these GPUs no longer receives feature updates, can only use the slow legacy binding model, and suffers from severe performance issues that are **not seen on any other driver**. Affected users should stick to DXVK 2.x or consider moving to Linux., ---------------------------------------------------------------------------------------------------- sdl2-gamecontrollerdb.mk 513c72e34569e0f471dde7aa26eecb23946c3ef7 # Version: Commits on Jun 26, 2026 ---------------------------------------------------------------------------------------------------- Android support for Jess Tech Dual Analog Pad (#963) * Android support for Jess Tech Dual Analog Pad * Remove CRC --------- Co-authored-by: Alynne <alviscera@gmail.com>, ---------------------------------------------------------------------------------------- retroarch.mk e90c183e8ecb2cd9d75e928719b3d97c045ddbec # Version: Commits on Jun 26, 2026 ---------------------------------------------------------------------------------------- XMB: Scale factor + missing assets improvements, ---------------------------------------------------------------------------------------- doomretro.mk 84e6af90c9d4aff5cfbd4908c933b1a71ab13c2e # Version: Commits on Jun 26, 2026 ---------------------------------------------------------------------------------------- More minor tweaks, -------------------------------------------------------------------------------------- yquake2.mk 4905d7a61a8a7fe125ac14dc972315e2a9f6d4e1 # Version: Commits on Jun 25, 2026 -------------------------------------------------------------------------------------- feedback, ------------------------------------------------------------------------------------------------------- libretro-beetle-pce-fast.mk 3aad7f321a8847822b57081dfb5baea0c5dd7788 # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------------------------- Fetch translations & Recreate libretro_core_options_intl.h, -------------------------------------------------------------------------------------------------- libretro-beetle-psx.mk e505afd9161e9c8ca1a41a94e457fda77fb8fc3a # Version: Commits on Jun 26, 2026 -------------------------------------------------------------------------------------------------- lightning: x86 _andi, use mov+AND imm32 for sign-extendable low/high masks For an AND with a low/high bitmask that fits a sign-extended 32-bit immediate, when the output and input registers differ, emit a register move followed by AND-immediate instead of the serially-dependent SHL/SHR shift pair. On modern x86 the move is register-renamer eliminated (zero latency, no execution port) and AND r, imm32 is a single 1-cycle micro-op, whereas the shift pair is two serially-dependent micro-ops contending for the shift port. This masking sequence runs on the hot CPU address path, so the saving is systemic across lightrec-recompiled code. Bit-identical output verified (RAM-hash, 2000 frames); measured ~0.9% faster on a CPU-bound benchmark., ----------------------------------------------------------------------------------------------- libretro-bluemsx.mk 4f74bf22d2730d989502943784f217aed8cea5c1 # Version: Commits on Jun 26, 2026 ----------------------------------------------------------------------------------------------- libretro: bounds-check disk control image index to fix eject/change-disc crash set_image_index() assigned the caller-provided index straight into disk_index and then indexed disk_paths[disk_index] with no range check. disk_paths is a fixed [10][PATH_MAX] array, so any index greater than disk_images (or >= the array capacity) caused an out-of-bounds read and crashed the frontend when ejecting or changing discs via Disc Control. The only existing guard handled the index == disk_images ( o disk in tray\) case; every other out-of-range value fell through to the OOB access. Other disk-control callbacks in this file (get_image_path, get_image_label, set_initial_image) already bounds-check the index; set_image_index did not. replace_image_index() (used by \Load New Disc\) had the same class of problem on the write side: strcpy(disk_paths[index], info->path) with no bounds check on index (OOB write), no NULL check on info/info->path, and an unbounded strcpy that could overflow PATH_MAX. Add range checks to both, NULL-check info in replace_image_index, and use a bounded copy. Out-of-range requests now return false instead of crashing. Fixes the blueMSX Disc Control eject/change crash reported in libretro/RetroArch#18081., ----------------------------------------------------------------------------------------------- libretro-dolphin.mk fec5e8e106489e0d00e69dd4afaabc3d95688047 # Version: Commits on Jun 26, 2026 ----------------------------------------------------------------------------------------------- Merge pull request #428 from ryanmagoon/fix-savestate-dualcore-crash, ------------------------------------------------------------------------------------------------------ libretro-doublecherrygb.mk fd11ce3e55c0d7c8d2976db72eca738e2a37b7a8 # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------------------------ Merge remote-tracking branch 'origin/master', --------------------------------------------------------------------------------------------- libretro-fbneo.mk 52dce81108d4bfa8a980eec4b3686fb25747f3db # Version: Commits on Jun 25, 2026 --------------------------------------------------------------------------------------------- webOS: fix 64-bit build (#1128), ------------------------------------------------------------------------------------------------ libretro-gambatte.mk 7bc6861b2395d6ed5b8375805c7a8057971abd83 # Version: Commits on Jun 26, 2026 ------------------------------------------------------------------------------------------------ Fetch translations & Recreate libretro_core_options_intl.h, -------------------------------------------------------------------------------------------------- libretro-gearcoleco.mk 2fa59a3b2da34fbbc62e49ac0c75b9d8e2bf8cf7 # Version: Commits on Jun 25, 2026 -------------------------------------------------------------------------------------------------- Update readme, ------------------------------------------------------------------------------------------------- libretro-geargrafx.mk b326890e71315b831164e09c934a9551b2611030 # Version: Commits on Jun 25, 2026 ------------------------------------------------------------------------------------------------- Update readme, -------------------------------------------------------------------------------------------------- libretro-gearsystem.mk 42094d02162d341bc65d860703d53d53f17edccb # Version: Commits on Jun 25, 2026 -------------------------------------------------------------------------------------------------- Update readme, ---------------------------------------------------------------------------------------------------- libretro-parallel-n64.mk 60817554d6055f593e05d32aae26a41579b24032 # Version: Commits on Jun 26, 2026 ---------------------------------------------------------------------------------------------------- parallel-n64: angrylion HLE: barrier S2DEX BG texture loads in MT rasterizer The S2DEX 2D background is emitted by the HLE path as a vertical run of strips, each a SETTIMG / LOADTILE (or LOADBLOCK) / TEXRECT triple that loads one band of the background image into TMEM and draws it. A later strip blends and AA-samples framebuffer pixels an earlier strip wrote. In the multithreaded software rasterizer each worker owns a contiguous band of scanlines, and all workers replay the buffered command list at independent paces. Across a worker band edge, a strip's framebuffer read can race the still-pending write of the previous strip, so the composited background comes out as interleaved-scanline streaks. It only appears with more than one worker (single-worker is serialized and correct), which is why it reproduces on multi-core hosts but not on a single core, and looks renderer-independent: the racing rasterizer bakes the garbage straight into the RDRAM color image, so whatever scans it out shows it. StarCraft 64's in-game terrain is the visible case; the dialog/minimap OBJ sprites, drawn as isolated rectangles, are unaffected. The existing parallel hazard guard only barriers SET_COLOR_IMAGE / SET_MASK_IMAGE overlap (the OoT pause-box retarget); it does not cover the BG strip-reload-and-draw pattern. The Low and Medium sync levels (Low is the libretro default) do not sync SET_TEXTURE_IMAGE, so the strips pile into one un-barriered batch and race; only High sync happened to serialize them, at a global cost. Make SET_TEXTURE_IMAGE a worker barrier, but scope it to S2DEX tasks via a new optional backend hook (set_s2dex_texsync): the HLE dispatcher enables it for UCODE_S2DEX1 / UCODE_S2DEX2 and clears it otherwise, set before the display-list walk so a mid-walk FIFO-overflow flush is covered too. F3DEX2 and L3DEX2 (3D) keep full texture-load parallelism; GPU backends with their own ordering (parallel-rdp) leave the hook NULL. The 2D S2DEX titles where the barrier applies are light enough that the extra flush is free. Verified on StarCraft 64 in-game: at 16 workers the frame is now stable across runs and byte-identical to the single-worker output, which is itself byte-identical to the cxd4 LLE oracle. Default sync level unchanged., ---------------------------------------------------------------------------------------------- libretro-ppsspp.mk dee3cbac84f5a905661e2204d04ef47cc1fba32a # Version: Commits on Jun 26, 2026 ---------------------------------------------------------------------------------------------- Merge pull request #21859 from hrydgard/vulkan-lifetime-issue Fix a Vulkan lifetime issue causing invalid descriptors on shutdown, ---------------------------------------------------------------------------------------------- libretro-skyemu.mk 01516d6798e3652b583e6a366085bb51c43b528d # Version: Commits on Jun 26, 2026 ---------------------------------------------------------------------------------------------- Merge pull request #572 from bubio/add-japanese-language Add Japanese language,
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of Changes
Adds print out of ROV support to the log when using DX11 or DX12 reports ROV usage next to the GPU name and adds the ability to add recommendations for the use of AA1 and AAT to the GameDB.
TheDumps.zip
Rationale behind Changes
More information more gooder.
Suggested Testing Steps
Use the 2 GS dumps provided to test the recommendations.
Did you use AI to help find, test, or implement this issue or feature?
No.