Skip to content

Commit 20e0d8c

Browse files
Add flag to control Binding Table Base Address programming
Related-To: NEO-2747 Change-Id: I30b52875f37b4f75a0b63eb199fc388d1e495dec Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
1 parent a6aac14 commit 20e0d8c

File tree

5 files changed

+27
-0
lines changed

5 files changed

+27
-0
lines changed

runtime/command_stream/command_stream_receiver.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ GraphicsAllocation *CommandStreamReceiver::getScratchAllocation() {
223223
void CommandStreamReceiver::initProgrammingFlags() {
224224
isPreambleSent = false;
225225
GSBAFor32BitProgrammed = false;
226+
bindingTableBaseAddressRequired = true;
226227
mediaVfeStateDirty = true;
227228
lastVmeSubslicesConfig = false;
228229

runtime/command_stream/command_stream_receiver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ class CommandStreamReceiver {
238238
bool isPreambleSent = false;
239239
bool isStateSipSent = false;
240240
bool GSBAFor32BitProgrammed = false;
241+
bool bindingTableBaseAddressRequired = false;
241242
bool mediaVfeStateDirty = true;
242243
bool lastVmeSubslicesConfig = false;
243244
bool disableL3Cache = false;

runtime/command_stream/command_stream_receiver_hw.inl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,13 @@ CompletionStamp CommandStreamReceiverHw<GfxFamily>::flushTask(
328328
dispatchFlags);
329329

330330
if (sshDirty) {
331+
bindingTableBaseAddressRequired = true;
332+
}
333+
334+
if (bindingTableBaseAddressRequired) {
331335
StateBaseAddressHelper<GfxFamily>::programBindingTableBaseAddress(commandStreamCSR, ssh, stateBaseAddressCmdOffset,
332336
device.getGmmHelper());
337+
bindingTableBaseAddressRequired = false;
333338
}
334339

335340
programStateSip(commandStreamCSR, device);

unit_tests/command_stream/command_stream_receiver_flush_task_1_tests.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,25 @@ HWTEST_F(CommandStreamReceiverFlushTaskTests, preambleShouldBeSentIfNeverSent) {
472472
EXPECT_GT(commandStreamReceiver.commandStream.getUsed(), 0u);
473473
}
474474

475+
HWTEST_F(CommandStreamReceiverFlushTaskTests, givenFlushTaskWhenInitProgrammingFlagsIsCalledThenBindingTableBaseAddressRequiredIsSetCorrecty) {
476+
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
477+
478+
commandStreamReceiver.initProgrammingFlags();
479+
EXPECT_TRUE(commandStreamReceiver.bindingTableBaseAddressRequired);
480+
481+
flushTask(commandStreamReceiver);
482+
EXPECT_FALSE(commandStreamReceiver.bindingTableBaseAddressRequired);
483+
}
484+
485+
HWTEST_F(CommandStreamReceiverFlushTaskTests, givenFlushTaskWhenInitProgrammingFlagsIsNotCalledThenBindingTableBaseAddressRequiredIsSetCorrectly) {
486+
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
487+
488+
EXPECT_FALSE(commandStreamReceiver.bindingTableBaseAddressRequired);
489+
490+
flushTask(commandStreamReceiver);
491+
EXPECT_FALSE(commandStreamReceiver.bindingTableBaseAddressRequired);
492+
}
493+
475494
HWTEST_F(CommandStreamReceiverFlushTaskTests, pipelineSelectShouldBeSentIfNeverSentPreambleAndMediaSamplerRequirementChanged) {
476495
auto &commandStreamReceiver = pDevice->getUltCommandStreamReceiver<FamilyType>();
477496
commandStreamReceiver.isPreambleSent = false;

unit_tests/libult/ult_command_stream_receiver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class UltCommandStreamReceiver : public CommandStreamReceiverHw<GfxFamily>, publ
3131
using BaseClass::programPreamble;
3232
using BaseClass::programStateSip;
3333
using BaseClass::sshState;
34+
using BaseClass::CommandStreamReceiver::bindingTableBaseAddressRequired;
3435
using BaseClass::CommandStreamReceiver::cleanupResources;
3536
using BaseClass::CommandStreamReceiver::commandStream;
3637
using BaseClass::CommandStreamReceiver::disableL3Cache;

0 commit comments

Comments
 (0)