Vulkan: remove dependency to inheritedQueries

If using vk::priv::SecondaryCommandBuffer.  This would allow ES3 support
where inheritedQueries is not supported.

Bug: angleproject:3136
Change-Id: I10508058301ea6da8f3415cfdcc052500a67f810
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1538829
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
diff --git a/src/libANGLE/renderer/vulkan/CommandGraph.cpp b/src/libANGLE/renderer/vulkan/CommandGraph.cpp
index 8d2072e..ab244bd 100644
--- a/src/libANGLE/renderer/vulkan/CommandGraph.cpp
+++ b/src/libANGLE/renderer/vulkan/CommandGraph.cpp
@@ -320,7 +320,7 @@
     inheritanceInfo.subpass     = 0;
     inheritanceInfo.framebuffer = VK_NULL_HANDLE;
     inheritanceInfo.occlusionQueryEnable =
-        context->getRenderer()->getPhysicalDeviceFeatures().inheritedQueries;
+        CommandBuffer::SupportsQueries(context->getRenderer()->getPhysicalDeviceFeatures());
     inheritanceInfo.queryFlags         = 0;
     inheritanceInfo.pipelineStatistics = 0;
 
@@ -348,7 +348,7 @@
     inheritanceInfo.subpass     = 0;
     inheritanceInfo.framebuffer = mRenderPassFramebuffer.getHandle();
     inheritanceInfo.occlusionQueryEnable =
-        context->getRenderer()->getPhysicalDeviceFeatures().inheritedQueries;
+        CommandBuffer::SupportsQueries(context->getRenderer()->getPhysicalDeviceFeatures());
     inheritanceInfo.queryFlags         = 0;
     inheritanceInfo.pipelineStatistics = 0;
 
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index 0347b39..45a3cf7 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -1141,8 +1141,8 @@
     maxVersion = gl::Version(2, 0);
 #endif
 
-    // Vulkan inherited queries are required to support any GL query type
-    if (!mPhysicalDeviceFeatures.inheritedQueries)
+    // If the command buffer doesn't support queries, we can't support ES3.
+    if (!vk::CommandBuffer::SupportsQueries(mPhysicalDeviceFeatures))
     {
         maxVersion = std::max(maxVersion, gl::Version(2, 0));
     }
diff --git a/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h b/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
index 3aa66ec..951150b 100644
--- a/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
+++ b/src/libANGLE/renderer/vulkan/SecondaryCommandBuffer.h
@@ -328,6 +328,8 @@
     SecondaryCommandBuffer();
     ~SecondaryCommandBuffer();
 
+    static bool SupportsQueries(const VkPhysicalDeviceFeatures &features) { return true; }
+
     // Add commands
     void beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
 
diff --git a/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp b/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
index 4374bb5..49bdbac 100644
--- a/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
@@ -68,7 +68,8 @@
     // We use secondary command buffers almost everywhere and they require a feature to be
     // able to execute in the presence of queries.  As a result, we won't support queries
     // unless that feature is available.
-    mNativeExtensions.occlusionQueryBoolean = mPhysicalDeviceFeatures.inheritedQueries;
+    mNativeExtensions.occlusionQueryBoolean =
+        vk::CommandBuffer::SupportsQueries(mPhysicalDeviceFeatures);
 
     // From the Vulkan specs:
     // > The number of valid bits in a timestamp value is determined by the
diff --git a/src/libANGLE/renderer/vulkan/vk_wrapper.h b/src/libANGLE/renderer/vulkan/vk_wrapper.h
index f8bc474..e1c1fbe 100644
--- a/src/libANGLE/renderer/vulkan/vk_wrapper.h
+++ b/src/libANGLE/renderer/vulkan/vk_wrapper.h
@@ -172,6 +172,11 @@
 
     using WrappedObject::operator=;
 
+    static bool SupportsQueries(const VkPhysicalDeviceFeatures &features)
+    {
+        return features.inheritedQueries;
+    }
+
     VkResult begin(const VkCommandBufferBeginInfo &info);
 
     void beginQuery(VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);