mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
Simplify Context method
return if context has multiple sub devices related to a given root device Related-To: NEO-3691 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
21e89b121a
commit
8215395401
@@ -233,9 +233,9 @@ struct EncodeSurfaceState {
|
||||
|
||||
static void encodeBuffer(void *dst, uint64_t address, size_t size, uint32_t mocs,
|
||||
bool cpuCoherent, bool forceNonAuxMode, bool isReadOnly, uint32_t numAvailableDevices,
|
||||
GraphicsAllocation *allocation, GmmHelper *gmmHelper, bool useGlobalAtomics, size_t numDevicesInContext);
|
||||
GraphicsAllocation *allocation, GmmHelper *gmmHelper, bool useGlobalAtomics, bool areMultipleSubDevicesInContext);
|
||||
static void encodeExtraBufferParams(R_SURFACE_STATE *surfaceState, GraphicsAllocation *allocation, GmmHelper *gmmHelper,
|
||||
bool isReadOnly, uint32_t numAvailableDevices, bool useGlobalAtomics, size_t numDevicesInContext);
|
||||
bool isReadOnly, uint32_t numAvailableDevices, bool useGlobalAtomics, bool areMultipleSubDevicesInContext);
|
||||
static void encodeExtraCacheSettings(R_SURFACE_STATE *surfaceState, const HardwareInfo &hwInfo);
|
||||
|
||||
static constexpr uintptr_t getSurfaceBaseAddressAlignmentMask() {
|
||||
|
||||
@@ -318,7 +318,7 @@ void EncodeStoreMMIO<Family>::encode(LinearStream &csr, uint32_t offset, uint64_
|
||||
template <typename Family>
|
||||
void EncodeSurfaceState<Family>::encodeBuffer(void *dst, uint64_t address, size_t size, uint32_t mocs,
|
||||
bool cpuCoherent, bool forceNonAuxMode, bool isReadOnly, uint32_t numAvailableDevices,
|
||||
GraphicsAllocation *allocation, GmmHelper *gmmHelper, bool useGlobalAtomics, size_t numDevicesInContext) {
|
||||
GraphicsAllocation *allocation, GmmHelper *gmmHelper, bool useGlobalAtomics, bool areMultipleSubDevicesInContext) {
|
||||
auto surfaceState = reinterpret_cast<R_SURFACE_STATE *>(dst);
|
||||
UNRECOVERABLE_IF(!isAligned<getSurfaceBaseAddressMinimumAlignment()>(size));
|
||||
|
||||
@@ -356,7 +356,7 @@ void EncodeSurfaceState<Family>::encodeBuffer(void *dst, uint64_t address, size_
|
||||
surfaceState->setMemoryObjectControlState(gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER_CACHELINE_MISALIGNED));
|
||||
}
|
||||
|
||||
EncodeSurfaceState<Family>::encodeExtraBufferParams(surfaceState, allocation, gmmHelper, isReadOnly, numAvailableDevices, useGlobalAtomics, numDevicesInContext);
|
||||
EncodeSurfaceState<Family>::encodeExtraBufferParams(surfaceState, allocation, gmmHelper, isReadOnly, numAvailableDevices, useGlobalAtomics, areMultipleSubDevicesInContext);
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
|
||||
@@ -409,7 +409,7 @@ inline size_t EncodeWA<GfxFamily>::getAdditionalPipelineSelectSize(Device &devic
|
||||
|
||||
template <typename GfxFamily>
|
||||
void EncodeSurfaceState<GfxFamily>::encodeExtraBufferParams(R_SURFACE_STATE *surfaceState, GraphicsAllocation *allocation, GmmHelper *gmmHelper,
|
||||
bool isReadOnly, uint32_t numAvailableDevices, bool useGlobalAtomics, size_t numDevicesInContext) {
|
||||
bool isReadOnly, uint32_t numAvailableDevices, bool useGlobalAtomics, bool areMultipleSubDevicesInContext) {
|
||||
encodeExtraCacheSettings(surfaceState, *gmmHelper->getHardwareInfo());
|
||||
}
|
||||
|
||||
|
||||
@@ -375,7 +375,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
||||
latestSentStatelessMocsConfig = mocsIndex;
|
||||
}
|
||||
|
||||
if ((isMultiOsContextCapable() || (dispatchFlags.numDevicesInContext > 1)) && (dispatchFlags.useGlobalAtomics != lastSentUseGlobalAtomics)) {
|
||||
if ((isMultiOsContextCapable() || dispatchFlags.areMultipleSubDevicesInContext) && (dispatchFlags.useGlobalAtomics != lastSentUseGlobalAtomics)) {
|
||||
isStateBaseAddressDirty = true;
|
||||
lastSentUseGlobalAtomics = dispatchFlags.useGlobalAtomics;
|
||||
}
|
||||
@@ -427,7 +427,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
|
||||
isMultiOsContextCapable(),
|
||||
memoryCompressionState,
|
||||
dispatchFlags.useGlobalAtomics,
|
||||
dispatchFlags.numDevicesInContext);
|
||||
dispatchFlags.areMultipleSubDevicesInContext);
|
||||
*pCmd = cmd;
|
||||
|
||||
if (sshDirty) {
|
||||
|
||||
@@ -57,33 +57,33 @@ struct DispatchFlags {
|
||||
KernelExecutionType kernelExecutionTypeP, MemoryCompressionState memoryCompressionStateP,
|
||||
uint64_t sliceCountP, bool blockingP, bool dcFlushP, bool useSLMP, bool guardCommandBufferWithPipeControlP, bool gsba32BitRequiredP,
|
||||
bool requiresCoherencyP, bool lowPriorityP, bool implicitFlushP, bool outOfOrderExecutionAllowedP, bool epilogueRequiredP,
|
||||
bool usePerDSSbackedBufferP, bool useSingleSubdeviceP, bool useGlobalAtomicsP, size_t numDevicesInContextP) : csrDependencies(csrDependenciesP),
|
||||
barrierTimestampPacketNodes(barrierTimestampPacketNodesP),
|
||||
pipelineSelectArgs(pipelineSelectArgsP),
|
||||
flushStampReference(flushStampReferenceP),
|
||||
throttle(throttleP),
|
||||
preemptionMode(preemptionModeP),
|
||||
numGrfRequired(numGrfRequiredP),
|
||||
l3CacheSettings(l3CacheSettingsP),
|
||||
threadArbitrationPolicy(threadArbitrationPolicyP),
|
||||
additionalKernelExecInfo(additionalKernelExecInfoP),
|
||||
kernelExecutionType(kernelExecutionTypeP),
|
||||
memoryCompressionState(memoryCompressionStateP),
|
||||
sliceCount(sliceCountP),
|
||||
blocking(blockingP),
|
||||
dcFlush(dcFlushP),
|
||||
useSLM(useSLMP),
|
||||
guardCommandBufferWithPipeControl(guardCommandBufferWithPipeControlP),
|
||||
gsba32BitRequired(gsba32BitRequiredP),
|
||||
requiresCoherency(requiresCoherencyP),
|
||||
lowPriority(lowPriorityP),
|
||||
implicitFlush(implicitFlushP),
|
||||
outOfOrderExecutionAllowed(outOfOrderExecutionAllowedP),
|
||||
epilogueRequired(epilogueRequiredP),
|
||||
usePerDssBackedBuffer(usePerDSSbackedBufferP),
|
||||
useSingleSubdevice(useSingleSubdeviceP),
|
||||
useGlobalAtomics(useGlobalAtomicsP),
|
||||
numDevicesInContext(numDevicesInContextP){};
|
||||
bool usePerDSSbackedBufferP, bool useSingleSubdeviceP, bool useGlobalAtomicsP, size_t areMultipleSubDevicesInContextP) : csrDependencies(csrDependenciesP),
|
||||
barrierTimestampPacketNodes(barrierTimestampPacketNodesP),
|
||||
pipelineSelectArgs(pipelineSelectArgsP),
|
||||
flushStampReference(flushStampReferenceP),
|
||||
throttle(throttleP),
|
||||
preemptionMode(preemptionModeP),
|
||||
numGrfRequired(numGrfRequiredP),
|
||||
l3CacheSettings(l3CacheSettingsP),
|
||||
threadArbitrationPolicy(threadArbitrationPolicyP),
|
||||
additionalKernelExecInfo(additionalKernelExecInfoP),
|
||||
kernelExecutionType(kernelExecutionTypeP),
|
||||
memoryCompressionState(memoryCompressionStateP),
|
||||
sliceCount(sliceCountP),
|
||||
blocking(blockingP),
|
||||
dcFlush(dcFlushP),
|
||||
useSLM(useSLMP),
|
||||
guardCommandBufferWithPipeControl(guardCommandBufferWithPipeControlP),
|
||||
gsba32BitRequired(gsba32BitRequiredP),
|
||||
requiresCoherency(requiresCoherencyP),
|
||||
lowPriority(lowPriorityP),
|
||||
implicitFlush(implicitFlushP),
|
||||
outOfOrderExecutionAllowed(outOfOrderExecutionAllowedP),
|
||||
epilogueRequired(epilogueRequiredP),
|
||||
usePerDssBackedBuffer(usePerDSSbackedBufferP),
|
||||
useSingleSubdevice(useSingleSubdeviceP),
|
||||
useGlobalAtomics(useGlobalAtomicsP),
|
||||
areMultipleSubDevicesInContext(areMultipleSubDevicesInContextP){};
|
||||
|
||||
CsrDependencies csrDependencies;
|
||||
TimestampPacketContainer *barrierTimestampPacketNodes = nullptr;
|
||||
@@ -112,7 +112,7 @@ struct DispatchFlags {
|
||||
bool usePerDssBackedBuffer = false;
|
||||
bool useSingleSubdevice = false;
|
||||
bool useGlobalAtomics = false;
|
||||
size_t numDevicesInContext = 1u;
|
||||
bool areMultipleSubDevicesInContext = false;
|
||||
};
|
||||
|
||||
struct CsrSizeRequestFlags {
|
||||
|
||||
@@ -52,7 +52,7 @@ void EncodeWA<Family>::encodeAdditionalPipelineSelect(Device &device, LinearStre
|
||||
|
||||
template <>
|
||||
void EncodeSurfaceState<Family>::encodeExtraBufferParams(R_SURFACE_STATE *surfaceState, GraphicsAllocation *allocation, GmmHelper *gmmHelper,
|
||||
bool isReadOnly, uint32_t numAvailableDevices, bool useGlobalAtomics, size_t numDevicesInContext) {
|
||||
bool isReadOnly, uint32_t numAvailableDevices, bool useGlobalAtomics, bool areMultipleSubDevicesInContext) {
|
||||
const bool isL3Allowed = surfaceState->getMemoryObjectControlState() == gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_BUFFER);
|
||||
if (isL3Allowed) {
|
||||
const bool isConstantSurface = allocation && allocation->getAllocationType() == GraphicsAllocation::AllocationType::CONSTANT_SURFACE;
|
||||
|
||||
@@ -29,7 +29,7 @@ void StateBaseAddressHelper<BDWFamily>::programStateBaseAddress(
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
bool areMultipleSubDevicesInContext) {
|
||||
|
||||
*stateBaseAddress = BDWFamily::cmdInitStateBaseAddress;
|
||||
|
||||
@@ -77,7 +77,7 @@ void StateBaseAddressHelper<BDWFamily>::programStateBaseAddress(
|
||||
stateBaseAddress->setStatelessDataPortAccessMemoryObjectControlState(statelessMocsIndex);
|
||||
|
||||
appendStateBaseAddressParameters(stateBaseAddress, ssh, setGeneralStateBaseAddress, indirectObjectHeapBaseAddress,
|
||||
gmmHelper, isMultiOsContextCapable, memoryCompressionState, true, useGlobalAtomics, numDevicesInContext);
|
||||
gmmHelper, isMultiOsContextCapable, memoryCompressionState, true, useGlobalAtomics, areMultipleSubDevicesInContext);
|
||||
}
|
||||
template struct StateBaseAddressHelper<BDWFamily>;
|
||||
} // namespace NEO
|
||||
|
||||
@@ -38,7 +38,7 @@ struct StateBaseAddressHelper {
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext);
|
||||
bool areMultipleSubDevicesInContext);
|
||||
|
||||
static void appendStateBaseAddressParameters(
|
||||
STATE_BASE_ADDRESS *stateBaseAddress,
|
||||
@@ -50,7 +50,7 @@ struct StateBaseAddressHelper {
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool overrideBindlessSurfaceStateBase,
|
||||
bool useGlobalAtomics,
|
||||
size_t nnumDevicesInContext);
|
||||
bool areMultipleSubDevicesInContext);
|
||||
|
||||
static void appendExtraCacheSettings(STATE_BASE_ADDRESS *stateBaseAddress, GmmHelper *gmmHelper);
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
bool isMultiOsContextCapable,
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
bool areMultipleSubDevicesInContext) {
|
||||
|
||||
*stateBaseAddress = GfxFamily::cmdInitStateBaseAddress;
|
||||
bool overrideBindlessSurfaceStateBase = true;
|
||||
@@ -102,7 +102,7 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
|
||||
stateBaseAddress->setStatelessDataPortAccessMemoryObjectControlState(statelessMocsIndex);
|
||||
|
||||
appendStateBaseAddressParameters(stateBaseAddress, ssh, setGeneralStateBaseAddress, indirectObjectHeapBaseAddress, gmmHelper,
|
||||
isMultiOsContextCapable, memoryCompressionState, overrideBindlessSurfaceStateBase, useGlobalAtomics, numDevicesInContext);
|
||||
isMultiOsContextCapable, memoryCompressionState, overrideBindlessSurfaceStateBase, useGlobalAtomics, areMultipleSubDevicesInContext);
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
|
||||
@@ -20,7 +20,7 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool overrideBindlessSurfaceStateBase,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
bool areMultipleSubDevicesInContext) {
|
||||
appendExtraCacheSettings(stateBaseAddress, gmmHelper);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ void StateBaseAddressHelper<GfxFamily>::appendStateBaseAddressParameters(
|
||||
MemoryCompressionState memoryCompressionState,
|
||||
bool overrideBindlessSurfaceStateBase,
|
||||
bool useGlobalAtomics,
|
||||
size_t numDevicesInContext) {
|
||||
bool areMultipleSubDevicesInContext) {
|
||||
|
||||
if (overrideBindlessSurfaceStateBase && ssh) {
|
||||
stateBaseAddress->setBindlessSurfaceStateBaseAddressModifyEnable(true);
|
||||
|
||||
@@ -41,6 +41,6 @@ struct DispatchFlagsHelper {
|
||||
false, //usePerDssBackedBuffer
|
||||
false, //useSingleSubdevice
|
||||
false, //useGlobalAtomics
|
||||
1u); //numDevicesInContext
|
||||
false); //areMultipleSubDevicesInContext
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user