diff --git a/src/intel/vulkan/xe/anv_device.c b/src/intel/vulkan/xe/anv_device.c index bdd4202d410..dbb1e2e0ca0 100644 --- a/src/intel/vulkan/xe/anv_device.c +++ b/src/intel/vulkan/xe/anv_device.c @@ -37,7 +37,8 @@ bool anv_xe_device_destroy_vm(struct anv_device *device) VkResult anv_xe_device_setup_vm(struct anv_device *device) { struct drm_xe_vm_create create = { - .flags = DRM_XE_VM_CREATE_SCRATCH_PAGE, + .flags = DRM_XE_VM_CREATE_SCRATCH_PAGE | + DRM_XE_VM_CREATE_ASYNC_BIND_OPS, }; if (intel_ioctl(device->fd, DRM_IOCTL_XE_VM_CREATE, &create) != 0) return vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED, diff --git a/src/intel/vulkan/xe/anv_kmd_backend.c b/src/intel/vulkan/xe/anv_kmd_backend.c index 8551f4d5e81..09a1433771a 100644 --- a/src/intel/vulkan/xe/anv_kmd_backend.c +++ b/src/intel/vulkan/xe/anv_kmd_backend.c @@ -153,6 +153,12 @@ xe_vm_bind_op(struct anv_device *device, int num_binds, } } + /* TODO: do proper error handling here, once the way to do it is + * settled. As of right now the final interface is still under + * discussion. + */ + xe_bind->op |= XE_VM_BIND_FLAG_ASYNC; + /* userptr and bo_offset are an union! */ if (bo && bo->from_host_ptr) xe_bind->userptr = (uintptr_t)bo->map;