Commit Graph

1582 Commits

Author SHA1 Message Date
Dean 3e92cefb4c
Merge pull request #613 from nicolasabosch/feat/ult-blocking-queues
feat(ult): implement blocking queues and shared data pools
2026-10-05 18:06:19 +13:00
Dean f7ecd24ddb
Merge pull request #610 from adriadam10/feat/div-fmas-fixup-clamp
feat(shader): accept clamp on v_div_fmas/fixup and omod on their f64 forms
2026-10-05 18:05:38 +13:00
Dean 3067a93fe9
Merge pull request #609 from nicolasabosch/fix/rtc-arithmetic-bounds
fix(rtc): reject out-of-range source ticks in date arithmetic
2026-10-05 18:04:57 +13:00
Nicolas Abosch 043332ba32 docs(ult): avoid overlapping AvPlayer debt note 2026-10-05 00:57:02 -03:00
Dean 4dac9d6373
Merge pull request #602 from NumberGuan/fix/relinker-prx-directory
fix(relinker): discover bundled modules in prx directories
2026-10-05 16:54:18 +13:00
Nicolas Abosch 65c139336e feat(ult): implement blocking queues and shared data pools 2026-10-05 00:52:22 -03:00
Adrià Franch c6df07e604 feat(shader): accept clamp on v_div_fmas/fixup and omod on their f64 forms
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 05:19:06 +02:00
Nicolas Abosch 76b7294f06 fix(rtc): reject out-of-range source ticks in date arithmetic 2026-10-05 00:15:57 -03:00
Dean e91eecc402
Merge pull request #607 from adriadam10/test/setpc
fix(shader): refuse s_setpc_b64 after s_sub with the immediate first
2026-10-05 16:10:53 +13:00
Dean 3aedbbc128
Merge pull request #605 from adriadam10/test/ds-swizzle
test(shader): execute ds_swizzle_b32 in all three offset modes
2026-10-05 16:10:11 +13:00
Dean 202a73b543
Merge pull request #603 from nicolasabosch/fix/libc-long-integer-conversions
fix(libc): preserve 64-bit strtol and strtoul results on Windows
2026-10-05 16:09:30 +13:00
Dean 00407df8a9
Merge pull request #585 from Raghav314/feat/ajm-batch-job-queries
feat(ajm): implement DecodeSingle, GetGaplessDecode and GetCodecInfo
2026-10-05 15:54:58 +13:00
Dean 7dcbc18182
Merge pull request #601 from nicolasabosch/test/pixel-lds-pipeline-statistics
test(agc): validate pixel LDS and expose pipeline statistics
2026-10-05 15:52:43 +13:00
Dean 0bd711b13b
Merge pull request #599 from adriadam10/test/tbuffer-d16-xyzw
test(shader): execute tbuffer_load_format_d16_xyzw against hardware results
2026-10-05 15:52:02 +13:00
Dean 912f43670c
Merge pull request #598 from adriadam10/test/buffer-atomic-x2-leftovers
test(shader): execute buffer_atomic_or_x2 and buffer_atomic_swap_x2 against hardware results
2026-10-05 15:51:20 +13:00
Dean 352c6acf4b
Merge pull request #597 from adriadam10/test/flat-d16-loads
test(shader): execute the flat D16 loads against hardware results
2026-10-05 15:51:10 +13:00
Dean f8a3211cea
Merge pull request #522 from adriadam10/fix/dpp16-no-form
fix(shader): refuse DPP16 on opcodes with no DPP form
2026-10-05 15:50:28 +13:00
Dean 6d23390ac7
Merge pull request #513 from adriadam10/feat/dpp8
feat(shader): decode DPP8 on VOP1 and VOP2
2026-10-05 15:49:47 +13:00
Dean adac06b59b
Merge pull request #474 from adriadam10/feat/div-f64
feat(shader): implement v_div_scale_f64, v_div_fmas_f64 and v_div_fixup_f64
2026-10-05 15:49:04 +13:00
Dean bd06241645
Merge pull request #447 from adriadam10/feat/vop3-f64-rest
feat(shader): implement v_rcp/rsq/sqrt_f64 and v_trig_preop_f64
2026-10-05 15:48:23 +13:00
Dean 9121886b0d
Merge pull request #436 from adriadam10/feat/sopp-smem-misc
feat(shader): decode the s_endpgm variants, s_round_mode and SMEM probe/discard
2026-10-05 15:47:41 +13:00
Adrià Franch c0a98e3a6a fix(shader): refuse s_setpc_b64 after s_sub with the immediate first
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 04:45:57 +02:00
Adrià Franch c97030cc7b test(shader): execute ds_swizzle_b32 in all three offset modes
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 04:34:00 +02:00
Nicolas Abosch aa08977a59 fix(libc): preserve 64-bit long integer conversions 2026-10-04 23:27:17 -03:00
NumberGuan 75f407b926 fix(relinker): discover bundled modules in prx directories
Preserve each bundled module directory under app0 and resolve Linux dependencies across directories. Add integration coverage for both output formats and Windows startup. Refs #556; duplicate-export rejection remains unchanged.
2026-10-04 23:22:50 -03:00
Nicolas Abosch e08333825f test(agc): validate pixel LDS and expose pipeline statistics 2026-10-04 23:04:39 -03:00
Adrià Franch f1a3507e90 test(shader): execute tbuffer_load_format_d16_xyzw against hardware results
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 04:01:05 +02:00
Adrià Franch 9f7d1bfa98 test(shader): execute buffer_atomic_or_x2 and buffer_atomic_swap_x2 against hardware results
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:54:49 +02:00
Adrià Franch b4151114a1 test(shader): execute the flat D16 loads against hardware results
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:50:30 +02:00
Adrià Franch 063437cdcd feat(shader): implement v_div_scale_f64, v_div_fmas_f64 and v_div_fixup_f64
These make up the precise f64 division macro compilers emit for a / b.
Like the f32 ops, the rules were measured on an RDNA2 GPU (41152 rows,
model matches all of them):
- div_scale decides from the exponent fields only: 2^128 or 2^-128
  scaling and VCC for differences >= 768 or <= -768, a denormal or huge
  (>= 2045) denominator and a numerator exponent <= 53; a NaN source is
  passed through unchanged and a zero input gives 0xfff8000000000000.
