mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-09 14:33:04 +08:00
Add TimestampPacketDependencies helper
Change-Id: I3945ac8e495baf442b4f892ba415f939e8d316da Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
df20a73622
commit
b6015b5293
@@ -334,7 +334,7 @@ class CommandQueueHw : public CommandQueue {
|
||||
size_t commandStreamStart,
|
||||
bool &blocking,
|
||||
const MultiDispatchInfo &multiDispatchInfo,
|
||||
TimestampPacketContainer *previousTimestampPacketNodes,
|
||||
TimestampPacketDependencies ×tampPacketDependencies,
|
||||
EventsRequest &eventsRequest,
|
||||
EventBuilder &eventBuilder,
|
||||
uint32_t taskLevel,
|
||||
@@ -357,8 +357,7 @@ class CommandQueueHw : public CommandQueue {
|
||||
size_t commandStreamStart,
|
||||
bool &blocking,
|
||||
const EnqueueProperties &enqueueProperties,
|
||||
TimestampPacketContainer *previousTimestampPacketNodes,
|
||||
TimestampPacketContainer &barrierTimestampPacketNodes,
|
||||
TimestampPacketDependencies ×tampPacketDependencies,
|
||||
EventsRequest &eventsRequest,
|
||||
EventBuilder &eventBuilder,
|
||||
uint32_t taskLevel);
|
||||
@@ -367,8 +366,7 @@ class CommandQueueHw : public CommandQueue {
|
||||
LinearStream *commandStream,
|
||||
CsrDependencies &csrDeps);
|
||||
BlitProperties processDispatchForBlitEnqueue(const MultiDispatchInfo &multiDispatchInfo,
|
||||
TimestampPacketContainer &previousTimestampPacketNodes,
|
||||
TimestampPacketContainer &barrierTimestampPacketNode,
|
||||
TimestampPacketDependencies ×tampPacketDependencies,
|
||||
const EventsRequest &eventsRequest,
|
||||
LinearStream &commandStream,
|
||||
uint32_t commandType, bool queueBlocked);
|
||||
@@ -450,6 +448,6 @@ class CommandQueueHw : public CommandQueue {
|
||||
DeviceQueueHw<GfxFamily> *devQueueHw,
|
||||
CsrDependencies &csrDeps,
|
||||
KernelOperation *blockedCommandsData,
|
||||
TimestampPacketContainer &previousTimestampPacketNodes);
|
||||
TimestampPacketDependencies ×tampPacketDependencies);
|
||||
};
|
||||
} // namespace NEO
|
||||
|
||||
@@ -54,12 +54,12 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface *(&surfaces)[surfaceCount
|
||||
const cl_event *eventWaitList,
|
||||
cl_event *event) {
|
||||
BuiltInOwnershipWrapper builtInLock;
|
||||
MemObjsForAuxTranslation memObjsForAuxTranslation;
|
||||
MultiDispatchInfo multiDispatchInfo(kernel);
|
||||
|
||||
if (DebugManager.flags.ForceDispatchScheduler.get()) {
|
||||
forceDispatchScheduler(multiDispatchInfo);
|
||||
} else {
|
||||
MemObjsForAuxTranslation memObjsForAuxTranslation;
|
||||
if (kernel->isAuxTranslationRequired()) {
|
||||
auto &builder = getDevice().getExecutionEnvironment()->getBuiltIns()->getBuiltinDispatchInfoBuilder(EBuiltInOps::AuxTranslation, getContext(), getDevice());
|
||||
builtInLock.takeOwnership(builder, this->context);
|
||||
@@ -189,8 +189,7 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
blocking = true;
|
||||
}
|
||||
|
||||
TimestampPacketContainer previousTimestampPacketNodes;
|
||||
TimestampPacketContainer barrierTimestampPacketNode;
|
||||
TimestampPacketDependencies timestampPacketDependencies;
|
||||
EventsRequest eventsRequest(numEventsInWaitList, eventWaitList, event);
|
||||
CsrDependencies csrDeps;
|
||||
BlitPropertiesContainer blitPropertiesContainer;
|
||||
@@ -207,12 +206,12 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
|
||||
if (blitEnqueue && !blockQueue && getGpgpuCommandStreamReceiver().isStallingPipeControlOnNextFlushRequired()) {
|
||||
auto allocator = getGpgpuCommandStreamReceiver().getTimestampPacketAllocator();
|
||||
barrierTimestampPacketNode.add(allocator->getTag());
|
||||
timestampPacketDependencies.barrierNodes.add(allocator->getTag());
|
||||
}
|
||||
|
||||
if (nodesCount > 0) {
|
||||
obtainNewTimestampPacketNodes(nodesCount, previousTimestampPacketNodes, clearAllDependencies);
|
||||
csrDeps.push_back(&previousTimestampPacketNodes);
|
||||
obtainNewTimestampPacketNodes(nodesCount, timestampPacketDependencies.previousEnqueueNodes, clearAllDependencies);
|
||||
csrDeps.push_back(×tampPacketDependencies.previousEnqueueNodes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,12 +226,12 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
bool flushDependenciesForNonKernelCommand = false;
|
||||
|
||||
if (blitEnqueue) {
|
||||
blitPropertiesContainer.push_back(processDispatchForBlitEnqueue(multiDispatchInfo, previousTimestampPacketNodes, barrierTimestampPacketNode,
|
||||
blitPropertiesContainer.push_back(processDispatchForBlitEnqueue(multiDispatchInfo, timestampPacketDependencies,
|
||||
eventsRequest, commandStream, commandType, blockQueue));
|
||||
} else if (multiDispatchInfo.empty() == false) {
|
||||
processDispatchForKernels<commandType>(multiDispatchInfo, printfHandler, eventBuilder.getEvent(),
|
||||
hwTimeStamps, blockQueue, devQueueHw, csrDeps, blockedCommandsData.get(),
|
||||
previousTimestampPacketNodes);
|
||||
timestampPacketDependencies);
|
||||
} else if (isCacheFlushCommand(commandType)) {
|
||||
processDispatchForCacheFlush(surfacesForResidency, numSurfaceForResidency, &commandStream, csrDeps);
|
||||
} else if (getGpgpuCommandStreamReceiver().peekTimestampPacketWriteEnabled()) {
|
||||
@@ -274,7 +273,7 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
commandStreamStart,
|
||||
blocking,
|
||||
multiDispatchInfo,
|
||||
&previousTimestampPacketNodes,
|
||||
timestampPacketDependencies,
|
||||
eventsRequest,
|
||||
eventBuilder,
|
||||
taskLevel,
|
||||
@@ -296,8 +295,7 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
commandStreamStart,
|
||||
blocking,
|
||||
enqueueProperties,
|
||||
&previousTimestampPacketNodes,
|
||||
barrierTimestampPacketNode,
|
||||
timestampPacketDependencies,
|
||||
eventsRequest,
|
||||
eventBuilder,
|
||||
taskLevel);
|
||||
@@ -345,7 +343,7 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
||||
surfacesForResidency,
|
||||
numSurfaceForResidency,
|
||||
multiDispatchInfo,
|
||||
previousTimestampPacketNodes,
|
||||
timestampPacketDependencies.previousEnqueueNodes,
|
||||
blockedCommandsData,
|
||||
enqueueProperties,
|
||||
eventsRequest,
|
||||
@@ -380,7 +378,7 @@ void CommandQueueHw<GfxFamily>::processDispatchForKernels(const MultiDispatchInf
|
||||
DeviceQueueHw<GfxFamily> *devQueueHw,
|
||||
CsrDependencies &csrDeps,
|
||||
KernelOperation *blockedCommandsData,
|
||||
TimestampPacketContainer &previousTimestampPacketNodes) {
|
||||
TimestampPacketDependencies ×tampPacketDependencies) {
|
||||
TagNode<HwPerfCounter> *hwPerfCounter = nullptr;
|
||||
DebugManager.dumpKernelArgs(&multiDispatchInfo);
|
||||
|
||||
@@ -422,7 +420,7 @@ void CommandQueueHw<GfxFamily>::processDispatchForKernels(const MultiDispatchInf
|
||||
blockedCommandsData,
|
||||
hwTimeStamps,
|
||||
hwPerfCounter,
|
||||
&previousTimestampPacketNodes,
|
||||
×tampPacketDependencies,
|
||||
timestampPacketContainer.get(),
|
||||
commandType);
|
||||
|
||||
@@ -439,8 +437,7 @@ void CommandQueueHw<GfxFamily>::processDispatchForKernels(const MultiDispatchInf
|
||||
|
||||
template <typename GfxFamily>
|
||||
BlitProperties CommandQueueHw<GfxFamily>::processDispatchForBlitEnqueue(const MultiDispatchInfo &multiDispatchInfo,
|
||||
TimestampPacketContainer &previousTimestampPacketNodes,
|
||||
TimestampPacketContainer &barrierTimestampPacketNode,
|
||||
TimestampPacketDependencies ×tampPacketDependencies,
|
||||
const EventsRequest &eventsRequest, LinearStream &commandStream,
|
||||
uint32_t commandType, bool queueBlocked) {
|
||||
auto blitDirection = BlitProperties::obtainBlitDirection(commandType);
|
||||
@@ -453,8 +450,8 @@ BlitProperties CommandQueueHw<GfxFamily>::processDispatchForBlitEnqueue(const Mu
|
||||
blitProperties.csrDependencies.fillFromEventsRequest(eventsRequest, *blitCommandStreamReceiver,
|
||||
CsrDependencies::DependenciesType::All);
|
||||
|
||||
blitProperties.csrDependencies.push_back(&previousTimestampPacketNodes);
|
||||
blitProperties.csrDependencies.push_back(&barrierTimestampPacketNode);
|
||||
blitProperties.csrDependencies.push_back(×tampPacketDependencies.previousEnqueueNodes);
|
||||
blitProperties.csrDependencies.push_back(×tampPacketDependencies.barrierNodes);
|
||||
}
|
||||
|
||||
auto currentTimestampPacketNode = timestampPacketContainer->peekNodes().at(0);
|
||||
@@ -581,7 +578,7 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueNonBlocked(
|
||||
size_t commandStreamStart,
|
||||
bool &blocking,
|
||||
const MultiDispatchInfo &multiDispatchInfo,
|
||||
TimestampPacketContainer *previousTimestampPacketNodes,
|
||||
TimestampPacketDependencies ×tampPacketDependencies,
|
||||
EventsRequest &eventsRequest,
|
||||
EventBuilder &eventBuilder,
|
||||
uint32_t taskLevel,
|
||||
@@ -597,7 +594,7 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueNonBlocked(
|
||||
}
|
||||
if (timestampPacketContainer) {
|
||||
timestampPacketContainer->makeResident(getGpgpuCommandStreamReceiver());
|
||||
previousTimestampPacketNodes->makeResident(getGpgpuCommandStreamReceiver());
|
||||
timestampPacketDependencies.previousEnqueueNodes.makeResident(getGpgpuCommandStreamReceiver());
|
||||
}
|
||||
|
||||
bool anyUncacheableArgs = false;
|
||||
@@ -841,15 +838,14 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueCommandWithoutKernel(
|
||||
size_t commandStreamStart,
|
||||
bool &blocking,
|
||||
const EnqueueProperties &enqueueProperties,
|
||||
TimestampPacketContainer *previousTimestampPacketNodes,
|
||||
TimestampPacketContainer &barrierTimestampPacketNodes,
|
||||
TimestampPacketDependencies ×tampPacketDependencies,
|
||||
EventsRequest &eventsRequest,
|
||||
EventBuilder &eventBuilder,
|
||||
uint32_t taskLevel) {
|
||||
|
||||
if (timestampPacketContainer) {
|
||||
timestampPacketContainer->makeResident(getGpgpuCommandStreamReceiver());
|
||||
previousTimestampPacketNodes->makeResident(getGpgpuCommandStreamReceiver());
|
||||
timestampPacketDependencies.previousEnqueueNodes.makeResident(getGpgpuCommandStreamReceiver());
|
||||
}
|
||||
|
||||
for (auto surface : CreateRange(surfaces, surfaceCount)) {
|
||||
@@ -863,7 +859,7 @@ CompletionStamp CommandQueueHw<GfxFamily>::enqueueCommandWithoutKernel(
|
||||
|
||||
DispatchFlags dispatchFlags(
|
||||
{}, //csrDependencies
|
||||
&barrierTimestampPacketNodes, //barrierTimestampPacketNodes
|
||||
×tampPacketDependencies.barrierNodes, //barrierTimestampPacketNodes
|
||||
{}, //pipelineSelectArgs
|
||||
flushStamp->getStampReference(), //flushStampReference
|
||||
QueueThrottle::MEDIUM, //throttle
|
||||
|
||||
@@ -42,7 +42,7 @@ class HardwareInterface {
|
||||
KernelOperation *blockedCommandsData,
|
||||
TagNode<HwTimeStamps> *hwTimeStamps,
|
||||
TagNode<HwPerfCounter> *hwPerfCounter,
|
||||
TimestampPacketContainer *previousTimestampPacketNodes,
|
||||
TimestampPacketDependencies *timestampPacketDependencies,
|
||||
TimestampPacketContainer *currentTimestampPacketNodes,
|
||||
uint32_t commandType);
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ void HardwareInterface<GfxFamily>::dispatchWalker(
|
||||
KernelOperation *blockedCommandsData,
|
||||
TagNode<HwTimeStamps> *hwTimeStamps,
|
||||
TagNode<HwPerfCounter> *hwPerfCounter,
|
||||
TimestampPacketContainer *previousTimestampPacketNodes,
|
||||
TimestampPacketDependencies *timestampPacketDependencies,
|
||||
TimestampPacketContainer *currentTimestampPacketNodes,
|
||||
uint32_t commandType) {
|
||||
|
||||
|
||||
@@ -91,6 +91,11 @@ class TimestampPacketContainer : public NonCopyableClass {
|
||||
std::vector<Node *> timestampPacketNodes;
|
||||
};
|
||||
|
||||
struct TimestampPacketDependencies : public NonCopyableClass {
|
||||
TimestampPacketContainer previousEnqueueNodes;
|
||||
TimestampPacketContainer barrierNodes;
|
||||
};
|
||||
|
||||
struct TimestampPacketHelper {
|
||||
template <typename GfxFamily>
|
||||
static void programSemaphoreWithImplicitDependency(LinearStream &cmdStream, TagNode<TimestampPacketStorage> ×tampPacketNode) {
|
||||
|
||||
Reference in New Issue
Block a user