Commit Graph
6138 Commits
Author SHA1 Message Date
Scott SchusterandClaude Opus 5.5 75638194b5 feat(agc): accept RADV's compute dispatch and register-load forms
- DISPATCH_DIRECT and DISPATCH_INDIRECT with the SHADER_TYPE header bit,
  which RADV sets on every dispatch, as other packets already may.
- FORCE_START_AT_000 in the dispatch initiator. The driver never offsets
  dispatches by COMPUTE_START_X/Y/Z, so it already starts at zero.
- LOAD_CONTEXT_REG_INDEX, LOAD_SH_REG_INDEX and LOAD_UCONFIG_REG_INDEX in
  their consecutive-register form (a register offset and a count, DATA_FORMAT
  0), which RADV uses to load DB_STENCIL_CLEAR and DB_DEPTH_CLEAR from an
  image's clear values. The offset-and-data form keeps its old checks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 01:20:01 -05:00
Scott SchusterandClaude Opus 5.5 0e5bd5e5ae feat(agc): accept the GFX10 packets RADV's graphics preamble emits
RADV builds its own command streams. Its preamble and draws use packet
forms the validator refused:

- CONTEXT_CONTROL that only updates the load and shadow enables to zero,
  which RADV emits when it does not shadow registers. It is a no-op.
- SET_UCONFIG_REG_INDEX of VGT_PRIMITIVE_TYPE with index 1, next to the
  index-2 VGT_INDEX_TYPE write already accepted.
- WRITE_DATA to memory (DST_SEL 5) from the graphics queue.
- DMA_DATA with DST_SEL NOWHERE, RADV's L2 prefetch of shader code. It
  writes nothing and resolves to an empty store.
- EVENT_WRITE PIPELINESTAT_START, PIPELINESTAT_STOP, SQ_NON_EVENT and
  VGT_FLUSH. The statistics counters are not modelled, and the events that
  would read them stay rejected.
- ACQUIRE_MEM over the full 48-bit range (COHER_SIZE_HI and COHER_BASE_HI).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 01:20:00 -05:00
Adrià 394b6d049c Merge pull request #2253 from Raghav314/perf/agc-draw-inputs-in-place
perf(agc): read draw vertex and index buffers in place from host imports
2026-10-10 08:19:00 +02:00
MarcusandClaude Opus 5.5 5377db48fd fix(shader): round the v_mad_legacy_f32 product before the add
VOP3 0x140 is v_mad_legacy_f32 on gfx10.1. Measured on gfx1010 (RX 5700
XT) in wave32 and wave64, IEEE 0 and 1 and f32 denormal modes 0 to 3, it
rounds the product before the add, flushes f32 denormal sources, product
and result in every mode, and gives a +0 product for a zero factor.

