Module: Mesa Branch: master Commit: b66e4b51bfc82621e590e6be8972a30958c0a08a URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b66e4b51bfc82621e590e6be8972a30958c0a08a
Author: Lionel Landwerlin <lionel.g.landwer...@intel.com> Date: Mon Nov 6 11:11:42 2017 +0000 i965: read CS timestamp frequency from the kernel on Gen10+ We cannot figure this value out of the PCI-id anymore. Let's read it from the kernel (which computes this from a few registers). When running on a (upcoming) 4.16-rc1+ kernel, this will fixes piglit tests on CNL : spec@arb_timer_query@query gl_timestamp spec@arb_timer_query@timestamp-get spec@ext_timer_query@time-elapsed Signed-off-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> Reviewed-by: Rafael Antognolli <rafael.antogno...@intel.com> --- src/mesa/drivers/dri/i965/intel_screen.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/mesa/drivers/dri/i965/intel_screen.c b/src/mesa/drivers/dri/i965/intel_screen.c index db1552c188..0c17b4050c 100644 --- a/src/mesa/drivers/dri/i965/intel_screen.c +++ b/src/mesa/drivers/dri/i965/intel_screen.c @@ -1686,6 +1686,27 @@ intelDestroyBuffer(__DRIdrawable * driDrawPriv) } static void +intel_cs_timestamp_frequency(struct intel_screen *screen) +{ + /* We shouldn't need to update gen_device_info.timestamp_frequency prior to + * gen10, PCI-id is enough to figure it out. + */ + assert(screen->devinfo.gen >= 10); + + int ret, freq; + + ret = intel_get_param(screen, I915_PARAM_CS_TIMESTAMP_FREQUENCY, + &freq); + if (ret < 0) { + _mesa_warning(NULL, + "Kernel 4.15 required to read the CS timestamp frequency.\n"); + return; + } + + screen->devinfo.timestamp_frequency = freq; +} + +static void intel_detect_sseu(struct intel_screen *screen) { assert(screen->devinfo.gen >= 8); @@ -2405,6 +2426,9 @@ __DRIconfig **intelInitScreen2(__DRIscreen *dri_screen) isl_device_init(&screen->isl_dev, &screen->devinfo, screen->hw_has_swizzling); + if (devinfo->gen >= 10) + intel_cs_timestamp_frequency(screen); + /* GENs prior to 8 do not support EU/Subslice info */ if (devinfo->gen >= 8) { intel_detect_sseu(screen); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit