Mesa (main): radv: track if primitives generated query features are enabled

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jun 9 08:50:08 UTC 2022


Module: Mesa
Branch: main
Commit: dc8cf44f60890c392638d5c6fab4a0001a5c41a2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dc8cf44f60890c392638d5c6fab4a0001a5c41a2

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Jun  8 14:27:09 2022 +0200

radv: track if primitives generated query features are enabled

This will be used to conditionally declare the NGG query argument
for NGG VS/TES and also adjust the NGG shaders.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Timur Kristóf <timur.kristof at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15639>

---

 src/amd/vulkan/radv_device.c  | 11 +++++++++++
 src/amd/vulkan/radv_private.h |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index e3b342b01e2..b3ebe982b99 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -3146,6 +3146,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr
    bool vs_prologs = false;
    bool global_bo_list = false;
    bool image_2d_view_of_3d = false;
+   bool primitives_generated_query = false;
 
    /* Check enabled features */
    if (pCreateInfo->pEnabledFeatures) {
@@ -3218,6 +3219,14 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr
             image_2d_view_of_3d = true;
          break;
       }
+      case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT: {
+         const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *features = (const void *)ext;
+         if (features->primitivesGeneratedQuery ||
+             features->primitivesGeneratedQueryWithRasterizerDiscard ||
+             features->primitivesGeneratedQueryWithNonZeroStreams)
+            primitives_generated_query = true;
+         break;
+      }
       default:
          break;
       }
@@ -3282,6 +3291,8 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr
 
    device->image_2d_view_of_3d = image_2d_view_of_3d;
 
+   device->primitives_generated_query = primitives_generated_query;
+
    radv_init_shader_arenas(device);
 
    device->overallocation_disallowed = overallocation_disallowed;
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 0d409d49d58..52066f01863 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -854,6 +854,9 @@ struct radv_device {
    /* Whether 2D views of 3D image is enabled. */
    bool image_2d_view_of_3d;
 
+   /* Whether primitives generated query features are enabled. */
+   bool primitives_generated_query;
+
    /* Whether anisotropy is forced with RADV_TEX_ANISO (-1 is disabled). */
    int force_aniso;
 



More information about the mesa-commit mailing list