mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-29 09:03:14 +08:00
fix: add missing gt_id when creating XE context
Related-To: GSD-8046 Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
2c10f5639e
commit
6cdd2d5dca
@@ -1209,6 +1209,7 @@ int IoctlHelperXe::createDrmContext(Drm &drm, OsContextLinux &osContext, uint32_
|
||||
UNRECOVERABLE_IF(true);
|
||||
return 0;
|
||||
}
|
||||
currentEngine->gt_id = static_cast<uint16_t>(deviceIndex);
|
||||
engine.push_back(*currentEngine);
|
||||
} else {
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
@@ -1221,6 +1222,7 @@ int IoctlHelperXe::createDrmContext(Drm &drm, OsContextLinux &osContext, uint32_
|
||||
UNRECOVERABLE_IF(true);
|
||||
return 0;
|
||||
}
|
||||
currentEngine->gt_id = static_cast<uint16_t>(deviceIndex);
|
||||
engine.push_back(*currentEngine);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,9 +84,14 @@ class DrmMockXeDebug : public DrmMockCustom {
|
||||
} break;
|
||||
case DrmIoctl::gemContextCreateExt: {
|
||||
auto create = static_cast<struct drm_xe_exec_queue_create *>(arg);
|
||||
execQueueCreateParams = *create;
|
||||
if (create->extensions) {
|
||||
receivedContextCreateSetParam = *reinterpret_cast<struct drm_xe_ext_set_property *>(create->extensions);
|
||||
}
|
||||
execQueueEngineInstances.clear();
|
||||
for (uint16_t i = 0; i < create->num_placements; i++) {
|
||||
execQueueEngineInstances.push_back(reinterpret_cast<drm_xe_engine_class_instance *>(create->instances)[i]);
|
||||
}
|
||||
ret = 0;
|
||||
} break;
|
||||
case DrmIoctl::gemVmCreate: {
|
||||
@@ -184,6 +189,8 @@ class DrmMockXeDebug : public DrmMockCustom {
|
||||
|
||||
alignas(64) std::vector<uint8_t> queryTopology;
|
||||
std::vector<drm_xe_ext_vm_set_debug_metadata> vmCreateMetadata;
|
||||
std::vector<drm_xe_engine_class_instance> execQueueEngineInstances;
|
||||
drm_xe_exec_queue_create execQueueCreateParams = {};
|
||||
|
||||
// Debugger ioctls
|
||||
int debuggerOpenRetval = 10; // debugFd
|
||||
|
||||
@@ -204,6 +204,29 @@ HWTEST_F(IoctlHelperXeTestFixture, GivenRunaloneModeRequiredReturnFalseWhenCreat
|
||||
EXPECT_NE(ext.property, static_cast<uint32_t>(DRM_XE_EXEC_QUEUE_SET_PROPERTY_EU_DEBUG));
|
||||
}
|
||||
|
||||
HWTEST_F(IoctlHelperXeTestFixture, givenDeviceIndexWhenCreatingContextThenSetCorrectGtId) {
|
||||
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
|
||||
auto &rootDeviceEnvironment = *executionEnvironment->rootDeviceEnvironments[0];
|
||||
|
||||
rootDeviceEnvironment.osInterface = std::make_unique<OSInterface>();
|
||||
rootDeviceEnvironment.osInterface->setDriverModel(std::make_unique<DrmMockTime>(mockFd, rootDeviceEnvironment));
|
||||
DrmMockXeDebug drm{*executionEnvironment->rootDeviceEnvironments[0]};
|
||||
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXeDebug>(drm);
|
||||
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
|
||||
ASSERT_NE(nullptr, engineInfo);
|
||||
|
||||
OsContextLinux osContext(drm, 0, 0u, EngineDescriptorHelper::getDefaultDescriptor());
|
||||
|
||||
uint16_t deviceIndex = 2;
|
||||
|
||||
xeIoctlHelper->createDrmContext(drm, osContext, 0, deviceIndex);
|
||||
|
||||
EXPECT_EQ(1u, drm.execQueueCreateParams.num_placements);
|
||||
ASSERT_EQ(1u, drm.execQueueEngineInstances.size());
|
||||
|
||||
EXPECT_EQ(deviceIndex, drm.execQueueEngineInstances[0].gt_id);
|
||||
}
|
||||
|
||||
HWTEST_F(IoctlHelperXeTestFixture, GivenRunaloneModeRequiredReturnTrueWhenCreateDrmContextThenRunAloneContextIsRequested) {
|
||||
DebugManagerStateRestore restorer;
|
||||
struct MockGfxCoreHelperHw : NEO::GfxCoreHelperHw<FamilyType> {
|
||||
|
||||
Reference in New Issue
Block a user