refactor: Remove 3DSTATE_BTD_BODY structure

Removes 3DSTATE_BTD_BODY as redundant structure.

Related-To: NEO-13147

Signed-off-by: Vysochyn, Illia <illia.vysochyn@intel.com>
This commit is contained in:
Vysochyn, Illia 2024-12-31 15:00:25 +00:00 committed by Compute-Runtime-Automation
parent 9ccecb5a35
commit f198507875
18 changed files with 152 additions and 282 deletions

View File

@ -1708,8 +1708,7 @@ void find3dBtdCommand(LinearStream &cmdStream, size_t offset, size_t size, uint6
if (btdStateCmdCount > 0) {
auto btdStateCmd = reinterpret_cast<_3DSTATE_BTD *>(*btdStateCmdList[0]);
auto &btdStateBody = btdStateCmd->getBtdStateBody();
EXPECT_EQ(gpuVa, btdStateBody.getMemoryBackedBufferBasePointer());
EXPECT_EQ(gpuVa, btdStateCmd->getMemoryBackedBufferBasePointer());
btdCommandFound = true;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -59,8 +59,8 @@ HWTEST2_F(CommandStreamReceiverHwTestDg2AndLater, givenGen12AndLaterWhenRayTraci
_3DSTATE_BTD *cmd = genCmdCast<_3DSTATE_BTD *>(cs.getCpuBase());
ASSERT_NE(nullptr, cmd);
EXPECT_EQ(RayTracingHelper::getMemoryBackedFifoSizeToPatch(), cmd->getBtdStateBody().getPerDssMemoryBackedBufferSize());
EXPECT_EQ(allocation->getGpuAddressToPatch(), cmd->getBtdStateBody().getMemoryBackedBufferBasePointer());
EXPECT_EQ(RayTracingHelper::getMemoryBackedFifoSizeToPatch(), cmd->getPerDssMemoryBackedBufferSize());
EXPECT_EQ(allocation->getGpuAddressToPatch(), cmd->getMemoryBackedBufferBasePointer());
EXPECT_TRUE(commandStreamReceiver.isPerDssBackedBufferSent);
}
@ -115,8 +115,8 @@ HWTEST2_F(CommandStreamReceiverFlushTaskDg2AndLaterTests, givenProgramExtendedPi
auto cmd3dStateBtdCmd = genCmdCast<_3DSTATE_BTD *>(*cmd3dStateBtdIterator);
ASSERT_NE(nullptr, cmd3dStateBtdCmd);
EXPECT_EQ(RayTracingHelper::getMemoryBackedFifoSizeToPatch(), cmd3dStateBtdCmd->getBtdStateBody().getPerDssMemoryBackedBufferSize());
EXPECT_EQ(allocation->getGpuAddressToPatch(), cmd3dStateBtdCmd->getBtdStateBody().getMemoryBackedBufferBasePointer());
EXPECT_EQ(RayTracingHelper::getMemoryBackedFifoSizeToPatch(), cmd3dStateBtdCmd->getPerDssMemoryBackedBufferSize());
EXPECT_EQ(allocation->getGpuAddressToPatch(), cmd3dStateBtdCmd->getMemoryBackedBufferBasePointer());
EXPECT_TRUE(commandStreamReceiver.isPerDssBackedBufferSent);
--cmd3dStateBtdIterator;

View File

@ -1183,8 +1183,8 @@ void EncodeSurfaceState<Family>::encodeExtraCacheSettings(R_SURFACE_STATE *surfa
template <typename Family>
void EncodeEnableRayTracing<Family>::programEnableRayTracing(LinearStream &commandStream, uint64_t backBuffer) {
auto cmd = Family::cmd3dStateBtd;
cmd.getBtdStateBody().setPerDssMemoryBackedBufferSize(static_cast<typename Family::_3DSTATE_BTD_BODY::PER_DSS_MEMORY_BACKED_BUFFER_SIZE>(RayTracingHelper::getMemoryBackedFifoSizeToPatch()));
cmd.getBtdStateBody().setMemoryBackedBufferBasePointer(backBuffer);
cmd.setPerDssMemoryBackedBufferSize(static_cast<typename Family::_3DSTATE_BTD::PER_DSS_MEMORY_BACKED_BUFFER_SIZE>(RayTracingHelper::getMemoryBackedFifoSizeToPatch()));
cmd.setMemoryBackedBufferBasePointer(backBuffer);
append3dStateBtd(&cmd);
*commandStream.getSpaceForCmd<typename Family::_3DSTATE_BTD>() = cmd;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -17,7 +17,6 @@
namespace NEO {
using _3DSTATE_BTD = typename Family::_3DSTATE_BTD;
using _3DSTATE_BTD_BODY = typename Family::_3DSTATE_BTD_BODY;
using PIPE_CONTROL = typename Family::PIPE_CONTROL;
template <>

View File

@ -4924,16 +4924,23 @@ typedef struct tagMI_FLUSH_DW {
} MI_FLUSH_DW;
STATIC_ASSERT(20 == sizeof(MI_FLUSH_DW));
typedef struct tag_3DSTATE_BTD_BODY {
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
uint32_t DispatchTimeoutCounter : BITFIELD_RANGE(0, 2);
uint32_t Reserved_3 : BITFIELD_RANGE(3, 6);
uint32_t ControlsTheMaximumNumberOfOutstandingRayqueriesPerSs : BITFIELD_RANGE(7, 8);
uint32_t Reserved_9 : BITFIELD_RANGE(9, 30);
uint32_t BtdMidThreadPreemption : BITFIELD_RANGE(31, 31);
// DWORD 1
// DWORD 2
uint64_t PerDssMemoryBackedBufferSize : BITFIELD_RANGE(0, 2);
uint64_t Reserved_35 : BITFIELD_RANGE(3, 9);
uint64_t MemoryBackedBufferBasePointer : BITFIELD_RANGE(10, 63);
@ -4943,8 +4950,23 @@ typedef struct tag_3DSTATE_BTD_BODY {
// DWORD 4
uint64_t Reserved_128 : BITFIELD_RANGE(32, 63);
} Common;
uint32_t RawData[5];
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
typedef enum tagDISPATCH_TIMEOUT_COUNTER {
DISPATCH_TIMEOUT_COUNTER_64 = 0x0,
DISPATCH_TIMEOUT_COUNTER_128 = 0x1,
@ -4972,17 +4994,22 @@ typedef struct tag_3DSTATE_BTD_BODY {
} PER_DSS_MEMORY_BACKED_BUFFER_SIZE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.DispatchTimeoutCounter = DISPATCH_TIMEOUT_COUNTER_64;
TheStructure.Common.ControlsTheMaximumNumberOfOutstandingRayqueriesPerSs = CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS_128;
TheStructure.Common.PerDssMemoryBackedBufferSize = PER_DSS_MEMORY_BACKED_BUFFER_SIZE_2KB;
}
static tag_3DSTATE_BTD_BODY sInit() {
_3DSTATE_BTD_BODY state;
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 5);
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setDispatchTimeoutCounter(const DISPATCH_TIMEOUT_COUNTER value) {
@ -5029,63 +5056,6 @@ typedef struct tag_3DSTATE_BTD_BODY {
inline uint64_t getScratchSpaceBuffer() const {
return TheStructure.Common.ScratchSpaceBuffer << SCRATCHSPACEBUFFER_BIT_SHIFT;
}
} _3DSTATE_BTD_BODY;
STATIC_ASSERT(20 == sizeof(_3DSTATE_BTD_BODY));
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
_3DSTATE_BTD_BODY BtdStateBody;
} Common;
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.BtdStateBody.init();
}
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setBtdStateBody(const _3DSTATE_BTD_BODY &value) {
TheStructure.Common.BtdStateBody = value;
}
inline _3DSTATE_BTD_BODY &getBtdStateBody() {
return TheStructure.Common.BtdStateBody;
}
} _3DSTATE_BTD;
STATIC_ASSERT(24 == sizeof(_3DSTATE_BTD));
STATIC_ASSERT(NEO::TypeTraits::isPodV<_3DSTATE_BTD>); // patched

View File

@ -4911,17 +4911,24 @@ typedef struct tagMI_FLUSH_DW {
} MI_FLUSH_DW;
STATIC_ASSERT(20 == sizeof(MI_FLUSH_DW));
typedef struct tag_3DSTATE_BTD_BODY {
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
uint32_t DispatchTimeoutCounter : BITFIELD_RANGE(0, 2);
uint32_t Reserved_3 : BITFIELD_RANGE(3, 6);
uint32_t ControlsTheMaximumNumberOfOutstandingRayqueriesPerSs : BITFIELD_RANGE(7, 8);
uint32_t Reserved_9 : BITFIELD_RANGE(9, 29);
uint32_t RtMemStructures64bModeEnable : BITFIELD_RANGE(30, 30);
uint32_t BtdMidThreadPreemption : BITFIELD_RANGE(31, 31);
// DWORD 1
// DWORD 2
uint64_t PerDssMemoryBackedBufferSize : BITFIELD_RANGE(0, 2);
uint64_t Reserved_35 : BITFIELD_RANGE(3, 9);
uint64_t MemoryBackedBufferBasePointer : BITFIELD_RANGE(10, 63);
@ -4931,8 +4938,23 @@ typedef struct tag_3DSTATE_BTD_BODY {
// DWORD 4
uint64_t Reserved_128 : BITFIELD_RANGE(32, 63);
} Common;
uint32_t RawData[5];
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
typedef enum tagDISPATCH_TIMEOUT_COUNTER {
DISPATCH_TIMEOUT_COUNTER_64 = 0x0,
DISPATCH_TIMEOUT_COUNTER_128 = 0x1,
@ -4960,17 +4982,22 @@ typedef struct tag_3DSTATE_BTD_BODY {
} PER_DSS_MEMORY_BACKED_BUFFER_SIZE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.DispatchTimeoutCounter = DISPATCH_TIMEOUT_COUNTER_64;
TheStructure.Common.ControlsTheMaximumNumberOfOutstandingRayqueriesPerSs = CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS_128;
TheStructure.Common.PerDssMemoryBackedBufferSize = PER_DSS_MEMORY_BACKED_BUFFER_SIZE_2KB;
}
static tag_3DSTATE_BTD_BODY sInit() {
_3DSTATE_BTD_BODY state;
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 5);
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setDispatchTimeoutCounter(const DISPATCH_TIMEOUT_COUNTER value) {
@ -5023,63 +5050,6 @@ typedef struct tag_3DSTATE_BTD_BODY {
inline uint64_t getScratchSpaceBuffer() const {
return TheStructure.Common.ScratchSpaceBuffer << SCRATCHSPACEBUFFER_BIT_SHIFT;
}
} _3DSTATE_BTD_BODY;
STATIC_ASSERT(20 == sizeof(_3DSTATE_BTD_BODY));
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
_3DSTATE_BTD_BODY BtdStateBody;
} Common;
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.BtdStateBody.init();
}
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setBtdStateBody(const _3DSTATE_BTD_BODY &value) {
TheStructure.Common.BtdStateBody = value;
}
inline _3DSTATE_BTD_BODY &getBtdStateBody() {
return TheStructure.Common.BtdStateBody;
}
} _3DSTATE_BTD;
STATIC_ASSERT(24 == sizeof(_3DSTATE_BTD));
STATIC_ASSERT(NEO::TypeTraits::isPodV<_3DSTATE_BTD>); // patched

View File

@ -4903,15 +4903,22 @@ struct MI_FLUSH_DW {
};
STATIC_ASSERT(20 == sizeof(MI_FLUSH_DW));
typedef struct tag_3DSTATE_BTD_BODY {
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
uint32_t DispatchTimeoutCounter : BITFIELD_RANGE(0, 1);
uint32_t Reserved_2 : BITFIELD_RANGE(2, 2);
uint32_t AmfsMode : BITFIELD_RANGE(3, 4);
uint32_t Reserved_5 : BITFIELD_RANGE(5, 31);
// DWORD 1
// DWORD 2
uint64_t PerDssMemoryBackedBufferSize : BITFIELD_RANGE(0, 2);
uint64_t Reserved_35 : BITFIELD_RANGE(3, 9);
uint64_t MemoryBackedBufferBasePointer : BITFIELD_RANGE(10, 63);
@ -4922,8 +4929,23 @@ typedef struct tag_3DSTATE_BTD_BODY {
// DWORD 4
uint64_t Reserved_128 : BITFIELD_RANGE(32, 63);
} Common;
uint32_t RawData[5];
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
typedef enum tagAMFS_MODE {
AMFS_MODE_NORMAL_MODE = 0x0,
AMFS_MODE_TOUCH_MODE = 0x1,
@ -4941,16 +4963,21 @@ typedef struct tag_3DSTATE_BTD_BODY {
} PER_DSS_MEMORY_BACKED_BUFFER_SIZE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.AmfsMode = AMFS_MODE_NORMAL_MODE;
TheStructure.Common.PerDssMemoryBackedBufferSize = PER_DSS_MEMORY_BACKED_BUFFER_SIZE_128KB;
}
static tag_3DSTATE_BTD_BODY sInit() {
_3DSTATE_BTD_BODY state;
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 5);
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setDispatchTimeoutCounter(const uint32_t value) {
@ -5001,63 +5028,6 @@ typedef struct tag_3DSTATE_BTD_BODY {
inline uint64_t getBtdScratchSpaceBasePointer() const {
return TheStructure.Common.BtdScratchSpaceBasePointer << BTDSCRATCHSPACEBASEPOINTER_BIT_SHIFT;
}
} _3DSTATE_BTD_BODY;
STATIC_ASSERT(20 == sizeof(_3DSTATE_BTD_BODY));
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
_3DSTATE_BTD_BODY BtdStateBody;
} Common;
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.BtdStateBody.init();
}
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setBtdStateBody(const _3DSTATE_BTD_BODY &value) {
TheStructure.Common.BtdStateBody = value;
}
inline _3DSTATE_BTD_BODY &getBtdStateBody() {
return TheStructure.Common.BtdStateBody;
}
} _3DSTATE_BTD;
STATIC_ASSERT(24 == sizeof(_3DSTATE_BTD));
STATIC_ASSERT(NEO::TypeTraits::isPodV<_3DSTATE_BTD>);

View File

@ -4657,15 +4657,22 @@ struct MI_FLUSH_DW {
};
STATIC_ASSERT(20 == sizeof(MI_FLUSH_DW));
typedef struct tag_3DSTATE_BTD_BODY {
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
uint32_t DispatchTimeoutCounter : BITFIELD_RANGE(0, 1);
uint32_t Reserved_2 : BITFIELD_RANGE(2, 2);
uint32_t AmfsMode : BITFIELD_RANGE(3, 4);
uint32_t Reserved_5 : BITFIELD_RANGE(5, 31);
// DWORD 1
// DWORD 2
uint64_t PerDssMemoryBackedBufferSize : BITFIELD_RANGE(0, 2);
uint64_t Reserved_35 : BITFIELD_RANGE(3, 9);
uint64_t MemoryBackedBufferBasePointer : BITFIELD_RANGE(10, 63);
@ -4676,8 +4683,23 @@ typedef struct tag_3DSTATE_BTD_BODY {
// DWORD 4
uint64_t Reserved_128 : BITFIELD_RANGE(32, 63);
} Common;
uint32_t RawData[5];
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
typedef enum tagAMFS_MODE {
AMFS_MODE_NORMAL_MODE = 0x0,
AMFS_MODE_TOUCH_MODE = 0x1,
@ -4695,16 +4717,21 @@ typedef struct tag_3DSTATE_BTD_BODY {
} PER_DSS_MEMORY_BACKED_BUFFER_SIZE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.AmfsMode = AMFS_MODE_NORMAL_MODE;
TheStructure.Common.PerDssMemoryBackedBufferSize = PER_DSS_MEMORY_BACKED_BUFFER_SIZE_128KB;
}
static tag_3DSTATE_BTD_BODY sInit() {
_3DSTATE_BTD_BODY state;
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 5);
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setDispatchTimeoutCounter(const uint32_t value) {
@ -4755,63 +4782,6 @@ typedef struct tag_3DSTATE_BTD_BODY {
inline uint64_t getBtdScratchSpaceBasePointer() const {
return TheStructure.Common.BtdScratchSpaceBasePointer << BTDSCRATCHSPACEBASEPOINTER_BIT_SHIFT;
}
} _3DSTATE_BTD_BODY;
STATIC_ASSERT(20 == sizeof(_3DSTATE_BTD_BODY));
typedef struct tag_3DSTATE_BTD {
union tagTheStructure {
struct tagCommon {
// DWORD 0
uint32_t DwordLength : BITFIELD_RANGE(0, 7);
uint32_t Reserved_8 : BITFIELD_RANGE(8, 15);
uint32_t _3DCommandSubOpcode : BITFIELD_RANGE(16, 23);
uint32_t _3DCommandOpcode : BITFIELD_RANGE(24, 26);
uint32_t CommandSubtype : BITFIELD_RANGE(27, 28);
uint32_t CommandType : BITFIELD_RANGE(29, 31);
// DWORD 1
_3DSTATE_BTD_BODY BtdStateBody;
} Common;
uint32_t RawData[6];
} TheStructure;
typedef enum tagDWORD_LENGTH {
DWORD_LENGTH_DWORD_COUNT_N = 0x4,
} DWORD_LENGTH;
typedef enum tag_3D_COMMAND_SUB_OPCODE {
_3D_COMMAND_SUB_OPCODE_3DSTATE_BTD = 0x6,
} _3D_COMMAND_SUB_OPCODE;
typedef enum tag_3D_COMMAND_OPCODE {
_3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED = 0x1,
} _3D_COMMAND_OPCODE;
typedef enum tagCOMMAND_SUBTYPE {
COMMAND_SUBTYPE_GFXPIPE_COMMON = 0x0,
} COMMAND_SUBTYPE;
typedef enum tagCOMMAND_TYPE {
COMMAND_TYPE_GFXPIPE = 0x3,
} COMMAND_TYPE;
inline void init() {
memset(&TheStructure, 0, sizeof(TheStructure));
TheStructure.Common.DwordLength = DWORD_LENGTH_DWORD_COUNT_N;
TheStructure.Common._3DCommandSubOpcode = _3D_COMMAND_SUB_OPCODE_3DSTATE_BTD;
TheStructure.Common._3DCommandOpcode = _3D_COMMAND_OPCODE_GFXPIPE_NONPIPELINED;
TheStructure.Common.CommandSubtype = COMMAND_SUBTYPE_GFXPIPE_COMMON;
TheStructure.Common.CommandType = COMMAND_TYPE_GFXPIPE;
TheStructure.Common.BtdStateBody.init();
}
static tag_3DSTATE_BTD sInit() {
_3DSTATE_BTD state;
state.init();
return state;
}
inline uint32_t &getRawData(const uint32_t index) {
UNRECOVERABLE_IF(index >= 6);
return TheStructure.RawData[index];
}
inline void setBtdStateBody(const _3DSTATE_BTD_BODY &value) {
TheStructure.Common.BtdStateBody = value;
}
inline _3DSTATE_BTD_BODY &getBtdStateBody() {
return TheStructure.Common.BtdStateBody;
}
} _3DSTATE_BTD;
STATIC_ASSERT(24 == sizeof(_3DSTATE_BTD));
STATIC_ASSERT(NEO::TypeTraits::isPodV<_3DSTATE_BTD>);

View File

@ -28,18 +28,18 @@ namespace NEO {
template <>
void EncodeEnableRayTracing<Family>::append3dStateBtd(void *ptr3dStateBtd) {
using _3DSTATE_BTD = typename Family::_3DSTATE_BTD;
using DISPATCH_TIMEOUT_COUNTER = typename Family::_3DSTATE_BTD_BODY::DISPATCH_TIMEOUT_COUNTER;
using CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS = typename Family::_3DSTATE_BTD_BODY::CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS;
using DISPATCH_TIMEOUT_COUNTER = typename Family::_3DSTATE_BTD::DISPATCH_TIMEOUT_COUNTER;
using CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS = typename Family::_3DSTATE_BTD::CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS;
auto cmd = static_cast<_3DSTATE_BTD *>(ptr3dStateBtd);
if (debugManager.flags.ForceTheMaximumNumberOfOutstandingRayqueriesPerSs.get() != -1) {
auto value = static_cast<CONTROLS_THE_MAXIMUM_NUMBER_OF_OUTSTANDING_RAYQUERIES_PER_SS>(debugManager.flags.ForceTheMaximumNumberOfOutstandingRayqueriesPerSs.get());
DEBUG_BREAK_IF(value > 3);
cmd->getBtdStateBody().setControlsTheMaximumNumberOfOutstandingRayqueriesPerSs(value);
cmd->setControlsTheMaximumNumberOfOutstandingRayqueriesPerSs(value);
}
if (debugManager.flags.ForceDispatchTimeoutCounter.get() != -1) {
auto value = static_cast<DISPATCH_TIMEOUT_COUNTER>(debugManager.flags.ForceDispatchTimeoutCounter.get());
DEBUG_BREAK_IF(value > 7);
cmd->getBtdStateBody().setDispatchTimeoutCounter(value);
cmd->setDispatchTimeoutCounter(value);
}
}

View File

@ -316,7 +316,6 @@ const Family::MEM_COPY Family::cmdInitXyCopyBlt = Family::MEM_COPY::sInit();
const Family::XY_FAST_COLOR_BLT Family::cmdInitXyColorBlt = Family::XY_FAST_COLOR_BLT::sInit();
const Family::STATE_PREFETCH Family::cmdInitStatePrefetch = Family::STATE_PREFETCH::sInit();
const Family::_3DSTATE_BTD Family::cmd3dStateBtd = Family::_3DSTATE_BTD::sInit();
const Family::_3DSTATE_BTD_BODY Family::cmd3dStateBtdBody = Family::_3DSTATE_BTD_BODY::sInit();
const Family::MI_MEM_FENCE Family::cmdInitMemFence = Family::MI_MEM_FENCE::sInit();
const Family::MEM_SET Family::cmdInitMemSet = Family::MEM_SET::sInit();
const Family::STATE_SIP Family::cmdInitStateSip = Family::STATE_SIP::sInit();

View File

@ -142,7 +142,6 @@ struct Xe2HpgCoreFamily : public Xe2HpgCore {
static const XY_FAST_COLOR_BLT cmdInitXyColorBlt;
static const STATE_PREFETCH cmdInitStatePrefetch;
static const _3DSTATE_BTD cmd3dStateBtd;
static const _3DSTATE_BTD_BODY cmd3dStateBtdBody;
static const MI_MEM_FENCE cmdInitMemFence;
static const MEM_SET cmdInitMemSet;
static const STATE_SIP cmdInitStateSip;

View File

@ -144,7 +144,6 @@ struct Xe3CoreFamily : public Xe3Core {
static const XY_FAST_COLOR_BLT cmdInitXyColorBlt;
static const STATE_PREFETCH cmdInitStatePrefetch;
static const _3DSTATE_BTD cmd3dStateBtd;
static const _3DSTATE_BTD_BODY cmd3dStateBtdBody;
static const MI_MEM_FENCE cmdInitMemFence;
static const MEM_SET cmdInitMemSet;
static const STATE_SIP cmdInitStateSip;

View File

@ -344,7 +344,6 @@ const Family::MEM_COPY Family::cmdInitXyCopyBlt = Family::MEM_COPY::sInit();
const Family::XY_FAST_COLOR_BLT Family::cmdInitXyColorBlt = Family::XY_FAST_COLOR_BLT::sInit();
const Family::STATE_PREFETCH Family::cmdInitStatePrefetch = Family::STATE_PREFETCH::sInit();
const Family::_3DSTATE_BTD Family::cmd3dStateBtd = Family::_3DSTATE_BTD::sInit();
const Family::_3DSTATE_BTD_BODY Family::cmd3dStateBtdBody = Family::_3DSTATE_BTD_BODY::sInit();
const Family::MI_MEM_FENCE Family::cmdInitMemFence = Family::MI_MEM_FENCE::sInit();
const Family::MEM_SET Family::cmdInitMemSet = Family::MEM_SET::sInit();
const Family::STATE_SIP Family::cmdInitStateSip = Family::STATE_SIP::sInit();

View File

@ -124,7 +124,6 @@ struct XeHpcCoreFamily : public XeHpcCore {
static const XY_FAST_COLOR_BLT cmdInitXyColorBlt;
static const STATE_PREFETCH cmdInitStatePrefetch;
static const _3DSTATE_BTD cmd3dStateBtd;
static const _3DSTATE_BTD_BODY cmd3dStateBtdBody;
static const MI_MEM_FENCE cmdInitMemFence;
static const MEM_SET cmdInitMemSet;
static const STATE_SIP cmdInitStateSip;

View File

@ -190,6 +190,5 @@ const Family::XY_BLOCK_COPY_BLT Family::cmdInitXyBlockCopyBlt = Family::XY_BLOCK
const Family::XY_BLOCK_COPY_BLT Family::cmdInitXyCopyBlt = Family::XY_BLOCK_COPY_BLT::sInit();
const Family::XY_FAST_COLOR_BLT Family::cmdInitXyColorBlt = Family::XY_FAST_COLOR_BLT::sInit();
const Family::_3DSTATE_BTD Family::cmd3dStateBtd = Family::_3DSTATE_BTD::sInit();
const Family::_3DSTATE_BTD_BODY Family::cmd3dStateBtdBody = Family::_3DSTATE_BTD_BODY::sInit();
const Family::STATE_SIP Family::cmdInitStateSip = Family::STATE_SIP::sInit();
} // namespace NEO

View File

@ -145,7 +145,6 @@ struct XeHpgCoreFamily : public XeHpgCore {
static const XY_BLOCK_COPY_BLT cmdInitXyCopyBlt;
static const XY_FAST_COLOR_BLT cmdInitXyColorBlt;
static const _3DSTATE_BTD cmd3dStateBtd;
static const _3DSTATE_BTD_BODY cmd3dStateBtdBody;
static const STATE_SIP cmdInitStateSip;
static constexpr bool isQwordInOrderCounter = false;
static constexpr bool walkerPostSyncSupport = true;

View File

@ -3592,8 +3592,7 @@ HWTEST2_F(CommandStreamReceiverHwTest,
auto btdStateCmd = hwParserCsr.getCommand<_3DSTATE_BTD>();
ASSERT_NE(nullptr, btdStateCmd);
auto &btdStateBody = btdStateCmd->getBtdStateBody();
EXPECT_EQ(rtAllocationAddress, btdStateBody.getMemoryBackedBufferBasePointer());
EXPECT_EQ(rtAllocationAddress, btdStateCmd->getMemoryBackedBufferBasePointer());
uint32_t residentCount = 1;
commandStreamReceiver.isMadeResident(rtAllocation, residentCount);

View File

@ -18,7 +18,7 @@ using namespace NEO;
using CommandEncodeEnableRayTracing = Test<CommandEncodeStatesFixture>;
HWTEST2_F(CommandEncodeEnableRayTracing, givenDefaultDebugFlagsWhenProgramEnableRayTracingThenBtdStateBodyIsSetProperly, IsXe2HpgCore) {
HWTEST2_F(CommandEncodeEnableRayTracing, givenDefaultDebugFlagsWhenProgramEnableRayTracingThenBtdStateIsSetProperly, IsXe2HpgCore) {
using _3DSTATE_BTD = typename FamilyType::_3DSTATE_BTD;
DebugManagerStateRestore restore;
debugManager.flags.ForceTheMaximumNumberOfOutstandingRayqueriesPerSs.set(-1);
@ -41,11 +41,11 @@ HWTEST2_F(CommandEncodeEnableRayTracing, givenDefaultDebugFlagsWhenProgramEnable
ASSERT_NE(iterator3dStateBtd, commands.end());
auto cmd3dStateBtd = genCmdCast<_3DSTATE_BTD *>(*iterator3dStateBtd);
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getBtdStateBody().getControlsTheMaximumNumberOfOutstandingRayqueriesPerSs()), 0);
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getBtdStateBody().getDispatchTimeoutCounter()), 0);
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getControlsTheMaximumNumberOfOutstandingRayqueriesPerSs()), 0);
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getDispatchTimeoutCounter()), 0);
}
HWTEST2_F(CommandEncodeEnableRayTracing, givenDebugFlagsWhenProgramEnableRayTracingThenBtdStateBodyIsSetProperly, IsXe2HpgCore) {
HWTEST2_F(CommandEncodeEnableRayTracing, givenDebugFlagsWhenProgramEnableRayTracingThenBtdStateIsSetProperly, IsXe2HpgCore) {
using _3DSTATE_BTD = typename FamilyType::_3DSTATE_BTD;
DebugManagerStateRestore restore;
debugManager.flags.ForceTheMaximumNumberOfOutstandingRayqueriesPerSs.set(1);
@ -68,6 +68,6 @@ HWTEST2_F(CommandEncodeEnableRayTracing, givenDebugFlagsWhenProgramEnableRayTrac
ASSERT_NE(iterator3dStateBtd, commands.end());
auto cmd3dStateBtd = genCmdCast<_3DSTATE_BTD *>(*iterator3dStateBtd);
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getBtdStateBody().getControlsTheMaximumNumberOfOutstandingRayqueriesPerSs()), debugManager.flags.ForceTheMaximumNumberOfOutstandingRayqueriesPerSs.get());
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getBtdStateBody().getDispatchTimeoutCounter()), debugManager.flags.ForceDispatchTimeoutCounter.get());
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getControlsTheMaximumNumberOfOutstandingRayqueriesPerSs()), debugManager.flags.ForceTheMaximumNumberOfOutstandingRayqueriesPerSs.get());
EXPECT_EQ(static_cast<int32_t>(cmd3dStateBtd->getDispatchTimeoutCounter()), debugManager.flags.ForceDispatchTimeoutCounter.get());
}