diff --git a/src/freedreno/ci/freedreno-a750-vkd3d-fails.txt b/src/freedreno/ci/freedreno-a750-vkd3d-fails.txt
index e39652d6ed8..4008517fcb6 100644
--- a/src/freedreno/ci/freedreno-a750-vkd3d-fails.txt
+++ b/src/freedreno/ci/freedreno-a750-vkd3d-fails.txt
@@ -4,7 +4,6 @@ test_early_depth_stencil_tests,Fail
test_index_buffer_edge_case_stream_output,Fail
test_multisample_resolve_strongly_typed,Fail
test_primitive_restart_list_topology_stream_output,Fail
-test_query_pipeline_statistics,Fail
test_sampler_rounding,Fail
test_shader_instructions,Fail
test_shader_sm66_quad_op_semantics,Fail
diff --git a/src/freedreno/registers/adreno/a6xx.xml b/src/freedreno/registers/adreno/a6xx.xml
index d639bcd5ef6..fbf40878651 100644
--- a/src/freedreno/registers/adreno/a6xx.xml
+++ b/src/freedreno/registers/adreno/a6xx.xml
@@ -2633,27 +2633,27 @@ to upconvert to 32b float internally?
vertices in, number of primnitives assembled etc.
-->
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/src/freedreno/vulkan/tu_query_pool.cc b/src/freedreno/vulkan/tu_query_pool.cc
index 3780fab338f..824e4cd3635 100644
--- a/src/freedreno/vulkan/tu_query_pool.cc
+++ b/src/freedreno/vulkan/tu_query_pool.cc
@@ -388,14 +388,11 @@ statistics_index(uint32_t *statistics)
switch (1 << stat) {
case VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT:
- case VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT:
return 0;
case VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT:
return 1;
- case VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT:
+ case VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT:
return 2;
- case VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT:
- return 4;
case VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT:
return 5;
case VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT:
@@ -406,6 +403,10 @@ statistics_index(uint32_t *statistics)
return 8;
case VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT:
return 9;
+ case VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT:
+ return 3;
+ case VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT:
+ return 4;
case VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT:
return 10;
default:
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_query.cc b/src/gallium/drivers/freedreno/a6xx/fd6_query.cc
index 0e5d1f8357d..d015b37f59b 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_query.cc
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_query.cc
@@ -403,18 +403,15 @@ FD_DEFINE_CAST(fd_acc_query_sample, fd6_pipeline_stats_sample);
* ----------------------------+--------------------------------------------+----------------
* IA_VERTICES | INPUT_ASSEMBLY_VERTICES | RBBM_PRIMCTR_0
* IA_PRIMITIVES | INPUT_ASSEMBLY_PRIMITIVES | RBBM_PRIMCTR_1
- * VS_INVOCATIONS | VERTEX_SHADER_INVOCATIONS | RBBM_PRIMCTR_0
+ * VS_INVOCATIONS | VERTEX_SHADER_INVOCATIONS | RBBM_PRIMCTR_2
* GS_INVOCATIONS | GEOMETRY_SHADER_INVOCATIONS | RBBM_PRIMCTR_5
* GS_PRIMITIVES | GEOMETRY_SHADER_PRIMITIVES | RBBM_PRIMCTR_6
* C_INVOCATIONS | CLIPPING_INVOCATIONS | RBBM_PRIMCTR_7
* C_PRIMITIVES | CLIPPING_PRIMITIVES | RBBM_PRIMCTR_8
* PS_INVOCATIONS | FRAGMENT_SHADER_INVOCATIONS | RBBM_PRIMCTR_9
- * HS_INVOCATIONS | TESSELLATION_CONTROL_SHADER_PATCHES | RBBM_PRIMCTR_2
+ * HS_INVOCATIONS | TESSELLATION_CONTROL_SHADER_PATCHES | RBBM_PRIMCTR_3
* DS_INVOCATIONS | TESSELLATION_EVALUATION_SHADER_INVOCATIONS | RBBM_PRIMCTR_4
* CS_INVOCATIONS | COMPUTE_SHADER_INVOCATIONS | RBBM_PRIMCTR_10
- *
- * Note that "Vertices corresponding to incomplete primitives may contribute to the count.",
- * in our case they do not, so IA_VERTICES and VS_INVOCATIONS are the same thing.
*/
enum stats_type {
@@ -454,13 +451,13 @@ stats_counter_index(struct fd_acc_query *aq)
switch (aq->base.index) {
case PIPE_STAT_QUERY_IA_VERTICES: return 0;
case PIPE_STAT_QUERY_IA_PRIMITIVES: return 1;
- case PIPE_STAT_QUERY_VS_INVOCATIONS: return 0;
+ case PIPE_STAT_QUERY_VS_INVOCATIONS: return 2;
case PIPE_STAT_QUERY_GS_INVOCATIONS: return 5;
case PIPE_STAT_QUERY_GS_PRIMITIVES: return 6;
case PIPE_STAT_QUERY_C_INVOCATIONS: return 7;
case PIPE_STAT_QUERY_C_PRIMITIVES: return 8;
case PIPE_STAT_QUERY_PS_INVOCATIONS: return 9;
- case PIPE_STAT_QUERY_HS_INVOCATIONS: return 2;
+ case PIPE_STAT_QUERY_HS_INVOCATIONS: return 3;
case PIPE_STAT_QUERY_DS_INVOCATIONS: return 4;
case PIPE_STAT_QUERY_CS_INVOCATIONS: return 10;
default:
@@ -473,10 +470,10 @@ log_pipeline_stats(struct fd6_pipeline_stats_sample *ps, unsigned idx)
{
#ifdef DEBUG_COUNTERS
const char *labels[] = {
- "VS_INVOCATIONS",
+ "IA_VERTICES",
"IA_PRIMITIVES",
+ "VS_INVOCATIONS",
"HS_INVOCATIONS",
- "??",
"DS_INVOCATIONS",
"GS_INVOCATIONS",
"GS_PRIMITIVES",
diff --git a/src/gallium/drivers/zink/ci/zink-tu-a750-fails.txt b/src/gallium/drivers/zink/ci/zink-tu-a750-fails.txt
index f2a179eb576..88faf2d6c6d 100644
--- a/src/gallium/drivers/zink/ci/zink-tu-a750-fails.txt
+++ b/src/gallium/drivers/zink/ci/zink-tu-a750-fails.txt
@@ -100,27 +100,6 @@ spec@arb_internalformat_query2@all internalformat__type pname checks@GL_INTER
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2' on GL_PROGRAM_INPUT,Fail
spec@arb_program_interface_query@arb_program_interface_query-getprogramresourceindex@'vs_input2[1][0]' on GL_PROGRAM_INPUT,Fail
-spec@arb_query_buffer_object@coherency,Fail
-spec@arb_query_buffer_object@coherency@index-buffer-GL_TESS_CONTROL_SHADER_PATCHES,Fail
-spec@arb_query_buffer_object@coherency@indirect-dispatch-GL_TESS_CONTROL_SHADER_PATCHES,Fail
-spec@arb_query_buffer_object@coherency@indirect-draw-GL_TESS_CONTROL_SHADER_PATCHES,Fail
-spec@arb_query_buffer_object@coherency@indirect-draw-count-GL_TESS_CONTROL_SHADER_PATCHES,Fail
-spec@arb_query_buffer_object@qbo,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC-GL_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC-GL_UNSIGNED_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC-GL_UNSIGNED_INT64_ARB,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC_CPU_READ_AFTER-GL_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC_CPU_READ_AFTER-GL_UNSIGNED_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC_CPU_READ_AFTER-GL_UNSIGNED_INT64_ARB,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC_CPU_READ_BEFORE-GL_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC_CPU_READ_BEFORE-GL_UNSIGNED_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-ASYNC_CPU_READ_BEFORE-GL_UNSIGNED_INT64_ARB,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-SYNC-GL_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-SYNC-GL_UNSIGNED_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-SYNC-GL_UNSIGNED_INT64_ARB,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-SYNC_CPU_READ_AFTER_CACHE_TEST-GL_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-SYNC_CPU_READ_AFTER_CACHE_TEST-GL_UNSIGNED_INT,Fail
-spec@arb_query_buffer_object@qbo@query-GL_TESS_CONTROL_SHADER_PATCHES-SYNC_CPU_READ_AFTER_CACHE_TEST-GL_UNSIGNED_INT64_ARB,Fail
spec@arb_sample_locations@test,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 0- Grid: false,Fail
spec@arb_sample_locations@test@MSAA: 1- X: 0- Y: 0- Grid: true,Fail