[fix] do not set default state in context for one-time set properties.

- csr class one-time properties should be set only during dispatch time
- by allowing one-time properties to be dirty at least once
- this is algorithm correction ensuring trigger n-p state change in case
- when multi-time properties are not supported on such platform

Related-To: NEO-5055

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
Zbigniew Zdanowicz
2023-03-10 21:39:07 +00:00
committed by Compute-Runtime-Automation
parent 91ced4edcc
commit 76099c3aa7
2 changed files with 20 additions and 1 deletions

View File

@@ -155,7 +155,6 @@ CommandList *CommandList::createImmediate(uint32_t productFamily, Device *device
commandList = nullptr;
return commandList;
}
commandList->setStreamPropertiesDefaultSettings(csr->getStreamProperties());
auto commandQueue = CommandQueue::create(productFamily, device, csr, desc, commandList->isCopyOnly(), internalUsage, returnValue);
if (!commandQueue) {

View File

@@ -172,6 +172,26 @@ HWTEST2_F(CommandListExecuteImmediate, givenOutOfDeviceMemoryErrorOnFlushWhenExe
EXPECT_EQ(ZE_RESULT_ERROR_OUT_OF_DEVICE_MEMORY, commandListImmediate.executeCommandListImmediateWithFlushTask(false, false, false));
}
HWTEST2_F(CommandListExecuteImmediate, GivenImmediateCommandListWhenCommandListIsCreatedThenCsrStateIsNotSet, IsAtLeastSkl) {
std::unique_ptr<L0::CommandList> commandList;
const ze_command_queue_desc_t desc = {};
ze_result_t returnValue;
commandList.reset(CommandList::createImmediate(productFamily, device, &desc, false, NEO::EngineGroupType::RenderCompute, returnValue));
auto &commandListImmediate = static_cast<MockCommandListImmediate<gfxCoreFamily> &>(*commandList);
auto &currentCsrStreamProperties = commandListImmediate.csr->getStreamProperties();
EXPECT_EQ(-1, currentCsrStreamProperties.stateComputeMode.isCoherencyRequired.value);
EXPECT_EQ(-1, currentCsrStreamProperties.stateComputeMode.devicePreemptionMode.value);
EXPECT_EQ(-1, currentCsrStreamProperties.frontEndState.disableOverdispatch.value);
EXPECT_EQ(-1, currentCsrStreamProperties.frontEndState.singleSliceDispatchCcsMode.value);
EXPECT_EQ(-1, currentCsrStreamProperties.pipelineSelect.modeSelected.value);
EXPECT_EQ(-1, currentCsrStreamProperties.pipelineSelect.mediaSamplerDopClockGate.value);
EXPECT_EQ(-1, currentCsrStreamProperties.stateBaseAddress.globalAtomics.value);
}
using CommandListTest = Test<DeviceFixture>;
using IsDcFlushSupportedPlatform = IsWithinGfxCore<IGFX_GEN9_CORE, IGFX_XE_HP_CORE>;