intel/perf: make pipeline statistic query loading optional
On Vulkan most of those are already covered by standard queries so add the ability to skip them. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2775>
This commit is contained in:
@@ -109,7 +109,8 @@ iris_monitor_init_metrics(struct iris_screen *screen)
|
|||||||
|
|
||||||
iris_perf_init_vtbl(perf_cfg);
|
iris_perf_init_vtbl(perf_cfg);
|
||||||
|
|
||||||
gen_perf_init_metrics(perf_cfg, &screen->devinfo, screen->fd);
|
gen_perf_init_metrics(perf_cfg, &screen->devinfo, screen->fd,
|
||||||
|
true /* pipeline stats*/);
|
||||||
screen->monitor_cfg = monitor_cfg;
|
screen->monitor_cfg = monitor_cfg;
|
||||||
|
|
||||||
/* a gallium "group" is equivalent to a gen "query"
|
/* a gallium "group" is equivalent to a gen "query"
|
||||||
|
@@ -73,7 +73,7 @@ iris_init_perf_query_info(struct pipe_context *pipe)
|
|||||||
ice->batches[IRIS_BATCH_RENDER].hw_ctx_id,
|
ice->batches[IRIS_BATCH_RENDER].hw_ctx_id,
|
||||||
screen->fd);
|
screen->fd);
|
||||||
|
|
||||||
gen_perf_init_metrics(perf_cfg, &screen->devinfo, screen->fd);
|
gen_perf_init_metrics(perf_cfg, &screen->devinfo, screen->fd, true /* pipeline_statistics */);
|
||||||
|
|
||||||
return perf_cfg->n_queries;
|
return perf_cfg->n_queries;
|
||||||
}
|
}
|
||||||
|
@@ -847,10 +847,13 @@ gen_perf_query_result_clear(struct gen_perf_query_result *result)
|
|||||||
void
|
void
|
||||||
gen_perf_init_metrics(struct gen_perf_config *perf_cfg,
|
gen_perf_init_metrics(struct gen_perf_config *perf_cfg,
|
||||||
const struct gen_device_info *devinfo,
|
const struct gen_device_info *devinfo,
|
||||||
int drm_fd)
|
int drm_fd,
|
||||||
|
bool include_pipeline_statistics)
|
||||||
{
|
{
|
||||||
load_pipeline_statistic_metrics(perf_cfg, devinfo);
|
if (include_pipeline_statistics) {
|
||||||
gen_perf_register_mdapi_statistic_query(perf_cfg, devinfo);
|
load_pipeline_statistic_metrics(perf_cfg, devinfo);
|
||||||
|
gen_perf_register_mdapi_statistic_query(perf_cfg, devinfo);
|
||||||
|
}
|
||||||
if (load_oa_metrics(perf_cfg, drm_fd, devinfo))
|
if (load_oa_metrics(perf_cfg, drm_fd, devinfo))
|
||||||
gen_perf_register_mdapi_oa_query(perf_cfg, devinfo);
|
gen_perf_register_mdapi_oa_query(perf_cfg, devinfo);
|
||||||
}
|
}
|
||||||
|
@@ -252,7 +252,8 @@ struct gen_perf_config {
|
|||||||
|
|
||||||
void gen_perf_init_metrics(struct gen_perf_config *perf_cfg,
|
void gen_perf_init_metrics(struct gen_perf_config *perf_cfg,
|
||||||
const struct gen_device_info *devinfo,
|
const struct gen_device_info *devinfo,
|
||||||
int drm_fd);
|
int drm_fd,
|
||||||
|
bool include_pipeline_statistics);
|
||||||
|
|
||||||
/** Query i915 for a metric id using guid.
|
/** Query i915 for a metric id using guid.
|
||||||
*/
|
*/
|
||||||
|
@@ -35,7 +35,7 @@ anv_get_perf(const struct gen_device_info *devinfo, int fd)
|
|||||||
{
|
{
|
||||||
struct gen_perf_config *perf = gen_perf_new(NULL);
|
struct gen_perf_config *perf = gen_perf_new(NULL);
|
||||||
|
|
||||||
gen_perf_init_metrics(perf, devinfo, fd);
|
gen_perf_init_metrics(perf, devinfo, fd, false /* pipeline statistics */);
|
||||||
|
|
||||||
/* We need DRM_I915_PERF_PROP_HOLD_PREEMPTION support, only available in
|
/* We need DRM_I915_PERF_PROP_HOLD_PREEMPTION support, only available in
|
||||||
* perf revision 2.
|
* perf revision 2.
|
||||||
|
@@ -506,7 +506,8 @@ brw_init_perf_query_info(struct gl_context *ctx)
|
|||||||
|
|
||||||
gen_perf_init_context(perf_ctx, perf_cfg, brw, brw->bufmgr, devinfo,
|
gen_perf_init_context(perf_ctx, perf_cfg, brw, brw->bufmgr, devinfo,
|
||||||
brw->hw_ctx, brw->screen->fd);
|
brw->hw_ctx, brw->screen->fd);
|
||||||
gen_perf_init_metrics(perf_cfg, devinfo, brw->screen->fd);
|
gen_perf_init_metrics(perf_cfg, devinfo, brw->screen->fd,
|
||||||
|
true /* pipeline stats */);
|
||||||
|
|
||||||
return perf_cfg->n_queries;
|
return perf_cfg->n_queries;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user