From: Piers Daniell Date: Fri, 5 Jan 2018 21:04:29 +0000 (-0700) Subject: Add VK_ACCESS_SHADER_READ_BIT barrier access bit X-Git-Tag: upstream/1.3.5~2565^2~6^2~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d744f36832625e8762dce81f1c5e82e63b0d3b4c;p=platform%2Fupstream%2FVK-GL-CTS.git Add VK_ACCESS_SHADER_READ_BIT barrier access bit The dEQP-VK.query_pool.statistics_query.compute_shader_invocations.secondary* tests were missing a VK_ACCESS_SHADER_READ_BIT bit in the pipeline barrier between compute dispatch calls. Each dispatch was doing a read-modify-write of the same SSBO locations, but the test only used the VK_ACCESS_SHADER_WRITE_BIT access bit. This may cause the compute shader to read stale cache data since the dependency between each dispatch was not expressed correctly. This fix simple adds the missing VK_ACCESS_SHADER_READ_BIT access bit. Affects: dEQP-VK.query_pool.statistics_query.compute_shader_invocations.secondary* Components: Vulkan VK-GL-CTS issue: 927 Change-Id: I946d6113c897a03116db7a93a182e27497adfe6f --- diff --git a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp index 7802f74..8db6e06 100644 --- a/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp +++ b/external/vulkancts/modules/vulkan/query_pool/vktQueryPoolStatisticsTests.cpp @@ -325,15 +325,15 @@ tcu::TestStatus ComputeInvocationsTestInstance::executeTest (const VkCommandPool const VkQueue queue = m_context.getUniversalQueue(); const VkBufferMemoryBarrier computeFinishBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; - VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - buffer->object(), // VkBuffer buffer; - 0ull, // VkDeviceSize offset; - bufferSizeBytes, // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + buffer->object(), // VkBuffer buffer; + 0ull, // VkDeviceSize offset; + bufferSizeBytes, // VkDeviceSize size; }; for(size_t parametersNdx = 0u; parametersNdx < m_parameters.size(); ++parametersNdx) @@ -443,28 +443,28 @@ tcu::TestStatus ComputeInvocationsSecondaryTestInstance::executeTest (const VkCo const VkBufferMemoryBarrier computeShaderWriteBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags dstAccessMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - buffer->object(), // VkBuffer buffer; - 0ull, // VkDeviceSize offset; - bufferSizeBytes, // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + buffer->object(), // VkBuffer buffer; + 0ull, // VkDeviceSize offset; + bufferSizeBytes, // VkDeviceSize size; }; const VkBufferMemoryBarrier computeFinishBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; - VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - buffer->object(), // VkBuffer buffer; - 0ull, // VkDeviceSize offset; - bufferSizeBytes, // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + buffer->object(), // VkBuffer buffer; + 0ull, // VkDeviceSize offset; + bufferSizeBytes, // VkDeviceSize size; }; std::vector shaderModule; @@ -601,28 +601,28 @@ tcu::TestStatus ComputeInvocationsSecondaryInheritedTestInstance::executeTest (c const VkBufferMemoryBarrier computeShaderWriteBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags dstAccessMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - buffer->object(), // VkBuffer buffer; - 0ull, // VkDeviceSize offset; - bufferSizeBytes, // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + buffer->object(), // VkBuffer buffer; + 0ull, // VkDeviceSize offset; + bufferSizeBytes, // VkDeviceSize size; }; const VkBufferMemoryBarrier computeFinishBarrier = { - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; - DE_NULL, // const void* pNext; - VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; - VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; - VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; - VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; - buffer->object(), // VkBuffer buffer; - 0ull, // VkDeviceSize offset; - bufferSizeBytes, // VkDeviceSize size; + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, // VkStructureType sType; + DE_NULL, // const void* pNext; + VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT, // VkAccessFlags srcAccessMask; + VK_ACCESS_HOST_READ_BIT, // VkAccessFlags dstAccessMask; + VK_QUEUE_FAMILY_IGNORED, // deUint32 srcQueueFamilyIndex; + VK_QUEUE_FAMILY_IGNORED, // deUint32 destQueueFamilyIndex; + buffer->object(), // VkBuffer buffer; + 0ull, // VkDeviceSize offset; + bufferSizeBytes, // VkDeviceSize size; }; std::vector shaderModule;