Module: Mesa Branch: master Commit: aad0e6f81049c098fd3922d61aa228e4bf791317 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=aad0e6f81049c098fd3922d61aa228e4bf791317
Author: Lionel Landwerlin <[email protected]> Date: Mon Mar 2 14:00:55 2020 +0200 intel/perf: store the probed i915-perf version Signed-off-by: Lionel Landwerlin <[email protected]> Acked-by: Tapani Pälli <[email protected]> Reviewed-by: Rafael Antognolli <[email protected]> Reviewed-by: Mark Janes <[email protected]> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4344> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4344> --- src/intel/perf/gen_perf.c | 18 ++++++++++++++++++ src/intel/perf/gen_perf.h | 3 +++ src/intel/vulkan/anv_perf.c | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/intel/perf/gen_perf.c b/src/intel/perf/gen_perf.c index 2c5d541feed..1bf2424e108 100644 --- a/src/intel/perf/gen_perf.c +++ b/src/intel/perf/gen_perf.c @@ -542,6 +542,23 @@ load_pipeline_statistic_metrics(struct gen_perf_config *perf_cfg, 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 load_oa_metrics(struct gen_perf_config *perf, int fd, const struct gen_device_info *devinfo) @@ -551,6 +568,7 @@ load_oa_metrics(struct gen_perf_config *perf, int fd, struct stat sb; 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 i915 perf interface. diff --git a/src/intel/perf/gen_perf.h b/src/intel/perf/gen_perf.h index facd5bb6a4c..4f0805f2b26 100644 --- a/src/intel/perf/gen_perf.h +++ b/src/intel/perf/gen_perf.h @@ -192,6 +192,9 @@ struct gen_perf_config { /* Whether i915 has DRM_I915_QUERY_PERF_CONFIG support. */ 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; int n_queries; diff --git a/src/intel/vulkan/anv_perf.c b/src/intel/vulkan/anv_perf.c index 3d673bb7734..5c8fd5288b2 100644 --- a/src/intel/vulkan/anv_perf.c +++ b/src/intel/vulkan/anv_perf.c @@ -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 * perf revision 2. */ - if (anv_gem_get_param(fd, I915_PARAM_PERF_REVISION) < 3) + if (perf->i915_perf_version < 3) goto err; return perf; _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
