Start using real mocs index to call state base address programming.

- After this change we start using real MOCS index as an argument to sba
programming
- We also start tracking real MOCS index in Command Stream Receiver.

Change-Id: Id34cffd7e58cb7363df02ac76f82bf377f4bbd77
Signed-off-by: Mrozek, Michal <michal.mrozek@intel.com>
This commit is contained in:
Mrozek, Michal
2019-08-26 15:15:22 +02:00
committed by sys_ocldev
parent aeb84b3e20
commit e851359e32
4 changed files with 31 additions and 16 deletions

View File

@@ -270,12 +270,11 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
auto isStateBaseAddressDirty = dshDirty || iohDirty || sshDirty || stateBaseAddressDirty;
auto requiredL3Index = CacheSettings::l3CacheOn;
if (dispatchFlags.l3CacheSettings == L3CachingSettings::l3CacheOff) {
requiredL3Index = CacheSettings::l3CacheOff;
}
auto &hwHelper = HwHelper::get(peekHwInfo().platform.eRenderCoreFamily);
auto l3On = dispatchFlags.l3CacheSettings != L3CachingSettings::l3CacheOff;
auto mocsIndex = hwHelper.getMocsIndex(*device.getGmmHelper(), l3On, false);
if (requiredL3Index != latestSentStatelessMocsConfig) {
if (mocsIndex != latestSentStatelessMocsConfig) {
isStateBaseAddressDirty = true;
}
@@ -300,7 +299,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
ioh,
ssh,
newGSHbase,
requiredL3Index,
mocsIndex,
getMemoryManager()->getInternalHeapBaseAddress(),
device.getGmmHelper(),
dispatchFlags);
@@ -317,7 +316,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
programStateSip(commandStreamCSR, device);
latestSentStatelessMocsConfig = requiredL3Index;
latestSentStatelessMocsConfig = mocsIndex;
if (DebugManager.flags.AddPatchInfoCommentsForAUBDump.get()) {
collectStateBaseAddresPatchInfo(commandStream.getGraphicsAllocation()->getGpuAddress(), stateBaseAddressCmdOffset, dsh, ioh, ssh, newGSHbase);

View File

@@ -55,12 +55,13 @@ void StateBaseAddressHelper<GfxFamily>::programStateBaseAddress(
pCmd->setInstructionBufferSize(MemoryConstants::sizeOf4GBinPageEntities);
//set cache settings
auto mocsToProgram = gmmHelper->getMOCS(statelessMocsIndex);
if (DebugManager.flags.OverrideStatelessMocsIndex.get() != -1) {
mocsToProgram = (DebugManager.flags.OverrideStatelessMocsIndex.get() << 1);
statelessMocsIndex = DebugManager.flags.OverrideStatelessMocsIndex.get();
}
pCmd->setStatelessDataPortAccessMemoryObjectControlState(mocsToProgram);
statelessMocsIndex = statelessMocsIndex << 1;
pCmd->setStatelessDataPortAccessMemoryObjectControlState(statelessMocsIndex);
pCmd->setInstructionMemoryObjectControlState(gmmHelper->getMOCS(GMM_RESOURCE_USAGE_OCL_STATE_HEAP_BUFFER));
appendStateBaseAddressParameters(pCmd, dsh, ioh, ssh, generalStateBase, internalHeapBase, gmmHelper, dispatchFlags);