diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c index b4441c5c4bf..432cc5a4c33 100644 --- a/src/gallium/drivers/iris/iris_batch.c +++ b/src/gallium/drivers/iris/iris_batch.c @@ -265,7 +265,7 @@ iris_create_engines_context(struct iris_context *ice, int priority) int fd = iris_bufmgr_get_fd(screen->bufmgr); struct drm_i915_query_engine_info *engines_info = - intel_i915_query_alloc(fd, DRM_I915_QUERY_ENGINE_INFO); + intel_i915_query_alloc(fd, DRM_I915_QUERY_ENGINE_INFO, NULL); if (!engines_info) return -1; diff --git a/src/gallium/drivers/iris/iris_bufmgr.c b/src/gallium/drivers/iris/iris_bufmgr.c index 2a452886211..f1758953d41 100644 --- a/src/gallium/drivers/iris/iris_bufmgr.c +++ b/src/gallium/drivers/iris/iris_bufmgr.c @@ -2272,7 +2272,7 @@ static bool iris_bufmgr_query_meminfo(struct iris_bufmgr *bufmgr) { struct drm_i915_query_memory_regions *meminfo = - intel_i915_query_alloc(bufmgr->fd, DRM_I915_QUERY_MEMORY_REGIONS); + intel_i915_query_alloc(bufmgr->fd, DRM_I915_QUERY_MEMORY_REGIONS, NULL); if (meminfo == NULL) return false; diff --git a/src/intel/common/intel_gem.h b/src/intel/common/intel_gem.h index 0df2a070287..0f908797feb 100644 --- a/src/intel/common/intel_gem.h +++ b/src/intel/common/intel_gem.h @@ -135,8 +135,11 @@ intel_i915_query(int fd, uint64_t query_id, void *buffer, * The caller is responsible for freeing the returned pointer. */ static inline void * -intel_i915_query_alloc(int fd, uint64_t query_id) +intel_i915_query_alloc(int fd, uint64_t query_id, int32_t *query_length) { + if (query_length) + *query_length = 0; + int32_t length = 0; int ret = intel_i915_query(fd, query_id, NULL, &length); if (ret < 0) @@ -154,6 +157,9 @@ intel_i915_query_alloc(int fd, uint64_t query_id) return NULL; } + if (query_length) + *query_length = length; + return data; } diff --git a/src/intel/dev/intel_device_info.c b/src/intel/dev/intel_device_info.c index d71809dab3e..1e1b4c89c76 100644 --- a/src/intel/dev/intel_device_info.c +++ b/src/intel/dev/intel_device_info.c @@ -1528,7 +1528,7 @@ static bool query_topology(struct intel_device_info *devinfo, int fd) { struct drm_i915_query_topology_info *topo_info = - intel_i915_query_alloc(fd, DRM_I915_QUERY_TOPOLOGY_INFO); + intel_i915_query_alloc(fd, DRM_I915_QUERY_TOPOLOGY_INFO, NULL); if (topo_info == NULL) return false; diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index f3dad230768..7dc91d6cbbd 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -353,7 +353,7 @@ anv_gather_meminfo(struct anv_physical_device *device, int fd, bool update) sizeof(struct drm_i915_memory_region_info)]; struct drm_i915_query_memory_regions *mem_regions = - intel_i915_query_alloc(fd, DRM_I915_QUERY_MEMORY_REGIONS); + intel_i915_query_alloc(fd, DRM_I915_QUERY_MEMORY_REGIONS, NULL); if (mem_regions == NULL) { if (device->info.has_local_mem) { return vk_errorf(device, VK_ERROR_INCOMPATIBLE_DRIVER, diff --git a/src/intel/vulkan/anv_gem.c b/src/intel/vulkan/anv_gem.c index 14f62d591d6..852b94cb957 100644 --- a/src/intel/vulkan/anv_gem.c +++ b/src/intel/vulkan/anv_gem.c @@ -424,5 +424,5 @@ anv_gem_reg_read(int fd, uint32_t offset, uint64_t *result) struct drm_i915_query_engine_info * anv_gem_get_engine_info(int fd) { - return intel_i915_query_alloc(fd, DRM_I915_QUERY_ENGINE_INFO); + return intel_i915_query_alloc(fd, DRM_I915_QUERY_ENGINE_INFO, NULL); }