Skip to content

Commit 96c668d

Browse files
L0 Debugger - Support for debugging immediate cmd lists
- add debugger support to imm cmd lists - add debugger support to flushTask Related-To: NEO-6845 Signed-off-by: Mateusz Hoppe <[email protected]>
1 parent 1b1c067 commit 96c668d

File tree

4 files changed

+114
-24
lines changed

4 files changed

+114
-24
lines changed

level_zero/core/source/cmdlist/cmdlist_hw_immediate.inl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,12 @@ ze_result_t CommandListCoreFamilyImmediate<gfxCoreFamily>::executeCommandListImm
114114
ssh = this->device->getNEODevice()->getBindlessHeapsHelper()->getHeap(NEO::BindlessHeapsHelper::BindlesHeapType::GLOBAL_SSH);
115115
}
116116

117+
if (this->device->getL0Debugger()) {
118+
UNRECOVERABLE_IF(!NEO::Debugger::isDebugEnabled(this->internalUsage));
119+
this->csr->makeResident(*this->device->getL0Debugger()->getSbaTrackingBuffer(this->csr->getOsContext().getContextId()));
120+
this->csr->makeResident(*this->device->getDebugSurface());
121+
}
122+
117123
auto completionStamp = this->csr->flushTask(
118124
*commandStream,
119125
commandStreamStart,

level_zero/core/test/unit_tests/sources/debugger/test_l0_debugger_2.cpp

Lines changed: 86 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
*
66
*/
77

8+
#include "shared/source/helpers/preamble.h"
89
#include "shared/test/common/cmd_parse/gen_cmd_parse.h"
10+
#include "shared/test/common/libult/ult_command_stream_receiver.h"
911
#include "shared/test/common/test_macros/test.h"
1012

1113
#include "level_zero/core/source/image/image_hw.h"
@@ -18,15 +20,15 @@ namespace ult {
1820

1921
using L0DebuggerTest = Test<L0DebuggerHwFixture>;
2022

21-
struct L0DebuggerInternalUsageTest : public L0DebuggerTest {
23+
struct L0DebuggerWithBlitterTest : public L0DebuggerTest {
2224
void SetUp() override {
2325
VariableBackup<HardwareInfo> backupHwInfo(defaultHwInfo.get());
2426
defaultHwInfo->capabilityTable.blitterOperationsSupported = true;
2527
L0DebuggerTest::SetUp();
2628
}
2729
};
2830

29-
HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
31+
HWTEST_F(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionEnabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
3032
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
3133

3234
DebugManagerStateRestore restorer;
@@ -55,7 +57,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionEnabledWhenCommand
5557
commandList->destroy();
5658
}
5759

58-
HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsCalled) {
60+
HWTEST_F(L0DebuggerWithBlitterTest, givenFlushTaskSubmissionDisabledWhenCommandListIsInititalizedOrResetThenCaptureSbaIsNotCalled) {
5961
using STATE_BASE_ADDRESS = typename FamilyType::STATE_BASE_ADDRESS;
6062

6163
DebugManagerStateRestore restorer;
@@ -84,7 +86,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenFlushTaskSubmissionDisabledWhenComman
8486
commandList->destroy();
8587
}
8688

87-
HWTEST_F(L0DebuggerInternalUsageTest, givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
89+
HWTEST_F(L0DebuggerWithBlitterTest, givenDebuggerLogsDisabledWhenCommandListIsSynchronizedThenSbaAddressesAreNotPrinted) {
8890
DebugManagerStateRestore restorer;
8991
NEO::DebugManager.flags.DebuggerLogBitmask.set(0);
9092

@@ -104,39 +106,107 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenDebuggerLogsDisabledWhenCommandListIs
104106
commandList->destroy();
105107
}
106108

107-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelThenSuccessIsReturned) {
109+
HWTEST_F(L0DebuggerWithBlitterTest, givenImmediateCommandListWhenExecutingWithFlushTaskThenSipIsInstalledAndDebuggerAllocationsAreResident) {
110+
using STATE_SIP = typename FamilyType::STATE_SIP;
111+
using MI_LOAD_REGISTER_IMM = typename FamilyType::MI_LOAD_REGISTER_IMM;
112+
108113
Mock<::L0::Kernel> kernel;
109114
DebugManagerStateRestore restorer;
110115
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
111116

112117
ze_command_queue_desc_t queueDesc = {};
113118
ze_result_t returnValue = ZE_RESULT_SUCCESS;
114119
ze_group_count_t groupCount{1, 1, 1};
120+
121+
auto &csr = neoDevice->getUltCommandStreamReceiver<FamilyType>();
122+
csr.storeMakeResidentAllocations = true;
123+
115124
auto commandList = CommandList::createImmediate(productFamily, device, &queueDesc, false, NEO::EngineGroupType::RenderCompute, returnValue);
116125

126+
EXPECT_TRUE(commandList->isFlushTaskSubmissionEnabled);
127+
EXPECT_EQ(&csr, commandList->csr);
128+
129+
csr.lastFlushedCommandStream = nullptr;
117130
auto result = commandList->appendLaunchKernel(kernel.toHandle(), &groupCount, nullptr, 0, nullptr);
118131
ASSERT_EQ(ZE_RESULT_SUCCESS, result);
119132

133+
EXPECT_NE(nullptr, csr.lastFlushedCommandStream);
134+
135+
auto sbaBuffer = device->getL0Debugger()->getSbaTrackingBuffer(commandList->csr->getOsContext().getContextId());
136+
auto sipIsa = NEO::SipKernel::getSipKernel(*neoDevice).getSipAllocation();
137+
auto debugSurface = device->getDebugSurface();
138+
139+
EXPECT_TRUE(csr.isMadeResident(sbaBuffer));
140+
EXPECT_TRUE(csr.isMadeResident(sipIsa));
141+
EXPECT_TRUE(csr.isMadeResident(debugSurface));
142+
143+
GenCmdList cmdList;
144+
ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(
145+
cmdList, commandList->csr->getCS().getCpuBase(), commandList->csr->getCS().getUsed()));
146+
147+
const auto &hwHelper = HwHelper::get(defaultHwInfo->platform.eRenderCoreFamily);
148+
if (hwHelper.isSipWANeeded(hwInfo)) {
149+
150+
auto miLoadImm = findAll<MI_LOAD_REGISTER_IMM *>(cmdList.begin(), cmdList.end());
151+
152+
auto globalSipFound = 0u;
153+
for (size_t i = 0; i < miLoadImm.size(); i++) {
154+
MI_LOAD_REGISTER_IMM *miLoad = genCmdCast<MI_LOAD_REGISTER_IMM *>(*miLoadImm[i]);
155+
ASSERT_NE(nullptr, miLoad);
156+
157+
if (miLoad->getRegisterOffset() == NEO::GlobalSipRegister<FamilyType>::registerOffset) {
158+
globalSipFound++;
159+
}
160+
}
161+
EXPECT_NE(0u, globalSipFound);
162+
} else {
163+
auto sipItor = find<STATE_SIP *>(cmdList.begin(), cmdList.end());
164+
ASSERT_NE(cmdList.end(), sipItor);
165+
}
120166
commandList->destroy();
121167
}
122168

123-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledWithInternalCommandListForImmediateWhenAppendLaunchKernelThenSuccessIsReturned) {
169+
HWTEST_F(L0DebuggerWithBlitterTest, givenInternalUsageImmediateCommandListWhenExecutingThenDebuggerAllocationsAreNotResident) {
170+
using STATE_SIP = typename FamilyType::STATE_SIP;
171+
124172
Mock<::L0::Kernel> kernel;
125173
DebugManagerStateRestore restorer;
126174
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
127175

128176
ze_command_queue_desc_t queueDesc = {};
129177
ze_result_t returnValue = ZE_RESULT_SUCCESS;
130178
ze_group_count_t groupCount{1, 1, 1};
179+
131180
auto commandList = CommandList::createImmediate(productFamily, device, &queueDesc, true, NEO::EngineGroupType::RenderCompute, returnValue);
132181

182+
// Internal command list must not have flush task enabled
183+
EXPECT_FALSE(commandList->isFlushTaskSubmissionEnabled);
184+
185+
auto &csr = reinterpret_cast<NEO::UltCommandStreamReceiver<FamilyType> &>(*commandList->csr);
186+
csr.storeMakeResidentAllocations = true;
187+
133188
auto result = commandList->appendLaunchKernel(kernel.toHandle(), &groupCount, nullptr, 0, nullptr);
134189
ASSERT_EQ(ZE_RESULT_SUCCESS, result);
135190

191+
auto sbaBuffer = device->getL0Debugger()->getSbaTrackingBuffer(commandList->csr->getOsContext().getContextId());
192+
auto sipIsa = NEO::SipKernel::getSipKernel(*neoDevice).getSipAllocation();
193+
auto debugSurface = device->getDebugSurface();
194+
195+
EXPECT_FALSE(csr.isMadeResident(sbaBuffer));
196+
EXPECT_FALSE(csr.isMadeResident(sipIsa));
197+
EXPECT_FALSE(csr.isMadeResident(debugSurface));
198+
199+
GenCmdList cmdList;
200+
ASSERT_TRUE(FamilyType::PARSE::parseCommandBuffer(
201+
cmdList, commandList->csr->getCS().getCpuBase(), commandList->csr->getCS().getUsed()));
202+
203+
auto sipItor = find<STATE_SIP *>(cmdList.begin(), cmdList.end());
204+
ASSERT_EQ(cmdList.end(), sipItor);
205+
136206
commandList->destroy();
137207
}
138208

139-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
209+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
140210
Mock<::L0::Kernel> kernel;
141211
DebugManagerStateRestore restorer;
142212
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
@@ -153,7 +223,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
153223
commandList->destroy();
154224
}
155225

156-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
226+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendLaunchKernelIndirectThenSuccessIsReturned) {
157227
Mock<::L0::Kernel> kernel;
158228
DebugManagerStateRestore restorer;
159229
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
@@ -170,7 +240,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
170240
commandList->destroy();
171241
}
172242

173-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
243+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
174244
DebugManagerStateRestore restorer;
175245
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
176246

@@ -186,7 +256,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
186256
commandList->destroy();
187257
}
188258

