Skip to content

GS/DB/ImGui: Various changes#14601

Merged
lightningterror merged 6 commits into
PCSX2:masterfrom
JordanTheToaster:BigLog
Jun 26, 2026
Merged

GS/DB/ImGui: Various changes#14601
lightningterror merged 6 commits into
PCSX2:masterfrom
JordanTheToaster:BigLog

Conversation

@JordanTheToaster

Copy link
Copy Markdown
Member

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.

@Mrlinkwii Mrlinkwii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GameIndex.md also needs updating

@lightningterror lightningterror added this to the Release 2.8 milestone Jun 21, 2026

@Mrlinkwii Mrlinkwii left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GameIndex.md still needs updating

@lightningterror lightningterror merged commit 48ca476 into PCSX2:master Jun 26, 2026
17 checks passed
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,
@JordanTheToaster JordanTheToaster deleted the BigLog branch June 29, 2026 09:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants