AN0DIN
83db2efec3
shader: pack v_cvt_pkrtz_f16_f32 with the native half conversion (GTA V) ( #1520 )
...
* shader: pack v_cvt_pkrtz_f16_f32 with the native half conversion
The round-toward-zero pack was emulated with integer operations: about 20 to 30 operations
per half. GTA V uses it in 613 of its 656 pixel shaders, about 16 times in each G-buffer
pixel shader.
The pair is now packed with PackHalf2x16, unpacked again, and each half whose magnitude
exceeds its input's takes one unit off. Half signs and magnitudes are separate, so that is
the next value toward zero, whatever rounding the native conversion uses as long as it
returns one of the two neighbours. Same bits as before for every finite input and infinity;
a NaN stays a NaN. Checked against the old code on 2 million values on the CPU, and on an
Apple M5 GPU through Metal (400 000 values, subnormals included, safe and fast math).
GTA V on an Apple M5 (MoltenVK), 1080p, fixed script camera, three places, A B B A between
launches: -1.7 to -2.8 ms per frame (+4 to +6 %).
Scope: generic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
* shader: remove half-pack commentary and unused shift helper
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
Co-authored-by: nmzik <Nmzik@mail.ru >
2026-10-16 02:56:35 +02:00
nmzik
f7226ca7dc
graphics: emit PS5 register object and primitive IDs to RT7
2026-10-15 22:28:01 +02:00
nmzik
b4406b0467
graphics: render packed 11-11-10 UNorm targets with exact rounding
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-15 22:28:01 +02:00
nmzik
fb213e8ae5
shader: share packed color component encoding
2026-10-15 22:28:01 +02:00
nmzik
1d3fd07fe6
shader: share indirect buffer format geometry lookup
2026-10-15 22:28:01 +02:00
nmzik
bb2d6dbeb3
shader: share scalar condition results with direct subgroup votes
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-15 22:28:01 +02:00
nmzik
50844badbf
shader: map debug SPIR-V blocks to native RDNA2 PCs
2026-10-15 22:28:01 +02:00
nmzik
c1f6838e40
shader: share repeated raw indirect buffer load bodies
2026-10-15 22:28:01 +02:00
nmzik
8b81f665a2
shader: separate indirect buffer candidates from tracked root limits
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 21:19:38 +02:00
nmzik
1039c54f5d
shader: share indirect buffer array access after an empty root
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 21:17:44 +02:00
nmzik
b24ce3440d
shader: track buffer liveness and offsets by resource count
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 21:11:14 +02:00
nmzik
4843d8d942
shader: support packed D16 XYZW formatted buffer stores
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 19:35:08 +02:00
nmzik
7468e4f60a
shader: share descriptor dispatch for scalar and wide buffer stores
2026-10-14 19:01:14 +02:00
nmzik
b6da068313
shader: preserve typed candidates for unfiltered indirect image access
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 18:57:26 +02:00
nmzik
127cf8d46f
shader: route image stores through shared indirect descriptor access
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 18:39:40 +02:00
nmzik
302240da70
shader: lower complete wave minima for sparse fragment subgroups
2026-10-14 18:03:48 +02:00
nmzik
6d6da57a95
shader: share formatted stores for GPU-selected signed byte records
2026-10-14 17:10:02 +02:00
nmzik
487bbf95fd
shader: share nested pointer-table image and sampler selection
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 16:40:15 +02:00
nmzik
c88f05f7b5
graphics: share signed storage conversion and support R16 image writes
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 15:36:29 +02:00
nmzik
150bcb06a9
shader: share runtime buffer format conversion across loads
2026-10-14 14:29:40 +02:00
nmzik
26d326d1b0
shader: share bounded record descriptors for packed loads and byte stores
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 05:07:24 +02:00
nmzik
4cf5a96b79
shader: reuse prepared binding offsets and shared resource switch
2026-10-14 04:46:46 +02:00
nmzik
7bba785963
shader: load bytes and halfwords from GPU-selected buffers
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 04:35:21 +02:00
nmzik
6abfe3bbe4
shader: share formatted loads and support packed D16 XYZW buffers
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 04:09:57 +02:00
nmzik
1905b28b3c
shader: decode packed UNorm image loads through shared conversion
...
Co-authored-by: fxpw <fxpw@outlook.com >
2026-10-14 03:53:32 +02:00
nmzik
9e41d8320a
shader: support returning 64-bit LDS max and compare-exchange
2026-10-13 21:33:50 +00:00
nmzik
735a229236
shader: preserve native types in indirect image tables
2026-10-13 21:33:50 +00:00
nmzik
2f88a0a3b2
shader: elide bitcasts between identical physical types
2026-10-13 21:27:07 +00:00
nmzik
56738aa4e1
shader: sample packed normalized images with one bilinear gather
2026-10-13 21:27:07 +00:00
nmzik
c11254a996
shader: share format conversion for packed normalized image stores
2026-10-13 21:27:07 +00:00
nmzik
9a7c54da58
shader: share formatted buffer payload reads across format conversions
2026-10-13 21:27:07 +00:00
nmzik
e2c8b61de6
shader: remove unreachable mixed image specialization paths
2026-10-13 21:27:07 +00:00
nmzik
f01a3750d4
shader: validate indirect image operands at each typed access
2026-10-13 21:27:07 +00:00
nmzik
d692d8ee08
shader: preserve full region addresses for LDS and GDS reads and writes
2026-10-13 21:27:07 +00:00
Ali Almohaya
460a196fca
shader: emit dynamic sample offsets with the enabled maintenance8 feature
2026-10-13 21:27:07 +00:00
nmzik
652154aead
shader: merge typed image candidates as raw vectors with shared sampler variants
2026-10-13 21:27:07 +00:00
nmzik
fd66f580b4
shader: resolve packed buffer selectors with shared indexed stores
...
Co-authored-by: Ali Almohaya <AliAlmohaya@gmail.com >
2026-10-13 21:27:07 +00:00
nmzik
984cfcebd1
shader: emit native texel offsets using sample execution context
...
Co-authored-by: netwarex <mail@pety.me >
2026-10-11 18:53:01 +02:00
netwarex
4c87dbebb2
shader: select indirect texture descriptors for image gathers
2026-10-11 18:53:01 +02:00
Bartlomiej Wolynczyk
053f5fd3cc
shader: emit DPP row_share instead of an identity move
2026-10-10 04:31:55 +02:00
nmzik
59183dbfa8
shader: add missing F64 VOPC compares
...
Co-authored-by: Hector Mödinger S. <hectormodinger@gmail.com >
2026-10-09 21:01:51 +02:00
nmzik
8c81386568
shader: share finite descriptor planning with GPU-selected inline samplers
2026-10-09 15:06:39 +00:00
nmzik
71c7261740
shader: share indirect texture dispatch with image loads
2026-10-09 15:06:39 +00:00
nmzik
7b9997baea
shader: fold exact float class masks into native NaN predicates
2026-10-09 02:54:21 +02:00
nmzik
393257eaae
shader: classify float NaNs with one magnitude comparison
2026-10-09 02:54:21 +02:00
nmzik
13e3ca314c
shader: unpack buffer offsets from one load per packed word
2026-10-09 02:54:21 +02:00
nmzik
b4853a0e08
shader: preserve export vectors instead of rebuilding scalar components
2026-10-09 02:54:21 +02:00
nmzik
ee4dd90649
shader: emit native integer operations and remove signedness casts
2026-10-09 02:54:21 +02:00
nmzik
3df456675d
shader: own control flow on IR blocks with direct targets
2026-10-09 01:59:41 +02:00
nmzik
8abf99c56e
shader: emit bounded SPIR-V operands without temporary vectors
2026-10-09 01:58:39 +02:00