refactor: improve Walker args handling

Signed-off-by: Dunajski, Bartosz <bartosz.dunajski@intel.com>
This commit is contained in:
Dunajski, Bartosz 2023-12-05 15:21:29 +00:00 committed by Compute-Runtime-Automation
parent 1bbc7a57ab
commit 9ce3713ace
23 changed files with 202 additions and 160 deletions

View File

@ -34,26 +34,10 @@ struct Event;
struct Kernel;
struct CommandQueue;
enum class RequiredPartitionDim : uint32_t {
None = 0,
X,
Y,
Z
};
enum class RequiredDispatchWalkOrder : uint32_t {
None = 0,
X,
Y,
Additional
};
struct CmdListKernelLaunchParams {
static constexpr uint32_t additionalSizeParamNotSet = std::numeric_limits<uint32_t>::max();
RequiredPartitionDim requiredPartitionDim = RequiredPartitionDim::None;
RequiredDispatchWalkOrder requiredDispatchWalkOrder = RequiredDispatchWalkOrder::None;
uint32_t additionalSizeParam = additionalSizeParamNotSet;
NEO::RequiredPartitionDim requiredPartitionDim = NEO::RequiredPartitionDim::None;
NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::None;
uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet;
uint32_t numKernelsInSplitLaunch = 0;
uint32_t numKernelsExecutedInSplitLaunch = 0;
bool isIndirect = false;

View File

@ -200,6 +200,9 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
nullptr, // outWalkerPtr
&additionalCommands, // additionalCommands
commandListPreemptionMode, // preemptionMode
launchParams.requiredPartitionDim, // requiredPartitionDim
launchParams.requiredDispatchWalkOrder, // requiredDispatchWalkOrder
launchParams.additionalSizeParam, // additionalSizeParam
0, // partitionCount
launchParams.isIndirect, // isIndirect
launchParams.isPredicate, // isPredicate

View File

@ -286,6 +286,9 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendLaunchKernelWithParams(K
nullptr, // outWalkerPtr
&additionalCommands, // additionalCommands
kernelPreemptionMode, // preemptionMode
launchParams.requiredPartitionDim, // requiredPartitionDim
launchParams.requiredDispatchWalkOrder, // requiredDispatchWalkOrder
launchParams.additionalSizeParam, // additionalSizeParam
this->partitionCount, // partitionCount
launchParams.isIndirect, // isIndirect
launchParams.isPredicate, // isPredicate

View File

@ -184,29 +184,32 @@ HWTEST2_F(CommandListAppendLaunchKernel, givenNotEnoughSpaceInCommandStreamWhenA
const uint32_t threadGroupDimensions[3] = {1, 1, 1};
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
0, // eventAddress
0, // postSyncImmValue
device->getNEODevice(), // device
kernel.get(), // dispatchInterface
nullptr, // surfaceStateHeap
nullptr, // dynamicStateHeap
threadGroupDimensions, // threadGroupDimensions
nullptr, // outWalkerPtr
nullptr, // additionalCommands
PreemptionMode::MidBatch, // preemptionMode
0, // partitionCount
false, // isIndirect
false, // isPredicate
false, // isTimestampEvent
false, // requiresUncachedMocs
false, // useGlobalAtomics
false, // isInternal
false, // isCooperative
false, // isHostScopeSignalEvent
false, // isKernelUsingSystemAllocation
false, // isKernelDispatchedFromImmediateCmdList
false, // isRcs
commandList->getDcFlushRequired(true) // dcFlushEnable
0, // eventAddress
0, // postSyncImmValue
device->getNEODevice(), // device
kernel.get(), // dispatchInterface
nullptr, // surfaceStateHeap
nullptr, // dynamicStateHeap
threadGroupDimensions, // threadGroupDimensions
nullptr, // outWalkerPtr
nullptr, // additionalCommands
PreemptionMode::MidBatch, // preemptionMode
NEO::RequiredPartitionDim::None, // requiredPartitionDim
NEO::RequiredDispatchWalkOrder::None, // requiredDispatchWalkOrder
NEO::additionalKernelLaunchSizeParamNotSet, // additionalSizeParam
0, // partitionCount
false, // isIndirect
false, // isPredicate
false, // isTimestampEvent
false, // requiresUncachedMocs
false, // useGlobalAtomics
false, // isInternal
false, // isCooperative
false, // isHostScopeSignalEvent
false, // isKernelUsingSystemAllocation
false, // isKernelDispatchedFromImmediateCmdList
false, // isRcs
commandList->getDcFlushRequired(true) // dcFlushEnable
};
NEO::EncodeDispatchKernel<FamilyType>::template encode<DefaultWalkerType>(commandContainer, dispatchKernelArgs);

View File

@ -635,29 +635,32 @@ HWTEST2_F(CommandListAppendLaunchKernel, givenNotEnoughSpaceInCommandStreamWhenA
const uint32_t threadGroupDimensions[3] = {1, 1, 1};
NEO::EncodeDispatchKernelArgs dispatchKernelArgs{
0, // eventAddress
0, // postSyncImmValue
device->getNEODevice(), // device
kernel.get(), // dispatchInterface
nullptr, // surfaceStateHeap
nullptr, // dynamicStateHeap
threadGroupDimensions, // threadGroupDimensions
nullptr, // outWalkerPtr
nullptr, // additionalCommands
PreemptionMode::MidBatch, // preemptionMode
0, // partitionCount
false, // isIndirect
false, // isPredicate
false, // isTimestampEvent
false, // requiresUncachedMocs
false, // useGlobalAtomics
false, // isInternal
false, // isCooperative
false, // isHostScopeSignalEvent
false, // isKernelUsingSystemAllocation
false, // isKernelDispatchedFromImmediateCmdList
false, // isRcs
commandList->getDcFlushRequired(true) // dcFlushEnable
0, // eventAddress
0, // postSyncImmValue
device->getNEODevice(), // device
kernel.get(), // dispatchInterface
nullptr, // surfaceStateHeap
nullptr, // dynamicStateHeap
threadGroupDimensions, // threadGroupDimensions
nullptr, // outWalkerPtr
nullptr, // additionalCommands
PreemptionMode::MidBatch, // preemptionMode
NEO::RequiredPartitionDim::None, // requiredPartitionDim
NEO::RequiredDispatchWalkOrder::None, // requiredDispatchWalkOrder
NEO::additionalKernelLaunchSizeParamNotSet, // additionalSizeParam
0, // partitionCount
false, // isIndirect
false, // isPredicate
false, // isTimestampEvent
false, // requiresUncachedMocs
false, // useGlobalAtomics
false, // isInternal
false, // isCooperative
false, // isHostScopeSignalEvent
false, // isKernelUsingSystemAllocation
false, // isKernelDispatchedFromImmediateCmdList
false, // isRcs
commandList->getDcFlushRequired(true) // dcFlushEnable
};
EXPECT_THROW(NEO::EncodeDispatchKernel<FamilyType>::template encode<DefaultWalkerType>(commandContainer, dispatchKernelArgs), std::exception);
}

View File

@ -102,7 +102,7 @@ inline void HardwareInterface<GfxFamily>::programWalker(
0,
commandQueue.getDevice());
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), false, kernel.getKernelInfo().kernelDescriptor};
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), false, kernel.getKernelInfo().kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
EncodeDispatchKernel<GfxFamily>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs);
*walkerCmdBuf = walkerCmd;
}

View File

@ -11,6 +11,7 @@
#include "shared/source/command_stream/command_stream_receiver.h"
#include "shared/source/debug_settings/debug_settings_manager.h"
#include "shared/source/device/device.h"
#include "shared/source/helpers/definitions/command_encoder_args.h"
#include "shared/source/helpers/engine_node_helper.h"
#include "shared/source/os_interface/os_context.h"
#include "shared/source/os_interface/os_interface.h"
@ -141,7 +142,7 @@ inline void HardwareInterface<GfxFamily>::programWalker(
kernelSystemAllocation = kernel.isAnyKernelArgumentUsingSystemMemory();
}
bool requiredSystemFence = kernelSystemAllocation && walkerArgs.event != nullptr;
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), requiredSystemFence, kernelInfo.kernelDescriptor};
EncodeWalkerArgs encodeWalkerArgs{kernel.getExecutionType(), requiredSystemFence, kernelInfo.kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
EncodeDispatchKernel<GfxFamily>::template encodeAdditionalWalkerFields<WalkerType>(rootDeviceEnvironment, walkerCmd, encodeWalkerArgs);
auto devices = queueCsr.getOsContext().getDeviceBitfield();
@ -159,10 +160,10 @@ inline void HardwareInterface<GfxFamily>::programWalker(
walkerCmd,
nullptr,
devices,
kernel.usesImages() ? RequiredPartitionDim::X : RequiredPartitionDim::None,
partitionCount,
false,
false,
kernel.usesImages(),
queueCsr.getDcFlushSupport(),
kernel.isSingleSubdevicePreferred(),
workPartitionAllocationGpuVa,

View File

@ -84,7 +84,7 @@ HWTEST2_F(WalkerDispatchTestDg2AndLater, givenDebugVariableSetWhenProgramCompute
auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0];
KernelDescriptor kernelDescriptor;
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
for (auto forceL3PrefetchForComputeWalker : {false, true}) {
debugManager.flags.ForceL3PrefetchForComputeWalker.set(forceL3PrefetchForComputeWalker);
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);

View File

@ -11,6 +11,7 @@
#include "shared/source/command_container/encode_alu_helper.h"
#include "shared/source/command_stream/preemption_mode.h"
#include "shared/source/debugger/debugger.h"
#include "shared/source/helpers/definitions/command_encoder_args.h"
#include "shared/source/helpers/register_offsets.h"
#include "shared/source/kernel/kernel_arg_descriptor.h"
#include "shared/source/kernel/kernel_execution_type.h"
@ -52,6 +53,9 @@ struct EncodeDispatchKernelArgs {
void *outWalkerPtr = nullptr;
std::list<void *> *additionalCommands = nullptr;
PreemptionMode preemptionMode = PreemptionMode::Initial;
NEO::RequiredPartitionDim requiredPartitionDim = NEO::RequiredPartitionDim::None;
NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::None;
uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet;
uint32_t partitionCount = 0u;
bool isIndirect = false;
bool isPredicate = false;
@ -87,6 +91,8 @@ struct EncodeWalkerArgs {
KernelExecutionType kernelExecutionType = KernelExecutionType::defaultType;
bool requiredSystemFence = false;
const KernelDescriptor &kernelDescriptor;
NEO::RequiredDispatchWalkOrder requiredDispatchWalkOrder = NEO::RequiredDispatchWalkOrder::None;
uint32_t additionalSizeParam = NEO::additionalKernelLaunchSizeParamNotSet;
};
template <typename GfxFamily>

View File

@ -393,7 +393,9 @@ void EncodeDispatchKernel<Family>::encode(CommandContainer &container, EncodeDis
EncodeWalkerArgs walkerArgs{
args.isCooperative ? KernelExecutionType::concurrent : KernelExecutionType::defaultType,
args.isHostScopeSignalEvent && args.isKernelUsingSystemAllocation,
kernelDescriptor};
kernelDescriptor,
args.requiredDispatchWalkOrder,
args.additionalSizeParam};
EncodeDispatchKernel<Family>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
PreemptionHelper::applyPreemptionWaCmdsBegin<Family>(listCmdBufferStream, *args.device);
@ -407,10 +409,10 @@ void EncodeDispatchKernel<Family>::encode(CommandContainer &container, EncodeDis
walkerCmd,
&args.outWalkerPtr,
args.device->getDeviceBitfield(),
args.requiredPartitionDim,
args.partitionCount,
!(container.getFlushTaskUsedForImmediate() || container.isUsingPrimaryBuffer()),
!args.isKernelDispatchedFromImmediateCmdList,
false,
args.dcFlushEnable,
args.isCooperative,
workPartitionAllocationGpuVa,

View File

@ -7,6 +7,7 @@
#pragma once
#include "shared/source/helpers/definitions/command_encoder_args.h"
#include "shared/source/helpers/device_bitfield.h"
#include "shared/source/helpers/vec.h"
@ -52,10 +53,10 @@ struct ImplicitScalingDispatch {
WalkerType &walkerCmd,
void **outWalkerPtr,
const DeviceBitfield &devices,
RequiredPartitionDim requiredPartitionDim,
uint32_t &partitionCount,
bool useSecondaryBatchBuffer,
bool apiSelfCleanup,
bool usesImages,
bool dcFlush,
bool forceExecutionOnSingleTile,
uint64_t workPartitionAllocationGpuVa,

View File

@ -93,10 +93,10 @@ void ImplicitScalingDispatch<GfxFamily>::dispatchCommands(LinearStream &commandS
WalkerType &walkerCmd,
void **outWalkerPtr,
const DeviceBitfield &devices,
NEO::RequiredPartitionDim requiredPartitionDim,
uint32_t &partitionCount,
bool useSecondaryBatchBuffer,
bool apiSelfCleanup,
bool usesImages,
bool dcFlush,
bool forceExecutionOnSingleTile,
uint64_t workPartitionAllocationGpuVa,
@ -106,7 +106,7 @@ void ImplicitScalingDispatch<GfxFamily>::dispatchCommands(LinearStream &commandS
const bool preferStaticPartitioning = workPartitionAllocationGpuVa != 0u;
bool staticPartitioning = false;
partitionCount = WalkerPartition::computePartitionCountAndSetPartitionType<GfxFamily, WalkerType>(&walkerCmd, tileCount, preferStaticPartitioning, usesImages, &staticPartitioning);
partitionCount = WalkerPartition::computePartitionCountAndSetPartitionType<GfxFamily, WalkerType>(&walkerCmd, requiredPartitionDim, tileCount, preferStaticPartitioning, &staticPartitioning);
WalkerPartition::WalkerPartitionArgs args = prepareWalkerPartitionArgs<GfxFamily>(workPartitionAllocationGpuVa,
tileCount,

View File

@ -185,9 +185,9 @@ uint32_t computePartitionCountAndPartitionType(uint32_t preferredMinimalPartitio
template <typename GfxFamily, typename WalkerType>
uint32_t computePartitionCountAndSetPartitionType(WalkerType *walker,
NEO::RequiredPartitionDim requiredPartitionDim,
uint32_t preferredMinimalPartitionCount,
bool preferStaticPartitioning,
bool usesImages,
bool *outSelectStaticPartitioning) {
using PARTITION_TYPE = typename WalkerType::PARTITION_TYPE;
@ -195,9 +195,22 @@ uint32_t computePartitionCountAndSetPartitionType(WalkerType *walker,
const Vec3<size_t> groupStart = {walker->getThreadGroupIdStartingX(), walker->getThreadGroupIdStartingY(), walker->getThreadGroupIdStartingZ()};
const Vec3<size_t> groupCount = {walker->getThreadGroupIdXDimension(), walker->getThreadGroupIdYDimension(), walker->getThreadGroupIdZDimension()};
std::optional<PARTITION_TYPE> requestedPartitionType{};
if (usesImages) {
switch (requiredPartitionDim) {
case NEO::RequiredPartitionDim::X:
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_X;
break;
case NEO::RequiredPartitionDim::Y:
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_Y;
break;
case NEO::RequiredPartitionDim::Z:
requestedPartitionType = PARTITION_TYPE::PARTITION_TYPE_Z;
break;
default:
UNRECOVERABLE_IF(requiredPartitionDim != NEO::RequiredPartitionDim::None);
break;
}
PARTITION_TYPE partitionType{};
const auto partitionCount = computePartitionCountAndPartitionType<GfxFamily, WalkerType>(preferredMinimalPartitionCount,
preferStaticPartitioning,

View File

@ -7,6 +7,9 @@
#pragma once
#include <cstdint>
#include <limits>
namespace NEO {
struct RootDeviceEnvironment;
@ -24,4 +27,21 @@ struct MiFlushArgs {
EncodeDummyBlitWaArgs &waArgs;
MiFlushArgs(EncodeDummyBlitWaArgs &args) : waArgs(args) {}
};
enum class RequiredPartitionDim : uint32_t {
None = 0,
X,
Y,
Z
};
enum class RequiredDispatchWalkOrder : uint32_t {
None = 0,
X,
Y,
Additional
};
static constexpr uint32_t additionalKernelLaunchSizeParamNotSet = 0;
} // namespace NEO

View File

@ -30,7 +30,7 @@ bool ImplicitScalingDispatch<Family>::platformSupportsImplicitScaling(const Root
}
template struct ImplicitScalingDispatch<Family>;
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool usesImages, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, NEO::RequiredPartitionDim requiredPartitionDim, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
template size_t ImplicitScalingDispatch<Family>::getSize<Family::DefaultWalkerType>(bool apiSelfCleanup, bool preferStaticPartitioning, const DeviceBitfield &devices, const Vec3<size_t> &groupStart, const Vec3<size_t> &groupCount);
} // namespace NEO

View File

@ -17,7 +17,7 @@ template <>
bool ImplicitScalingDispatch<Family>::pipeControlStallRequired = true;
template struct ImplicitScalingDispatch<Family>;
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool usesImages, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
template void ImplicitScalingDispatch<Family>::dispatchCommands<Family::DefaultWalkerType>(LinearStream &commandStream, Family::DefaultWalkerType &walkerCmd, void **outWalkerPtr, const DeviceBitfield &devices, NEO::RequiredPartitionDim requiredPartitionDim, uint32_t &partitionCount, bool useSecondaryBatchBuffer, bool apiSelfCleanup, bool dcFlush, bool forceExecutionOnSingleTile, uint64_t workPartitionAllocationGpuVa, const HardwareInfo &hwInfo);
template size_t ImplicitScalingDispatch<Family>::getSize<Family::DefaultWalkerType>(bool apiSelfCleanup, bool preferStaticPartitioning, const DeviceBitfield &devices, const Vec3<size_t> &groupStart, const Vec3<size_t> &groupCount);
} // namespace NEO

View File

@ -36,7 +36,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenGetSizeWhenDispatchingCm
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -79,7 +79,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenWorkgroupOneAndNoPartiti
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, false, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, false, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -123,7 +123,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenWorkgroupOneAndPartition
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, 0u, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -170,7 +170,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningWhenDi
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -222,7 +222,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningWhenPa
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(32, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -276,7 +276,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningPrefer
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -327,7 +327,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningPrefer
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -364,7 +364,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenStaticPartitioningPrefer
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, true, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -401,7 +401,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests, GivenDynamicPartitioningPrefe
expectedSize = ImplicitScalingDispatch<FamilyType>::template getSize<DefaultWalkerType>(false, false, twoTile, Vec3<size_t>(0, 0, 0), Vec3<size_t>(1, 1, 1));
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -449,7 +449,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -517,7 +517,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -577,7 +577,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -637,7 +637,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -704,7 +704,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -767,7 +767,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -832,7 +832,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -900,7 +900,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, true, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, true, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);
@ -967,7 +967,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, ImplicitScalingTests,
EXPECT_EQ(expectedSize, estimatedSize);
uint32_t partitionCount = 0;
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, partitionCount, true, false, false, dcFlushFlag,
ImplicitScalingDispatch<FamilyType>::dispatchCommands(commandStream, walker, nullptr, twoTile, NEO::RequiredPartitionDim::None, partitionCount, true, false, dcFlushFlag,
forceExecutionOnSingleTileFlag, workPartitionAllocationAddress, *defaultHwInfo);
totalBytesProgrammed = commandStream.getUsed();
EXPECT_EQ(expectedSize, totalBytesProgrammed);

View File

@ -1288,7 +1288,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitionIsPreferr
checkForProperCmdBufferAddressOffset = false;
bool preferredStaticPartitioning = true;
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, preferredStaticPartitioning, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, preferredStaticPartitioning, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(1u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());

View File

@ -449,7 +449,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWhenComputePartiti
walker.setThreadGroupIdXDimension(16u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
@ -461,7 +461,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithNonUniformStar
walker.setThreadGroupIdStartingX(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(1u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
@ -469,7 +469,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithNonUniformStar
walker.setThreadGroupIdStartingX(0u);
walker.setThreadGroupIdStartingY(1u);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(1u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
@ -477,7 +477,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithNonUniformStar
walker.setThreadGroupIdStartingY(0u);
walker.setThreadGroupIdStartingZ(1u);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(1u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
@ -491,21 +491,21 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithDifferentWorkg
walker.setThreadGroupIdZDimension(64u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
walker.setThreadGroupIdYDimension(65u);
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
walker.setThreadGroupIdZDimension(66u);
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
@ -522,21 +522,21 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenDisabledMinimalPartition
debugManager.flags.SetMinimalPartitionSize.set(0);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(16u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
walker.setThreadGroupIdYDimension(65u);
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(16u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
walker.setThreadGroupIdZDimension(66u);
walker.setPartitionType(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(16u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
@ -550,14 +550,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithDifferentWorkg
walker.setThreadGroupIdZDimension(4u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
walker.setThreadGroupIdXDimension(1u);
walker.setPartitionType(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
@ -565,7 +565,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithDifferentWorkg
walker.setThreadGroupIdYDimension(1u);
walker.setPartitionType(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_DISABLED);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
@ -582,25 +582,25 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithPartitionTypeH
debugManager.flags.ExperimentalSetWalkerPartitionType.set(-1);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_X));
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Y));
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Z));
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
@ -617,7 +617,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenInvalidPartitionTypeIsRe
debugManager.flags.ExperimentalSetWalkerPartitionType.set(0);
bool staticPartitioning = false;
EXPECT_ANY_THROW(computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning));
EXPECT_ANY_THROW(computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning));
}
HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithSmallXDimensionSizeWhenPartitionCountIsObtainedThenPartitionCountIsAdujsted) {
@ -628,7 +628,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithSmallXDimensio
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
@ -642,7 +642,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithBigXDimensionS
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(16u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
@ -659,7 +659,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenCustomMinimalPartitionSi
debugManager.flags.SetMinimalPartitionSize.set(4096);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
@ -673,7 +673,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenWalkerWithPartitionTypeP
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(1u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
@ -687,10 +687,10 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenXDimensionIsNotLargetAnd
walker.setThreadGroupIdZDimension(16u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, false, &staticPartitioning);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, false, true, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::X, 4u, false, &staticPartitioning);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
}
@ -702,7 +702,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndNon
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::X, 4u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
@ -716,7 +716,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndPar
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
@ -730,7 +730,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndBig
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
@ -747,7 +747,7 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndAnd
walker.setThreadGroupIdStartingZ(1);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
EXPECT_FALSE(staticPartitioning);
EXPECT_EQ(1u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_DISABLED, walker.getPartitionType());
@ -762,14 +762,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningAndPar
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = false;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
debugManager.flags.ExperimentalSetWalkerPartitionType.set(static_cast<int32_t>(COMPUTE_WALKER<FamilyType>::PARTITION_TYPE::PARTITION_TYPE_Z));
staticPartitioning = false;
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 4u, true, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 4u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(4u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
@ -784,14 +784,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningWhenZD
walker.setThreadGroupIdZDimension(2u);
bool staticPartitioning = true;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
@ -806,14 +806,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningWhenYD
walker.setThreadGroupIdZDimension(1u);
bool staticPartitioning = true;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Y, walker.getPartitionType());
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_X, walker.getPartitionType());
@ -828,14 +828,14 @@ HWCMDTEST_F(IGFX_XE_HP_CORE, WalkerPartitionTests, givenStaticPartitioningWhenZD
walker.setThreadGroupIdZDimension(513u);
bool staticPartitioning = true;
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
auto partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());
debugManager.flags.WalkerPartitionPreferHighestDimension.set(0);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, 2u, true, false, &staticPartitioning);
partitionCount = computePartitionCountAndSetPartitionType<FamilyType>(&walker, NEO::RequiredPartitionDim::None, 2u, true, &staticPartitioning);
EXPECT_TRUE(staticPartitioning);
EXPECT_EQ(2u, partitionCount);
EXPECT_EQ(FamilyType::COMPUTE_WALKER::PARTITION_TYPE::PARTITION_TYPE_Z, walker.getPartitionType());

View File

@ -37,29 +37,32 @@ EncodeDispatchKernelArgs CommandEncodeStatesFixture::createDefaultDispatchKernel
bool requiresUncachedMocs) {
EncodeDispatchKernelArgs args{
0, // eventAddress
0, // postSyncImmValue
device, // device
dispatchInterface, // dispatchInterface
nullptr, // surfaceStateHeap
nullptr, // dynamicStateHeap
threadGroupDimensions, // threadGroupDimensions
nullptr, // outWalkerPtr
nullptr, // additionalCommands
PreemptionMode::Disabled, // preemptionMode
1, // partitionCount
false, // isIndirect
false, // isPredicate
false, // isTimestampEvent
requiresUncachedMocs, // requiresUncachedMocs
false, // useGlobalAtomics
false, // isInternal
false, // isCooperative
false, // isHostScopeSignalEvent
false, // isKernelUsingSystemAllocation
false, // isKernelDispatchedFromImmediateCmdList
false, // isRcs
false // dcFlushEnable
0, // eventAddress
0, // postSyncImmValue
device, // device
dispatchInterface, // dispatchInterface
nullptr, // surfaceStateHeap
nullptr, // dynamicStateHeap
threadGroupDimensions, // threadGroupDimensions
nullptr, // outWalkerPtr
nullptr, // additionalCommands
PreemptionMode::Disabled, // preemptionMode
NEO::RequiredPartitionDim::None, // requiredPartitionDim
NEO::RequiredDispatchWalkOrder::None, // requiredDispatchWalkOrder
NEO::additionalKernelLaunchSizeParamNotSet, // additionalSizeParam
1, // partitionCount
false, // isIndirect
false, // isPredicate
false, // isTimestampEvent
requiresUncachedMocs, // requiresUncachedMocs
false, // useGlobalAtomics
false, // isInternal
false, // isCooperative
false, // isHostScopeSignalEvent
false, // isKernelUsingSystemAllocation
false, // isKernelDispatchedFromImmediateCmdList
false, // isRcs
false // dcFlushEnable
};
return args;

View File

@ -26,7 +26,7 @@ XE_HPC_CORETEST_F(WalkerDispatchTestsXeHpcCore, givenXeHpcWhenEncodeAdditionalWa
auto &rootDeviceEnvironment = *mockExecutionEnvironment.rootDeviceEnvironments[0];
KernelDescriptor kernelDescriptor;
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
{
EncodeDispatchKernel<FamilyType>::encodeAdditionalWalkerFields(rootDeviceEnvironment, walkerCmd, walkerArgs);
EXPECT_FALSE(walkerCmd.getComputeDispatchAllWalkerEnable());

View File

@ -44,7 +44,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcWhenEncodeAdditionalWalkerFieldsThenPo
auto &hwInfo = *rootDeviceEnvironment.getMutableHardwareInfo();
KernelDescriptor kernelDescriptor;
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
for (auto &testInput : testInputs) {
for (auto &deviceId : pvcXlDeviceIds) {
hwInfo.platform.usDeviceID = deviceId;
@ -70,7 +70,7 @@ PVCTEST_F(WalkerDispatchTestsPvc, givenPvcSupportsSystemMemoryFenceWhenNoSystemF
hwInfo.platform.usRevId = 0x3;
KernelDescriptor kernelDescriptor;
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, false, kernelDescriptor};
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, false, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
for (auto &deviceId : pvcXlDeviceIds) {
hwInfo.platform.usDeviceID = deviceId;

View File

@ -78,7 +78,7 @@ DG2TEST_F(CommandEncodeDG2Test, whenProgramComputeWalkerThenApplyL3WAForDg2G10A0
{dg2G12DeviceIds[0], revIdA0}};
KernelDescriptor kernelDescriptor;
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor};
EncodeWalkerArgs walkerArgs{KernelExecutionType::defaultType, true, kernelDescriptor, NEO::RequiredDispatchWalkOrder::None, 0};
for (const auto &[deviceID, revisionID] : dg2Configs) {
hwInfo.platform.usRevId = revisionID;