Add support for gem create extension to create VM_PRIVATE BOs

Add support for PRELIM_I915_GEM_CREATE_EXT_VM_PRIVATE extension
to create VM_PRIVATE BOs.

Related-to: NEO-6730
Signed-off-by: Naklicki, Mateusz <mateusz.naklicki@intel.com>
This commit is contained in:
Naklicki, Mateusz
2022-04-27 11:21:53 +00:00
committed by Compute-Runtime-Automation
parent dc2e1dfdb0
commit 58ec879c46
18 changed files with 165 additions and 30 deletions

View File

@@ -156,6 +156,14 @@ int DrmMockPrelimContext::handlePrelimRequest(DrmIoctl request, void *arg) {
return EINVAL;
}
prelim_drm_i915_gem_create_ext_vm_private *vmPrivateExt = nullptr;
if (extension->base.next_extension != 0) {
vmPrivateExt = reinterpret_cast<prelim_drm_i915_gem_create_ext_vm_private *>(extension->base.next_extension);
if (vmPrivateExt->base.name != PRELIM_I915_GEM_CREATE_EXT_VM_PRIVATE) {
return EINVAL;
}
}
auto data = reinterpret_cast<MemoryClassInstance *>(extension->param.data);
if (!data) {
return EINVAL;
@@ -165,6 +173,9 @@ int DrmMockPrelimContext::handlePrelimRequest(DrmIoctl request, void *arg) {
createExt->handle = createExtHandle;
receivedCreateGemExt = CreateGemExt{createExt->size, createExtHandle};
receivedCreateGemExt->setParamExt = CreateGemExt::SetParam{extension->param.handle, extension->param.size, extension->param.param};
if (vmPrivateExt != nullptr) {
receivedCreateGemExt->vmPrivateExt = CreateGemExt::VmPrivate{vmPrivateExt->vm_id};
}
receivedCreateGemExt->memoryRegions.clear();
for (uint32_t i = 0; i < extension->param.size; i++) {

View File

@@ -43,6 +43,11 @@ struct CreateGemExt {
uint16_t memoryInstance{0};
};
std::vector<MemoryClassInstance> memoryRegions{};
struct VmPrivate {
uint32_t vmId{std::numeric_limits<uint32_t>::max()};
};
VmPrivate vmPrivateExt{};
};
struct GemContextParamAcc {