diff --git a/src/intel/vulkan/anv_gem.c b/src/intel/vulkan/anv_gem.c index 7cd37d60e27..587cf4b2ef4 100644 --- a/src/intel/vulkan/anv_gem.c +++ b/src/intel/vulkan/anv_gem.c @@ -660,3 +660,24 @@ anv_gem_syncobj_timeline_query(struct anv_device *device, return gen_ioctl(device->fd, DRM_IOCTL_SYNCOBJ_QUERY, &args); } + +int +anv_i915_query(int fd, uint64_t query_id, void *buffer, + int32_t *buffer_len) +{ + struct drm_i915_query_item item = { + .query_id = query_id, + .length = *buffer_len, + .data_ptr = (uintptr_t)buffer, + }; + + struct drm_i915_query args = { + .num_items = 1, + .flags = 0, + .items_ptr = (uintptr_t)&item, + }; + + int ret = gen_ioctl(fd, DRM_IOCTL_I915_QUERY, &args); + *buffer_len = item.length; + return ret; +} diff --git a/src/intel/vulkan/anv_gem_stubs.c b/src/intel/vulkan/anv_gem_stubs.c index 699502ad618..c34f9945e9c 100644 --- a/src/intel/vulkan/anv_gem_stubs.c +++ b/src/intel/vulkan/anv_gem_stubs.c @@ -245,6 +245,13 @@ anv_gem_supports_syncobj_wait(int fd) return false; } +int +anv_i915_query(int fd, uint64_t query_id, void *buffer, + int32_t *buffer_len) +{ + unreachable("Unused"); +} + int anv_gem_syncobj_wait(struct anv_device *device, const uint32_t *handles, uint32_t num_handles, diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index c36ba42aa98..b478ddedaf4 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1660,6 +1660,8 @@ int anv_gem_syncobj_timeline_signal(struct anv_device *device, int anv_gem_syncobj_timeline_query(struct anv_device *device, const uint32_t *handles, uint64_t *points, uint32_t num_items); +int anv_i915_query(int fd, uint64_t query_id, void *buffer, + int32_t *buffer_len); uint64_t anv_vma_alloc(struct anv_device *device, uint64_t size, uint64_t align,