From d9ff9ea9c3315e9373a1fbdccd57fce571463cd5 Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Sat, 30 Oct 2021 13:41:38 -0700 Subject: [PATCH] intel/dev: Read hwconfig from i915 Signed-off-by: Jordan Justen Reviewed-by: Caio Oliveira Part-of: --- src/intel/dev/intel_device_info.c | 3 +++ src/intel/dev/intel_hwconfig.c | 17 ++++++++++++++++- src/intel/dev/intel_hwconfig.h | 5 ++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/intel/dev/intel_device_info.c b/src/intel/dev/intel_device_info.c index 95de6fd6551..2a7008aa53c 100644 --- a/src/intel/dev/intel_device_info.c +++ b/src/intel/dev/intel_device_info.c @@ -31,6 +31,7 @@ #include #include "intel_device_info.h" +#include "intel_hwconfig.h" #include "intel/common/intel_gem.h" #include "util/bitscan.h" #include "util/debug.h" @@ -1878,6 +1879,8 @@ intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo) return true; } + intel_get_and_process_hwconfig_table(fd, devinfo); + int timestamp_frequency; if (getparam(fd, I915_PARAM_CS_TIMESTAMP_FREQUENCY, ×tamp_frequency)) diff --git a/src/intel/dev/intel_hwconfig.c b/src/intel/dev/intel_hwconfig.c index 0dfbd21cf21..36969810dc7 100644 --- a/src/intel/dev/intel_hwconfig.c +++ b/src/intel/dev/intel_hwconfig.c @@ -24,6 +24,7 @@ #include #include +#include "drm-uapi/i915_drm.h" #include "intel_device_info.h" #include "intel_hwconfig.h" #include "intel_hwconfig_types.h" @@ -271,7 +272,7 @@ apply_hwconfig_item(struct intel_device_info *devinfo, } } -void +static void intel_apply_hwconfig_table(struct intel_device_info *devinfo, const struct hwconfig *hwconfig, int32_t hwconfig_len) @@ -286,6 +287,20 @@ intel_apply_hwconfig_table(struct intel_device_info *devinfo, } } +void +intel_get_and_process_hwconfig_table(int fd, + struct intel_device_info *devinfo) +{ + struct hwconfig *hwconfig; + int32_t hwconfig_len = 0; + hwconfig = intel_i915_query_alloc(fd, DRM_I915_QUERY_HWCONFIG_BLOB, + &hwconfig_len); + if (hwconfig) { + intel_apply_hwconfig_table(devinfo, hwconfig, hwconfig_len); + free(hwconfig); + } +} + static void print_hwconfig_item(struct intel_device_info *devinfo, const struct hwconfig *item) diff --git a/src/intel/dev/intel_hwconfig.h b/src/intel/dev/intel_hwconfig.h index 654adab819d..20d76abf5ae 100644 --- a/src/intel/dev/intel_hwconfig.h +++ b/src/intel/dev/intel_hwconfig.h @@ -36,9 +36,8 @@ struct hwconfig; struct intel_device_info; void -intel_apply_hwconfig_table(struct intel_device_info *devinfo, - const struct hwconfig *hwconfig, - int32_t hwconfig_len); +intel_get_and_process_hwconfig_table(int fd, + struct intel_device_info *devinfo); void intel_print_hwconfig_table(const struct hwconfig *hwconfig, int32_t hwconfig_len);