Fix setting mediaSamplerRequired dispatch flag
Change-Id: Ie5d1100c34183ca970c99a5f46ce7866a7108ebc
This commit is contained in:
parent
f64f9c7c99
commit
562ededffe
|
@ -223,6 +223,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate
|
|||
dispatchFlags.lowPriority = commandQueue.getPriority() == QueuePriority::LOW;
|
||||
dispatchFlags.throttle = commandQueue.getThrottle();
|
||||
dispatchFlags.preemptionMode = preemptionMode;
|
||||
dispatchFlags.mediaSamplerRequired = (kernel != nullptr) ? kernel->isVmeKernel() : false;
|
||||
|
||||
DEBUG_BREAK_IF(taskLevel >= Event::eventNotReady);
|
||||
|
||||
|
|
|
@ -27,6 +27,74 @@
|
|||
using namespace OCLRT;
|
||||
typedef MediaKernelFixture<HelloWorldFixtureFactory> MediaKernelTest;
|
||||
|
||||
GEN9TEST_F(MediaKernelTest, givenGen9CsrWhenEnqueueBlockedVmeKernelFirstTimeThenProgramPipelineSelectionAndMediaSampler) {
|
||||
typedef typename SKLFamily::PIPELINE_SELECT PIPELINE_SELECT;
|
||||
|
||||
cl_uint workDim = 1;
|
||||
size_t globalWorkOffset[3] = {0, 0, 0};
|
||||
size_t globalWorkSize[3] = {1, 1, 1};
|
||||
|
||||
UserEvent userEvent(context);
|
||||
cl_event blockedEvent = &userEvent;
|
||||
|
||||
auto retVal = pCmdQ->enqueueKernel(
|
||||
pVmeKernel,
|
||||
workDim,
|
||||
globalWorkOffset,
|
||||
globalWorkSize,
|
||||
nullptr,
|
||||
1,
|
||||
&blockedEvent,
|
||||
nullptr);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
userEvent.setStatus(CL_COMPLETE);
|
||||
|
||||
parseCommands<SKLFamily>(*pCmdQ);
|
||||
ASSERT_NE(cmdPipelineSelect, nullptr);
|
||||
auto *pCmd = genCmdCast<PIPELINE_SELECT *>(cmdPipelineSelect);
|
||||
|
||||
auto expectedMask = pipelineSelectEnablePipelineSelectMaskBits | pipelineSelectMediaSamplerDopClockGateMaskBits;
|
||||
auto expectedPipelineSelection = PIPELINE_SELECT::PIPELINE_SELECTION_GPGPU;
|
||||
EXPECT_EQ(expectedMask, pCmd->getMaskBits());
|
||||
EXPECT_EQ(expectedPipelineSelection, pCmd->getPipelineSelection());
|
||||
EXPECT_FALSE(pCmd->getMediaSamplerDopClockGateEnable());
|
||||
}
|
||||
|
||||
GEN9TEST_F(MediaKernelTest, givenGen9CsrWhenEnqueueBlockedNonVmeKernelFirstTimeThenProgramPipelineSelectionAndMediaSampler) {
|
||||
typedef typename SKLFamily::PIPELINE_SELECT PIPELINE_SELECT;
|
||||
|
||||
cl_uint workDim = 1;
|
||||
size_t globalWorkOffset[3] = {0, 0, 0};
|
||||
size_t globalWorkSize[3] = {1, 1, 1};
|
||||
|
||||
UserEvent userEvent(context);
|
||||
cl_event blockedEvent = &userEvent;
|
||||
|
||||
auto retVal = pCmdQ->enqueueKernel(
|
||||
pKernel,
|
||||
workDim,
|
||||
globalWorkOffset,
|
||||
globalWorkSize,
|
||||
nullptr,
|
||||
1,
|
||||
&blockedEvent,
|
||||
nullptr);
|
||||
ASSERT_EQ(CL_SUCCESS, retVal);
|
||||
|
||||
userEvent.setStatus(CL_COMPLETE);
|
||||
|
||||
parseCommands<SKLFamily>(*pCmdQ);
|
||||
ASSERT_NE(cmdPipelineSelect, nullptr);
|
||||
auto *pCmd = genCmdCast<PIPELINE_SELECT *>(cmdPipelineSelect);
|
||||
|
||||
auto expectedMask = pipelineSelectEnablePipelineSelectMaskBits | pipelineSelectMediaSamplerDopClockGateMaskBits;
|
||||
auto expectedPipelineSelection = PIPELINE_SELECT::PIPELINE_SELECTION_GPGPU;
|
||||
EXPECT_EQ(expectedMask, pCmd->getMaskBits());
|
||||
EXPECT_EQ(expectedPipelineSelection, pCmd->getPipelineSelection());
|
||||
EXPECT_TRUE(pCmd->getMediaSamplerDopClockGateEnable());
|
||||
}
|
||||
|
||||
GEN9TEST_F(MediaKernelTest, givenGen9CsrWhenEnqueueVmeKernelFirstTimeThenProgramPipelineSelectionAndMediaSampler) {
|
||||
typedef typename SKLFamily::PIPELINE_SELECT PIPELINE_SELECT;
|
||||
enqueueVmeKernel<SKLFamily>();
|
||||
|
|
Loading…
Reference in New Issue