mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
iris: fix utrace compute end timestamp reads on Gfx20
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30923>
(cherry picked from commit 91b3ae71d7)
This commit is contained in:
parent
56d048a4ac
commit
6121239034
2 changed files with 24 additions and 5 deletions
|
|
@ -344,7 +344,7 @@
|
|||
"description": "iris: fix utrace compute end timestamp reads on Gfx20",
|
||||
"nominated": true,
|
||||
"nomination_type": 0,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -57,7 +57,19 @@ union iris_utrace_timestamp {
|
|||
* [2] = 32b Context Timestamp End
|
||||
* [3] = 32b Global Timestamp End"
|
||||
*/
|
||||
uint32_t compute_walker[4];
|
||||
uint32_t gfx125_postsync_data[4];
|
||||
|
||||
/* Timestamp written by COMPUTE_WALKER::PostSync
|
||||
*
|
||||
* BSpec 56591:
|
||||
*
|
||||
* "The timestamp layout :
|
||||
* [0] = 64b Context Timestamp Start
|
||||
* [1] = 64b Global Timestamp Start
|
||||
* [2] = 64b Context Timestamp End
|
||||
* [3] = 64b Global Timestamp End"
|
||||
*/
|
||||
uint64_t gfx20_postsync_data[4];
|
||||
};
|
||||
|
||||
static void *
|
||||
|
|
@ -139,8 +151,15 @@ iris_utrace_read_ts(struct u_trace_context *utctx,
|
|||
if (ts[idx].timestamp == U_TRACE_NO_TIMESTAMP)
|
||||
return U_TRACE_NO_TIMESTAMP;
|
||||
|
||||
/* Detect a 16bytes timestamp write */
|
||||
if (ts[idx].compute_walker[2] != 0 || ts[idx].compute_walker[3] != 0) {
|
||||
/* Detect a 16/32 bytes timestamp write */
|
||||
if (ts[idx].gfx20_postsync_data[1] != 0 ||
|
||||
ts[idx].gfx20_postsync_data[2] != 0 ||
|
||||
ts[idx].gfx20_postsync_data[3] != 0) {
|
||||
if (screen->devinfo->ver >= 20) {
|
||||
return intel_device_info_timebase_scale(screen->devinfo,
|
||||
ts[idx].gfx20_postsync_data[3]);
|
||||
}
|
||||
|
||||
/* The timestamp written by COMPUTE_WALKER::PostSync only as 32bits. We
|
||||
* need to rebuild the full 64bits using the previous timestamp. We
|
||||
* assume that utrace is reading the timestamp in order. Anyway
|
||||
|
|
@ -149,7 +168,7 @@ iris_utrace_read_ts(struct u_trace_context *utctx,
|
|||
*/
|
||||
uint64_t timestamp =
|
||||
(ice->utrace.last_full_timestamp & 0xffffffff00000000) |
|
||||
(uint64_t) ts[idx].compute_walker[3];
|
||||
(uint64_t) ts[idx].gfx125_postsync_data[3];
|
||||
|
||||
return intel_device_info_timebase_scale(screen->devinfo, timestamp);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue