Enable state base address tracking
Related-To: NEO-5055 Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
This commit is contained in:
parent
78cad1e3c0
commit
6a08d29869
|
@ -55,14 +55,17 @@ ze_result_t CommandListImp::destroy() {
|
|||
|
||||
auto memoryManager = device->getNEODevice()->getMemoryManager();
|
||||
|
||||
auto heapAllocation = this->commandContainer.getIndirectHeap(NEO::HeapType::SURFACE_STATE)->getGraphicsAllocation();
|
||||
for (auto &engine : memoryManager->getRegisteredEngines()) {
|
||||
if (NEO::EngineHelpers::isComputeEngine(engine.getEngineType())) {
|
||||
auto contextId = engine.osContext->getContextId();
|
||||
auto surfaceStateHeap = this->commandContainer.getIndirectHeap(NEO::HeapType::SURFACE_STATE);
|
||||
if (surfaceStateHeap) {
|
||||
auto heapAllocation = surfaceStateHeap->getGraphicsAllocation();
|
||||
for (auto &engine : memoryManager->getRegisteredEngines()) {
|
||||
if (NEO::EngineHelpers::isComputeEngine(engine.getEngineType())) {
|
||||
auto contextId = engine.osContext->getContextId();
|
||||
|
||||
if (heapAllocation->isUsedByOsContext(contextId)) {
|
||||
engine.commandStreamReceiver->sendRenderStateCacheFlush();
|
||||
engine.commandStreamReceiver->waitForCompletionWithTimeout(NEO::WaitParams{false, false, NEO::TimeoutControls::maxTimeout}, engine.commandStreamReceiver->peekTaskCount());
|
||||
if (heapAllocation->isUsedByOsContext(contextId)) {
|
||||
engine.commandStreamReceiver->sendRenderStateCacheFlush();
|
||||
engine.commandStreamReceiver->waitForCompletionWithTimeout(NEO::WaitParams{false, false, NEO::TimeoutControls::maxTimeout}, engine.commandStreamReceiver->peekTaskCount());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ bool L0GfxCoreHelperHw<Family>::platformSupportsPipelineSelectTracking() const {
|
|||
|
||||
template <typename Family>
|
||||
bool L0GfxCoreHelperHw<Family>::platformSupportsStateBaseAddressTracking() const {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
|
|
|
@ -44,6 +44,9 @@ struct CommandQueueExecuteCommandLists : public Test<DeviceFixture> {
|
|||
}
|
||||
|
||||
void TearDown() override {
|
||||
auto tagAddress = device->getNEODevice()->getDefaultEngine().commandStreamReceiver->getTagAddress();
|
||||
*tagAddress = std::numeric_limits<TagAddressType>::max();
|
||||
|
||||
for (auto i = 0u; i < numCommandLists; i++) {
|
||||
auto commandList = CommandList::fromHandle(commandLists[i]);
|
||||
commandList->destroy();
|
||||
|
|
|
@ -49,9 +49,9 @@ XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForPip
|
|||
EXPECT_TRUE(l0GfxCoreHelper.platformSupportsPipelineSelectTracking());
|
||||
}
|
||||
|
||||
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForStateBaseAddressTrackingSupportThenReturnFalse) {
|
||||
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForStateBaseAddressTrackingSupportThenReturnTrue) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsStateBaseAddressTracking());
|
||||
EXPECT_TRUE(l0GfxCoreHelper.platformSupportsStateBaseAddressTracking());
|
||||
}
|
||||
|
||||
XE_HPC_CORETEST_F(L0GfxCoreHelperTestXeHpc, GivenXeHpcWhenCheckingL0HelperForRayTracingSupportThenReturnTrue) {
|
||||
|
|
|
@ -51,9 +51,9 @@ XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForPip
|
|||
EXPECT_TRUE(l0GfxCoreHelper.platformSupportsPipelineSelectTracking());
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForStateBaseAddressTrackingSupportThenReturnFalse) {
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForStateBaseAddressTrackingSupportThenReturnTrue) {
|
||||
auto &l0GfxCoreHelper = getHelper<L0GfxCoreHelper>();
|
||||
EXPECT_FALSE(l0GfxCoreHelper.platformSupportsStateBaseAddressTracking());
|
||||
EXPECT_TRUE(l0GfxCoreHelper.platformSupportsStateBaseAddressTracking());
|
||||
}
|
||||
|
||||
XE_HPG_CORETEST_F(L0GfxCoreHelperTestXeHpg, GivenXeHpgWhenCheckingL0HelperForRayTracingSupportThenReturnTrue) {
|
||||
|
|
|
@ -519,7 +519,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, OverrideDrmRegion, -1, "-1: disable, 0+: overrid
|
|||
DECLARE_DEBUG_VARIABLE(int32_t, EnableFrontEndTracking, -1, "-1: default: enabled, 0: disabled, 1: enabled. This flag creates multiple return point from List to Queue for Front End reconfiguration on Queue buffer for single List")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnablePipelineSelectTracking, -1, "-1: default: enabled, 0: disabled, 1: enabled. This flag enables optimization that limits number of pipeline select dispatched by command lists")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnableStateComputeModeTracking, -1, "-1: default: enabled, 0: disabled, 1: enabled. This flag enables tracking state compute mode changes in command lists")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnableStateBaseAddressTracking, -1, "-1: default: disabled, 0: disabled, 1: enabled. This flag enables tracking state base address changes in command lists")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnableStateBaseAddressTracking, -1, "-1: default: enabled, 0: disabled, 1: enabled. This flag enables tracking state base address changes in command lists")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, SelectCmdListHeapAddressModel, -1, "-1: default, 0: private heaps, 1: stateless, 2: bindless, 3: bindful. This flag selects default command list heap address model. Values should match HeapAddressModel enum")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnableSetPair, -1, "Use SET_PAIR to pair two buffer objects behind the same file descriptor, -1: default, 0: disabled, 1: enabled")
|
||||
/* Binary Cache */
|
||||
|
|
Loading…
Reference in New Issue