mirror of
https://github.com/intel/compute-runtime.git
synced 2025-11-10 05:49:51 +08:00
Revert "Stop using CONTEXT_SET_PARAM"
This reverts commit e9f56e7d96.
Signed-off-by: Compute-Runtime-Validation <compute-runtime-validation@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
a203cd2863
commit
86f8150dc7
@@ -31,7 +31,6 @@ set(IGDRCL_SRCS_tests_os_interface_linux
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_residency_handler_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_residency_handler_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_system_info_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_system_info_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/drm_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/drm_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_context_tests.cpp
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_uuid_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_uuid_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/file_logger_linux_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/file_logger_linux_tests.cpp
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_linux_tests.cpp
|
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_linux_tests.cpp
|
||||||
|
|||||||
@@ -1,129 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2018-2021 Intel Corporation
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: MIT
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "shared/source/os_interface/linux/os_context_linux.h"
|
|
||||||
#include "shared/test/common/helpers/default_hw_info.h"
|
|
||||||
#include "shared/test/common/helpers/engine_descriptor_helper.h"
|
|
||||||
|
|
||||||
#include "opencl/test/unit_test/os_interface/linux/drm_mock.h"
|
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
|
||||||
|
|
||||||
using namespace NEO;
|
|
||||||
|
|
||||||
TEST(DrmTest, givenDrmWhenOsContextIsCreatedThenCreateAndDestroyNewDrmOsContext) {
|
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
|
||||||
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
|
||||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
|
||||||
|
|
||||||
{
|
|
||||||
OsContextLinux osContext1(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext1.ensureContextInitialized();
|
|
||||||
|
|
||||||
EXPECT_EQ(1u, osContext1.getDrmContextIds().size());
|
|
||||||
EXPECT_EQ(drmMock.receivedCreateContextId, osContext1.getDrmContextIds()[0]);
|
|
||||||
EXPECT_EQ(0u, drmMock.receivedDestroyContextId);
|
|
||||||
|
|
||||||
{
|
|
||||||
OsContextLinux osContext2(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext2.ensureContextInitialized();
|
|
||||||
EXPECT_EQ(1u, osContext2.getDrmContextIds().size());
|
|
||||||
EXPECT_EQ(drmMock.receivedCreateContextId, osContext2.getDrmContextIds()[0]);
|
|
||||||
EXPECT_EQ(0u, drmMock.receivedDestroyContextId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(DrmTest, whenCreatingDrmContextWithVirtualMemoryAddressSpaceThenProperVmIdIsSet) {
|
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
|
||||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
|
||||||
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
|
||||||
|
|
||||||
ASSERT_EQ(1u, drmMock.virtualMemoryIds.size());
|
|
||||||
|
|
||||||
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext.ensureContextInitialized();
|
|
||||||
|
|
||||||
EXPECT_EQ(drmMock.receivedContextParamRequest.value, drmMock.getVirtualMemoryAddressSpace(0u));
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(DrmTest, givenDrmAndNegativeCheckNonPersistentContextsSupportWhenOsContextIsCreatedThenReceivedContextParamRequestCountReturnsCorrectValue) {
|
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
|
||||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
|
||||||
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
|
||||||
auto expectedCount = 0u;
|
|
||||||
|
|
||||||
{
|
|
||||||
drmMock.storedRetValForPersistant = -1;
|
|
||||||
drmMock.checkNonPersistentContextsSupport();
|
|
||||||
expectedCount += 2;
|
|
||||||
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext.ensureContextInitialized();
|
|
||||||
EXPECT_EQ(expectedCount, drmMock.receivedContextParamRequestCount);
|
|
||||||
}
|
|
||||||
{
|
|
||||||
drmMock.storedRetValForPersistant = 0;
|
|
||||||
drmMock.checkNonPersistentContextsSupport();
|
|
||||||
++expectedCount;
|
|
||||||
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext.ensureContextInitialized();
|
|
||||||
expectedCount += 2;
|
|
||||||
EXPECT_EQ(expectedCount, drmMock.receivedContextParamRequestCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(DrmTest, givenDrmPreemptionEnabledAndLowPriorityEngineWhenCreatingOsContextThenCallSetContextPriorityIoctl) {
|
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
|
||||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
|
||||||
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
|
||||||
drmMock.preemptionSupported = false;
|
|
||||||
|
|
||||||
OsContextLinux osContext1(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext1.ensureContextInitialized();
|
|
||||||
OsContextLinux osContext2(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::LowPriority}));
|
|
||||||
osContext2.ensureContextInitialized();
|
|
||||||
|
|
||||||
EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount);
|
|
||||||
|
|
||||||
drmMock.preemptionSupported = true;
|
|
||||||
|
|
||||||
OsContextLinux osContext3(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext3.ensureContextInitialized();
|
|
||||||
EXPECT_EQ(3u, drmMock.receivedContextParamRequestCount);
|
|
||||||
|
|
||||||
OsContextLinux osContext4(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::LowPriority}));
|
|
||||||
osContext4.ensureContextInitialized();
|
|
||||||
EXPECT_EQ(5u, drmMock.receivedContextParamRequestCount);
|
|
||||||
EXPECT_EQ(drmMock.receivedCreateContextId, drmMock.receivedContextParamRequest.ctx_id);
|
|
||||||
EXPECT_EQ(static_cast<uint64_t>(I915_CONTEXT_PARAM_PRIORITY), drmMock.receivedContextParamRequest.param);
|
|
||||||
EXPECT_EQ(static_cast<uint64_t>(-1023), drmMock.receivedContextParamRequest.value);
|
|
||||||
EXPECT_EQ(0u, drmMock.receivedContextParamRequest.size);
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST(DrmTest, givenNoPerContextVmsDrmWhenCreatingOsContextsThenVmIdIsNotQueriedAndStored) {
|
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
|
||||||
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
|
||||||
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
|
||||||
EXPECT_FALSE(drmMock.requirePerContextVM);
|
|
||||||
|
|
||||||
drmMock.storedRetValForVmId = 1;
|
|
||||||
|
|
||||||
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
|
||||||
osContext.ensureContextInitialized();
|
|
||||||
EXPECT_EQ(0u, drmMock.receivedCreateContextId);
|
|
||||||
EXPECT_EQ(1u, drmMock.receivedContextParamRequestCount);
|
|
||||||
|
|
||||||
auto &drmVmIds = osContext.getDrmVmIds();
|
|
||||||
EXPECT_EQ(0u, drmVmIds.size());
|
|
||||||
}
|
|
||||||
@@ -74,7 +74,6 @@ int DrmMock::ioctl(unsigned long request, void *arg) {
|
|||||||
auto create = static_cast<drm_i915_gem_context_create_ext *>(arg);
|
auto create = static_cast<drm_i915_gem_context_create_ext *>(arg);
|
||||||
this->receivedCreateContextId = create->ctx_id;
|
this->receivedCreateContextId = create->ctx_id;
|
||||||
this->receivedContextCreateFlags = create->flags;
|
this->receivedContextCreateFlags = create->flags;
|
||||||
this->receivedContextCreateExtensions = create->extensions;
|
|
||||||
return this->storedRetVal;
|
return this->storedRetVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,6 @@ class DrmMock : public Drm {
|
|||||||
bool allowDebugAttachCallBase = false;
|
bool allowDebugAttachCallBase = false;
|
||||||
uint32_t passedContextDebugId = std::numeric_limits<uint32_t>::max();
|
uint32_t passedContextDebugId = std::numeric_limits<uint32_t>::max();
|
||||||
|
|
||||||
uint64_t receivedContextCreateExtensions = 0;
|
|
||||||
uint32_t receivedContextCreateFlags = 0;
|
uint32_t receivedContextCreateFlags = 0;
|
||||||
uint32_t receivedCreateContextId = 0;
|
uint32_t receivedCreateContextId = 0;
|
||||||
uint32_t receivedDestroyContextId = 0;
|
uint32_t receivedDestroyContextId = 0;
|
||||||
|
|||||||
@@ -5,16 +5,24 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "shared/source/helpers/file_io.h"
|
||||||
|
#include "shared/source/helpers/hw_info.h"
|
||||||
|
#include "shared/source/os_interface/device_factory.h"
|
||||||
#include "shared/source/os_interface/linux/os_context_linux.h"
|
#include "shared/source/os_interface/linux/os_context_linux.h"
|
||||||
|
#include "shared/source/os_interface/os_interface.h"
|
||||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||||
#include "shared/test/common/helpers/default_hw_info.h"
|
#include "shared/test/common/helpers/default_hw_info.h"
|
||||||
#include "shared/test/common/helpers/engine_descriptor_helper.h"
|
#include "shared/test/common/helpers/engine_descriptor_helper.h"
|
||||||
|
|
||||||
|
#include "opencl/test/unit_test/fixtures/memory_management_fixture.h"
|
||||||
#include "opencl/test/unit_test/mocks/mock_platform.h"
|
#include "opencl/test/unit_test/mocks/mock_platform.h"
|
||||||
#include "opencl/test/unit_test/os_interface/linux/drm_mock.h"
|
#include "opencl/test/unit_test/os_interface/linux/drm_mock.h"
|
||||||
|
|
||||||
#include "gtest/gtest.h"
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
using namespace NEO;
|
using namespace NEO;
|
||||||
|
|
||||||
TEST(DrmTest, WhenGettingDeviceIdThenCorrectIdReturned) {
|
TEST(DrmTest, WhenGettingDeviceIdThenCorrectIdReturned) {
|
||||||
@@ -178,6 +186,46 @@ TEST(DrmTest, GivenDrmWhenAskedForContextThatFailsThenFalseIsReturned) {
|
|||||||
delete pDrm;
|
delete pDrm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(DrmTest, givenDrmWhenOsContextIsCreatedThenCreateAndDestroyNewDrmOsContext) {
|
||||||
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
|
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||||
|
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||||
|
|
||||||
|
{
|
||||||
|
OsContextLinux osContext1(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext1.ensureContextInitialized();
|
||||||
|
|
||||||
|
EXPECT_EQ(1u, osContext1.getDrmContextIds().size());
|
||||||
|
EXPECT_EQ(drmMock.receivedCreateContextId, osContext1.getDrmContextIds()[0]);
|
||||||
|
EXPECT_EQ(0u, drmMock.receivedDestroyContextId);
|
||||||
|
|
||||||
|
{
|
||||||
|
OsContextLinux osContext2(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext2.ensureContextInitialized();
|
||||||
|
EXPECT_EQ(1u, osContext2.getDrmContextIds().size());
|
||||||
|
EXPECT_EQ(drmMock.receivedCreateContextId, osContext2.getDrmContextIds()[0]);
|
||||||
|
EXPECT_EQ(0u, drmMock.receivedDestroyContextId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(DrmTest, whenCreatingDrmContextWithVirtualMemoryAddressSpaceThenProperVmIdIsSet) {
|
||||||
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
|
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||||
|
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||||
|
|
||||||
|
ASSERT_EQ(1u, drmMock.virtualMemoryIds.size());
|
||||||
|
|
||||||
|
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext.ensureContextInitialized();
|
||||||
|
|
||||||
|
EXPECT_EQ(drmMock.receivedContextParamRequest.value, drmMock.getVirtualMemoryAddressSpace(0u));
|
||||||
|
}
|
||||||
|
|
||||||
TEST(DrmTest, whenCreatingDrmContextWithNoVirtualMemoryAddressSpaceThenProperContextIdIsSet) {
|
TEST(DrmTest, whenCreatingDrmContextWithNoVirtualMemoryAddressSpaceThenProperContextIdIsSet) {
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
@@ -194,6 +242,61 @@ TEST(DrmTest, whenCreatingDrmContextWithNoVirtualMemoryAddressSpaceThenProperCon
|
|||||||
EXPECT_EQ(0u, drmMock.receivedContextParamRequestCount);
|
EXPECT_EQ(0u, drmMock.receivedContextParamRequestCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(DrmTest, givenDrmAndNegativeCheckNonPersistentContextsSupportWhenOsContextIsCreatedThenReceivedContextParamRequestCountReturnsCorrectValue) {
|
||||||
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
|
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||||
|
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||||
|
auto expectedCount = 0u;
|
||||||
|
|
||||||
|
{
|
||||||
|
drmMock.storedRetValForPersistant = -1;
|
||||||
|
drmMock.checkNonPersistentContextsSupport();
|
||||||
|
expectedCount += 2;
|
||||||
|
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext.ensureContextInitialized();
|
||||||
|
EXPECT_EQ(expectedCount, drmMock.receivedContextParamRequestCount);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
drmMock.storedRetValForPersistant = 0;
|
||||||
|
drmMock.checkNonPersistentContextsSupport();
|
||||||
|
++expectedCount;
|
||||||
|
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext.ensureContextInitialized();
|
||||||
|
expectedCount += 2;
|
||||||
|
EXPECT_EQ(expectedCount, drmMock.receivedContextParamRequestCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(DrmTest, givenDrmPreemptionEnabledAndLowPriorityEngineWhenCreatingOsContextThenCallSetContextPriorityIoctl) {
|
||||||
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
|
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||||
|
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||||
|
drmMock.preemptionSupported = false;
|
||||||
|
|
||||||
|
OsContextLinux osContext1(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext1.ensureContextInitialized();
|
||||||
|
OsContextLinux osContext2(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::LowPriority}));
|
||||||
|
osContext2.ensureContextInitialized();
|
||||||
|
|
||||||
|
EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount);
|
||||||
|
|
||||||
|
drmMock.preemptionSupported = true;
|
||||||
|
|
||||||
|
OsContextLinux osContext3(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext3.ensureContextInitialized();
|
||||||
|
EXPECT_EQ(3u, drmMock.receivedContextParamRequestCount);
|
||||||
|
|
||||||
|
OsContextLinux osContext4(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::LowPriority}));
|
||||||
|
osContext4.ensureContextInitialized();
|
||||||
|
EXPECT_EQ(5u, drmMock.receivedContextParamRequestCount);
|
||||||
|
EXPECT_EQ(drmMock.receivedCreateContextId, drmMock.receivedContextParamRequest.ctx_id);
|
||||||
|
EXPECT_EQ(static_cast<uint64_t>(I915_CONTEXT_PARAM_PRIORITY), drmMock.receivedContextParamRequest.param);
|
||||||
|
EXPECT_EQ(static_cast<uint64_t>(-1023), drmMock.receivedContextParamRequest.value);
|
||||||
|
EXPECT_EQ(0u, drmMock.receivedContextParamRequest.size);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(DrmTest, WhenGettingExecSoftPinThenCorrectValueIsReturned) {
|
TEST(DrmTest, WhenGettingExecSoftPinThenCorrectValueIsReturned) {
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
@@ -474,6 +577,24 @@ TEST(DrmTest, givenPerContextVMRequiredWhenCreatingOsContextsForRootDeviceThenIm
|
|||||||
EXPECT_EQ(0u, drmVmIds[31]);
|
EXPECT_EQ(0u, drmVmIds[31]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(DrmTest, givenNoPerContextVmsDrmWhenCreatingOsContextsThenVmIdIsNotQueriedAndStored) {
|
||||||
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
|
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||||
|
executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get());
|
||||||
|
DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]);
|
||||||
|
EXPECT_FALSE(drmMock.requirePerContextVM);
|
||||||
|
|
||||||
|
drmMock.storedRetValForVmId = 1;
|
||||||
|
|
||||||
|
OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||||
|
osContext.ensureContextInitialized();
|
||||||
|
EXPECT_EQ(0u, drmMock.receivedCreateContextId);
|
||||||
|
EXPECT_EQ(1u, drmMock.receivedContextParamRequestCount);
|
||||||
|
|
||||||
|
auto &drmVmIds = osContext.getDrmVmIds();
|
||||||
|
EXPECT_EQ(0u, drmVmIds.size());
|
||||||
|
}
|
||||||
|
|
||||||
TEST(DrmTest, givenProgramDebuggingAndContextDebugAvailableWhenCreatingContextThenSetContextDebugFlagIsCalled) {
|
TEST(DrmTest, givenProgramDebuggingAndContextDebugAvailableWhenCreatingContextThenSetContextDebugFlagIsCalled) {
|
||||||
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
|
||||||
executionEnvironment->setDebuggingEnabled();
|
executionEnvironment->setDebuggingEnabled();
|
||||||
|
|||||||
@@ -377,6 +377,26 @@ void Drm::setNonPersistentContext(uint32_t drmContextId) {
|
|||||||
ioctl(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, &contextParam);
|
ioctl(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, &contextParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isSpecialContextRequested) {
|
||||||
|
drm_i915_gem_context_create_ext gcc = {};
|
||||||
|
|
||||||
|
this->appendDrmContextFlags(gcc, isSpecialContextRequested);
|
||||||
|
|
||||||
|
auto retVal = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc);
|
||||||
|
UNRECOVERABLE_IF(retVal != 0);
|
||||||
|
|
||||||
|
if (drmVmId > 0) {
|
||||||
|
drm_i915_gem_context_param param{};
|
||||||
|
param.ctx_id = gcc.ctx_id;
|
||||||
|
param.value = drmVmId;
|
||||||
|
param.param = I915_CONTEXT_PARAM_VM;
|
||||||
|
retVal = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, ¶m);
|
||||||
|
UNRECOVERABLE_IF(retVal != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return gcc.ctx_id;
|
||||||
|
}
|
||||||
|
|
||||||
void Drm::destroyDrmContext(uint32_t drmContextId) {
|
void Drm::destroyDrmContext(uint32_t drmContextId) {
|
||||||
drm_i915_gem_context_destroy destroy = {};
|
drm_i915_gem_context_destroy destroy = {};
|
||||||
destroy.ctx_id = drmContextId;
|
destroy.ctx_id = drmContextId;
|
||||||
|
|||||||
@@ -117,24 +117,4 @@ int Drm::createDrmVirtualMemory(uint32_t &drmVmId) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isSpecialContextRequested) {
|
|
||||||
drm_i915_gem_context_create_ext gcc = {};
|
|
||||||
|
|
||||||
this->appendDrmContextFlags(gcc, isSpecialContextRequested);
|
|
||||||
|
|
||||||
auto retVal = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc);
|
|
||||||
UNRECOVERABLE_IF(retVal != 0);
|
|
||||||
|
|
||||||
if (drmVmId > 0) {
|
|
||||||
drm_i915_gem_context_param param{};
|
|
||||||
param.ctx_id = gcc.ctx_id;
|
|
||||||
param.value = drmVmId;
|
|
||||||
param.param = I915_CONTEXT_PARAM_VM;
|
|
||||||
retVal = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, ¶m);
|
|
||||||
UNRECOVERABLE_IF(retVal != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return gcc.ctx_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
@@ -126,24 +126,4 @@ int Drm::createDrmVirtualMemory(uint32_t &drmVmId) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t Drm::createDrmContext(uint32_t drmVmId, bool isSpecialContextRequested) {
|
|
||||||
drm_i915_gem_context_create_ext gcc = {};
|
|
||||||
|
|
||||||
this->appendDrmContextFlags(gcc, isSpecialContextRequested);
|
|
||||||
|
|
||||||
auto retVal = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &gcc);
|
|
||||||
UNRECOVERABLE_IF(retVal != 0);
|
|
||||||
|
|
||||||
if (drmVmId > 0) {
|
|
||||||
drm_i915_gem_context_param param{};
|
|
||||||
param.ctx_id = gcc.ctx_id;
|
|
||||||
param.value = drmVmId;
|
|
||||||
param.param = I915_CONTEXT_PARAM_VM;
|
|
||||||
retVal = ioctl(DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM, ¶m);
|
|
||||||
UNRECOVERABLE_IF(retVal != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return gcc.ctx_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace NEO
|
} // namespace NEO
|
||||||
|
|||||||
Reference in New Issue
Block a user