mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Pass engine instanced parameter during OsContext creation
Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:

committed by
Compute-Runtime-Automation

parent
5d49dedf00
commit
2661962ac3
@ -369,6 +369,8 @@ struct EngineInstancedDeviceTests : public ::testing::Test {
|
||||
return false;
|
||||
}
|
||||
|
||||
EXPECT_EQ(EngineHelpers::isCcs(engine.getEngineType()), engine.osContext->isEngineInstanced());
|
||||
|
||||
auto osContext = engine.osContext;
|
||||
|
||||
if ((engine.getEngineType() == engineType) &&
|
||||
|
@ -311,6 +311,7 @@ bool Device::createEngine(uint32_t deviceCsrIndex, EngineTypeUsage engineTypeUsa
|
||||
const auto engineUsage = engineTypeUsage.second;
|
||||
const auto defaultEngineType = getChosenEngineType(hwInfo);
|
||||
const bool isDefaultEngine = defaultEngineType == engineType && engineUsage == EngineUsage::Regular;
|
||||
const bool createAsEngineInstanced = engineInstanced && EngineHelpers::isCcs(engineType);
|
||||
|
||||
std::unique_ptr<CommandStreamReceiver> commandStreamReceiver = createCommandStreamReceiver();
|
||||
if (!commandStreamReceiver) {
|
||||
@ -328,7 +329,7 @@ bool Device::createEngine(uint32_t deviceCsrIndex, EngineTypeUsage engineTypeUsa
|
||||
|
||||
bool lowPriority = (engineTypeUsage.second == EngineUsage::LowPriority);
|
||||
|
||||
EngineDescriptor engineDescriptor(engineTypeUsage, getDeviceBitfield(), preemptionMode, false);
|
||||
EngineDescriptor engineDescriptor(engineTypeUsage, getDeviceBitfield(), preemptionMode, false, createAsEngineInstanced);
|
||||
|
||||
auto osContext = executionEnvironment->memoryManager->createAndRegisterOsContext(commandStreamReceiver.get(), engineDescriptor);
|
||||
if (osContext->isImmediateContextInitializationEnabled(isDefaultEngine)) {
|
||||
|
@ -62,7 +62,7 @@ void RootDevice::initializeRootCommandStreamReceiver() {
|
||||
auto defaultEngineType = getChosenEngineType(hwInfo);
|
||||
auto preemptionMode = PreemptionHelper::getDefaultPreemptionMode(hwInfo);
|
||||
|
||||
EngineDescriptor engineDescriptor(EngineTypeUsage{defaultEngineType, EngineUsage::Regular}, getDeviceBitfield(), preemptionMode, true);
|
||||
EngineDescriptor engineDescriptor(EngineTypeUsage{defaultEngineType, EngineUsage::Regular}, getDeviceBitfield(), preemptionMode, true, false);
|
||||
|
||||
auto osContext = getMemoryManager()->createAndRegisterOsContext(rootCommandStreamReceiver.get(), engineDescriptor);
|
||||
|
||||
|
@ -32,13 +32,14 @@ using EngineTypeUsage = std::pair<aub_stream::EngineType, EngineUsage>;
|
||||
|
||||
struct EngineDescriptor {
|
||||
EngineDescriptor() = delete;
|
||||
constexpr EngineDescriptor(EngineTypeUsage engineTypeUsage, DeviceBitfield deviceBitfield, PreemptionMode preemptionMode, bool isRootDevice)
|
||||
: engineTypeUsage(engineTypeUsage), deviceBitfield(deviceBitfield), preemptionMode(preemptionMode), isRootDevice(isRootDevice) {}
|
||||
constexpr EngineDescriptor(EngineTypeUsage engineTypeUsage, DeviceBitfield deviceBitfield, PreemptionMode preemptionMode, bool isRootDevice, bool isEngineInstanced)
|
||||
: engineTypeUsage(engineTypeUsage), deviceBitfield(deviceBitfield), preemptionMode(preemptionMode), isRootDevice(isRootDevice), isEngineInstanced(isEngineInstanced) {}
|
||||
|
||||
EngineTypeUsage engineTypeUsage;
|
||||
DeviceBitfield deviceBitfield;
|
||||
PreemptionMode preemptionMode;
|
||||
bool isRootDevice;
|
||||
bool isEngineInstanced;
|
||||
};
|
||||
|
||||
namespace EngineHelpers {
|
||||
|
@ -61,7 +61,7 @@ void OsContextLinux::initializeContext() {
|
||||
drm.setLowPriorityContextParam(drmContextId);
|
||||
}
|
||||
|
||||
this->engineFlag = drm.bindDrmContext(drmContextId, deviceIndex, engineType, engineInstancedDevice);
|
||||
this->engineFlag = drm.bindDrmContext(drmContextId, deviceIndex, engineType, isEngineInstanced());
|
||||
this->drmContextIds.push_back(drmContextId);
|
||||
|
||||
if (drm.isPerContextVMRequired()) {
|
||||
|
@ -21,7 +21,8 @@ OsContext::OsContext(uint32_t contextId, const EngineDescriptor &engineDescripto
|
||||
numSupportedDevices(static_cast<uint32_t>(engineDescriptor.deviceBitfield.count())),
|
||||
engineType(engineDescriptor.engineTypeUsage.first),
|
||||
engineUsage(engineDescriptor.engineTypeUsage.second),
|
||||
rootDevice(engineDescriptor.isRootDevice) {}
|
||||
rootDevice(engineDescriptor.isRootDevice),
|
||||
engineInstancedDevice(engineDescriptor.isEngineInstanced) {}
|
||||
|
||||
bool OsContext::isImmediateContextInitializationEnabled(bool isDefaultEngine) const {
|
||||
if (DebugManager.flags.DeferOsContextInitialization.get() == 0) {
|
||||
|
@ -41,6 +41,7 @@ class OsContext : public ReferenceTrackedObject<OsContext> {
|
||||
bool isLowPriority() const { return engineUsage == EngineUsage::LowPriority; }
|
||||
bool isInternalEngine() const { return engineUsage == EngineUsage::Internal; }
|
||||
bool isRootDevice() const { return rootDevice; }
|
||||
bool isEngineInstanced() const { return engineInstancedDevice; }
|
||||
virtual bool isDirectSubmissionSupported(const HardwareInfo &hwInfo) const { return false; }
|
||||
bool isDefaultContext() const { return defaultContext; }
|
||||
void setDefaultContext(bool value) { defaultContext = value; }
|
||||
|
@ -14,55 +14,63 @@ constexpr EngineDescriptor getDefaultDescriptor() {
|
||||
return {{aub_stream::EngineType::ENGINE_RCS, EngineUsage::Regular},
|
||||
1 /*deviceBitfield*/,
|
||||
PreemptionMode::Disabled,
|
||||
false /* isRootDevice*/};
|
||||
false /* isRootDevice*/,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
constexpr EngineDescriptor getDefaultDescriptor(EngineTypeUsage engineTypeUsage) {
|
||||
return {engineTypeUsage,
|
||||
1 /*deviceBitfield*/,
|
||||
PreemptionMode::Disabled,
|
||||
false /* isRootDevice*/};
|
||||
false /* isRootDevice*/,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
constexpr EngineDescriptor getDefaultDescriptor(EngineTypeUsage engineTypeUsage, bool isRootDevice) {
|
||||
return {engineTypeUsage,
|
||||
1 /*deviceBitfield*/,
|
||||
PreemptionMode::Disabled,
|
||||
isRootDevice};
|
||||
isRootDevice,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
constexpr EngineDescriptor getDefaultDescriptor(EngineTypeUsage engineTypeUsage, PreemptionMode preemptionMode) {
|
||||
return {engineTypeUsage,
|
||||
1 /*deviceBitfield*/,
|
||||
preemptionMode,
|
||||
false /* isRootDevice*/};
|
||||
false /* isRootDevice*/,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
inline EngineDescriptor getDefaultDescriptor(DeviceBitfield deviceBitfield) {
|
||||
return {{aub_stream::EngineType::ENGINE_RCS, EngineUsage::Regular},
|
||||
deviceBitfield,
|
||||
PreemptionMode::Disabled,
|
||||
false /* isRootDevice*/};
|
||||
false /* isRootDevice*/,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
inline EngineDescriptor getDefaultDescriptor(EngineTypeUsage engineTypeUsage, DeviceBitfield deviceBitfield) {
|
||||
return {engineTypeUsage,
|
||||
deviceBitfield,
|
||||
PreemptionMode::Disabled,
|
||||
false /* isRootDevice*/};
|
||||
false /* isRootDevice*/,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
inline EngineDescriptor getDefaultDescriptor(EngineTypeUsage engineTypeUsage, PreemptionMode preemptionMode, DeviceBitfield deviceBitfield) {
|
||||
return {engineTypeUsage,
|
||||
deviceBitfield,
|
||||
preemptionMode,
|
||||
false /* isRootDevice*/};
|
||||
false /* isRootDevice*/,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
inline EngineDescriptor getDefaultDescriptor(EngineTypeUsage engineTypeUsage, PreemptionMode preemptionMode, DeviceBitfield deviceBitfield, bool isRootDevice) {
|
||||
return {engineTypeUsage,
|
||||
deviceBitfield,
|
||||
preemptionMode,
|
||||
isRootDevice};
|
||||
isRootDevice,
|
||||
false /* isEngineInstanced*/};
|
||||
}
|
||||
|
||||
} // namespace EngineDescriptorHelper
|
||||
|
@ -31,7 +31,7 @@ MockDevice::MockDevice()
|
||||
commandStreamReceivers.resize(1);
|
||||
commandStreamReceivers[0].reset(commandStreamReceiver);
|
||||
|
||||
EngineDescriptor engineDescriptor = {EngineTypeUsage{aub_stream::ENGINE_CCS, EngineUsage::Regular}, this->getDeviceBitfield(), PreemptionMode::Disabled, true};
|
||||
EngineDescriptor engineDescriptor = {EngineTypeUsage{aub_stream::ENGINE_CCS, EngineUsage::Regular}, this->getDeviceBitfield(), PreemptionMode::Disabled, true, false};
|
||||
|
||||
OsContext *osContext = getMemoryManager()->createAndRegisterOsContext(commandStreamReceiver, engineDescriptor);
|
||||
commandStreamReceiver->setupContext(*osContext);
|
||||
|
Reference in New Issue
Block a user