- div_fmas scales by 2^128 when the exponent of S2 is >= 1024, else
  2^-128, before the single rounding, so it reuses the exact fma
  emulation with the scale folded into its final rescale.
- div_fixup follows the ISA: NaN sources are quieted, a NaN quotient
  with finite inputs becomes +-inf, exponent differences below -1075
  give a signed zero.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:37:13 +02:00
Adrià Franch 4f901b9a77 feat(shader): implement v_rcp/rsq/sqrt_f64 and v_trig_preop_f64
Decode and translate the remaining unary f64 transcendentals and
v_trig_preop_f64.

On RDNA2 hardware v_rcp_f64, v_rsq_f64 and v_sqrt_f64 are approximations
(relative error up to ~2^-24.3 over 8209 inputs; sqrt(1.0) is not even
exact), so they are emitted as exact double operations and the test
compares against the hardware value with a 2^-23 tolerance. Special
cases are exact and selected on bits: NaN inputs are quieted (RADV keeps
signaling NaN on FDiv), negative inputs give the default NaN
0xfff8000000000000, rsq(-0) = -inf, sqrt(-0) = -0.

v_trig_preop_f64 matches the hardware bit for bit on 24627 results plus
a sweep of the table tail: the 2/PI table is 1184 bits (bits below b17
read as zero), shift = 53 * S1[4:0] + max(exp - 1077, 0), +128 scale for
exp >= 1968, omod ignored. The 53-bit window is read from a private u32
table and scaled in two exact steps so only the final multiply rounds.

