uint32_t engines_ctx;
if (!intel_gem_create_context_engines(fd, flags, engines_info, num_batches,
- engine_classes, &engines_ctx)) {
+ engine_classes, 0, &engines_ctx)) {
free(engines_info);
return -1;
}
enum intel_gem_create_context_flags flags,
const struct intel_query_engine_info *info,
int num_engines, enum intel_engine_class *engine_classes,
+ uint32_t vm_id,
uint32_t *context_id)
{
assert(info != NULL);
struct drm_i915_gem_context_create_ext create = {
.flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS,
};
+ struct drm_i915_gem_context_create_ext_setparam vm_param = {
+ .param = {
+ .param = I915_CONTEXT_PARAM_VM,
+ .value = vm_id,
+ },
+ };
intel_i915_gem_add_ext(&create.extensions,
I915_CONTEXT_CREATE_EXT_SETPARAM,
I915_CONTEXT_CREATE_EXT_SETPARAM,
&recoverable_param.base);
+ if (vm_id != 0) {
+ intel_i915_gem_add_ext(&create.extensions,
+ I915_CONTEXT_CREATE_EXT_SETPARAM,
+ &vm_param.base);
+ }
+
if (flags & INTEL_GEM_CREATE_CONTEXT_EXT_PROTECTED_FLAG) {
intel_i915_gem_add_ext(&create.extensions,
I915_CONTEXT_CREATE_EXT_SETPARAM,
enum intel_gem_create_context_flags flags,
const struct intel_query_engine_info *info,
int num_engines, enum intel_engine_class *engine_classes,
+ uint32_t vm_id,
uint32_t *context_id);
bool i915_gem_set_context_param(int fd, uint32_t context, uint32_t param,
uint64_t value);
enum intel_gem_create_context_flags flags,
const struct intel_query_engine_info *info,
int num_engines, enum intel_engine_class *engine_classes,
+ uint32_t vm_id,
uint32_t *context_id)
{
return i915_gem_create_context_engines(fd, flags, info, num_engines,
- engine_classes, context_id);
+ engine_classes, vm_id, context_id);
}
bool
enum intel_gem_create_context_flags flags,
const struct intel_query_engine_info *info,
int num_engines, enum intel_engine_class *engine_classes,
+ uint32_t vm_id,
uint32_t *context_id);
bool
intel_gem_set_context_param(int fd, uint32_t context, uint32_t param,
if (!intel_gem_create_context_engines(device->fd, 0 /* flags */,
physical_device->engine_info,
engine_count, engine_classes,
+ 0 /* vm_id */,
(uint32_t *)&device->context_id))
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
"kernel context creation failed");
if (!intel_gem_create_context_engines(device->fd, 0 /* flags */,
physical_device->engine_info,
engine_count, engine_classes,
+ 0 /* vm_id */,
(uint32_t *)&device->context_id))
result = vk_errorf(device, VK_ERROR_INITIALIZATION_FAILED,
"kernel context creation failed");