radv: fix VRS subpass attachment when HTILE can't be enabled on GFX10.3
On GFX10.3, VRS rates need to be copied to the HTILE buffer but in some situations, like for mips, it's not always possible to enable HTILE. In this case, we can fallback to our internal HTILE buffer and tweak the depth/stencil registers to use this HTILE buffer. This fixes a bunch of VRS crashes on GFX10.3. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26025>
This commit is contained in:
committed by
Marge Bot
parent
648c0c159d
commit
dfc125d423
@@ -1,71 +1,4 @@
|
||||
# New CTS failures in 1.3.6.3
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.attachment_rate.misc.ro_ds_stencil_read_only_optimal,Crash
|
||||
|
||||
# New CTS failures in 1.3.7.0
|
||||
dEQP-VK.api.version_check.unavailable_entry_points,Fail
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.query_pool.frag_invocations.frag_invs.primary,Fail
|
||||
dEQP-VK.query_pool.frag_invocations.frag_invs.secondary,Fail
|
||||
|
||||
@@ -65,73 +65,8 @@ dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.2d_images.mip_cop
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.2d_images.mip_copies_bc6h_ufloat_block_64x192_5_layers_universal,Crash
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.2d_images.mip_copies_bc7_unorm_block_64x192_5_layers_compute,Crash
|
||||
dEQP-VK.api.copy_and_blit.dedicated_allocation.image_to_buffer.2d_images.mip_copies_bc7_unorm_block_64x192_5_layers_universal,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.attachment_rate.misc.ro_ds_stencil_read_only_optimal,Crash
|
||||
|
||||
# New CTS failures in 1.3.7.0.
|
||||
dEQP-VK.api.version_check.unavailable_entry_points,Fail
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragdepth_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.noshaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.keep.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.keep.4x4.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.1x1.samples1.vs,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.ms,Crash
|
||||
dEQP-VK.fragment_shading_rate.renderpass2.monolithic.fragstencil_baselevel.dynamic.attachment.shaderrate.replace.replace.4x4.samples1.vs,Crash
|
||||
dEQP-VK.query_pool.frag_invocations.frag_invs.primary,Fail
|
||||
dEQP-VK.query_pool.frag_invocations.frag_invs.secondary,Fail
|
||||
|
||||
@@ -2856,20 +2856,56 @@ radv_update_zrange_precision(struct radv_cmd_buffer *cmd_buffer, struct radv_ds_
|
||||
radeon_set_context_reg(cmd_buffer->cs, db_z_info_reg, db_z_info);
|
||||
}
|
||||
|
||||
static struct radv_image *
|
||||
radv_cmd_buffer_get_vrs_image(struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
struct radv_device *device = cmd_buffer->device;
|
||||
|
||||
if (!device->vrs.image) {
|
||||
VkResult result;
|
||||
|
||||
/* The global VRS state is initialized on-demand to avoid wasting VRAM. */
|
||||
result = radv_device_init_vrs_state(device);
|
||||
if (result != VK_SUCCESS) {
|
||||
vk_command_buffer_set_error(&cmd_buffer->vk, result);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return device->vrs.image;
|
||||
}
|
||||
|
||||
static void
|
||||
radv_emit_fb_ds_state(struct radv_cmd_buffer *cmd_buffer, struct radv_ds_buffer_info *ds, struct radv_image_view *iview,
|
||||
bool depth_compressed, bool stencil_compressed)
|
||||
{
|
||||
uint64_t db_htile_data_base = ds->db_htile_data_base;
|
||||
uint32_t db_htile_surface = ds->db_htile_surface;
|
||||
uint32_t db_render_control = ds->db_render_control | cmd_buffer->state.db_render_control;
|
||||
uint32_t db_z_info = ds->db_z_info;
|
||||
|
||||
if (!depth_compressed)
|
||||
db_render_control |= S_028000_DEPTH_COMPRESS_DISABLE(1);
|
||||
if (!stencil_compressed)
|
||||
db_render_control |= S_028000_STENCIL_COMPRESS_DISABLE(1);
|
||||
|
||||
if (cmd_buffer->device->physical_device->rad_info.gfx_level == GFX10_3 && !cmd_buffer->state.render.vrs_att.iview) {
|
||||
db_htile_surface &= C_028ABC_VRS_HTILE_ENCODING;
|
||||
if (cmd_buffer->device->physical_device->rad_info.gfx_level == GFX10_3) {
|
||||
if (!cmd_buffer->state.render.vrs_att.iview) {
|
||||
db_htile_surface &= C_028ABC_VRS_HTILE_ENCODING;
|
||||
} else {
|
||||
/* On GFX10.3, when a subpass uses VRS attachment but HTILE can't be enabled, we fallback to
|
||||
* our internal HTILE buffer.
|
||||
*/
|
||||
if (!radv_htile_enabled(iview->image, iview->vk.base_mip_level) && radv_cmd_buffer_get_vrs_image(cmd_buffer)) {
|
||||
struct radv_buffer *htile_buffer = cmd_buffer->device->vrs.buffer;
|
||||
|
||||
assert(!G_028038_TILE_SURFACE_ENABLE(db_z_info) && !db_htile_data_base && !db_htile_surface);
|
||||
db_z_info |= S_028038_TILE_SURFACE_ENABLE(1);
|
||||
db_htile_data_base = radv_buffer_get_va(htile_buffer->bo) >> 8;
|
||||
db_htile_surface = S_028ABC_FULL_CACHE(1) | S_028ABC_PIPE_ALIGNED(1) |
|
||||
S_028ABC_VRS_HTILE_ENCODING(V_028ABC_VRS_HTILE_4BIT_ENCODING);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_028000_DB_RENDER_CONTROL, db_render_control);
|
||||
@@ -2878,7 +2914,7 @@ radv_emit_fb_ds_state(struct radv_cmd_buffer *cmd_buffer, struct radv_ds_buffer_
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_028ABC_DB_HTILE_SURFACE, db_htile_surface);
|
||||
|
||||
if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX10) {
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_028014_DB_HTILE_DATA_BASE, ds->db_htile_data_base);
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_028014_DB_HTILE_DATA_BASE, db_htile_data_base);
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_02801C_DB_DEPTH_SIZE_XY, ds->db_depth_size);
|
||||
|
||||
if (cmd_buffer->device->physical_device->rad_info.gfx_level >= GFX11) {
|
||||
@@ -2887,7 +2923,7 @@ radv_emit_fb_ds_state(struct radv_cmd_buffer *cmd_buffer, struct radv_ds_buffer_
|
||||
radeon_set_context_reg_seq(cmd_buffer->cs, R_02803C_DB_DEPTH_INFO, 7);
|
||||
radeon_emit(cmd_buffer->cs, S_02803C_RESOURCE_LEVEL(1));
|
||||
}
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_info);
|
||||
radeon_emit(cmd_buffer->cs, db_z_info);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_info);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_read_base);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_read_base);
|
||||
@@ -2899,15 +2935,15 @@ radv_emit_fb_ds_state(struct radv_cmd_buffer *cmd_buffer, struct radv_ds_buffer_
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_read_base >> 32);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_read_base >> 32);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_read_base >> 32);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_htile_data_base >> 32);
|
||||
radeon_emit(cmd_buffer->cs, db_htile_data_base >> 32);
|
||||
} else if (cmd_buffer->device->physical_device->rad_info.gfx_level == GFX9) {
|
||||
radeon_set_context_reg_seq(cmd_buffer->cs, R_028014_DB_HTILE_DATA_BASE, 3);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_htile_data_base);
|
||||
radeon_emit(cmd_buffer->cs, S_028018_BASE_HI(ds->db_htile_data_base >> 32));
|
||||
radeon_emit(cmd_buffer->cs, db_htile_data_base);
|
||||
radeon_emit(cmd_buffer->cs, S_028018_BASE_HI(db_htile_data_base >> 32));
|
||||
radeon_emit(cmd_buffer->cs, ds->db_depth_size);
|
||||
|
||||
radeon_set_context_reg_seq(cmd_buffer->cs, R_028038_DB_Z_INFO, 10);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_info); /* DB_Z_INFO */
|
||||
radeon_emit(cmd_buffer->cs, db_z_info); /* DB_Z_INFO */
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_info); /* DB_STENCIL_INFO */
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_read_base); /* DB_Z_READ_BASE */
|
||||
radeon_emit(cmd_buffer->cs, S_028044_BASE_HI(ds->db_z_read_base >> 32)); /* DB_Z_READ_BASE_HI */
|
||||
@@ -2922,11 +2958,11 @@ radv_emit_fb_ds_state(struct radv_cmd_buffer *cmd_buffer, struct radv_ds_buffer_
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_info2);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_info2);
|
||||
} else {
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_028014_DB_HTILE_DATA_BASE, ds->db_htile_data_base);
|
||||
radeon_set_context_reg(cmd_buffer->cs, R_028014_DB_HTILE_DATA_BASE, db_htile_data_base);
|
||||
|
||||
radeon_set_context_reg_seq(cmd_buffer->cs, R_02803C_DB_DEPTH_INFO, 9);
|
||||
radeon_emit(cmd_buffer->cs, ds->db_depth_info); /* R_02803C_DB_DEPTH_INFO */
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_info); /* R_028040_DB_Z_INFO */
|
||||
radeon_emit(cmd_buffer->cs, db_z_info); /* R_028040_DB_Z_INFO */
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_info); /* R_028044_DB_STENCIL_INFO */
|
||||
radeon_emit(cmd_buffer->cs, ds->db_z_read_base); /* R_028048_DB_Z_READ_BASE */
|
||||
radeon_emit(cmd_buffer->cs, ds->db_stencil_read_base); /* R_02804C_DB_STENCIL_READ_BASE */
|
||||
@@ -3403,25 +3439,6 @@ radv_emit_mip_change_flush_default(struct radv_cmd_buffer *cmd_buffer)
|
||||
memset(cmd_buffer->state.cb_mip, 0, sizeof(cmd_buffer->state.cb_mip));
|
||||
}
|
||||
|
||||
static struct radv_image *
|
||||
radv_cmd_buffer_get_vrs_image(struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
struct radv_device *device = cmd_buffer->device;
|
||||
|
||||
if (!device->vrs.image) {
|
||||
VkResult result;
|
||||
|
||||
/* The global VRS state is initialized on-demand to avoid wasting VRAM. */
|
||||
result = radv_device_init_vrs_state(device);
|
||||
if (result != VK_SUCCESS) {
|
||||
vk_command_buffer_set_error(&cmd_buffer->vk, result);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return device->vrs.image;
|
||||
}
|
||||
|
||||
static void
|
||||
radv_emit_framebuffer_state(struct radv_cmd_buffer *cmd_buffer)
|
||||
{
|
||||
@@ -7741,7 +7758,8 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo *pRe
|
||||
cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_DEPTH_BIAS;
|
||||
|
||||
if (render->vrs_att.iview && cmd_buffer->device->physical_device->rad_info.gfx_level == GFX10_3) {
|
||||
if (render->ds_att.iview) {
|
||||
if (render->ds_att.iview &&
|
||||
radv_htile_enabled(render->ds_att.iview->image, render->ds_att.iview->vk.base_mip_level)) {
|
||||
/* When we have a VRS attachment and a depth/stencil attachment, we just need to copy the
|
||||
* VRS rates to the HTILE buffer of the attachment.
|
||||
*/
|
||||
@@ -7765,8 +7783,8 @@ radv_CmdBeginRendering(VkCommandBuffer commandBuffer, const VkRenderingInfo *pRe
|
||||
|
||||
radv_buffer_finish(&htile_buffer);
|
||||
} else {
|
||||
/* When a subpass uses a VRS attachment without binding a depth/stencil attachment, we have
|
||||
* to copy the VRS rates to our internal HTILE buffer.
|
||||
/* When a subpass uses a VRS attachment without binding a depth/stencil attachment, or when
|
||||
* HTILE isn't enabled, we use a fallback that copies the VRS rates to our internal HTILE buffer.
|
||||
*/
|
||||
struct radv_image *ds_image = radv_cmd_buffer_get_vrs_image(cmd_buffer);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user