mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
feat(ocl): move dependencies programming
Move out of csr dependencies programming to queue stream. Correct method fillCsrDependenciesForTimestampPacketContainer. Related-To: NEO-7321 Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
2744501176
commit
22d7c2ea28
@@ -39,16 +39,21 @@ void EventsRequest::fillCsrDependenciesForTimestampPacketContainer(CsrDependenci
|
||||
continue;
|
||||
}
|
||||
|
||||
auto sameRootDevice = event->getCommandQueue()->getClDevice().getRootDeviceIndex() == currentCsr.getRootDeviceIndex();
|
||||
const auto sameRootDevice = event->getCommandQueue()->getClDevice().getRootDeviceIndex() == currentCsr.getRootDeviceIndex();
|
||||
if (!sameRootDevice) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto &dependentCsr = event->getCommandQueue()->getGpgpuCommandStreamReceiver();
|
||||
auto sameCsr = (&dependentCsr == ¤tCsr);
|
||||
bool pushDependency = (CsrDependencies::DependenciesType::OnCsr == depsType && sameCsr) ||
|
||||
(CsrDependencies::DependenciesType::OutOfCsr == depsType && !sameCsr) ||
|
||||
(CsrDependencies::DependenciesType::All == depsType);
|
||||
CommandStreamReceiver *dependentCsr;
|
||||
if (event->isBcsEvent()) {
|
||||
dependentCsr = event->getCommandQueue()->getBcsCommandStreamReceiver(event->getBcsEngineType());
|
||||
} else {
|
||||
dependentCsr = &event->getCommandQueue()->getGpgpuCommandStreamReceiver();
|
||||
}
|
||||
const auto sameCsr = (dependentCsr == ¤tCsr);
|
||||
const auto pushDependency = (CsrDependencies::DependenciesType::OnCsr == depsType && sameCsr) ||
|
||||
(CsrDependencies::DependenciesType::OutOfCsr == depsType && !sameCsr) ||
|
||||
(CsrDependencies::DependenciesType::All == depsType);
|
||||
|
||||
if (pushDependency) {
|
||||
csrDeps.timestampPacketContainer.push_back(timestampPacketContainer);
|
||||
@@ -56,9 +61,9 @@ void EventsRequest::fillCsrDependenciesForTimestampPacketContainer(CsrDependenci
|
||||
if (!sameCsr) {
|
||||
const auto &productHelper = event->getCommandQueue()->getDevice().getProductHelper();
|
||||
if (productHelper.isDcFlushAllowed()) {
|
||||
if (!dependentCsr.isLatestTaskCountFlushed()) {
|
||||
flushDependentCsr(dependentCsr, csrDeps);
|
||||
currentCsr.makeResident(*dependentCsr.getTagAllocation());
|
||||
if (!dependentCsr->isLatestTaskCountFlushed()) {
|
||||
flushDependentCsr(*dependentCsr, csrDeps);
|
||||
currentCsr.makeResident(*dependentCsr->getTagAllocation());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,7 +227,6 @@ CompletionStamp &CommandComputeKernel::submit(TaskCountType taskLevel, bool term
|
||||
const bool isHandlingBarrier = commandQueue.getGpgpuCommandStreamReceiver().isStallingCommandsOnNextFlushRequired();
|
||||
|
||||
if (timestampPacketDependencies) {
|
||||
eventsRequest.fillCsrDependenciesForTimestampPacketContainer(dispatchFlags.csrDependencies, commandStreamReceiver, CsrDependencies::DependenciesType::OutOfCsr);
|
||||
if (isHandlingBarrier) {
|
||||
commandQueue.fillCsrDependenciesWithLastBcsPackets(dispatchFlags.csrDependencies);
|
||||
}
|
||||
@@ -403,7 +402,6 @@ CompletionStamp &CommandWithoutKernel::submit(TaskCountType taskLevel, bool term
|
||||
const bool isHandlingBarrier = commandQueue.getGpgpuCommandStreamReceiver().isStallingCommandsOnNextFlushRequired();
|
||||
|
||||
if (commandStreamReceiver.peekTimestampPacketWriteEnabled()) {
|
||||
eventsRequest.fillCsrDependenciesForTimestampPacketContainer(dispatchFlags.csrDependencies, commandStreamReceiver, CsrDependencies::DependenciesType::OutOfCsr);
|
||||
if (isHandlingBarrier) {
|
||||
commandQueue.fillCsrDependenciesWithLastBcsPackets(dispatchFlags.csrDependencies);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user