Fix pipeline barrier issues in protected memory tests
Set correct stage mask for pipeline barriers, and remove pipeline
barriers that are not needed.
Components: Vulkan
VK-GL-CTS issue: 1373
Affects:
dEQP-VK.protected_memory.buffer.*
dEQP-VK.protected_memory.attachment.*
Change-Id: I6dae7ad02c66649281a35465939437a5fb26dd0e
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp
index fbff6e1..f987f14 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentClearTests.cpp
@@ -253,6 +253,7 @@
vk.cmdEndRenderPass(*cmdBuffer);
{
+ // Image validator reads image in compute shader
const vk::VkImageMemoryBarrier endImgBarrier =
{
vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // sType
@@ -273,8 +274,8 @@
}
};
vk.cmdPipelineBarrier(*cmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+ vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp
index 79b7386..ca2587b 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemAttachmentLoadTests.cpp
@@ -181,6 +181,7 @@
vk.cmdEndRenderPass(*cmdBuffer);
{
+ // Image validator reads image in compute shader
const vk::VkImageMemoryBarrier endImgBarrier =
{
vk::VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // sType
@@ -201,8 +202,8 @@
}
};
vk.cmdPipelineBarrier(*cmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+ vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp
index 90b04df..5e78eaa 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemCopyImageToBufferTests.cpp
@@ -189,7 +189,7 @@
vk.cmdPipelineBarrier(targetCmdBuffer,
vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+ vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
@@ -231,39 +231,14 @@
};
vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
+ vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+ vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
0, (const vk::VkBufferMemoryBarrier*)DE_NULL,
1, &initializeBarrier);
}
- // Start destination buffer barrier
- {
- const vk::VkBufferMemoryBarrier startBufferBarrier =
- {
- vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
- DE_NULL, // const void* pNext
- 0, // VkAccessFlags srcAccessMask
- vk::VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask
- queueFamilyIndex, // uint32_t srcQueueFamilyIndex
- queueFamilyIndex, // uint32_t dstQueueFamilyIndex
- **dstBuffer, // VkBuffer buffer
- 0u, // VkDeviceSize offset
- VK_WHOLE_SIZE, // VkDeviceSize size
- };
-
- vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
- (vk::VkDependencyFlags)0,
- 0, (const vk::VkMemoryBarrier*)DE_NULL,
- 1, &startBufferBarrier,
- 0, (const vk::VkImageMemoryBarrier*)DE_NULL);
- }
-
-
// Copy image to buffer
const vk::VkImageSubresourceLayers subresourceLayers =
{
@@ -286,6 +261,7 @@
vk.cmdCopyImageToBuffer(targetCmdBuffer, **colorImage, vk::VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, **dstBuffer, 1u, ©Region);
{
+ // Buffer validator reads buffer in compute shader
const vk::VkBufferMemoryBarrier endBufferBarrier =
{
vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
@@ -299,8 +275,8 @@
VK_WHOLE_SIZE, // VkDeviceSize size
};
vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+ vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
1, &endBufferBarrier,
diff --git a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp
index f6b51dc..c5900d0 100644
--- a/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp
+++ b/external/vulkancts/modules/vulkan/protected_memory/vktProtectedMemFillUpdateCopyBufferTests.cpp
@@ -192,25 +192,6 @@
switch (m_cmdType) {
case FILL_BUFFER:
{
- const vk::VkBufferMemoryBarrier startFillBufferBarrier =
- {
- vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
- DE_NULL, // const void* pNext
- 0, // VkAccessFlags srcAccessMask
- vk::VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask
- queueFamilyIndex, // uint32_t srcQueueFamilyIndex
- queueFamilyIndex, // uint32_t dstQueueFamilyIndex
- **dstBuffer, // VkBuffer buffer
- 0u, // VkDeviceSize offset
- VK_WHOLE_SIZE, // VkDeviceSize size
- };
- vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
- (vk::VkDependencyFlags) 0,
- 0, (const vk::VkMemoryBarrier *) DE_NULL,
- 1, &startFillBufferBarrier,
- 0, (const vk::VkImageMemoryBarrier *) DE_NULL);
// Fill buffer
vk.cmdFillBuffer(targetCmdBuffer, **dstBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
break;
@@ -218,25 +199,6 @@
case UPDATE_BUFFER:
{
- const vk::VkBufferMemoryBarrier startUpdateBufferBarrier =
- {
- vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
- DE_NULL, // const void* pNext
- 0, // VkAccessFlags srcAccessMask
- vk::VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask
- queueFamilyIndex, // uint32_t srcQueueFamilyIndex
- queueFamilyIndex, // uint32_t dstQueueFamilyIndex
- **dstBuffer, // VkBuffer buffer
- 0u, // VkDeviceSize offset
- VK_WHOLE_SIZE, // VkDeviceSize size
- };
- vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
- (vk::VkDependencyFlags) 0,
- 0, (const vk::VkMemoryBarrier *) DE_NULL,
- 1, &startUpdateBufferBarrier,
- 0, (const vk::VkImageMemoryBarrier *) DE_NULL);
// Update buffer
deUint32 data[BUFFER_SIZE];
for (size_t ndx = 0; ndx < BUFFER_SIZE; ndx++)
@@ -247,30 +209,9 @@
case COPY_BUFFER:
{
- // Start src buffer barrier
- const vk::VkBufferMemoryBarrier startBufferBarrier =
- {
- vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
- DE_NULL, // const void* pNext
- 0, // VkAccessFlags srcAccessMask
- vk::VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask
- queueFamilyIndex, // uint32_t srcQueueFamilyIndex
- queueFamilyIndex, // uint32_t dstQueueFamilyIndex
- **srcBuffer, // VkBuffer buffer
- 0u, // VkDeviceSize offset
- VK_WHOLE_SIZE, // VkDeviceSize size
- };
- vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
- (vk::VkDependencyFlags) 0,
- 0, (const vk::VkMemoryBarrier *) DE_NULL,
- 1, &startBufferBarrier,
- 0, (const vk::VkImageMemoryBarrier *) DE_NULL);
vk.cmdFillBuffer(targetCmdBuffer, **srcBuffer, 0u, VK_WHOLE_SIZE, m_fillValue);
- // Barrier to change accessMask to transfer read bit for source buffer
- const vk::VkBufferMemoryBarrier startCopyBufferBarrier =
+ const vk::VkBufferMemoryBarrier copyBufferBarrier =
{
vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
DE_NULL, // const void* pNext
@@ -283,32 +224,14 @@
VK_WHOLE_SIZE, // VkDeviceSize size
};
- // Image barrier for destination buffer
- const vk::VkBufferMemoryBarrier dstBufferBarrier =
- {
- vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
- DE_NULL, // const void* pNext
- 0, // VkAccessFlags srcAccessMask
- vk::VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask
- queueFamilyIndex, // uint32_t srcQueueFamilyIndex
- queueFamilyIndex, // uint32_t dstQueueFamilyIndex
- **dstBuffer, // VkBuffer buffer
- 0u, // VkDeviceSize offset
- VK_WHOLE_SIZE, // VkDeviceSize size
- };
-
- const vk::VkBufferMemoryBarrier memoryBarriers[2] =
- {
- startCopyBufferBarrier,
- dstBufferBarrier
- };
vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
- vk::VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
+ vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+ vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
- 2, memoryBarriers,
+ 1, ©BufferBarrier,
0, (const vk::VkImageMemoryBarrier*)DE_NULL);
+
// Copy buffer
const vk::VkBufferCopy copyBufferRegion =
{
@@ -326,6 +249,7 @@
}
{
+ // Buffer validator reads buffer in compute shader
const vk::VkBufferMemoryBarrier endBufferBarrier =
{
vk::VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType
@@ -339,8 +263,8 @@
VK_WHOLE_SIZE, // VkDeviceSize size
};
vk.cmdPipelineBarrier(targetCmdBuffer,
- vk::VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
vk::VK_PIPELINE_STAGE_TRANSFER_BIT,
+ vk::VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
(vk::VkDependencyFlags)0,
0, (const vk::VkMemoryBarrier*)DE_NULL,
1, &endBufferBarrier,