Move Drm function

Related-To: NEO-5570

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2021-03-16 17:47:26 +00:00
committed by Compute-Runtime-Automation
parent ec7a0bfbcc
commit d223508cad
4 changed files with 27 additions and 11 deletions

View File

@ -37,12 +37,17 @@ Drm *Drm::create(std::unique_ptr<HwDeviceId> hwDeviceId, RootDeviceEnvironment &
}
auto drm = new DrmMockDefault(rootDeviceEnvironment);
const HardwareInfo *hwInfo = rootDeviceEnvironment.getHardwareInfo();
if (HwHelper::get(hwInfo->platform.eRenderCoreFamily).getEnableLocalMemory(*hwInfo)) {
drm->queryMemoryInfo();
}
if (drm->isVmBindAvailable() && rootDeviceEnvironment.executionEnvironment.isDebuggingEnabled()) {
drm->setPerContextVMRequired(true);
}
if (!drm->isPerContextVMRequired()) {
drm->createVirtualMemoryAddressSpace(HwHelper::getSubDevicesCount(rootDeviceEnvironment.getHardwareInfo()));
drm->createVirtualMemoryAddressSpace(HwHelper::getSubDevicesCount(hwInfo));
}
return drm;
}

View File

@ -234,15 +234,6 @@ void Drm::destroyDrmContext(uint32_t drmContextId) {
UNRECOVERABLE_IF(retVal != 0);
}
int Drm::createDrmVirtualMemory(uint32_t &drmVmId) {
drm_i915_gem_vm_control ctl = {};
auto ret = SysCalls::ioctl(getFileDescriptor(), DRM_IOCTL_I915_GEM_VM_CREATE, &ctl);
if (ret == 0) {
drmVmId = ctl.vm_id;
}
return ret;
}
void Drm::destroyDrmVirtualMemory(uint32_t drmVmId) {
drm_i915_gem_vm_control ctl = {};
ctl.vm_id = drmVmId;
@ -449,7 +440,7 @@ std::unique_ptr<uint8_t[]> Drm::query(uint32_t queryId, uint32_t queryItemFlags,
bool Drm::createVirtualMemoryAddressSpace(uint32_t vmCount) {
for (auto i = 0u; i < vmCount; i++) {
uint32_t id = 0;
uint32_t id = i;
if (0 != createDrmVirtualMemory(id)) {
return false;
}

View File

@ -8,6 +8,7 @@
#include "shared/source/os_interface/linux/cache_info_impl.h"
#include "shared/source/os_interface/linux/drm_engine_mapper.h"
#include "shared/source/os_interface/linux/engine_info_impl.h"
#include "shared/source/os_interface/linux/sys_calls.h"
#include "drm_neo.h"
#include "drm_query_flags.h"
@ -77,4 +78,13 @@ void Drm::setupCacheInfo(const HardwareInfo &hwInfo) {
this->cacheInfo.reset(new CacheInfoImpl());
}
int Drm::createDrmVirtualMemory(uint32_t &drmVmId) {
drm_i915_gem_vm_control ctl = {};
auto ret = SysCalls::ioctl(getFileDescriptor(), DRM_IOCTL_I915_GEM_VM_CREATE, &ctl);
if (ret == 0) {
drmVmId = ctl.vm_id;
}
return ret;
}
} // namespace NEO

View File

@ -9,6 +9,7 @@
#include "shared/source/os_interface/linux/drm_engine_mapper.h"
#include "shared/source/os_interface/linux/engine_info_impl.h"
#include "shared/source/os_interface/linux/memory_info_impl.h"
#include "shared/source/os_interface/linux/sys_calls.h"
#include "drm_neo.h"
#include "drm_query_flags.h"
@ -86,4 +87,13 @@ void Drm::setupCacheInfo(const HardwareInfo &hwInfo) {
this->cacheInfo.reset(new CacheInfoImpl());
}
int Drm::createDrmVirtualMemory(uint32_t &drmVmId) {
drm_i915_gem_vm_control ctl = {};
auto ret = SysCalls::ioctl(getFileDescriptor(), DRM_IOCTL_I915_GEM_VM_CREATE, &ctl);
if (ret == 0) {
drmVmId = ctl.vm_id;
}
return ret;
}
} // namespace NEO