diff --git a/runtime/command_stream/command_stream_receiver_hw.h b/runtime/command_stream/command_stream_receiver_hw.h index 4a604c9f8a..b72c6e309b 100644 --- a/runtime/command_stream/command_stream_receiver_hw.h +++ b/runtime/command_stream/command_stream_receiver_hw.h @@ -92,6 +92,9 @@ class CommandStreamReceiverHw : public CommandStreamReceiver { void programEngineModeCommands(LinearStream &csr, const DispatchFlags &dispatchFlags); void programEngineModeEpliogue(LinearStream &csr, const DispatchFlags &dispatchFlags); + void programEnginePrologue(LinearStream &csr, const DispatchFlags &dispatchFlags); + size_t getCmdSizeForPrologue(const DispatchFlags &dispatchFlags) const; + void addClearSLMWorkAround(typename GfxFamily::PIPE_CONTROL *pCmd); PIPE_CONTROL *addPipeControlCmd(LinearStream &commandStream); PIPE_CONTROL *addPipeControlBeforeStateBaseAddress(LinearStream &commandStream); diff --git a/runtime/command_stream/command_stream_receiver_hw_base.inl b/runtime/command_stream/command_stream_receiver_hw_base.inl index 77318b634d..7d013ddffa 100644 --- a/runtime/command_stream/command_stream_receiver_hw_base.inl +++ b/runtime/command_stream/command_stream_receiver_hw_base.inl @@ -262,6 +262,7 @@ CompletionStamp CommandStreamReceiverHw::flushTask( if (executionEnvironment.rootDeviceEnvironments[device.getRootDeviceIndex()]->pageTableManager.get() && !pageTableManagerInitialized) { pageTableManagerInitialized = executionEnvironment.rootDeviceEnvironments[device.getRootDeviceIndex()]->pageTableManager->initPageTableManagerRegisters(this); } + programEnginePrologue(commandStreamCSR, dispatchFlags); programComputeMode(commandStreamCSR, dispatchFlags); programL3(commandStreamCSR, dispatchFlags, newL3Config); programPipelineSelect(commandStreamCSR, dispatchFlags.pipelineSelectArgs); @@ -642,6 +643,7 @@ size_t CommandStreamReceiverHw::getRequiredCmdStreamSize(const Dispat size += getCmdSizeForPipelineSelect(); size += getCmdSizeForPreemption(dispatchFlags); size += getCmdSizeForEpilogue(dispatchFlags); + size += getCmdSizeForPrologue(dispatchFlags); if (executionEnvironment.getHardwareInfo()->workaroundTable.waSamplerCacheFlushBetweenRedescribedSurfaceReads) { if (this->samplerCacheFlushRequired != SamplerCacheFlushState::samplerCacheFlushNotRequired) { @@ -881,4 +883,13 @@ inline size_t CommandStreamReceiverHw::getCmdSizeForEpilogue(const Di } return 0u; } +template +inline void CommandStreamReceiverHw::programEnginePrologue(LinearStream &csr, const DispatchFlags &dispatchFlags) { +} + +template +inline size_t CommandStreamReceiverHw::getCmdSizeForPrologue(const DispatchFlags &dispatchFlags) const { + return 0u; +} + } // namespace NEO