189-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
259+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyThenSuccessIsReturned) {
190260
DebugManagerStateRestore restorer;
191261
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
192262

@@ -202,7 +272,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
202272
commandList->destroy();
203273
}
204274

205-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
275+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
206276
DebugManagerStateRestore restorer;
207277
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
208278

@@ -223,7 +293,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForIm
223293
commandList->destroy();
224294
}
225295

226-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
296+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledForRegularCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
227297
DebugManagerStateRestore restorer;
228298
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
229299

@@ -256,7 +326,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledForRe
256326
commandQueue->destroy();
257327
}
258328

259-
HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
329+
HWTEST_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledForImmediateCommandListForAppendMemoryCopyRegionThenSuccessIsReturned) {
260330
DebugManagerStateRestore restorer;
261331
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
262332

@@ -275,7 +345,7 @@ HWTEST_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledForI
275345
commandList->destroy();
276346
}
277347

278-
HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
348+
HWTEST2_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionEnabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
279349
DebugManagerStateRestore restorer;
280350
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(true);
281351

@@ -293,7 +363,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionEnabledComm
293363
commandList->destroy();
294364
}
295365

296-
HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
366+
HWTEST2_F(L0DebuggerWithBlitterTest, givenUseCsrImmediateSubmissionDisabledCommandListAndAppendMemoryCopyCalledInLoopThenMultipleCommandBufferAreUsedAndSuccessIsReturned, IsAtLeastSkl) {
297367
DebugManagerStateRestore restorer;
298368
NEO::DebugManager.flags.EnableFlushTaskSubmission.set(false);
299369

@@ -311,7 +381,7 @@ HWTEST2_F(L0DebuggerInternalUsageTest, givenUseCsrImmediateSubmissionDisabledCom
311381
commandList->destroy();
312382
}
313383

314-
HWTEST2_F(L0DebuggerInternalUsageTest, givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
384+
HWTEST2_F(L0DebuggerWithBlitterTest, givenDebuggingEnabledWhenInternalCmdQIsUsedThenDebuggerPathsAreNotExecuted, IsAtLeastSkl) {
315385
ze_command_queue_desc_t queueDesc = {};
316386

317387
std::unique_ptr<MockCommandQueueHw<gfxCoreFamily>, Deleter> commandQueue(new MockCommandQueueHw<gfxCoreFamily>(device, neoDevice->getDefaultEngine().commandStreamReceiver, &queueDesc));

opencl/test/unit_test/command_stream/command_stream_receiver_hw_1_tests.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ HWTEST_F(UltCommandStreamReceiverTest, givenSentStateSipFlagSetAndSourceLevelDeb
142142
auto sizeWithSourceKernelDebugging = commandStreamReceiver.getRequiredCmdStreamSize(dispatchFlags, *pDevice);
143143

144144
auto sizeForStateSip = PreemptionHelper::getRequiredStateSipCmdSize<FamilyType>(*pDevice, commandStreamReceiver.isRcs());
145-
EXPECT_EQ(sizeForStateSip, sizeWithSourceKernelDebugging - sizeWithoutSourceKernelDebugging - PreambleHelper<FamilyType>::getKernelDebuggingCommandsSize(true));
145+
EXPECT_EQ(sizeForStateSip, sizeWithSourceKernelDebugging - sizeWithoutSourceKernelDebugging - PreambleHelper<FamilyType>::getKernelDebuggingCommandsSize(true) - debugger->sbaTrackingSize);
146146
}
147147

148148
HWTEST_F(UltCommandStreamReceiverTest, givenPreambleSentAndThreadArbitrationPolicyChangedWhenEstimatingFlushTaskSizeThenResultDependsOnPolicyProgrammingCmdSize) {

shared/source/command_stream/command_stream_receiver_hw_base.inl

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,7 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
362362
lastSentUseGlobalAtomics = dispatchFlags.useGlobalAtomics;
363363
}
364364

365+
bool debuggingEnabled = device.getDebugger() != nullptr;
365366
bool sourceLevelDebuggerActive = device.getSourceLevelDebugger() != nullptr ? true : false;
366367

367368
auto memoryCompressionState = lastMemoryCompressionState;
@@ -414,6 +415,12 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
414415

415416
programAdditionalStateBaseAddress(commandStreamCSR, cmd, device);
416417

418+
if (debuggingEnabled && !device.getDebugger()->isLegacy()) {
419+
NEO::Debugger::SbaAddresses sbaAddresses = {};
420+
NEO::EncodeStateBaseAddress<GfxFamily>::setSbaAddressesForDebugger(sbaAddresses, cmd);
421+
device.getDebugger()->captureStateBaseAddress(commandStreamCSR, sbaAddresses);
422+
}
423+
417424
if (sshDirty) {
418425
bindingTableBaseAddressRequired = true;
419426
}
@@ -424,14 +431,15 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
424431
}
425432

426433
EncodeWA<GfxFamily>::encodeAdditionalPipelineSelect(commandStreamCSR, dispatchFlags.pipelineSelectArgs, false, hwInfo, isRcs());
427-
addPipeControlBeforeStateSip(commandStreamCSR, device);
428-
programStateSip(commandStreamCSR, device);
429434

430435
if (DebugManager.flags.AddPatchInfoCommentsForAUBDump.get()) {
431436
collectStateBaseAddresPatchInfo(commandStream.getGraphicsAllocation()->getGpuAddress(), stateBaseAddressCmdOffset, dsh, ioh, ssh, newGSHbase);
432437
}
433438
}
434439

440+
addPipeControlBeforeStateSip(commandStreamCSR, device);
441+
programStateSip(commandStreamCSR, device);
442+
435443
DBG_LOG(LogTaskCounts, __FUNCTION__, "Line: ", __LINE__, "this->taskLevel", (uint32_t)this->taskLevel);
436444

437445
if (executionEnvironment.rootDeviceEnvironments[rootDeviceIndex]->getHardwareInfo()->workaroundTable.flags.waSamplerCacheFlushBetweenRedescribedSurfaceReads) {
@@ -500,11 +508,12 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
500508
makeResident(*preemptionAllocation);
501509
}
502510

503-
if (dispatchFlags.preemptionMode == PreemptionMode::MidThread || sourceLevelDebuggerActive) {
511+
if (dispatchFlags.preemptionMode == PreemptionMode::MidThread || debuggingEnabled) {
504512
makeResident(*SipKernel::getSipKernel(device).getSipAllocation());
505-
if (debugSurface) {
506-
makeResident(*debugSurface);
507-
}
513+
}
514+
515+
if (sourceLevelDebuggerActive && debugSurface) {
516+
makeResident(*debugSurface);
508517
}
509518

510519
if (experimentalCmdBuffer.get() != nullptr) {
@@ -788,6 +797,10 @@ template <typename GfxFamily>
788797
size_t CommandStreamReceiverHw<GfxFamily>::getRequiredCmdStreamSize(const DispatchFlags &dispatchFlags, Device &device) {
789798
size_t size = getRequiredCmdSizeForPreamble(device);
790799
size += getRequiredStateBaseAddressSize(device);
800+
801+
if (device.getDebugger()) {
802+
size += device.getDebugger()->getSbaTrackingCommandsSize(NEO::Debugger::SbaAddresses::trackedAddressCount);
803+
}
791804
if (!this->isStateSipSent || device.getDebugger()) {
792805
size += PreemptionHelper::getRequiredStateSipCmdSize<GfxFamily>(device, isRcs());
793806
}
@@ -895,7 +908,8 @@ inline size_t CommandStreamReceiverHw<GfxFamily>::getCmdSizeForPreemption(const
895908

896909
template <typename GfxFamily>
897910
inline void CommandStreamReceiverHw<GfxFamily>::programStateSip(LinearStream &cmdStream, Device &device) {
898-
if (!this->isStateSipSent || device.isDebuggerActive()) {
911+
bool debuggingEnabled = device.getDebugger() != nullptr;
912+
if (!this->isStateSipSent || debuggingEnabled) {
899913
PreemptionHelper::programStateSip<GfxFamily>(cmdStream, device);
900914
this->isStateSipSent = true;
901915
}

0 commit comments

Comments
 (0)