Re: [PATCH] drm/v3d: Fix perfmon build error/warning
On 05/06/2024 08:19, Iago Toral wrote: Thanks for looking at ixing this Tvrtko. El mar, 04-06-2024 a las 17:02 +0100, Tvrtko Ursulin escribió: From: Tvrtko Ursulin Move static const array into the source file to fix the "defined but not used" errors. The fix is perhaps not the prettiest due hand crafting the array sizes in v3d_performance_counters.h, but I did add some build time asserts to validate the counts look sensible, so hopefully it is good enough for a quick fix. If we need this to go in ASAP I am fine with this patch as-is, so: Reviewed-by: Iago Toral Quiroga With that said, if we are still in time for a bit of iteration may I suggest that instead of hard-coding the counters we instead add helper functions in drivers/gpu/drm/v3d/v3d_perfmon.c that call ARRAY_SIZE on the corresponding array based on v3d->ver? It is fine if we prefer to merge this as-is and do this change later as a follow-up patch. I agree it isn't pretty and I was (and am) planning to see if things can be improved. The reason I gave up on a prettier solution in the original attempt is the the fact one array is statically sized (at build time) based on the max number of counters: /* Number of perfmons required to handle all supported performance counters */ #define V3D_MAX_PERFMONS DIV_ROUND_UP(V3D_MAX_COUNTERS, \ DRM_V3D_MAX_PERF_COUNTERS) struct v3d_performance_query { /* Performance monitor IDs for this query */ u32 kperfmon_ids[V3D_MAX_PERFMONS]; So need to see how to untangle that and then perhaps even go a step further than the getters but move the whole perfmon init into v3d_perfmon.c. Regards, Tvrtko Iago Signed-off-by: Tvrtko Ursulin Fixes: 3cbcbe016c31 ("drm/v3d: Add Performance Counters descriptions for V3D 4.2 and 7.1") Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202405211137.huefklkg-...@intel.com/Cc : Maíra Canal Cc: Iago Toral Quiroga Cc: Jani Nikula Cc: Ashutosh Dixit --- drivers/gpu/drm/v3d/v3d_drv.c | 4 +- drivers/gpu/drm/v3d/v3d_drv.h | 3 - drivers/gpu/drm/v3d/v3d_perfmon.c | 204 +- .../gpu/drm/v3d/v3d_performance_counters.h | 189 +--- 4 files changed, 205 insertions(+), 195 deletions(-) diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c index f7477488b1cc..a47f00b443d3 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.c +++ b/drivers/gpu/drm/v3d/v3d_drv.c @@ -299,9 +299,9 @@ static int v3d_platform_drm_probe(struct platform_device *pdev) WARN_ON(v3d->cores > 1); /* multicore not yet implemented */ if (v3d->ver >= 71) - v3d->max_counters = ARRAY_SIZE(v3d_v71_performance_counters); + v3d->max_counters = V3D_V71_NUM_PERFCOUNTERS; else if (v3d->ver >= 42) - v3d->max_counters = ARRAY_SIZE(v3d_v42_performance_counters); + v3d->max_counters = V3D_V42_NUM_PERFCOUNTERS; else v3d->max_counters = 0; diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h index 556cbb400ba0..099b962bdfde 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h @@ -351,9 +351,6 @@ struct v3d_timestamp_query { struct drm_syncobj *syncobj; }; -/* Maximum number of performance counters supported by any version of V3D */ -#define V3D_MAX_COUNTERS ARRAY_SIZE(v3d_v71_performance_counters) - /* Number of perfmons required to handle all supported performance counters */ #define V3D_MAX_PERFMONS DIV_ROUND_UP(V3D_MAX_COUNTERS, \ DRM_V3D_MAX_PERF_COUNTERS) diff --git a/drivers/gpu/drm/v3d/v3d_perfmon.c b/drivers/gpu/drm/v3d/v3d_perfmon.c index 73e2bb8bdb7f..b7d0b02e1a95 100644 --- a/drivers/gpu/drm/v3d/v3d_perfmon.c +++ b/drivers/gpu/drm/v3d/v3d_perfmon.c @@ -9,6 +9,192 @@ #define V3D_PERFMONID_MIN 1 #define V3D_PERFMONID_MAX U32_MAX +static const struct v3d_perf_counter_desc v3d_v42_performance_counters[] = { + {"FEP", "FEP-valid-primitives-no-rendered-pixels", "[FEP] Valid primitives that result in no rendered pixels, for all rendered tiles"}, + {"FEP", "FEP-valid-primitives-rendered-pixels", "[FEP] Valid primitives for all rendered tiles (primitives may be counted in more than one tile)"}, + {"FEP", "FEP-clipped-quads", "[FEP] Early-Z/Near/Far clipped quads"}, + {"FEP", "FEP-valid-quads", "[FEP] Valid quads"}, + {"TLB", "TLB-quads-not-passing-stencil-test", "[TLB] Quads with no pixels passing the stencil test"}, + {"TLB", "TLB-quads-not-passing-z-and-stencil-test", "[TLB] Quads with no pixels passing the Z and stencil tests"}, + {"TLB", "TLB-quads-passing-z-and-stencil-test", "[TLB] Quads with any pixels passing the Z and stencil tests"}, + {"TLB", "TLB-quads-with-zero-coverage", "[TLB] Quads with all pixels having zero coverage"}, + {"TLB",
Re: [PATCH] drm/v3d: Fix perfmon build error/warning
On Tue, 04 Jun 2024, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin > > Move static const array into the source file to fix the "defined but not > used" errors. > > The fix is perhaps not the prettiest due hand crafting the array sizes > in v3d_performance_counters.h, but I did add some build time asserts to > validate the counts look sensible, so hopefully it is good enough for a > quick fix. > > Signed-off-by: Tvrtko Ursulin > Fixes: 3cbcbe016c31 ("drm/v3d: Add Performance Counters descriptions for V3D > 4.2 and 7.1") > Reported-by: kernel test robot > Closes: > https://lore.kernel.org/oe-kbuild-all/202405211137.huefklkg-...@intel.com/Cc: > Maíra Canal I guess it's too late now, but \n missing before Cc: there. BR, Jani. > Cc: Iago Toral Quiroga > Cc: Jani Nikula > Cc: Ashutosh Dixit > --- > drivers/gpu/drm/v3d/v3d_drv.c | 4 +- > drivers/gpu/drm/v3d/v3d_drv.h | 3 - > drivers/gpu/drm/v3d/v3d_perfmon.c | 204 +- > .../gpu/drm/v3d/v3d_performance_counters.h| 189 +--- > 4 files changed, 205 insertions(+), 195 deletions(-) > > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c > index f7477488b1cc..a47f00b443d3 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.c > +++ b/drivers/gpu/drm/v3d/v3d_drv.c > @@ -299,9 +299,9 @@ static int v3d_platform_drm_probe(struct platform_device > *pdev) > WARN_ON(v3d->cores > 1); /* multicore not yet implemented */ > > if (v3d->ver >= 71) > - v3d->max_counters = ARRAY_SIZE(v3d_v71_performance_counters); > + v3d->max_counters = V3D_V71_NUM_PERFCOUNTERS; > else if (v3d->ver >= 42) > - v3d->max_counters = ARRAY_SIZE(v3d_v42_performance_counters); > + v3d->max_counters = V3D_V42_NUM_PERFCOUNTERS; > else > v3d->max_counters = 0; > > diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h > index 556cbb400ba0..099b962bdfde 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.h > +++ b/drivers/gpu/drm/v3d/v3d_drv.h > @@ -351,9 +351,6 @@ struct v3d_timestamp_query { > struct drm_syncobj *syncobj; > }; > > -/* Maximum number of performance counters supported by any version of V3D */ > -#define V3D_MAX_COUNTERS ARRAY_SIZE(v3d_v71_performance_counters) > - > /* Number of perfmons required to handle all supported performance counters > */ > #define V3D_MAX_PERFMONS DIV_ROUND_UP(V3D_MAX_COUNTERS, \ > DRM_V3D_MAX_PERF_COUNTERS) > diff --git a/drivers/gpu/drm/v3d/v3d_perfmon.c > b/drivers/gpu/drm/v3d/v3d_perfmon.c > index 73e2bb8bdb7f..b7d0b02e1a95 100644 > --- a/drivers/gpu/drm/v3d/v3d_perfmon.c > +++ b/drivers/gpu/drm/v3d/v3d_perfmon.c > @@ -9,6 +9,192 @@ > #define V3D_PERFMONID_MIN1 > #define V3D_PERFMONID_MAXU32_MAX > > +static const struct v3d_perf_counter_desc v3d_v42_performance_counters[] = { > + {"FEP", "FEP-valid-primitives-no-rendered-pixels", "[FEP] Valid > primitives that result in no rendered pixels, for all rendered tiles"}, > + {"FEP", "FEP-valid-primitives-rendered-pixels", "[FEP] Valid primitives > for all rendered tiles (primitives may be counted in more than one tile)"}, > + {"FEP", "FEP-clipped-quads", "[FEP] Early-Z/Near/Far clipped quads"}, > + {"FEP", "FEP-valid-quads", "[FEP] Valid quads"}, > + {"TLB", "TLB-quads-not-passing-stencil-test", "[TLB] Quads with no > pixels passing the stencil test"}, > + {"TLB", "TLB-quads-not-passing-z-and-stencil-test", "[TLB] Quads with > no pixels passing the Z and stencil tests"}, > + {"TLB", "TLB-quads-passing-z-and-stencil-test", "[TLB] Quads with any > pixels passing the Z and stencil tests"}, > + {"TLB", "TLB-quads-with-zero-coverage", "[TLB] Quads with all pixels > having zero coverage"}, > + {"TLB", "TLB-quads-with-non-zero-coverage", "[TLB] Quads with any > pixels having non-zero coverage"}, > + {"TLB", "TLB-quads-written-to-color-buffer", "[TLB] Quads with valid > pixels written to colour buffer"}, > + {"PTB", "PTB-primitives-discarded-outside-viewport", "[PTB] Primitives > discarded by being outside the viewport"}, > + {"PTB", "PTB-primitives-need-clipping", "[PTB] Primitives that need > clipping"}, > + {"PTB", "PTB-primitives-discarded-reversed", "[PTB] Primitives that are > discarded because they are reversed"}, > + {"QPU", "QPU-total-idle-clk-cycles", "[QPU] Total idle clock cycles for > all QPUs"}, > + {"QPU", "QPU-total-active-clk-cycles-vertex-coord-shading", "[QPU] > Total active clock cycles for all QPUs doing vertex/coordinate/user shading > (counts only when QPU is not stalled)"}, > + {"QPU", "QPU-total-active-clk-cycles-fragment-shading", "[QPU] Total > active clock cycles for all QPUs doing fragment shading (counts only when QPU > is not stalled)"}, > + {"QPU", "QPU-total-clk-cycles-executing-valid-instr", "[QPU] Total > clock cycles for all QPUs executing
Re: (subset) [PATCH] drm/v3d: Fix perfmon build error/warning
On Tue, 04 Jun 2024 17:02:10 +0100, Tvrtko Ursulin wrote: > Move static const array into the source file to fix the "defined but not > used" errors. > > The fix is perhaps not the prettiest due hand crafting the array sizes > in v3d_performance_counters.h, but I did add some build time asserts to > validate the counts look sensible, so hopefully it is good enough for a > quick fix. > > [...] Applied to misc/kernel.git (drm-misc-next). Thanks! Maxime
Re: [PATCH] drm/v3d: Fix perfmon build error/warning
Hi, On Wed, Jun 05, 2024 at 08:19:34AM GMT, Iago Toral wrote: > Thanks for looking at ixing this Tvrtko. > > El mar, 04-06-2024 a las 17:02 +0100, Tvrtko Ursulin escribió: > > From: Tvrtko Ursulin > > > > Move static const array into the source file to fix the "defined but > > not > > used" errors. > > > > The fix is perhaps not the prettiest due hand crafting the array > > sizes > > in v3d_performance_counters.h, but I did add some build time asserts > > to > > validate the counts look sensible, so hopefully it is good enough for > > a > > quick fix. > > > > If we need this to go in ASAP I am fine with this patch as-is, so: > > Reviewed-by: Iago Toral Quiroga > > With that said, if we are still in time for a bit of iteration may I > suggest that instead of hard-coding the counters we instead add helper > functions in drivers/gpu/drm/v3d/v3d_perfmon.c that call ARRAY_SIZE on > the corresponding array based on v3d->ver? It is fine if we prefer to > merge this as-is and do this change later as a follow-up patch. This is blocking the merge from drm-misc-next into drm/next at the moment, so I'm going to merge this patch as is so I can send the PR tomorrow. Your comment looks fine to me too, so feel free to send a follow-up patch to refine what's done here :) Thanks! Maxime signature.asc Description: PGP signature
Re: [PATCH] drm/v3d: Fix perfmon build error/warning
Thanks for looking at ixing this Tvrtko. El mar, 04-06-2024 a las 17:02 +0100, Tvrtko Ursulin escribió: > From: Tvrtko Ursulin > > Move static const array into the source file to fix the "defined but > not > used" errors. > > The fix is perhaps not the prettiest due hand crafting the array > sizes > in v3d_performance_counters.h, but I did add some build time asserts > to > validate the counts look sensible, so hopefully it is good enough for > a > quick fix. > If we need this to go in ASAP I am fine with this patch as-is, so: Reviewed-by: Iago Toral Quiroga With that said, if we are still in time for a bit of iteration may I suggest that instead of hard-coding the counters we instead add helper functions in drivers/gpu/drm/v3d/v3d_perfmon.c that call ARRAY_SIZE on the corresponding array based on v3d->ver? It is fine if we prefer to merge this as-is and do this change later as a follow-up patch. Iago > Signed-off-by: Tvrtko Ursulin > Fixes: 3cbcbe016c31 ("drm/v3d: Add Performance Counters descriptions > for V3D 4.2 and 7.1") > Reported-by: kernel test robot > Closes: > https://lore.kernel.org/oe-kbuild-all/202405211137.huefklkg-...@intel.com/Cc > : Maíra Canal > Cc: Iago Toral Quiroga > Cc: Jani Nikula > Cc: Ashutosh Dixit > --- > drivers/gpu/drm/v3d/v3d_drv.c | 4 +- > drivers/gpu/drm/v3d/v3d_drv.h | 3 - > drivers/gpu/drm/v3d/v3d_perfmon.c | 204 > +- > .../gpu/drm/v3d/v3d_performance_counters.h | 189 +--- > 4 files changed, 205 insertions(+), 195 deletions(-) > > diff --git a/drivers/gpu/drm/v3d/v3d_drv.c > b/drivers/gpu/drm/v3d/v3d_drv.c > index f7477488b1cc..a47f00b443d3 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.c > +++ b/drivers/gpu/drm/v3d/v3d_drv.c > @@ -299,9 +299,9 @@ static int v3d_platform_drm_probe(struct > platform_device *pdev) > WARN_ON(v3d->cores > 1); /* multicore not yet implemented */ > > if (v3d->ver >= 71) > - v3d->max_counters = > ARRAY_SIZE(v3d_v71_performance_counters); > + v3d->max_counters = V3D_V71_NUM_PERFCOUNTERS; > else if (v3d->ver >= 42) > - v3d->max_counters = > ARRAY_SIZE(v3d_v42_performance_counters); > + v3d->max_counters = V3D_V42_NUM_PERFCOUNTERS; > else > v3d->max_counters = 0; > > diff --git a/drivers/gpu/drm/v3d/v3d_drv.h > b/drivers/gpu/drm/v3d/v3d_drv.h > index 556cbb400ba0..099b962bdfde 100644 > --- a/drivers/gpu/drm/v3d/v3d_drv.h > +++ b/drivers/gpu/drm/v3d/v3d_drv.h > @@ -351,9 +351,6 @@ struct v3d_timestamp_query { > struct drm_syncobj *syncobj; > }; > > -/* Maximum number of performance counters supported by any version > of V3D */ > -#define V3D_MAX_COUNTERS ARRAY_SIZE(v3d_v71_performance_counters) > - > /* Number of perfmons required to handle all supported performance > counters */ > #define V3D_MAX_PERFMONS DIV_ROUND_UP(V3D_MAX_COUNTERS, \ > DRM_V3D_MAX_PERF_COUNTERS) > diff --git a/drivers/gpu/drm/v3d/v3d_perfmon.c > b/drivers/gpu/drm/v3d/v3d_perfmon.c > index 73e2bb8bdb7f..b7d0b02e1a95 100644 > --- a/drivers/gpu/drm/v3d/v3d_perfmon.c > +++ b/drivers/gpu/drm/v3d/v3d_perfmon.c > @@ -9,6 +9,192 @@ > #define V3D_PERFMONID_MIN1 > #define V3D_PERFMONID_MAXU32_MAX > > +static const struct v3d_perf_counter_desc > v3d_v42_performance_counters[] = { > + {"FEP", "FEP-valid-primitives-no-rendered-pixels", "[FEP] > Valid primitives that result in no rendered pixels, for all rendered > tiles"}, > + {"FEP", "FEP-valid-primitives-rendered-pixels", "[FEP] Valid > primitives for all rendered tiles (primitives may be counted in more > than one tile)"}, > + {"FEP", "FEP-clipped-quads", "[FEP] Early-Z/Near/Far clipped > quads"}, > + {"FEP", "FEP-valid-quads", "[FEP] Valid quads"}, > + {"TLB", "TLB-quads-not-passing-stencil-test", "[TLB] Quads > with no pixels passing the stencil test"}, > + {"TLB", "TLB-quads-not-passing-z-and-stencil-test", "[TLB] > Quads with no pixels passing the Z and stencil tests"}, > + {"TLB", "TLB-quads-passing-z-and-stencil-test", "[TLB] Quads > with any pixels passing the Z and stencil tests"}, > + {"TLB", "TLB-quads-with-zero-coverage", "[TLB] Quads with > all pixels having zero coverage"}, > + {"TLB", "TLB-quads-with-non-zero-coverage", "[TLB] Quads > with any pixels having non-zero coverage"}, > + {"TLB", "TLB-quads-written-to-color-buffer", "[TLB] Quads > with valid pixels written to colour buffer"}, > + {"PTB", "PTB-primitives-discarded-outside-viewport", "[PTB] > Primitives discarded by being outside the viewport"}, > + {"PTB", "PTB-primitives-need-clipping", "[PTB] Primitives > that need clipping"}, > + {"PTB", "PTB-primitives-discarded-reversed", "[PTB] > Primitives that are discarded because they are reversed"}, > + {"QPU", "QPU-total-idle-clk-cycles", "[QPU] Total idle clock > cycles for all QPUs"}, > + {"QPU",
[PATCH] drm/v3d: Fix perfmon build error/warning
From: Tvrtko Ursulin Move static const array into the source file to fix the "defined but not used" errors. The fix is perhaps not the prettiest due hand crafting the array sizes in v3d_performance_counters.h, but I did add some build time asserts to validate the counts look sensible, so hopefully it is good enough for a quick fix. Signed-off-by: Tvrtko Ursulin Fixes: 3cbcbe016c31 ("drm/v3d: Add Performance Counters descriptions for V3D 4.2 and 7.1") Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202405211137.huefklkg-...@intel.com/Cc: Maíra Canal Cc: Iago Toral Quiroga Cc: Jani Nikula Cc: Ashutosh Dixit --- drivers/gpu/drm/v3d/v3d_drv.c | 4 +- drivers/gpu/drm/v3d/v3d_drv.h | 3 - drivers/gpu/drm/v3d/v3d_perfmon.c | 204 +- .../gpu/drm/v3d/v3d_performance_counters.h| 189 +--- 4 files changed, 205 insertions(+), 195 deletions(-) diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c index f7477488b1cc..a47f00b443d3 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.c +++ b/drivers/gpu/drm/v3d/v3d_drv.c @@ -299,9 +299,9 @@ static int v3d_platform_drm_probe(struct platform_device *pdev) WARN_ON(v3d->cores > 1); /* multicore not yet implemented */ if (v3d->ver >= 71) - v3d->max_counters = ARRAY_SIZE(v3d_v71_performance_counters); + v3d->max_counters = V3D_V71_NUM_PERFCOUNTERS; else if (v3d->ver >= 42) - v3d->max_counters = ARRAY_SIZE(v3d_v42_performance_counters); + v3d->max_counters = V3D_V42_NUM_PERFCOUNTERS; else v3d->max_counters = 0; diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h index 556cbb400ba0..099b962bdfde 100644 --- a/drivers/gpu/drm/v3d/v3d_drv.h +++ b/drivers/gpu/drm/v3d/v3d_drv.h @@ -351,9 +351,6 @@ struct v3d_timestamp_query { struct drm_syncobj *syncobj; }; -/* Maximum number of performance counters supported by any version of V3D */ -#define V3D_MAX_COUNTERS ARRAY_SIZE(v3d_v71_performance_counters) - /* Number of perfmons required to handle all supported performance counters */ #define V3D_MAX_PERFMONS DIV_ROUND_UP(V3D_MAX_COUNTERS, \ DRM_V3D_MAX_PERF_COUNTERS) diff --git a/drivers/gpu/drm/v3d/v3d_perfmon.c b/drivers/gpu/drm/v3d/v3d_perfmon.c index 73e2bb8bdb7f..b7d0b02e1a95 100644 --- a/drivers/gpu/drm/v3d/v3d_perfmon.c +++ b/drivers/gpu/drm/v3d/v3d_perfmon.c @@ -9,6 +9,192 @@ #define V3D_PERFMONID_MIN 1 #define V3D_PERFMONID_MAX U32_MAX +static const struct v3d_perf_counter_desc v3d_v42_performance_counters[] = { + {"FEP", "FEP-valid-primitives-no-rendered-pixels", "[FEP] Valid primitives that result in no rendered pixels, for all rendered tiles"}, + {"FEP", "FEP-valid-primitives-rendered-pixels", "[FEP] Valid primitives for all rendered tiles (primitives may be counted in more than one tile)"}, + {"FEP", "FEP-clipped-quads", "[FEP] Early-Z/Near/Far clipped quads"}, + {"FEP", "FEP-valid-quads", "[FEP] Valid quads"}, + {"TLB", "TLB-quads-not-passing-stencil-test", "[TLB] Quads with no pixels passing the stencil test"}, + {"TLB", "TLB-quads-not-passing-z-and-stencil-test", "[TLB] Quads with no pixels passing the Z and stencil tests"}, + {"TLB", "TLB-quads-passing-z-and-stencil-test", "[TLB] Quads with any pixels passing the Z and stencil tests"}, + {"TLB", "TLB-quads-with-zero-coverage", "[TLB] Quads with all pixels having zero coverage"}, + {"TLB", "TLB-quads-with-non-zero-coverage", "[TLB] Quads with any pixels having non-zero coverage"}, + {"TLB", "TLB-quads-written-to-color-buffer", "[TLB] Quads with valid pixels written to colour buffer"}, + {"PTB", "PTB-primitives-discarded-outside-viewport", "[PTB] Primitives discarded by being outside the viewport"}, + {"PTB", "PTB-primitives-need-clipping", "[PTB] Primitives that need clipping"}, + {"PTB", "PTB-primitives-discarded-reversed", "[PTB] Primitives that are discarded because they are reversed"}, + {"QPU", "QPU-total-idle-clk-cycles", "[QPU] Total idle clock cycles for all QPUs"}, + {"QPU", "QPU-total-active-clk-cycles-vertex-coord-shading", "[QPU] Total active clock cycles for all QPUs doing vertex/coordinate/user shading (counts only when QPU is not stalled)"}, + {"QPU", "QPU-total-active-clk-cycles-fragment-shading", "[QPU] Total active clock cycles for all QPUs doing fragment shading (counts only when QPU is not stalled)"}, + {"QPU", "QPU-total-clk-cycles-executing-valid-instr", "[QPU] Total clock cycles for all QPUs executing valid instructions"}, + {"QPU", "QPU-total-clk-cycles-waiting-TMU", "[QPU] Total clock cycles for all QPUs stalled waiting for TMUs only (counter won't increment if QPU also stalling for another reason)"}, + {"QPU",