mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
anv: Fix ASTC emulation sync in CopyImage and CopyBufferToImage
The dEQP optimization in [1] for 1:1 ASTC copies exposed a race condition where the internal decompression shader reads old data from the texture cache before the copy finishes. This patch adds cache flush to ensure the shader sees the newly copied ASTC blocks. It also fixes the block extent calculation to use the destination image metadata. [1] https://gerrit.khronos.org/c/vk-gl-cts/+/17514 Fixes: dEQP-GLES31.functional.copy_image.compressed.viewclass_astc* v2: Drop CS_STALL and update the bits order (Lionel). Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40060>
This commit is contained in:
parent
c4d5090d69
commit
bc38ac933b
1 changed files with 8 additions and 6 deletions
|
|
@ -675,9 +675,10 @@ void anv_CmdCopyImage2(
|
|||
if (dst_image->emu_plane_format != VK_FORMAT_UNDEFINED) {
|
||||
assert(!anv_cmd_buffer_is_blitter_queue(cmd_buffer));
|
||||
const enum anv_pipe_bits pipe_bits =
|
||||
anv_cmd_buffer_is_compute_queue(cmd_buffer) ?
|
||||
ANV_PIPE_HDC_PIPELINE_FLUSH_BIT :
|
||||
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT;
|
||||
ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT |
|
||||
((batch.flags & BLORP_BATCH_USE_COMPUTE) ?
|
||||
ANV_PIPE_HDC_PIPELINE_FLUSH_BIT :
|
||||
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT);
|
||||
anv_add_pending_pipe_bits(cmd_buffer,
|
||||
(batch.flags & BLORP_BATCH_USE_COMPUTE) ?
|
||||
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT :
|
||||
|
|
@ -832,9 +833,10 @@ void anv_CmdCopyBufferToImage2(
|
|||
if (dst_image->emu_plane_format != VK_FORMAT_UNDEFINED) {
|
||||
assert(!anv_cmd_buffer_is_blitter_queue(cmd_buffer));
|
||||
const enum anv_pipe_bits pipe_bits =
|
||||
anv_cmd_buffer_is_compute_queue(cmd_buffer) ?
|
||||
ANV_PIPE_HDC_PIPELINE_FLUSH_BIT :
|
||||
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT;
|
||||
ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT |
|
||||
((batch.flags & BLORP_BATCH_USE_COMPUTE) ?
|
||||
ANV_PIPE_HDC_PIPELINE_FLUSH_BIT :
|
||||
ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT);
|
||||
anv_add_pending_pipe_bits(cmd_buffer,
|
||||
(batch.flags & BLORP_BATCH_USE_COMPUTE) ?
|
||||
VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT :
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue