diff --git a/level_zero/core/source/cmdqueue/cmdqueue_hw.inl b/level_zero/core/source/cmdqueue/cmdqueue_hw.inl index c6e337f646..8924c87d8c 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue_hw.inl +++ b/level_zero/core/source/cmdqueue/cmdqueue_hw.inl @@ -369,7 +369,8 @@ void CommandQueueHw::programFrontEnd(uint64_t scratchAddress, NEO scratchAddress, device->getMaxNumHwThreads(), csr->getOsContext().getEngineType(), - NEO::AdditionalKernelExecInfo::NotApplicable); + NEO::AdditionalKernelExecInfo::NotApplicable, + NEO::KernelExecutionType::NotApplicable); frontEndInit = true; } diff --git a/opencl/source/command_queue/enqueue_common.h b/opencl/source/command_queue/enqueue_common.h index acc3c97b15..221708dcd2 100644 --- a/opencl/source/command_queue/enqueue_common.h +++ b/opencl/source/command_queue/enqueue_common.h @@ -742,6 +742,7 @@ CompletionStamp CommandQueueHw::enqueueNonBlocked( L3CachingSettings::l3CacheOn, //l3CacheSettings kernel->getThreadArbitrationPolicy(), //threadArbitrationPolicy kernel->getAdditionalKernelExecInfo(), //additionalKernelExecInfo + kernel->getExecutionType(), //kernelExecutionType getSliceCount(), //sliceCount blocking, //blocking shouldFlushDC(commandType, printfHandler) || allocNeedsFlushDC, //dcFlush @@ -955,6 +956,7 @@ CompletionStamp CommandQueueHw::enqueueCommandWithoutKernel( L3CachingSettings::NotApplicable, //l3CacheSettings ThreadArbitrationPolicy::NotPresent, //threadArbitrationPolicy AdditionalKernelExecInfo::NotApplicable, //additionalKernelExecInfo + KernelExecutionType::NotApplicable, //kernelExecutionType getSliceCount(), //sliceCount blocking, //blocking false, //dcFlush diff --git a/opencl/source/device_queue/device_queue_hw_bdw_plus.inl b/opencl/source/device_queue/device_queue_hw_bdw_plus.inl index 30754f12c6..20a97984fd 100644 --- a/opencl/source/device_queue/device_queue_hw_bdw_plus.inl +++ b/opencl/source/device_queue/device_queue_hw_bdw_plus.inl @@ -130,7 +130,9 @@ void DeviceQueueHw::addMediaStateClearCmds() { addDcFlushToPipeControlWa(pipeControl); - PreambleHelper::programVFEState(&slbCS, device->getHardwareInfo(), 0u, 0, device->getSharedDeviceInfo().maxFrontEndThreads, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&slbCS, device->getHardwareInfo(), 0u, 0, device->getSharedDeviceInfo().maxFrontEndThreads, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); } template diff --git a/opencl/source/helpers/task_information.cpp b/opencl/source/helpers/task_information.cpp index a6fc045c51..aa642bd94f 100644 --- a/opencl/source/helpers/task_information.cpp +++ b/opencl/source/helpers/task_information.cpp @@ -61,6 +61,7 @@ CompletionStamp &CommandMapUnmap::submit(uint32_t taskLevel, bool terminated) { L3CachingSettings::NotApplicable, //l3CacheSettings ThreadArbitrationPolicy::NotPresent, //threadArbitrationPolicy AdditionalKernelExecInfo::NotApplicable, //additionalKernelExecInfo + KernelExecutionType::NotApplicable, //kernelExecutionType commandQueue.getSliceCount(), //sliceCount true, //blocking true, //dcFlush @@ -219,6 +220,7 @@ CompletionStamp &CommandComputeKernel::submit(uint32_t taskLevel, bool terminate L3CachingSettings::l3CacheOn, //l3CacheSettings kernel->getThreadArbitrationPolicy(), //threadArbitrationPolicy kernel->getAdditionalKernelExecInfo(), //additionalKernelExecInfo + kernel->getExecutionType(), //kernelExecutionType commandQueue.getSliceCount(), //sliceCount true, //blocking flushDC, //dcFlush @@ -340,6 +342,7 @@ CompletionStamp &CommandWithoutKernel::submit(uint32_t taskLevel, bool terminate L3CachingSettings::NotApplicable, //l3CacheSettings ThreadArbitrationPolicy::NotPresent, //threadArbitrationPolicy AdditionalKernelExecInfo::NotApplicable, //additionalKernelExecInfo + KernelExecutionType::NotApplicable, //kernelExecutionType commandQueue.getSliceCount(), //sliceCount true, //blocking false, //dcFlush diff --git a/opencl/source/kernel/kernel_execution_type.h b/opencl/source/kernel/kernel_execution_type.h index d9d4746af9..8da6b84c78 100644 --- a/opencl/source/kernel/kernel_execution_type.h +++ b/opencl/source/kernel/kernel_execution_type.h @@ -10,6 +10,7 @@ namespace NEO { enum class KernelExecutionType { Default = 0x0u, - Concurrent = 0x1u + Concurrent = 0x1u, + NotApplicable = 0x2u }; } // namespace NEO diff --git a/opencl/test/unit_test/command_queue/command_queue_tests.cpp b/opencl/test/unit_test/command_queue/command_queue_tests.cpp index 693d1232e1..d50605330d 100644 --- a/opencl/test/unit_test/command_queue/command_queue_tests.cpp +++ b/opencl/test/unit_test/command_queue/command_queue_tests.cpp @@ -16,12 +16,14 @@ #include "opencl/source/command_queue/command_queue_hw.h" #include "opencl/source/event/event.h" +#include "opencl/source/event/user_event.h" #include "opencl/source/helpers/hardware_commands_helper.h" #include "opencl/test/unit_test/command_queue/command_queue_fixture.h" #include "opencl/test/unit_test/command_stream/command_stream_fixture.h" #include "opencl/test/unit_test/fixtures/buffer_fixture.h" #include "opencl/test/unit_test/fixtures/cl_device_fixture.h" #include "opencl/test/unit_test/fixtures/context_fixture.h" +#include "opencl/test/unit_test/fixtures/dispatch_flags_fixture.h" #include "opencl/test/unit_test/fixtures/image_fixture.h" #include "opencl/test/unit_test/fixtures/memory_management_fixture.h" #include "opencl/test/unit_test/helpers/unit_test_helper.h" @@ -1212,3 +1214,62 @@ TEST(CommandQueue, givenCopySizeAndOffsetWhenCallingBlitEnqueueImageAllowedThenR EXPECT_EQ(expectedResult, queue.blitEnqueueImageAllowed(origin, region)); } } + +using KernelExecutionTypesTests = DispatchFlagsTests; +HWTEST_F(KernelExecutionTypesTests, givenConcurrentKernelWhileDoingNonBlockedEnqueueThenCorrectKernelTypeIsSetInCSR) { + using CsrType = MockCsrHw2; + SetUpImpl(); + auto mockCmdQ = std::make_unique>(context.get(), device.get(), nullptr); + MockKernelWithInternals mockKernelWithInternals(*device.get()); + auto pKernel = mockKernelWithInternals.mockKernel; + + pKernel->setKernelExecutionType(CL_KERNEL_EXEC_INFO_CONCURRENT_TYPE_INTEL); + size_t gws[3] = {63, 0, 0}; + + mockCmdQ->enqueueKernel(pKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr); + + auto &mockCsr = device->getUltCommandStreamReceiver(); + EXPECT_EQ(mockCsr.lastKernelExecutionType, KernelExecutionType::Concurrent); +} + +HWTEST_F(KernelExecutionTypesTests, givenKernelWithDifferentExecutionTypeWhileDoingNonBlockedEnqueueThenKernelTypeInCSRIsChanging) { + using CsrType = MockCsrHw2; + SetUpImpl(); + auto mockCmdQ = std::make_unique>(context.get(), device.get(), nullptr); + MockKernelWithInternals mockKernelWithInternals(*device.get()); + auto pKernel = mockKernelWithInternals.mockKernel; + size_t gws[3] = {63, 0, 0}; + auto &mockCsr = device->getUltCommandStreamReceiver(); + + pKernel->setKernelExecutionType(CL_KERNEL_EXEC_INFO_CONCURRENT_TYPE_INTEL); + mockCmdQ->enqueueKernel(pKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr); + EXPECT_EQ(mockCsr.lastKernelExecutionType, KernelExecutionType::Concurrent); + + mockCmdQ->enqueueMarkerWithWaitList(0, nullptr, nullptr); + EXPECT_EQ(mockCsr.lastKernelExecutionType, KernelExecutionType::Concurrent); + + pKernel->setKernelExecutionType(CL_KERNEL_EXEC_INFO_DEFAULT_TYPE_INTEL); + mockCmdQ->enqueueKernel(pKernel, 1, nullptr, gws, nullptr, 0, nullptr, nullptr); + + EXPECT_EQ(mockCsr.lastKernelExecutionType, KernelExecutionType::Default); +} + +HWTEST_F(KernelExecutionTypesTests, givenConcurrentKernelWhileDoingBlockedEnqueueThenCorrectKernelTypeIsSetInCSR) { + using CsrType = MockCsrHw2; + SetUpImpl(); + auto mockCmdQ = std::make_unique>(context.get(), device.get(), nullptr); + MockKernelWithInternals mockKernelWithInternals(*device.get()); + auto pKernel = mockKernelWithInternals.mockKernel; + + pKernel->setKernelExecutionType(CL_KERNEL_EXEC_INFO_CONCURRENT_TYPE_INTEL); + UserEvent userEvent; + cl_event waitlist[] = {&userEvent}; + size_t gws[3] = {63, 0, 0}; + + mockCmdQ->enqueueKernel(pKernel, 1, nullptr, gws, nullptr, 1, waitlist, nullptr); + userEvent.setStatus(CL_COMPLETE); + + auto &mockCsr = device->getUltCommandStreamReceiver(); + EXPECT_EQ(mockCsr.lastKernelExecutionType, KernelExecutionType::Concurrent); + mockCmdQ->isQueueBlocked(); +} diff --git a/opencl/test/unit_test/command_stream/compute_mode_tests.h b/opencl/test/unit_test/command_stream/compute_mode_tests.h index 903f409a8e..a085b36c2f 100644 --- a/opencl/test/unit_test/command_stream/compute_mode_tests.h +++ b/opencl/test/unit_test/command_stream/compute_mode_tests.h @@ -81,6 +81,6 @@ struct ComputeModeRequirements : public ::testing::Test { CommandStreamReceiver *csr = nullptr; std::unique_ptr device; - DispatchFlags flags{{}, nullptr, {}, nullptr, QueueThrottle::MEDIUM, PreemptionMode::Disabled, GrfConfig::DefaultGrfNumber, L3CachingSettings::l3CacheOn, ThreadArbitrationPolicy::NotPresent, AdditionalKernelExecInfo::NotApplicable, QueueSliceCount::defaultSliceCount, false, false, false, false, false, false, false, false, false, false, false}; + DispatchFlags flags{{}, nullptr, {}, nullptr, QueueThrottle::MEDIUM, PreemptionMode::Disabled, GrfConfig::DefaultGrfNumber, L3CachingSettings::l3CacheOn, ThreadArbitrationPolicy::NotPresent, AdditionalKernelExecInfo::NotApplicable, KernelExecutionType::NotApplicable, QueueSliceCount::defaultSliceCount, false, false, false, false, false, false, false, false, false, false, false}; GraphicsAllocation *alloc = nullptr; }; diff --git a/opencl/test/unit_test/libult/ult_command_stream_receiver.h b/opencl/test/unit_test/libult/ult_command_stream_receiver.h index 95e3722a05..cf3a65d05a 100644 --- a/opencl/test/unit_test/libult/ult_command_stream_receiver.h +++ b/opencl/test/unit_test/libult/ult_command_stream_receiver.h @@ -69,6 +69,7 @@ class UltCommandStreamReceiver : public CommandStreamReceiverHw, publ using BaseClass::CommandStreamReceiver::isEnginePrologueSent; using BaseClass::CommandStreamReceiver::isPreambleSent; using BaseClass::CommandStreamReceiver::isStateSipSent; + using BaseClass::CommandStreamReceiver::lastKernelExecutionType; using BaseClass::CommandStreamReceiver::lastMediaSamplerConfig; using BaseClass::CommandStreamReceiver::lastPreemptionMode; using BaseClass::CommandStreamReceiver::lastSentCoherencyRequest; diff --git a/shared/source/command_stream/command_stream_receiver.h b/shared/source/command_stream/command_stream_receiver.h index 5db669cec9..c1c06a5807 100644 --- a/shared/source/command_stream/command_stream_receiver.h +++ b/shared/source/command_stream/command_stream_receiver.h @@ -287,6 +287,7 @@ class CommandStreamReceiver { uint32_t requiredScratchSize = 0; uint32_t requiredPrivateScratchSize = 0; uint32_t lastAdditionalKernelExecInfo = AdditionalKernelExecInfo::NotSet; + KernelExecutionType lastKernelExecutionType = KernelExecutionType::Default; const uint32_t rootDeviceIndex; const DeviceBitfield deviceBitfield; diff --git a/shared/source/command_stream/command_stream_receiver_hw_base.inl b/shared/source/command_stream/command_stream_receiver_hw_base.inl index fee8e38748..2b99a17af7 100644 --- a/shared/source/command_stream/command_stream_receiver_hw_base.inl +++ b/shared/source/command_stream/command_stream_receiver_hw_base.inl @@ -311,6 +311,10 @@ CompletionStamp CommandStreamReceiverHw::flushTask( setMediaVFEStateDirty(true); } + if (dispatchFlags.kernelExecutionType != KernelExecutionType::NotApplicable && lastKernelExecutionType != dispatchFlags.kernelExecutionType) { + setMediaVFEStateDirty(true); + } + auto &commandStreamCSR = this->getCS(getRequiredCmdStreamSizeAligned(dispatchFlags, device)); auto commandStreamStartCSR = commandStreamCSR.getUsed(); @@ -872,7 +876,10 @@ inline void CommandStreamReceiverHw::programVFEState(LinearStream &cs if (dispatchFlags.additionalKernelExecInfo != AdditionalKernelExecInfo::NotApplicable) { lastAdditionalKernelExecInfo = dispatchFlags.additionalKernelExecInfo; } - auto commandOffset = PreambleHelper::programVFEState(&csr, peekHwInfo(), requiredScratchSize, getScratchPatchAddress(), maxFrontEndThreads, getOsContext().getEngineType(), lastAdditionalKernelExecInfo); + if (dispatchFlags.kernelExecutionType != KernelExecutionType::NotApplicable) { + lastKernelExecutionType = dispatchFlags.kernelExecutionType; + } + auto commandOffset = PreambleHelper::programVFEState(&csr, peekHwInfo(), requiredScratchSize, getScratchPatchAddress(), maxFrontEndThreads, getOsContext().getEngineType(), lastAdditionalKernelExecInfo, lastKernelExecutionType); if (DebugManager.flags.AddPatchInfoCommentsForAUBDump.get()) { flatBatchBufferHelper->collectScratchSpacePatchInfo(getScratchPatchAddress(), commandOffset, csr); } diff --git a/shared/source/command_stream/csr_definitions.h b/shared/source/command_stream/csr_definitions.h index 1ef1d0261d..802054f720 100644 --- a/shared/source/command_stream/csr_definitions.h +++ b/shared/source/command_stream/csr_definitions.h @@ -14,6 +14,8 @@ #include "shared/source/helpers/pipeline_select_args.h" #include "shared/source/kernel/grf_config.h" +#include "opencl/source/kernel/kernel_execution_type.h" + #include "csr_properties_flags.h" #include @@ -50,7 +52,7 @@ struct DispatchFlags { DispatchFlags() = delete; DispatchFlags(CsrDependencies csrDependencies, TimestampPacketContainer *barrierTimestampPacketNodes, PipelineSelectArgs pipelineSelectArgs, FlushStampTrackingObj *flushStampReference, QueueThrottle throttle, PreemptionMode preemptionMode, uint32_t numGrfRequired, - uint32_t l3CacheSettings, uint32_t threadArbitrationPolicy, uint32_t additionalKernelExecInfo, uint64_t sliceCount, bool blocking, bool dcFlush, + uint32_t l3CacheSettings, uint32_t threadArbitrationPolicy, uint32_t additionalKernelExecInfo, KernelExecutionType kernelExecutionType, uint64_t sliceCount, bool blocking, bool dcFlush, bool useSLM, bool guardCommandBufferWithPipeControl, bool gsba32BitRequired, bool requiresCoherency, bool lowPriority, bool implicitFlush, bool outOfOrderExecutionAllowed, bool epilogueRequired, bool usePerDSSbackedBuffer) : csrDependencies(csrDependencies), @@ -63,6 +65,7 @@ struct DispatchFlags { l3CacheSettings(l3CacheSettings), threadArbitrationPolicy(threadArbitrationPolicy), additionalKernelExecInfo(additionalKernelExecInfo), + kernelExecutionType(kernelExecutionType), sliceCount(sliceCount), blocking(blocking), dcFlush(dcFlush), @@ -85,6 +88,7 @@ struct DispatchFlags { uint32_t l3CacheSettings = L3CachingSettings::l3CacheOn; uint32_t threadArbitrationPolicy = ThreadArbitrationPolicy::NotPresent; uint32_t additionalKernelExecInfo = AdditionalKernelExecInfo::NotApplicable; + KernelExecutionType kernelExecutionType = KernelExecutionType::NotApplicable; uint64_t sliceCount = QueueSliceCount::defaultSliceCount; uint64_t engineHints = 0; bool blocking = false; diff --git a/shared/source/helpers/preamble.h b/shared/source/helpers/preamble.h index d0a671c2d5..55af06dad2 100644 --- a/shared/source/helpers/preamble.h +++ b/shared/source/helpers/preamble.h @@ -8,6 +8,8 @@ #pragma once #include "shared/source/helpers/pipeline_select_helper.h" +#include "opencl/source/kernel/kernel_execution_type.h" + #include "engine_node.h" #include "igfxfmid.h" @@ -42,7 +44,8 @@ struct PreambleHelper { uint64_t scratchAddress, uint32_t maxFrontEndThreads, aub_stream::EngineType engineType, - uint32_t additionalKernelExecInfo); + uint32_t additionalKernelExecInfo, + KernelExecutionType kernelExecutionType); static void programAdditionalFieldsInVfeState(VFE_STATE_TYPE *mediaVfeState, const HardwareInfo &hwInfo); static void programPreamble(LinearStream *pCommandStream, Device &device, uint32_t l3Config, uint32_t requiredThreadArbitrationPolicy, GraphicsAllocation *preemptionCsr, GraphicsAllocation *perDssBackedBuffer); diff --git a/shared/source/helpers/preamble_bdw_plus.inl b/shared/source/helpers/preamble_bdw_plus.inl index 8923b29b5c..503f030731 100644 --- a/shared/source/helpers/preamble_bdw_plus.inl +++ b/shared/source/helpers/preamble_bdw_plus.inl @@ -9,6 +9,8 @@ #include "shared/source/helpers/hw_helper.h" #include "shared/source/helpers/preamble_base.inl" +#include "opencl/source/kernel/kernel_execution_type.h" + namespace NEO { template @@ -31,7 +33,8 @@ uint64_t PreambleHelper::programVFEState(LinearStream *pCommandStream uint64_t scratchAddress, uint32_t maxFrontEndThreads, aub_stream::EngineType engineType, - uint32_t additionalExecInfo) { + uint32_t additionalExecInfo, + KernelExecutionType kernelExecutionType) { using MEDIA_VFE_STATE = typename GfxFamily::MEDIA_VFE_STATE; addPipeControlBeforeVfeCmd(pCommandStream, &hwInfo, engineType); diff --git a/shared/test/unit_test/gen11/test_preamble_gen11.cpp b/shared/test/unit_test/gen11/test_preamble_gen11.cpp index 708464a85b..40292ef4b8 100644 --- a/shared/test/unit_test/gen11/test_preamble_gen11.cpp +++ b/shared/test/unit_test/gen11/test_preamble_gen11.cpp @@ -58,7 +58,9 @@ GEN11TEST_F(Gen11PreambleVfeState, GivenWaOffWhenProgrammingVfeStateThenProgramm typedef typename ICLFamily::PIPE_CONTROL PIPE_CONTROL; testWaTable->waSendMIFLUSHBeforeVFE = 0; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); @@ -76,7 +78,9 @@ GEN11TEST_F(Gen11PreambleVfeState, GivenWaOnWhenProgrammingVfeStateThenProgrammi typedef typename ICLFamily::PIPE_CONTROL PIPE_CONTROL; testWaTable->waSendMIFLUSHBeforeVFE = 1; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); diff --git a/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp b/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp index 21f56c9b12..9961973da8 100644 --- a/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp +++ b/shared/test/unit_test/gen12lp/test_preamble_gen12lp.cpp @@ -62,7 +62,9 @@ HWTEST2_F(Gen12LpPreambleVfeState, GivenWaOffWhenProgrammingVfeStateThenProgramm typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; testWaTable->waSendMIFLUSHBeforeVFE = 0; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); @@ -82,7 +84,9 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenCcsEngineWhenWaIsSetThenAppropriatePipeC testWaTable->waSendMIFLUSHBeforeVFE = 1; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, aub_stream::EngineType::ENGINE_CCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, + aub_stream::EngineType::ENGINE_CCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); @@ -101,7 +105,9 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenRcsEngineWhenWaIsSetThenAppropriatePipeC testWaTable->waSendMIFLUSHBeforeVFE = 1; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); diff --git a/shared/test/unit_test/gen8/test_preamble_gen8.cpp b/shared/test/unit_test/gen8/test_preamble_gen8.cpp index 7dbaae37c9..80b0078e79 100644 --- a/shared/test/unit_test/gen8/test_preamble_gen8.cpp +++ b/shared/test/unit_test/gen8/test_preamble_gen8.cpp @@ -95,7 +95,8 @@ BDWTEST_F(PreambleVfeState, WhenProgrammingVfeStateThenProgrammingIsCorrect) { typedef BDWFamily::PIPE_CONTROL PIPE_CONTROL; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, *defaultHwInfo, 0u, 0, 168u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, *defaultHwInfo, 0u, 0, 168u, aub_stream::EngineType::ENGINE_RCS, + AdditionalKernelExecInfo::NotApplicable, KernelExecutionType::NotApplicable); parseCommands(cs); diff --git a/shared/test/unit_test/gen9/skl/test_preamble_skl.cpp b/shared/test/unit_test/gen9/skl/test_preamble_skl.cpp index bdf82538ae..589c1df3b5 100644 --- a/shared/test/unit_test/gen9/skl/test_preamble_skl.cpp +++ b/shared/test/unit_test/gen9/skl/test_preamble_skl.cpp @@ -107,7 +107,9 @@ GEN9TEST_F(PreambleVfeState, GivenWaOffWhenProgrammingVfeStateThenProgrammingIsC typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; testWaTable->waSendMIFLUSHBeforeVFE = 0; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); @@ -125,7 +127,9 @@ GEN9TEST_F(PreambleVfeState, GivenWaOnWhenProgrammingVfeStateThenProgrammingIsCo typedef typename FamilyType::PIPE_CONTROL PIPE_CONTROL; testWaTable->waSendMIFLUSHBeforeVFE = 1; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); parseCommands(cs); diff --git a/shared/test/unit_test/helpers/dispatch_flags_helper.h b/shared/test/unit_test/helpers/dispatch_flags_helper.h index 4b2d46acc0..0cbc0180c4 100644 --- a/shared/test/unit_test/helpers/dispatch_flags_helper.h +++ b/shared/test/unit_test/helpers/dispatch_flags_helper.h @@ -25,6 +25,7 @@ struct DispatchFlagsHelper { L3CachingSettings::l3CacheOn, //l3CacheSettings ThreadArbitrationPolicy::NotPresent, //threadArbitrationPolicy AdditionalKernelExecInfo::NotApplicable, //additionalKernelExecInfo + KernelExecutionType::NotApplicable, //kernelExecutionType QueueSliceCount::defaultSliceCount, //sliceCount false, //blocking false, //dcFlush diff --git a/shared/test/unit_test/preamble/preamble_tests.cpp b/shared/test/unit_test/preamble/preamble_tests.cpp index 89a4bbd61b..ba199b0f3b 100644 --- a/shared/test/unit_test/preamble/preamble_tests.cpp +++ b/shared/test/unit_test/preamble/preamble_tests.cpp @@ -222,7 +222,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, PreambleTest, givenPreambleHelperWhenMediaVfeStateIs FlatBatchBufferHelperHw helper(*mockDevice->getExecutionEnvironment()); uint64_t addressToPatch = 0xC0DEC0DE; - auto offset = PreambleHelper::programVFEState(&preambleStream, mockDevice->getHardwareInfo(), 1024u, addressToPatch, 10u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable); + auto offset = PreambleHelper::programVFEState(&preambleStream, mockDevice->getHardwareInfo(), 1024u, addressToPatch, + 10u, aub_stream::EngineType::ENGINE_RCS, AdditionalKernelExecInfo::NotApplicable, + KernelExecutionType::NotApplicable); EXPECT_NE(0u, offset); }