diff options
author | Robert Bragg <[email protected]> | 2016-10-27 22:08:19 +0100 |
---|---|---|
committer | Robert Bragg <[email protected]> | 2017-03-17 15:45:19 +0000 |
commit | 344d1a4015de94d27c20ea6f632be8e4c16b6a63 (patch) | |
tree | bd7b661388bc3f659bf1608e9f4d190751b1c0a7 /src/mesa/drivers/dri/swrast | |
parent | 28b134c75c1fa3b2aaa00dc168f0eca35ccd346d (diff) |
i965: Allow a per gen timebase scale factor
Prior to Skylake the Gen HW timestamps were driven by a 12.5MHz clock
with the convenient property of being able to scale by an integer (80)
to nanosecond units.
For Skylake the frequency is 12MHz or a scale factor of 83.333333
This updates gen_device_info to track a floating point timebase_scale
factor and makes corresponding _queryobj.c changes to no longer assume a
scale factor of 80 works across all gens.
Although the gen6_ code could have been been left alone, the changes
keep the code more comparable, and it now shares a few utility functions
for scaling raw timestamps and calculating deltas. The utility for
calculating deltas takes into account 32 or 36bit overflow depending on
the current kernel version.
Note: this leaves the timestamp handling of ARB_query_buffer_object
untouched, which continues to use an incorrect scale of 80 on Skylake
for now. This is more awkward to solve since the scaling is currently
done using a very limited uint64 ALU available to the command parser
that doesn't support multiply or divide where it's already taking a
large number of instructions just to effectively multiple by 80.
This fixes piglit arb_timer_query-timestamp-get on Skylake
v2: (Ken) Update timebase_scale for platforms past Skylake/Broxton too.
Signed-off-by: Robert Bragg <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri/swrast')
0 files changed, 0 insertions, 0 deletions