Commit Graph
2232 Commits
Author SHA1 Message Date
Adrià 6475267b45 Merge pull request #13570 from Filip722/perf/shader-info-fault-scan-20261030
perf(shader): skip redundant fault-buffer discovery
2026-10-31 04:21:18 +01:00
Adrià c12e7e61a1 Merge pull request #13555 from Filip722/perf/shader-predecessor-append-20261030
perf(shader): omit redundant predecessor membership scans
2026-10-31 03:03:04 +01:00
Adrià 85f2f7de53 Merge pull request #13445 from Filip722/perf/shader-readonly-loads-20261030
perf(shader): omit zero selections for read-only fragment loads
2026-10-31 01:38:17 +01:00
Adrià ab1c3b8b63 Merge pull request #13341 from frankea/feat/f64-integer-emulation
feat(shader): compute f64 add, mul and f32 conversions with integers on devices without Float64
2026-10-31 01:26:50 +01:00
Adrià 406c616d44 Merge pull request #13489 from Filip722/perf/shader-phi-user-snapshot-20261030
perf(shader): snapshot only phi users during SSA cleanup
2026-10-30 22:48:20 +01:00
Adrià 8683c6ce1e Merge pull request #13480 from Filip722/perf/shader-specialization-lookup-20261030
perf(shader): reuse the prepared specialization value lookup
2026-10-30 22:28:39 +01:00
Adrià c2c852d0ec Merge pull request #13461 from Filip722/perf/shader-lds-bound-reuse-20261030
perf(shader): reuse the computed function LDS bound
2026-10-30 22:27:31 +01:00
Adrià 5e2067f2a5 Merge pull request #13450 from Filip722/perf/shader-uniform-fixedpoint-20261030
perf(shader): skip settled varying values in uniformity analysis
2026-10-30 22:10:43 +01:00
Adrià 8ed8812b3c Merge pull request #13423 from Filip722/perf/shader-clean-memory-epochs-20261030
perf(shader): skip unchanged memory epoch propagation
2026-10-30 21:35:43 +01:00
Adrià 2d5e012f75 Merge pull request #13415 from Roojool/fix/agc-color-compare-907
fix(shader): round emulated array sampling half to even
2026-10-30 21:03:05 +01:00
Filip Michalski 2c5a06bd36 Merge current main and retain both guarded buffer load proofs 2026-10-30 19:39:01 +01:00
Filip Michalski 3815c275a0 perf(shader): skip settled fault-buffer requirement scans 2026-10-30 19:20:01 +01:00
frankea 7388cd201a feat(shader): compute f64 add, mul and f32 conversions with integers on devices without Float64
A shader whose only f64 instructions are v_add_f64, v_mul_f64, v_cvt_f64_f32 and v_cvt_f32_f64 no longer needs shaderFloat64: the SPIR-V backend emits them as exact IEEE binary64 operations on 64-bit integers (round to nearest even, denormals kept), with the same NaN rules as the native path. Any other f64 instruction still needs the device's Float64 capability.
2026-10-30 19:15:31 +01:00
Filip Michalski f1c1ecfd3c Merge remote-tracking branch 'origin/main' into perf/shader-predecessor-append-20261030 2026-10-30 19:04:01 +01:00
Adrià 0a90776f7f Merge pull request #13297 from Filip722/perf/shader-volatile-loads-20261030
perf(shader): omit repeated zero selection for volatile buffer loads
2026-10-30 18:50:14 +01:00
Filip Michalski f39b2c2d65 perf(shader): omit redundant predecessor membership scans 2026-10-30 18:49:44 +01:00
Filip Michalski 9a2ac3549e perf(shader): snapshot only phi users during SSA cleanup 2026-10-30 17:43:57 +01:00
Filip Michalski 9755d4e0a0 perf(shader): reuse the prepared specialization value lookup 2026-10-30 17:23:54 +01:00
Filip Michalski dc2204a690 perf(shader): reuse the computed function LDS bound 2026-10-30 16:39:43 +01:00
Filip Michalski 5d86d5000b perf(shader): skip settled varying values in uniformity analysis 2026-10-30 16:04:32 +01:00
Filip Michalski d7e1f46e86 refactor(shader): finalize read-only proof after instruction analysis 2026-10-30 15:36:50 +01:00
Filip Michalski 9a5de83cf5 perf(shader): omit redundant read-only fragment buffer results 2026-10-30 15:34:38 +01:00
Adrià 82ddc5a9e0 Merge pull request #12287 from Filip722/perf/shader-zero-left-max
perf(shader): simplify float max with a positive zero lhs
2026-10-30 15:21:55 +01:00
Adrià 71c5d4e6d6 Merge pull request #13118 from Rengundom/refactor/terminal-reachability
refactor(shader): short-circuit terminal reachability checks
2026-10-30 15:21:27 +01:00
Filip Michalski a08b7073b9 chore: merge current main before shader submission 2026-10-30 15:00:37 +01:00
5a32581256 fix(shader): round emulated array sampling half to even
Carry the RoundEven and unordered NOT_EQUAL fixes from #907, with
ThisIsAkill's invitation, onto the current constant-zero comparison path.
Keep TRUNC_COORD accepted for that path and retain the newer format rules.

Exercise array rounding through converted unorm sampling, where selecting
the wrong layer changes the result. Preserve zero comparisons for half-float
NaNs, signed zero, GREATER, NOT_EQUAL and TRUNC_COORD. Record the inherited
RDNA2 measurement basis and the limits of these host tests.

Co-Authored-By: Akhil Moola <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 19:27:47 +05:30
Adrià d998343ced Merge pull request #12039 from milescoviello/perf/ir-use-arena
perf(shader): allocate a program's use lists from an arena
2026-10-30 14:38:29 +01:00
Filip Michalski bcb0a7f8f4 perf(shader): skip unchanged memory epoch propagation 2026-10-30 14:28:17 +01:00
Filip Michalski 6ee828c13b chore(shader): refresh volatile load change after validation 2026-10-30 13:19:18 +01:00
Dean 51c31ea17e Merge pull request #13258 from ntamas94/fix/gcn-sin-linear-range
fix(shader): keep GCN v_sin_f32 linear up to 1.5 x 2^-12 of a turn as the PS4 does
2026-10-31 00:52:52 +13:00
Filip Michalski 024cb1461f chore(shader): refresh volatile load change onto main 2026-10-30 12:47:45 +01:00
Filip Michalski 18cab7e579 perf(shader): omit repeated zero selection for volatile buffer loads 2026-10-30 12:47:45 +01:00
Adrià f8124b820b Merge pull request #13122 from johnohhh1/fix/spirv-literal-float-initialization
fix(build): initialize bundled SPIRV literal-float encoding
2026-10-30 12:46:11 +01:00
Adrià 25ff0a6d88 Merge pull request #12561 from milescoviello/fix/msaa-sample-adjusted
fix(shader): read a 2D MSAA T# through image_sample_a as its sample 0
2026-10-30 10:56:12 +01:00
Adrià 521b4612ba Merge pull request #13004 from JJenkx/windows/shader-cache-device-long-path
fix(shader): give a device-path shader cache root the long-path form on Windows
2026-10-30 10:41:44 +01:00
ntamas94andClaude Opus 5.5 807442da20 fix(shader): keep GCN v_sin_f32 linear up to 1.5 x 2^-12 of a turn as the PS4 does
A PS4 Pro (GCN, firmware 10.71) returns the input times 0x40c90fd5 for
every v_sin_f32 input below 0x39c00000 (1.5 x 2^-12 of a turn) and for
none at or above it, over 12,288 consecutive inputs of each sign across
that boundary and 65,536 random inputs from 2^-24 to 1 turn. The linear
band from 909281c994 ends at 2^-12, as measured on RDNA2, so PS4 guest
shaders took the driver sine or the series in [2^-12, 1.5 x 2^-12),
where the PS4 is 5 ULP away from the true sine.

PS4 guest shaders now keep the integer band of v_sin_f32 up to
0x39c00000. The half- and quarter-turn bands keep 2^-12: there the PS4
is within 6 ULP of the f32 2pi term and is not linear. PS5 shaders are
unchanged.

