Enable occlusionQueryPrecise
Swiftshader already counts all the fragments for this feature, it just
needed to be enabled in VkPhysicalDevice.cpp. The occlusion_query tests
that remain unsupported require VK_EXT_host_query_reset. This is
unsupported in SwiftShader as of now, though it is required for Vulkan
1.2 conformance.
Bug: b/148241855
Tests: dEQP-VK.query_pool.occlusion_query.*
Change-Id: Ib03df4225ed49865c648368ebf0547bfc3d117f7
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/47148
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Sean Risser <srisser@google.com>
diff --git a/src/Vulkan/VkPhysicalDevice.cpp b/src/Vulkan/VkPhysicalDevice.cpp
index 39b56e2..f53c326 100644
--- a/src/Vulkan/VkPhysicalDevice.cpp
+++ b/src/Vulkan/VkPhysicalDevice.cpp
@@ -91,7 +91,7 @@
VK_FALSE, // textureCompressionASTC_LDR
#endif
VK_TRUE, // textureCompressionBC
- VK_FALSE, // occlusionQueryPrecise
+ VK_TRUE, // occlusionQueryPrecise
VK_FALSE, // pipelineStatisticsQuery
VK_TRUE, // vertexPipelineStoresAndAtomics
VK_TRUE, // fragmentStoresAndAtomics
diff --git a/src/Vulkan/VkQueryPool.cpp b/src/Vulkan/VkQueryPool.cpp
index b313620..2105608 100644
--- a/src/Vulkan/VkQueryPool.cpp
+++ b/src/Vulkan/VkQueryPool.cpp
@@ -192,7 +192,8 @@
{
ASSERT(query < count);
- if(flags != 0)
+ // Only accept flags with valid bits set.
+ if(flags & ~(VK_QUERY_CONTROL_PRECISE_BIT))
{
UNSUPPORTED("vkCmdBeginQuery::flags %d", int(flags));
}