mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-07 21:27:04 +08:00
Add missing cache flush for blocked path
Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
fca0d03c90
commit
0c49fa8203
@@ -253,6 +253,55 @@ HWTEST_F(DispatchFlagsTests, givenCommandComputeKernelWhenSubmitThenPassCorrectD
|
||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.epilogueRequired);
|
||||
}
|
||||
|
||||
HWTEST_F(DispatchFlagsTests, givenClCommandCopyImageWhenSubmitThenFlushTextureCacheHasProperValue) {
|
||||
using CsrType = MockCsr1<FamilyType>;
|
||||
SetUpImpl<CsrType>();
|
||||
auto mockCmdQ = std::make_unique<MockCommandQueueHw<FamilyType>>(context.get(), device.get(), nullptr);
|
||||
auto mockCsr = static_cast<CsrType *>(&mockCmdQ->getGpgpuCommandStreamReceiver());
|
||||
|
||||
IndirectHeap *ih1 = nullptr, *ih2 = nullptr, *ih3 = nullptr;
|
||||
mockCmdQ->allocateHeapMemory(IndirectHeap::DYNAMIC_STATE, 1, ih1);
|
||||
mockCmdQ->allocateHeapMemory(IndirectHeap::INDIRECT_OBJECT, 1, ih2);
|
||||
mockCmdQ->allocateHeapMemory(IndirectHeap::SURFACE_STATE, 1, ih3);
|
||||
|
||||
PreemptionMode preemptionMode = device->getPreemptionMode();
|
||||
auto cmdStream = new LinearStream(device->getMemoryManager()->allocateGraphicsMemoryWithProperties({device->getRootDeviceIndex(), 1, GraphicsAllocation::AllocationType::COMMAND_BUFFER, device->getDeviceBitfield()}));
|
||||
|
||||
std::vector<Surface *> surfaces;
|
||||
auto kernelOperation = std::make_unique<KernelOperation>(cmdStream, *mockCmdQ->getGpgpuCommandStreamReceiver().getInternalAllocationStorage());
|
||||
MockKernelWithInternals kernel(*device);
|
||||
kernelOperation->setHeaps(ih1, ih2, ih3);
|
||||
|
||||
bool flushDC = false;
|
||||
bool slmUsed = false;
|
||||
uint32_t commandType = CL_COMMAND_COPY_IMAGE;
|
||||
bool requiresCoherency = false;
|
||||
for (auto &surface : surfaces) {
|
||||
requiresCoherency |= surface->IsCoherent;
|
||||
}
|
||||
std::unique_ptr<Command> command(new CommandComputeKernel(*mockCmdQ, kernelOperation, surfaces, flushDC, slmUsed, commandType, nullptr, preemptionMode, kernel, 1));
|
||||
command->submit(20, false);
|
||||
|
||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.pipelineSelectArgs.specialPipelineSelectMode);
|
||||
EXPECT_EQ(kernel.mockKernel->isVmeKernel(), mockCsr->passedDispatchFlags.pipelineSelectArgs.mediaSamplerRequired);
|
||||
EXPECT_EQ(mockCmdQ->flushStamp->getStampReference(), mockCsr->passedDispatchFlags.flushStampReference);
|
||||
EXPECT_EQ(mockCmdQ->getThrottle(), mockCsr->passedDispatchFlags.throttle);
|
||||
EXPECT_EQ(preemptionMode, mockCsr->passedDispatchFlags.preemptionMode);
|
||||
EXPECT_EQ(kernel.mockKernel->getKernelInfo().kernelDescriptor.kernelAttributes.numGrfRequired, mockCsr->passedDispatchFlags.numGrfRequired);
|
||||
EXPECT_EQ(L3CachingSettings::l3CacheOn, mockCsr->passedDispatchFlags.l3CacheSettings);
|
||||
EXPECT_TRUE(mockCsr->passedDispatchFlags.blocking);
|
||||
EXPECT_EQ(flushDC, mockCsr->passedDispatchFlags.dcFlush);
|
||||
EXPECT_EQ(mockCmdQ->isTextureCacheFlushNeeded(commandType), mockCsr->passedDispatchFlags.textureCacheFlush);
|
||||
EXPECT_EQ(slmUsed, mockCsr->passedDispatchFlags.useSLM);
|
||||
EXPECT_TRUE(mockCsr->passedDispatchFlags.guardCommandBufferWithPipeControl);
|
||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.gsba32BitRequired);
|
||||
EXPECT_EQ(requiresCoherency, mockCsr->passedDispatchFlags.requiresCoherency);
|
||||
EXPECT_EQ(mockCmdQ->getPriority() == QueuePriority::LOW, mockCsr->passedDispatchFlags.lowPriority);
|
||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.implicitFlush);
|
||||
EXPECT_EQ(mockCmdQ->getGpgpuCommandStreamReceiver().isNTo1SubmissionModelEnabled(), mockCsr->passedDispatchFlags.outOfOrderExecutionAllowed);
|
||||
EXPECT_FALSE(mockCsr->passedDispatchFlags.epilogueRequired);
|
||||
}
|
||||
|
||||
HWTEST_F(DispatchFlagsTests, givenCommandWithoutKernelWhenSubmitThenPassCorrectDispatchFlags) {
|
||||
using CsrType = MockCsr1<FamilyType>;
|
||||
SetUpImpl<CsrType>();
|
||||
|
||||
Reference in New Issue
Block a user