1
1
/*
2
- * Copyright (C) 2021-2024 Intel Corporation
2
+ * Copyright (C) 2021-2025 Intel Corporation
3
3
*
4
4
* SPDX-License-Identifier: MIT
5
5
*
@@ -5159,23 +5159,21 @@ typedef struct tagCOMPUTE_WALKER {
5159
5159
uint32_t PredicateEnable : BITFIELD_RANGE(8 , 8 );
5160
5160
uint32_t WorkloadPartitionEnable : BITFIELD_RANGE(9 , 9 );
5161
5161
uint32_t IndirectParameterEnable : BITFIELD_RANGE(10 , 10 );
5162
- uint32_t UavWaitToProduce : BITFIELD_RANGE(11 , 11 );
5163
- uint32_t UavProducer : BITFIELD_RANGE(12 , 12 );
5164
- uint32_t UavConsumer : BITFIELD_RANGE(13 , 13 );
5162
+ uint32_t Reserved_11 : BITFIELD_RANGE(11 , 13 );
5165
5163
uint32_t SystolicModeEnable : BITFIELD_RANGE(14 , 14 );
5166
5164
uint32_t Reserved_15 : BITFIELD_RANGE(15 , 15 );
5167
5165
uint32_t CfeSubopcodeVariant : BITFIELD_RANGE(16 , 17 );
5168
5166
uint32_t CfeSubopcode : BITFIELD_RANGE(18 , 23 );
5169
5167
uint32_t ComputeCommandOpcode : BITFIELD_RANGE(24 , 26 );
5170
5168
uint32_t Pipeline : BITFIELD_RANGE(27 , 28 );
5171
5169
uint32_t CommandType : BITFIELD_RANGE(29 , 31 );
5172
- // DWORD 1 of COMPUTE WALKER = DWORD 0 of COMPUTE_WALKER_BODY
5170
+ // DWORD 1
5173
5171
uint32_t Reserved_32 : BITFIELD_RANGE(0 , 7 );
5174
- uint32_t Reserved_40 : BITFIELD_RANGE(8 , 31 );
5172
+ uint32_t DebugObjectId : BITFIELD_RANGE(8 , 31 );
5175
5173
// DWORD 2
5176
5174
uint32_t IndirectDataLength : BITFIELD_RANGE(0 , 16 );
5177
5175
uint32_t L3PrefetchDisable : BITFIELD_RANGE(17 , 17 );
5178
- uint32_t Reserved_82 : BITFIELD_RANGE(18 , 29 );
5176
+ uint32_t PartitionDispatchParameter : BITFIELD_RANGE(18 , 29 );
5179
5177
uint32_t PartitionType : BITFIELD_RANGE(30 , 31 );
5180
5178
// DWORD 3
5181
5179
uint32_t Reserved_96 : BITFIELD_RANGE(0 , 5 );
@@ -5188,7 +5186,7 @@ typedef struct tagCOMPUTE_WALKER {
5188
5186
uint32_t TileLayout : BITFIELD_RANGE(19 , 21 );
5189
5187
uint32_t WalkOrder : BITFIELD_RANGE(22 , 24 );
5190
5188
uint32_t EmitInlineParameter : BITFIELD_RANGE(25 , 25 );
5191
- uint32_t EmitLocalId : BITFIELD_RANGE(26 , 28 );
5189
+ uint32_t EmitLocal : BITFIELD_RANGE(26 , 28 );
5192
5190
uint32_t GenerateLocalId : BITFIELD_RANGE(29 , 29 );
5193
5191
uint32_t SimdSize : BITFIELD_RANGE(30 , 31 );
5194
5192
// DWORD 5
@@ -5227,13 +5225,14 @@ typedef struct tagCOMPUTE_WALKER {
5227
5225
// DWORD 31
5228
5226
uint32_t InlineData[8 ];
5229
5227
} Common;
5230
- uint32_t RawData[31 ];
5228
+ uint32_t RawData[39 ];
5231
5229
} TheStructure;
5232
5230
typedef enum tagDWORD_LENGTH {
5233
5231
DWORD_LENGTH_FIXED_SIZE = 0x25 ,
5234
5232
} DWORD_LENGTH;
5235
5233
typedef enum tagCFE_SUBOPCODE_VARIANT {
5236
5234
CFE_SUBOPCODE_VARIANT_STANDARD = 0x0 ,
5235
+ CFE_SUBOPCODE_VARIANT_TG_RESUME = 0x1 ,
5237
5236
} CFE_SUBOPCODE_VARIANT;
5238
5237
typedef enum tagCFE_SUBOPCODE {
5239
5238
CFE_SUBOPCODE_COMPUTE_WALKER = 0x2 ,
@@ -5253,6 +5252,31 @@ typedef struct tagCOMPUTE_WALKER {
5253
5252
PARTITION_TYPE_Y = 0x2 ,
5254
5253
PARTITION_TYPE_Z = 0x3 ,
5255
5254
} PARTITION_TYPE;
5255
+ typedef enum tagMESSAGE_SIMD {
5256
+ MESSAGE_SIMD_SIMD8 = 0x0 ,
5257
+ MESSAGE_SIMD_SIMD16 = 0x1 ,
5258
+ MESSAGE_SIMD_SIMD32 = 0x2 ,
5259
+ } MESSAGE_SIMD;
5260
+ typedef enum tagTILE_LAYOUT {
5261
+ TILE_LAYOUT_LINEAR = 0x0 ,
5262
+ TILE_LAYOUT_TILEY_32BPE = 0x1 ,
5263
+ TILE_LAYOUT_TILEY_64BPE = 0x2 ,
5264
+ TILE_LAYOUT_TILEY_128BPE = 0x3 ,
5265
+ } TILE_LAYOUT;
5266
+ typedef enum tagWALK_ORDER {
5267
+ WALK_ORDER_WALK_012 = 0x0 ,
5268
+ WALK_ORDER_WALK_021 = 0x1 ,
5269
+ WALK_ORDER_WALK_102 = 0x2 ,
5270
+ WALK_ORDER_WALK_120 = 0x3 ,
5271
+ WALK_ORDER_WALK_201 = 0x4 ,
5272
+ WALK_ORDER_WALK_210 = 0x5 ,
5273
+ } WALK_ORDER;
5274
+ typedef enum tagEMIT_LOCAL {
5275
+ EMIT_LOCAL_EMIT_NONE = 0x0 ,
5276
+ EMIT_LOCAL_EMIT_X = 0x1 ,
5277
+ EMIT_LOCAL_EMIT_XY = 0x3 ,
5278
+ EMIT_LOCAL_EMIT_XYZ = 0x7 ,
5279
+ } EMIT_LOCAL;
5256
5280
typedef enum tagSIMD_SIZE {
5257
5281
SIMD_SIZE_SIMD8 = 0x0 ,
5258
5282
SIMD_SIZE_SIMD16 = 0x1 ,
@@ -5262,7 +5286,7 @@ typedef struct tagCOMPUTE_WALKER {
5262
5286
PARTITION_ID_SUPPORTED_MIN = 0x0 ,
5263
5287
PARTITION_ID_SUPPORTED_MAX = 0xf ,
5264
5288
} PARTITION_ID;
5265
- typedef enum tagDISPATCH_WALK_ORDER {
5289
+ typedef enum tagDISPATCH_WALK_ORDER { // patched
5266
5290
DISPATCH_WALK_ORDER_LINEAR_WALK = 0x0 ,
5267
5291
DISPATCH_WALK_ORDER_Y_ORDER_WALK = 0x1 ,
5268
5292
} DISPATCH_WALK_ORDER;
@@ -5275,9 +5299,16 @@ typedef struct tagCOMPUTE_WALKER {
5275
5299
TheStructure.Common .Pipeline = PIPELINE_COMPUTE;
5276
5300
TheStructure.Common .CommandType = COMMAND_TYPE_GFXPIPE;
5277
5301
TheStructure.Common .PartitionType = PARTITION_TYPE_DISABLED;
5302
+ TheStructure.Common .MessageSimd = MESSAGE_SIMD_SIMD8;
5303
+ TheStructure.Common .TileLayout = TILE_LAYOUT_LINEAR;
5304
+ TheStructure.Common .WalkOrder = WALK_ORDER_WALK_012;
5305
+ TheStructure.Common .EmitLocal = EMIT_LOCAL_EMIT_NONE;
5278
5306
TheStructure.Common .SimdSize = SIMD_SIZE_SIMD8;
5279
5307
TheStructure.Common .InterfaceDescriptor .init ();
5280
5308
TheStructure.Common .PostSync .init ();
5309
+ for (uint32_t i = 0 ; i < 8 ; i++) {
5310
+ TheStructure.Common .InlineData [i] = 0 ;
5311
+ }
5281
5312
}
5282
5313
static tagCOMPUTE_WALKER sInit () {
5283
5314
COMPUTE_WALKER state;
@@ -5288,10 +5319,10 @@ typedef struct tagCOMPUTE_WALKER {
5288
5319
UNRECOVERABLE_IF (index >= 39 );
5289
5320
return TheStructure.RawData [index];
5290
5321
}
5291
- inline void setDwordLength (const DWORD_LENGTH value) {
5322
+ inline void setDwordLength (const DWORD_LENGTH value) { // patched
5292
5323
TheStructure.Common .DwordLength = value;
5293
5324
}
5294
- inline DWORD_LENGTH getDwordLength () const {
5325
+ inline DWORD_LENGTH getDwordLength () const { // patched
5295
5326
return static_cast <DWORD_LENGTH>(TheStructure.Common .DwordLength );
5296
5327
}
5297
5328
inline void setPredicateEnable (const bool value) {
@@ -5312,24 +5343,6 @@ typedef struct tagCOMPUTE_WALKER {
5312
5343
inline bool getIndirectParameterEnable () const {
5313
5344
return TheStructure.Common .IndirectParameterEnable ;
5314
5345
}
5315
- inline void setUavWaitToProduce (const bool value) {
5316
- TheStructure.Common .UavWaitToProduce = value;
5317
- }
5318
- inline bool getUavWaitToProduce () const {
5319
- return TheStructure.Common .UavWaitToProduce ;
5320
- }
5321
- inline void setUavProducer (const bool value) {
5322
- TheStructure.Common .UavProducer = value;
5323
- }
5324
- inline bool getUavProducer () const {
5325
- return TheStructure.Common .UavProducer ;
5326
- }
5327
- inline void setUavConsumer (const bool value) {
5328
- TheStructure.Common .UavConsumer = value;
5329
- }
5330
- inline bool getUavConsumer () const {
5331
- return TheStructure.Common .UavConsumer ;
5332
- }
5333
5346
inline void setSystolicModeEnable (const bool value) {
5334
5347
TheStructure.Common .SystolicModeEnable = value;
5335
5348
}
@@ -5354,6 +5367,13 @@ typedef struct tagCOMPUTE_WALKER {
5354
5367
inline COMPUTE_COMMAND_OPCODE getComputeCommandOpcode () const {
5355
5368
return static_cast <COMPUTE_COMMAND_OPCODE>(TheStructure.Common .ComputeCommandOpcode );
5356
5369
}
5370
+ inline void setDebugObjectId (const uint32_t value) {
5371
+ UNRECOVERABLE_IF (value > 0xffffff );
5372
+ TheStructure.Common .DebugObjectId = value;
5373
+ }
5374
+ inline uint32_t getDebugObjectId () const {
5375
+ return TheStructure.Common .DebugObjectId ;
5376
+ }
5357
5377
inline void setIndirectDataLength (const uint32_t value) {
5358
5378
UNRECOVERABLE_IF (value > 0x1ffff );
5359
5379
TheStructure.Common .IndirectDataLength = value;
@@ -5367,6 +5387,13 @@ typedef struct tagCOMPUTE_WALKER {
5367
5387
inline bool getL3PrefetchDisable () const {
5368
5388
return TheStructure.Common .L3PrefetchDisable ;
5369
5389
}
5390
+ inline void setPartitionDispatchParameter (const uint32_t value) {
5391
+ UNRECOVERABLE_IF (value > 0xfff );
5392
+ TheStructure.Common .PartitionDispatchParameter = value;
5393
+ }
5394
+ inline uint32_t getPartitionDispatchParameter () const {
5395
+ return TheStructure.Common .PartitionDispatchParameter ;
5396
+ }
5370
5397
inline void setPartitionType (const PARTITION_TYPE value) {
5371
5398
TheStructure.Common .PartitionType = value;
5372
5399
}
@@ -5384,47 +5411,46 @@ typedef struct tagCOMPUTE_WALKER {
5384
5411
INDIRECTDATASTARTADDRESS_ALIGN_SIZE = 0x40 ,
5385
5412
} INDIRECTDATASTARTADDRESS;
5386
5413
inline void setIndirectDataStartAddress (const uint32_t value) {
5387
- UNRECOVERABLE_IF (value > 0xffffffc0 );
5388
5414
TheStructure.Common .IndirectDataStartAddress = value >> INDIRECTDATASTARTADDRESS_BIT_SHIFT;
5389
5415
}
5390
5416
inline uint32_t getIndirectDataStartAddress () const {
5391
5417
return TheStructure.Common .IndirectDataStartAddress << INDIRECTDATASTARTADDRESS_BIT_SHIFT;
5392
5418
}
5393
- inline void setMessageSimd (const uint32_t value) {
5419
+ inline void setMessageSimd (const uint32_t value) { // patched
5394
5420
TheStructure.Common .MessageSimd = value;
5395
5421
}
5396
- inline uint32_t getMessageSimd () const {
5422
+ inline uint32_t getMessageSimd () const { // patched
5397
5423
return (TheStructure.Common .MessageSimd );
5398
5424
}
5399
- inline void setTileLayout (const uint32_t value) {
5425
+ inline void setTileLayout (const uint32_t value) { // patched
5400
5426
TheStructure.Common .TileLayout = value;
5401
5427
}
5402
- inline uint32_t getTileLayout () const {
5428
+ inline uint32_t getTileLayout () const { // patched
5403
5429
return (TheStructure.Common .TileLayout );
5404
5430
}
5405
- inline void setWalkOrder (const uint32_t value) {
5431
+ inline void setWalkOrder (const uint32_t value) { // patched
5406
5432
TheStructure.Common .WalkOrder = value;
5407
5433
}
5408
- inline uint32_t getWalkOrder () const {
5434
+ inline uint32_t getWalkOrder () const { // patched
5409
5435
return (TheStructure.Common .WalkOrder );
5410
5436
}
5411
- inline void setEmitInlineParameter (const uint32_t value) {
5437
+ inline void setEmitInlineParameter (const bool value) {
5412
5438
TheStructure.Common .EmitInlineParameter = value;
5413
5439
}
5414
- inline uint32_t getEmitInlineParameter () const {
5415
- return ( TheStructure.Common .EmitInlineParameter ) ;
5440
+ inline bool getEmitInlineParameter () const {
5441
+ return TheStructure.Common .EmitInlineParameter ;
5416
5442
}
5417
- inline void setEmitLocalId (const uint32_t value) {
5418
- TheStructure.Common .EmitLocalId = value;
5443
+ inline void setEmitLocalId (const uint32_t value) { // patched
5444
+ TheStructure.Common .EmitLocal = value;
5419
5445
}
5420
- inline uint32_t getEmitLocalId () const {
5421
- return ( TheStructure.Common .EmitLocalId ) ;
5446
+ inline uint32_t getEmitLocalId () const { // patched
5447
+ return TheStructure.Common .EmitLocal ;
5422
5448
}
5423
- inline void setGenerateLocalId (const uint32_t value) {
5449
+ inline void setGenerateLocalId (const bool value) {
5424
5450
TheStructure.Common .GenerateLocalId = value;
5425
5451
}
5426
- inline uint32_t getGenerateLocalId () const {
5427
- return ( TheStructure.Common .GenerateLocalId ) ;
5452
+ inline bool getGenerateLocalId () const {
5453
+ return TheStructure.Common .GenerateLocalId ;
5428
5454
}
5429
5455
inline void setSimdSize (const SIMD_SIZE value) {
5430
5456
TheStructure.Common .SimdSize = value;
@@ -5439,22 +5465,25 @@ typedef struct tagCOMPUTE_WALKER {
5439
5465
return TheStructure.Common .ExecutionMask ;
5440
5466
}
5441
5467
inline void setLocalXMaximum (const uint32_t value) {
5468
+ UNRECOVERABLE_IF (value > 0x3ff );
5442
5469
TheStructure.Common .LocalXMaximum = value;
5443
5470
}
5444
5471
inline uint32_t getLocalXMaximum () const {
5445
- return ( TheStructure.Common .LocalXMaximum ) ;
5472
+ return TheStructure.Common .LocalXMaximum ;
5446
5473
}
5447
5474
inline void setLocalYMaximum (const uint32_t value) {
5475
+ UNRECOVERABLE_IF (value > 0x3ff );
5448
5476
TheStructure.Common .LocalYMaximum = value;
5449
5477
}
5450
5478
inline uint32_t getLocalYMaximum () const {
5451
- return ( TheStructure.Common .LocalYMaximum ) ;
5479
+ return TheStructure.Common .LocalYMaximum ;
5452
5480
}
5453
5481
inline void setLocalZMaximum (const uint32_t value) {
5482
+ UNRECOVERABLE_IF (value > 0x3ff );
5454
5483
TheStructure.Common .LocalZMaximum = value;
5455
5484
}
5456
5485
inline uint32_t getLocalZMaximum () const {
5457
- return ( TheStructure.Common .LocalZMaximum ) ;
5486
+ return TheStructure.Common .LocalZMaximum ;
5458
5487
}
5459
5488
inline void setThreadGroupIdXDimension (const uint32_t value) {
5460
5489
TheStructure.Common .ThreadGroupIdXDimension = value;
@@ -5537,7 +5566,7 @@ typedef struct tagCOMPUTE_WALKER {
5537
5566
inline uint32_t *getInlineDataPointer () {
5538
5567
return reinterpret_cast <uint32_t *>(&TheStructure.Common .InlineData );
5539
5568
}
5540
- static constexpr uint32_t getInlineDataSize () { // patched
5569
+ static constexpr uint32_t getInlineDataSize () {
5541
5570
return sizeof (TheStructure.Common .InlineData );
5542
5571
}
5543
5572
using InterfaceDescriptorType = std::decay_t <decltype (TheStructure.Common.InterfaceDescriptor)>; // patched
0 commit comments