Stacked on the f64 infrastructure of #446.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:36:14 +02:00
Adrià Franch 36c2fa4ffe fix(shader): translate s_round_mode only for round to nearest even
Any other mode throws instead of being a silent no-op.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:34:37 +02:00
Adrià Franch 69e2d801d1 feat(shader): decode the s_endpgm variants, s_round_mode and SMEM probe/discard
s_endpgm_saved and s_endpgm_ordered_ps_done end the wave like s_endpgm
(checked on an RDNA2 GPU: nothing after them runs), so they decode to
SEndpgm and the control flow graph treats them as terminators.
s_atc_probe, s_atc_probe_buffer and s_dcache_discard(_x2) have no visible
effect and translate to no-ops like the other scalar cache controls.
s_round_mode is ignored like s_setreg MODE writes; listed in TechnicalDebt.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:34:37 +02:00
Adrià Franch 12befda5cf fix(shader): refuse DPP16 on opcodes with no DPP form
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:33:06 +02:00
Adrià Franch 391eb6ffe8 feat(shader): decode DPP8 on VOP1 and VOP2
Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-05 03:32:30 +02:00
Dean ebf29f8d91
Merge pull request #595 from NahuelGenchi/fix/fma-legacy-dx9-zero
fix(shader): apply the DX9 zero rule to v_fma_legacy_f32
2026-10-05 14:32:00 +13:00
Dean 8a0efb6338
Merge pull request #589 from hamb3r/fix/windows-dpi-awareness
fix(video): set per-monitor v2 DPI awareness on Windows
2026-10-05 14:31:18 +13:00
Dean bc0726c486
Merge pull request #583 from DiulioAires/fix/bytewriter-bounds
fix(relinker): check byte writer bounds
2026-10-05 14:30:37 +13:00
Dean 70596d78eb
Merge pull request #577 from CnRJay/feat/s-getreg-mode
feat(shader): implement s_getreg_b32 for the MODE round mode fields
2026-10-05 14:29:24 +13:00
raghav314 77e2fe1322 docs(ajm): record where the codec info and gapless values come from 2026-10-05 06:58:23 +05:30
Dean 13e0afcc00
Merge pull request #576 from CnRJay/feat/vop-legacy-fma-dot2
feat(shader): implement v_dot2_f32_f16
2026-10-05 14:27:40 +13:00
Dean 359aa37233
Merge pull request #594 from DotDebian/feat/shader-buffer-atomic-csub
feat(shader): implement buffer_atomic_csub
2026-10-05 14:25:56 +13:00
Dean 60b6cfc173
Merge pull request #590 from CnRJay/fix/agc-thread-local-teardown
fix(agc): free per-thread driver state at thread exit without emutls
2026-10-05 14:25:46 +13:00
Dean ff96422459
Merge pull request #587 from nicolasabosch/fix/wave32-wide-subgroups
fix(shader): isolate wave32 operations in wide host subgroups
2026-10-05 14:25:04 +13:00
Dean ec46678f61
Merge pull request #588 from DotDebian/feat/relinker-sha1-memory-operand
feat(relinker): lower SHA-1 instructions with a memory operand
2026-10-05 14:24:22 +13:00
Dean 65b750aee6
Merge pull request #592 from DotDebian/fix/pngenc-filter-subset
fix(pngenc): restrict adaptive filtering to the requested filter subset
2026-10-05 14:23:41 +13:00
Dean 18d9745de4
Merge pull request #584 from DotDebian/feat/font-get-render-scaled-kerning
feat(font): implement sceFontGetRenderScaledKerning
2026-10-05 14:23:00 +13:00
Dean 4ae4f53ffb
Merge pull request #338 from Pouare514/feat/prx-loader-tripwires
feat(prx): unknown loader tripwires for TLOU
2026-10-05 14:22:18 +13:00
Dean d5170a3ac3
Merge pull request #521 from Pouare514/fix/crashreport-hang-watchdog
feat(crashreport): hang watchdog with all-threads dump
2026-10-05 14:21:37 +13:00
Dean 1a7323ecfc
Merge pull request #549 from Pouare514/fix/reserve-virtual-idempotent
fix(libkernel): idempotent fixed virtual reservation over registered range
2026-10-05 14:20:55 +13:00