Repository navigation
fix(agc): render a color view of several array slices into its first slice - #3633
Conversation
|
Independent pre-review on Linux (full CI runs only happen on manual trigger, so recording one): CachyOS, kernel 7.2.9, GCC 16.2.1, Ninja, Release,
|
|
Note on overlap: #3524 (XairRrR) touches the same lines in AI-assisted: yes (Claude Code) |
3d3f622 to
cfdf547
Compare
|
A view of several slices on a target with no array slices is now accepted. In |
|
Data point from Minecraft (PPSA17221), Linux / RX 6650 XT (RADV), on main |
cfdf547 to
7215ff3
Compare
|
Fixed in 7215ff3: a target with no array slices now requires the view to cover one slice, so a view of several slices on it throws Thanks @Pacuka for the Minecraft data point. |
…slice A CB_COLOR_VIEW whose SLICE_MAX is past SLICE_START was rejected. Without a render target index export every primitive goes to SLICE_START, so the target is that slice, as for a one-slice view. Layered draws into such a view, and views of several 3D slices, still throw. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lices renders into its only slice Marvel's Wolverine draws into a 256x256 mipmapped 2D target (CB_COLOR_ATTRIB3 0x4dc6c000, no array slices) through CB_COLOR_VIEW 0x4046000: slices 0 to 35 at mip 1. The view's last slice is not bounded by the surface on that path, so the draw renders into slice 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7215ff3 to
257ff1e
Compare
|
@oneandonlydean I need to take back part of 7215ff3. Running Marvel's Wolverine (PPSA03671) on main So the branch (rebased on |
|
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.
|
What
DecodeColorBufferrejected everyCB_COLOR_VIEWwhoseSLICE_MAXis pastSLICE_START("color views of several array slices are unsupported"). The layer a primitive lands in isSLICE_STARTplus its render target index, which is 0 when the draw does not export one. So for a 2D array target, such a view renders intoSLICE_START, the same as a one-slice view of that slice. This accepts it that way.Still rejected:
PA_CL_VS_OUT_CNTLenables the render target index export (bit 18): layered draws are not routed (existing comment aboveLayerExports), and sending them all to the first slice would be wrong;SLICE_MAXbelowSLICE_START, or past the last array slice.Marvel's Wolverine (PPSA03671) binds 2D array color targets through views of several slices, without the render target index export. On main its first presentation stops on this check.
Tested
Windows 11, RTX 3070, GCC 15.2.0 UCRT, Release, on main
a11c8f7f7.agc_driver_graphics(DepthStencilTests): a 0..1 view of a 2D array target renders into slice 0; the same view with the render target index export, a view past the last array slice, a reversed view and a view of several 3D slices still throw. Fails on main ("color views of several array slices are unsupported"), passes with the fix.guest_kernel_sys,windows_exceptions,guest_filesystem,agc_driver_emulated_color_compare) fail the same way on main on this machine.tools/check_conventions.pypasses.Checklist
main; no other open PR implements the same functions (feat(agc): render layered draws into 3D color targets #1077 touches the same check for 3D targets only)NotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt.mdfiles or images added to the repository🤖 Generated with Claude Code