GcnSinNearZero runs a GCN compute kernel over PS4-measured inputs; it
fails without the change (0x39bf48b8 gives 0x3b163be8, the PS4 returns
0x3b163bed).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-30 09:23:09 +01:00
Filip Michalski 05842ba30e Merge remote-tracking branch 'origin/main' into refresh/pr12287-review-20261030 2026-10-30 08:28:39 +01:00
Adrià f08408b369 Merge pull request #12709 from Rengundom/refactor/ssa-cached-reads
refactor(shader): bypass cached SSA read traversal
2026-10-30 05:51:27 +01:00
Dean 631aa73ae5 Merge pull request #13072 from bunbeans2-arch/fix/f64-saturate-integer
fix(shader): saturate 64-bit floats with integer compares
2026-10-30 17:49:53 +13:00
milescoviello 0fe2329ee8 Merge main 422f96b3a9 into perf/ir-use-arena 2026-10-30 04:34:36 +00:00
Dean 3d2d264392 Merge pull request #12916 from Tehshortbus/feat/multi-target-merge
feat(agc): merge a draw into more than one unclamped normalized color target
2026-10-30 16:49:46 +13:00
johnohhh1 ed4c3974c1 fix(build): initialize bundled SPIRV literal-float encoding 2026-10-29 22:35:53 -04:00
Adrià d0cf19b2cb Merge pull request #12233 from beardsciences/fix/nvidia-mesh-window-buffer
fix(shader): keep mesh register windows out of local memory on NVIDIA
2026-10-30 02:31:36 +01:00
bunbeans2-archandClaude Opus 5.5 2a6db9e467 fix(shader): saturate 64-bit floats with integer compares
The 64-bit clamp output modifier compared the double with 0.0 and
1.0 and selected between it and the constant. AMD's Windows driver
32.0.32015.x crashes compiling that pattern on RDNA 4 (#7451).

Pick the result from the value's bits instead: NaN or a set sign
gives +0.0, a high word at or above 1.0's gives 1.0, and any other
value is kept. That is the same result for every input.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 19:56:16 -04:00
Adrià f46f453a56 Merge pull request #12724 from Gonic0/fix/shader-single-lane-elected-max
fix(shader): give one-lane waves an elected atomic max per lane
2026-10-30 00:18:15 +01:00
milescovielloandClaude Opus 5.5 f27177dd9b fix(shader): keep image_sample_a out of the cube-face and volume-array image modes
ResourceTracker masks the adjust bit before deciding cubeFaceSample, so the 2D
MSAA plane read takes image_sample_a. That predicate also feeds the cube-face and
2D-array-through-3D modes, which nothing has measured with _a. An image now
records adjustedSample when any of its samples sets the bit, and those two modes
refuse it. Disk cache format 50 for the new ImageResource field.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 22:49:34 +00:00
Adrià 5e6c22e772 Merge pull request #12208 from XairRrR/fix/shader-srt-read-below-loaded-pointer
fix(shader): poison an SRT read below a pointer loaded from memory
2026-10-29 21:52:04 +01:00
JJenkxandClaude Opus 5.5 35efedd747 fix(shader): give a device-path shader cache root the long-path form on Windows
NativeCachePath_nid_no_patch returned a path that already started with
\.\ unchanged. Unlike \?\, a \.\ path is still parsed by Win32 and
limited to MAX_PATH, so with ANYPS5_SHADER_CACHE_DIR=\.\C:\... and a
moderately deep root (a ~140-character TEMP is enough) the versioned
cache entries crossed 260 characters and could not be written.

A \.\ path now goes through GetFullPathNameW like the others, and a
drive path in that form (\.\X:\...) becomes the equivalent \?\X:\...;
other device names are kept as they are.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 16:38:18 -04:00
Adrià 1b9d8c99a2 Merge pull request #12529 from imellag/revert/shader-scalar-buffer-bounds
revert(shader): check scalar buffer bounds in 64 bits again (#10337)
2026-10-29 21:20:19 +01:00
AdriàandClaude Sonnet 5.5 6a98793e3b fix(shader): IrValue is 144 bytes with the use allocator
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-29 21:17:50 +01:00