diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 498f17a5e7f..8ba60eb6abe 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1815,6 +1815,10 @@ struct anv_device { struct anv_bo_pool batch_bo_pool; /** Memory pool for utrace timestamp buffers */ struct anv_bo_pool utrace_bo_pool; + /** + * Size of the timestamp captured for utrace. + */ + uint32_t utrace_timestamp_size; /** Memory pool for BVH build buffers */ struct anv_bo_pool bvh_bo_pool; diff --git a/src/intel/vulkan/anv_utrace.c b/src/intel/vulkan/anv_utrace.c index 3e3f8cdef09..dfe5dabb286 100644 --- a/src/intel/vulkan/anv_utrace.c +++ b/src/intel/vulkan/anv_utrace.c @@ -509,6 +509,8 @@ anv_device_utrace_init(struct anv_device *device) intel_engines_class_to_string(queue->family->engine_class), queue->vk.index_in_family); } + + device->utrace_timestamp_size = sizeof(union anv_utrace_timestamp); } void diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index e6fa5833740..f3f83b20745 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -3181,14 +3181,16 @@ cmd_buffer_emit_copy_ts_buffer(struct u_trace_context *utctx, void *ts_to, uint32_t to_offset, uint32_t count) { + struct anv_device *device = + container_of(utctx, struct anv_device, ds.trace_context); struct anv_memcpy_state *memcpy_state = cmdstream; struct anv_address from_addr = (struct anv_address) { - .bo = ts_from, .offset = from_offset * sizeof(uint64_t) }; + .bo = ts_from, .offset = from_offset * device->utrace_timestamp_size }; struct anv_address to_addr = (struct anv_address) { - .bo = ts_to, .offset = to_offset * sizeof(uint64_t) }; + .bo = ts_to, .offset = to_offset * device->utrace_timestamp_size }; genX(emit_so_memcpy)(memcpy_state, to_addr, from_addr, - count * sizeof(uint64_t)); + count * device->utrace_timestamp_size); } void