Pass blitter CSR in blocked queue scenarios
Related-To: NEO-6057 Signed-off-by: Maciej Dziuban <maciej.dziuban@intel.com>
This commit is contained in:
parent
92000bd75b
commit
33ac15dabe
|
@ -398,7 +398,8 @@ class CommandQueueHw : public CommandQueue {
|
|||
const EnqueueProperties &enqueueProperties,
|
||||
EventsRequest &eventsRequest,
|
||||
EventBuilder &externalEventBuilder,
|
||||
std::unique_ptr<PrintfHandler> printfHandler);
|
||||
std::unique_ptr<PrintfHandler> printfHandler,
|
||||
CommandStreamReceiver *bcsCsr);
|
||||
|
||||
CompletionStamp enqueueCommandWithoutKernel(Surface **surfaces,
|
||||
size_t surfaceCount,
|
||||
|
|
|
@ -397,7 +397,8 @@ void CommandQueueHw<GfxFamily>::enqueueHandler(Surface **surfacesForResidency,
|
|||
enqueueProperties,
|
||||
eventsRequest,
|
||||
eventBuilder,
|
||||
std::move(printfHandler));
|
||||
std::move(printfHandler),
|
||||
nullptr);
|
||||
}
|
||||
|
||||
if (deferredTimestampPackets.get()) {
|
||||
|
@ -942,7 +943,8 @@ void CommandQueueHw<GfxFamily>::enqueueBlocked(
|
|||
const EnqueueProperties &enqueueProperties,
|
||||
EventsRequest &eventsRequest,
|
||||
EventBuilder &externalEventBuilder,
|
||||
std::unique_ptr<PrintfHandler> printfHandler) {
|
||||
std::unique_ptr<PrintfHandler> printfHandler,
|
||||
CommandStreamReceiver *bcsCsr) {
|
||||
|
||||
TakeOwnershipWrapper<CommandQueueHw<GfxFamily>> queueOwnership(*this);
|
||||
|
||||
|
@ -975,6 +977,7 @@ void CommandQueueHw<GfxFamily>::enqueueBlocked(
|
|||
if (blockedCommandsData) {
|
||||
if (enqueueProperties.blitPropertiesContainer) {
|
||||
blockedCommandsData->blitPropertiesContainer = *enqueueProperties.blitPropertiesContainer;
|
||||
blockedCommandsData->bcsCsr = bcsCsr;
|
||||
blockedCommandsData->blitEnqueue = true;
|
||||
}
|
||||
|
||||
|
@ -1233,7 +1236,7 @@ void CommandQueueHw<GfxFamily>::enqueueBlit(const MultiDispatchInfo &multiDispat
|
|||
updateFromCompletionStamp(completionStamp, eventBuilder.getEvent());
|
||||
|
||||
if (blockQueue) {
|
||||
enqueueBlocked(cmdType, nullptr, 0, multiDispatchInfo, timestampPacketDependencies, blockedCommandsData, enqueueProperties, eventsRequest, eventBuilder, nullptr);
|
||||
enqueueBlocked(cmdType, nullptr, 0, multiDispatchInfo, timestampPacketDependencies, blockedCommandsData, enqueueProperties, eventsRequest, eventBuilder, nullptr, &bcsCsr);
|
||||
}
|
||||
|
||||
timestampPacketDependencies.moveNodesToNewContainer(*deferredTimestampPackets);
|
||||
|
|
|
@ -204,7 +204,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate
|
|||
}
|
||||
|
||||
if (kernelOperation->blitPropertiesContainer.size() > 0) {
|
||||
auto &bcsCsr = *commandQueue.getBcsCommandStreamReceiver();
|
||||
auto &bcsCsr = *commandQueue.getBcsForAuxTranslation();
|
||||
CsrDependencies csrDeps;
|
||||
eventsRequest.fillCsrDependenciesForTimestampPacketContainer(csrDeps, bcsCsr, CsrDependencies::DependenciesType::All);
|
||||
|
||||
|
@ -287,7 +287,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate
|
|||
commandQueue.getDevice());
|
||||
|
||||
if (kernelOperation->blitPropertiesContainer.size() > 0) {
|
||||
auto bcsTaskCount = commandQueue.getBcsCommandStreamReceiver()->blitBuffer(kernelOperation->blitPropertiesContainer, false, commandQueue.isProfilingEnabled(), commandQueue.getDevice());
|
||||
auto bcsTaskCount = commandQueue.getBcsForAuxTranslation()->blitBuffer(kernelOperation->blitPropertiesContainer, false, commandQueue.isProfilingEnabled(), commandQueue.getDevice());
|
||||
commandQueue.updateBcsTaskCount(bcsTaskCount);
|
||||
}
|
||||
commandQueue.updateLatestSentEnqueueType(EnqueueProperties::Operation::GpuKernel);
|
||||
|
@ -310,7 +310,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate
|
|||
}
|
||||
|
||||
void CommandWithoutKernel::dispatchBlitOperation() {
|
||||
auto bcsCsr = commandQueue.getBcsCommandStreamReceiver();
|
||||
auto bcsCsr = kernelOperation->bcsCsr;
|
||||
UNRECOVERABLE_IF(bcsCsr == nullptr);
|
||||
|
||||
UNRECOVERABLE_IF(kernelOperation->blitPropertiesContainer.size() != 1);
|
||||
|
|
|
@ -76,6 +76,7 @@ struct KernelOperation {
|
|||
IndirectHeapUniquePtrT ioh{nullptr, resourceCleaner};
|
||||
IndirectHeapUniquePtrT ssh{nullptr, resourceCleaner};
|
||||
|
||||
CommandStreamReceiver *bcsCsr = nullptr;
|
||||
BlitPropertiesContainer blitPropertiesContainer;
|
||||
bool blitEnqueue = false;
|
||||
size_t surfaceStateHeapSizeEM = 0;
|
||||
|
|
|
@ -157,7 +157,7 @@ HWTEST_F(EnqueueHandlerTest, givenNonBlitPropertyWhenEnqueueIsBlockedThenDontReg
|
|||
Surface *surfaces[] = {nullptr};
|
||||
mockCmdQ->enqueueBlocked(CL_COMMAND_MARKER, surfaces, size_t(0), multiDispatchInfo, timestampPacketDependencies,
|
||||
blockedCommandsData, enqueuePropertiesForDependencyFlush, eventsRequest,
|
||||
eventBuilder, std::unique_ptr<PrintfHandler>(nullptr));
|
||||
eventBuilder, std::unique_ptr<PrintfHandler>(nullptr), nullptr);
|
||||
EXPECT_FALSE(blockedCommandsDataForDependencyFlush->blitEnqueue);
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ HWTEST_F(EnqueueHandlerTest, givenBlitPropertyWhenEnqueueIsBlockedThenRegisterBl
|
|||
Surface *surfaces[] = {nullptr};
|
||||
mockCmdQ->enqueueBlocked(CL_COMMAND_READ_BUFFER, surfaces, size_t(0), multiDispatchInfo, timestampPacketDependencies,
|
||||
blockedCommandsData, enqueuePropertiesForBlitEnqueue, eventsRequest,
|
||||
eventBuilder, std::unique_ptr<PrintfHandler>(nullptr));
|
||||
eventBuilder, std::unique_ptr<PrintfHandler>(nullptr), mockCmdQ->getBcsCommandStreamReceiver());
|
||||
EXPECT_TRUE(blockedCommandsDataForBlitEnqueue->blitEnqueue);
|
||||
EXPECT_EQ(blitProperties.srcAllocation, blockedCommandsDataForBlitEnqueue->blitPropertiesContainer.begin()->srcAllocation);
|
||||
EXPECT_EQ(blitProperties.dstAllocation, blockedCommandsDataForBlitEnqueue->blitPropertiesContainer.begin()->dstAllocation);
|
||||
|
|
Loading…
Reference in New Issue