Repository navigation
fix(agc): print the VGT_TF_PARAM and VGT_LS_HS_CONFIG fields of a refused tessellation draw - #6129
Conversation
…used tessellation draw A tessellation draw whose domain, partitioning or output topology the reference path does not support was refused with only VGT_SHADER_STAGES_EN, so a log did not show which configuration was refused. The refusal now prints VGT_TF_PARAM with TYPE, PARTITIONING and TOPOLOGY, and VGT_LS_HS_CONFIG with NUM_PATCHES, HS_NUM_INPUT_CP and HS_NUM_OUTPUT_CP. The fields come before the explanation, so the reason that the APS5_CAPTURE_TRACE log cuts at 256 characters still holds all of them. Field and enumerator names are those of Mesa's src/amd/registers/gfx103.json (enums VGT_TESS_TYPE, VGT_TESS_PARTITION and VGT_TESS_TOPOLOGY). A value with no name there is printed as a number only. The accepted configurations are unchanged. The new UnsupportedTessellationFieldTests drives DecodeState into the refusal with power-of-two triangle and quad patches, an isoline domain, line and point output and unnamed TYPE, PARTITIONING and TOPOLOGY values, and checks the decoded fields of both registers, including the order of the input and output control-point counts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Tested on Linux x86-64 (Release build, lavapipe / llvmpipe LLVM 20.1.2), with d42f496 merged into main ab9a476:
AI-assisted: yes (Claude Code) |
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
Checked the diff: the refusal condition is unchanged, only the message gains |
What
A tessellation draw whose domain, partitioning or output topology the reference path does not support was refused with only
VGT_SHADER_STAGES_EN:The same message covers an isoline domain, power-of-two partitioning, point or line output and the reserved encodings, so a log did not show which configuration was refused. Resident Evil 4 stops on this refusal.
The refusal now also prints
VGT_TF_PARAMwithTYPE,PARTITIONINGandTOPOLOGY, andVGT_LS_HS_CONFIGwithNUM_PATCHES,HS_NUM_INPUT_CPandHS_NUM_OUTPUT_CP, for example:The fields come before the explanation because the
APS5_CAPTURE_TRACElog cuts the reason at 256 characters (PacketExecution.cpp,reason=%.256s). Up to the end ofVGT_LS_HS_CONFIGthe message is at most 240 characters, so the trace keeps every field; the[gpu] driver failureline on stderr prints the whole message.Field and enumerator names are those of Mesa's
src/amd/registers/gfx103.json(VGT_TF_PARAM,VGT_LS_HS_CONFIG, enumsVGT_TESS_TYPE,VGT_TESS_PARTITION,VGT_TESS_TOPOLOGY). A value with no name there (TYPE3,PARTITIONINGorTOPOLOGY4-7) is printed as a number only.The printed values are the fields the decoder already extracts; which configurations are accepted is unchanged. After fix(agc): accept fractional-even tessellation partitioning #5402 the reference path accepts triangle and quad domains with integer, fractional-odd and fractional-even partitioning and clockwise or counter-clockwise triangle output; this PR implements no new mode.
Tested
Windows Server 2025 (10.0.26100), MinGW-w64 GCC 15.2.0, NVIDIA GeForce RTX 3060 (driver 591.86), on
mainat6239ceffc.agc_driver_graphics: newUnsupportedTessellationFieldTestsdrivesDecodeStateinto the refusal withVGT_TF_PARAMpower-of-two triangle and quad patches, an isoline domain, line and point output,TYPE3 andPARTITIONING4 withTOPOLOGY7, and withVGT_LS_HS_CONFIG0xc355 and 0x1033f (3 input and 4 output control points, which checks the order), and checks that the message holdsVGT_SHADER_STAGES_EN, then the decoded fields, then the explanation. It fails without the change (unexpected failure: AGC graphics: VGT_SHADER_STAGES_EN=0x200210d: only triangle and quad domains ... supported by the reference path) and passes with it (under 15 s for the whole executable; six runs here took 10.0 to 11.5 s).agc_driver_tessellation,agc_driver_alpha_to_coverage_state,agc_driver_undithered_alpha_to_coverage_stateandagc_sparse_buffer_holespass on the RTX 3060.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)🤖 Generated with Claude Code