mirror of
https://github.com/intel/compute-runtime.git
synced 2025-09-15 13:01:45 +08:00
Refactor addPipeControlWA, PipeControlWArequired
Related-To: NEO-3210 Change-Id: I0516154b323e29eeb697bf2253ca08ae1ce150d8 Signed-off-by: Krzysztof Gibala <krzysztof.gibala@intel.com>
This commit is contained in:

committed by
sys_ocldev

parent
c961157fde
commit
62b0f0a220
@ -112,7 +112,8 @@ class GpgpuWalkerHelper {
|
||||
|
||||
static void dispatchProfilingCommandsStart(
|
||||
TagNode<HwTimeStamps> &hwTimeStamps,
|
||||
LinearStream *commandStream);
|
||||
LinearStream *commandStream,
|
||||
const HardwareInfo &hwInfo);
|
||||
|
||||
static void dispatchProfilingCommandsEnd(
|
||||
TagNode<HwTimeStamps> &hwTimeStamps,
|
||||
@ -132,7 +133,8 @@ class GpgpuWalkerHelper {
|
||||
LinearStream *cmdStream,
|
||||
WALKER_TYPE<GfxFamily> *walkerCmd,
|
||||
TagNode<TimestampPacketStorage> *timestampPacketNode,
|
||||
TimestampPacketStorage::WriteOperationType writeOperationType);
|
||||
TimestampPacketStorage::WriteOperationType writeOperationType,
|
||||
const HardwareInfo &hwInfo);
|
||||
|
||||
static void dispatchScheduler(
|
||||
LinearStream &commandStream,
|
||||
|
@ -104,7 +104,8 @@ void GpgpuWalkerHelper<GfxFamily>::addAluReadModifyWriteRegister(
|
||||
template <typename GfxFamily>
|
||||
void GpgpuWalkerHelper<GfxFamily>::dispatchProfilingCommandsStart(
|
||||
TagNode<HwTimeStamps> &hwTimeStamps,
|
||||
LinearStream *commandStream) {
|
||||
LinearStream *commandStream,
|
||||
const HardwareInfo &hwInfo) {
|
||||
|
||||
using MI_STORE_REGISTER_MEM = typename GfxFamily::MI_STORE_REGISTER_MEM;
|
||||
|
||||
@ -113,7 +114,7 @@ void GpgpuWalkerHelper<GfxFamily>::dispatchProfilingCommandsStart(
|
||||
|
||||
PipeControlHelper<GfxFamily>::obtainPipeControlAndProgramPostSyncOperation(*commandStream,
|
||||
PIPE_CONTROL::POST_SYNC_OPERATION_WRITE_TIMESTAMP,
|
||||
timeStampAddress, 0llu, false);
|
||||
timeStampAddress, 0llu, false, hwInfo);
|
||||
|
||||
//MI_STORE_REGISTER_MEM for context local timestamp
|
||||
timeStampAddress = hwTimeStamps.getGpuAddress() + offsetof(HwTimeStamps, ContextStartTS);
|
||||
|
@ -171,19 +171,20 @@ void GpgpuWalkerHelper<GfxFamily>::setupTimestampPacket(
|
||||
LinearStream *cmdStream,
|
||||
WALKER_TYPE<GfxFamily> *walkerCmd,
|
||||
TagNode<TimestampPacketStorage> *timestampPacketNode,
|
||||
TimestampPacketStorage::WriteOperationType writeOperationType) {
|
||||
TimestampPacketStorage::WriteOperationType writeOperationType,
|
||||
const HardwareInfo &hwInfo) {
|
||||
|
||||
if (TimestampPacketStorage::WriteOperationType::AfterWalker == writeOperationType) {
|
||||
uint64_t address = timestampPacketNode->getGpuAddress() + offsetof(TimestampPacketStorage, packets[0].contextEnd);
|
||||
PipeControlHelper<GfxFamily>::obtainPipeControlAndProgramPostSyncOperation(*cmdStream,
|
||||
PIPE_CONTROL::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA, address, 0, false);
|
||||
PIPE_CONTROL::POST_SYNC_OPERATION_WRITE_IMMEDIATE_DATA, address, 0, false, hwInfo);
|
||||
}
|
||||
}
|
||||
|
||||
template <typename GfxFamily>
|
||||
size_t EnqueueOperation<GfxFamily>::getSizeRequiredCSKernel(bool reserveProfilingCmdsSpace, bool reservePerfCounters, CommandQueue &commandQueue, const Kernel *pKernel) {
|
||||
size_t size = sizeof(typename GfxFamily::GPGPU_WALKER) + HardwareCommandsHelper<GfxFamily>::getSizeRequiredCS(pKernel) +
|
||||
sizeof(PIPE_CONTROL) * (HardwareCommandsHelper<GfxFamily>::isPipeControlWArequired() ? 2 : 1);
|
||||
sizeof(PIPE_CONTROL) * (HardwareCommandsHelper<GfxFamily>::isPipeControlWArequired(pKernel->getDevice().getHardwareInfo()) ? 2 : 1);
|
||||
size += HardwareCommandsHelper<GfxFamily>::getSizeRequiredForCacheFlush(commandQueue, pKernel, 0U);
|
||||
size += PreemptionHelper::getPreemptionWaCsSize<GfxFamily>(commandQueue.getDevice());
|
||||
if (reserveProfilingCmdsSpace) {
|
||||
|
@ -178,7 +178,7 @@ void HardwareInterface<GfxFamily>::dispatchKernelCommands(CommandQueue &commandQ
|
||||
|
||||
if (commandQueue.getGpgpuCommandStreamReceiver().peekTimestampPacketWriteEnabled()) {
|
||||
auto timestampPacketNode = currentTimestampPacketNodes->peekNodes().at(currentDispatchIndex);
|
||||
GpgpuWalkerHelper<GfxFamily>::setupTimestampPacket(&commandStream, nullptr, timestampPacketNode, TimestampPacketStorage::WriteOperationType::BeforeWalker);
|
||||
GpgpuWalkerHelper<GfxFamily>::setupTimestampPacket(&commandStream, nullptr, timestampPacketNode, TimestampPacketStorage::WriteOperationType::BeforeWalker, commandQueue.getDevice().getHardwareInfo());
|
||||
}
|
||||
|
||||
programWalker(commandStream, kernel, commandQueue, currentTimestampPacketNodes, dsh, ioh, ssh, globalWorkSizes,
|
||||
|
@ -57,7 +57,7 @@ inline void HardwareInterface<GfxFamily>::dispatchProfilingPerfStartCommands(
|
||||
|
||||
// If hwTimeStampAlloc is passed (not nullptr), then we know that profiling is enabled
|
||||
if (hwTimeStamps != nullptr) {
|
||||
GpgpuWalkerHelper<GfxFamily>::dispatchProfilingCommandsStart(*hwTimeStamps, commandStream);
|
||||
GpgpuWalkerHelper<GfxFamily>::dispatchProfilingCommandsStart(*hwTimeStamps, commandStream, commandQueue.getDevice().getHardwareInfo());
|
||||
}
|
||||
if (hwPerfCounter != nullptr) {
|
||||
GpgpuWalkerHelper<GfxFamily>::dispatchPerfCountersCommandsStart(commandQueue, *hwPerfCounter, commandStream);
|
||||
@ -109,7 +109,7 @@ inline void HardwareInterface<GfxFamily>::programWalker(
|
||||
|
||||
if (currentTimestampPacketNodes && commandQueue.getGpgpuCommandStreamReceiver().peekTimestampPacketWriteEnabled()) {
|
||||
auto timestampPacketNode = currentTimestampPacketNodes->peekNodes().at(currentDispatchIndex);
|
||||
GpgpuWalkerHelper<GfxFamily>::setupTimestampPacket(&commandStream, walkerCmd, timestampPacketNode, TimestampPacketStorage::WriteOperationType::AfterWalker);
|
||||
GpgpuWalkerHelper<GfxFamily>::setupTimestampPacket(&commandStream, walkerCmd, timestampPacketNode, TimestampPacketStorage::WriteOperationType::AfterWalker, commandQueue.getDevice().getHardwareInfo());
|
||||
}
|
||||
|
||||
HardwareCommandsHelper<GfxFamily>::sendIndirectState(
|
||||
|
Reference in New Issue
Block a user