intel: Fix support of kernel versions without DRM_I915_QUERY_ENGINE_INFO

As Matt Turner pointed out, the commit here fixed breaks in Iris and
ANV in kernel versions without support for DRM_I915_QUERY_ENGINE_INFO.
As compute engines are only present in gfx12 and newer, and support
for DRM_I915_QUERY_ENGINE_INFO was added before any gfx12 platform,
we can check for gfx version before trying to get engine info.

For ANV, this is done by checking if engine_info is not NULL, like in
other places in the ANV source code.

Fixes: a364f23a6c ("intel: Make gen12 URB space reservation dependent on compute engine presence")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9099
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Tested-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23257>
This commit is contained in:
José Roberto de Souza
2023-05-26 07:12:40 -07:00
committed by Marge Bot
parent 34f9dd3491
commit 42f707e459
2 changed files with 4 additions and 5 deletions

View File

@@ -2280,9 +2280,8 @@ iris_bufmgr_create(struct intel_device_info *devinfo, int fd, bool bo_reuse)
struct intel_query_engine_info *engine_info;
engine_info = intel_engine_get_info(bufmgr->fd, bufmgr->devinfo.kmd_type);
if (!engine_info)
goto error_engine_info;
bufmgr->devinfo.has_compute_engine = intel_engines_count(engine_info,
bufmgr->devinfo.has_compute_engine = engine_info &&
intel_engines_count(engine_info,
INTEL_ENGINE_CLASS_COMPUTE);
free(engine_info);
@@ -2378,7 +2377,6 @@ error_slabs_init:
}
iris_bufmgr_destroy_global_vm(bufmgr);
error_init_vm:
error_engine_info:
close(bufmgr->fd);
error_dup:
free(bufmgr);

View File

@@ -1383,7 +1383,8 @@ anv_physical_device_try_create(struct vk_instance *vk_instance,
device->master_fd = master_fd;
device->engine_info = intel_engine_get_info(fd, device->info.kmd_type);
device->info.has_compute_engine = intel_engines_count(device->engine_info,
device->info.has_compute_engine = device->engine_info &&
intel_engines_count(device->engine_info,
INTEL_ENGINE_CLASS_COMPUTE);
anv_physical_device_init_queue_families(device);