Fix sync validation for mismatched_write_op tests
The pipeline stages and accesss bits were incorrect in some cases and
the validation layer was complaining about write-after-write hazards.
Components: Vulkan
VK-GL-CTS issue: 2817
Affects: dEQP-VK.image.mismatched_write_op.mismatched_vector_sizes.*
Change-Id: I254ab3b65342552d71fd3890da271e8586eb1fab
diff --git a/external/vulkancts/modules/vulkan/image/vktImageMismatchedWriteOpTests.cpp b/external/vulkancts/modules/vulkan/image/vktImageMismatchedWriteOpTests.cpp
index 50225bd..0fbf414 100644
--- a/external/vulkancts/modules/vulkan/image/vktImageMismatchedWriteOpTests.cpp
+++ b/external/vulkancts/modules/vulkan/image/vktImageMismatchedWriteOpTests.cpp
@@ -234,7 +234,7 @@
{
const VkBufferMemoryBarrier bufferBarrier = makeBufferMemoryBarrier(
- (VkAccessFlags)0, VK_ACCESS_TRANSFER_READ_BIT,
+ VK_ACCESS_HOST_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT,
m_buffer.getBuffer(), 0ull, m_buffer.getSize());
const VkImageMemoryBarrier beforeCopyBarrier = makeImageMemoryBarrier(
@@ -242,8 +242,8 @@
m_layout, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
*m_image, fullImageSubresourceRange);
- invalidateMappedMemoryRange(vki, dev, m_buffer.getMemory().getMemory(), m_buffer.getMemory().getOffset(), VK_WHOLE_SIZE);
- vki.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0,
+ flushMappedMemoryRange(vki, dev, m_buffer.getMemory().getMemory(), m_buffer.getMemory().getOffset(), VK_WHOLE_SIZE);
+ vki.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, (VkDependencyFlags)0,
0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 1, &beforeCopyBarrier);
}
@@ -256,7 +256,7 @@
m_layout = VK_IMAGE_LAYOUT_GENERAL;
const VkImageMemoryBarrier afterCopyBarrier = makeImageMemoryBarrier(
- VK_ACCESS_TRANSFER_WRITE_BIT, (VkAccessFlags)0,
+ VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_WRITE_BIT,
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, m_layout,
*m_image, fullImageSubresourceRange);
@@ -278,7 +278,7 @@
m_buffer.getBuffer(), 0ull, m_buffer.getSize());
const VkImageMemoryBarrier beforeCopyBarrier = makeImageMemoryBarrier(
- (VkAccessFlagBits)0, VK_ACCESS_TRANSFER_READ_BIT,
+ VK_ACCESS_SHADER_WRITE_BIT, VK_ACCESS_TRANSFER_READ_BIT,
m_layout, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
*m_image, fullImageSubresourceRange);
@@ -290,7 +290,7 @@
{
const VkBufferMemoryBarrier bufferBarrier = makeBufferMemoryBarrier(
- VK_ACCESS_TRANSFER_WRITE_BIT, (VkAccessFlags)0,
+ VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT,
m_buffer.getBuffer(), 0ull, m_buffer.getSize());
const VkImageMemoryBarrier afterCopyBarrier = makeImageMemoryBarrier(
@@ -298,8 +298,8 @@
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, m_layout,
*m_image, fullImageSubresourceRange);
- vki.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, (VkDependencyFlags)0,
- 0, (const VkMemoryBarrier*)DE_NULL, 0, &bufferBarrier, 1, &afterCopyBarrier);
+ vki.cmdPipelineBarrier(cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, (VkDependencyFlags)0,
+ 0, (const VkMemoryBarrier*)DE_NULL, 1, &bufferBarrier, 1, &afterCopyBarrier);
}
invalidateMappedMemoryRange(vki, dev, m_buffer.getMemory().getMemory(), m_buffer.getMemory().getOffset(), VK_WHOLE_SIZE);