Repository navigation
fix(agc): accept disabled conservative rasterization with uncertainty-region bits - #2226
Merged
adriadam10 merged 4 commits intoOct 10, 2026
Conversation
RADV sets OUT_OF_ORDER_WATER_MARK to 7 on every GFX10 draw, also when OUT_OF_ORDER_PRIMITIVE_ENABLE is off. The watermark only tunes out-of-order rasterization, which stays rejected, so the field is accepted alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With conservative rasterization disabled, RADV programs PA_SC_CONSERVATIVE_RASTERIZATION_CNTL to NULL_SQUAD_AA_MASK_ENABLE alone, where libSceAgc writes the two INNER_TO_NORMAL overrides (0x6000). A value made of only those bits now decodes as disabled; overestimation (0x6001) keeps its checks, and every other mode is still rejected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…draws With depth bias enabled, RADV sets POLY_OFFSET_PARA_ENABLE in PA_SU_SC_MODE_CNTL next to the front and back enables, whatever the topology; vkQuake's draws carry 0x3a46. The bit applies the offset to points and lines, so it changes nothing for triangles, and Vulkan applies depth bias only to polygons. It is now accepted with depth bias on triangle topologies; point and line draws with it are still rejected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 9, 2026
Merged
Contributor
|
Windows run: Windows 11 Pro 25H2 (10.0.26200.9457), RTX 5060 Ti (NVIDIA 617.42), MinGW-w64 GCC 15.2.0 (WinLibs r7), Release,
AI-assisted: yes |
9 tasks done
…-region bits Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
EdouardSence
force-pushed
the
fix/agc-conservative-uncertainty-disabled
branch
from
October 9, 2026 15:39
11cd1dc to
ab09a0a
Compare
This was referenced Oct 9, 2026
Collaborator
|
Checked on Linux, |
SleglJan
pushed a commit
to SleglJan/AnyPS5
that referenced
this pull request
Oct 10, 2026
…tive-uncertainty-disabled fix(agc): accept disabled conservative rasterization with uncertainty-region bits
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #1915. Only the last commit, ab09a0a, is this PR; the first three are #1915's (its head af9e60b).
What
Ratchet & Clank: Rift Apart (PPSA01474) writes
PA_SC_CONSERVATIVE_RASTERIZATION_CNTL = 0xe6000on its first draws. Decoded with the field shifts in the kernel'sgc_10_3_0_sh_mask.h:OVER_RAST_ENABLEUNDER_RAST_ENABLEOVERRIDE_{OVER,UNDER}_RAST_INNER_TO_NORMALUNCERTAINTY_REGION_MODEOUTER_/INNER_UNCERTAINTY_EDGERULE_OVERRIDEBoth rasterization enables are clear, as in libSceAgc's
0x6000. On top of #1915's disabled mask (0x00106000), this also accepts bits 19:16, the uncertainty-region mode and its two edge-rule overrides:0x6001is still rejected.0xe6001and0xe6020are rejected.I have no source that says these fields do nothing when both enables are clear. RADV never writes them; it sets
PBB_UNCERTAINTY_REGION_ENABLEonly for overestimation. So the TechnicalDebt entry records it as an assumption from the field names, not a measurement.Tested
Linux (CachyOS, GCC), RX 9070 XT, RADV / Mesa 26.2.4.
agc_driver_graphics:0xe6000decodes as disabled and is not rejected;0xe6001and0xe6020are still rejected. fix(agc): accept RADV's disabled conservative rasterization and out-of-order watermark #1915's cases are unchanged.tools/check_conventions.pypasses.main43972e6, with feat(libkernel): implement mlock and munlock #1673, feat(libSceVideoOut): register the VRR status event and accept the VRR status call #1339, fix(agc): defer shaders that cannot be prepared at registration to their first use #1836, fix(agc): accept bound copies of a registered shader header that differ only in user_data #1837, fix(agc): skip registration-time preparation for unsupported shader types #1893, perf(recompiler): compute post-dominators visiting successors first #2105 and fix(libkernel): start the pthread object with the thread id #2184, plus a local placeholder formunlock:PA_SC_CONSERVATIVE_RASTERIZATION_CNTL=0xe6000: only 0x6000 (off) and 0x6001 (overestimation) are supported.depth/stencil clear, copy, resummarize or decompress draws (DB_RENDER_CONTROL) is unsupported (register 0x0 = 0x00000001).0x6000: no conservative rasterization.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code