turnip: KHR-GL46.direct_state_access.buffers_functional failure on Zink
- Coherent memory write into
buffer_a
- Now
buffer_a
= [1, 2, 3, 4] - vkCmdFillBufer of
buffer_a
:
destOffset 0
fillSize 4
data 0
- Now
buffer_a
= [0, 2, 3, 4] - Barrier_1:
srcStageMask VK_PIPELINE_STAGE_TRANSFER_BIT
destStageMask VK_PIPELINE_STAGE_TRANSFER_BIT
pMemoryBarriers VkMemoryBarrier[1]:
srcAccessMask VK_ACCESS_NONE
dstAccessMask VK_ACCESS_TRANSFER_READ_BIT
- Barrier_2:
srcStageMask VK_PIPELINE_STAGE_TRANSFER_BIT
destStageMask VK_PIPELINE_STAGE_TRANSFER_BIT
pMemoryBarriers VkMemoryBarrier[1]:
srcAccessMask VK_ACCESS_TRANSFER_WRITE_BIT
dstAccessMask VK_ACCESS_TRANSFER_WRITE_BIT
- vkCmdCopyBuffer of
buffer_b
intobuffer_a
:
srcOffset 0
dstOffset 4
size 4
- Now
buffer_a
= [0, 1, 3, 4] (1
is being copied) - But immediately afterwards
buffer_a
reverts to [0, 2, 3, 4]
The above barriers insert just WFI between Fill
and Copy
and I think are correct for WaW.
If I insert TU_CMD_FLAG_CCU_INVALIDATE_COLOR
between Fill
and Copy
- test passes.
CC: @cwabbott0 since I'm not sure why it works that way.
Edited by Danylo Piliaiev