diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index 14bb4f4b68e..c2395a27d59 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -2099,12 +2099,20 @@ anv_physical_device_init_queue_families(struct anv_physical_device *pdevice) intel_engines_count(pdevice->engine_info, INTEL_ENGINE_CLASS_VIDEO); int g_count = 0; int c_count = 0; + /* Not only the Kernel needs to have vm_control, but it also needs to + * have a new enough GuC and the interface to tell us so. This is + * implemented in the common layer by is_guc_semaphore_functional() and + * results in devinfo->engine_class_supported_count being adjusted, + * which we read below. + */ const bool kernel_supports_non_render_engines = pdevice->has_vm_control; - const bool sparse_supports_non_render_engines = - pdevice->sparse_type != ANV_SPARSE_TYPE_TRTT; + /* For now we're choosing to not expose non-render engines on i915.ko + * even when the Kernel allows it. We have data suggesting it's not an + * obvious win in terms of performance. + */ const bool can_use_non_render_engines = kernel_supports_non_render_engines && - sparse_supports_non_render_engines; + pdevice->info.kmd_type == INTEL_KMD_TYPE_XE; if (can_use_non_render_engines) { c_count = pdevice->info.engine_class_supported_count[INTEL_ENGINE_CLASS_COMPUTE];