The translation multiplies, applies the zero rule and flushTinyProduct,
adds, and keeps the nanResultF32 wrapper. f32DenormalFlushFor returns 3
for the instruction before reading FLOAT_MODE. A sum of two zeros takes
its sign on the bits, as lavapipe returned -0 for +0 + -0. The execution
test pins the measured results and compares NaN bits exactly. RDNA2
(gfx1031), where the encoding is v_fma_legacy_f32 and fused, is noted in
TechnicalDebt.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 08:18:55 +02:00
Adrià 4a01974b09 Merge pull request #1781 from babyhuey/feat/libc-rune-locale
feat(libc): export the C rune locale
2026-10-10 08:18:42 +02:00
Adrià accf6bffc5 Merge pull request #2477 from itsbo5/feat/libScePad-bias-correction
feat(libScePad): implement scePadSetAngularVelocityBiasCorrectionState
2026-10-10 08:18:16 +02:00
Scott SchusterandClaude Opus 5.5 982849c8ac feat(agc): render into SW_4KB_S_X and SW_4KB_D_X color targets
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 01:18:15 -05:00
Scott SchusterandClaude Opus 5.5 bbf9360305 feat(agc): render into SW_64KB_R_X color targets whose base carries a pipe/bank XOR
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 01:18:14 -05:00
Scott SchusterandClaude Opus 5.5 85016605be feat(agc): accept texture BC swizzles that leave the sampled border unchanged
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 01:17:59 -05:00
Adrià 94ebb80c34 Merge pull request #2458 from gjonn/fix/recompiler-invariant-position
fix(shader): mark the vertex position output invariant
2026-10-10 08:17:50 +02:00
Adrià ecd3dbadb3 Merge pull request #2376 from krishnaraya4/fix/rdna-drop-gcn-vop2-opcodes
fix(shader): stop decoding gfx6/7-only VOP2 opcodes on RDNA
2026-10-10 08:17:22 +02:00
Adrià e53e26a209 Merge pull request #2378 from krishnaraya4/fix/agc-vertex-10-10-10-2-int-class
fix(shader): give 10_10_10_2 integer vertex inputs an integer type
2026-10-10 08:16:57 +02:00
Adrià 5bcbbeb449 Merge pull request #2371 from fisherjoey/fix/scanner-s-bfe-u32
fix(recompiler): apply the S_BFE_U32 width when the vertex fetch scanner folds constants
2026-10-10 08:16:16 +02:00
Adrià 189990dd1f Merge pull request #2285 from Celegans12/fix/fetch-offset-double-add
fix(shader): count folded draw offsets once in the vertex and instance indices
2026-10-10 08:15:46 +02:00
Adrià e0a311f8e5 Merge pull request #2315 from karanvora2599/perf/shader-min-max-native
perf(shader): pick f32 min, max and med3 results with fewer selects
2026-10-10 08:15:40 +02:00
Adrià dac3aa547f Merge pull request #2247 from mugurc/macos-nid
feat(nid): patch NIDs in Mach-O libraries
2026-10-10 08:15:03 +02:00
Adrià 3064754c6a Merge pull request #1547 from russhil/feat/shader-barycentric-emulation
feat(shader): emulate fragment barycentrics with a generated geometry stage
2026-10-10 08:15:00 +02:00
Adrià c94cbb7a58 Merge pull request #2279 from karanvora2599/perf/shader-nan-result-guard
perf(shader): choose the fma NaN result only when the result is NaN
2026-10-10 08:14:57 +02:00
Adrià 40aeb97d57 Merge pull request #1152 from alfalfa-star/perf/linux-direct-memory-import-chunks
perf(agc): share one dma-buf import per 64 MiB of Linux direct memory
2026-10-10 08:14:40 +02:00
Adrià feea78cdd2 Merge pull request #2198 from XairRrR/fix/rect-list-fault-binding
fix(recompiler): bind the rect-list fault buffer in the tessellation control group
2026-10-10 08:14:27 +02:00
fisherjoey 79653e00be fix(shader): carry a packed pixel ancillary through a phi into field extracts 2026-10-10 00:14:18 -06:00
Adrià 21b7876487 Merge pull request #2200 from XairRrR/fix/recompiler-sdwa-v-not-b32
fix(recompiler): accept SDWA destination selects on v_not_b32
2026-10-10 08:14:14 +02:00
Adrià 831e071786 Merge pull request #2199 from XairRrR/fix/recompiler-r8-snorm
feat(agc-driver): sample 8_SNORM images
2026-10-10 08:14:05 +02:00
Adrià 87be948954 Merge pull request #2191 from tezzgod74/fix/spirv-1.3-no-mesh-targets
fix(shader): keep vector selects valid on SPIR-V 1.3 targets
2026-10-10 08:13:36 +02:00
Adrià 4088f7f9a7 Merge pull request #2103 from karanvora2599/perf/shader-redundant-denormal-flush
perf(shader): drop denormal flushes of values that can't be denormal
2026-10-10 08:13:14 +02:00
Adrià dacb0cdd28 Merge pull request #2137 from Sanjaysrinivas/feat/mesh-wave32
fix(shader): support wave32 mesh programs
2026-10-10 08:13:11 +02:00
Adrià 9614e0a602 Merge pull request #2141 from authurtabo-byte/fix/shader-sixteen-sampler-pairs
fix(shader): reserve heap space for sixteen sampler pairs
2026-10-10 08:13:09 +02:00
Adrià 63cd22f395 Merge pull request #2105 from Raghav314/perf/recompiler-post-dominators-postorder
perf(recompiler): compute post-dominators visiting successors first
2026-10-10 08:13:07 +02:00
Adrià 9bb5619c83 Merge pull request #2045 from CouchRiv/fix-shader-div-fixup-flush
fix(shader): flush v_div_fixup_f32 src1 and src2 denormals
2026-10-10 08:12:41 +02:00
Adrià ccedc3a891 Merge pull request #1947 from oguzhanozfe/fix/audio-propagation-singular-path
fix(audio): recognize individual propagation path import
2026-10-10 08:12:21 +02:00
Adrià 692c397a6c Merge pull request #1854 from Sanjaysrinivas/fix/shader-mode-registers
fix(shader): guard runtime MODE changes
2026-10-10 08:12:00 +02:00
Adrià dbe8961752 Merge pull request #1963 from Deftera186/fix/shader-div-fmas-zero-overflow
fix(shader): return +0 when v_div_fmas_f32 cancels with |src2| >= 2^64
2026-10-10 08:11:36 +02:00
Adrià 7ced89fdcf Merge pull request #2020 from karanvora2599/perf/shader-constant-factor-tininess
perf(shader): skip the tiny product check that a constant factor settles
2026-10-10 08:10:34 +02:00
Adrià 56bfc4d1c9 Merge pull request #2034 from TheAggie/fix/shader-truncated-decode-out-of-range
fix(shader): report a truncated memory, image or export instruction as out of range
2026-10-10 08:08:33 +02:00
raghav314andClaude Opus 5.5 c7f4690cd3 fix(agc): host imports write-protect only pages a collect already protects
Importing guest memory collected the write watch over the whole import,
which write-protected every page of it, so pages nothing had collected yet
took a write fault on their first CPU write. The import now collects only
the parts a collect already protects (GuestWriteWatchCollectArmed). The
rest stays unprotected until something collects it, which reports it as
written; a GPU write recorded into such memory (MarkWritten) first collects
the never-collected parts of its 64 KiB blocks
(GuestWriteWatchCollectFresh), so that report is older than the GPU's
results and does not read as a CPU write over them.

