radv: declare shader_query_state for mesh/task shaders
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 21 Sep 2023 12:01:34 +0000 (14:01 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 26 Sep 2023 07:50:16 +0000 (07:50 +0000)
This will control whether mesh/task queries is enabled.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25331>

src/amd/vulkan/radv_shader_args.c

index 81fe6ce..e754123 100644 (file)
@@ -393,7 +393,9 @@ declare_shader_args(const struct radv_device *device, const struct radv_pipeline
 {
    const enum amd_gfx_level gfx_level = device->physical_device->rad_info.gfx_level;
    bool has_shader_query = info->has_prim_query || info->has_xfb_query ||
-                           (stage == MESA_SHADER_GEOMETRY && info->gs.has_pipeline_stat_query);
+                           (stage == MESA_SHADER_GEOMETRY && info->gs.has_pipeline_stat_query) ||
+                           (stage == MESA_SHADER_MESH && info->ms.has_query) ||
+                           (stage == MESA_SHADER_TASK && info->cs.has_query);
    bool has_ngg_provoking_vtx =
       (stage == MESA_SHADER_VERTEX || stage == MESA_SHADER_GEOMETRY) && key->dynamic_provoking_vtx_mode;
 
@@ -451,6 +453,10 @@ declare_shader_args(const struct radv_device *device, const struct radv_pipeline
 
       if (stage == MESA_SHADER_TASK) {
          add_ud_arg(args, 1, AC_ARG_INT, &args->ac.task_ring_entry, AC_UD_TASK_RING_ENTRY);
+
+         if (has_shader_query) {
+            add_ud_arg(args, 1, AC_ARG_INT, &args->shader_query_state, AC_UD_SHADER_QUERY_STATE);
+         }
       }
 
       for (int i = 0; i < 3; i++) {