diff --git a/level_zero/core/source/cmdqueue/cmdqueue_hw.inl b/level_zero/core/source/cmdqueue/cmdqueue_hw.inl index be4aae63b7..ebd9205cbf 100644 --- a/level_zero/core/source/cmdqueue/cmdqueue_hw.inl +++ b/level_zero/core/source/cmdqueue/cmdqueue_hw.inl @@ -34,6 +34,7 @@ #include "level_zero/tools/source/metrics/metric.h" #include "pipe_control_args.h" +#include "stream_properties.h" #include #include @@ -421,14 +422,15 @@ void CommandQueueHw::programFrontEnd(uint64_t scratchAddress, uin auto &hwInfo = device->getHwInfo(); auto &hwHelper = NEO::HwHelper::get(hwInfo.platform.eRenderCoreFamily); auto engineGroupType = hwHelper.getEngineGroupType(csr->getOsContext().getEngineType(), hwInfo); - NEO::PreambleHelper::programVFEState(&commandStream, + auto pVfeState = NEO::PreambleHelper::getSpaceForVfeState(&commandStream, hwInfo, engineGroupType); + NEO::StreamProperties emptyProperties{}; + NEO::PreambleHelper::programVfeState(pVfeState, hwInfo, perThreadScratchSpaceSize, scratchAddress, device->getMaxNumHwThreads(), - engineGroupType, NEO::AdditionalKernelExecInfo::NotApplicable, - NEO::KernelExecutionType::NotApplicable); + emptyProperties); csr->setMediaVFEStateDirty(false); } 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 33a6277b20..3164e3e883 100644 --- a/opencl/source/device_queue/device_queue_hw_bdw_plus.inl +++ b/opencl/source/device_queue/device_queue_hw_bdw_plus.inl @@ -11,6 +11,8 @@ #include "opencl/source/device_queue/device_queue_hw_base.inl" #include "opencl/source/program/block_kernel_manager.h" +#include "stream_properties.h" + namespace NEO { template @@ -130,9 +132,10 @@ void DeviceQueueHw::addMediaStateClearCmds() { addDcFlushToPipeControlWa(pipeControl); - PreambleHelper::programVFEState(&slbCS, device->getHardwareInfo(), 0u, 0, device->getSharedDeviceInfo().maxFrontEndThreads, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeState = PreambleHelper::getSpaceForVfeState(&slbCS, device->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeState, device->getHardwareInfo(), 0u, 0, device->getSharedDeviceInfo().maxFrontEndThreads, + AdditionalKernelExecInfo::NotApplicable, emptyProperties); } template diff --git a/shared/source/command_stream/CMakeLists.txt b/shared/source/command_stream/CMakeLists.txt index e7389a9d6e..b985977f6e 100644 --- a/shared/source/command_stream/CMakeLists.txt +++ b/shared/source/command_stream/CMakeLists.txt @@ -18,6 +18,7 @@ set(NEO_CORE_COMMAND_STREAM ${CMAKE_CURRENT_SOURCE_DIR}/csr_deps.h ${CMAKE_CURRENT_SOURCE_DIR}/definitions${BRANCH_DIR_SUFFIX}/command_stream_receiver_hw_ext.inl ${CMAKE_CURRENT_SOURCE_DIR}/definitions${BRANCH_DIR_SUFFIX}/csr_properties_flags.h + ${CMAKE_CURRENT_SOURCE_DIR}/definitions${BRANCH_DIR_SUFFIX}/stream_properties.h ${CMAKE_CURRENT_SOURCE_DIR}/device_command_stream.h ${CMAKE_CURRENT_SOURCE_DIR}/experimental_command_buffer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/experimental_command_buffer.h 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 c06132e02b..3bf43070d7 100644 --- a/shared/source/command_stream/command_stream_receiver_hw_base.inl +++ b/shared/source/command_stream/command_stream_receiver_hw_base.inl @@ -33,6 +33,7 @@ #include "command_stream_receiver_hw_ext.inl" #include "pipe_control_args.h" +#include "stream_properties.h" namespace NEO { @@ -922,9 +923,12 @@ inline void CommandStreamReceiverHw::programVFEState(LinearStream &cs auto &hwInfo = peekHwInfo(); auto &hwHelper = NEO::HwHelper::get(hwInfo.platform.eRenderCoreFamily); auto engineGroupType = hwHelper.getEngineGroupType(getOsContext().getEngineType(), hwInfo); - auto pVfeState = PreambleHelper::programVFEState( - &csr, hwInfo, requiredScratchSize, getScratchPatchAddress(), - maxFrontEndThreads, engineGroupType, lastAdditionalKernelExecInfo, lastKernelExecutionType); + auto pVfeState = PreambleHelper::getSpaceForVfeState(&csr, hwInfo, engineGroupType); + StreamProperties streamProperties{}; + streamProperties.setCooperativeKernelProperties(lastKernelExecutionType == KernelExecutionType::Concurrent); + PreambleHelper::programVfeState( + pVfeState, hwInfo, requiredScratchSize, getScratchPatchAddress(), + maxFrontEndThreads, lastAdditionalKernelExecInfo, streamProperties); auto commandOffset = PreambleHelper::getScratchSpaceAddressOffsetForVfeState(&csr, pVfeState); if (DebugManager.flags.AddPatchInfoCommentsForAUBDump.get()) { diff --git a/shared/source/command_stream/definitions/stream_properties.h b/shared/source/command_stream/definitions/stream_properties.h new file mode 100644 index 0000000000..376d9007bf --- /dev/null +++ b/shared/source/command_stream/definitions/stream_properties.h @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#pragma once + +namespace NEO { + +struct StreamProperties { + bool setCooperativeKernelProperties(bool isCooperative) { + return false; + } +}; + +} // namespace NEO diff --git a/shared/source/helpers/preamble.h b/shared/source/helpers/preamble.h index fa6d4705e5..d75d12c3ab 100644 --- a/shared/source/helpers/preamble.h +++ b/shared/source/helpers/preamble.h @@ -25,6 +25,7 @@ struct DispatchFlags; class GraphicsAllocation; class LinearStream; struct PipelineSelectArgs; +struct StreamProperties; template struct PreambleHelper { @@ -39,15 +40,17 @@ struct PreambleHelper { static void programThreadArbitration(LinearStream *pCommandStream, uint32_t requiredThreadArbitrationPolicy); static void programPreemption(LinearStream *pCommandStream, Device &device, GraphicsAllocation *preemptionCsr); static void addPipeControlBeforeVfeCmd(LinearStream *pCommandStream, const HardwareInfo *hwInfo, EngineGroupType engineGroupType); - static void appendProgramVFEState(const HardwareInfo &hwInfo, KernelExecutionType kernelExecutionType, uint32_t additionalKernelExecInfo, void *cmd); - static void *programVFEState(LinearStream *pCommandStream, - const HardwareInfo &hwInfo, - uint32_t scratchSize, - uint64_t scratchAddress, - uint32_t maxFrontEndThreads, - EngineGroupType engineGroupType, - uint32_t additionalKernelExecInfo, - KernelExecutionType kernelExecutionType); + static void appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, uint32_t additionalKernelExecInfo, void *cmd); + static void *getSpaceForVfeState(LinearStream *pCommandStream, + const HardwareInfo &hwInfo, + EngineGroupType engineGroupType); + static void programVfeState(void *pVfeState, + const HardwareInfo &hwInfo, + uint32_t scratchSize, + uint64_t scratchAddress, + uint32_t maxFrontEndThreads, + uint32_t additionalExecInfo, + const StreamProperties &streamProperties); static uint64_t getScratchSpaceAddressOffsetForVfeState(LinearStream *pCommandStream, void *pVfeState); static void programAdditionalFieldsInVfeState(VFE_STATE_TYPE *mediaVfeState, const HardwareInfo &hwInfo); static void programPreamble(LinearStream *pCommandStream, Device &device, uint32_t l3Config, diff --git a/shared/source/helpers/preamble_base.inl b/shared/source/helpers/preamble_base.inl index a3b7674e36..04f1d1b7b4 100644 --- a/shared/source/helpers/preamble_base.inl +++ b/shared/source/helpers/preamble_base.inl @@ -117,7 +117,7 @@ void PreambleHelper::programAdditionalFieldsInVfeState(VFE_STATE_TYPE } template -void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, KernelExecutionType kernelExecutionType, uint32_t additionalKernelExecInfo, void *cmd) {} +void PreambleHelper::appendProgramVFEState(const HardwareInfo &hwInfo, const StreamProperties &streamProperties, uint32_t additionalKernelExecInfo, void *cmd) {} template uint32_t PreambleHelper::getScratchSizeValueToProgramMediaVfeState(uint32_t scratchSize) { diff --git a/shared/source/helpers/preamble_bdw_plus.inl b/shared/source/helpers/preamble_bdw_plus.inl index 2566941d8a..ee24d7adec 100644 --- a/shared/source/helpers/preamble_bdw_plus.inl +++ b/shared/source/helpers/preamble_bdw_plus.inl @@ -11,6 +11,8 @@ #include "opencl/source/kernel/kernel_execution_type.h" +#include "stream_properties.h" + namespace NEO { template @@ -27,19 +29,25 @@ uint32_t PreambleHelper::getUrbEntryAllocationSize() { } template -void *PreambleHelper::programVFEState(LinearStream *pCommandStream, - const HardwareInfo &hwInfo, - uint32_t scratchSize, - uint64_t scratchAddress, - uint32_t maxFrontEndThreads, - EngineGroupType engineGroupType, - uint32_t additionalExecInfo, - KernelExecutionType kernelExecutionType) { +void *PreambleHelper::getSpaceForVfeState(LinearStream *pCommandStream, + const HardwareInfo &hwInfo, + EngineGroupType engineGroupType) { + using MEDIA_VFE_STATE = typename GfxFamily::MEDIA_VFE_STATE; + addPipeControlBeforeVfeCmd(pCommandStream, &hwInfo, engineGroupType); + return pCommandStream->getSpaceForCmd(); +} + +template +void PreambleHelper::programVfeState(void *pVfeState, + const HardwareInfo &hwInfo, + uint32_t scratchSize, + uint64_t scratchAddress, + uint32_t maxFrontEndThreads, + uint32_t additionalExecInfo, + const StreamProperties &streamProperties) { using MEDIA_VFE_STATE = typename GfxFamily::MEDIA_VFE_STATE; - addPipeControlBeforeVfeCmd(pCommandStream, &hwInfo, engineGroupType); - - auto pMediaVfeState = pCommandStream->getSpaceForCmd(); + auto pMediaVfeState = reinterpret_cast(pVfeState); MEDIA_VFE_STATE cmd = GfxFamily::cmdInitMediaVfeState; cmd.setMaximumNumberOfThreads(maxFrontEndThreads); cmd.setNumberOfUrbEntries(1); @@ -52,10 +60,8 @@ void *PreambleHelper::programVFEState(LinearStream *pCommandStream, cmd.setScratchSpaceBasePointerHigh(highAddress); programAdditionalFieldsInVfeState(&cmd, hwInfo); - appendProgramVFEState(hwInfo, kernelExecutionType, additionalExecInfo, &cmd); + appendProgramVFEState(hwInfo, streamProperties, additionalExecInfo, &cmd); *pMediaVfeState = cmd; - - return pMediaVfeState; } template diff --git a/shared/test/common/gen11/test_preamble_gen11.cpp b/shared/test/common/gen11/test_preamble_gen11.cpp index 014ac35947..eced4d76ae 100644 --- a/shared/test/common/gen11/test_preamble_gen11.cpp +++ b/shared/test/common/gen11/test_preamble_gen11.cpp @@ -10,6 +10,7 @@ #include "shared/test/unit_test/preamble/preamble_fixture.h" #include "reg_configs_common.h" +#include "stream_properties.h" using namespace NEO; @@ -58,9 +59,11 @@ 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, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); @@ -78,9 +81,11 @@ 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, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); diff --git a/shared/test/common/gen12lp/test_preamble_gen12lp.cpp b/shared/test/common/gen12lp/test_preamble_gen12lp.cpp index 5f0e4f6b42..533376b856 100644 --- a/shared/test/common/gen12lp/test_preamble_gen12lp.cpp +++ b/shared/test/common/gen12lp/test_preamble_gen12lp.cpp @@ -10,6 +10,7 @@ #include "shared/test/unit_test/preamble/preamble_fixture.h" #include "reg_configs_common.h" +#include "stream_properties.h" using namespace NEO; @@ -62,9 +63,11 @@ 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, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); @@ -84,9 +87,11 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenCcsEngineWhenWaIsSetThenAppropriatePipeC testWaTable->waSendMIFLUSHBeforeVFE = 1; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, - EngineGroupType::Compute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::Compute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); @@ -105,9 +110,11 @@ HWTEST2_F(Gen12LpPreambleVfeState, givenRcsEngineWhenWaIsSetThenAppropriatePipeC testWaTable->waSendMIFLUSHBeforeVFE = 1; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 672u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); diff --git a/shared/test/common/gen8/test_preamble_gen8.cpp b/shared/test/common/gen8/test_preamble_gen8.cpp index 7cfe8230a2..62e95f47e0 100644 --- a/shared/test/common/gen8/test_preamble_gen8.cpp +++ b/shared/test/common/gen8/test_preamble_gen8.cpp @@ -12,6 +12,8 @@ #include "opencl/test/unit_test/fixtures/platform_fixture.h" +#include "stream_properties.h" + using namespace NEO; typedef PreambleFixture BdwSlm; @@ -95,8 +97,10 @@ BDWTEST_F(PreambleVfeState, WhenProgrammingVfeStateThenProgrammingIsCorrect) { typedef BDWFamily::PIPE_CONTROL PIPE_CONTROL; LinearStream &cs = linearStream; - PreambleHelper::programVFEState(&linearStream, *defaultHwInfo, 0u, 0, 168u, EngineGroupType::RenderCompute, - AdditionalKernelExecInfo::NotApplicable, KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, *defaultHwInfo, EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 0u, 0, 168u, + AdditionalKernelExecInfo::NotApplicable, emptyProperties); parseCommands(cs); diff --git a/shared/test/common/gen9/skl/test_preamble_skl.cpp b/shared/test/common/gen9/skl/test_preamble_skl.cpp index 397cdc0f99..8fdc892557 100644 --- a/shared/test/common/gen9/skl/test_preamble_skl.cpp +++ b/shared/test/common/gen9/skl/test_preamble_skl.cpp @@ -13,6 +13,8 @@ #include "shared/test/common/helpers/debug_manager_state_restore.h" #include "shared/test/unit_test/preamble/preamble_fixture.h" +#include "stream_properties.h" + using namespace NEO; typedef PreambleFixture SklSlm; @@ -107,9 +109,11 @@ 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, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); @@ -127,9 +131,11 @@ 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, - EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&linearStream, pPlatform->getClDevice(0)->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, pPlatform->getClDevice(0)->getHardwareInfo(), 0u, 0, 168u, + AdditionalKernelExecInfo::NotApplicable, + emptyProperties); parseCommands(cs); diff --git a/shared/test/unit_test/preamble/preamble_tests.cpp b/shared/test/unit_test/preamble/preamble_tests.cpp index bbdcee21d4..c0711b8a96 100644 --- a/shared/test/unit_test/preamble/preamble_tests.cpp +++ b/shared/test/unit_test/preamble/preamble_tests.cpp @@ -18,6 +18,7 @@ #include "test.h" +#include "stream_properties.h" #include #include @@ -223,9 +224,11 @@ HWCMDTEST_F(IGFX_GEN8_CORE, PreambleTest, WhenProgramVFEStateIsCalledThenCorrect uint64_t addressToPatch = 0xC0DEC0DE; uint64_t expectedAddress = 0xC0DEC000; - auto pVfeCmd = PreambleHelper::programVFEState(&preambleStream, *defaultHwInfo, 1024u, addressToPatch, - 10u, EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&preambleStream, *defaultHwInfo, EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, *defaultHwInfo, 1024u, addressToPatch, + 10u, AdditionalKernelExecInfo::NotApplicable, + emptyProperties); EXPECT_GE(reinterpret_cast(pVfeCmd), reinterpret_cast(preambleStream.getCpuBase())); EXPECT_LT(reinterpret_cast(pVfeCmd), reinterpret_cast(preambleStream.getCpuBase()) + preambleStream.getUsed()); @@ -246,9 +249,11 @@ HWCMDTEST_F(IGFX_GEN8_CORE, PreambleTest, WhenGetScratchSpaceAddressOffsetForVfe FlatBatchBufferHelperHw helper(*mockDevice->getExecutionEnvironment()); uint64_t addressToPatch = 0xC0DEC0DE; - auto pVfeCmd = PreambleHelper::programVFEState(&preambleStream, mockDevice->getHardwareInfo(), 1024u, addressToPatch, - 10u, EngineGroupType::RenderCompute, AdditionalKernelExecInfo::NotApplicable, - KernelExecutionType::NotApplicable); + auto pVfeCmd = PreambleHelper::getSpaceForVfeState(&preambleStream, mockDevice->getHardwareInfo(), EngineGroupType::RenderCompute); + StreamProperties emptyProperties{}; + PreambleHelper::programVfeState(pVfeCmd, mockDevice->getHardwareInfo(), 1024u, addressToPatch, + 10u, AdditionalKernelExecInfo::NotApplicable, + emptyProperties); auto offset = PreambleHelper::getScratchSpaceAddressOffsetForVfeState(&preambleStream, pVfeCmd); EXPECT_NE(0u, offset);