Those pages are stamped as written and their CPU pages are noted, but the
block's CPU stamp is left alone, so a GPU label record or a pending storage
image elsewhere in the block does not see a CPU write. StoredOver and
UnchangedSinceCollected read the noted pages whenever a block has them, so
a store to such a page is still seen by a check over that page. The extra
generation step happens only when something was collected; a block whose
write protection fails is unwatched and the write returns no generation.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 11:38:28 +05:30
Adrià 2337e0d5d6 Merge pull request #2031 from Aryansh1520/fix/libc-tz-once
perf(libc): set TZ once on Linux
2026-10-10 08:08:28 +02:00
Adrià 9b67cbbd0a Merge pull request #2022 from NahuelGenchi/fix/agc-unwritten-pixel-program
fix(agc): read an unwritten pixel program address as unset
2026-10-10 08:08:04 +02:00
Adrià 0f84feff1d Merge pull request #2000 from hansjm10/fix/shader-f16-fma-single-rounding
fix(shader): round the f16 fused multiply-adds once
2026-10-10 08:08:00 +02:00
Adrià 473e64bc8c Merge pull request #1860 from overlordxrz-source/feat/libkernel-shm-open
feat(libkernel): implement shm_open for anonymous objects
2026-10-10 08:07:24 +02:00
Adrià 3ef8f820af Merge pull request #2016 from arvindfroi/test/agc-msaa-storage-target
test(agc): check MSAA storage emission without the device's support
2026-10-10 08:07:18 +02:00
Adrià ffd80d7c6a Merge pull request #2011 from CouchRiv/fix-shader-pk-minmax-clamp-dx10
fix(shader): clamp packed f16 min/max signaling NaN results to zero
2026-10-10 08:07:16 +02:00
Adrià 6324b00b5a Merge pull request #1979 from Deftera186/fix/shader-sin-cos-exact-reduction
fix(shader): reduce v_sin_f32 and v_cos_f32 inputs exactly
2026-10-10 08:06:46 +02:00
Adrià 35eaa8b253 Merge pull request #1964 from CouchRiv/fix-spirv-continue-backedge
fix(shader): keep runtime image mode switches inside continue targets
2026-10-10 08:06:23 +02:00
Adrià 019ca236fb Merge pull request #1958 from arcwiser/fix/windows-pe-relocs-stripped
fix(relinker): keep Windows images without relocations loadable
2026-10-10 08:06:20 +02:00
Adrià b86b0b1559 Merge pull request #1966 from Deftera186/fix/shader-ldexp-f16-inline-constants
fix(shader): read v_ldexp_f16 src1 float inline constants as f16
2026-10-10 08:06:15 +02:00
Adrià 832e7b4b6b Merge pull request #1948 from arcwiser/fix/mimg-unsupported-opcode-diagnostic
fix(shader): name unsupported MIMG opcodes
2026-10-10 08:05:48 +02:00
Adrià a02e0a176f Merge pull request #1928 from fisherjoey/fix/agc-draw-rectangle-fallback
fix(agc): prepare a rect-list draw's missing rectangle at draw from its prepared stages
2026-10-10 08:05:23 +02:00
eliasbruno124-dev e2401a8dc0 fix(relinker): discover required modules in nested standard directories 2026-10-10 08:05:01 +02:00
Adrià 737e2096ba Merge pull request #1904 from fisherjoey/fix/shader-ancillary-vector-bfe
fix(shader): lower the packed pixel ancillary when its extract operands fold after it
2026-10-10 08:04:57 +02:00
Adrià 4adefa0708 Merge pull request #1898 from fisherjoey/fix/vop3-add-sub-clamp
fix(shader): saturate VOP3 v_add/sub_nc_u32 and 16-bit add/sub on clamp
2026-10-10 08:04:49 +02:00