refactor: Update CFE_STATE

Refactors the CFE_STATE to align with the latest specification.

Related-To: NEO-13147

Signed-off-by: Vysochyn, Illia <illia.vysochyn@intel.com>
This commit is contained in:
Vysochyn, Illia
2024-12-18 14:42:14 +00:00
committed by Compute-Runtime-Automation
parent 1135c1033e
commit 2951f8a411
9 changed files with 37 additions and 14 deletions

View File

@@ -176,7 +176,7 @@ HWTEST2_F(PreambleCfeStateXeHPAndLater, givenNotSetDebugFlagWhenPreambleCfeState
EXPECT_EQ(overDispatchControl, static_cast<uint32_t>(cfeState->getOverDispatchControl()));
}
HWTEST2_F(PreambleCfeStateXeHPAndLater, givenSetDebugFlagWhenPreambleCfeStateIsProgrammedThenCFEStateParamsHaveSetValue, IsAtLeastXeHpCore) {
HWTEST2_F(PreambleCfeStateXeHPAndLater, givenSetDebugFlagWhenPreambleCfeStateIsProgrammedThenCFEStateParamsHaveSetValue, IsWithinXeHpCoreAndXe2HpgCore) {
using CFE_STATE = typename FamilyType::CFE_STATE;
uint32_t expectedValue1 = 1u;

View File

@@ -5989,10 +5989,10 @@ typedef struct tagCFE_STATE {
uint64_t Reserved_64 : BITFIELD_RANGE(32, 63);
// DWORD 3
uint32_t StackIdControl : BITFIELD_RANGE(0, 1);
uint32_t Reserved_98 : BITFIELD_RANGE(2, 9);
uint32_t LargeGrfThreadAdjustDisable : BITFIELD_RANGE(10, 10);
uint32_t DynamicStackIdControl : BITFIELD_RANGE(2, 2);
uint32_t Reserved_99 : BITFIELD_RANGE(3, 10);
uint32_t ComputeOverdispatchDisable : BITFIELD_RANGE(11, 11);
uint32_t Reserved_108 : BITFIELD_RANGE(12, 12);
uint32_t ComputeDispatchAllWalkerEnable : BITFIELD_RANGE(12, 12);
uint32_t SingleSliceDispatchCcsMode : BITFIELD_RANGE(13, 13);
uint32_t OverDispatchControl : BITFIELD_RANGE(14, 15);
uint32_t MaximumNumberOfThreads : BITFIELD_RANGE(16, 31);
@@ -6029,6 +6029,10 @@ typedef struct tagCFE_STATE {
STACK_ID_CONTROL_512 = 0x2,
STACK_ID_CONTROL_256 = 0x3,
} STACK_ID_CONTROL;
typedef enum tagDYNAMIC_STACK_ID_CONTROL {
DYNAMIC_STACK_ID_CONTROL_DISABLED = 0x0,
DYNAMIC_STACK_ID_CONTROL_ENABLED = 0x1,
} DYNAMIC_STACK_ID_CONTROL;
typedef enum tagOVER_DISPATCH_CONTROL {
OVER_DISPATCH_CONTROL_NONE = 0x0,
OVER_DISPATCH_CONTROL_LOW = 0x1,
@@ -6044,6 +6048,7 @@ typedef struct tagCFE_STATE {
TheStructure.Common.Pipeline = PIPELINE_COMPUTE;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.StackIdControl = STACK_ID_CONTROL_2K;
TheStructure.Common.DynamicStackIdControl = DYNAMIC_STACK_ID_CONTROL_ENABLED;
TheStructure.Common.OverDispatchControl = OVER_DISPATCH_CONTROL_NORMAL;
}
static tagCFE_STATE sInit() {
@@ -6078,7 +6083,7 @@ typedef struct tagCFE_STATE {
SCRATCHSPACEBUFFER_ALIGN_SIZE = 0x40,
} SCRATCHSPACEBUFFER;
inline void setScratchSpaceBuffer(const uint64_t value) {
UNRECOVERABLE_IF(value > 0xfffffc00L);
UNRECOVERABLE_IF(value > 0xfffffff);
TheStructure.Common.ScratchSpaceBuffer = static_cast<uint32_t>(value) >> SCRATCHSPACEBUFFER_BIT_SHIFT;
}
inline uint64_t getScratchSpaceBuffer() const {
@@ -6090,11 +6095,11 @@ typedef struct tagCFE_STATE {
inline STACK_ID_CONTROL getStackIdControl() const {
return static_cast<STACK_ID_CONTROL>(TheStructure.Common.StackIdControl);
}
inline void setLargeGRFThreadAdjustDisable(const bool value) {
TheStructure.Common.LargeGrfThreadAdjustDisable = value;
inline void setDynamicStackIdControl(const DYNAMIC_STACK_ID_CONTROL value) {
TheStructure.Common.DynamicStackIdControl = value;
}
inline bool getLargeGRFThreadAdjustDisable() const {
return TheStructure.Common.LargeGrfThreadAdjustDisable;
inline DYNAMIC_STACK_ID_CONTROL getDynamicStackIdControl() const {
return static_cast<DYNAMIC_STACK_ID_CONTROL>(TheStructure.Common.DynamicStackIdControl);
}
inline void setComputeOverdispatchDisable(const bool value) {
TheStructure.Common.ComputeOverdispatchDisable = value;
@@ -6102,6 +6107,12 @@ typedef struct tagCFE_STATE {
inline bool getComputeOverdispatchDisable() const {
return TheStructure.Common.ComputeOverdispatchDisable;
}
inline void setComputeDispatchAllWalkerEnable(const bool value) {
TheStructure.Common.ComputeDispatchAllWalkerEnable = value;
}
inline bool getComputeDispatchAllWalkerEnable() const {
return TheStructure.Common.ComputeDispatchAllWalkerEnable;
}
inline void setSingleSliceDispatchCcsMode(const bool value) {
TheStructure.Common.SingleSliceDispatchCcsMode = value;
}

View File

@@ -217,7 +217,12 @@ endif()
if(SUPPORT_XE2_AND_LATER)
list(APPEND NEO_CORE_HELPERS
${CMAKE_CURRENT_SOURCE_DIR}/gfx_core_helper_xe2_and_later.inl
${CMAKE_CURRENT_SOURCE_DIR}/preamble_xe2_hpg_and_later.inl
)
endif()
if(SUPPORT_XE2_CORE OR SUPPORT_XE_2HPG_CORE)
list(APPEND NEO_CORE_HELPERS
${CMAKE_CURRENT_SOURCE_DIR}/preamble_xe2_hpg.inl
)
endif()

View File

@@ -50,6 +50,9 @@ void PreambleHelper<Family>::appendProgramVFEState(const RootDeviceEnvironment &
if (debugManager.flags.CFEStackIDControl.get() != -1) {
command->setStackIdControl(static_cast<STACK_ID_CONTROL>(debugManager.flags.CFEStackIDControl.get()));
}
if (debugManager.flags.CFELargeGRFThreadAdjustDisable.get() != -1) {
command->setLargeGRFThreadAdjustDisable(debugManager.flags.CFELargeGRFThreadAdjustDisable.get());
}
}
} // namespace NEO

View File

@@ -69,9 +69,6 @@ void PreambleHelper<GfxFamily>::programVfeState(void *pVfeState,
if (debugManager.flags.OverDispatchControl.get() != -1) {
cmd.setOverDispatchControl(static_cast<typename CFE_STATE::OVER_DISPATCH_CONTROL>(debugManager.flags.OverDispatchControl.get()));
}
if (debugManager.flags.CFELargeGRFThreadAdjustDisable.get() != -1) {
cmd.setLargeGRFThreadAdjustDisable(debugManager.flags.CFELargeGRFThreadAdjustDisable.get());
}
*cfeState = cmd;
}

View File

@@ -12,7 +12,7 @@ struct Xe2HpgCoreFamily;
using Family = Xe2HpgCoreFamily;
} // namespace NEO
#include "shared/source/helpers/preamble_xe2_hpg_and_later.inl"
#include "shared/source/helpers/preamble_xe2_hpg.inl"
#include "shared/source/helpers/preamble_xehp_and_later.inl"
namespace NEO {

View File

@@ -36,6 +36,9 @@ void PreambleHelper<Family>::appendProgramVFEState(const RootDeviceEnvironment &
if (debugManager.flags.CFENumberOfWalkers.get() != -1) {
command->setNumberOfWalkers(debugManager.flags.CFENumberOfWalkers.get());
}
if (debugManager.flags.CFELargeGRFThreadAdjustDisable.get() != -1) {
command->setLargeGRFThreadAdjustDisable(debugManager.flags.CFELargeGRFThreadAdjustDisable.get());
}
}
template struct PreambleHelper<Family>;

View File

@@ -32,6 +32,9 @@ void PreambleHelper<Family>::appendProgramVFEState(const RootDeviceEnvironment &
if (debugManager.flags.CFENumberOfWalkers.get() != -1) {
command->setNumberOfWalkers(debugManager.flags.CFENumberOfWalkers.get());
}
if (debugManager.flags.CFELargeGRFThreadAdjustDisable.get() != -1) {
command->setLargeGRFThreadAdjustDisable(debugManager.flags.CFELargeGRFThreadAdjustDisable.get());
}
}
template struct PreambleHelper<Family>;

View File

@@ -32,6 +32,7 @@ using IsBeforeXeHpcCore = IsBeforeGfxCore<IGFX_XE_HPC_CORE>;
using IsAtLeastXe2HpgCore = IsAtLeastGfxCore<IGFX_XE2_HPG_CORE>;
using IsAtMostXe2HpgCore = IsAtMostGfxCore<IGFX_XE2_HPG_CORE>;
using IsWithinXeHpCoreAndXe2HpgCore = IsWithinGfxCore<IGFX_XE_HP_CORE, IGFX_XE2_HPG_CORE>;
using IsXeHpOrXeHpgCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPG_CORE>;
using IsXeHpOrXeHpcCore = IsAnyGfxCores<IGFX_XE_HP_CORE, IGFX_XE_HPC_CORE>;