1 /*========================== begin_copyright_notice ============================ 2 3 Copyright (C) 2017-2021 Intel Corporation 4 5 SPDX-License-Identifier: MIT 6 7 ============================= end_copyright_notice ===========================*/ 8 9 /*****************************************************************************\ 10 Abstract: Contains common patch structure definitions 11 \*****************************************************************************/ 12 #pragma once 13 #include <stdint.h> 14 15 #pragma pack( push, 1 ) 16 17 namespace iOpenCL 18 { 19 const uint32_t CURRENT_ICBE_VERSION = 1070; 20 const uint32_t MAGIC_CL = 0x494E5443; // 'I', 'N', 'T', 'C' 21 const uint32_t INVALID_INDEX = 0xFFFFFFFF; 22 23 /*****************************************************************************\ 24 STRUCT: SProgramBinaryHeader 25 \*****************************************************************************/ 26 struct SProgramBinaryHeader 27 { 28 uint32_t Magic; 29 uint32_t Version; 30 31 uint32_t Device; 32 uint32_t GPUPointerSizeInBytes; 33 34 uint32_t NumberOfKernels; 35 36 uint32_t SteppingId; 37 38 uint32_t PatchListSize; 39 }; 40 41 // Update CURRENT_ICBE_VERSION when modifying the patch list 42 static_assert( sizeof( SProgramBinaryHeader ) == 28 , "The size of SProgramBinaryHeader is not what is expected" ); 43 44 /*****************************************************************************\ 45 STRUCT: SKernelBinaryHeader 46 \*****************************************************************************/ 47 struct SKernelBinaryHeader 48 { 49 uint32_t CheckSum; 50 uint64_t ShaderHashCode; 51 uint32_t KernelNameSize; 52 uint32_t PatchListSize; 53 }; 54 55 // Update CURRENT_ICBE_VERSION when modifying the patch list 56 static_assert( sizeof( SKernelBinaryHeader ) == 20 , "The size of SKernelBinaryHeader is not what is expected" ); 57 58 /*****************************************************************************\ 59 STRUCT: SKernelBinaryHeaderCommon (used by Gen7, Gen7.5, Gen8, Gen9, Gen10) 60 \*****************************************************************************/ 61 struct SKernelBinaryHeaderCommon : 62 SKernelBinaryHeader 63 { 64 uint32_t KernelHeapSize; 65 uint32_t GeneralStateHeapSize; 66 uint32_t DynamicStateHeapSize; 67 uint32_t SurfaceStateHeapSize; 68 uint32_t KernelUnpaddedSize; 69 }; 70 71 // Update CURRENT_ICBE_VERSION when modifying the patch list 72 static_assert( sizeof( SKernelBinaryHeaderCommon ) == ( 20 + sizeof( SKernelBinaryHeader ) ) , "The size of SKernelBinaryHeaderCommon is not what is expected" ); 73 74 /*****************************************************************************\ 75 ENUM: PATCH_TOKEN 76 \*****************************************************************************/ 77 enum PATCH_TOKEN 78 { 79 PATCH_TOKEN_UNKNOWN, // 0 - (Unused) 80 PATCH_TOKEN_MEDIA_STATE_POINTERS, // 1 - (Unused) 81 PATCH_TOKEN_STATE_SIP, // 2 @SPatchStateSIP@ 82 PATCH_TOKEN_CS_URB_STATE, // 3 - (Unused) 83 PATCH_TOKEN_CONSTANT_BUFFER, // 4 - (Unused) 84 PATCH_TOKEN_SAMPLER_STATE_ARRAY, // 5 @SPatchSamplerStateArray@ 85 PATCH_TOKEN_INTERFACE_DESCRIPTOR, // 6 - (Unused) 86 PATCH_TOKEN_VFE_STATE, // 7 - (Unused) 87 PATCH_TOKEN_BINDING_TABLE_STATE, // 8 @SPatchBindingTableState@ 88 PATCH_TOKEN_ALLOCATE_SCRATCH_SURFACE, // 9 - (Unused) 89 PATCH_TOKEN_ALLOCATE_SIP_SURFACE, // 10 @SPatchAllocateSystemThreadSurface@ 90 PATCH_TOKEN_GLOBAL_MEMORY_OBJECT_KERNEL_ARGUMENT, // 11 @SPatchGlobalMemoryObjectKernelArgument@ - OpenCL 91 PATCH_TOKEN_IMAGE_MEMORY_OBJECT_KERNEL_ARGUMENT, // 12 @SPatchImageMemoryObjectKernelArgument@ - OpenCL 92 PATCH_TOKEN_CONSTANT_MEMORY_OBJECT_KERNEL_ARGUMENT, // 13 - (Unused) - OpenCL 93 PATCH_TOKEN_ALLOCATE_SURFACE_WITH_INITIALIZATION, // 14 - (Unused) 94 PATCH_TOKEN_ALLOCATE_LOCAL_SURFACE, // 15 @SPatchAllocateLocalSurface@ 95 PATCH_TOKEN_SAMPLER_KERNEL_ARGUMENT, // 16 @SPatchSamplerKernelArgument@ - OpenCL 96 PATCH_TOKEN_DATA_PARAMETER_BUFFER, // 17 @SPatchDataParameterBuffer@ - OpenCL 97 PATCH_TOKEN_MEDIA_VFE_STATE, // 18 @SPatchMediaVFEState@ 98 PATCH_TOKEN_MEDIA_INTERFACE_DESCRIPTOR_LOAD, // 19 @SPatchMediaInterfaceDescriptorLoad@ 99 PATCH_TOKEN_MEDIA_CURBE_LOAD, // 20 - (Unused) 100 PATCH_TOKEN_INTERFACE_DESCRIPTOR_DATA, // 21 @SPatchInterfaceDescriptorData@ 101 PATCH_TOKEN_THREAD_PAYLOAD, // 22 @SPatchThreadPayload@ 102 PATCH_TOKEN_EXECUTION_ENVIRONMENT, // 23 @SPatchExecutionEnvironment@ 103 PATCH_TOKEN_ALLOCATE_PRIVATE_MEMORY, // 24 - (Unused) 104 PATCH_TOKEN_DATA_PARAMETER_STREAM, // 25 @SPatchDataParameterStream 105 PATCH_TOKEN_KERNEL_ARGUMENT_INFO, // 26 @SPatchKernelArgumentInfo@ - OpenCL 106 PATCH_TOKEN_KERNEL_ATTRIBUTES_INFO, // 27 @SPatchKernelAttributesInfo@ - OpenCL 107 PATCH_TOKEN_STRING, // 28 @SPatchString@ - OpenCL 108 PATCH_TOKEN_ALLOCATE_PRINTF_SURFACE, // 29 - (Unused) - OpenCL 109 PATCH_TOKEN_STATELESS_GLOBAL_MEMORY_OBJECT_KERNEL_ARGUMENT, // 30 @SPatchStatelessGlobalMemoryObjectKernelArgument@ - OpenCL 110 PATCH_TOKEN_STATELESS_CONSTANT_MEMORY_OBJECT_KERNEL_ARGUMENT,//31 @SPatchStatelessConstantMemoryObjectKernelArgument@ - OpenCL 111 PATCH_TOKEN_ALLOCATE_STATELESS_SURFACE_WITH_INITIALIZATION, // 32 - (Unused) 112 PATCH_TOKEN_ALLOCATE_STATELESS_PRINTF_SURFACE, // 33 @SPatchAllocateStatelessPrintfSurface@ 113 PATCH_TOKEN_CB_MAPPING, // 34 - (Unused) 114 PATCH_TOKEN_CB2CR_GATHER_TABLE, // 35 - (Unused) 115 PATCH_TOKEN_ALLOCATE_STATELESS_EVENT_POOL_SURFACE, // 36 @SPatchAllocateStatelessEventPoolSurface@ 116 PATCH_TOKEN_NULL_SURFACE_LOCATION, // 37 - (Unused) 117 PATCH_TOKEN_ALLOCATE_STATELESS_PRIVATE_MEMORY, // 38 @SPatchAllocateStatelessPrivateSurface@ 118 PATCH_TOKEN_ALLOCATE_CONSTANT_MEMORY_SURFACE_WITH_INITIALIZATION, // 39 - (Unused) 119 PATCH_TOKEN_ALLOCATE_GLOBAL_MEMORY_SURFACE_WITH_INITIALIZATION, // 40 - (Unused) 120 PATCH_TOKEN_ALLOCATE_GLOBAL_MEMORY_SURFACE_PROGRAM_BINARY_INFO, // 41 @SPatchAllocateGlobalMemorySurfaceProgramBinaryInfo@ 121 PATCH_TOKEN_ALLOCATE_CONSTANT_MEMORY_SURFACE_PROGRAM_BINARY_INFO, // 42 @SPatchAllocateConstantMemorySurfaceProgramBinaryInfo@ 122 PATCH_TOKEN_ALLOCATE_STATELESS_GLOBAL_MEMORY_SURFACE_WITH_INITIALIZATION, // 43 @SPatchAllocateStatelessGlobalMemorySurfaceWithInitialization@ 123 PATCH_TOKEN_ALLOCATE_STATELESS_CONSTANT_MEMORY_SURFACE_WITH_INITIALIZATION, // 44 @SPatchAllocateStatelessConstantMemorySurfaceWithInitialization@ 124 PATCH_TOKEN_ALLOCATE_STATELESS_DEFAULT_DEVICE_QUEUE_SURFACE, // 45 @SPatchAllocateStatelessDefaultDeviceQueueSurface@ 125 PATCH_TOKEN_STATELESS_DEVICE_QUEUE_KERNEL_ARGUMENT, // 46 @SPatchStatelessDeviceQueueKernelArgument@ 126 PATCH_TOKEN_GLOBAL_POINTER_PROGRAM_BINARY_INFO, // 47 @SPatchGlobalPointerProgramBinaryInfo@ 127 PATCH_TOKEN_CONSTANT_POINTER_PROGRAM_BINARY_INFO, // 48 @SPatchConstantPointerProgramBinaryInfo@ 128 PATCH_TOKEN_CONSTRUCTOR_DESTRUCTOR_KERNEL_PROGRAM_BINARY_INFO, // 49 - (Unused) 129 PATCH_TOKEN_INLINE_VME_SAMPLER_INFO, // 50 - (Unused) 130 PATCH_TOKEN_GTPIN_FREE_GRF_INFO, // 51 @SPatchGtpinFreeGRFInfo@ 131 PATCH_TOKEN_GTPIN_INFO, // 52 @SPatchItemHeader@ 132 PATCH_TOKEN_PROGRAM_SYMBOL_TABLE, // 53 @SPatchFunctionTableInfo@ 133 PATCH_TOKEN_PROGRAM_RELOCATION_TABLE, // 54 @SPatchFunctionTableInfo@ 134 PATCH_TOKEN_MEDIA_VFE_STATE_SLOT1, // 55 @SPatchMediaVFEState of slot1@ 135 PATCH_TOKEN_ALLOCATE_SYNC_BUFFER, // 56 @SPatchAllocateSyncBuffer@ 136 137 NUM_PATCH_TOKENS 138 }; 139 140 // Update CURRENT_ICBE_VERSION when modifying the patch list 141 static_assert( NUM_PATCH_TOKENS == 57, "NUM_PATCH_TOKENS has invalid value"); 142 143 /*****************************************************************************\ 144 ENUM: IMAGE_MEMORY_OBJECT_TYPE 145 \*****************************************************************************/ 146 enum IMAGE_MEMORY_OBJECT_TYPE 147 { 148 IMAGE_MEMORY_OBJECT_INVALID, 149 IMAGE_MEMORY_OBJECT_BUFFER, 150 IMAGE_MEMORY_OBJECT_1D, 151 IMAGE_MEMORY_OBJECT_1D_ARRAY, 152 IMAGE_MEMORY_OBJECT_2D, 153 IMAGE_MEMORY_OBJECT_2D_ARRAY, 154 IMAGE_MEMORY_OBJECT_3D, 155 IMAGE_MEMORY_OBJECT_CUBE, 156 IMAGE_MEMORY_OBJECT_CUBE_ARRAY, 157 IMAGE_MEMORY_OBJECT_2D_DEPTH, 158 IMAGE_MEMORY_OBJECT_2D_ARRAY_DEPTH, 159 IMAGE_MEMORY_OBJECT_2D_MSAA, 160 IMAGE_MEMORY_OBJECT_2D_MSAA_DEPTH, 161 IMAGE_MEMORY_OBJECT_2D_ARRAY_MSAA, 162 IMAGE_MEMORY_OBJECT_2D_ARRAY_MSAA_DEPTH, 163 IMAGE_MEMORY_OBJECT_2D_MEDIA, 164 IMAGE_MEMORY_OBJECT_2D_MEDIA_BLOCK, 165 NUM_IMAGE_MEMORY_OBJECT_TYPES 166 }; 167 168 // Update CURRENT_ICBE_VERSION when modifying the patch list 169 static_assert( NUM_IMAGE_MEMORY_OBJECT_TYPES == 17, "NUM_IMAGE_MEMORY_OBJECT_TYPES has invalid value"); 170 171 /*****************************************************************************\ 172 ENUM: SAMPLER_OBJECT_TYPE 173 \*****************************************************************************/ 174 enum SAMPLER_OBJECT_TYPE 175 { 176 SAMPLER_OBJECT_INVALID, 177 SAMPLER_OBJECT_TEXTURE, 178 SAMPLER_OBJECT_SAMPLE_8X8, 179 SAMPLER_OBJECT_SAMPLE_8X8_2DCONVOLVE, 180 SAMPLER_OBJECT_SAMPLE_8X8_ERODE, 181 SAMPLER_OBJECT_SAMPLE_8X8_DILATE, 182 SAMPLER_OBJECT_SAMPLE_8X8_MINMAXFILTER, 183 SAMPLER_OBJECT_VME, 184 SAMPLER_OBJECT_SAMPLE_8X8_MINMAX, 185 SAMPLER_OBJECT_SAMPLE_8X8_CENTROID, 186 SAMPLER_OBJECT_SAMPLE_8X8_BOOL_CENTROID, 187 SAMPLER_OBJECT_SAMPLE_8X8_BOOL_SUM, 188 SAMPLER_OBJECT_VE, 189 SAMPLER_OBJECT_VD, 190 NUM_SAMPLER_OBJECT_TYPES 191 }; 192 193 // Update CURRENT_ICBE_VERSION when modifying the patch list 194 static_assert( NUM_SAMPLER_OBJECT_TYPES == 14, "NUM_SAMPLER_OBJECT_TYPES has invalid value"); 195 196 /*****************************************************************************\ 197 ENUM: DATA_PARAMETER_TOKEN 198 \*****************************************************************************/ 199 enum DATA_PARAMETER_TOKEN 200 { 201 DATA_PARAMETER_TOKEN_UNKNOWN, // 0 202 DATA_PARAMETER_KERNEL_ARGUMENT, // 1 203 DATA_PARAMETER_LOCAL_WORK_SIZE, // 2 204 DATA_PARAMETER_GLOBAL_WORK_SIZE, // 3 205 DATA_PARAMETER_NUM_WORK_GROUPS, // 4 206 DATA_PARAMETER_WORK_DIMENSIONS, // 5 207 DATA_PARAMETER_LOCAL_ID, // 6 208 DATA_PARAMETER_EXECUTION_MASK, // 7 209 DATA_PARAMETER_SUM_OF_LOCAL_MEMORY_OBJECT_ARGUMENT_SIZES, // 8 210 DATA_PARAMETER_IMAGE_WIDTH, // 9 211 DATA_PARAMETER_IMAGE_HEIGHT, // 10 212 DATA_PARAMETER_IMAGE_DEPTH, // 11 213 DATA_PARAMETER_IMAGE_CHANNEL_DATA_TYPE, // 12 214 DATA_PARAMETER_IMAGE_CHANNEL_ORDER, // 13 215 DATA_PARAMETER_SAMPLER_ADDRESS_MODE, // 14 216 DATA_PARAMETER_SAMPLER_NORMALIZED_COORDS, // 15 217 DATA_PARAMETER_GLOBAL_WORK_OFFSET, // 16 218 DATA_PARAMETER_NUM_HARDWARE_THREADS, // 17 219 DATA_PARAMETER_IMAGE_ARRAY_SIZE, // 18 220 DATA_PARAMETER_PRINTF_SURFACE_SIZE, // 19 221 DATA_PARAMETER_IMAGE_NUM_SAMPLES, // 20 222 DATA_PARAMETER_SAMPLER_COORDINATE_SNAP_WA_REQUIRED, // 21 223 DATA_PARAMETER_PARENT_EVENT, // 22 224 DATA_PARAMETER_VME_MB_BLOCK_TYPE, // 22 225 DATA_PARAMETER_VME_SUBPIXEL_MODE, // 24 226 DATA_PARAMETER_VME_SAD_ADJUST_MODE, // 25 227 DATA_PARAMETER_VME_SEARCH_PATH_TYPE, // 26 228 DATA_PARAMETER_IMAGE_NUM_MIP_LEVELS, // 27 229 DATA_PARAMETER_ENQUEUED_LOCAL_WORK_SIZE, // 28 230 DATA_PARAMETER_MAX_WORKGROUP_SIZE, // 29 231 DATA_PARAMETER_PREFERRED_WORKGROUP_MULTIPLE, // 30 232 DATA_PARAMETER_LOCAL_MEMORY_STATELESS_WINDOW_START_ADDRESS, // 31 233 DATA_PARAMETER_LOCAL_MEMORY_STATELESS_WINDOW_SIZE, // 32 234 DATA_PARAMETER_PRIVATE_MEMORY_STATELESS_SIZE, // 33 235 DATA_PARAMETER_SIMD_SIZE, // 34 236 DATA_PARAMETER_OBJECT_ID, // 35 237 DATA_PARAMETER_VME_IMAGE_TYPE, // 36 238 DATA_PARAMETER_VME_MB_SKIP_BLOCK_TYPE, // 37 239 DATA_PARAMETER_CHILD_BLOCK_SIMD_SIZE, // 38 240 DATA_PARAMETER_IMAGE_SRGB_CHANNEL_ORDER, // 39 241 DATA_PARAMETER_STAGE_IN_GRID_ORIGIN, // 40 242 DATA_PARAMETER_STAGE_IN_GRID_SIZE, // 41 243 DATA_PARAMETER_BUFFER_OFFSET, // 42 244 DATA_PARAMETER_BUFFER_STATEFUL, // 43 245 DATA_PARAMETER_FLAT_IMAGE_BASEOFFSET, // 44 246 DATA_PARAMETER_FLAT_IMAGE_WIDTH, // 45 247 DATA_PARAMETER_FLAT_IMAGE_HEIGHT, // 46 248 DATA_PARAMETER_FLAT_IMAGE_PITCH, // 47 249 DATA_PARAMETER_IMPL_ARG_BUFFER, // 49 250 DATA_PARAMETER_LOCAL_ID_BUFFER, // 50 251 NUM_DATA_PARAMETER_TOKENS 252 }; 253 254 // Update CURRENT_ICBE_VERSION when modifying the patch list 255 static_assert(NUM_DATA_PARAMETER_TOKENS == 50, "NUM_DATA_PARAMETER_TOKENS has invalid value"); 256 257 /*****************************************************************************\ 258 ENUM: CONSTANT_BUFFER_TYPE 259 \*****************************************************************************/ 260 enum CONSTANT_BUFFER_TYPE 261 { 262 CONSTANT_BUFFER_TYPE_KERNEL_ARGUMENT, 263 CONSTANT_BUFFER_TYPE_INLINE, 264 NUM_CONSTANT_BUFFER_TYPES 265 }; 266 267 // Update CURRENT_ICBE_VERSION when modifying the patch list 268 static_assert( NUM_CONSTANT_BUFFER_TYPES == 2, "NUM_CONSTANT_BUFFER_TYPES has invalid value"); 269 270 /*****************************************************************************\ 271 ENUM: GLOBAL_BUFFER_TYPE 272 \*****************************************************************************/ 273 enum GLOBAL_BUFFER_TYPE 274 { 275 GLOBAL_BUFFER_TYPE_INLINE, 276 GLOBAL_BUFFER_TYPE_INLINE_UNINIT, 277 NUM_GLOBAL_BUFFER_TYPES 278 }; 279 280 // Update CURRENT_ICBE_VERSION when modifying the patch list 281 static_assert( NUM_GLOBAL_BUFFER_TYPES == 2, "NUM_GLOBAL_BUFFER_TYPES has invalid value"); 282 283 /*****************************************************************************\ 284 ENUM: BUFFER_TYPES 285 \*****************************************************************************/ 286 enum PROGRAM_SCOPE_BUFFER_TYPE 287 { 288 PROGRAM_SCOPE_GLOBAL_BUFFER, 289 PROGRAM_SCOPE_CONSTANT_BUFFER, 290 NUM_PROGRAM_SCOPE_BUFFER_TYPE 291 }; 292 293 // Update CURRENT_ICBE_VERSION when modifying the patch list 294 static_assert( NUM_PROGRAM_SCOPE_BUFFER_TYPE == 2, "NUM_PROGRAM_SCOPE_BUFFER_TYPE has invalid value"); 295 296 /*****************************************************************************\ 297 ENUM: CONSTANT_REGISTER_BOOLEAN 298 \*****************************************************************************/ 299 enum CONSTANT_REGISTER_BOOLEAN 300 { 301 CONSTANT_REGISTER_BOOLEAN_FALSE = 0x0, 302 CONSTANT_REGISTER_BOOLEAN_TRUE = 0xffffffff 303 }; 304 305 // Update CURRENT_ICBE_VERSION when modifying the patch list 306 static_assert( CONSTANT_REGISTER_BOOLEAN_FALSE == 0, "CONSTANT_REGISTER_BOOLEAN_FALSE has invalid value"); 307 static_assert( CONSTANT_REGISTER_BOOLEAN_TRUE == 0xffffffff, "CONSTANT_REGISTER_BOOLEAN_TRUE has invalid value"); 308 309 /*****************************************************************************\ 310 ENUM: BUFFER_TYPES 311 \*****************************************************************************/ 312 enum PROGRAM_SCOPE_KERNEL_TYPE 313 { 314 PROGRAM_SCOPE_KERNEL_CONSTRUCTOR, 315 PROGRAM_SCOPE_KERNEL_DESTRUCTOR, 316 NUM_PROGRAM_SCOPE_KERNEL_TYPE 317 }; 318 319 // Update CURRENT_ICBE_VERSION when modifying the patch list 320 static_assert( NUM_PROGRAM_SCOPE_KERNEL_TYPE == 2, "NUM_PROGRAM_SCOPE_KERNEL_TYPE has invalid value"); 321 322 /*****************************************************************************\ 323 STRUCT: SPatchItemHeader 324 \*****************************************************************************/ 325 struct SPatchItemHeader 326 { 327 uint32_t Token; 328 uint32_t Size; 329 }; 330 331 // Update CURRENT_ICBE_VERSION when modifying the patch list 332 static_assert( sizeof( SPatchItemHeader ) == 8 , "The size of SPatchItemHeader is not what is expected" ); 333 334 /*****************************************************************************\ 335 STRUCT: SPatchGlobalMemoryObjectKernelArgument 336 \*****************************************************************************/ 337 struct SPatchGlobalMemoryObjectKernelArgument : 338 SPatchItemHeader 339 { 340 uint32_t ArgumentNumber; 341 uint32_t Offset; 342 uint32_t LocationIndex; 343 uint32_t LocationIndex2; 344 uint32_t IsEmulationArgument; 345 }; 346 347 // Update CURRENT_ICBE_VERSION when modifying the patch list 348 static_assert( sizeof( SPatchGlobalMemoryObjectKernelArgument ) == ( 20 + sizeof( SPatchItemHeader ) ) , "The size of SPatchGlobalMemoryObjectKernelArgument is not what is expected" ); 349 350 /*****************************************************************************\ 351 STRUCT: SPatchImageMemoryObjectKernelArgument 352 \*****************************************************************************/ 353 struct SPatchImageMemoryObjectKernelArgument : 354 SPatchItemHeader 355 { 356 uint32_t ArgumentNumber; 357 uint32_t Type; 358 uint32_t Offset; 359 uint32_t LocationIndex; 360 uint32_t LocationIndex2; 361 362 uint32_t Writeable; 363 uint32_t Transformable; 364 uint32_t needBindlessHandle; 365 uint32_t IsEmulationArgument; 366 367 uint32_t btiOffset; 368 }; 369 370 // Update CURRENT_ICBE_VERSION when modifying the patch list 371 static_assert( sizeof( SPatchImageMemoryObjectKernelArgument ) == ( 40 + sizeof( SPatchItemHeader ) ) , "The size of SPatchImageMemoryObjectKernelArgument is not what is expected" ); 372 373 /*****************************************************************************\ 374 STRUCT: SPatchConstantMemoryObjectKernelArgument 375 \*****************************************************************************/ 376 struct SPatchConstantMemoryObjectKernelArgument : 377 SPatchItemHeader 378 { 379 uint32_t ArgumentNumber; 380 uint32_t Offset; 381 uint32_t LocationIndex; 382 uint32_t LocationIndex2; 383 uint32_t IsEmulationArgument; 384 }; 385 386 // Update CURRENT_ICBE_VERSION when modifying the patch list 387 static_assert( sizeof( SPatchConstantMemoryObjectKernelArgument ) == ( 20 + sizeof( SPatchItemHeader ) ) , "The size of SPatchConstantMemoryObjectKernelArgument is not what is expected" ); 388 389 /*****************************************************************************\ 390 STRUCT: SPatchSamplerKernelArgument 391 \*****************************************************************************/ 392 struct SPatchSamplerKernelArgument : 393 SPatchItemHeader 394 { 395 uint32_t ArgumentNumber; 396 uint32_t Type; 397 uint32_t Offset; 398 uint32_t LocationIndex; 399 uint32_t LocationIndex2; 400 uint32_t needBindlessHandle; 401 uint32_t TextureMask; 402 uint32_t IsEmulationArgument; 403 uint32_t btiOffset; 404 }; 405 406 // Update CURRENT_ICBE_VERSION when modifying the patch list 407 static_assert( sizeof( SPatchSamplerKernelArgument ) == ( 36 + sizeof( SPatchItemHeader ) ) , "The size of SPatchSamplerKernelArgument is not what is expected" ); 408 409 /*****************************************************************************\ 410 STRUCT: SPatchDataParameterBuffer 411 \*****************************************************************************/ 412 struct SPatchDataParameterBuffer : 413 SPatchItemHeader 414 { 415 uint32_t Type; 416 uint32_t ArgumentNumber; 417 uint32_t Offset; 418 uint32_t DataSize; 419 uint32_t SourceOffset; 420 uint32_t LocationIndex; 421 uint32_t LocationIndex2; 422 uint32_t IsEmulationArgument; 423 }; 424 425 // Update CURRENT_ICBE_VERSION when modifying the patch list 426 static_assert( sizeof( SPatchDataParameterBuffer ) == ( 32 + sizeof( SPatchItemHeader ) ) , "The size of SPatchDataParameterBuffer is not what is expected" ); 427 428 const uint32_t DATA_PARAMETER_DATA_SIZE = 4; 429 430 /*****************************************************************************\ 431 STRUCT: SPatchKernelArgumentInfo 432 \*****************************************************************************/ 433 struct SPatchKernelArgumentInfo : 434 SPatchItemHeader 435 { 436 uint32_t ArgumentNumber; 437 uint32_t AddressQualifierSize; 438 uint32_t AccessQualifierSize; 439 uint32_t ArgumentNameSize; 440 uint32_t TypeNameSize; 441 uint32_t TypeQualifierSize; 442 }; 443 444 // Update CURRENT_ICBE_VERSION when modifying the patch list 445 static_assert( sizeof( SPatchKernelArgumentInfo ) == ( 24 + sizeof( SPatchItemHeader ) ) , "The size of SPatchKernelArgumentInfo is not what is expected" ); 446 447 /*****************************************************************************\ 448 STRUCT: SPatchKernelAttributesInfo 449 \*****************************************************************************/ 450 struct SPatchKernelAttributesInfo : 451 SPatchItemHeader 452 { 453 uint32_t AttributesSize; 454 }; 455 456 // Update CURRENT_ICBE_VERSION when modifying the patch list 457 static_assert( sizeof( SPatchKernelAttributesInfo ) == ( 4 + sizeof( SPatchItemHeader ) ) , "The size of SPatchKernelAttributesInfo is not what is expected" ); 458 459 } // namespace 460 461 #pragma pack( pop ) 462