intel/perf: store the probed i915-perf version
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Acked-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Rafael Antognolli <rafael.antognolli@intel.com> Reviewed-by: Mark Janes <mark.a.janes@intel.com> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4344> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4344>
This commit is contained in:

committed by
Marge Bot

parent
8e7202d45f
commit
aad0e6f810
@@ -542,6 +542,23 @@ load_pipeline_statistic_metrics(struct gen_perf_config *perf_cfg,
|
|||||||
query->data_size = sizeof(uint64_t) * query->n_counters;
|
query->data_size = sizeof(uint64_t) * query->n_counters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
i915_perf_version(int drm_fd)
|
||||||
|
{
|
||||||
|
int tmp;
|
||||||
|
drm_i915_getparam_t gp = {
|
||||||
|
.param = I915_PARAM_PERF_REVISION,
|
||||||
|
.value = &tmp,
|
||||||
|
};
|
||||||
|
|
||||||
|
int ret = gen_ioctl(drm_fd, DRM_IOCTL_I915_GETPARAM, &gp);
|
||||||
|
|
||||||
|
/* Return 0 if this getparam is not supported, the first version supported
|
||||||
|
* is 1.
|
||||||
|
*/
|
||||||
|
return ret < 0 ? 0 : tmp;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
load_oa_metrics(struct gen_perf_config *perf, int fd,
|
load_oa_metrics(struct gen_perf_config *perf, int fd,
|
||||||
const struct gen_device_info *devinfo)
|
const struct gen_device_info *devinfo)
|
||||||
@@ -551,6 +568,7 @@ load_oa_metrics(struct gen_perf_config *perf, int fd,
|
|||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
|
||||||
perf->i915_query_supported = i915_query_perf_config_supported(perf, fd);
|
perf->i915_query_supported = i915_query_perf_config_supported(perf, fd);
|
||||||
|
perf->i915_perf_version = i915_perf_version(fd);
|
||||||
|
|
||||||
/* The existence of this sysctl parameter implies the kernel supports
|
/* The existence of this sysctl parameter implies the kernel supports
|
||||||
* the i915 perf interface.
|
* the i915 perf interface.
|
||||||
|
@@ -192,6 +192,9 @@ struct gen_perf_config {
|
|||||||
/* Whether i915 has DRM_I915_QUERY_PERF_CONFIG support. */
|
/* Whether i915 has DRM_I915_QUERY_PERF_CONFIG support. */
|
||||||
bool i915_query_supported;
|
bool i915_query_supported;
|
||||||
|
|
||||||
|
/* Version of the i915-perf subsystem, refer to i915_drm.h. */
|
||||||
|
int i915_perf_version;
|
||||||
|
|
||||||
struct gen_perf_query_info *queries;
|
struct gen_perf_query_info *queries;
|
||||||
int n_queries;
|
int n_queries;
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ anv_get_perf(const struct gen_device_info *devinfo, int fd)
|
|||||||
/* 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.
|
||||||
*/
|
*/
|
||||||
if (anv_gem_get_param(fd, I915_PARAM_PERF_REVISION) < 3)
|
if (perf->i915_perf_version < 3)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
return perf;
|
return perf;
|
||||||
|
Reference in New Issue
Block a user