diff options
author | Lionel Landwerlin <[email protected]> | 2017-12-04 15:22:12 +0000 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2017-12-04 18:05:20 +0000 |
commit | 2ead8f1690823bbb1acb8102bb6ceee26e8574b1 (patch) | |
tree | c566a7b906488e3b3e9f28a2529f7dadbf272801 /src/intel | |
parent | b66e4b51bfc82621e590e6be8972a30958c0a08a (diff) |
anv: query CS timestamp frequency from the kernel
The reference value in gen_device_info isn't going to be acurate on
Gen10+. We should query it from the kernel, which reads a couple of
register to compute the actual value.
Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Rafael Antognolli <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/anv_device.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index 258668fa0b0..97124154b69 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -371,6 +371,19 @@ anv_physical_device_init(struct anv_physical_device *device, bool swizzled = anv_gem_get_bit6_swizzle(fd, I915_TILING_X); + /* Starting with Gen10, the timestamp frequency of the command streamer may + * vary from one part to another. We can query the value from the kernel. + */ + if (device->info.gen >= 10) { + int timestamp_frequency = + anv_gem_get_param(fd, I915_PARAM_CS_TIMESTAMP_FREQUENCY); + + if (timestamp_frequency < 0) + intel_logw("Kernel 4.16-rc1+ required to properly query CS timestamp frequency"); + else + device->info.timestamp_frequency = timestamp_frequency; + } + /* GENs prior to 8 do not support EU/Subslice info */ if (device->info.gen >= 8) { device->subslice_total = anv_gem_get_param(fd, I915_PARAM_SUBSLICE_TOTAL); |