diff options
Diffstat (limited to 'external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRatePixelConsistency.cpp')
-rw-r--r-- | external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRatePixelConsistency.cpp | 107 |
1 files changed, 83 insertions, 24 deletions
diff --git a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRatePixelConsistency.cpp b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRatePixelConsistency.cpp index 04929d459..229cb5d95 100644 --- a/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRatePixelConsistency.cpp +++ b/external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRatePixelConsistency.cpp @@ -1103,23 +1103,43 @@ tcu::TestStatus FSRPixelConsistencyInstance::iterate (void) Move<VkCommandPool> cmdPool = createCommandPool(vk, device, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, m_context.getUniversalQueueFamilyIndex()); Move<VkCommandBuffer> cmdBuffer = allocateCommandBuffer(vk, device, *cmdPool, VK_COMMAND_BUFFER_LEVEL_PRIMARY); - VkImageMemoryBarrier preImageBarrier = + VkImageMemoryBarrier preImageBarriers[] = { - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType - DE_NULL, // const void* pNext - 0u, // VkAccessFlags srcAccessMask - VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask - VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout oldLayout - VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout newLayout - VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex - VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex - **cbImagePass0, // VkImage image { - VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask - 0u, // uint32_t baseMipLevel - VK_REMAINING_MIP_LEVELS, // uint32_t mipLevels, - 0u, // uint32_t baseArray - VK_REMAINING_ARRAY_LAYERS, // uint32_t arraySize + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType + DE_NULL, // const void* pNext + 0u, // VkAccessFlags srcAccessMask + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout oldLayout + VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout newLayout + VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex + VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex + **cbImagePass0, // VkImage image + { + VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask + 0u, // uint32_t baseMipLevel + VK_REMAINING_MIP_LEVELS, // uint32_t mipLevels, + 0u, // uint32_t baseArray + VK_REMAINING_ARRAY_LAYERS, // uint32_t arraySize + } + }, + { + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType + DE_NULL, // const void* pNext + 0u, // VkAccessFlags srcAccessMask + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags dstAccessMask + VK_IMAGE_LAYOUT_UNDEFINED, // VkImageLayout oldLayout + VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout newLayout + VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex + VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex + **cbImagePass1, // VkImage image + { + VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask + 0u, // uint32_t baseMipLevel + VK_REMAINING_MIP_LEVELS, // uint32_t mipLevels, + 0u, // uint32_t baseArray + VK_REMAINING_ARRAY_LAYERS, // uint32_t arraySize + } } }; @@ -1130,15 +1150,7 @@ tcu::TestStatus FSRPixelConsistencyInstance::iterate (void) (VkDependencyFlags)0, 0, (const VkMemoryBarrier*)DE_NULL, 0, (const VkBufferMemoryBarrier*)DE_NULL, - 1, &preImageBarrier); - - preImageBarrier.image = **cbImagePass1; - - vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, - (VkDependencyFlags)0, - 0, (const VkMemoryBarrier*)DE_NULL, - 0, (const VkBufferMemoryBarrier*)DE_NULL, - 1, &preImageBarrier); + sizeof(preImageBarriers) / sizeof(preImageBarriers[0]), preImageBarriers); // Clear both images to UINT_MAX VkImageSubresourceRange range = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u); @@ -1147,6 +1159,53 @@ tcu::TestStatus FSRPixelConsistencyInstance::iterate (void) vk.cmdClearColorImage(*cmdBuffer, **cbImagePass0, VK_IMAGE_LAYOUT_GENERAL, &clearColor.color, 1, &range); vk.cmdClearColorImage(*cmdBuffer, **cbImagePass1, VK_IMAGE_LAYOUT_GENERAL, &clearColor.color, 1, &range); + // Barrier between the clear and the rendering + VkImageMemoryBarrier clearColorBarriers[] = + { + { + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType + DE_NULL, // const void* pNext + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags srcAccessMask + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags dstAccessMask + VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout oldLayout + VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout newLayout + VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex + VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex + **cbImagePass0, // VkImage image + { + VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask + 0u, // uint32_t baseMipLevel + VK_REMAINING_MIP_LEVELS, // uint32_t mipLevels, + 0u, // uint32_t baseArray + VK_REMAINING_ARRAY_LAYERS, // uint32_t arraySize + } + }, + { + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER, // VkStructureType sType + DE_NULL, // const void* pNext + VK_ACCESS_TRANSFER_WRITE_BIT, // VkAccessFlags srcAccessMask + VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT, // VkAccessFlags dstAccessMask + VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout oldLayout + VK_IMAGE_LAYOUT_GENERAL, // VkImageLayout newLayout + VK_QUEUE_FAMILY_IGNORED, // uint32_t srcQueueFamilyIndex + VK_QUEUE_FAMILY_IGNORED, // uint32_t dstQueueFamilyIndex + **cbImagePass1, // VkImage image + { + VK_IMAGE_ASPECT_COLOR_BIT, // VkImageAspectFlags aspectMask + 0u, // uint32_t baseMipLevel + VK_REMAINING_MIP_LEVELS, // uint32_t mipLevels, + 0u, // uint32_t baseArray + VK_REMAINING_ARRAY_LAYERS, // uint32_t arraySize + } + } + }; + + vk.cmdPipelineBarrier(*cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, + (VkDependencyFlags)0, + 0, (const VkMemoryBarrier*)DE_NULL, + 0, (const VkBufferMemoryBarrier*)DE_NULL, + sizeof(clearColorBarriers) / sizeof(clearColorBarriers[0]), clearColorBarriers); + beginRenderPass(vk, *cmdBuffer, *renderPass, *framebuffer, makeRect2D(m_data.framebufferExtent.width, m_data.framebufferExtent.height), 0, DE_NULL, VK_SUBPASS_CONTENTS_INLINE, DE_NULL); |