2 * Copyright © 2015 Intel Corporation
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice (including the next
12 * paragraph) shall be included in all copies or substantial portions of the
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25 /* Instructions, enums and structures for BDW.
27 * This file has been generated, do not hand edit.
35 #ifndef __gen_field_functions
36 #define __gen_field_functions
43 static inline uint64_t
44 __gen_field(uint64_t v
, uint32_t start
, uint32_t end
)
47 if (end
- start
+ 1 < 64)
48 assert(v
< 1ul << (end
- start
+ 1));
54 static inline uint64_t
55 __gen_offset(uint64_t v
, uint32_t start
, uint32_t end
)
58 uint64_t mask
= (~0ul >> (64 - (end
- start
+ 1))) << start
;
60 assert((v
& ~mask
) == 0);
66 static inline uint32_t
69 return ((union __gen_value
) { .f
= (v
) }).dw
;
72 #ifndef __gen_address_type
73 #error #define __gen_address_type before including this file
76 #ifndef __gen_user_data
77 #error #define __gen_combine_address before including this file
82 #define GEN8_3DSTATE_URB_VS_length 0x00000002
83 #define GEN8_3DSTATE_URB_VS_length_bias 0x00000002
84 #define GEN8_3DSTATE_URB_VS_header \
86 .CommandSubType = 3, \
87 ._3DCommandOpcode = 0, \
88 ._3DCommandSubOpcode = 48, \
91 struct GEN8_3DSTATE_URB_VS
{
93 uint32_t CommandSubType
;
94 uint32_t _3DCommandOpcode
;
95 uint32_t _3DCommandSubOpcode
;
97 uint32_t VSURBStartingAddress
;
98 uint32_t VSURBEntryAllocationSize
;
99 uint32_t VSNumberofURBEntries
;
103 GEN8_3DSTATE_URB_VS_pack(__gen_user_data
*data
, void * restrict dst
,
104 const struct GEN8_3DSTATE_URB_VS
* restrict values
)
106 uint32_t *dw
= (uint32_t * restrict
) dst
;
109 __gen_field(values
->CommandType
, 29, 31) |
110 __gen_field(values
->CommandSubType
, 27, 28) |
111 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
112 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
113 __gen_field(values
->DwordLength
, 0, 7) |
117 __gen_field(values
->VSURBStartingAddress
, 25, 31) |
118 __gen_field(values
->VSURBEntryAllocationSize
, 16, 24) |
119 __gen_field(values
->VSNumberofURBEntries
, 0, 15) |
124 #define GEN8_3DSTATE_VS_length 0x00000009
125 #define GEN8_3DSTATE_VS_length_bias 0x00000002
126 #define GEN8_3DSTATE_VS_header \
128 .CommandSubType = 3, \
129 ._3DCommandOpcode = 0, \
130 ._3DCommandSubOpcode = 16, \
133 struct GEN8_3DSTATE_VS
{
134 uint32_t CommandType
;
135 uint32_t CommandSubType
;
136 uint32_t _3DCommandOpcode
;
137 uint32_t _3DCommandSubOpcode
;
138 uint32_t DwordLength
;
139 uint64_t KernelStartPointer
;
142 uint32_t SingleVertexDispatch
;
145 uint32_t VectorMaskEnable
;
147 #define _14Samplers 1
148 #define _58Samplers 2
149 #define _912Samplers 3
150 #define _1316Samplers 4
151 uint32_t SamplerCount
;
152 uint32_t BindingTableEntryCount
;
155 uint32_t ThreadDispatchPriority
;
158 uint32_t FloatingPointMode
;
159 uint32_t IllegalOpcodeExceptionEnable
;
160 uint32_t AccessesUAV
;
161 uint32_t SoftwareExceptionEnable
;
162 uint64_t ScratchSpaceBasePointer
;
163 uint32_t PerThreadScratchSpace
;
164 uint32_t DispatchGRFStartRegisterForURBData
;
165 uint32_t VertexURBEntryReadLength
;
166 uint32_t VertexURBEntryReadOffset
;
167 uint32_t MaximumNumberofThreads
;
168 uint32_t StatisticsEnable
;
169 uint32_t SIMD8DispatchEnable
;
170 uint32_t VertexCacheDisable
;
171 uint32_t FunctionEnable
;
172 uint32_t VertexURBEntryOutputReadOffset
;
173 uint32_t VertexURBEntryOutputLength
;
174 uint32_t UserClipDistanceClipTestEnableBitmask
;
175 uint32_t UserClipDistanceCullTestEnableBitmask
;
179 GEN8_3DSTATE_VS_pack(__gen_user_data
*data
, void * restrict dst
,
180 const struct GEN8_3DSTATE_VS
* restrict values
)
182 uint32_t *dw
= (uint32_t * restrict
) dst
;
185 __gen_field(values
->CommandType
, 29, 31) |
186 __gen_field(values
->CommandSubType
, 27, 28) |
187 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
188 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
189 __gen_field(values
->DwordLength
, 0, 7) |
193 __gen_offset(values
->KernelStartPointer
, 6, 63) |
200 __gen_field(values
->SingleVertexDispatch
, 31, 31) |
201 __gen_field(values
->VectorMaskEnable
, 30, 30) |
202 __gen_field(values
->SamplerCount
, 27, 29) |
203 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
204 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
205 __gen_field(values
->FloatingPointMode
, 16, 16) |
206 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
207 __gen_field(values
->AccessesUAV
, 12, 12) |
208 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
212 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
213 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
220 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
221 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
222 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
226 __gen_field(values
->MaximumNumberofThreads
, 23, 31) |
227 __gen_field(values
->StatisticsEnable
, 10, 10) |
228 __gen_field(values
->SIMD8DispatchEnable
, 2, 2) |
229 __gen_field(values
->VertexCacheDisable
, 1, 1) |
230 __gen_field(values
->FunctionEnable
, 0, 0) |
234 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
235 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
236 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
237 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
242 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length 0x00000003
243 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length_bias 0x00000002
244 #define GEN8_GPGPU_CSR_BASE_ADDRESS_header \
246 .CommandSubType = 0, \
247 ._3DCommandOpcode = 1, \
248 ._3DCommandSubOpcode = 4, \
251 struct GEN8_GPGPU_CSR_BASE_ADDRESS
{
252 uint32_t CommandType
;
253 uint32_t CommandSubType
;
254 uint32_t _3DCommandOpcode
;
255 uint32_t _3DCommandSubOpcode
;
256 uint32_t DwordLength
;
257 __gen_address_type GPGPUCSRBaseAddressHigh
;
261 GEN8_GPGPU_CSR_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
262 const struct GEN8_GPGPU_CSR_BASE_ADDRESS
* restrict values
)
264 uint32_t *dw
= (uint32_t * restrict
) dst
;
267 __gen_field(values
->CommandType
, 29, 31) |
268 __gen_field(values
->CommandSubType
, 27, 28) |
269 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
270 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
271 __gen_field(values
->DwordLength
, 0, 7) |
278 __gen_combine_address(data
, &dw
[1], values
->GPGPUCSRBaseAddressHigh
, dw1
);
285 #define GEN8_MI_ATOMIC_length 0x00000003
286 #define GEN8_MI_ATOMIC_length_bias 0x00000002
287 #define GEN8_MI_ATOMIC_header \
289 .MICommandOpcode = 47
291 struct GEN8_MI_ATOMIC
{
292 uint32_t CommandType
;
293 uint32_t MICommandOpcode
;
294 #define PerProcessGraphicsAddress 0
295 #define GlobalGraphicsAddress 1
297 uint32_t PostSyncOperation
;
305 uint32_t ReturnDataControl
;
306 uint32_t ATOMICOPCODE
;
307 uint32_t DwordLength
;
308 __gen_address_type MemoryAddress
;
309 uint32_t MemoryAddressHigh
;
310 uint32_t Operand1DataDword0
;
311 uint32_t Operand2DataDword0
;
312 uint32_t Operand1DataDword1
;
313 uint32_t Operand2DataDword1
;
314 uint32_t Operand1DataDword2
;
315 uint32_t Operand2DataDword2
;
316 uint32_t Operand1DataDword3
;
317 uint32_t Operand2DataDword3
;
321 GEN8_MI_ATOMIC_pack(__gen_user_data
*data
, void * restrict dst
,
322 const struct GEN8_MI_ATOMIC
* restrict values
)
324 uint32_t *dw
= (uint32_t * restrict
) dst
;
327 __gen_field(values
->CommandType
, 29, 31) |
328 __gen_field(values
->MICommandOpcode
, 23, 28) |
329 __gen_field(values
->MemoryType
, 22, 22) |
330 __gen_field(values
->PostSyncOperation
, 21, 21) |
331 __gen_field(values
->DataSize
, 19, 20) |
332 __gen_field(values
->InlineData
, 18, 18) |
333 __gen_field(values
->CSSTALL
, 17, 17) |
334 __gen_field(values
->ReturnDataControl
, 16, 16) |
335 __gen_field(values
->ATOMICOPCODE
, 8, 15) |
336 __gen_field(values
->DwordLength
, 0, 7) |
343 __gen_combine_address(data
, &dw
[1], values
->MemoryAddress
, dw1
);
346 __gen_field(values
->MemoryAddressHigh
, 0, 15) |
350 __gen_field(values
->Operand1DataDword0
, 0, 31) |
354 __gen_field(values
->Operand2DataDword0
, 0, 31) |
358 __gen_field(values
->Operand1DataDword1
, 0, 31) |
362 __gen_field(values
->Operand2DataDword1
, 0, 31) |
366 __gen_field(values
->Operand1DataDword2
, 0, 31) |
370 __gen_field(values
->Operand2DataDword2
, 0, 31) |
374 __gen_field(values
->Operand1DataDword3
, 0, 31) |
378 __gen_field(values
->Operand2DataDword3
, 0, 31) |
383 #define GEN8_MI_LOAD_REGISTER_REG_length 0x00000003
384 #define GEN8_MI_LOAD_REGISTER_REG_length_bias 0x00000002
385 #define GEN8_MI_LOAD_REGISTER_REG_header \
387 .MICommandOpcode = 42, \
390 struct GEN8_MI_LOAD_REGISTER_REG
{
391 uint32_t CommandType
;
392 uint32_t MICommandOpcode
;
393 uint32_t DwordLength
;
394 uint32_t SourceRegisterAddress
;
395 uint32_t DestinationRegisterAddress
;
399 GEN8_MI_LOAD_REGISTER_REG_pack(__gen_user_data
*data
, void * restrict dst
,
400 const struct GEN8_MI_LOAD_REGISTER_REG
* restrict values
)
402 uint32_t *dw
= (uint32_t * restrict
) dst
;
405 __gen_field(values
->CommandType
, 29, 31) |
406 __gen_field(values
->MICommandOpcode
, 23, 28) |
407 __gen_field(values
->DwordLength
, 0, 7) |
411 __gen_offset(values
->SourceRegisterAddress
, 2, 22) |
415 __gen_offset(values
->DestinationRegisterAddress
, 2, 22) |
420 #define GEN8_MI_SEMAPHORE_SIGNAL_length 0x00000002
421 #define GEN8_MI_SEMAPHORE_SIGNAL_length_bias 0x00000002
422 #define GEN8_MI_SEMAPHORE_SIGNAL_header \
424 .MICommandOpcode = 27, \
427 struct GEN8_MI_SEMAPHORE_SIGNAL
{
428 uint32_t CommandType
;
429 uint32_t MICommandOpcode
;
430 uint32_t PostSyncOperation
;
436 uint32_t TargetEngineSelect
;
437 uint32_t DwordLength
;
438 uint32_t TargetContextID
;
442 GEN8_MI_SEMAPHORE_SIGNAL_pack(__gen_user_data
*data
, void * restrict dst
,
443 const struct GEN8_MI_SEMAPHORE_SIGNAL
* restrict values
)
445 uint32_t *dw
= (uint32_t * restrict
) dst
;
448 __gen_field(values
->CommandType
, 29, 31) |
449 __gen_field(values
->MICommandOpcode
, 23, 28) |
450 __gen_field(values
->PostSyncOperation
, 21, 21) |
451 __gen_field(values
->TargetEngineSelect
, 15, 17) |
452 __gen_field(values
->DwordLength
, 0, 7) |
456 __gen_field(values
->TargetContextID
, 0, 31) |
461 #define GEN8_MI_SEMAPHORE_WAIT_length 0x00000004
462 #define GEN8_MI_SEMAPHORE_WAIT_length_bias 0x00000002
463 #define GEN8_MI_SEMAPHORE_WAIT_header \
465 .MICommandOpcode = 28, \
468 struct GEN8_MI_SEMAPHORE_WAIT
{
469 uint32_t CommandType
;
470 uint32_t MICommandOpcode
;
471 #define PerProcessGraphicsAddress 0
472 #define GlobalGraphicsAddress 1
474 #define PollingMode 1
477 #define SAD_GREATER_THAN_SDD 0
478 #define SAD_GREATER_THAN_OR_EQUAL_SDD 1
479 #define SAD_LESS_THAN_SDD 2
480 #define SAD_LESS_THAN_OR_EQUAL_SDD 3
481 #define SAD_EQUAL_SDD 4
482 #define SAD_NOT_EQUAL_SDD 5
483 uint32_t CompareOperation
;
484 uint32_t DwordLength
;
485 uint32_t SemaphoreDataDword
;
486 __gen_address_type SemaphoreAddress
;
490 GEN8_MI_SEMAPHORE_WAIT_pack(__gen_user_data
*data
, void * restrict dst
,
491 const struct GEN8_MI_SEMAPHORE_WAIT
* restrict values
)
493 uint32_t *dw
= (uint32_t * restrict
) dst
;
496 __gen_field(values
->CommandType
, 29, 31) |
497 __gen_field(values
->MICommandOpcode
, 23, 28) |
498 __gen_field(values
->MemoryType
, 22, 22) |
499 __gen_field(values
->WaitMode
, 15, 15) |
500 __gen_field(values
->CompareOperation
, 12, 14) |
501 __gen_field(values
->DwordLength
, 0, 7) |
505 __gen_field(values
->SemaphoreDataDword
, 0, 31) |
512 __gen_combine_address(data
, &dw
[2], values
->SemaphoreAddress
, dw2
);
519 #define GEN8_MI_STORE_REGISTER_MEM_length 0x00000004
520 #define GEN8_MI_STORE_REGISTER_MEM_length_bias 0x00000002
521 #define GEN8_MI_STORE_REGISTER_MEM_header \
523 .MICommandOpcode = 36, \
526 struct GEN8_MI_STORE_REGISTER_MEM
{
527 uint32_t CommandType
;
528 uint32_t MICommandOpcode
;
529 uint32_t UseGlobalGTT
;
530 uint32_t PredicateEnable
;
531 uint32_t DwordLength
;
532 uint32_t RegisterAddress
;
533 __gen_address_type MemoryAddress
;
537 GEN8_MI_STORE_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
538 const struct GEN8_MI_STORE_REGISTER_MEM
* restrict values
)
540 uint32_t *dw
= (uint32_t * restrict
) dst
;
543 __gen_field(values
->CommandType
, 29, 31) |
544 __gen_field(values
->MICommandOpcode
, 23, 28) |
545 __gen_field(values
->UseGlobalGTT
, 22, 22) |
546 __gen_field(values
->PredicateEnable
, 21, 21) |
547 __gen_field(values
->DwordLength
, 0, 7) |
551 __gen_offset(values
->RegisterAddress
, 2, 22) |
558 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
565 #define GEN8_PIPELINE_SELECT_length 0x00000001
566 #define GEN8_PIPELINE_SELECT_length_bias 0x00000001
567 #define GEN8_PIPELINE_SELECT_header \
569 .CommandSubType = 1, \
570 ._3DCommandOpcode = 1, \
571 ._3DCommandSubOpcode = 4
573 struct GEN8_PIPELINE_SELECT
{
574 uint32_t CommandType
;
575 uint32_t CommandSubType
;
576 uint32_t _3DCommandOpcode
;
577 uint32_t _3DCommandSubOpcode
;
581 uint32_t PipelineSelection
;
585 GEN8_PIPELINE_SELECT_pack(__gen_user_data
*data
, void * restrict dst
,
586 const struct GEN8_PIPELINE_SELECT
* restrict values
)
588 uint32_t *dw
= (uint32_t * restrict
) dst
;
591 __gen_field(values
->CommandType
, 29, 31) |
592 __gen_field(values
->CommandSubType
, 27, 28) |
593 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
594 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
595 __gen_field(values
->PipelineSelection
, 0, 1) |
600 #define GEN8_STATE_BASE_ADDRESS_length 0x00000010
601 #define GEN8_STATE_BASE_ADDRESS_length_bias 0x00000002
602 #define GEN8_STATE_BASE_ADDRESS_header \
604 .CommandSubType = 0, \
605 ._3DCommandOpcode = 1, \
606 ._3DCommandSubOpcode = 1, \
609 struct GEN8_MEMORY_OBJECT_CONTROL_STATE
{
610 #define UCwithFenceifcoherentcycle 0
611 #define UCUncacheable 1
614 uint32_t MemoryTypeLLCeLLCCacheabilityControl
;
615 #define eLLCOnlywheneDRAMispresentelsegetsallocatedinLLC 0
617 #define LLCeLLCAllowed 2
618 #define L3DefertoPATforLLCeLLCselection 3
619 uint32_t TargetCache
;
620 uint32_t AgeforQUADLRU
;
624 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
625 const struct GEN8_MEMORY_OBJECT_CONTROL_STATE
* restrict values
)
627 uint32_t *dw
= (uint32_t * restrict
) dst
;
630 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControl
, 5, 6) |
631 __gen_field(values
->TargetCache
, 3, 4) |
632 __gen_field(values
->AgeforQUADLRU
, 0, 1) |
637 struct GEN8_STATE_BASE_ADDRESS
{
638 uint32_t CommandType
;
639 uint32_t CommandSubType
;
640 uint32_t _3DCommandOpcode
;
641 uint32_t _3DCommandSubOpcode
;
642 uint32_t DwordLength
;
643 __gen_address_type GeneralStateBaseAddress
;
644 struct GEN8_MEMORY_OBJECT_CONTROL_STATE GeneralStateMemoryObjectControlState
;
645 uint32_t GeneralStateBaseAddressModifyEnable
;
646 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StatelessDataPortAccessMemoryObjectControlState
;
647 __gen_address_type SurfaceStateBaseAddress
;
648 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceStateMemoryObjectControlState
;
649 uint32_t SurfaceStateBaseAddressModifyEnable
;
650 __gen_address_type DynamicStateBaseAddress
;
651 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DynamicStateMemoryObjectControlState
;
652 uint32_t DynamicStateBaseAddressModifyEnable
;
653 __gen_address_type IndirectObjectBaseAddress
;
654 struct GEN8_MEMORY_OBJECT_CONTROL_STATE IndirectObjectMemoryObjectControlState
;
655 uint32_t IndirectObjectBaseAddressModifyEnable
;
656 __gen_address_type InstructionBaseAddress
;
657 struct GEN8_MEMORY_OBJECT_CONTROL_STATE InstructionMemoryObjectControlState
;
658 uint32_t InstructionBaseAddressModifyEnable
;
659 uint32_t GeneralStateBufferSize
;
660 uint32_t GeneralStateBufferSizeModifyEnable
;
661 uint32_t DynamicStateBufferSize
;
662 uint32_t DynamicStateBufferSizeModifyEnable
;
663 uint32_t IndirectObjectBufferSize
;
664 uint32_t IndirectObjectBufferSizeModifyEnable
;
665 uint32_t InstructionBufferSize
;
666 uint32_t InstructionBuffersizeModifyEnable
;
670 GEN8_STATE_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
671 const struct GEN8_STATE_BASE_ADDRESS
* restrict values
)
673 uint32_t *dw
= (uint32_t * restrict
) dst
;
676 __gen_field(values
->CommandType
, 29, 31) |
677 __gen_field(values
->CommandSubType
, 27, 28) |
678 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
679 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
680 __gen_field(values
->DwordLength
, 0, 7) |
683 uint32_t dw_GeneralStateMemoryObjectControlState
;
684 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_GeneralStateMemoryObjectControlState
, &values
->GeneralStateMemoryObjectControlState
);
686 __gen_field(dw_GeneralStateMemoryObjectControlState
, 4, 10) |
687 __gen_field(values
->GeneralStateBaseAddressModifyEnable
, 0, 0) |
691 __gen_combine_address(data
, &dw
[1], values
->GeneralStateBaseAddress
, dw1
);
696 uint32_t dw_StatelessDataPortAccessMemoryObjectControlState
;
697 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StatelessDataPortAccessMemoryObjectControlState
, &values
->StatelessDataPortAccessMemoryObjectControlState
);
699 __gen_field(dw_StatelessDataPortAccessMemoryObjectControlState
, 16, 22) |
702 uint32_t dw_SurfaceStateMemoryObjectControlState
;
703 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceStateMemoryObjectControlState
, &values
->SurfaceStateMemoryObjectControlState
);
705 __gen_field(dw_SurfaceStateMemoryObjectControlState
, 4, 10) |
706 __gen_field(values
->SurfaceStateBaseAddressModifyEnable
, 0, 0) |
710 __gen_combine_address(data
, &dw
[4], values
->SurfaceStateBaseAddress
, dw4
);
715 uint32_t dw_DynamicStateMemoryObjectControlState
;
716 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DynamicStateMemoryObjectControlState
, &values
->DynamicStateMemoryObjectControlState
);
718 __gen_field(dw_DynamicStateMemoryObjectControlState
, 4, 10) |
719 __gen_field(values
->DynamicStateBaseAddressModifyEnable
, 0, 0) |
723 __gen_combine_address(data
, &dw
[6], values
->DynamicStateBaseAddress
, dw6
);
728 uint32_t dw_IndirectObjectMemoryObjectControlState
;
729 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_IndirectObjectMemoryObjectControlState
, &values
->IndirectObjectMemoryObjectControlState
);
731 __gen_field(dw_IndirectObjectMemoryObjectControlState
, 4, 10) |
732 __gen_field(values
->IndirectObjectBaseAddressModifyEnable
, 0, 0) |
736 __gen_combine_address(data
, &dw
[8], values
->IndirectObjectBaseAddress
, dw8
);
741 uint32_t dw_InstructionMemoryObjectControlState
;
742 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_InstructionMemoryObjectControlState
, &values
->InstructionMemoryObjectControlState
);
744 __gen_field(dw_InstructionMemoryObjectControlState
, 4, 10) |
745 __gen_field(values
->InstructionBaseAddressModifyEnable
, 0, 0) |
749 __gen_combine_address(data
, &dw
[10], values
->InstructionBaseAddress
, dw10
);
755 __gen_field(values
->GeneralStateBufferSize
, 12, 31) |
756 __gen_field(values
->GeneralStateBufferSizeModifyEnable
, 0, 0) |
760 __gen_field(values
->DynamicStateBufferSize
, 12, 31) |
761 __gen_field(values
->DynamicStateBufferSizeModifyEnable
, 0, 0) |
765 __gen_field(values
->IndirectObjectBufferSize
, 12, 31) |
766 __gen_field(values
->IndirectObjectBufferSizeModifyEnable
, 0, 0) |
770 __gen_field(values
->InstructionBufferSize
, 12, 31) |
771 __gen_field(values
->InstructionBuffersizeModifyEnable
, 0, 0) |
776 #define GEN8_STATE_PREFETCH_length 0x00000002
777 #define GEN8_STATE_PREFETCH_length_bias 0x00000002
778 #define GEN8_STATE_PREFETCH_header \
780 .CommandSubType = 0, \
781 ._3DCommandOpcode = 0, \
782 ._3DCommandSubOpcode = 3, \
785 struct GEN8_STATE_PREFETCH
{
786 uint32_t CommandType
;
787 uint32_t CommandSubType
;
788 uint32_t _3DCommandOpcode
;
789 uint32_t _3DCommandSubOpcode
;
790 uint32_t DwordLength
;
791 __gen_address_type PrefetchPointer
;
792 uint32_t PrefetchCount
;
796 GEN8_STATE_PREFETCH_pack(__gen_user_data
*data
, void * restrict dst
,
797 const struct GEN8_STATE_PREFETCH
* restrict values
)
799 uint32_t *dw
= (uint32_t * restrict
) dst
;
802 __gen_field(values
->CommandType
, 29, 31) |
803 __gen_field(values
->CommandSubType
, 27, 28) |
804 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
805 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
806 __gen_field(values
->DwordLength
, 0, 7) |
810 __gen_field(values
->PrefetchCount
, 0, 2) |
814 __gen_combine_address(data
, &dw
[1], values
->PrefetchPointer
, dw1
);
818 #define GEN8_STATE_SIP_length 0x00000003
819 #define GEN8_STATE_SIP_length_bias 0x00000002
820 #define GEN8_STATE_SIP_header \
822 .CommandSubType = 0, \
823 ._3DCommandOpcode = 1, \
824 ._3DCommandSubOpcode = 2, \
827 struct GEN8_STATE_SIP
{
828 uint32_t CommandType
;
829 uint32_t CommandSubType
;
830 uint32_t _3DCommandOpcode
;
831 uint32_t _3DCommandSubOpcode
;
832 uint32_t DwordLength
;
833 uint64_t SystemInstructionPointer
;
837 GEN8_STATE_SIP_pack(__gen_user_data
*data
, void * restrict dst
,
838 const struct GEN8_STATE_SIP
* restrict values
)
840 uint32_t *dw
= (uint32_t * restrict
) dst
;
843 __gen_field(values
->CommandType
, 29, 31) |
844 __gen_field(values
->CommandSubType
, 27, 28) |
845 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
846 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
847 __gen_field(values
->DwordLength
, 0, 7) |
851 __gen_offset(values
->SystemInstructionPointer
, 4, 63) |
859 #define GEN8_SWTESS_BASE_ADDRESS_length 0x00000002
860 #define GEN8_SWTESS_BASE_ADDRESS_length_bias 0x00000002
861 #define GEN8_SWTESS_BASE_ADDRESS_header \
863 .CommandSubType = 0, \
864 ._3DCommandOpcode = 1, \
865 ._3DCommandSubOpcode = 3, \
868 struct GEN8_SWTESS_BASE_ADDRESS
{
869 uint32_t CommandType
;
870 uint32_t CommandSubType
;
871 uint32_t _3DCommandOpcode
;
872 uint32_t _3DCommandSubOpcode
;
873 uint32_t DwordLength
;
874 __gen_address_type SWTessellationBaseAddress
;
875 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SWTessellationMemoryObjectControlState
;
876 __gen_address_type SWTessellationBaseAddressHigh
;
880 GEN8_SWTESS_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
881 const struct GEN8_SWTESS_BASE_ADDRESS
* restrict values
)
883 uint32_t *dw
= (uint32_t * restrict
) dst
;
886 __gen_field(values
->CommandType
, 29, 31) |
887 __gen_field(values
->CommandSubType
, 27, 28) |
888 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
889 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
890 __gen_field(values
->DwordLength
, 0, 7) |
893 uint32_t dw_SWTessellationMemoryObjectControlState
;
894 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SWTessellationMemoryObjectControlState
, &values
->SWTessellationMemoryObjectControlState
);
896 __gen_field(dw_SWTessellationMemoryObjectControlState
, 8, 11) |
900 __gen_combine_address(data
, &dw
[1], values
->SWTessellationBaseAddress
, dw1
);
906 __gen_combine_address(data
, &dw
[2], values
->SWTessellationBaseAddressHigh
, dw2
);
910 #define GEN8_3DPRIMITIVE_length 0x00000007
911 #define GEN8_3DPRIMITIVE_length_bias 0x00000002
912 #define GEN8_3DPRIMITIVE_header \
914 .CommandSubType = 3, \
915 ._3DCommandOpcode = 3, \
916 ._3DCommandSubOpcode = 0, \
919 struct GEN8_3DPRIMITIVE
{
920 uint32_t CommandType
;
921 uint32_t CommandSubType
;
922 uint32_t _3DCommandOpcode
;
923 uint32_t _3DCommandSubOpcode
;
924 uint32_t IndirectParameterEnable
;
925 uint32_t UAVCoherencyRequired
;
926 uint32_t PredicateEnable
;
927 uint32_t DwordLength
;
928 uint32_t EndOffsetEnable
;
931 uint32_t VertexAccessType
;
932 uint32_t PrimitiveTopologyType
;
933 uint32_t VertexCountPerInstance
;
934 uint32_t StartVertexLocation
;
935 uint32_t InstanceCount
;
936 uint32_t StartInstanceLocation
;
937 uint32_t BaseVertexLocation
;
941 GEN8_3DPRIMITIVE_pack(__gen_user_data
*data
, void * restrict dst
,
942 const struct GEN8_3DPRIMITIVE
* restrict values
)
944 uint32_t *dw
= (uint32_t * restrict
) dst
;
947 __gen_field(values
->CommandType
, 29, 31) |
948 __gen_field(values
->CommandSubType
, 27, 28) |
949 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
950 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
951 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
952 __gen_field(values
->UAVCoherencyRequired
, 9, 9) |
953 __gen_field(values
->PredicateEnable
, 8, 8) |
954 __gen_field(values
->DwordLength
, 0, 7) |
958 __gen_field(values
->EndOffsetEnable
, 9, 9) |
959 __gen_field(values
->VertexAccessType
, 8, 8) |
960 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
964 __gen_field(values
->VertexCountPerInstance
, 0, 31) |
968 __gen_field(values
->StartVertexLocation
, 0, 31) |
972 __gen_field(values
->InstanceCount
, 0, 31) |
976 __gen_field(values
->StartInstanceLocation
, 0, 31) |
980 __gen_field(values
->BaseVertexLocation
, 0, 31) |
985 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length 0x00000003
986 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length_bias 0x00000002
987 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_header \
989 .CommandSubType = 3, \
990 ._3DCommandOpcode = 1, \
991 ._3DCommandSubOpcode = 10, \
994 struct GEN8_3DSTATE_AA_LINE_PARAMETERS
{
995 uint32_t CommandType
;
996 uint32_t CommandSubType
;
997 uint32_t _3DCommandOpcode
;
998 uint32_t _3DCommandSubOpcode
;
999 uint32_t DwordLength
;
1000 uint32_t AAPointCoverageBias
;
1001 uint32_t AACoverageBias
;
1002 uint32_t AAPointCoverageSlope
;
1003 uint32_t AACoverageSlope
;
1004 uint32_t AAPointCoverageEndCapBias
;
1005 uint32_t AACoverageEndCapBias
;
1006 uint32_t AAPointCoverageEndCapSlope
;
1007 uint32_t AACoverageEndCapSlope
;
1011 GEN8_3DSTATE_AA_LINE_PARAMETERS_pack(__gen_user_data
*data
, void * restrict dst
,
1012 const struct GEN8_3DSTATE_AA_LINE_PARAMETERS
* restrict values
)
1014 uint32_t *dw
= (uint32_t * restrict
) dst
;
1017 __gen_field(values
->CommandType
, 29, 31) |
1018 __gen_field(values
->CommandSubType
, 27, 28) |
1019 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1020 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1021 __gen_field(values
->DwordLength
, 0, 7) |
1025 __gen_field(values
->AAPointCoverageBias
, 24, 31) |
1026 __gen_field(values
->AACoverageBias
, 16, 23) |
1027 __gen_field(values
->AAPointCoverageSlope
, 8, 15) |
1028 __gen_field(values
->AACoverageSlope
, 0, 7) |
1032 __gen_field(values
->AAPointCoverageEndCapBias
, 24, 31) |
1033 __gen_field(values
->AACoverageEndCapBias
, 16, 23) |
1034 __gen_field(values
->AAPointCoverageEndCapSlope
, 8, 15) |
1035 __gen_field(values
->AACoverageEndCapSlope
, 0, 7) |
1040 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias 0x00000002
1041 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_header\
1043 .CommandSubType = 3, \
1044 ._3DCommandOpcode = 0, \
1045 ._3DCommandSubOpcode = 70
1047 struct GEN8_BINDING_TABLE_EDIT_ENTRY
{
1048 uint32_t BindingTableIndex
;
1049 uint32_t SurfaceStatePointer
;
1053 GEN8_BINDING_TABLE_EDIT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
1054 const struct GEN8_BINDING_TABLE_EDIT_ENTRY
* restrict values
)
1056 uint32_t *dw
= (uint32_t * restrict
) dst
;
1059 __gen_field(values
->BindingTableIndex
, 16, 23) |
1060 __gen_offset(values
->SurfaceStatePointer
, 0, 15) |
1065 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
{
1066 uint32_t CommandType
;
1067 uint32_t CommandSubType
;
1068 uint32_t _3DCommandOpcode
;
1069 uint32_t _3DCommandSubOpcode
;
1070 uint32_t DwordLength
;
1071 uint32_t BindingTableBlockClear
;
1075 uint32_t BindingTableEditTarget
;
1076 /* variable length fields follow */
1080 GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1081 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
* restrict values
)
1083 uint32_t *dw
= (uint32_t * restrict
) dst
;
1086 __gen_field(values
->CommandType
, 29, 31) |
1087 __gen_field(values
->CommandSubType
, 27, 28) |
1088 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1089 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1090 __gen_field(values
->DwordLength
, 0, 8) |
1094 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1095 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1098 /* variable length fields follow */
1101 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias 0x00000002
1102 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_header\
1104 .CommandSubType = 3, \
1105 ._3DCommandOpcode = 0, \
1106 ._3DCommandSubOpcode = 68
1108 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
{
1109 uint32_t CommandType
;
1110 uint32_t CommandSubType
;
1111 uint32_t _3DCommandOpcode
;
1112 uint32_t _3DCommandSubOpcode
;
1113 uint32_t DwordLength
;
1114 uint32_t BindingTableBlockClear
;
1118 uint32_t BindingTableEditTarget
;
1119 /* variable length fields follow */
1123 GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1124 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
* restrict values
)
1126 uint32_t *dw
= (uint32_t * restrict
) dst
;
1129 __gen_field(values
->CommandType
, 29, 31) |
1130 __gen_field(values
->CommandSubType
, 27, 28) |
1131 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1132 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1133 __gen_field(values
->DwordLength
, 0, 8) |
1137 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1138 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1141 /* variable length fields follow */
1144 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias 0x00000002
1145 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_header\
1147 .CommandSubType = 3, \
1148 ._3DCommandOpcode = 0, \
1149 ._3DCommandSubOpcode = 69
1151 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
{
1152 uint32_t CommandType
;
1153 uint32_t CommandSubType
;
1154 uint32_t _3DCommandOpcode
;
1155 uint32_t _3DCommandSubOpcode
;
1156 uint32_t DwordLength
;
1157 uint32_t BindingTableBlockClear
;
1161 uint32_t BindingTableEditTarget
;
1162 /* variable length fields follow */
1166 GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1167 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
* restrict values
)
1169 uint32_t *dw
= (uint32_t * restrict
) dst
;
1172 __gen_field(values
->CommandType
, 29, 31) |
1173 __gen_field(values
->CommandSubType
, 27, 28) |
1174 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1175 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1176 __gen_field(values
->DwordLength
, 0, 8) |
1180 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1181 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1184 /* variable length fields follow */
1187 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias 0x00000002
1188 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_header\
1190 .CommandSubType = 3, \
1191 ._3DCommandOpcode = 0, \
1192 ._3DCommandSubOpcode = 71
1194 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
{
1195 uint32_t CommandType
;
1196 uint32_t CommandSubType
;
1197 uint32_t _3DCommandOpcode
;
1198 uint32_t _3DCommandSubOpcode
;
1199 uint32_t DwordLength
;
1200 uint32_t BindingTableBlockClear
;
1204 uint32_t BindingTableEditTarget
;
1205 /* variable length fields follow */
1209 GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1210 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
* restrict values
)
1212 uint32_t *dw
= (uint32_t * restrict
) dst
;
1215 __gen_field(values
->CommandType
, 29, 31) |
1216 __gen_field(values
->CommandSubType
, 27, 28) |
1217 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1218 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1219 __gen_field(values
->DwordLength
, 0, 8) |
1223 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1224 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1227 /* variable length fields follow */
1230 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias 0x00000002
1231 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_header\
1233 .CommandSubType = 3, \
1234 ._3DCommandOpcode = 0, \
1235 ._3DCommandSubOpcode = 67
1237 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
{
1238 uint32_t CommandType
;
1239 uint32_t CommandSubType
;
1240 uint32_t _3DCommandOpcode
;
1241 uint32_t _3DCommandSubOpcode
;
1242 uint32_t DwordLength
;
1243 uint32_t BindingTableBlockClear
;
1247 uint32_t BindingTableEditTarget
;
1248 /* variable length fields follow */
1252 GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1253 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
* restrict values
)
1255 uint32_t *dw
= (uint32_t * restrict
) dst
;
1258 __gen_field(values
->CommandType
, 29, 31) |
1259 __gen_field(values
->CommandSubType
, 27, 28) |
1260 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1261 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1262 __gen_field(values
->DwordLength
, 0, 8) |
1266 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1267 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1270 /* variable length fields follow */
1273 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length 0x00000002
1274 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias 0x00000002
1275 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_header\
1277 .CommandSubType = 3, \
1278 ._3DCommandOpcode = 0, \
1279 ._3DCommandSubOpcode = 40, \
1282 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
{
1283 uint32_t CommandType
;
1284 uint32_t CommandSubType
;
1285 uint32_t _3DCommandOpcode
;
1286 uint32_t _3DCommandSubOpcode
;
1287 uint32_t DwordLength
;
1288 uint32_t PointertoDSBindingTable
;
1292 GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1293 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
* restrict values
)
1295 uint32_t *dw
= (uint32_t * restrict
) dst
;
1298 __gen_field(values
->CommandType
, 29, 31) |
1299 __gen_field(values
->CommandSubType
, 27, 28) |
1300 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1301 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1302 __gen_field(values
->DwordLength
, 0, 7) |
1306 __gen_offset(values
->PointertoDSBindingTable
, 5, 15) |
1311 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length 0x00000002
1312 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias 0x00000002
1313 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_header\
1315 .CommandSubType = 3, \
1316 ._3DCommandOpcode = 0, \
1317 ._3DCommandSubOpcode = 41, \
1320 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
{
1321 uint32_t CommandType
;
1322 uint32_t CommandSubType
;
1323 uint32_t _3DCommandOpcode
;
1324 uint32_t _3DCommandSubOpcode
;
1325 uint32_t DwordLength
;
1326 uint32_t PointertoGSBindingTable
;
1330 GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1331 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
* restrict values
)
1333 uint32_t *dw
= (uint32_t * restrict
) dst
;
1336 __gen_field(values
->CommandType
, 29, 31) |
1337 __gen_field(values
->CommandSubType
, 27, 28) |
1338 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1339 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1340 __gen_field(values
->DwordLength
, 0, 7) |
1344 __gen_offset(values
->PointertoGSBindingTable
, 5, 15) |
1349 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length 0x00000002
1350 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias 0x00000002
1351 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_header\
1353 .CommandSubType = 3, \
1354 ._3DCommandOpcode = 0, \
1355 ._3DCommandSubOpcode = 39, \
1358 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
{
1359 uint32_t CommandType
;
1360 uint32_t CommandSubType
;
1361 uint32_t _3DCommandOpcode
;
1362 uint32_t _3DCommandSubOpcode
;
1363 uint32_t DwordLength
;
1364 uint32_t PointertoHSBindingTable
;
1368 GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1369 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
* restrict values
)
1371 uint32_t *dw
= (uint32_t * restrict
) dst
;
1374 __gen_field(values
->CommandType
, 29, 31) |
1375 __gen_field(values
->CommandSubType
, 27, 28) |
1376 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1377 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1378 __gen_field(values
->DwordLength
, 0, 7) |
1382 __gen_offset(values
->PointertoHSBindingTable
, 5, 15) |
1387 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length 0x00000002
1388 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias 0x00000002
1389 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_header\
1391 .CommandSubType = 3, \
1392 ._3DCommandOpcode = 0, \
1393 ._3DCommandSubOpcode = 42, \
1396 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
{
1397 uint32_t CommandType
;
1398 uint32_t CommandSubType
;
1399 uint32_t _3DCommandOpcode
;
1400 uint32_t _3DCommandSubOpcode
;
1401 uint32_t DwordLength
;
1402 uint32_t PointertoPSBindingTable
;
1406 GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1407 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
* restrict values
)
1409 uint32_t *dw
= (uint32_t * restrict
) dst
;
1412 __gen_field(values
->CommandType
, 29, 31) |
1413 __gen_field(values
->CommandSubType
, 27, 28) |
1414 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1415 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1416 __gen_field(values
->DwordLength
, 0, 7) |
1420 __gen_offset(values
->PointertoPSBindingTable
, 5, 15) |
1425 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length 0x00000002
1426 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias 0x00000002
1427 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_header\
1429 .CommandSubType = 3, \
1430 ._3DCommandOpcode = 0, \
1431 ._3DCommandSubOpcode = 38, \
1434 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
{
1435 uint32_t CommandType
;
1436 uint32_t CommandSubType
;
1437 uint32_t _3DCommandOpcode
;
1438 uint32_t _3DCommandSubOpcode
;
1439 uint32_t DwordLength
;
1440 uint32_t PointertoVSBindingTable
;
1444 GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1445 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
* restrict values
)
1447 uint32_t *dw
= (uint32_t * restrict
) dst
;
1450 __gen_field(values
->CommandType
, 29, 31) |
1451 __gen_field(values
->CommandSubType
, 27, 28) |
1452 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1453 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1454 __gen_field(values
->DwordLength
, 0, 7) |
1458 __gen_offset(values
->PointertoVSBindingTable
, 5, 15) |
1463 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length 0x00000004
1464 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias 0x00000002
1465 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\
1467 .CommandSubType = 3, \
1468 ._3DCommandOpcode = 1, \
1469 ._3DCommandSubOpcode = 25, \
1472 struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
{
1473 uint32_t CommandType
;
1474 uint32_t CommandSubType
;
1475 uint32_t _3DCommandOpcode
;
1476 uint32_t _3DCommandSubOpcode
;
1477 uint32_t DwordLength
;
1478 __gen_address_type BindingTablePoolBaseAddress
;
1479 uint32_t BindingTablePoolEnable
;
1480 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceObjectControlState
;
1481 #define NoValidData 0
1482 uint32_t BindingTablePoolBufferSize
;
1486 GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
1487 const struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
* restrict values
)
1489 uint32_t *dw
= (uint32_t * restrict
) dst
;
1492 __gen_field(values
->CommandType
, 29, 31) |
1493 __gen_field(values
->CommandSubType
, 27, 28) |
1494 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1495 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1496 __gen_field(values
->DwordLength
, 0, 7) |
1499 uint32_t dw_SurfaceObjectControlState
;
1500 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceObjectControlState
, &values
->SurfaceObjectControlState
);
1502 __gen_field(values
->BindingTablePoolEnable
, 11, 11) |
1503 __gen_field(dw_SurfaceObjectControlState
, 0, 6) |
1507 __gen_combine_address(data
, &dw
[1], values
->BindingTablePoolBaseAddress
, dw1
);
1513 __gen_field(values
->BindingTablePoolBufferSize
, 12, 31) |
1518 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length 0x00000002
1519 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length_bias 0x00000002
1520 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_header\
1522 .CommandSubType = 3, \
1523 ._3DCommandOpcode = 0, \
1524 ._3DCommandSubOpcode = 36, \
1527 struct GEN8_3DSTATE_BLEND_STATE_POINTERS
{
1528 uint32_t CommandType
;
1529 uint32_t CommandSubType
;
1530 uint32_t _3DCommandOpcode
;
1531 uint32_t _3DCommandSubOpcode
;
1532 uint32_t DwordLength
;
1533 uint32_t BlendStatePointer
;
1534 uint32_t BlendStatePointerValid
;
1538 GEN8_3DSTATE_BLEND_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1539 const struct GEN8_3DSTATE_BLEND_STATE_POINTERS
* restrict values
)
1541 uint32_t *dw
= (uint32_t * restrict
) dst
;
1544 __gen_field(values
->CommandType
, 29, 31) |
1545 __gen_field(values
->CommandSubType
, 27, 28) |
1546 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1547 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1548 __gen_field(values
->DwordLength
, 0, 7) |
1552 __gen_offset(values
->BlendStatePointer
, 6, 31) |
1553 __gen_field(values
->BlendStatePointerValid
, 0, 0) |
1558 #define GEN8_3DSTATE_CC_STATE_POINTERS_length 0x00000002
1559 #define GEN8_3DSTATE_CC_STATE_POINTERS_length_bias 0x00000002
1560 #define GEN8_3DSTATE_CC_STATE_POINTERS_header \
1562 .CommandSubType = 3, \
1563 ._3DCommandOpcode = 0, \
1564 ._3DCommandSubOpcode = 14, \
1567 struct GEN8_3DSTATE_CC_STATE_POINTERS
{
1568 uint32_t CommandType
;
1569 uint32_t CommandSubType
;
1570 uint32_t _3DCommandOpcode
;
1571 uint32_t _3DCommandSubOpcode
;
1572 uint32_t DwordLength
;
1573 uint32_t ColorCalcStatePointer
;
1574 uint32_t ColorCalcStatePointerValid
;
1578 GEN8_3DSTATE_CC_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1579 const struct GEN8_3DSTATE_CC_STATE_POINTERS
* restrict values
)
1581 uint32_t *dw
= (uint32_t * restrict
) dst
;
1584 __gen_field(values
->CommandType
, 29, 31) |
1585 __gen_field(values
->CommandSubType
, 27, 28) |
1586 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1587 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1588 __gen_field(values
->DwordLength
, 0, 7) |
1592 __gen_offset(values
->ColorCalcStatePointer
, 6, 31) |
1593 __gen_field(values
->ColorCalcStatePointerValid
, 0, 0) |
1598 #define GEN8_3DSTATE_CHROMA_KEY_length 0x00000004
1599 #define GEN8_3DSTATE_CHROMA_KEY_length_bias 0x00000002
1600 #define GEN8_3DSTATE_CHROMA_KEY_header \
1602 .CommandSubType = 3, \
1603 ._3DCommandOpcode = 1, \
1604 ._3DCommandSubOpcode = 4, \
1607 struct GEN8_3DSTATE_CHROMA_KEY
{
1608 uint32_t CommandType
;
1609 uint32_t CommandSubType
;
1610 uint32_t _3DCommandOpcode
;
1611 uint32_t _3DCommandSubOpcode
;
1612 uint32_t DwordLength
;
1613 uint32_t ChromaKeyTableIndex
;
1614 uint32_t ChromaKeyLowValue
;
1615 uint32_t ChromaKeyHighValue
;
1619 GEN8_3DSTATE_CHROMA_KEY_pack(__gen_user_data
*data
, void * restrict dst
,
1620 const struct GEN8_3DSTATE_CHROMA_KEY
* restrict values
)
1622 uint32_t *dw
= (uint32_t * restrict
) dst
;
1625 __gen_field(values
->CommandType
, 29, 31) |
1626 __gen_field(values
->CommandSubType
, 27, 28) |
1627 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1628 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1629 __gen_field(values
->DwordLength
, 0, 7) |
1633 __gen_field(values
->ChromaKeyTableIndex
, 30, 31) |
1637 __gen_field(values
->ChromaKeyLowValue
, 0, 31) |
1641 __gen_field(values
->ChromaKeyHighValue
, 0, 31) |
1646 #define GEN8_3DSTATE_CLEAR_PARAMS_length 0x00000003
1647 #define GEN8_3DSTATE_CLEAR_PARAMS_length_bias 0x00000002
1648 #define GEN8_3DSTATE_CLEAR_PARAMS_header \
1650 .CommandSubType = 3, \
1651 ._3DCommandOpcode = 0, \
1652 ._3DCommandSubOpcode = 4, \
1655 struct GEN8_3DSTATE_CLEAR_PARAMS
{
1656 uint32_t CommandType
;
1657 uint32_t CommandSubType
;
1658 uint32_t _3DCommandOpcode
;
1659 uint32_t _3DCommandSubOpcode
;
1660 uint32_t DwordLength
;
1661 float DepthClearValue
;
1662 uint32_t DepthClearValueValid
;
1666 GEN8_3DSTATE_CLEAR_PARAMS_pack(__gen_user_data
*data
, void * restrict dst
,
1667 const struct GEN8_3DSTATE_CLEAR_PARAMS
* restrict values
)
1669 uint32_t *dw
= (uint32_t * restrict
) dst
;
1672 __gen_field(values
->CommandType
, 29, 31) |
1673 __gen_field(values
->CommandSubType
, 27, 28) |
1674 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1675 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1676 __gen_field(values
->DwordLength
, 0, 7) |
1680 __gen_float(values
->DepthClearValue
) |
1684 __gen_field(values
->DepthClearValueValid
, 0, 0) |
1689 #define GEN8_3DSTATE_CLIP_length 0x00000004
1690 #define GEN8_3DSTATE_CLIP_length_bias 0x00000002
1691 #define GEN8_3DSTATE_CLIP_header \
1693 .CommandSubType = 3, \
1694 ._3DCommandOpcode = 0, \
1695 ._3DCommandSubOpcode = 18, \
1698 struct GEN8_3DSTATE_CLIP
{
1699 uint32_t CommandType
;
1700 uint32_t CommandSubType
;
1701 uint32_t _3DCommandOpcode
;
1702 uint32_t _3DCommandSubOpcode
;
1703 uint32_t DwordLength
;
1706 uint32_t ForceUserClipDistanceCullTestEnableBitmask
;
1709 uint32_t VertexSubPixelPrecisionSelect
;
1710 uint32_t EarlyCullEnable
;
1713 uint32_t ForceUserClipDistanceClipTestEnableBitmask
;
1716 uint32_t ForceClipMode
;
1717 uint32_t ClipperStatisticsEnable
;
1718 uint32_t UserClipDistanceCullTestEnableBitmask
;
1719 uint32_t ClipEnable
;
1722 uint32_t ViewportXYClipTestEnable
;
1723 uint32_t GuardbandClipTestEnable
;
1724 uint32_t UserClipDistanceClipTestEnableBitmask
;
1726 #define REJECT_ALL 3
1727 #define ACCEPT_ALL 4
1729 uint32_t PerspectiveDivideDisable
;
1730 uint32_t NonPerspectiveBarycentricEnable
;
1731 uint32_t TriangleStripListProvokingVertexSelect
;
1732 uint32_t LineStripListProvokingVertexSelect
;
1733 uint32_t TriangleFanProvokingVertexSelect
;
1734 uint32_t MinimumPointWidth
;
1735 uint32_t MaximumPointWidth
;
1736 uint32_t ForceZeroRTAIndexEnable
;
1737 uint32_t MaximumVPIndex
;
1741 GEN8_3DSTATE_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
1742 const struct GEN8_3DSTATE_CLIP
* restrict values
)
1744 uint32_t *dw
= (uint32_t * restrict
) dst
;
1747 __gen_field(values
->CommandType
, 29, 31) |
1748 __gen_field(values
->CommandSubType
, 27, 28) |
1749 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1750 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1751 __gen_field(values
->DwordLength
, 0, 7) |
1755 __gen_field(values
->ForceUserClipDistanceCullTestEnableBitmask
, 20, 20) |
1756 __gen_field(values
->VertexSubPixelPrecisionSelect
, 19, 19) |
1757 __gen_field(values
->EarlyCullEnable
, 18, 18) |
1758 __gen_field(values
->ForceUserClipDistanceClipTestEnableBitmask
, 17, 17) |
1759 __gen_field(values
->ForceClipMode
, 16, 16) |
1760 __gen_field(values
->ClipperStatisticsEnable
, 10, 10) |
1761 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
1765 __gen_field(values
->ClipEnable
, 31, 31) |
1766 __gen_field(values
->APIMode
, 30, 30) |
1767 __gen_field(values
->ViewportXYClipTestEnable
, 28, 28) |
1768 __gen_field(values
->GuardbandClipTestEnable
, 26, 26) |
1769 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 16, 23) |
1770 __gen_field(values
->ClipMode
, 13, 15) |
1771 __gen_field(values
->PerspectiveDivideDisable
, 9, 9) |
1772 __gen_field(values
->NonPerspectiveBarycentricEnable
, 8, 8) |
1773 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 4, 5) |
1774 __gen_field(values
->LineStripListProvokingVertexSelect
, 2, 3) |
1775 __gen_field(values
->TriangleFanProvokingVertexSelect
, 0, 1) |
1779 __gen_field(values
->MinimumPointWidth
, 17, 27) |
1780 __gen_field(values
->MaximumPointWidth
, 6, 16) |
1781 __gen_field(values
->ForceZeroRTAIndexEnable
, 5, 5) |
1782 __gen_field(values
->MaximumVPIndex
, 0, 3) |
1787 #define GEN8_3DSTATE_CONSTANT_DS_length 0x0000000b
1788 #define GEN8_3DSTATE_CONSTANT_DS_length_bias 0x00000002
1789 #define GEN8_3DSTATE_CONSTANT_DS_header \
1791 .CommandSubType = 3, \
1792 ._3DCommandOpcode = 0, \
1793 ._3DCommandSubOpcode = 26, \
1796 struct GEN8_3DSTATE_CONSTANT_BODY
{
1797 uint32_t ConstantBuffer1ReadLength
;
1798 uint32_t ConstantBuffer0ReadLength
;
1799 uint32_t ConstantBuffer3ReadLength
;
1800 uint32_t ConstantBuffer2ReadLength
;
1801 __gen_address_type PointerToConstantBuffer0
;
1802 __gen_address_type PointerToConstantBuffer1
;
1803 __gen_address_type PointerToConstantBuffer2
;
1804 __gen_address_type PointerToConstantBuffer3
;
1808 GEN8_3DSTATE_CONSTANT_BODY_pack(__gen_user_data
*data
, void * restrict dst
,
1809 const struct GEN8_3DSTATE_CONSTANT_BODY
* restrict values
)
1811 uint32_t *dw
= (uint32_t * restrict
) dst
;
1814 __gen_field(values
->ConstantBuffer1ReadLength
, 16, 31) |
1815 __gen_field(values
->ConstantBuffer0ReadLength
, 0, 15) |
1819 __gen_field(values
->ConstantBuffer3ReadLength
, 16, 31) |
1820 __gen_field(values
->ConstantBuffer2ReadLength
, 0, 15) |
1827 __gen_combine_address(data
, &dw
[2], values
->PointerToConstantBuffer0
, dw2
);
1836 __gen_combine_address(data
, &dw
[4], values
->PointerToConstantBuffer1
, dw4
);
1845 __gen_combine_address(data
, &dw
[6], values
->PointerToConstantBuffer2
, dw6
);
1854 __gen_combine_address(data
, &dw
[8], values
->PointerToConstantBuffer3
, dw8
);
1861 struct GEN8_3DSTATE_CONSTANT_DS
{
1862 uint32_t CommandType
;
1863 uint32_t CommandSubType
;
1864 uint32_t _3DCommandOpcode
;
1865 uint32_t _3DCommandSubOpcode
;
1866 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1867 uint32_t DwordLength
;
1868 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1872 GEN8_3DSTATE_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1873 const struct GEN8_3DSTATE_CONSTANT_DS
* restrict values
)
1875 uint32_t *dw
= (uint32_t * restrict
) dst
;
1877 uint32_t dw_ConstantBufferObjectControlState
;
1878 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1880 __gen_field(values
->CommandType
, 29, 31) |
1881 __gen_field(values
->CommandSubType
, 27, 28) |
1882 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1883 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1884 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1885 __gen_field(values
->DwordLength
, 0, 7) |
1888 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1891 #define GEN8_3DSTATE_CONSTANT_GS_length 0x0000000b
1892 #define GEN8_3DSTATE_CONSTANT_GS_length_bias 0x00000002
1893 #define GEN8_3DSTATE_CONSTANT_GS_header \
1895 .CommandSubType = 3, \
1896 ._3DCommandOpcode = 0, \
1897 ._3DCommandSubOpcode = 22, \
1900 struct GEN8_3DSTATE_CONSTANT_GS
{
1901 uint32_t CommandType
;
1902 uint32_t CommandSubType
;
1903 uint32_t _3DCommandOpcode
;
1904 uint32_t _3DCommandSubOpcode
;
1905 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1906 uint32_t DwordLength
;
1907 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1911 GEN8_3DSTATE_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1912 const struct GEN8_3DSTATE_CONSTANT_GS
* restrict values
)
1914 uint32_t *dw
= (uint32_t * restrict
) dst
;
1916 uint32_t dw_ConstantBufferObjectControlState
;
1917 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1919 __gen_field(values
->CommandType
, 29, 31) |
1920 __gen_field(values
->CommandSubType
, 27, 28) |
1921 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1922 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1923 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1924 __gen_field(values
->DwordLength
, 0, 7) |
1927 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1930 #define GEN8_3DSTATE_CONSTANT_HS_length 0x0000000b
1931 #define GEN8_3DSTATE_CONSTANT_HS_length_bias 0x00000002
1932 #define GEN8_3DSTATE_CONSTANT_HS_header \
1934 .CommandSubType = 3, \
1935 ._3DCommandOpcode = 0, \
1936 ._3DCommandSubOpcode = 25, \
1939 struct GEN8_3DSTATE_CONSTANT_HS
{
1940 uint32_t CommandType
;
1941 uint32_t CommandSubType
;
1942 uint32_t _3DCommandOpcode
;
1943 uint32_t _3DCommandSubOpcode
;
1944 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1945 uint32_t DwordLength
;
1946 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1950 GEN8_3DSTATE_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1951 const struct GEN8_3DSTATE_CONSTANT_HS
* restrict values
)
1953 uint32_t *dw
= (uint32_t * restrict
) dst
;
1955 uint32_t dw_ConstantBufferObjectControlState
;
1956 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1958 __gen_field(values
->CommandType
, 29, 31) |
1959 __gen_field(values
->CommandSubType
, 27, 28) |
1960 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1961 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1962 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1963 __gen_field(values
->DwordLength
, 0, 7) |
1966 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1969 #define GEN8_3DSTATE_CONSTANT_PS_length 0x0000000b
1970 #define GEN8_3DSTATE_CONSTANT_PS_length_bias 0x00000002
1971 #define GEN8_3DSTATE_CONSTANT_PS_header \
1973 .CommandSubType = 3, \
1974 ._3DCommandOpcode = 0, \
1975 ._3DCommandSubOpcode = 23, \
1978 struct GEN8_3DSTATE_CONSTANT_PS
{
1979 uint32_t CommandType
;
1980 uint32_t CommandSubType
;
1981 uint32_t _3DCommandOpcode
;
1982 uint32_t _3DCommandSubOpcode
;
1983 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1984 uint32_t DwordLength
;
1985 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1989 GEN8_3DSTATE_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1990 const struct GEN8_3DSTATE_CONSTANT_PS
* restrict values
)
1992 uint32_t *dw
= (uint32_t * restrict
) dst
;
1994 uint32_t dw_ConstantBufferObjectControlState
;
1995 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1997 __gen_field(values
->CommandType
, 29, 31) |
1998 __gen_field(values
->CommandSubType
, 27, 28) |
1999 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2000 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2001 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2002 __gen_field(values
->DwordLength
, 0, 7) |
2005 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2008 #define GEN8_3DSTATE_CONSTANT_VS_length 0x0000000b
2009 #define GEN8_3DSTATE_CONSTANT_VS_length_bias 0x00000002
2010 #define GEN8_3DSTATE_CONSTANT_VS_header \
2012 .CommandSubType = 3, \
2013 ._3DCommandOpcode = 0, \
2014 ._3DCommandSubOpcode = 21, \
2017 struct GEN8_3DSTATE_CONSTANT_VS
{
2018 uint32_t CommandType
;
2019 uint32_t CommandSubType
;
2020 uint32_t _3DCommandOpcode
;
2021 uint32_t _3DCommandSubOpcode
;
2022 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
2023 uint32_t DwordLength
;
2024 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
2028 GEN8_3DSTATE_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2029 const struct GEN8_3DSTATE_CONSTANT_VS
* restrict values
)
2031 uint32_t *dw
= (uint32_t * restrict
) dst
;
2033 uint32_t dw_ConstantBufferObjectControlState
;
2034 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2036 __gen_field(values
->CommandType
, 29, 31) |
2037 __gen_field(values
->CommandSubType
, 27, 28) |
2038 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2039 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2040 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2041 __gen_field(values
->DwordLength
, 0, 7) |
2044 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2047 #define GEN8_3DSTATE_DEPTH_BUFFER_length 0x00000008
2048 #define GEN8_3DSTATE_DEPTH_BUFFER_length_bias 0x00000002
2049 #define GEN8_3DSTATE_DEPTH_BUFFER_header \
2051 .CommandSubType = 3, \
2052 ._3DCommandOpcode = 0, \
2053 ._3DCommandSubOpcode = 5, \
2056 struct GEN8_3DSTATE_DEPTH_BUFFER
{
2057 uint32_t CommandType
;
2058 uint32_t CommandSubType
;
2059 uint32_t _3DCommandOpcode
;
2060 uint32_t _3DCommandSubOpcode
;
2061 uint32_t DwordLength
;
2062 #define SURFTYPE_1D 0
2063 #define SURFTYPE_2D 1
2064 #define SURFTYPE_3D 2
2065 #define SURFTYPE_CUBE 3
2066 #define SURFTYPE_NULL 7
2067 uint32_t SurfaceType
;
2068 uint32_t DepthWriteEnable
;
2069 uint32_t StencilWriteEnable
;
2070 uint32_t HierarchicalDepthBufferEnable
;
2072 #define D24_UNORM_X8_UINT 3
2074 uint32_t SurfaceFormat
;
2075 uint32_t SurfacePitch
;
2076 __gen_address_type SurfaceBaseAddress
;
2081 uint32_t MinimumArrayElement
;
2082 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DepthBufferObjectControlState
;
2083 uint32_t RenderTargetViewExtent
;
2084 uint32_t SurfaceQPitch
;
2088 GEN8_3DSTATE_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2089 const struct GEN8_3DSTATE_DEPTH_BUFFER
* restrict values
)
2091 uint32_t *dw
= (uint32_t * restrict
) dst
;
2094 __gen_field(values
->CommandType
, 29, 31) |
2095 __gen_field(values
->CommandSubType
, 27, 28) |
2096 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2097 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2098 __gen_field(values
->DwordLength
, 0, 7) |
2102 __gen_field(values
->SurfaceType
, 29, 31) |
2103 __gen_field(values
->DepthWriteEnable
, 28, 28) |
2104 __gen_field(values
->StencilWriteEnable
, 27, 27) |
2105 __gen_field(values
->HierarchicalDepthBufferEnable
, 22, 22) |
2106 __gen_field(values
->SurfaceFormat
, 18, 20) |
2107 __gen_field(values
->SurfacePitch
, 0, 17) |
2114 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2120 __gen_field(values
->Height
, 18, 31) |
2121 __gen_field(values
->Width
, 4, 17) |
2122 __gen_field(values
->LOD
, 0, 3) |
2125 uint32_t dw_DepthBufferObjectControlState
;
2126 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DepthBufferObjectControlState
, &values
->DepthBufferObjectControlState
);
2128 __gen_field(values
->Depth
, 21, 31) |
2129 __gen_field(values
->MinimumArrayElement
, 10, 20) |
2130 __gen_field(dw_DepthBufferObjectControlState
, 0, 6) |
2137 __gen_field(values
->RenderTargetViewExtent
, 21, 31) |
2138 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2143 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length 0x00000004
2144 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length_bias 0x00000002
2145 #define GEN8_3DSTATE_DRAWING_RECTANGLE_header \
2147 .CommandSubType = 3, \
2148 ._3DCommandOpcode = 1, \
2149 ._3DCommandSubOpcode = 0, \
2152 struct GEN8_3DSTATE_DRAWING_RECTANGLE
{
2153 uint32_t CommandType
;
2154 uint32_t CommandSubType
;
2155 uint32_t _3DCommandOpcode
;
2156 uint32_t _3DCommandSubOpcode
;
2158 #define Core0Enabled 1
2159 #define Core1Enabled 2
2160 uint32_t CoreModeSelect
;
2161 uint32_t DwordLength
;
2162 uint32_t ClippedDrawingRectangleYMin
;
2163 uint32_t ClippedDrawingRectangleXMin
;
2164 uint32_t ClippedDrawingRectangleYMax
;
2165 uint32_t ClippedDrawingRectangleXMax
;
2166 uint32_t DrawingRectangleOriginY
;
2167 uint32_t DrawingRectangleOriginX
;
2171 GEN8_3DSTATE_DRAWING_RECTANGLE_pack(__gen_user_data
*data
, void * restrict dst
,
2172 const struct GEN8_3DSTATE_DRAWING_RECTANGLE
* restrict values
)
2174 uint32_t *dw
= (uint32_t * restrict
) dst
;
2177 __gen_field(values
->CommandType
, 29, 31) |
2178 __gen_field(values
->CommandSubType
, 27, 28) |
2179 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2180 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2181 __gen_field(values
->CoreModeSelect
, 14, 15) |
2182 __gen_field(values
->DwordLength
, 0, 7) |
2186 __gen_field(values
->ClippedDrawingRectangleYMin
, 16, 31) |
2187 __gen_field(values
->ClippedDrawingRectangleXMin
, 0, 15) |
2191 __gen_field(values
->ClippedDrawingRectangleYMax
, 16, 31) |
2192 __gen_field(values
->ClippedDrawingRectangleXMax
, 0, 15) |
2196 __gen_field(values
->DrawingRectangleOriginY
, 16, 31) |
2197 __gen_field(values
->DrawingRectangleOriginX
, 0, 15) |
2202 #define GEN8_3DSTATE_DS_length 0x00000009
2203 #define GEN8_3DSTATE_DS_length_bias 0x00000002
2204 #define GEN8_3DSTATE_DS_header \
2206 .CommandSubType = 3, \
2207 ._3DCommandOpcode = 0, \
2208 ._3DCommandSubOpcode = 29, \
2211 struct GEN8_3DSTATE_DS
{
2212 uint32_t CommandType
;
2213 uint32_t CommandSubType
;
2214 uint32_t _3DCommandOpcode
;
2215 uint32_t _3DCommandSubOpcode
;
2216 uint32_t DwordLength
;
2217 uint64_t KernelStartPointer
;
2220 uint32_t SingleDomainPointDispatch
;
2223 uint32_t VectorMaskEnable
;
2224 #define NoSamplers 0
2225 #define _14Samplers 1
2226 #define _58Samplers 2
2227 #define _912Samplers 3
2228 #define _1316Samplers 4
2229 uint32_t SamplerCount
;
2230 uint32_t BindingTableEntryCount
;
2233 uint32_t ThreadDispatchPriority
;
2236 uint32_t FloatingPointMode
;
2237 uint32_t AccessesUAV
;
2238 uint32_t IllegalOpcodeExceptionEnable
;
2239 uint32_t SoftwareExceptionEnable
;
2240 uint64_t ScratchSpaceBasePointer
;
2241 uint32_t PerThreadScratchSpace
;
2242 uint32_t DispatchGRFStartRegisterForURBData
;
2243 uint32_t PatchURBEntryReadLength
;
2244 uint32_t PatchURBEntryReadOffset
;
2245 uint32_t MaximumNumberofThreads
;
2246 uint32_t StatisticsEnable
;
2247 uint32_t SIMD8DispatchEnable
;
2248 uint32_t ComputeWCoordinateEnable
;
2249 uint32_t CacheDisable
;
2250 uint32_t FunctionEnable
;
2251 uint32_t VertexURBEntryOutputReadOffset
;
2252 uint32_t VertexURBEntryOutputLength
;
2253 uint32_t UserClipDistanceClipTestEnableBitmask
;
2254 uint32_t UserClipDistanceCullTestEnableBitmask
;
2258 GEN8_3DSTATE_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2259 const struct GEN8_3DSTATE_DS
* restrict values
)
2261 uint32_t *dw
= (uint32_t * restrict
) dst
;
2264 __gen_field(values
->CommandType
, 29, 31) |
2265 __gen_field(values
->CommandSubType
, 27, 28) |
2266 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2267 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2268 __gen_field(values
->DwordLength
, 0, 7) |
2272 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2279 __gen_field(values
->SingleDomainPointDispatch
, 31, 31) |
2280 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2281 __gen_field(values
->SamplerCount
, 27, 29) |
2282 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2283 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2284 __gen_field(values
->FloatingPointMode
, 16, 16) |
2285 __gen_field(values
->AccessesUAV
, 14, 14) |
2286 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2287 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2291 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2292 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2299 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
2300 __gen_field(values
->PatchURBEntryReadLength
, 11, 17) |
2301 __gen_field(values
->PatchURBEntryReadOffset
, 4, 9) |
2305 __gen_field(values
->MaximumNumberofThreads
, 21, 29) |
2306 __gen_field(values
->StatisticsEnable
, 10, 10) |
2307 __gen_field(values
->SIMD8DispatchEnable
, 3, 3) |
2308 __gen_field(values
->ComputeWCoordinateEnable
, 2, 2) |
2309 __gen_field(values
->CacheDisable
, 1, 1) |
2310 __gen_field(values
->FunctionEnable
, 0, 0) |
2314 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2315 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2316 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2317 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2322 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_length_bias 0x00000002
2323 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_header \
2325 .CommandSubType = 3, \
2326 ._3DCommandOpcode = 0, \
2327 ._3DCommandSubOpcode = 55
2329 struct GEN8_GATHER_CONSTANT_ENTRY
{
2330 uint32_t ConstantBufferOffset
;
2331 uint32_t ChannelMask
;
2332 uint32_t BindingTableIndexOffset
;
2336 GEN8_GATHER_CONSTANT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
2337 const struct GEN8_GATHER_CONSTANT_ENTRY
* restrict values
)
2339 uint32_t *dw
= (uint32_t * restrict
) dst
;
2342 __gen_offset(values
->ConstantBufferOffset
, 8, 15) |
2343 __gen_field(values
->ChannelMask
, 4, 7) |
2344 __gen_field(values
->BindingTableIndexOffset
, 0, 3) |
2349 struct GEN8_3DSTATE_GATHER_CONSTANT_DS
{
2350 uint32_t CommandType
;
2351 uint32_t CommandSubType
;
2352 uint32_t _3DCommandOpcode
;
2353 uint32_t _3DCommandSubOpcode
;
2354 uint32_t DwordLength
;
2355 uint32_t ConstantBufferValid
;
2356 uint32_t ConstantBufferBindingTableBlock
;
2357 uint32_t GatherBufferOffset
;
2358 uint32_t ConstantBufferDx9GenerateStall
;
2359 /* variable length fields follow */
2363 GEN8_3DSTATE_GATHER_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2364 const struct GEN8_3DSTATE_GATHER_CONSTANT_DS
* restrict values
)
2366 uint32_t *dw
= (uint32_t * restrict
) dst
;
2369 __gen_field(values
->CommandType
, 29, 31) |
2370 __gen_field(values
->CommandSubType
, 27, 28) |
2371 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2372 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2373 __gen_field(values
->DwordLength
, 0, 7) |
2377 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2378 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2382 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2383 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2386 /* variable length fields follow */
2389 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_length_bias 0x00000002
2390 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_header \
2392 .CommandSubType = 3, \
2393 ._3DCommandOpcode = 0, \
2394 ._3DCommandSubOpcode = 53
2396 struct GEN8_3DSTATE_GATHER_CONSTANT_GS
{
2397 uint32_t CommandType
;
2398 uint32_t CommandSubType
;
2399 uint32_t _3DCommandOpcode
;
2400 uint32_t _3DCommandSubOpcode
;
2401 uint32_t DwordLength
;
2402 uint32_t ConstantBufferValid
;
2403 uint32_t ConstantBufferBindingTableBlock
;
2404 uint32_t GatherBufferOffset
;
2405 uint32_t ConstantBufferDx9GenerateStall
;
2406 /* variable length fields follow */
2410 GEN8_3DSTATE_GATHER_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2411 const struct GEN8_3DSTATE_GATHER_CONSTANT_GS
* restrict values
)
2413 uint32_t *dw
= (uint32_t * restrict
) dst
;
2416 __gen_field(values
->CommandType
, 29, 31) |
2417 __gen_field(values
->CommandSubType
, 27, 28) |
2418 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2419 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2420 __gen_field(values
->DwordLength
, 0, 7) |
2424 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2425 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2429 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2430 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2433 /* variable length fields follow */
2436 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_length_bias 0x00000002
2437 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_header \
2439 .CommandSubType = 3, \
2440 ._3DCommandOpcode = 0, \
2441 ._3DCommandSubOpcode = 54
2443 struct GEN8_3DSTATE_GATHER_CONSTANT_HS
{
2444 uint32_t CommandType
;
2445 uint32_t CommandSubType
;
2446 uint32_t _3DCommandOpcode
;
2447 uint32_t _3DCommandSubOpcode
;
2448 uint32_t DwordLength
;
2449 uint32_t ConstantBufferValid
;
2450 uint32_t ConstantBufferBindingTableBlock
;
2451 uint32_t GatherBufferOffset
;
2452 uint32_t ConstantBufferDx9GenerateStall
;
2453 /* variable length fields follow */
2457 GEN8_3DSTATE_GATHER_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2458 const struct GEN8_3DSTATE_GATHER_CONSTANT_HS
* restrict values
)
2460 uint32_t *dw
= (uint32_t * restrict
) dst
;
2463 __gen_field(values
->CommandType
, 29, 31) |
2464 __gen_field(values
->CommandSubType
, 27, 28) |
2465 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2466 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2467 __gen_field(values
->DwordLength
, 0, 7) |
2471 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2472 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2476 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2477 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2480 /* variable length fields follow */
2483 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_length_bias 0x00000002
2484 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_header \
2486 .CommandSubType = 3, \
2487 ._3DCommandOpcode = 0, \
2488 ._3DCommandSubOpcode = 56
2490 struct GEN8_3DSTATE_GATHER_CONSTANT_PS
{
2491 uint32_t CommandType
;
2492 uint32_t CommandSubType
;
2493 uint32_t _3DCommandOpcode
;
2494 uint32_t _3DCommandSubOpcode
;
2495 uint32_t DwordLength
;
2496 uint32_t ConstantBufferValid
;
2497 uint32_t ConstantBufferBindingTableBlock
;
2498 uint32_t GatherBufferOffset
;
2499 uint32_t ConstantBufferDx9GenerateStall
;
2500 uint32_t ConstantBufferDx9Enable
;
2501 /* variable length fields follow */
2505 GEN8_3DSTATE_GATHER_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
2506 const struct GEN8_3DSTATE_GATHER_CONSTANT_PS
* restrict values
)
2508 uint32_t *dw
= (uint32_t * restrict
) dst
;
2511 __gen_field(values
->CommandType
, 29, 31) |
2512 __gen_field(values
->CommandSubType
, 27, 28) |
2513 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2514 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2515 __gen_field(values
->DwordLength
, 0, 7) |
2519 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2520 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2524 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2525 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2526 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2529 /* variable length fields follow */
2532 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_length_bias 0x00000002
2533 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_header \
2535 .CommandSubType = 3, \
2536 ._3DCommandOpcode = 0, \
2537 ._3DCommandSubOpcode = 52
2539 struct GEN8_3DSTATE_GATHER_CONSTANT_VS
{
2540 uint32_t CommandType
;
2541 uint32_t CommandSubType
;
2542 uint32_t _3DCommandOpcode
;
2543 uint32_t _3DCommandSubOpcode
;
2544 uint32_t DwordLength
;
2545 uint32_t ConstantBufferValid
;
2546 uint32_t ConstantBufferBindingTableBlock
;
2547 uint32_t GatherBufferOffset
;
2548 uint32_t ConstantBufferDx9GenerateStall
;
2549 uint32_t ConstantBufferDx9Enable
;
2550 /* variable length fields follow */
2554 GEN8_3DSTATE_GATHER_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2555 const struct GEN8_3DSTATE_GATHER_CONSTANT_VS
* restrict values
)
2557 uint32_t *dw
= (uint32_t * restrict
) dst
;
2560 __gen_field(values
->CommandType
, 29, 31) |
2561 __gen_field(values
->CommandSubType
, 27, 28) |
2562 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2563 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2564 __gen_field(values
->DwordLength
, 0, 7) |
2568 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2569 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2573 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2574 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2575 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2578 /* variable length fields follow */
2581 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length 0x00000004
2582 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length_bias 0x00000002
2583 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_header \
2585 .CommandSubType = 3, \
2586 ._3DCommandOpcode = 1, \
2587 ._3DCommandSubOpcode = 26, \
2590 struct GEN8_3DSTATE_GATHER_POOL_ALLOC
{
2591 uint32_t CommandType
;
2592 uint32_t CommandSubType
;
2593 uint32_t _3DCommandOpcode
;
2594 uint32_t _3DCommandSubOpcode
;
2595 uint32_t DwordLength
;
2596 __gen_address_type GatherPoolBaseAddress
;
2597 uint32_t GatherPoolEnable
;
2598 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2599 uint32_t GatherPoolBufferSize
;
2603 GEN8_3DSTATE_GATHER_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
2604 const struct GEN8_3DSTATE_GATHER_POOL_ALLOC
* restrict values
)
2606 uint32_t *dw
= (uint32_t * restrict
) dst
;
2609 __gen_field(values
->CommandType
, 29, 31) |
2610 __gen_field(values
->CommandSubType
, 27, 28) |
2611 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2612 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2613 __gen_field(values
->DwordLength
, 0, 7) |
2616 uint32_t dw_MemoryObjectControlState
;
2617 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
2619 __gen_field(values
->GatherPoolEnable
, 11, 11) |
2620 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
2624 __gen_combine_address(data
, &dw
[1], values
->GatherPoolBaseAddress
, dw1
);
2630 __gen_field(values
->GatherPoolBufferSize
, 12, 31) |
2635 #define GEN8_3DSTATE_GS_length 0x0000000a
2636 #define GEN8_3DSTATE_GS_length_bias 0x00000002
2637 #define GEN8_3DSTATE_GS_header \
2639 .CommandSubType = 3, \
2640 ._3DCommandOpcode = 0, \
2641 ._3DCommandSubOpcode = 17, \
2644 struct GEN8_3DSTATE_GS
{
2645 uint32_t CommandType
;
2646 uint32_t CommandSubType
;
2647 uint32_t _3DCommandOpcode
;
2648 uint32_t _3DCommandSubOpcode
;
2649 uint32_t DwordLength
;
2650 uint64_t KernelStartPointer
;
2651 uint32_t SingleProgramFlow
;
2654 uint32_t VectorMaskEnable
;
2655 #define NoSamplers 0
2656 #define _14Samplers 1
2657 #define _58Samplers 2
2658 #define _912Samplers 3
2659 #define _1316Samplers 4
2660 uint32_t SamplerCount
;
2661 uint32_t BindingTableEntryCount
;
2664 uint32_t ThreadDispatchPriority
;
2667 uint32_t FloatingPointMode
;
2668 uint32_t IllegalOpcodeExceptionEnable
;
2669 uint32_t AccessesUAV
;
2670 uint32_t MaskStackExceptionEnable
;
2671 uint32_t SoftwareExceptionEnable
;
2672 uint32_t ExpectedVertexCount
;
2673 uint64_t ScratchSpaceBasePointer
;
2674 uint32_t PerThreadScratchSpace
;
2675 uint32_t OutputVertexSize
;
2676 uint32_t OutputTopology
;
2677 uint32_t VertexURBEntryReadLength
;
2678 uint32_t IncludeVertexHandles
;
2679 uint32_t VertexURBEntryReadOffset
;
2680 uint32_t DispatchGRFStartRegisterForURBData
;
2681 uint32_t MaximumNumberofThreads
;
2682 uint32_t ControlDataHeaderSize
;
2683 uint32_t InstanceControl
;
2684 uint32_t DefaultStreamId
;
2685 #define DispatchModeSingle 0
2686 #define DispatchModeDualInstance 1
2687 #define DispatchModeDualObject 2
2688 #define DispatchModeSIMD8 3
2689 uint32_t DispatchMode
;
2690 uint32_t StatisticsEnable
;
2691 uint32_t InvocationsIncrementValue
;
2692 uint32_t IncludePrimitiveID
;
2696 uint32_t ReorderMode
;
2697 uint32_t DiscardAdjacency
;
2701 uint32_t ControlDataFormat
;
2702 uint32_t StaticOutput
;
2703 uint32_t StaticOutputVertexCount
;
2704 uint32_t VertexURBEntryOutputReadOffset
;
2705 uint32_t VertexURBEntryOutputLength
;
2706 uint32_t UserClipDistanceClipTestEnableBitmask
;
2707 uint32_t UserClipDistanceCullTestEnableBitmask
;
2711 GEN8_3DSTATE_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2712 const struct GEN8_3DSTATE_GS
* restrict values
)
2714 uint32_t *dw
= (uint32_t * restrict
) dst
;
2717 __gen_field(values
->CommandType
, 29, 31) |
2718 __gen_field(values
->CommandSubType
, 27, 28) |
2719 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2720 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2721 __gen_field(values
->DwordLength
, 0, 7) |
2725 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2732 __gen_field(values
->SingleProgramFlow
, 31, 31) |
2733 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2734 __gen_field(values
->SamplerCount
, 27, 29) |
2735 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2736 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2737 __gen_field(values
->FloatingPointMode
, 16, 16) |
2738 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2739 __gen_field(values
->AccessesUAV
, 12, 12) |
2740 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
2741 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2742 __gen_field(values
->ExpectedVertexCount
, 0, 5) |
2746 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2747 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2754 __gen_field(values
->OutputVertexSize
, 23, 28) |
2755 __gen_field(values
->OutputTopology
, 17, 22) |
2756 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2757 __gen_field(values
->IncludeVertexHandles
, 10, 10) |
2758 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2759 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 0, 3) |
2763 __gen_field(values
->MaximumNumberofThreads
, 24, 31) |
2764 __gen_field(values
->ControlDataHeaderSize
, 20, 23) |
2765 __gen_field(values
->InstanceControl
, 15, 19) |
2766 __gen_field(values
->DefaultStreamId
, 13, 14) |
2767 __gen_field(values
->DispatchMode
, 11, 12) |
2768 __gen_field(values
->StatisticsEnable
, 10, 10) |
2769 __gen_field(values
->InvocationsIncrementValue
, 5, 9) |
2770 __gen_field(values
->IncludePrimitiveID
, 4, 4) |
2771 __gen_field(values
->Hint
, 3, 3) |
2772 __gen_field(values
->ReorderMode
, 2, 2) |
2773 __gen_field(values
->DiscardAdjacency
, 1, 1) |
2774 __gen_field(values
->Enable
, 0, 0) |
2778 __gen_field(values
->ControlDataFormat
, 31, 31) |
2779 __gen_field(values
->StaticOutput
, 30, 30) |
2780 __gen_field(values
->StaticOutputVertexCount
, 16, 26) |
2784 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2785 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2786 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2787 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2792 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length 0x00000005
2793 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length_bias 0x00000002
2794 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_header \
2796 .CommandSubType = 3, \
2797 ._3DCommandOpcode = 0, \
2798 ._3DCommandSubOpcode = 7, \
2801 struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
{
2802 uint32_t CommandType
;
2803 uint32_t CommandSubType
;
2804 uint32_t _3DCommandOpcode
;
2805 uint32_t _3DCommandSubOpcode
;
2806 uint32_t DwordLength
;
2807 struct GEN8_MEMORY_OBJECT_CONTROL_STATE HierarchicalDepthBufferObjectControlState
;
2808 uint32_t SurfacePitch
;
2809 __gen_address_type SurfaceBaseAddress
;
2810 uint32_t SurfaceQPitch
;
2814 GEN8_3DSTATE_HIER_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2815 const struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
* restrict values
)
2817 uint32_t *dw
= (uint32_t * restrict
) dst
;
2820 __gen_field(values
->CommandType
, 29, 31) |
2821 __gen_field(values
->CommandSubType
, 27, 28) |
2822 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2823 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2824 __gen_field(values
->DwordLength
, 0, 7) |
2827 uint32_t dw_HierarchicalDepthBufferObjectControlState
;
2828 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_HierarchicalDepthBufferObjectControlState
, &values
->HierarchicalDepthBufferObjectControlState
);
2830 __gen_field(dw_HierarchicalDepthBufferObjectControlState
, 25, 31) |
2831 __gen_field(values
->SurfacePitch
, 0, 16) |
2838 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2844 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2849 #define GEN8_3DSTATE_HS_length 0x00000009
2850 #define GEN8_3DSTATE_HS_length_bias 0x00000002
2851 #define GEN8_3DSTATE_HS_header \
2853 .CommandSubType = 3, \
2854 ._3DCommandOpcode = 0, \
2855 ._3DCommandSubOpcode = 27, \
2858 struct GEN8_3DSTATE_HS
{
2859 uint32_t CommandType
;
2860 uint32_t CommandSubType
;
2861 uint32_t _3DCommandOpcode
;
2862 uint32_t _3DCommandSubOpcode
;
2863 uint32_t DwordLength
;
2864 #define NoSamplers 0
2865 #define _14Samplers 1
2866 #define _58Samplers 2
2867 #define _912Samplers 3
2868 #define _1316Samplers 4
2869 uint32_t SamplerCount
;
2870 uint32_t BindingTableEntryCount
;
2873 uint32_t ThreadDispatchPriority
;
2876 uint32_t FloatingPointMode
;
2877 uint32_t IllegalOpcodeExceptionEnable
;
2878 uint32_t SoftwareExceptionEnable
;
2880 uint32_t StatisticsEnable
;
2881 uint32_t MaximumNumberofThreads
;
2882 uint32_t InstanceCount
;
2883 uint64_t KernelStartPointer
;
2884 uint64_t ScratchSpaceBasePointer
;
2885 uint32_t PerThreadScratchSpace
;
2886 uint32_t SingleProgramFlow
;
2889 uint32_t VectorMaskEnable
;
2890 uint32_t AccessesUAV
;
2891 uint32_t IncludeVertexHandles
;
2892 uint32_t DispatchGRFStartRegisterForURBData
;
2893 uint32_t VertexURBEntryReadLength
;
2894 uint32_t VertexURBEntryReadOffset
;
2898 GEN8_3DSTATE_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2899 const struct GEN8_3DSTATE_HS
* restrict values
)
2901 uint32_t *dw
= (uint32_t * restrict
) dst
;
2904 __gen_field(values
->CommandType
, 29, 31) |
2905 __gen_field(values
->CommandSubType
, 27, 28) |
2906 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2907 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2908 __gen_field(values
->DwordLength
, 0, 7) |
2912 __gen_field(values
->SamplerCount
, 27, 29) |
2913 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2914 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2915 __gen_field(values
->FloatingPointMode
, 16, 16) |
2916 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2917 __gen_field(values
->SoftwareExceptionEnable
, 12, 12) |
2921 __gen_field(values
->Enable
, 31, 31) |
2922 __gen_field(values
->StatisticsEnable
, 29, 29) |
2923 __gen_field(values
->MaximumNumberofThreads
, 8, 16) |
2924 __gen_field(values
->InstanceCount
, 0, 3) |
2928 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2935 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2936 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2943 __gen_field(values
->SingleProgramFlow
, 27, 27) |
2944 __gen_field(values
->VectorMaskEnable
, 26, 26) |
2945 __gen_field(values
->AccessesUAV
, 25, 25) |
2946 __gen_field(values
->IncludeVertexHandles
, 24, 24) |
2947 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 19, 23) |
2948 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2949 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2957 #define GEN8_3DSTATE_INDEX_BUFFER_length 0x00000005
2958 #define GEN8_3DSTATE_INDEX_BUFFER_length_bias 0x00000002
2959 #define GEN8_3DSTATE_INDEX_BUFFER_header \
2961 .CommandSubType = 3, \
2962 ._3DCommandOpcode = 0, \
2963 ._3DCommandSubOpcode = 10, \
2966 struct GEN8_3DSTATE_INDEX_BUFFER
{
2967 uint32_t CommandType
;
2968 uint32_t CommandSubType
;
2969 uint32_t _3DCommandOpcode
;
2970 uint32_t _3DCommandSubOpcode
;
2971 uint32_t DwordLength
;
2972 #define INDEX_BYTE 0
2973 #define INDEX_WORD 1
2974 #define INDEX_DWORD 2
2975 uint32_t IndexFormat
;
2976 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2977 __gen_address_type BufferStartingAddress
;
2978 uint32_t BufferSize
;
2982 GEN8_3DSTATE_INDEX_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2983 const struct GEN8_3DSTATE_INDEX_BUFFER
* restrict values
)
2985 uint32_t *dw
= (uint32_t * restrict
) dst
;
2988 __gen_field(values
->CommandType
, 29, 31) |
2989 __gen_field(values
->CommandSubType
, 27, 28) |
2990 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2991 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2992 __gen_field(values
->DwordLength
, 0, 7) |
2995 uint32_t dw_MemoryObjectControlState
;
2996 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
2998 __gen_field(values
->IndexFormat
, 8, 9) |
2999 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
3006 __gen_combine_address(data
, &dw
[2], values
->BufferStartingAddress
, dw2
);
3012 __gen_field(values
->BufferSize
, 0, 31) |
3017 #define GEN8_3DSTATE_LINE_STIPPLE_length 0x00000003
3018 #define GEN8_3DSTATE_LINE_STIPPLE_length_bias 0x00000002
3019 #define GEN8_3DSTATE_LINE_STIPPLE_header \
3021 .CommandSubType = 3, \
3022 ._3DCommandOpcode = 1, \
3023 ._3DCommandSubOpcode = 8, \
3026 struct GEN8_3DSTATE_LINE_STIPPLE
{
3027 uint32_t CommandType
;
3028 uint32_t CommandSubType
;
3029 uint32_t _3DCommandOpcode
;
3030 uint32_t _3DCommandSubOpcode
;
3031 uint32_t DwordLength
;
3032 uint32_t ModifyEnableCurrentRepeatCounterCurrentStippleIndex
;
3033 uint32_t CurrentRepeatCounter
;
3034 uint32_t CurrentStippleIndex
;
3035 uint32_t LineStipplePattern
;
3036 uint32_t LineStippleInverseRepeatCount
;
3037 uint32_t LineStippleRepeatCount
;
3041 GEN8_3DSTATE_LINE_STIPPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3042 const struct GEN8_3DSTATE_LINE_STIPPLE
* restrict values
)
3044 uint32_t *dw
= (uint32_t * restrict
) dst
;
3047 __gen_field(values
->CommandType
, 29, 31) |
3048 __gen_field(values
->CommandSubType
, 27, 28) |
3049 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3050 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3051 __gen_field(values
->DwordLength
, 0, 7) |
3055 __gen_field(values
->ModifyEnableCurrentRepeatCounterCurrentStippleIndex
, 31, 31) |
3056 __gen_field(values
->CurrentRepeatCounter
, 21, 29) |
3057 __gen_field(values
->CurrentStippleIndex
, 16, 19) |
3058 __gen_field(values
->LineStipplePattern
, 0, 15) |
3062 __gen_field(values
->LineStippleInverseRepeatCount
, 15, 31) |
3063 __gen_field(values
->LineStippleRepeatCount
, 0, 8) |
3068 #define GEN8_3DSTATE_MONOFILTER_SIZE_length 0x00000002
3069 #define GEN8_3DSTATE_MONOFILTER_SIZE_length_bias 0x00000002
3070 #define GEN8_3DSTATE_MONOFILTER_SIZE_header \
3072 .CommandSubType = 3, \
3073 ._3DCommandOpcode = 1, \
3074 ._3DCommandSubOpcode = 17, \
3077 struct GEN8_3DSTATE_MONOFILTER_SIZE
{
3078 uint32_t CommandType
;
3079 uint32_t CommandSubType
;
3080 uint32_t _3DCommandOpcode
;
3081 uint32_t _3DCommandSubOpcode
;
3082 uint32_t DwordLength
;
3083 uint32_t MonochromeFilterWidth
;
3084 uint32_t MonochromeFilterHeight
;
3088 GEN8_3DSTATE_MONOFILTER_SIZE_pack(__gen_user_data
*data
, void * restrict dst
,
3089 const struct GEN8_3DSTATE_MONOFILTER_SIZE
* restrict values
)
3091 uint32_t *dw
= (uint32_t * restrict
) dst
;
3094 __gen_field(values
->CommandType
, 29, 31) |
3095 __gen_field(values
->CommandSubType
, 27, 28) |
3096 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3097 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3098 __gen_field(values
->DwordLength
, 0, 7) |
3102 __gen_field(values
->MonochromeFilterWidth
, 3, 5) |
3103 __gen_field(values
->MonochromeFilterHeight
, 0, 2) |
3108 #define GEN8_3DSTATE_MULTISAMPLE_length 0x00000002
3109 #define GEN8_3DSTATE_MULTISAMPLE_length_bias 0x00000002
3110 #define GEN8_3DSTATE_MULTISAMPLE_header \
3112 .CommandSubType = 3, \
3113 ._3DCommandOpcode = 0, \
3114 ._3DCommandSubOpcode = 13, \
3117 struct GEN8_3DSTATE_MULTISAMPLE
{
3118 uint32_t CommandType
;
3119 uint32_t CommandSubType
;
3120 uint32_t _3DCommandOpcode
;
3121 uint32_t _3DCommandSubOpcode
;
3122 uint32_t DwordLength
;
3123 uint32_t PixelPositionOffsetEnable
;
3126 uint32_t PixelLocation
;
3127 uint32_t NumberofMultisamples
;
3131 GEN8_3DSTATE_MULTISAMPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3132 const struct GEN8_3DSTATE_MULTISAMPLE
* restrict values
)
3134 uint32_t *dw
= (uint32_t * restrict
) dst
;
3137 __gen_field(values
->CommandType
, 29, 31) |
3138 __gen_field(values
->CommandSubType
, 27, 28) |
3139 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3140 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3141 __gen_field(values
->DwordLength
, 0, 7) |
3145 __gen_field(values
->PixelPositionOffsetEnable
, 5, 5) |
3146 __gen_field(values
->PixelLocation
, 4, 4) |
3147 __gen_field(values
->NumberofMultisamples
, 1, 3) |
3152 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length 0x00000002
3153 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length_bias 0x00000002
3154 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_header \
3156 .CommandSubType = 3, \
3157 ._3DCommandOpcode = 1, \
3158 ._3DCommandSubOpcode = 6, \
3161 struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
{
3162 uint32_t CommandType
;
3163 uint32_t CommandSubType
;
3164 uint32_t _3DCommandOpcode
;
3165 uint32_t _3DCommandSubOpcode
;
3166 uint32_t DwordLength
;
3167 uint32_t PolygonStippleXOffset
;
3168 uint32_t PolygonStippleYOffset
;
3172 GEN8_3DSTATE_POLY_STIPPLE_OFFSET_pack(__gen_user_data
*data
, void * restrict dst
,
3173 const struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
* restrict values
)
3175 uint32_t *dw
= (uint32_t * restrict
) dst
;
3178 __gen_field(values
->CommandType
, 29, 31) |
3179 __gen_field(values
->CommandSubType
, 27, 28) |
3180 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3181 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3182 __gen_field(values
->DwordLength
, 0, 7) |
3186 __gen_field(values
->PolygonStippleXOffset
, 8, 12) |
3187 __gen_field(values
->PolygonStippleYOffset
, 0, 4) |
3192 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length 0x00000021
3193 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length_bias 0x00000002
3194 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_header\
3196 .CommandSubType = 3, \
3197 ._3DCommandOpcode = 1, \
3198 ._3DCommandSubOpcode = 7, \
3201 struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
{
3202 uint32_t CommandType
;
3203 uint32_t CommandSubType
;
3204 uint32_t _3DCommandOpcode
;
3205 uint32_t _3DCommandSubOpcode
;
3206 uint32_t DwordLength
;
3207 uint32_t PatternRow
;
3211 GEN8_3DSTATE_POLY_STIPPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
3212 const struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
* restrict values
)
3214 uint32_t *dw
= (uint32_t * restrict
) dst
;
3217 __gen_field(values
->CommandType
, 29, 31) |
3218 __gen_field(values
->CommandSubType
, 27, 28) |
3219 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3220 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3221 __gen_field(values
->DwordLength
, 0, 7) |
3225 __gen_field(values
->PatternRow
, 0, 31) |
3230 #define GEN8_3DSTATE_PS_length 0x0000000c
3231 #define GEN8_3DSTATE_PS_length_bias 0x00000002
3232 #define GEN8_3DSTATE_PS_header \
3234 .CommandSubType = 3, \
3235 ._3DCommandOpcode = 0, \
3236 ._3DCommandSubOpcode = 32, \
3239 struct GEN8_3DSTATE_PS
{
3240 uint32_t CommandType
;
3241 uint32_t CommandSubType
;
3242 uint32_t _3DCommandOpcode
;
3243 uint32_t _3DCommandSubOpcode
;
3244 uint32_t DwordLength
;
3245 uint64_t KernelStartPointer0
;
3248 uint32_t SingleProgramFlow
;
3251 uint32_t VectorMaskEnable
;
3252 #define NoSamplers 0
3253 #define _14Samplers 1
3254 #define _58Samplers 2
3255 #define _912Samplers 3
3256 #define _1316Samplers 4
3257 uint32_t SamplerCount
;
3258 #define FlushedtoZero 0
3260 uint32_t SinglePrecisionDenormalMode
;
3261 uint32_t BindingTableEntryCount
;
3264 uint32_t ThreadDispatchPriority
;
3267 uint32_t FloatingPointMode
;
3272 uint32_t RoundingMode
;
3273 uint32_t IllegalOpcodeExceptionEnable
;
3274 uint32_t MaskStackExceptionEnable
;
3275 uint32_t SoftwareExceptionEnable
;
3276 uint64_t ScratchSpaceBasePointer
;
3277 uint32_t PerThreadScratchSpace
;
3278 uint32_t MaximumNumberofThreadsPerPSD
;
3279 uint32_t PushConstantEnable
;
3280 uint32_t RenderTargetFastClearEnable
;
3281 uint32_t RenderTargetResolveEnable
;
3282 #define POSOFFSET_NONE 0
3283 #define POSOFFSET_CENTROID 2
3284 #define POSOFFSET_SAMPLE 3
3285 uint32_t PositionXYOffsetSelect
;
3286 uint32_t _32PixelDispatchEnable
;
3287 uint32_t _16PixelDispatchEnable
;
3288 uint32_t _8PixelDispatchEnable
;
3289 uint32_t DispatchGRFStartRegisterForConstantSetupData0
;
3290 uint32_t DispatchGRFStartRegisterForConstantSetupData1
;
3291 uint32_t DispatchGRFStartRegisterForConstantSetupData2
;
3292 uint64_t KernelStartPointer1
;
3293 uint64_t KernelStartPointer2
;
3297 GEN8_3DSTATE_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3298 const struct GEN8_3DSTATE_PS
* restrict values
)
3300 uint32_t *dw
= (uint32_t * restrict
) dst
;
3303 __gen_field(values
->CommandType
, 29, 31) |
3304 __gen_field(values
->CommandSubType
, 27, 28) |
3305 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3306 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3307 __gen_field(values
->DwordLength
, 0, 7) |
3311 __gen_offset(values
->KernelStartPointer0
, 6, 63) |
3318 __gen_field(values
->SingleProgramFlow
, 31, 31) |
3319 __gen_field(values
->VectorMaskEnable
, 30, 30) |
3320 __gen_field(values
->SamplerCount
, 27, 29) |
3321 __gen_field(values
->SinglePrecisionDenormalMode
, 26, 26) |
3322 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
3323 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
3324 __gen_field(values
->FloatingPointMode
, 16, 16) |
3325 __gen_field(values
->RoundingMode
, 14, 15) |
3326 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
3327 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
3328 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
3332 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
3333 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
3340 __gen_field(values
->MaximumNumberofThreadsPerPSD
, 23, 31) |
3341 __gen_field(values
->PushConstantEnable
, 11, 11) |
3342 __gen_field(values
->RenderTargetFastClearEnable
, 8, 8) |
3343 __gen_field(values
->RenderTargetResolveEnable
, 6, 6) |
3344 __gen_field(values
->PositionXYOffsetSelect
, 3, 4) |
3345 __gen_field(values
->_32PixelDispatchEnable
, 2, 2) |
3346 __gen_field(values
->_16PixelDispatchEnable
, 1, 1) |
3347 __gen_field(values
->_8PixelDispatchEnable
, 0, 0) |
3351 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData0
, 16, 22) |
3352 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData1
, 8, 14) |
3353 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData2
, 0, 6) |
3357 __gen_offset(values
->KernelStartPointer1
, 6, 63) |
3364 __gen_offset(values
->KernelStartPointer2
, 6, 63) |
3368 dw
[11] = qw10
>> 32;
3372 #define GEN8_3DSTATE_PS_BLEND_length 0x00000002
3373 #define GEN8_3DSTATE_PS_BLEND_length_bias 0x00000002
3374 #define GEN8_3DSTATE_PS_BLEND_header \
3376 .CommandSubType = 3, \
3377 ._3DCommandOpcode = 0, \
3378 ._3DCommandSubOpcode = 77, \
3381 struct GEN8_3DSTATE_PS_BLEND
{
3382 uint32_t CommandType
;
3383 uint32_t CommandSubType
;
3384 uint32_t _3DCommandOpcode
;
3385 uint32_t _3DCommandSubOpcode
;
3386 uint32_t DwordLength
;
3387 uint32_t AlphaToCoverageEnable
;
3388 uint32_t HasWriteableRT
;
3389 uint32_t ColorBufferBlendEnable
;
3390 uint32_t SourceAlphaBlendFactor
;
3391 uint32_t DestinationAlphaBlendFactor
;
3392 uint32_t SourceBlendFactor
;
3393 uint32_t DestinationBlendFactor
;
3394 uint32_t AlphaTestEnable
;
3395 uint32_t IndependentAlphaBlendEnable
;
3399 GEN8_3DSTATE_PS_BLEND_pack(__gen_user_data
*data
, void * restrict dst
,
3400 const struct GEN8_3DSTATE_PS_BLEND
* restrict values
)
3402 uint32_t *dw
= (uint32_t * restrict
) dst
;
3405 __gen_field(values
->CommandType
, 29, 31) |
3406 __gen_field(values
->CommandSubType
, 27, 28) |
3407 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3408 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3409 __gen_field(values
->DwordLength
, 0, 7) |
3413 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
3414 __gen_field(values
->HasWriteableRT
, 30, 30) |
3415 __gen_field(values
->ColorBufferBlendEnable
, 29, 29) |
3416 __gen_field(values
->SourceAlphaBlendFactor
, 24, 28) |
3417 __gen_field(values
->DestinationAlphaBlendFactor
, 19, 23) |
3418 __gen_field(values
->SourceBlendFactor
, 14, 18) |
3419 __gen_field(values
->DestinationBlendFactor
, 9, 13) |
3420 __gen_field(values
->AlphaTestEnable
, 8, 8) |
3421 __gen_field(values
->IndependentAlphaBlendEnable
, 7, 7) |
3426 #define GEN8_3DSTATE_PS_EXTRA_length 0x00000002
3427 #define GEN8_3DSTATE_PS_EXTRA_length_bias 0x00000002
3428 #define GEN8_3DSTATE_PS_EXTRA_header \
3430 .CommandSubType = 3, \
3431 ._3DCommandOpcode = 0, \
3432 ._3DCommandSubOpcode = 79, \
3435 struct GEN8_3DSTATE_PS_EXTRA
{
3436 uint32_t CommandType
;
3437 uint32_t CommandSubType
;
3438 uint32_t _3DCommandOpcode
;
3439 uint32_t _3DCommandSubOpcode
;
3440 uint32_t DwordLength
;
3441 uint32_t PixelShaderValid
;
3442 uint32_t PixelShaderDoesnotwritetoRT
;
3443 uint32_t oMaskPresenttoRenderTarget
;
3444 uint32_t PixelShaderKillsPixel
;
3445 #define PSCDEPTH_OFF 0
3446 #define PSCDEPTH_ON 1
3447 #define PSCDEPTH_ON_GE 2
3448 #define PSCDEPTH_ON_LE 3
3449 uint32_t PixelShaderComputedDepthMode
;
3450 uint32_t ForceComputedDepth
;
3451 uint32_t PixelShaderUsesSourceDepth
;
3452 uint32_t PixelShaderUsesSourceW
;
3454 uint32_t AttributeEnable
;
3455 uint32_t PixelShaderDisablesAlphaToCoverage
;
3456 uint32_t PixelShaderIsPerSample
;
3457 uint32_t PixelShaderHasUAV
;
3458 uint32_t PixelShaderUsesInputCoverageMask
;
3462 GEN8_3DSTATE_PS_EXTRA_pack(__gen_user_data
*data
, void * restrict dst
,
3463 const struct GEN8_3DSTATE_PS_EXTRA
* restrict values
)
3465 uint32_t *dw
= (uint32_t * restrict
) dst
;
3468 __gen_field(values
->CommandType
, 29, 31) |
3469 __gen_field(values
->CommandSubType
, 27, 28) |
3470 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3471 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3472 __gen_field(values
->DwordLength
, 0, 7) |
3476 __gen_field(values
->PixelShaderValid
, 31, 31) |
3477 __gen_field(values
->PixelShaderDoesnotwritetoRT
, 30, 30) |
3478 __gen_field(values
->oMaskPresenttoRenderTarget
, 29, 29) |
3479 __gen_field(values
->PixelShaderKillsPixel
, 28, 28) |
3480 __gen_field(values
->PixelShaderComputedDepthMode
, 26, 27) |
3481 __gen_field(values
->ForceComputedDepth
, 25, 25) |
3482 __gen_field(values
->PixelShaderUsesSourceDepth
, 24, 24) |
3483 __gen_field(values
->PixelShaderUsesSourceW
, 23, 23) |
3484 __gen_field(values
->Removed
, 17, 17) |
3485 __gen_field(values
->AttributeEnable
, 8, 8) |
3486 __gen_field(values
->PixelShaderDisablesAlphaToCoverage
, 7, 7) |
3487 __gen_field(values
->PixelShaderIsPerSample
, 6, 6) |
3488 __gen_field(values
->PixelShaderHasUAV
, 2, 2) |
3489 __gen_field(values
->PixelShaderUsesInputCoverageMask
, 1, 1) |
3494 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length 0x00000002
3495 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias 0x00000002
3496 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\
3498 .CommandSubType = 3, \
3499 ._3DCommandOpcode = 1, \
3500 ._3DCommandSubOpcode = 20, \
3503 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
{
3504 uint32_t CommandType
;
3505 uint32_t CommandSubType
;
3506 uint32_t _3DCommandOpcode
;
3507 uint32_t _3DCommandSubOpcode
;
3508 uint32_t DwordLength
;
3509 uint32_t ConstantBufferOffset
;
3510 uint32_t ConstantBufferSize
;
3514 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3515 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
* restrict values
)
3517 uint32_t *dw
= (uint32_t * restrict
) dst
;
3520 __gen_field(values
->CommandType
, 29, 31) |
3521 __gen_field(values
->CommandSubType
, 27, 28) |
3522 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3523 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3524 __gen_field(values
->DwordLength
, 0, 7) |
3528 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3529 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3534 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length 0x00000002
3535 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias 0x00000002
3536 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\
3538 .CommandSubType = 3, \
3539 ._3DCommandOpcode = 1, \
3540 ._3DCommandSubOpcode = 21, \
3543 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
{
3544 uint32_t CommandType
;
3545 uint32_t CommandSubType
;
3546 uint32_t _3DCommandOpcode
;
3547 uint32_t _3DCommandSubOpcode
;
3548 uint32_t DwordLength
;
3549 uint32_t ConstantBufferOffset
;
3550 uint32_t ConstantBufferSize
;
3554 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3555 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
* restrict values
)
3557 uint32_t *dw
= (uint32_t * restrict
) dst
;
3560 __gen_field(values
->CommandType
, 29, 31) |
3561 __gen_field(values
->CommandSubType
, 27, 28) |
3562 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3563 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3564 __gen_field(values
->DwordLength
, 0, 7) |
3568 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3569 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3574 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length 0x00000002
3575 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias 0x00000002
3576 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\
3578 .CommandSubType = 3, \
3579 ._3DCommandOpcode = 1, \
3580 ._3DCommandSubOpcode = 19, \
3583 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
{
3584 uint32_t CommandType
;
3585 uint32_t CommandSubType
;
3586 uint32_t _3DCommandOpcode
;
3587 uint32_t _3DCommandSubOpcode
;
3588 uint32_t DwordLength
;
3589 uint32_t ConstantBufferOffset
;
3590 uint32_t ConstantBufferSize
;
3594 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3595 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
* restrict values
)
3597 uint32_t *dw
= (uint32_t * restrict
) dst
;
3600 __gen_field(values
->CommandType
, 29, 31) |
3601 __gen_field(values
->CommandSubType
, 27, 28) |
3602 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3603 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3604 __gen_field(values
->DwordLength
, 0, 7) |
3608 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3609 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3614 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length 0x00000002
3615 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias 0x00000002
3616 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\
3618 .CommandSubType = 3, \
3619 ._3DCommandOpcode = 1, \
3620 ._3DCommandSubOpcode = 22, \
3623 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
{
3624 uint32_t CommandType
;
3625 uint32_t CommandSubType
;
3626 uint32_t _3DCommandOpcode
;
3627 uint32_t _3DCommandSubOpcode
;
3628 uint32_t DwordLength
;
3629 uint32_t ConstantBufferOffset
;
3630 uint32_t ConstantBufferSize
;
3634 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3635 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
* restrict values
)
3637 uint32_t *dw
= (uint32_t * restrict
) dst
;
3640 __gen_field(values
->CommandType
, 29, 31) |
3641 __gen_field(values
->CommandSubType
, 27, 28) |
3642 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3643 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3644 __gen_field(values
->DwordLength
, 0, 7) |
3648 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3649 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3654 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length 0x00000002
3655 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias 0x00000002
3656 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\
3658 .CommandSubType = 3, \
3659 ._3DCommandOpcode = 1, \
3660 ._3DCommandSubOpcode = 18, \
3663 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
{
3664 uint32_t CommandType
;
3665 uint32_t CommandSubType
;
3666 uint32_t _3DCommandOpcode
;
3667 uint32_t _3DCommandSubOpcode
;
3668 uint32_t DwordLength
;
3669 uint32_t ConstantBufferOffset
;
3670 uint32_t ConstantBufferSize
;
3674 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__gen_user_data
*data
, void * restrict dst
,
3675 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
* restrict values
)
3677 uint32_t *dw
= (uint32_t * restrict
) dst
;
3680 __gen_field(values
->CommandType
, 29, 31) |
3681 __gen_field(values
->CommandSubType
, 27, 28) |
3682 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3683 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3684 __gen_field(values
->DwordLength
, 0, 7) |
3688 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3689 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3694 #define GEN8_3DSTATE_RASTER_length 0x00000005
3695 #define GEN8_3DSTATE_RASTER_length_bias 0x00000002
3696 #define GEN8_3DSTATE_RASTER_header \
3698 .CommandSubType = 3, \
3699 ._3DCommandOpcode = 0, \
3700 ._3DCommandSubOpcode = 80, \
3703 struct GEN8_3DSTATE_RASTER
{
3704 uint32_t CommandType
;
3705 uint32_t CommandSubType
;
3706 uint32_t _3DCommandOpcode
;
3707 uint32_t _3DCommandSubOpcode
;
3708 uint32_t DwordLength
;
3714 #define CounterClockwise 1
3715 uint32_t FrontWinding
;
3716 #define FSC_NUMRASTSAMPLES_0 0
3717 #define FSC_NUMRASTSAMPLES_1 1
3718 #define FSC_NUMRASTSAMPLES_2 2
3719 #define FSC_NUMRASTSAMPLES_4 3
3720 #define FSC_NUMRASTSAMPLES_8 4
3721 #define FSC_NUMRASTSAMPLES_16 5
3722 uint32_t ForcedSampleCount
;
3723 #define CULLMODE_BOTH 0
3724 #define CULLMODE_NONE 1
3725 #define CULLMODE_FRONT 2
3726 #define CULLMODE_BACK 3
3730 uint32_t ForceMultisampling
;
3731 uint32_t SmoothPointEnable
;
3732 uint32_t DXMultisampleRasterizationEnable
;
3733 #define MSRASTMODE_OFF_PIXEL 0
3734 #define MSRASTMODE_OFF_PATTERN 1
3735 #define MSRASTMODE_ON_PIXEL 2
3736 #define MSRASTMODE_ON_PATTERN 3
3737 uint32_t DXMultisampleRasterizationMode
;
3738 uint32_t GlobalDepthOffsetEnableSolid
;
3739 uint32_t GlobalDepthOffsetEnableWireframe
;
3740 uint32_t GlobalDepthOffsetEnablePoint
;
3741 #define RASTER_SOLID 0
3742 #define RASTER_WIREFRAME 1
3743 #define RASTER_POINT 2
3744 uint32_t FrontFaceFillMode
;
3745 #define RASTER_SOLID 0
3746 #define RASTER_WIREFRAME 1
3747 #define RASTER_POINT 2
3748 uint32_t BackFaceFillMode
;
3749 uint32_t AntialiasingEnable
;
3750 uint32_t ScissorRectangleEnable
;
3751 uint32_t ViewportZClipTestEnable
;
3752 float GlobalDepthOffsetConstant
;
3753 float GlobalDepthOffsetScale
;
3754 float GlobalDepthOffsetClamp
;
3758 GEN8_3DSTATE_RASTER_pack(__gen_user_data
*data
, void * restrict dst
,
3759 const struct GEN8_3DSTATE_RASTER
* restrict values
)
3761 uint32_t *dw
= (uint32_t * restrict
) dst
;
3764 __gen_field(values
->CommandType
, 29, 31) |
3765 __gen_field(values
->CommandSubType
, 27, 28) |
3766 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3767 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3768 __gen_field(values
->DwordLength
, 0, 7) |
3772 __gen_field(values
->APIMode
, 22, 23) |
3773 __gen_field(values
->FrontWinding
, 21, 21) |
3774 __gen_field(values
->ForcedSampleCount
, 18, 20) |
3775 __gen_field(values
->CullMode
, 16, 17) |
3776 __gen_field(values
->ForceMultisampling
, 14, 14) |
3777 __gen_field(values
->SmoothPointEnable
, 13, 13) |
3778 __gen_field(values
->DXMultisampleRasterizationEnable
, 12, 12) |
3779 __gen_field(values
->DXMultisampleRasterizationMode
, 10, 11) |
3780 __gen_field(values
->GlobalDepthOffsetEnableSolid
, 9, 9) |
3781 __gen_field(values
->GlobalDepthOffsetEnableWireframe
, 8, 8) |
3782 __gen_field(values
->GlobalDepthOffsetEnablePoint
, 7, 7) |
3783 __gen_field(values
->FrontFaceFillMode
, 5, 6) |
3784 __gen_field(values
->BackFaceFillMode
, 3, 4) |
3785 __gen_field(values
->AntialiasingEnable
, 2, 2) |
3786 __gen_field(values
->ScissorRectangleEnable
, 1, 1) |
3787 __gen_field(values
->ViewportZClipTestEnable
, 0, 0) |
3791 __gen_float(values
->GlobalDepthOffsetConstant
) |
3795 __gen_float(values
->GlobalDepthOffsetScale
) |
3799 __gen_float(values
->GlobalDepthOffsetClamp
) |
3804 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias 0x00000002
3805 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_header\
3807 .CommandSubType = 3, \
3808 ._3DCommandOpcode = 1, \
3809 ._3DCommandSubOpcode = 2
3811 struct GEN8_PALETTE_ENTRY
{
3819 GEN8_PALETTE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
3820 const struct GEN8_PALETTE_ENTRY
* restrict values
)
3822 uint32_t *dw
= (uint32_t * restrict
) dst
;
3825 __gen_field(values
->Alpha
, 24, 31) |
3826 __gen_field(values
->Red
, 16, 23) |
3827 __gen_field(values
->Green
, 8, 15) |
3828 __gen_field(values
->Blue
, 0, 7) |
3833 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
{
3834 uint32_t CommandType
;
3835 uint32_t CommandSubType
;
3836 uint32_t _3DCommandOpcode
;
3837 uint32_t _3DCommandSubOpcode
;
3838 uint32_t DwordLength
;
3839 /* variable length fields follow */
3843 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__gen_user_data
*data
, void * restrict dst
,
3844 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
* restrict values
)
3846 uint32_t *dw
= (uint32_t * restrict
) dst
;
3849 __gen_field(values
->CommandType
, 29, 31) |
3850 __gen_field(values
->CommandSubType
, 27, 28) |
3851 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3852 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3853 __gen_field(values
->DwordLength
, 0, 7) |
3856 /* variable length fields follow */
3859 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias 0x00000002
3860 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_header\
3862 .CommandSubType = 3, \
3863 ._3DCommandOpcode = 1, \
3864 ._3DCommandSubOpcode = 12
3866 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
{
3867 uint32_t CommandType
;
3868 uint32_t CommandSubType
;
3869 uint32_t _3DCommandOpcode
;
3870 uint32_t _3DCommandSubOpcode
;
3871 uint32_t DwordLength
;
3872 /* variable length fields follow */
3876 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__gen_user_data
*data
, void * restrict dst
,
3877 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
* restrict values
)
3879 uint32_t *dw
= (uint32_t * restrict
) dst
;
3882 __gen_field(values
->CommandType
, 29, 31) |
3883 __gen_field(values
->CommandSubType
, 27, 28) |
3884 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3885 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3886 __gen_field(values
->DwordLength
, 0, 7) |
3889 /* variable length fields follow */
3892 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length 0x00000002
3893 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias 0x00000002
3894 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\
3896 .CommandSubType = 3, \
3897 ._3DCommandOpcode = 0, \
3898 ._3DCommandSubOpcode = 45, \
3901 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
{
3902 uint32_t CommandType
;
3903 uint32_t CommandSubType
;
3904 uint32_t _3DCommandOpcode
;
3905 uint32_t _3DCommandSubOpcode
;
3906 uint32_t DwordLength
;
3907 uint32_t PointertoDSSamplerState
;
3911 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3912 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
* restrict values
)
3914 uint32_t *dw
= (uint32_t * restrict
) dst
;
3917 __gen_field(values
->CommandType
, 29, 31) |
3918 __gen_field(values
->CommandSubType
, 27, 28) |
3919 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3920 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3921 __gen_field(values
->DwordLength
, 0, 7) |
3925 __gen_offset(values
->PointertoDSSamplerState
, 5, 31) |
3930 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length 0x00000002
3931 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias 0x00000002
3932 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\
3934 .CommandSubType = 3, \
3935 ._3DCommandOpcode = 0, \
3936 ._3DCommandSubOpcode = 46, \
3939 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
{
3940 uint32_t CommandType
;
3941 uint32_t CommandSubType
;
3942 uint32_t _3DCommandOpcode
;
3943 uint32_t _3DCommandSubOpcode
;
3944 uint32_t DwordLength
;
3945 uint32_t PointertoGSSamplerState
;
3949 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3950 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
* restrict values
)
3952 uint32_t *dw
= (uint32_t * restrict
) dst
;
3955 __gen_field(values
->CommandType
, 29, 31) |
3956 __gen_field(values
->CommandSubType
, 27, 28) |
3957 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3958 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3959 __gen_field(values
->DwordLength
, 0, 7) |
3963 __gen_offset(values
->PointertoGSSamplerState
, 5, 31) |
3968 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length 0x00000002
3969 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias 0x00000002
3970 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\
3972 .CommandSubType = 3, \
3973 ._3DCommandOpcode = 0, \
3974 ._3DCommandSubOpcode = 44, \
3977 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
{
3978 uint32_t CommandType
;
3979 uint32_t CommandSubType
;
3980 uint32_t _3DCommandOpcode
;
3981 uint32_t _3DCommandSubOpcode
;
3982 uint32_t DwordLength
;
3983 uint32_t PointertoHSSamplerState
;
3987 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3988 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
* restrict values
)
3990 uint32_t *dw
= (uint32_t * restrict
) dst
;
3993 __gen_field(values
->CommandType
, 29, 31) |
3994 __gen_field(values
->CommandSubType
, 27, 28) |
3995 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3996 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3997 __gen_field(values
->DwordLength
, 0, 7) |
4001 __gen_offset(values
->PointertoHSSamplerState
, 5, 31) |
4006 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length 0x00000002
4007 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias 0x00000002
4008 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\
4010 .CommandSubType = 3, \
4011 ._3DCommandOpcode = 0, \
4012 ._3DCommandSubOpcode = 47, \
4015 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
{
4016 uint32_t CommandType
;
4017 uint32_t CommandSubType
;
4018 uint32_t _3DCommandOpcode
;
4019 uint32_t _3DCommandSubOpcode
;
4020 uint32_t DwordLength
;
4021 uint32_t PointertoPSSamplerState
;
4025 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
4026 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
* restrict values
)
4028 uint32_t *dw
= (uint32_t * restrict
) dst
;
4031 __gen_field(values
->CommandType
, 29, 31) |
4032 __gen_field(values
->CommandSubType
, 27, 28) |
4033 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4034 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4035 __gen_field(values
->DwordLength
, 0, 7) |
4039 __gen_offset(values
->PointertoPSSamplerState
, 5, 31) |
4044 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length 0x00000002
4045 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias 0x00000002
4046 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\
4048 .CommandSubType = 3, \
4049 ._3DCommandOpcode = 0, \
4050 ._3DCommandSubOpcode = 43, \
4053 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
{
4054 uint32_t CommandType
;
4055 uint32_t CommandSubType
;
4056 uint32_t _3DCommandOpcode
;
4057 uint32_t _3DCommandSubOpcode
;
4058 uint32_t DwordLength
;
4059 uint32_t PointertoVSSamplerState
;
4063 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
4064 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
* restrict values
)
4066 uint32_t *dw
= (uint32_t * restrict
) dst
;
4069 __gen_field(values
->CommandType
, 29, 31) |
4070 __gen_field(values
->CommandSubType
, 27, 28) |
4071 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4072 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4073 __gen_field(values
->DwordLength
, 0, 7) |
4077 __gen_offset(values
->PointertoVSSamplerState
, 5, 31) |
4082 #define GEN8_3DSTATE_SAMPLE_MASK_length 0x00000002
4083 #define GEN8_3DSTATE_SAMPLE_MASK_length_bias 0x00000002
4084 #define GEN8_3DSTATE_SAMPLE_MASK_header \
4086 .CommandSubType = 3, \
4087 ._3DCommandOpcode = 0, \
4088 ._3DCommandSubOpcode = 24, \
4091 struct GEN8_3DSTATE_SAMPLE_MASK
{
4092 uint32_t CommandType
;
4093 uint32_t CommandSubType
;
4094 uint32_t _3DCommandOpcode
;
4095 uint32_t _3DCommandSubOpcode
;
4096 uint32_t DwordLength
;
4097 uint32_t SampleMask
;
4101 GEN8_3DSTATE_SAMPLE_MASK_pack(__gen_user_data
*data
, void * restrict dst
,
4102 const struct GEN8_3DSTATE_SAMPLE_MASK
* restrict values
)
4104 uint32_t *dw
= (uint32_t * restrict
) dst
;
4107 __gen_field(values
->CommandType
, 29, 31) |
4108 __gen_field(values
->CommandSubType
, 27, 28) |
4109 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4110 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4111 __gen_field(values
->DwordLength
, 0, 7) |
4115 __gen_field(values
->SampleMask
, 0, 15) |
4120 #define GEN8_3DSTATE_SAMPLE_PATTERN_length 0x00000009
4121 #define GEN8_3DSTATE_SAMPLE_PATTERN_length_bias 0x00000002
4122 #define GEN8_3DSTATE_SAMPLE_PATTERN_header \
4124 .CommandSubType = 3, \
4125 ._3DCommandOpcode = 1, \
4126 ._3DCommandSubOpcode = 28, \
4129 struct GEN8_3DSTATE_SAMPLE_PATTERN
{
4130 uint32_t CommandType
;
4131 uint32_t CommandSubType
;
4132 uint32_t _3DCommandOpcode
;
4133 uint32_t _3DCommandSubOpcode
;
4134 uint32_t DwordLength
;
4135 uint32_t _8xSample7XOffset
;
4136 uint32_t _8xSample7YOffset
;
4137 uint32_t _8xSample6XOffset
;
4138 uint32_t _8xSample6YOffset
;
4139 uint32_t _8xSample5XOffset
;
4140 uint32_t _8xSample5YOffset
;
4141 uint32_t _8xSample4XOffset
;
4142 uint32_t _8xSample4YOffset
;
4143 uint32_t _8xSample3XOffset
;
4144 uint32_t _8xSample3YOffset
;
4145 uint32_t _8xSample2XOffset
;
4146 uint32_t _8xSample2YOffset
;
4147 uint32_t _8xSample1XOffset
;
4148 uint32_t _8xSample1YOffset
;
4149 uint32_t _8xSample0XOffset
;
4150 uint32_t _8xSample0YOffset
;
4151 uint32_t _4xSample3XOffset
;
4152 uint32_t _4xSample3YOffset
;
4153 uint32_t _4xSample2XOffset
;
4154 uint32_t _4xSample2YOffset
;
4155 uint32_t _4xSample1XOffset
;
4156 uint32_t _4xSample1YOffset
;
4157 uint32_t _4xSample0XOffset
;
4158 uint32_t _4xSample0YOffset
;
4159 uint32_t _1xSample0XOffset
;
4160 uint32_t _1xSample0YOffset
;
4161 uint32_t _2xSample1XOffset
;
4162 uint32_t _2xSample1YOffset
;
4163 uint32_t _2xSample0XOffset
;
4164 uint32_t _2xSample0YOffset
;
4168 GEN8_3DSTATE_SAMPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
4169 const struct GEN8_3DSTATE_SAMPLE_PATTERN
* restrict values
)
4171 uint32_t *dw
= (uint32_t * restrict
) dst
;
4174 __gen_field(values
->CommandType
, 29, 31) |
4175 __gen_field(values
->CommandSubType
, 27, 28) |
4176 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4177 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4178 __gen_field(values
->DwordLength
, 0, 7) |
4185 __gen_field(values
->_8xSample7XOffset
, 28, 31) |
4186 __gen_field(values
->_8xSample7YOffset
, 24, 27) |
4187 __gen_field(values
->_8xSample6XOffset
, 20, 23) |
4188 __gen_field(values
->_8xSample6YOffset
, 16, 19) |
4189 __gen_field(values
->_8xSample5XOffset
, 12, 15) |
4190 __gen_field(values
->_8xSample5YOffset
, 8, 11) |
4191 __gen_field(values
->_8xSample4XOffset
, 4, 7) |
4192 __gen_field(values
->_8xSample4YOffset
, 0, 3) |
4196 __gen_field(values
->_8xSample3XOffset
, 28, 31) |
4197 __gen_field(values
->_8xSample3YOffset
, 24, 27) |
4198 __gen_field(values
->_8xSample2XOffset
, 20, 23) |
4199 __gen_field(values
->_8xSample2YOffset
, 16, 19) |
4200 __gen_field(values
->_8xSample1XOffset
, 12, 15) |
4201 __gen_field(values
->_8xSample1YOffset
, 8, 11) |
4202 __gen_field(values
->_8xSample0XOffset
, 4, 7) |
4203 __gen_field(values
->_8xSample0YOffset
, 0, 3) |
4207 __gen_field(values
->_4xSample3XOffset
, 28, 31) |
4208 __gen_field(values
->_4xSample3YOffset
, 24, 27) |
4209 __gen_field(values
->_4xSample2XOffset
, 20, 23) |
4210 __gen_field(values
->_4xSample2YOffset
, 16, 19) |
4211 __gen_field(values
->_4xSample1XOffset
, 12, 15) |
4212 __gen_field(values
->_4xSample1YOffset
, 8, 11) |
4213 __gen_field(values
->_4xSample0XOffset
, 4, 7) |
4214 __gen_field(values
->_4xSample0YOffset
, 0, 3) |
4218 __gen_field(values
->_1xSample0XOffset
, 20, 23) |
4219 __gen_field(values
->_1xSample0YOffset
, 16, 19) |
4220 __gen_field(values
->_2xSample1XOffset
, 12, 15) |
4221 __gen_field(values
->_2xSample1YOffset
, 8, 11) |
4222 __gen_field(values
->_2xSample0XOffset
, 4, 7) |
4223 __gen_field(values
->_2xSample0YOffset
, 0, 3) |
4228 #define GEN8_3DSTATE_SBE_length 0x00000004
4229 #define GEN8_3DSTATE_SBE_length_bias 0x00000002
4230 #define GEN8_3DSTATE_SBE_header \
4232 .CommandSubType = 3, \
4233 ._3DCommandOpcode = 0, \
4234 ._3DCommandSubOpcode = 31, \
4237 struct GEN8_3DSTATE_SBE
{
4238 uint32_t CommandType
;
4239 uint32_t CommandSubType
;
4240 uint32_t _3DCommandOpcode
;
4241 uint32_t _3DCommandSubOpcode
;
4242 uint32_t DwordLength
;
4243 uint32_t ForceVertexURBEntryReadLength
;
4244 uint32_t ForceVertexURBEntryReadOffset
;
4245 uint32_t NumberofSFOutputAttributes
;
4246 uint32_t AttributeSwizzleEnable
;
4249 uint32_t PointSpriteTextureCoordinateOrigin
;
4250 uint32_t PrimitiveIDOverrideComponentW
;
4251 uint32_t PrimitiveIDOverrideComponentZ
;
4252 uint32_t PrimitiveIDOverrideComponentY
;
4253 uint32_t PrimitiveIDOverrideComponentX
;
4254 uint32_t VertexURBEntryReadLength
;
4255 uint32_t VertexURBEntryReadOffset
;
4256 uint32_t PrimitiveIDOverrideAttributeSelect
;
4257 uint32_t PointSpriteTextureCoordinateEnable
;
4258 uint32_t ConstantInterpolationEnable
;
4262 GEN8_3DSTATE_SBE_pack(__gen_user_data
*data
, void * restrict dst
,
4263 const struct GEN8_3DSTATE_SBE
* restrict values
)
4265 uint32_t *dw
= (uint32_t * restrict
) dst
;
4268 __gen_field(values
->CommandType
, 29, 31) |
4269 __gen_field(values
->CommandSubType
, 27, 28) |
4270 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4271 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4272 __gen_field(values
->DwordLength
, 0, 7) |
4276 __gen_field(values
->ForceVertexURBEntryReadLength
, 29, 29) |
4277 __gen_field(values
->ForceVertexURBEntryReadOffset
, 28, 28) |
4278 __gen_field(values
->NumberofSFOutputAttributes
, 22, 27) |
4279 __gen_field(values
->AttributeSwizzleEnable
, 21, 21) |
4280 __gen_field(values
->PointSpriteTextureCoordinateOrigin
, 20, 20) |
4281 __gen_field(values
->PrimitiveIDOverrideComponentW
, 19, 19) |
4282 __gen_field(values
->PrimitiveIDOverrideComponentZ
, 18, 18) |
4283 __gen_field(values
->PrimitiveIDOverrideComponentY
, 17, 17) |
4284 __gen_field(values
->PrimitiveIDOverrideComponentX
, 16, 16) |
4285 __gen_field(values
->VertexURBEntryReadLength
, 11, 15) |
4286 __gen_field(values
->VertexURBEntryReadOffset
, 5, 10) |
4287 __gen_field(values
->PrimitiveIDOverrideAttributeSelect
, 0, 4) |
4291 __gen_field(values
->PointSpriteTextureCoordinateEnable
, 0, 31) |
4295 __gen_field(values
->ConstantInterpolationEnable
, 0, 31) |
4300 #define GEN8_3DSTATE_SBE_SWIZ_length 0x0000000b
4301 #define GEN8_3DSTATE_SBE_SWIZ_length_bias 0x00000002
4302 #define GEN8_3DSTATE_SBE_SWIZ_header \
4304 .CommandSubType = 3, \
4305 ._3DCommandOpcode = 0, \
4306 ._3DCommandSubOpcode = 81, \
4309 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
{
4310 uint32_t ComponentOverrideW
;
4311 uint32_t ComponentOverrideZ
;
4312 uint32_t ComponentOverrideY
;
4313 uint32_t ComponentOverrideX
;
4314 uint32_t SwizzleControlMode
;
4315 #define CONST_0000 0
4316 #define CONST_0001_FLOAT 1
4317 #define CONST_1111_FLOAT 2
4319 uint32_t ConstantSource
;
4321 #define INPUTATTR_FACING 1
4322 #define INPUTATTR_W 2
4323 #define INPUTATTR_FACING_W 3
4324 uint32_t SwizzleSelect
;
4325 uint32_t SourceAttribute
;
4329 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__gen_user_data
*data
, void * restrict dst
,
4330 const struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
* restrict values
)
4332 uint32_t *dw
= (uint32_t * restrict
) dst
;
4335 __gen_field(values
->ComponentOverrideW
, 15, 15) |
4336 __gen_field(values
->ComponentOverrideZ
, 14, 14) |
4337 __gen_field(values
->ComponentOverrideY
, 13, 13) |
4338 __gen_field(values
->ComponentOverrideX
, 12, 12) |
4339 __gen_field(values
->SwizzleControlMode
, 11, 11) |
4340 __gen_field(values
->ConstantSource
, 9, 10) |
4341 __gen_field(values
->SwizzleSelect
, 6, 7) |
4342 __gen_field(values
->SourceAttribute
, 0, 4) |
4347 struct GEN8_3DSTATE_SBE_SWIZ
{
4348 uint32_t CommandType
;
4349 uint32_t CommandSubType
;
4350 uint32_t _3DCommandOpcode
;
4351 uint32_t _3DCommandSubOpcode
;
4352 uint32_t DwordLength
;
4353 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute
;
4354 uint32_t Attribute15WrapShortestEnables
;
4355 uint32_t Attribute14WrapShortestEnables
;
4356 uint32_t Attribute13WrapShortestEnables
;
4357 uint32_t Attribute12WrapShortestEnables
;
4358 uint32_t Attribute11WrapShortestEnables
;
4359 uint32_t Attribute10WrapShortestEnables
;
4360 uint32_t Attribute09WrapShortestEnables
;
4361 uint32_t Attribute08WrapShortestEnables
;
4362 uint32_t Attribute07WrapShortestEnables
;
4363 uint32_t Attribute06WrapShortestEnables
;
4364 uint32_t Attribute05WrapShortestEnables
;
4365 uint32_t Attribute04WrapShortestEnables
;
4366 uint32_t Attribute03WrapShortestEnables
;
4367 uint32_t Attribute02WrapShortestEnables
;
4368 uint32_t Attribute01WrapShortestEnables
;
4369 uint32_t Attribute00WrapShortestEnables
;
4373 GEN8_3DSTATE_SBE_SWIZ_pack(__gen_user_data
*data
, void * restrict dst
,
4374 const struct GEN8_3DSTATE_SBE_SWIZ
* restrict values
)
4376 uint32_t *dw
= (uint32_t * restrict
) dst
;
4379 __gen_field(values
->CommandType
, 29, 31) |
4380 __gen_field(values
->CommandSubType
, 27, 28) |
4381 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4382 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4383 __gen_field(values
->DwordLength
, 0, 7) |
4386 uint32_t dw_Attribute
;
4387 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data
, &dw_Attribute
, &values
->Attribute
);
4389 __gen_field(dw_Attribute
, 0, 15) |
4393 __gen_field(values
->Attribute15WrapShortestEnables
, 60, 63) |
4394 __gen_field(values
->Attribute14WrapShortestEnables
, 56, 59) |
4395 __gen_field(values
->Attribute13WrapShortestEnables
, 52, 55) |
4396 __gen_field(values
->Attribute12WrapShortestEnables
, 48, 51) |
4397 __gen_field(values
->Attribute11WrapShortestEnables
, 44, 47) |
4398 __gen_field(values
->Attribute10WrapShortestEnables
, 40, 43) |
4399 __gen_field(values
->Attribute09WrapShortestEnables
, 36, 39) |
4400 __gen_field(values
->Attribute08WrapShortestEnables
, 32, 35) |
4401 __gen_field(values
->Attribute07WrapShortestEnables
, 28, 31) |
4402 __gen_field(values
->Attribute06WrapShortestEnables
, 24, 27) |
4403 __gen_field(values
->Attribute05WrapShortestEnables
, 20, 23) |
4404 __gen_field(values
->Attribute04WrapShortestEnables
, 16, 19) |
4405 __gen_field(values
->Attribute03WrapShortestEnables
, 12, 15) |
4406 __gen_field(values
->Attribute02WrapShortestEnables
, 8, 11) |
4407 __gen_field(values
->Attribute01WrapShortestEnables
, 4, 7) |
4408 __gen_field(values
->Attribute00WrapShortestEnables
, 0, 3) |
4416 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length 0x00000002
4417 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length_bias 0x00000002
4418 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_header\
4420 .CommandSubType = 3, \
4421 ._3DCommandOpcode = 0, \
4422 ._3DCommandSubOpcode = 15, \
4425 struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
{
4426 uint32_t CommandType
;
4427 uint32_t CommandSubType
;
4428 uint32_t _3DCommandOpcode
;
4429 uint32_t _3DCommandSubOpcode
;
4430 uint32_t DwordLength
;
4431 uint32_t ScissorRectPointer
;
4435 GEN8_3DSTATE_SCISSOR_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
4436 const struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
* restrict values
)
4438 uint32_t *dw
= (uint32_t * restrict
) dst
;
4441 __gen_field(values
->CommandType
, 29, 31) |
4442 __gen_field(values
->CommandSubType
, 27, 28) |
4443 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4444 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4445 __gen_field(values
->DwordLength
, 0, 7) |
4449 __gen_offset(values
->ScissorRectPointer
, 5, 31) |
4454 #define GEN8_3DSTATE_SF_length 0x00000004
4455 #define GEN8_3DSTATE_SF_length_bias 0x00000002
4456 #define GEN8_3DSTATE_SF_header \
4458 .CommandSubType = 3, \
4459 ._3DCommandOpcode = 0, \
4460 ._3DCommandSubOpcode = 19, \
4463 struct GEN8_3DSTATE_SF
{
4464 uint32_t CommandType
;
4465 uint32_t CommandSubType
;
4466 uint32_t _3DCommandOpcode
;
4467 uint32_t _3DCommandSubOpcode
;
4468 uint32_t DwordLength
;
4469 uint32_t LegacyGlobalDepthBiasEnable
;
4470 uint32_t StatisticsEnable
;
4471 uint32_t ViewportTransformEnable
;
4477 uint32_t LineEndCapAntialiasingRegionWidth
;
4478 uint32_t LastPixelEnable
;
4479 uint32_t TriangleStripListProvokingVertexSelect
;
4480 uint32_t LineStripListProvokingVertexSelect
;
4481 uint32_t TriangleFanProvokingVertexSelect
;
4482 #define AALINEDISTANCE_TRUE 1
4483 uint32_t AALineDistanceMode
;
4484 uint32_t SmoothPointEnable
;
4485 uint32_t VertexSubPixelPrecisionSelect
;
4488 uint32_t PointWidthSource
;
4489 uint32_t PointWidth
;
4493 GEN8_3DSTATE_SF_pack(__gen_user_data
*data
, void * restrict dst
,
4494 const struct GEN8_3DSTATE_SF
* restrict values
)
4496 uint32_t *dw
= (uint32_t * restrict
) dst
;
4499 __gen_field(values
->CommandType
, 29, 31) |
4500 __gen_field(values
->CommandSubType
, 27, 28) |
4501 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4502 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4503 __gen_field(values
->DwordLength
, 0, 7) |
4507 __gen_field(values
->LegacyGlobalDepthBiasEnable
, 11, 11) |
4508 __gen_field(values
->StatisticsEnable
, 10, 10) |
4509 __gen_field(values
->ViewportTransformEnable
, 1, 1) |
4513 __gen_field(values
->LineWidth
, 18, 27) |
4514 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 16, 17) |
4518 __gen_field(values
->LastPixelEnable
, 31, 31) |
4519 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 29, 30) |
4520 __gen_field(values
->LineStripListProvokingVertexSelect
, 27, 28) |
4521 __gen_field(values
->TriangleFanProvokingVertexSelect
, 25, 26) |
4522 __gen_field(values
->AALineDistanceMode
, 14, 14) |
4523 __gen_field(values
->SmoothPointEnable
, 13, 13) |
4524 __gen_field(values
->VertexSubPixelPrecisionSelect
, 12, 12) |
4525 __gen_field(values
->PointWidthSource
, 11, 11) |
4526 __gen_field(values
->PointWidth
, 0, 10) |
4531 #define GEN8_3DSTATE_SO_BUFFER_length 0x00000008
4532 #define GEN8_3DSTATE_SO_BUFFER_length_bias 0x00000002
4533 #define GEN8_3DSTATE_SO_BUFFER_header \
4535 .CommandSubType = 3, \
4536 ._3DCommandOpcode = 1, \
4537 ._3DCommandSubOpcode = 24, \
4540 struct GEN8_3DSTATE_SO_BUFFER
{
4541 uint32_t CommandType
;
4542 uint32_t CommandSubType
;
4543 uint32_t _3DCommandOpcode
;
4544 uint32_t _3DCommandSubOpcode
;
4545 uint32_t DwordLength
;
4546 uint32_t SOBufferEnable
;
4547 uint32_t SOBufferIndex
;
4548 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SOBufferObjectControlState
;
4549 uint32_t StreamOffsetWriteEnable
;
4550 uint32_t StreamOutputBufferOffsetAddressEnable
;
4551 __gen_address_type SurfaceBaseAddress
;
4552 uint32_t SurfaceSize
;
4553 __gen_address_type StreamOutputBufferOffsetAddress
;
4554 uint32_t StreamOffset
;
4558 GEN8_3DSTATE_SO_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4559 const struct GEN8_3DSTATE_SO_BUFFER
* restrict values
)
4561 uint32_t *dw
= (uint32_t * restrict
) dst
;
4564 __gen_field(values
->CommandType
, 29, 31) |
4565 __gen_field(values
->CommandSubType
, 27, 28) |
4566 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4567 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4568 __gen_field(values
->DwordLength
, 0, 7) |
4571 uint32_t dw_SOBufferObjectControlState
;
4572 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SOBufferObjectControlState
, &values
->SOBufferObjectControlState
);
4574 __gen_field(values
->SOBufferEnable
, 31, 31) |
4575 __gen_field(values
->SOBufferIndex
, 29, 30) |
4576 __gen_field(dw_SOBufferObjectControlState
, 22, 28) |
4577 __gen_field(values
->StreamOffsetWriteEnable
, 21, 21) |
4578 __gen_field(values
->StreamOutputBufferOffsetAddressEnable
, 20, 20) |
4585 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4591 __gen_field(values
->SurfaceSize
, 0, 29) |
4598 __gen_combine_address(data
, &dw
[5], values
->StreamOutputBufferOffsetAddress
, dw5
);
4604 __gen_field(values
->StreamOffset
, 0, 31) |
4609 #define GEN8_3DSTATE_SO_DECL_LIST_length_bias 0x00000002
4610 #define GEN8_3DSTATE_SO_DECL_LIST_header \
4612 .CommandSubType = 3, \
4613 ._3DCommandOpcode = 1, \
4614 ._3DCommandSubOpcode = 23
4616 struct GEN8_SO_DECL
{
4617 uint32_t OutputBufferSlot
;
4619 uint32_t RegisterIndex
;
4620 uint32_t ComponentMask
;
4624 GEN8_SO_DECL_pack(__gen_user_data
*data
, void * restrict dst
,
4625 const struct GEN8_SO_DECL
* restrict values
)
4627 uint32_t *dw
= (uint32_t * restrict
) dst
;
4630 __gen_field(values
->OutputBufferSlot
, 12, 13) |
4631 __gen_field(values
->HoleFlag
, 11, 11) |
4632 __gen_field(values
->RegisterIndex
, 4, 9) |
4633 __gen_field(values
->ComponentMask
, 0, 3) |
4638 struct GEN8_SO_DECL_ENTRY
{
4639 struct GEN8_SO_DECL Stream3Decl
;
4640 struct GEN8_SO_DECL Stream2Decl
;
4641 struct GEN8_SO_DECL Stream1Decl
;
4642 struct GEN8_SO_DECL Stream0Decl
;
4646 GEN8_SO_DECL_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
4647 const struct GEN8_SO_DECL_ENTRY
* restrict values
)
4649 uint32_t *dw
= (uint32_t * restrict
) dst
;
4651 uint32_t dw_Stream3Decl
;
4652 GEN8_SO_DECL_pack(data
, &dw_Stream3Decl
, &values
->Stream3Decl
);
4653 uint32_t dw_Stream2Decl
;
4654 GEN8_SO_DECL_pack(data
, &dw_Stream2Decl
, &values
->Stream2Decl
);
4655 uint32_t dw_Stream1Decl
;
4656 GEN8_SO_DECL_pack(data
, &dw_Stream1Decl
, &values
->Stream1Decl
);
4657 uint32_t dw_Stream0Decl
;
4658 GEN8_SO_DECL_pack(data
, &dw_Stream0Decl
, &values
->Stream0Decl
);
4660 __gen_field(dw_Stream3Decl
, 48, 63) |
4661 __gen_field(dw_Stream2Decl
, 32, 47) |
4662 __gen_field(dw_Stream1Decl
, 16, 31) |
4663 __gen_field(dw_Stream0Decl
, 0, 15) |
4671 struct GEN8_3DSTATE_SO_DECL_LIST
{
4672 uint32_t CommandType
;
4673 uint32_t CommandSubType
;
4674 uint32_t _3DCommandOpcode
;
4675 uint32_t _3DCommandSubOpcode
;
4676 uint32_t DwordLength
;
4677 uint32_t StreamtoBufferSelects3
;
4678 uint32_t StreamtoBufferSelects2
;
4679 uint32_t StreamtoBufferSelects1
;
4680 uint32_t StreamtoBufferSelects0
;
4681 uint32_t NumEntries3
;
4682 uint32_t NumEntries2
;
4683 uint32_t NumEntries1
;
4684 uint32_t NumEntries0
;
4685 /* variable length fields follow */
4689 GEN8_3DSTATE_SO_DECL_LIST_pack(__gen_user_data
*data
, void * restrict dst
,
4690 const struct GEN8_3DSTATE_SO_DECL_LIST
* restrict values
)
4692 uint32_t *dw
= (uint32_t * restrict
) dst
;
4695 __gen_field(values
->CommandType
, 29, 31) |
4696 __gen_field(values
->CommandSubType
, 27, 28) |
4697 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4698 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4699 __gen_field(values
->DwordLength
, 0, 8) |
4703 __gen_field(values
->StreamtoBufferSelects3
, 12, 15) |
4704 __gen_field(values
->StreamtoBufferSelects2
, 8, 11) |
4705 __gen_field(values
->StreamtoBufferSelects1
, 4, 7) |
4706 __gen_field(values
->StreamtoBufferSelects0
, 0, 3) |
4710 __gen_field(values
->NumEntries3
, 24, 31) |
4711 __gen_field(values
->NumEntries2
, 16, 23) |
4712 __gen_field(values
->NumEntries1
, 8, 15) |
4713 __gen_field(values
->NumEntries0
, 0, 7) |
4716 /* variable length fields follow */
4719 #define GEN8_3DSTATE_STENCIL_BUFFER_length 0x00000005
4720 #define GEN8_3DSTATE_STENCIL_BUFFER_length_bias 0x00000002
4721 #define GEN8_3DSTATE_STENCIL_BUFFER_header \
4723 .CommandSubType = 3, \
4724 ._3DCommandOpcode = 0, \
4725 ._3DCommandSubOpcode = 6, \
4728 struct GEN8_3DSTATE_STENCIL_BUFFER
{
4729 uint32_t CommandType
;
4730 uint32_t CommandSubType
;
4731 uint32_t _3DCommandOpcode
;
4732 uint32_t _3DCommandSubOpcode
;
4733 uint32_t DwordLength
;
4734 uint32_t StencilBufferEnable
;
4735 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StencilBufferObjectControlState
;
4736 uint32_t SurfacePitch
;
4737 __gen_address_type SurfaceBaseAddress
;
4738 uint32_t SurfaceQPitch
;
4742 GEN8_3DSTATE_STENCIL_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4743 const struct GEN8_3DSTATE_STENCIL_BUFFER
* restrict values
)
4745 uint32_t *dw
= (uint32_t * restrict
) dst
;
4748 __gen_field(values
->CommandType
, 29, 31) |
4749 __gen_field(values
->CommandSubType
, 27, 28) |
4750 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4751 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4752 __gen_field(values
->DwordLength
, 0, 7) |
4755 uint32_t dw_StencilBufferObjectControlState
;
4756 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StencilBufferObjectControlState
, &values
->StencilBufferObjectControlState
);
4758 __gen_field(values
->StencilBufferEnable
, 31, 31) |
4759 __gen_field(dw_StencilBufferObjectControlState
, 22, 28) |
4760 __gen_field(values
->SurfacePitch
, 0, 16) |
4767 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4773 __gen_field(values
->SurfaceQPitch
, 0, 14) |
4778 #define GEN8_3DSTATE_STREAMOUT_length 0x00000005
4779 #define GEN8_3DSTATE_STREAMOUT_length_bias 0x00000002
4780 #define GEN8_3DSTATE_STREAMOUT_header \
4782 .CommandSubType = 3, \
4783 ._3DCommandOpcode = 0, \
4784 ._3DCommandSubOpcode = 30, \
4787 struct GEN8_3DSTATE_STREAMOUT
{
4788 uint32_t CommandType
;
4789 uint32_t CommandSubType
;
4790 uint32_t _3DCommandOpcode
;
4791 uint32_t _3DCommandSubOpcode
;
4792 uint32_t DwordLength
;
4793 uint32_t SOFunctionEnable
;
4794 uint32_t APIRenderingDisable
;
4795 uint32_t RenderStreamSelect
;
4798 uint32_t ReorderMode
;
4799 uint32_t SOStatisticsEnable
;
4804 uint32_t ForceRendering
;
4805 uint32_t Stream3VertexReadOffset
;
4806 uint32_t Stream3VertexReadLength
;
4807 uint32_t Stream2VertexReadOffset
;
4808 uint32_t Stream2VertexReadLength
;
4809 uint32_t Stream1VertexReadOffset
;
4810 uint32_t Stream1VertexReadLength
;
4811 uint32_t Stream0VertexReadOffset
;
4812 uint32_t Stream0VertexReadLength
;
4813 uint32_t Buffer1SurfacePitch
;
4814 uint32_t Buffer0SurfacePitch
;
4815 uint32_t Buffer3SurfacePitch
;
4816 uint32_t Buffer2SurfacePitch
;
4820 GEN8_3DSTATE_STREAMOUT_pack(__gen_user_data
*data
, void * restrict dst
,
4821 const struct GEN8_3DSTATE_STREAMOUT
* restrict values
)
4823 uint32_t *dw
= (uint32_t * restrict
) dst
;
4826 __gen_field(values
->CommandType
, 29, 31) |
4827 __gen_field(values
->CommandSubType
, 27, 28) |
4828 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4829 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4830 __gen_field(values
->DwordLength
, 0, 7) |
4834 __gen_field(values
->SOFunctionEnable
, 31, 31) |
4835 __gen_field(values
->APIRenderingDisable
, 30, 30) |
4836 __gen_field(values
->RenderStreamSelect
, 27, 28) |
4837 __gen_field(values
->ReorderMode
, 26, 26) |
4838 __gen_field(values
->SOStatisticsEnable
, 25, 25) |
4839 __gen_field(values
->ForceRendering
, 23, 24) |
4843 __gen_field(values
->Stream3VertexReadOffset
, 29, 29) |
4844 __gen_field(values
->Stream3VertexReadLength
, 24, 28) |
4845 __gen_field(values
->Stream2VertexReadOffset
, 21, 21) |
4846 __gen_field(values
->Stream2VertexReadLength
, 16, 20) |
4847 __gen_field(values
->Stream1VertexReadOffset
, 13, 13) |
4848 __gen_field(values
->Stream1VertexReadLength
, 8, 12) |
4849 __gen_field(values
->Stream0VertexReadOffset
, 5, 5) |
4850 __gen_field(values
->Stream0VertexReadLength
, 0, 4) |
4854 __gen_field(values
->Buffer1SurfacePitch
, 16, 27) |
4855 __gen_field(values
->Buffer0SurfacePitch
, 0, 11) |
4859 __gen_field(values
->Buffer3SurfacePitch
, 16, 27) |
4860 __gen_field(values
->Buffer2SurfacePitch
, 0, 11) |
4865 #define GEN8_3DSTATE_TE_length 0x00000004
4866 #define GEN8_3DSTATE_TE_length_bias 0x00000002
4867 #define GEN8_3DSTATE_TE_header \
4869 .CommandSubType = 3, \
4870 ._3DCommandOpcode = 0, \
4871 ._3DCommandSubOpcode = 28, \
4874 struct GEN8_3DSTATE_TE
{
4875 uint32_t CommandType
;
4876 uint32_t CommandSubType
;
4877 uint32_t _3DCommandOpcode
;
4878 uint32_t _3DCommandSubOpcode
;
4879 uint32_t DwordLength
;
4881 #define ODD_FRACTIONAL 1
4882 #define EVEN_FRACTIONAL 2
4883 uint32_t Partitioning
;
4888 uint32_t OutputTopology
;
4897 float MaximumTessellationFactorOdd
;
4898 float MaximumTessellationFactorNotOdd
;
4902 GEN8_3DSTATE_TE_pack(__gen_user_data
*data
, void * restrict dst
,
4903 const struct GEN8_3DSTATE_TE
* restrict values
)
4905 uint32_t *dw
= (uint32_t * restrict
) dst
;
4908 __gen_field(values
->CommandType
, 29, 31) |
4909 __gen_field(values
->CommandSubType
, 27, 28) |
4910 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4911 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4912 __gen_field(values
->DwordLength
, 0, 7) |
4916 __gen_field(values
->Partitioning
, 12, 13) |
4917 __gen_field(values
->OutputTopology
, 8, 9) |
4918 __gen_field(values
->TEDomain
, 4, 5) |
4919 __gen_field(values
->TEMode
, 1, 2) |
4920 __gen_field(values
->TEEnable
, 0, 0) |
4924 __gen_float(values
->MaximumTessellationFactorOdd
) |
4928 __gen_float(values
->MaximumTessellationFactorNotOdd
) |
4933 #define GEN8_3DSTATE_URB_DS_length 0x00000002
4934 #define GEN8_3DSTATE_URB_DS_length_bias 0x00000002
4935 #define GEN8_3DSTATE_URB_DS_header \
4937 .CommandSubType = 3, \
4938 ._3DCommandOpcode = 0, \
4939 ._3DCommandSubOpcode = 50, \
4942 struct GEN8_3DSTATE_URB_DS
{
4943 uint32_t CommandType
;
4944 uint32_t CommandSubType
;
4945 uint32_t _3DCommandOpcode
;
4946 uint32_t _3DCommandSubOpcode
;
4947 uint32_t DwordLength
;
4948 uint32_t DSURBStartingAddress
;
4949 uint32_t DSURBEntryAllocationSize
;
4950 uint32_t DSNumberofURBEntries
;
4954 GEN8_3DSTATE_URB_DS_pack(__gen_user_data
*data
, void * restrict dst
,
4955 const struct GEN8_3DSTATE_URB_DS
* restrict values
)
4957 uint32_t *dw
= (uint32_t * restrict
) dst
;
4960 __gen_field(values
->CommandType
, 29, 31) |
4961 __gen_field(values
->CommandSubType
, 27, 28) |
4962 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4963 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4964 __gen_field(values
->DwordLength
, 0, 7) |
4968 __gen_field(values
->DSURBStartingAddress
, 25, 31) |
4969 __gen_field(values
->DSURBEntryAllocationSize
, 16, 24) |
4970 __gen_field(values
->DSNumberofURBEntries
, 0, 15) |
4975 #define GEN8_3DSTATE_URB_GS_length 0x00000002
4976 #define GEN8_3DSTATE_URB_GS_length_bias 0x00000002
4977 #define GEN8_3DSTATE_URB_GS_header \
4979 .CommandSubType = 3, \
4980 ._3DCommandOpcode = 0, \
4981 ._3DCommandSubOpcode = 51, \
4984 struct GEN8_3DSTATE_URB_GS
{
4985 uint32_t CommandType
;
4986 uint32_t CommandSubType
;
4987 uint32_t _3DCommandOpcode
;
4988 uint32_t _3DCommandSubOpcode
;
4989 uint32_t DwordLength
;
4990 uint32_t GSURBStartingAddress
;
4991 uint32_t GSURBEntryAllocationSize
;
4992 uint32_t GSNumberofURBEntries
;
4996 GEN8_3DSTATE_URB_GS_pack(__gen_user_data
*data
, void * restrict dst
,
4997 const struct GEN8_3DSTATE_URB_GS
* restrict values
)
4999 uint32_t *dw
= (uint32_t * restrict
) dst
;
5002 __gen_field(values
->CommandType
, 29, 31) |
5003 __gen_field(values
->CommandSubType
, 27, 28) |
5004 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5005 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5006 __gen_field(values
->DwordLength
, 0, 7) |
5010 __gen_field(values
->GSURBStartingAddress
, 25, 31) |
5011 __gen_field(values
->GSURBEntryAllocationSize
, 16, 24) |
5012 __gen_field(values
->GSNumberofURBEntries
, 0, 15) |
5017 #define GEN8_3DSTATE_URB_HS_length 0x00000002
5018 #define GEN8_3DSTATE_URB_HS_length_bias 0x00000002
5019 #define GEN8_3DSTATE_URB_HS_header \
5021 .CommandSubType = 3, \
5022 ._3DCommandOpcode = 0, \
5023 ._3DCommandSubOpcode = 49, \
5026 struct GEN8_3DSTATE_URB_HS
{
5027 uint32_t CommandType
;
5028 uint32_t CommandSubType
;
5029 uint32_t _3DCommandOpcode
;
5030 uint32_t _3DCommandSubOpcode
;
5031 uint32_t DwordLength
;
5032 uint32_t HSURBStartingAddress
;
5033 uint32_t HSURBEntryAllocationSize
;
5034 uint32_t HSNumberofURBEntries
;
5038 GEN8_3DSTATE_URB_HS_pack(__gen_user_data
*data
, void * restrict dst
,
5039 const struct GEN8_3DSTATE_URB_HS
* restrict values
)
5041 uint32_t *dw
= (uint32_t * restrict
) dst
;
5044 __gen_field(values
->CommandType
, 29, 31) |
5045 __gen_field(values
->CommandSubType
, 27, 28) |
5046 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5047 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5048 __gen_field(values
->DwordLength
, 0, 7) |
5052 __gen_field(values
->HSURBStartingAddress
, 25, 31) |
5053 __gen_field(values
->HSURBEntryAllocationSize
, 16, 24) |
5054 __gen_field(values
->HSNumberofURBEntries
, 0, 15) |
5059 #define GEN8_3DSTATE_VERTEX_BUFFERS_length_bias 0x00000002
5060 #define GEN8_3DSTATE_VERTEX_BUFFERS_header \
5062 .CommandSubType = 3, \
5063 ._3DCommandOpcode = 0, \
5064 ._3DCommandSubOpcode = 8
5066 struct GEN8_VERTEX_BUFFER_STATE
{
5067 uint32_t VertexBufferIndex
;
5068 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
5069 uint32_t AddressModifyEnable
;
5070 uint32_t NullVertexBuffer
;
5071 uint32_t BufferPitch
;
5072 __gen_address_type BufferStartingAddress
;
5073 uint32_t BufferSize
;
5077 GEN8_VERTEX_BUFFER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5078 const struct GEN8_VERTEX_BUFFER_STATE
* restrict values
)
5080 uint32_t *dw
= (uint32_t * restrict
) dst
;
5082 uint32_t dw_MemoryObjectControlState
;
5083 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
5085 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5086 __gen_field(dw_MemoryObjectControlState
, 16, 22) |
5087 __gen_field(values
->AddressModifyEnable
, 14, 14) |
5088 __gen_field(values
->NullVertexBuffer
, 13, 13) |
5089 __gen_field(values
->BufferPitch
, 0, 11) |
5096 __gen_combine_address(data
, &dw
[1], values
->BufferStartingAddress
, dw1
);
5102 __gen_field(values
->BufferSize
, 0, 31) |
5107 struct GEN8_3DSTATE_VERTEX_BUFFERS
{
5108 uint32_t CommandType
;
5109 uint32_t CommandSubType
;
5110 uint32_t _3DCommandOpcode
;
5111 uint32_t _3DCommandSubOpcode
;
5112 uint32_t DwordLength
;
5113 /* variable length fields follow */
5117 GEN8_3DSTATE_VERTEX_BUFFERS_pack(__gen_user_data
*data
, void * restrict dst
,
5118 const struct GEN8_3DSTATE_VERTEX_BUFFERS
* restrict values
)
5120 uint32_t *dw
= (uint32_t * restrict
) dst
;
5123 __gen_field(values
->CommandType
, 29, 31) |
5124 __gen_field(values
->CommandSubType
, 27, 28) |
5125 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5126 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5127 __gen_field(values
->DwordLength
, 0, 7) |
5130 /* variable length fields follow */
5133 #define GEN8_3DSTATE_VERTEX_ELEMENTS_length_bias 0x00000002
5134 #define GEN8_3DSTATE_VERTEX_ELEMENTS_header \
5136 .CommandSubType = 3, \
5137 ._3DCommandOpcode = 0, \
5138 ._3DCommandSubOpcode = 9
5140 struct GEN8_VERTEX_ELEMENT_STATE
{
5141 uint32_t VertexBufferIndex
;
5143 uint32_t SourceElementFormat
;
5144 uint32_t EdgeFlagEnable
;
5145 uint32_t SourceElementOffset
;
5146 uint32_t Component0Control
;
5147 uint32_t Component1Control
;
5148 uint32_t Component2Control
;
5149 uint32_t Component3Control
;
5153 GEN8_VERTEX_ELEMENT_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5154 const struct GEN8_VERTEX_ELEMENT_STATE
* restrict values
)
5156 uint32_t *dw
= (uint32_t * restrict
) dst
;
5159 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5160 __gen_field(values
->Valid
, 25, 25) |
5161 __gen_field(values
->SourceElementFormat
, 16, 24) |
5162 __gen_field(values
->EdgeFlagEnable
, 15, 15) |
5163 __gen_field(values
->SourceElementOffset
, 0, 11) |
5167 __gen_field(values
->Component0Control
, 28, 30) |
5168 __gen_field(values
->Component1Control
, 24, 26) |
5169 __gen_field(values
->Component2Control
, 20, 22) |
5170 __gen_field(values
->Component3Control
, 16, 18) |
5175 struct GEN8_3DSTATE_VERTEX_ELEMENTS
{
5176 uint32_t CommandType
;
5177 uint32_t CommandSubType
;
5178 uint32_t _3DCommandOpcode
;
5179 uint32_t _3DCommandSubOpcode
;
5180 uint32_t DwordLength
;
5181 /* variable length fields follow */
5185 GEN8_3DSTATE_VERTEX_ELEMENTS_pack(__gen_user_data
*data
, void * restrict dst
,
5186 const struct GEN8_3DSTATE_VERTEX_ELEMENTS
* restrict values
)
5188 uint32_t *dw
= (uint32_t * restrict
) dst
;
5191 __gen_field(values
->CommandType
, 29, 31) |
5192 __gen_field(values
->CommandSubType
, 27, 28) |
5193 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5194 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5195 __gen_field(values
->DwordLength
, 0, 7) |
5198 /* variable length fields follow */
5201 #define GEN8_3DSTATE_VF_length 0x00000002
5202 #define GEN8_3DSTATE_VF_length_bias 0x00000002
5203 #define GEN8_3DSTATE_VF_header \
5205 .CommandSubType = 3, \
5206 ._3DCommandOpcode = 0, \
5207 ._3DCommandSubOpcode = 12, \
5210 struct GEN8_3DSTATE_VF
{
5211 uint32_t CommandType
;
5212 uint32_t CommandSubType
;
5213 uint32_t _3DCommandOpcode
;
5214 uint32_t _3DCommandSubOpcode
;
5215 uint32_t IndexedDrawCutIndexEnable
;
5216 uint32_t DwordLength
;
5221 GEN8_3DSTATE_VF_pack(__gen_user_data
*data
, void * restrict dst
,
5222 const struct GEN8_3DSTATE_VF
* restrict values
)
5224 uint32_t *dw
= (uint32_t * restrict
) dst
;
5227 __gen_field(values
->CommandType
, 29, 31) |
5228 __gen_field(values
->CommandSubType
, 27, 28) |
5229 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5230 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5231 __gen_field(values
->IndexedDrawCutIndexEnable
, 8, 8) |
5232 __gen_field(values
->DwordLength
, 0, 7) |
5236 __gen_field(values
->CutIndex
, 0, 31) |
5241 #define GEN8_3DSTATE_VF_INSTANCING_length 0x00000003
5242 #define GEN8_3DSTATE_VF_INSTANCING_length_bias 0x00000002
5243 #define GEN8_3DSTATE_VF_INSTANCING_header \
5245 .CommandSubType = 3, \
5246 ._3DCommandOpcode = 0, \
5247 ._3DCommandSubOpcode = 73, \
5250 struct GEN8_3DSTATE_VF_INSTANCING
{
5251 uint32_t CommandType
;
5252 uint32_t CommandSubType
;
5253 uint32_t _3DCommandOpcode
;
5254 uint32_t _3DCommandSubOpcode
;
5255 uint32_t DwordLength
;
5256 uint32_t InstancingEnable
;
5257 uint32_t VertexElementIndex
;
5258 uint32_t InstanceDataStepRate
;
5262 GEN8_3DSTATE_VF_INSTANCING_pack(__gen_user_data
*data
, void * restrict dst
,
5263 const struct GEN8_3DSTATE_VF_INSTANCING
* restrict values
)
5265 uint32_t *dw
= (uint32_t * restrict
) dst
;
5268 __gen_field(values
->CommandType
, 29, 31) |
5269 __gen_field(values
->CommandSubType
, 27, 28) |
5270 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5271 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5272 __gen_field(values
->DwordLength
, 0, 7) |
5276 __gen_field(values
->InstancingEnable
, 8, 8) |
5277 __gen_field(values
->VertexElementIndex
, 0, 5) |
5281 __gen_field(values
->InstanceDataStepRate
, 0, 31) |
5286 #define GEN8_3DSTATE_VF_SGVS_length 0x00000002
5287 #define GEN8_3DSTATE_VF_SGVS_length_bias 0x00000002
5288 #define GEN8_3DSTATE_VF_SGVS_header \
5290 .CommandSubType = 3, \
5291 ._3DCommandOpcode = 0, \
5292 ._3DCommandSubOpcode = 74, \
5295 struct GEN8_3DSTATE_VF_SGVS
{
5296 uint32_t CommandType
;
5297 uint32_t CommandSubType
;
5298 uint32_t _3DCommandOpcode
;
5299 uint32_t _3DCommandSubOpcode
;
5300 uint32_t DwordLength
;
5301 uint32_t InstanceIDEnable
;
5306 uint32_t InstanceIDComponentNumber
;
5307 uint32_t InstanceIDElementOffset
;
5308 uint32_t VertexIDEnable
;
5313 uint32_t VertexIDComponentNumber
;
5314 uint32_t VertexIDElementOffset
;
5318 GEN8_3DSTATE_VF_SGVS_pack(__gen_user_data
*data
, void * restrict dst
,
5319 const struct GEN8_3DSTATE_VF_SGVS
* restrict values
)
5321 uint32_t *dw
= (uint32_t * restrict
) dst
;
5324 __gen_field(values
->CommandType
, 29, 31) |
5325 __gen_field(values
->CommandSubType
, 27, 28) |
5326 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5327 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5328 __gen_field(values
->DwordLength
, 0, 7) |
5332 __gen_field(values
->InstanceIDEnable
, 31, 31) |
5333 __gen_field(values
->InstanceIDComponentNumber
, 29, 30) |
5334 __gen_field(values
->InstanceIDElementOffset
, 16, 21) |
5335 __gen_field(values
->VertexIDEnable
, 15, 15) |
5336 __gen_field(values
->VertexIDComponentNumber
, 13, 14) |
5337 __gen_field(values
->VertexIDElementOffset
, 0, 5) |
5342 #define GEN8_3DSTATE_VF_STATISTICS_length 0x00000001
5343 #define GEN8_3DSTATE_VF_STATISTICS_length_bias 0x00000001
5344 #define GEN8_3DSTATE_VF_STATISTICS_header \
5346 .CommandSubType = 1, \
5347 ._3DCommandOpcode = 0, \
5348 ._3DCommandSubOpcode = 11
5350 struct GEN8_3DSTATE_VF_STATISTICS
{
5351 uint32_t CommandType
;
5352 uint32_t CommandSubType
;
5353 uint32_t _3DCommandOpcode
;
5354 uint32_t _3DCommandSubOpcode
;
5355 uint32_t StatisticsEnable
;
5359 GEN8_3DSTATE_VF_STATISTICS_pack(__gen_user_data
*data
, void * restrict dst
,
5360 const struct GEN8_3DSTATE_VF_STATISTICS
* restrict values
)
5362 uint32_t *dw
= (uint32_t * restrict
) dst
;
5365 __gen_field(values
->CommandType
, 29, 31) |
5366 __gen_field(values
->CommandSubType
, 27, 28) |
5367 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5368 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5369 __gen_field(values
->StatisticsEnable
, 0, 0) |
5374 #define GEN8_3DSTATE_VF_TOPOLOGY_length 0x00000002
5375 #define GEN8_3DSTATE_VF_TOPOLOGY_length_bias 0x00000002
5376 #define GEN8_3DSTATE_VF_TOPOLOGY_header \
5378 .CommandSubType = 3, \
5379 ._3DCommandOpcode = 0, \
5380 ._3DCommandSubOpcode = 75, \
5383 struct GEN8_3DSTATE_VF_TOPOLOGY
{
5384 uint32_t CommandType
;
5385 uint32_t CommandSubType
;
5386 uint32_t _3DCommandOpcode
;
5387 uint32_t _3DCommandSubOpcode
;
5388 uint32_t DwordLength
;
5389 uint32_t PrimitiveTopologyType
;
5393 GEN8_3DSTATE_VF_TOPOLOGY_pack(__gen_user_data
*data
, void * restrict dst
,
5394 const struct GEN8_3DSTATE_VF_TOPOLOGY
* restrict values
)
5396 uint32_t *dw
= (uint32_t * restrict
) dst
;
5399 __gen_field(values
->CommandType
, 29, 31) |
5400 __gen_field(values
->CommandSubType
, 27, 28) |
5401 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5402 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5403 __gen_field(values
->DwordLength
, 0, 7) |
5407 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
5412 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length 0x00000002
5413 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias 0x00000002
5414 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\
5416 .CommandSubType = 3, \
5417 ._3DCommandOpcode = 0, \
5418 ._3DCommandSubOpcode = 35, \
5421 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
{
5422 uint32_t CommandType
;
5423 uint32_t CommandSubType
;
5424 uint32_t _3DCommandOpcode
;
5425 uint32_t _3DCommandSubOpcode
;
5426 uint32_t DwordLength
;
5427 uint32_t CCViewportPointer
;
5431 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__gen_user_data
*data
, void * restrict dst
,
5432 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
* restrict values
)
5434 uint32_t *dw
= (uint32_t * restrict
) dst
;
5437 __gen_field(values
->CommandType
, 29, 31) |
5438 __gen_field(values
->CommandSubType
, 27, 28) |
5439 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5440 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5441 __gen_field(values
->DwordLength
, 0, 7) |
5445 __gen_offset(values
->CCViewportPointer
, 5, 31) |
5450 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length 0x00000002
5451 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias 0x00000002
5452 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\
5454 .CommandSubType = 3, \
5455 ._3DCommandOpcode = 0, \
5456 ._3DCommandSubOpcode = 33, \
5459 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
{
5460 uint32_t CommandType
;
5461 uint32_t CommandSubType
;
5462 uint32_t _3DCommandOpcode
;
5463 uint32_t _3DCommandSubOpcode
;
5464 uint32_t DwordLength
;
5465 uint32_t SFClipViewportPointer
;
5469 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
5470 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
* restrict values
)
5472 uint32_t *dw
= (uint32_t * restrict
) dst
;
5475 __gen_field(values
->CommandType
, 29, 31) |
5476 __gen_field(values
->CommandSubType
, 27, 28) |
5477 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5478 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5479 __gen_field(values
->DwordLength
, 0, 7) |
5483 __gen_offset(values
->SFClipViewportPointer
, 6, 31) |
5488 #define GEN8_3DSTATE_WM_length 0x00000002
5489 #define GEN8_3DSTATE_WM_length_bias 0x00000002
5490 #define GEN8_3DSTATE_WM_header \
5492 .CommandSubType = 3, \
5493 ._3DCommandOpcode = 0, \
5494 ._3DCommandSubOpcode = 20, \
5497 struct GEN8_3DSTATE_WM
{
5498 uint32_t CommandType
;
5499 uint32_t CommandSubType
;
5500 uint32_t _3DCommandOpcode
;
5501 uint32_t _3DCommandSubOpcode
;
5502 uint32_t DwordLength
;
5503 uint32_t StatisticsEnable
;
5504 uint32_t LegacyDepthBufferClearEnable
;
5505 uint32_t LegacyDepthBufferResolveEnable
;
5506 uint32_t LegacyHierarchicalDepthBufferResolveEnable
;
5507 uint32_t LegacyDiamondLineRasterization
;
5511 uint32_t EarlyDepthStencilControl
;
5515 uint32_t ForceThreadDispatchEnable
;
5516 #define INTERP_PIXEL 0
5517 #define INTERP_CENTROID 2
5518 #define INTERP_SAMPLE 3
5519 uint32_t PositionZWInterpolationMode
;
5520 uint32_t BarycentricInterpolationMode
;
5525 uint32_t LineEndCapAntialiasingRegionWidth
;
5530 uint32_t LineAntialiasingRegionWidth
;
5531 uint32_t PolygonStippleEnable
;
5532 uint32_t LineStippleEnable
;
5533 #define RASTRULE_UPPER_LEFT 0
5534 #define RASTRULE_UPPER_RIGHT 1
5535 uint32_t PointRasterizationRule
;
5539 uint32_t ForceKillPixelEnable
;
5543 GEN8_3DSTATE_WM_pack(__gen_user_data
*data
, void * restrict dst
,
5544 const struct GEN8_3DSTATE_WM
* restrict values
)
5546 uint32_t *dw
= (uint32_t * restrict
) dst
;
5549 __gen_field(values
->CommandType
, 29, 31) |
5550 __gen_field(values
->CommandSubType
, 27, 28) |
5551 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5552 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5553 __gen_field(values
->DwordLength
, 0, 7) |
5557 __gen_field(values
->StatisticsEnable
, 31, 31) |
5558 __gen_field(values
->LegacyDepthBufferClearEnable
, 30, 30) |
5559 __gen_field(values
->LegacyDepthBufferResolveEnable
, 28, 28) |
5560 __gen_field(values
->LegacyHierarchicalDepthBufferResolveEnable
, 27, 27) |
5561 __gen_field(values
->LegacyDiamondLineRasterization
, 26, 26) |
5562 __gen_field(values
->EarlyDepthStencilControl
, 21, 22) |
5563 __gen_field(values
->ForceThreadDispatchEnable
, 19, 20) |
5564 __gen_field(values
->PositionZWInterpolationMode
, 17, 18) |
5565 __gen_field(values
->BarycentricInterpolationMode
, 11, 16) |
5566 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 8, 9) |
5567 __gen_field(values
->LineAntialiasingRegionWidth
, 6, 7) |
5568 __gen_field(values
->PolygonStippleEnable
, 4, 4) |
5569 __gen_field(values
->LineStippleEnable
, 3, 3) |
5570 __gen_field(values
->PointRasterizationRule
, 2, 2) |
5571 __gen_field(values
->ForceKillPixelEnable
, 0, 1) |
5576 #define GEN8_3DSTATE_WM_CHROMAKEY_length 0x00000002
5577 #define GEN8_3DSTATE_WM_CHROMAKEY_length_bias 0x00000002
5578 #define GEN8_3DSTATE_WM_CHROMAKEY_header \
5580 .CommandSubType = 3, \
5581 ._3DCommandOpcode = 0, \
5582 ._3DCommandSubOpcode = 76, \
5585 struct GEN8_3DSTATE_WM_CHROMAKEY
{
5586 uint32_t CommandType
;
5587 uint32_t CommandSubType
;
5588 uint32_t _3DCommandOpcode
;
5589 uint32_t _3DCommandSubOpcode
;
5590 uint32_t DwordLength
;
5591 uint32_t ChromaKeyKillEnable
;
5595 GEN8_3DSTATE_WM_CHROMAKEY_pack(__gen_user_data
*data
, void * restrict dst
,
5596 const struct GEN8_3DSTATE_WM_CHROMAKEY
* restrict values
)
5598 uint32_t *dw
= (uint32_t * restrict
) dst
;
5601 __gen_field(values
->CommandType
, 29, 31) |
5602 __gen_field(values
->CommandSubType
, 27, 28) |
5603 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5604 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5605 __gen_field(values
->DwordLength
, 0, 7) |
5609 __gen_field(values
->ChromaKeyKillEnable
, 31, 31) |
5614 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length 0x00000003
5615 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length_bias 0x00000002
5616 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_header \
5618 .CommandSubType = 3, \
5619 ._3DCommandOpcode = 0, \
5620 ._3DCommandSubOpcode = 78, \
5623 struct GEN8_3DSTATE_WM_DEPTH_STENCIL
{
5624 uint32_t CommandType
;
5625 uint32_t CommandSubType
;
5626 uint32_t _3DCommandOpcode
;
5627 uint32_t _3DCommandSubOpcode
;
5628 uint32_t DwordLength
;
5629 uint32_t StencilFailOp
;
5630 uint32_t StencilPassDepthFailOp
;
5631 uint32_t StencilPassDepthPassOp
;
5632 uint32_t BackfaceStencilTestFunction
;
5633 uint32_t BackfaceStencilFailOp
;
5634 uint32_t BackfaceStencilPassDepthFailOp
;
5635 uint32_t BackfaceStencilPassDepthPassOp
;
5636 uint32_t StencilTestFunction
;
5637 uint32_t DepthTestFunction
;
5640 uint32_t DoubleSidedStencilEnable
;
5641 uint32_t StencilTestEnable
;
5642 uint32_t StencilBufferWriteEnable
;
5643 uint32_t DepthTestEnable
;
5644 uint32_t DepthBufferWriteEnable
;
5645 uint32_t StencilTestMask
;
5646 uint32_t StencilWriteMask
;
5647 uint32_t BackfaceStencilTestMask
;
5648 uint32_t BackfaceStencilWriteMask
;
5652 GEN8_3DSTATE_WM_DEPTH_STENCIL_pack(__gen_user_data
*data
, void * restrict dst
,
5653 const struct GEN8_3DSTATE_WM_DEPTH_STENCIL
* restrict values
)
5655 uint32_t *dw
= (uint32_t * restrict
) dst
;
5658 __gen_field(values
->CommandType
, 29, 31) |
5659 __gen_field(values
->CommandSubType
, 27, 28) |
5660 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5661 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5662 __gen_field(values
->DwordLength
, 0, 7) |
5666 __gen_field(values
->StencilFailOp
, 29, 31) |
5667 __gen_field(values
->StencilPassDepthFailOp
, 26, 28) |
5668 __gen_field(values
->StencilPassDepthPassOp
, 23, 25) |
5669 __gen_field(values
->BackfaceStencilTestFunction
, 20, 22) |
5670 __gen_field(values
->BackfaceStencilFailOp
, 17, 19) |
5671 __gen_field(values
->BackfaceStencilPassDepthFailOp
, 14, 16) |
5672 __gen_field(values
->BackfaceStencilPassDepthPassOp
, 11, 13) |
5673 __gen_field(values
->StencilTestFunction
, 8, 10) |
5674 __gen_field(values
->DepthTestFunction
, 5, 7) |
5675 __gen_field(values
->DoubleSidedStencilEnable
, 4, 4) |
5676 __gen_field(values
->StencilTestEnable
, 3, 3) |
5677 __gen_field(values
->StencilBufferWriteEnable
, 2, 2) |
5678 __gen_field(values
->DepthTestEnable
, 1, 1) |
5679 __gen_field(values
->DepthBufferWriteEnable
, 0, 0) |
5683 __gen_field(values
->StencilTestMask
, 24, 31) |
5684 __gen_field(values
->StencilWriteMask
, 16, 23) |
5685 __gen_field(values
->BackfaceStencilTestMask
, 8, 15) |
5686 __gen_field(values
->BackfaceStencilWriteMask
, 0, 7) |
5691 #define GEN8_3DSTATE_WM_HZ_OP_length 0x00000005
5692 #define GEN8_3DSTATE_WM_HZ_OP_length_bias 0x00000002
5693 #define GEN8_3DSTATE_WM_HZ_OP_header \
5695 .CommandSubType = 3, \
5696 ._3DCommandOpcode = 0, \
5697 ._3DCommandSubOpcode = 82, \
5700 struct GEN8_3DSTATE_WM_HZ_OP
{
5701 uint32_t CommandType
;
5702 uint32_t CommandSubType
;
5703 uint32_t _3DCommandOpcode
;
5704 uint32_t _3DCommandSubOpcode
;
5705 uint32_t DwordLength
;
5706 uint32_t StencilBufferClearEnable
;
5707 uint32_t DepthBufferClearEnable
;
5708 uint32_t ScissorRectangleEnable
;
5709 uint32_t DepthBufferResolveEnable
;
5710 uint32_t HierarchicalDepthBufferResolveEnable
;
5711 uint32_t PixelPositionOffsetEnable
;
5712 uint32_t FullSurfaceDepthClear
;
5713 uint32_t StencilClearValue
;
5714 uint32_t NumberofMultisamples
;
5715 uint32_t ClearRectangleYMin
;
5716 uint32_t ClearRectangleXMin
;
5717 uint32_t ClearRectangleYMax
;
5718 uint32_t ClearRectangleXMax
;
5719 uint32_t SampleMask
;
5723 GEN8_3DSTATE_WM_HZ_OP_pack(__gen_user_data
*data
, void * restrict dst
,
5724 const struct GEN8_3DSTATE_WM_HZ_OP
* restrict values
)
5726 uint32_t *dw
= (uint32_t * restrict
) dst
;
5729 __gen_field(values
->CommandType
, 29, 31) |
5730 __gen_field(values
->CommandSubType
, 27, 28) |
5731 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5732 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5733 __gen_field(values
->DwordLength
, 0, 7) |
5737 __gen_field(values
->StencilBufferClearEnable
, 31, 31) |
5738 __gen_field(values
->DepthBufferClearEnable
, 30, 30) |
5739 __gen_field(values
->ScissorRectangleEnable
, 29, 29) |
5740 __gen_field(values
->DepthBufferResolveEnable
, 28, 28) |
5741 __gen_field(values
->HierarchicalDepthBufferResolveEnable
, 27, 27) |
5742 __gen_field(values
->PixelPositionOffsetEnable
, 26, 26) |
5743 __gen_field(values
->FullSurfaceDepthClear
, 25, 25) |
5744 __gen_field(values
->StencilClearValue
, 16, 23) |
5745 __gen_field(values
->NumberofMultisamples
, 13, 15) |
5749 __gen_field(values
->ClearRectangleYMin
, 16, 31) |
5750 __gen_field(values
->ClearRectangleXMin
, 0, 15) |
5754 __gen_field(values
->ClearRectangleYMax
, 16, 31) |
5755 __gen_field(values
->ClearRectangleXMax
, 0, 15) |
5759 __gen_field(values
->SampleMask
, 0, 15) |
5764 #define GEN8_GPGPU_WALKER_length 0x0000000f
5765 #define GEN8_GPGPU_WALKER_length_bias 0x00000002
5766 #define GEN8_GPGPU_WALKER_header \
5769 .MediaCommandOpcode = 1, \
5773 struct GEN8_GPGPU_WALKER
{
5774 uint32_t CommandType
;
5776 uint32_t MediaCommandOpcode
;
5778 uint32_t IndirectParameterEnable
;
5779 uint32_t PredicateEnable
;
5780 uint32_t DwordLength
;
5781 uint32_t InterfaceDescriptorOffset
;
5782 uint32_t IndirectDataLength
;
5783 uint32_t IndirectDataStartAddress
;
5788 uint32_t ThreadDepthCounterMaximum
;
5789 uint32_t ThreadHeightCounterMaximum
;
5790 uint32_t ThreadWidthCounterMaximum
;
5791 uint32_t ThreadGroupIDStartingX
;
5792 uint32_t ThreadGroupIDXDimension
;
5793 uint32_t ThreadGroupIDStartingY
;
5794 uint32_t ThreadGroupIDYDimension
;
5795 uint32_t ThreadGroupIDStartingResumeZ
;
5796 uint32_t ThreadGroupIDZDimension
;
5797 uint32_t RightExecutionMask
;
5798 uint32_t BottomExecutionMask
;
5802 GEN8_GPGPU_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
5803 const struct GEN8_GPGPU_WALKER
* restrict values
)
5805 uint32_t *dw
= (uint32_t * restrict
) dst
;
5808 __gen_field(values
->CommandType
, 29, 31) |
5809 __gen_field(values
->Pipeline
, 27, 28) |
5810 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5811 __gen_field(values
->SubOpcode
, 16, 23) |
5812 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
5813 __gen_field(values
->PredicateEnable
, 8, 8) |
5814 __gen_field(values
->DwordLength
, 0, 7) |
5818 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
5822 __gen_field(values
->IndirectDataLength
, 0, 16) |
5826 __gen_offset(values
->IndirectDataStartAddress
, 6, 31) |
5830 __gen_field(values
->SIMDSize
, 30, 31) |
5831 __gen_field(values
->ThreadDepthCounterMaximum
, 16, 21) |
5832 __gen_field(values
->ThreadHeightCounterMaximum
, 8, 13) |
5833 __gen_field(values
->ThreadWidthCounterMaximum
, 0, 5) |
5837 __gen_field(values
->ThreadGroupIDStartingX
, 0, 31) |
5844 __gen_field(values
->ThreadGroupIDXDimension
, 0, 31) |
5848 __gen_field(values
->ThreadGroupIDStartingY
, 0, 31) |
5855 __gen_field(values
->ThreadGroupIDYDimension
, 0, 31) |
5859 __gen_field(values
->ThreadGroupIDStartingResumeZ
, 0, 31) |
5863 __gen_field(values
->ThreadGroupIDZDimension
, 0, 31) |
5867 __gen_field(values
->RightExecutionMask
, 0, 31) |
5871 __gen_field(values
->BottomExecutionMask
, 0, 31) |
5876 #define GEN8_MEDIA_CURBE_LOAD_length 0x00000004
5877 #define GEN8_MEDIA_CURBE_LOAD_length_bias 0x00000002
5878 #define GEN8_MEDIA_CURBE_LOAD_header \
5881 .MediaCommandOpcode = 0, \
5885 struct GEN8_MEDIA_CURBE_LOAD
{
5886 uint32_t CommandType
;
5888 uint32_t MediaCommandOpcode
;
5890 uint32_t DwordLength
;
5891 uint32_t CURBETotalDataLength
;
5892 uint32_t CURBEDataStartAddress
;
5896 GEN8_MEDIA_CURBE_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
5897 const struct GEN8_MEDIA_CURBE_LOAD
* restrict values
)
5899 uint32_t *dw
= (uint32_t * restrict
) dst
;
5902 __gen_field(values
->CommandType
, 29, 31) |
5903 __gen_field(values
->Pipeline
, 27, 28) |
5904 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5905 __gen_field(values
->SubOpcode
, 16, 23) |
5906 __gen_field(values
->DwordLength
, 0, 15) |
5913 __gen_field(values
->CURBETotalDataLength
, 0, 16) |
5917 __gen_field(values
->CURBEDataStartAddress
, 0, 31) |
5922 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length 0x00000004
5923 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias 0x00000002
5924 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\
5927 .MediaCommandOpcode = 0, \
5931 struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
{
5932 uint32_t CommandType
;
5934 uint32_t MediaCommandOpcode
;
5936 uint32_t DwordLength
;
5937 uint32_t InterfaceDescriptorTotalLength
;
5938 uint32_t InterfaceDescriptorDataStartAddress
;
5942 GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
5943 const struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
* restrict values
)
5945 uint32_t *dw
= (uint32_t * restrict
) dst
;
5948 __gen_field(values
->CommandType
, 29, 31) |
5949 __gen_field(values
->Pipeline
, 27, 28) |
5950 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5951 __gen_field(values
->SubOpcode
, 16, 23) |
5952 __gen_field(values
->DwordLength
, 0, 15) |
5959 __gen_field(values
->InterfaceDescriptorTotalLength
, 0, 16) |
5963 __gen_offset(values
->InterfaceDescriptorDataStartAddress
, 0, 31) |
5968 #define GEN8_MEDIA_OBJECT_length_bias 0x00000002
5969 #define GEN8_MEDIA_OBJECT_header \
5971 .MediaCommandPipeline = 2, \
5972 .MediaCommandOpcode = 1, \
5973 .MediaCommandSubOpcode = 0
5975 struct GEN8_MEDIA_OBJECT
{
5976 uint32_t CommandType
;
5977 uint32_t MediaCommandPipeline
;
5978 uint32_t MediaCommandOpcode
;
5979 uint32_t MediaCommandSubOpcode
;
5980 uint32_t DwordLength
;
5981 uint32_t InterfaceDescriptorOffset
;
5982 uint32_t ChildrenPresent
;
5983 #define Nothreadsynchronization 0
5984 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
5985 uint32_t ThreadSynchronization
;
5986 uint32_t ForceDestination
;
5987 #define Notusingscoreboard 0
5988 #define Usingscoreboard 1
5989 uint32_t UseScoreboard
;
5993 uint32_t SliceDestinationSelect
;
5997 uint32_t SubSliceDestinationSelect
;
5998 uint32_t IndirectDataLength
;
5999 __gen_address_type IndirectDataStartAddress
;
6000 uint32_t ScoredboardY
;
6001 uint32_t ScoreboardX
;
6002 uint32_t ScoreboardColor
;
6003 uint32_t ScoreboardMask
;
6004 /* variable length fields follow */
6008 GEN8_MEDIA_OBJECT_pack(__gen_user_data
*data
, void * restrict dst
,
6009 const struct GEN8_MEDIA_OBJECT
* restrict values
)
6011 uint32_t *dw
= (uint32_t * restrict
) dst
;
6014 __gen_field(values
->CommandType
, 29, 31) |
6015 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6016 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6017 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6018 __gen_field(values
->DwordLength
, 0, 15) |
6022 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6026 __gen_field(values
->ChildrenPresent
, 31, 31) |
6027 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6028 __gen_field(values
->ForceDestination
, 22, 22) |
6029 __gen_field(values
->UseScoreboard
, 21, 21) |
6030 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6031 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6032 __gen_field(values
->IndirectDataLength
, 0, 16) |
6039 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6042 __gen_field(values
->ScoredboardY
, 16, 24) |
6043 __gen_field(values
->ScoreboardX
, 0, 8) |
6047 __gen_field(values
->ScoreboardColor
, 16, 19) |
6048 __gen_field(values
->ScoreboardMask
, 0, 7) |
6051 /* variable length fields follow */
6054 #define GEN8_MEDIA_OBJECT_GRPID_length_bias 0x00000002
6055 #define GEN8_MEDIA_OBJECT_GRPID_header \
6057 .MediaCommandPipeline = 2, \
6058 .MediaCommandOpcode = 1, \
6059 .MediaCommandSubOpcode = 6
6061 struct GEN8_MEDIA_OBJECT_GRPID
{
6062 uint32_t CommandType
;
6063 uint32_t MediaCommandPipeline
;
6064 uint32_t MediaCommandOpcode
;
6065 uint32_t MediaCommandSubOpcode
;
6066 uint32_t DwordLength
;
6067 uint32_t InterfaceDescriptorOffset
;
6068 uint32_t EndofThreadGroup
;
6069 uint32_t ForceDestination
;
6070 #define Notusingscoreboard 0
6071 #define Usingscoreboard 1
6072 uint32_t UseScoreboard
;
6076 uint32_t SliceDestinationSelect
;
6080 uint32_t SubSliceDestinationSelect
;
6081 uint32_t IndirectDataLength
;
6082 __gen_address_type IndirectDataStartAddress
;
6083 uint32_t ScoredboardY
;
6084 uint32_t ScoreboardX
;
6085 uint32_t ScoreboardColor
;
6086 uint32_t ScoreboardMask
;
6088 /* variable length fields follow */
6092 GEN8_MEDIA_OBJECT_GRPID_pack(__gen_user_data
*data
, void * restrict dst
,
6093 const struct GEN8_MEDIA_OBJECT_GRPID
* restrict values
)
6095 uint32_t *dw
= (uint32_t * restrict
) dst
;
6098 __gen_field(values
->CommandType
, 29, 31) |
6099 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6100 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6101 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6102 __gen_field(values
->DwordLength
, 0, 15) |
6106 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6110 __gen_field(values
->EndofThreadGroup
, 23, 23) |
6111 __gen_field(values
->ForceDestination
, 22, 22) |
6112 __gen_field(values
->UseScoreboard
, 21, 21) |
6113 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6114 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6115 __gen_field(values
->IndirectDataLength
, 0, 16) |
6122 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6125 __gen_field(values
->ScoredboardY
, 16, 24) |
6126 __gen_field(values
->ScoreboardX
, 0, 8) |
6130 __gen_field(values
->ScoreboardColor
, 16, 19) |
6131 __gen_field(values
->ScoreboardMask
, 0, 7) |
6135 __gen_field(values
->GroupID
, 0, 31) |
6138 /* variable length fields follow */
6141 #define GEN8_MEDIA_OBJECT_PRT_length 0x00000010
6142 #define GEN8_MEDIA_OBJECT_PRT_length_bias 0x00000002
6143 #define GEN8_MEDIA_OBJECT_PRT_header \
6146 .MediaCommandOpcode = 1, \
6150 struct GEN8_MEDIA_OBJECT_PRT
{
6151 uint32_t CommandType
;
6153 uint32_t MediaCommandOpcode
;
6155 uint32_t DwordLength
;
6156 uint32_t InterfaceDescriptorOffset
;
6157 uint32_t ChildrenPresent
;
6158 uint32_t PRT_FenceNeeded
;
6159 #define Rootthreadqueue 0
6160 #define VFEstateflush 1
6161 uint32_t PRT_FenceType
;
6162 uint32_t InlineData
;
6166 GEN8_MEDIA_OBJECT_PRT_pack(__gen_user_data
*data
, void * restrict dst
,
6167 const struct GEN8_MEDIA_OBJECT_PRT
* restrict values
)
6169 uint32_t *dw
= (uint32_t * restrict
) dst
;
6172 __gen_field(values
->CommandType
, 29, 31) |
6173 __gen_field(values
->Pipeline
, 27, 28) |
6174 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6175 __gen_field(values
->SubOpcode
, 16, 23) |
6176 __gen_field(values
->DwordLength
, 0, 15) |
6180 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6184 __gen_field(values
->ChildrenPresent
, 31, 31) |
6185 __gen_field(values
->PRT_FenceNeeded
, 23, 23) |
6186 __gen_field(values
->PRT_FenceType
, 22, 22) |
6193 __gen_field(values
->InlineData
, 0, 31) |
6198 #define GEN8_MEDIA_OBJECT_WALKER_length_bias 0x00000002
6199 #define GEN8_MEDIA_OBJECT_WALKER_header \
6202 .MediaCommandOpcode = 1, \
6205 struct GEN8_MEDIA_OBJECT_WALKER
{
6206 uint32_t CommandType
;
6208 uint32_t MediaCommandOpcode
;
6210 uint32_t DwordLength
;
6211 uint32_t InterfaceDescriptorOffset
;
6212 uint32_t ChildrenPresent
;
6213 #define Nothreadsynchronization 0
6214 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
6215 uint32_t ThreadSynchronization
;
6216 #define Notusingscoreboard 0
6217 #define Usingscoreboard 1
6218 uint32_t UseScoreboard
;
6219 uint32_t IndirectDataLength
;
6220 uint32_t IndirectDataStartAddress
;
6221 uint32_t GroupIDLoopSelect
;
6222 uint32_t ScoreboardMask
;
6223 uint32_t ColorCountMinusOne
;
6224 uint32_t MiddleLoopExtraSteps
;
6225 uint32_t LocalMidLoopUnitY
;
6226 uint32_t MidLoopUnitX
;
6227 uint32_t GlobalLoopExecCount
;
6228 uint32_t LocalLoopExecCount
;
6229 uint32_t BlockResolutionY
;
6230 uint32_t BlockResolutionX
;
6231 uint32_t LocalStartY
;
6232 uint32_t LocalStartX
;
6233 uint32_t LocalOuterLoopStrideY
;
6234 uint32_t LocalOuterLoopStrideX
;
6235 uint32_t LocalInnerLoopUnitY
;
6236 uint32_t LocalInnerLoopUnitX
;
6237 uint32_t GlobalResolutionY
;
6238 uint32_t GlobalResolutionX
;
6239 uint32_t GlobalStartY
;
6240 uint32_t GlobalStartX
;
6241 uint32_t GlobalOuterLoopStrideY
;
6242 uint32_t GlobalOuterLoopStrideX
;
6243 uint32_t GlobalInnerLoopUnitY
;
6244 uint32_t GlobalInnerLoopUnitX
;
6245 /* variable length fields follow */
6249 GEN8_MEDIA_OBJECT_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
6250 const struct GEN8_MEDIA_OBJECT_WALKER
* restrict values
)
6252 uint32_t *dw
= (uint32_t * restrict
) dst
;
6255 __gen_field(values
->CommandType
, 29, 31) |
6256 __gen_field(values
->Pipeline
, 27, 28) |
6257 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6258 __gen_field(values
->SubOpcode
, 16, 23) |
6259 __gen_field(values
->DwordLength
, 0, 15) |
6263 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6267 __gen_field(values
->ChildrenPresent
, 31, 31) |
6268 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6269 __gen_field(values
->UseScoreboard
, 21, 21) |
6270 __gen_field(values
->IndirectDataLength
, 0, 16) |
6274 __gen_offset(values
->IndirectDataStartAddress
, 0, 31) |
6281 __gen_field(values
->GroupIDLoopSelect
, 8, 31) |
6282 __gen_field(values
->ScoreboardMask
, 0, 7) |
6286 __gen_field(values
->ColorCountMinusOne
, 24, 27) |
6287 __gen_field(values
->MiddleLoopExtraSteps
, 16, 20) |
6288 __gen_field(values
->LocalMidLoopUnitY
, 12, 13) |
6289 __gen_field(values
->MidLoopUnitX
, 8, 9) |
6293 __gen_field(values
->GlobalLoopExecCount
, 16, 25) |
6294 __gen_field(values
->LocalLoopExecCount
, 0, 9) |
6298 __gen_field(values
->BlockResolutionY
, 16, 24) |
6299 __gen_field(values
->BlockResolutionX
, 0, 8) |
6303 __gen_field(values
->LocalStartY
, 16, 24) |
6304 __gen_field(values
->LocalStartX
, 0, 8) |
6311 __gen_field(values
->LocalOuterLoopStrideY
, 16, 25) |
6312 __gen_field(values
->LocalOuterLoopStrideX
, 0, 9) |
6316 __gen_field(values
->LocalInnerLoopUnitY
, 16, 25) |
6317 __gen_field(values
->LocalInnerLoopUnitX
, 0, 9) |
6321 __gen_field(values
->GlobalResolutionY
, 16, 24) |
6322 __gen_field(values
->GlobalResolutionX
, 0, 8) |
6326 __gen_field(values
->GlobalStartY
, 16, 25) |
6327 __gen_field(values
->GlobalStartX
, 0, 9) |
6331 __gen_field(values
->GlobalOuterLoopStrideY
, 16, 25) |
6332 __gen_field(values
->GlobalOuterLoopStrideX
, 0, 9) |
6336 __gen_field(values
->GlobalInnerLoopUnitY
, 16, 25) |
6337 __gen_field(values
->GlobalInnerLoopUnitX
, 0, 9) |
6340 /* variable length fields follow */
6343 #define GEN8_MEDIA_STATE_FLUSH_length 0x00000002
6344 #define GEN8_MEDIA_STATE_FLUSH_length_bias 0x00000002
6345 #define GEN8_MEDIA_STATE_FLUSH_header \
6348 .MediaCommandOpcode = 0, \
6352 struct GEN8_MEDIA_STATE_FLUSH
{
6353 uint32_t CommandType
;
6355 uint32_t MediaCommandOpcode
;
6357 uint32_t DwordLength
;
6359 uint32_t WatermarkRequired
;
6360 uint32_t InterfaceDescriptorOffset
;
6364 GEN8_MEDIA_STATE_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6365 const struct GEN8_MEDIA_STATE_FLUSH
* restrict values
)
6367 uint32_t *dw
= (uint32_t * restrict
) dst
;
6370 __gen_field(values
->CommandType
, 29, 31) |
6371 __gen_field(values
->Pipeline
, 27, 28) |
6372 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6373 __gen_field(values
->SubOpcode
, 16, 23) |
6374 __gen_field(values
->DwordLength
, 0, 15) |
6378 __gen_field(values
->FlushtoGO
, 7, 7) |
6379 __gen_field(values
->WatermarkRequired
, 6, 6) |
6380 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6385 #define GEN8_MEDIA_VFE_STATE_length 0x00000009
6386 #define GEN8_MEDIA_VFE_STATE_length_bias 0x00000002
6387 #define GEN8_MEDIA_VFE_STATE_header \
6390 .MediaCommandOpcode = 0, \
6394 struct GEN8_MEDIA_VFE_STATE
{
6395 uint32_t CommandType
;
6397 uint32_t MediaCommandOpcode
;
6399 uint32_t DwordLength
;
6400 uint32_t ScratchSpaceBasePointer
;
6402 uint32_t PerThreadScratchSpace
;
6403 uint32_t ScratchSpaceBasePointerHigh
;
6404 uint32_t MaximumNumberofThreads
;
6405 uint32_t NumberofURBEntries
;
6406 #define Maintainingtheexistingtimestampstate 0
6407 #define Resettingrelativetimerandlatchingtheglobaltimestamp 1
6408 uint32_t ResetGatewayTimer
;
6409 #define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0
6410 #define BypassingOpenGatewayCloseGatewayprotocol 1
6411 uint32_t BypassGatewayControl
;
6412 uint32_t SliceDisable
;
6413 uint32_t URBEntryAllocationSize
;
6414 uint32_t CURBEAllocationSize
;
6415 #define Scoreboarddisabled 0
6416 #define Scoreboardenabled 1
6417 uint32_t ScoreboardEnable
;
6418 #define StallingScoreboard 0
6419 #define NonStallingScoreboard 1
6420 uint32_t ScoreboardType
;
6421 uint32_t ScoreboardMask
;
6422 uint32_t Scoreboard3DeltaY
;
6423 uint32_t Scoreboard3DeltaX
;
6424 uint32_t Scoreboard2DeltaY
;
6425 uint32_t Scoreboard2DeltaX
;
6426 uint32_t Scoreboard1DeltaY
;
6427 uint32_t Scoreboard1DeltaX
;
6428 uint32_t Scoreboard0DeltaY
;
6429 uint32_t Scoreboard0DeltaX
;
6430 uint32_t Scoreboard7DeltaY
;
6431 uint32_t Scoreboard7DeltaX
;
6432 uint32_t Scoreboard6DeltaY
;
6433 uint32_t Scoreboard6DeltaX
;
6434 uint32_t Scoreboard5DeltaY
;
6435 uint32_t Scoreboard5DeltaX
;
6436 uint32_t Scoreboard4DeltaY
;
6437 uint32_t Scoreboard4DeltaX
;
6441 GEN8_MEDIA_VFE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
6442 const struct GEN8_MEDIA_VFE_STATE
* restrict values
)
6444 uint32_t *dw
= (uint32_t * restrict
) dst
;
6447 __gen_field(values
->CommandType
, 29, 31) |
6448 __gen_field(values
->Pipeline
, 27, 28) |
6449 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6450 __gen_field(values
->SubOpcode
, 16, 23) |
6451 __gen_field(values
->DwordLength
, 0, 15) |
6455 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 31) |
6456 __gen_field(values
->StackSize
, 4, 7) |
6457 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
6461 __gen_offset(values
->ScratchSpaceBasePointerHigh
, 0, 15) |
6465 __gen_field(values
->MaximumNumberofThreads
, 16, 31) |
6466 __gen_field(values
->NumberofURBEntries
, 8, 15) |
6467 __gen_field(values
->ResetGatewayTimer
, 7, 7) |
6468 __gen_field(values
->BypassGatewayControl
, 6, 6) |
6472 __gen_field(values
->SliceDisable
, 0, 1) |
6476 __gen_field(values
->URBEntryAllocationSize
, 16, 31) |
6477 __gen_field(values
->CURBEAllocationSize
, 0, 15) |
6481 __gen_field(values
->ScoreboardEnable
, 31, 31) |
6482 __gen_field(values
->ScoreboardType
, 30, 30) |
6483 __gen_field(values
->ScoreboardMask
, 0, 7) |
6487 __gen_field(values
->Scoreboard3DeltaY
, 28, 31) |
6488 __gen_field(values
->Scoreboard3DeltaX
, 24, 27) |
6489 __gen_field(values
->Scoreboard2DeltaY
, 20, 23) |
6490 __gen_field(values
->Scoreboard2DeltaX
, 16, 19) |
6491 __gen_field(values
->Scoreboard1DeltaY
, 12, 15) |
6492 __gen_field(values
->Scoreboard1DeltaX
, 8, 11) |
6493 __gen_field(values
->Scoreboard0DeltaY
, 4, 7) |
6494 __gen_field(values
->Scoreboard0DeltaX
, 0, 3) |
6498 __gen_field(values
->Scoreboard7DeltaY
, 28, 31) |
6499 __gen_field(values
->Scoreboard7DeltaX
, 24, 27) |
6500 __gen_field(values
->Scoreboard6DeltaY
, 20, 23) |
6501 __gen_field(values
->Scoreboard6DeltaX
, 16, 19) |
6502 __gen_field(values
->Scoreboard5DeltaY
, 12, 15) |
6503 __gen_field(values
->Scoreboard5DeltaX
, 8, 11) |
6504 __gen_field(values
->Scoreboard4DeltaY
, 4, 7) |
6505 __gen_field(values
->Scoreboard4DeltaX
, 0, 3) |
6510 #define GEN8_MI_ARB_CHECK_length 0x00000001
6511 #define GEN8_MI_ARB_CHECK_length_bias 0x00000001
6512 #define GEN8_MI_ARB_CHECK_header \
6514 .MICommandOpcode = 5
6516 struct GEN8_MI_ARB_CHECK
{
6517 uint32_t CommandType
;
6518 uint32_t MICommandOpcode
;
6522 GEN8_MI_ARB_CHECK_pack(__gen_user_data
*data
, void * restrict dst
,
6523 const struct GEN8_MI_ARB_CHECK
* restrict values
)
6525 uint32_t *dw
= (uint32_t * restrict
) dst
;
6528 __gen_field(values
->CommandType
, 29, 31) |
6529 __gen_field(values
->MICommandOpcode
, 23, 28) |
6534 #define GEN8_MI_BATCH_BUFFER_END_length 0x00000001
6535 #define GEN8_MI_BATCH_BUFFER_END_length_bias 0x00000001
6536 #define GEN8_MI_BATCH_BUFFER_END_header \
6538 .MICommandOpcode = 10
6540 struct GEN8_MI_BATCH_BUFFER_END
{
6541 uint32_t CommandType
;
6542 uint32_t MICommandOpcode
;
6546 GEN8_MI_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6547 const struct GEN8_MI_BATCH_BUFFER_END
* restrict values
)
6549 uint32_t *dw
= (uint32_t * restrict
) dst
;
6552 __gen_field(values
->CommandType
, 29, 31) |
6553 __gen_field(values
->MICommandOpcode
, 23, 28) |
6558 #define GEN8_MI_BATCH_BUFFER_START_length 0x00000003
6559 #define GEN8_MI_BATCH_BUFFER_START_length_bias 0x00000002
6560 #define GEN8_MI_BATCH_BUFFER_START_header \
6562 .MICommandOpcode = 49, \
6565 struct GEN8_MI_BATCH_BUFFER_START
{
6566 uint32_t CommandType
;
6567 uint32_t MICommandOpcode
;
6568 #define _1stlevelbatch 0
6569 #define _2ndlevelbatch 1
6570 uint32_t _2ndLevelBatchBuffer
;
6571 uint32_t AddOffsetEnable
;
6572 uint32_t PredicationEnable
;
6573 uint32_t ResourceStreamerEnable
;
6576 uint32_t AddressSpaceIndicator
;
6577 uint32_t DwordLength
;
6578 __gen_address_type BatchBufferStartAddress
;
6579 __gen_address_type BatchBufferStartAddressHigh
;
6583 GEN8_MI_BATCH_BUFFER_START_pack(__gen_user_data
*data
, void * restrict dst
,
6584 const struct GEN8_MI_BATCH_BUFFER_START
* restrict values
)
6586 uint32_t *dw
= (uint32_t * restrict
) dst
;
6589 __gen_field(values
->CommandType
, 29, 31) |
6590 __gen_field(values
->MICommandOpcode
, 23, 28) |
6591 __gen_field(values
->_2ndLevelBatchBuffer
, 22, 22) |
6592 __gen_field(values
->AddOffsetEnable
, 16, 16) |
6593 __gen_field(values
->PredicationEnable
, 15, 15) |
6594 __gen_field(values
->ResourceStreamerEnable
, 10, 10) |
6595 __gen_field(values
->AddressSpaceIndicator
, 8, 8) |
6596 __gen_field(values
->DwordLength
, 0, 7) |
6603 __gen_combine_address(data
, &dw
[1], values
->BatchBufferStartAddress
, dw1
);
6609 __gen_combine_address(data
, &dw
[2], values
->BatchBufferStartAddressHigh
, dw2
);
6613 #define GEN8_MI_CLFLUSH_length_bias 0x00000002
6614 #define GEN8_MI_CLFLUSH_header \
6616 .MICommandOpcode = 39
6618 struct GEN8_MI_CLFLUSH
{
6619 uint32_t CommandType
;
6620 uint32_t MICommandOpcode
;
6621 #define PerProcessGraphicsAddress 0
6622 #define GlobalGraphicsAddress 1
6623 uint32_t UseGlobalGTT
;
6624 uint32_t DwordLength
;
6625 __gen_address_type PageBaseAddress
;
6626 uint32_t StartingCachelineOffset
;
6627 __gen_address_type PageBaseAddressHigh
;
6628 /* variable length fields follow */
6632 GEN8_MI_CLFLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6633 const struct GEN8_MI_CLFLUSH
* restrict values
)
6635 uint32_t *dw
= (uint32_t * restrict
) dst
;
6638 __gen_field(values
->CommandType
, 29, 31) |
6639 __gen_field(values
->MICommandOpcode
, 23, 28) |
6640 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6641 __gen_field(values
->DwordLength
, 0, 9) |
6645 __gen_field(values
->StartingCachelineOffset
, 6, 11) |
6649 __gen_combine_address(data
, &dw
[1], values
->PageBaseAddress
, dw1
);
6655 __gen_combine_address(data
, &dw
[2], values
->PageBaseAddressHigh
, dw2
);
6657 /* variable length fields follow */
6660 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length 0x00000003
6661 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias 0x00000002
6662 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_header\
6664 .MICommandOpcode = 54, \
6665 .UseGlobalGTT = 0, \
6666 .CompareSemaphore = 0, \
6669 struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
{
6670 uint32_t CommandType
;
6671 uint32_t MICommandOpcode
;
6672 uint32_t UseGlobalGTT
;
6673 uint32_t CompareSemaphore
;
6674 uint32_t DwordLength
;
6675 uint32_t CompareDataDword
;
6676 __gen_address_type CompareAddress
;
6677 __gen_address_type CompareAddressHigh
;
6681 GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6682 const struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
* restrict values
)
6684 uint32_t *dw
= (uint32_t * restrict
) dst
;
6687 __gen_field(values
->CommandType
, 29, 31) |
6688 __gen_field(values
->MICommandOpcode
, 23, 28) |
6689 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6690 __gen_field(values
->CompareSemaphore
, 21, 21) |
6691 __gen_field(values
->DwordLength
, 0, 7) |
6695 __gen_field(values
->CompareDataDword
, 0, 31) |
6702 __gen_combine_address(data
, &dw
[2], values
->CompareAddress
, dw2
);
6708 __gen_combine_address(data
, &dw
[3], values
->CompareAddressHigh
, dw3
);
6712 #define GEN8_MI_COPY_MEM_MEM_length 0x00000005
6713 #define GEN8_MI_COPY_MEM_MEM_length_bias 0x00000002
6714 #define GEN8_MI_COPY_MEM_MEM_header \
6716 .MICommandOpcode = 46, \
6719 struct GEN8_MI_COPY_MEM_MEM
{
6720 uint32_t CommandType
;
6721 uint32_t MICommandOpcode
;
6722 #define PerProcessGraphicsAddress 0
6723 #define GlobalGraphicsAddress 1
6724 uint32_t UseGlobalGTTSource
;
6725 #define PerProcessGraphicsAddress 0
6726 #define GlobalGraphicsAddress 1
6727 uint32_t UseGlobalGTTDestination
;
6728 uint32_t DwordLength
;
6729 __gen_address_type DestinationMemoryAddress
;
6730 __gen_address_type SourceMemoryAddress
;
6734 GEN8_MI_COPY_MEM_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6735 const struct GEN8_MI_COPY_MEM_MEM
* restrict values
)
6737 uint32_t *dw
= (uint32_t * restrict
) dst
;
6740 __gen_field(values
->CommandType
, 29, 31) |
6741 __gen_field(values
->MICommandOpcode
, 23, 28) |
6742 __gen_field(values
->UseGlobalGTTSource
, 22, 22) |
6743 __gen_field(values
->UseGlobalGTTDestination
, 21, 21) |
6744 __gen_field(values
->DwordLength
, 0, 7) |
6751 __gen_combine_address(data
, &dw
[1], values
->DestinationMemoryAddress
, dw1
);
6760 __gen_combine_address(data
, &dw
[3], values
->SourceMemoryAddress
, dw3
);
6767 #define GEN8_MI_LOAD_REGISTER_IMM_length 0x00000003
6768 #define GEN8_MI_LOAD_REGISTER_IMM_length_bias 0x00000002
6769 #define GEN8_MI_LOAD_REGISTER_IMM_header \
6771 .MICommandOpcode = 34, \
6774 struct GEN8_MI_LOAD_REGISTER_IMM
{
6775 uint32_t CommandType
;
6776 uint32_t MICommandOpcode
;
6777 uint32_t ByteWriteDisables
;
6778 uint32_t DwordLength
;
6779 uint32_t RegisterOffset
;
6784 GEN8_MI_LOAD_REGISTER_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
6785 const struct GEN8_MI_LOAD_REGISTER_IMM
* restrict values
)
6787 uint32_t *dw
= (uint32_t * restrict
) dst
;
6790 __gen_field(values
->CommandType
, 29, 31) |
6791 __gen_field(values
->MICommandOpcode
, 23, 28) |
6792 __gen_field(values
->ByteWriteDisables
, 8, 11) |
6793 __gen_field(values
->DwordLength
, 0, 7) |
6797 __gen_offset(values
->RegisterOffset
, 2, 22) |
6801 __gen_field(values
->DataDWord
, 0, 31) |
6806 #define GEN8_MI_LOAD_REGISTER_MEM_length 0x00000004
6807 #define GEN8_MI_LOAD_REGISTER_MEM_length_bias 0x00000002
6808 #define GEN8_MI_LOAD_REGISTER_MEM_header \
6810 .MICommandOpcode = 41, \
6813 struct GEN8_MI_LOAD_REGISTER_MEM
{
6814 uint32_t CommandType
;
6815 uint32_t MICommandOpcode
;
6816 uint32_t UseGlobalGTT
;
6817 uint32_t AsyncModeEnable
;
6818 uint32_t DwordLength
;
6819 uint32_t RegisterAddress
;
6820 __gen_address_type MemoryAddress
;
6824 GEN8_MI_LOAD_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6825 const struct GEN8_MI_LOAD_REGISTER_MEM
* restrict values
)
6827 uint32_t *dw
= (uint32_t * restrict
) dst
;
6830 __gen_field(values
->CommandType
, 29, 31) |
6831 __gen_field(values
->MICommandOpcode
, 23, 28) |
6832 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6833 __gen_field(values
->AsyncModeEnable
, 21, 21) |
6834 __gen_field(values
->DwordLength
, 0, 7) |
6838 __gen_offset(values
->RegisterAddress
, 2, 22) |
6845 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
6852 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length 0x00000002
6853 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length_bias 0x00000002
6854 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_header \
6856 .MICommandOpcode = 19, \
6859 struct GEN8_MI_LOAD_SCAN_LINES_EXCL
{
6860 uint32_t CommandType
;
6861 uint32_t MICommandOpcode
;
6862 #define DisplayPlaneA 0
6863 #define DisplayPlaneB 1
6864 #define DisplayPlaneC 4
6865 uint32_t DisplayPlaneSelect
;
6866 uint32_t DwordLength
;
6867 uint32_t StartScanLineNumber
;
6868 uint32_t EndScanLineNumber
;
6872 GEN8_MI_LOAD_SCAN_LINES_EXCL_pack(__gen_user_data
*data
, void * restrict dst
,
6873 const struct GEN8_MI_LOAD_SCAN_LINES_EXCL
* restrict values
)
6875 uint32_t *dw
= (uint32_t * restrict
) dst
;
6878 __gen_field(values
->CommandType
, 29, 31) |
6879 __gen_field(values
->MICommandOpcode
, 23, 28) |
6880 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
6881 __gen_field(values
->DwordLength
, 0, 5) |
6885 __gen_field(values
->StartScanLineNumber
, 16, 28) |
6886 __gen_field(values
->EndScanLineNumber
, 0, 12) |
6891 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length 0x00000002
6892 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length_bias 0x00000002
6893 #define GEN8_MI_LOAD_SCAN_LINES_INCL_header \
6895 .MICommandOpcode = 18, \
6898 struct GEN8_MI_LOAD_SCAN_LINES_INCL
{
6899 uint32_t CommandType
;
6900 uint32_t MICommandOpcode
;
6901 #define DisplayPlaneA 0
6902 #define DisplayPlaneB 1
6903 #define DisplayPlaneC 4
6904 uint32_t DisplayPlaneSelect
;
6905 #define NeverForward 0
6906 #define AlwaysForward 1
6907 #define ConditionallyForward 2
6908 uint32_t ScanLineEventDoneForward
;
6909 uint32_t DwordLength
;
6910 uint32_t StartScanLineNumber
;
6911 uint32_t EndScanLineNumber
;
6915 GEN8_MI_LOAD_SCAN_LINES_INCL_pack(__gen_user_data
*data
, void * restrict dst
,
6916 const struct GEN8_MI_LOAD_SCAN_LINES_INCL
* restrict values
)
6918 uint32_t *dw
= (uint32_t * restrict
) dst
;
6921 __gen_field(values
->CommandType
, 29, 31) |
6922 __gen_field(values
->MICommandOpcode
, 23, 28) |
6923 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
6924 __gen_field(values
->ScanLineEventDoneForward
, 17, 18) |
6925 __gen_field(values
->DwordLength
, 0, 5) |
6929 __gen_field(values
->StartScanLineNumber
, 16, 28) |
6930 __gen_field(values
->EndScanLineNumber
, 0, 12) |
6935 #define GEN8_MI_LOAD_URB_MEM_length 0x00000004
6936 #define GEN8_MI_LOAD_URB_MEM_length_bias 0x00000002
6937 #define GEN8_MI_LOAD_URB_MEM_header \
6939 .MICommandOpcode = 44, \
6942 struct GEN8_MI_LOAD_URB_MEM
{
6943 uint32_t CommandType
;
6944 uint32_t MICommandOpcode
;
6945 uint32_t DwordLength
;
6946 uint32_t URBAddress
;
6947 __gen_address_type MemoryAddress
;
6951 GEN8_MI_LOAD_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6952 const struct GEN8_MI_LOAD_URB_MEM
* restrict values
)
6954 uint32_t *dw
= (uint32_t * restrict
) dst
;
6957 __gen_field(values
->CommandType
, 29, 31) |
6958 __gen_field(values
->MICommandOpcode
, 23, 28) |
6959 __gen_field(values
->DwordLength
, 0, 7) |
6963 __gen_field(values
->URBAddress
, 2, 14) |
6970 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
6977 #define GEN8_MI_MATH_length_bias 0x00000002
6978 #define GEN8_MI_MATH_header \
6980 .MICommandOpcode = 26
6982 struct GEN8_MI_MATH
{
6983 uint32_t CommandType
;
6984 uint32_t MICommandOpcode
;
6985 uint32_t DwordLength
;
6986 uint32_t ALUINSTRUCTION1
;
6987 uint32_t ALUINSTRUCTION2
;
6988 /* variable length fields follow */
6992 GEN8_MI_MATH_pack(__gen_user_data
*data
, void * restrict dst
,
6993 const struct GEN8_MI_MATH
* restrict values
)
6995 uint32_t *dw
= (uint32_t * restrict
) dst
;
6998 __gen_field(values
->CommandType
, 29, 31) |
6999 __gen_field(values
->MICommandOpcode
, 23, 28) |
7000 __gen_field(values
->DwordLength
, 0, 5) |
7004 __gen_field(values
->ALUINSTRUCTION1
, 0, 31) |
7008 __gen_field(values
->ALUINSTRUCTION2
, 0, 31) |
7011 /* variable length fields follow */
7014 #define GEN8_MI_NOOP_length 0x00000001
7015 #define GEN8_MI_NOOP_length_bias 0x00000001
7016 #define GEN8_MI_NOOP_header \
7018 .MICommandOpcode = 0
7020 struct GEN8_MI_NOOP
{
7021 uint32_t CommandType
;
7022 uint32_t MICommandOpcode
;
7023 uint32_t IdentificationNumberRegisterWriteEnable
;
7024 uint32_t IdentificationNumber
;
7028 GEN8_MI_NOOP_pack(__gen_user_data
*data
, void * restrict dst
,
7029 const struct GEN8_MI_NOOP
* restrict values
)
7031 uint32_t *dw
= (uint32_t * restrict
) dst
;
7034 __gen_field(values
->CommandType
, 29, 31) |
7035 __gen_field(values
->MICommandOpcode
, 23, 28) |
7036 __gen_field(values
->IdentificationNumberRegisterWriteEnable
, 22, 22) |
7037 __gen_field(values
->IdentificationNumber
, 0, 21) |
7042 #define GEN8_MI_PREDICATE_length 0x00000001
7043 #define GEN8_MI_PREDICATE_length_bias 0x00000001
7044 #define GEN8_MI_PREDICATE_header \
7046 .MICommandOpcode = 12
7048 struct GEN8_MI_PREDICATE
{
7049 uint32_t CommandType
;
7050 uint32_t MICommandOpcode
;
7054 uint32_t LoadOperation
;
7055 #define COMBINE_SET 0
7056 #define COMBINE_AND 1
7057 #define COMBINE_OR 2
7058 #define COMBINE_XOR 3
7059 uint32_t CombineOperation
;
7060 #define COMPARE_SRCS_EQUAL 2
7061 #define COMPARE_DELTAS_EQUAL 3
7062 uint32_t CompareOperation
;
7066 GEN8_MI_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7067 const struct GEN8_MI_PREDICATE
* restrict values
)
7069 uint32_t *dw
= (uint32_t * restrict
) dst
;
7072 __gen_field(values
->CommandType
, 29, 31) |
7073 __gen_field(values
->MICommandOpcode
, 23, 28) |
7074 __gen_field(values
->LoadOperation
, 6, 7) |
7075 __gen_field(values
->CombineOperation
, 3, 4) |
7076 __gen_field(values
->CompareOperation
, 0, 1) |
7081 #define GEN8_MI_REPORT_HEAD_length 0x00000001
7082 #define GEN8_MI_REPORT_HEAD_length_bias 0x00000001
7083 #define GEN8_MI_REPORT_HEAD_header \
7085 .MICommandOpcode = 7
7087 struct GEN8_MI_REPORT_HEAD
{
7088 uint32_t CommandType
;
7089 uint32_t MICommandOpcode
;
7093 GEN8_MI_REPORT_HEAD_pack(__gen_user_data
*data
, void * restrict dst
,
7094 const struct GEN8_MI_REPORT_HEAD
* restrict values
)
7096 uint32_t *dw
= (uint32_t * restrict
) dst
;
7099 __gen_field(values
->CommandType
, 29, 31) |
7100 __gen_field(values
->MICommandOpcode
, 23, 28) |
7105 #define GEN8_MI_RS_CONTEXT_length 0x00000001
7106 #define GEN8_MI_RS_CONTEXT_length_bias 0x00000001
7107 #define GEN8_MI_RS_CONTEXT_header \
7109 .MICommandOpcode = 15
7111 struct GEN8_MI_RS_CONTEXT
{
7112 uint32_t CommandType
;
7113 uint32_t MICommandOpcode
;
7116 uint32_t ResourceStreamerSave
;
7120 GEN8_MI_RS_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7121 const struct GEN8_MI_RS_CONTEXT
* restrict values
)
7123 uint32_t *dw
= (uint32_t * restrict
) dst
;
7126 __gen_field(values
->CommandType
, 29, 31) |
7127 __gen_field(values
->MICommandOpcode
, 23, 28) |
7128 __gen_field(values
->ResourceStreamerSave
, 0, 0) |
7133 #define GEN8_MI_RS_CONTROL_length 0x00000001
7134 #define GEN8_MI_RS_CONTROL_length_bias 0x00000001
7135 #define GEN8_MI_RS_CONTROL_header \
7137 .MICommandOpcode = 6
7139 struct GEN8_MI_RS_CONTROL
{
7140 uint32_t CommandType
;
7141 uint32_t MICommandOpcode
;
7144 uint32_t ResourceStreamerControl
;
7148 GEN8_MI_RS_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7149 const struct GEN8_MI_RS_CONTROL
* restrict values
)
7151 uint32_t *dw
= (uint32_t * restrict
) dst
;
7154 __gen_field(values
->CommandType
, 29, 31) |
7155 __gen_field(values
->MICommandOpcode
, 23, 28) |
7156 __gen_field(values
->ResourceStreamerControl
, 0, 0) |
7161 #define GEN8_MI_RS_STORE_DATA_IMM_length 0x00000004
7162 #define GEN8_MI_RS_STORE_DATA_IMM_length_bias 0x00000002
7163 #define GEN8_MI_RS_STORE_DATA_IMM_header \
7165 .MICommandOpcode = 43, \
7168 struct GEN8_MI_RS_STORE_DATA_IMM
{
7169 uint32_t CommandType
;
7170 uint32_t MICommandOpcode
;
7171 uint32_t DwordLength
;
7172 __gen_address_type DestinationAddress
;
7173 uint32_t CoreModeEnable
;
7174 uint32_t DataDWord0
;
7178 GEN8_MI_RS_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7179 const struct GEN8_MI_RS_STORE_DATA_IMM
* restrict values
)
7181 uint32_t *dw
= (uint32_t * restrict
) dst
;
7184 __gen_field(values
->CommandType
, 29, 31) |
7185 __gen_field(values
->MICommandOpcode
, 23, 28) |
7186 __gen_field(values
->DwordLength
, 0, 7) |
7190 __gen_field(values
->CoreModeEnable
, 0, 0) |
7194 __gen_combine_address(data
, &dw
[1], values
->DestinationAddress
, dw1
);
7200 __gen_field(values
->DataDWord0
, 0, 31) |
7205 #define GEN8_MI_SET_CONTEXT_length 0x00000002
7206 #define GEN8_MI_SET_CONTEXT_length_bias 0x00000002
7207 #define GEN8_MI_SET_CONTEXT_header \
7209 .MICommandOpcode = 24, \
7212 struct GEN8_MI_SET_CONTEXT
{
7213 uint32_t CommandType
;
7214 uint32_t MICommandOpcode
;
7215 uint32_t DwordLength
;
7216 __gen_address_type LogicalContextAddress
;
7217 uint32_t ReservedMustbe1
;
7218 uint32_t CoreModeEnable
;
7219 uint32_t ResourceStreamerStateSaveEnable
;
7220 uint32_t ResourceStreamerStateRestoreEnable
;
7221 uint32_t ForceRestore
;
7222 uint32_t RestoreInhibit
;
7226 GEN8_MI_SET_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7227 const struct GEN8_MI_SET_CONTEXT
* restrict values
)
7229 uint32_t *dw
= (uint32_t * restrict
) dst
;
7232 __gen_field(values
->CommandType
, 29, 31) |
7233 __gen_field(values
->MICommandOpcode
, 23, 28) |
7234 __gen_field(values
->DwordLength
, 0, 7) |
7238 __gen_field(values
->ReservedMustbe1
, 8, 8) |
7239 __gen_field(values
->CoreModeEnable
, 4, 4) |
7240 __gen_field(values
->ResourceStreamerStateSaveEnable
, 3, 3) |
7241 __gen_field(values
->ResourceStreamerStateRestoreEnable
, 2, 2) |
7242 __gen_field(values
->ForceRestore
, 1, 1) |
7243 __gen_field(values
->RestoreInhibit
, 0, 0) |
7247 __gen_combine_address(data
, &dw
[1], values
->LogicalContextAddress
, dw1
);
7251 #define GEN8_MI_SET_PREDICATE_length 0x00000001
7252 #define GEN8_MI_SET_PREDICATE_length_bias 0x00000001
7253 #define GEN8_MI_SET_PREDICATE_header \
7255 .MICommandOpcode = 1
7257 struct GEN8_MI_SET_PREDICATE
{
7258 uint32_t CommandType
;
7259 uint32_t MICommandOpcode
;
7261 #define NOOPonResult2clear 1
7262 #define NOOPonResult2set 2
7263 #define NOOPonResultclear 3
7264 #define NOOPonResultset 4
7265 #define Executewhenonesliceenabled 5
7266 #define Executewhentwoslicesareenabled 6
7267 #define Executewhenthreeslicesareenabled 7
7268 #define NOOPAlways 15
7269 uint32_t PREDICATEENABLE
;
7273 GEN8_MI_SET_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7274 const struct GEN8_MI_SET_PREDICATE
* restrict values
)
7276 uint32_t *dw
= (uint32_t * restrict
) dst
;
7279 __gen_field(values
->CommandType
, 29, 31) |
7280 __gen_field(values
->MICommandOpcode
, 23, 28) |
7281 __gen_field(values
->PREDICATEENABLE
, 0, 3) |
7286 #define GEN8_MI_STORE_DATA_IMM_length 0x00000004
7287 #define GEN8_MI_STORE_DATA_IMM_length_bias 0x00000002
7288 #define GEN8_MI_STORE_DATA_IMM_header \
7290 .MICommandOpcode = 32, \
7293 struct GEN8_MI_STORE_DATA_IMM
{
7294 uint32_t CommandType
;
7295 uint32_t MICommandOpcode
;
7296 uint32_t UseGlobalGTT
;
7297 uint32_t StoreQword
;
7298 uint32_t DwordLength
;
7299 __gen_address_type Address
;
7300 uint32_t CoreModeEnable
;
7301 uint32_t DataDWord0
;
7302 uint32_t DataDWord1
;
7306 GEN8_MI_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7307 const struct GEN8_MI_STORE_DATA_IMM
* restrict values
)
7309 uint32_t *dw
= (uint32_t * restrict
) dst
;
7312 __gen_field(values
->CommandType
, 29, 31) |
7313 __gen_field(values
->MICommandOpcode
, 23, 28) |
7314 __gen_field(values
->UseGlobalGTT
, 22, 22) |
7315 __gen_field(values
->StoreQword
, 21, 21) |
7316 __gen_field(values
->DwordLength
, 0, 9) |
7320 __gen_field(values
->CoreModeEnable
, 0, 0) |
7324 __gen_combine_address(data
, &dw
[1], values
->Address
, dw1
);
7330 __gen_field(values
->DataDWord0
, 0, 31) |
7334 __gen_field(values
->DataDWord1
, 0, 31) |
7339 #define GEN8_MI_STORE_DATA_INDEX_length 0x00000003
7340 #define GEN8_MI_STORE_DATA_INDEX_length_bias 0x00000002
7341 #define GEN8_MI_STORE_DATA_INDEX_header \
7343 .MICommandOpcode = 33, \
7346 struct GEN8_MI_STORE_DATA_INDEX
{
7347 uint32_t CommandType
;
7348 uint32_t MICommandOpcode
;
7349 uint32_t UsePerProcessHardwareStatusPage
;
7350 uint32_t DwordLength
;
7352 uint32_t DataDWord0
;
7353 uint32_t DataDWord1
;
7357 GEN8_MI_STORE_DATA_INDEX_pack(__gen_user_data
*data
, void * restrict dst
,
7358 const struct GEN8_MI_STORE_DATA_INDEX
* restrict values
)
7360 uint32_t *dw
= (uint32_t * restrict
) dst
;
7363 __gen_field(values
->CommandType
, 29, 31) |
7364 __gen_field(values
->MICommandOpcode
, 23, 28) |
7365 __gen_field(values
->UsePerProcessHardwareStatusPage
, 21, 21) |
7366 __gen_field(values
->DwordLength
, 0, 7) |
7370 __gen_field(values
->Offset
, 2, 11) |
7374 __gen_field(values
->DataDWord0
, 0, 31) |
7378 __gen_field(values
->DataDWord1
, 0, 31) |
7383 #define GEN8_MI_STORE_URB_MEM_length 0x00000004
7384 #define GEN8_MI_STORE_URB_MEM_length_bias 0x00000002
7385 #define GEN8_MI_STORE_URB_MEM_header \
7387 .MICommandOpcode = 45, \
7390 struct GEN8_MI_STORE_URB_MEM
{
7391 uint32_t CommandType
;
7392 uint32_t MICommandOpcode
;
7393 uint32_t DwordLength
;
7394 uint32_t URBAddress
;
7395 __gen_address_type MemoryAddress
;
7399 GEN8_MI_STORE_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
7400 const struct GEN8_MI_STORE_URB_MEM
* restrict values
)
7402 uint32_t *dw
= (uint32_t * restrict
) dst
;
7405 __gen_field(values
->CommandType
, 29, 31) |
7406 __gen_field(values
->MICommandOpcode
, 23, 28) |
7407 __gen_field(values
->DwordLength
, 0, 7) |
7411 __gen_field(values
->URBAddress
, 2, 14) |
7418 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7425 #define GEN8_MI_SUSPEND_FLUSH_length 0x00000001
7426 #define GEN8_MI_SUSPEND_FLUSH_length_bias 0x00000001
7427 #define GEN8_MI_SUSPEND_FLUSH_header \
7429 .MICommandOpcode = 11
7431 struct GEN8_MI_SUSPEND_FLUSH
{
7432 uint32_t CommandType
;
7433 uint32_t MICommandOpcode
;
7434 uint32_t SuspendFlush
;
7438 GEN8_MI_SUSPEND_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
7439 const struct GEN8_MI_SUSPEND_FLUSH
* restrict values
)
7441 uint32_t *dw
= (uint32_t * restrict
) dst
;
7444 __gen_field(values
->CommandType
, 29, 31) |
7445 __gen_field(values
->MICommandOpcode
, 23, 28) |
7446 __gen_field(values
->SuspendFlush
, 0, 0) |
7451 #define GEN8_MI_TOPOLOGY_FILTER_length 0x00000001
7452 #define GEN8_MI_TOPOLOGY_FILTER_length_bias 0x00000001
7453 #define GEN8_MI_TOPOLOGY_FILTER_header \
7455 .MICommandOpcode = 13
7457 struct GEN8_MI_TOPOLOGY_FILTER
{
7458 uint32_t CommandType
;
7459 uint32_t MICommandOpcode
;
7460 uint32_t TopologyFilterValue
;
7464 GEN8_MI_TOPOLOGY_FILTER_pack(__gen_user_data
*data
, void * restrict dst
,
7465 const struct GEN8_MI_TOPOLOGY_FILTER
* restrict values
)
7467 uint32_t *dw
= (uint32_t * restrict
) dst
;
7470 __gen_field(values
->CommandType
, 29, 31) |
7471 __gen_field(values
->MICommandOpcode
, 23, 28) |
7472 __gen_field(values
->TopologyFilterValue
, 0, 5) |
7477 #define GEN8_MI_UPDATE_GTT_length_bias 0x00000002
7478 #define GEN8_MI_UPDATE_GTT_header \
7480 .MICommandOpcode = 35
7482 struct GEN8_MI_UPDATE_GTT
{
7483 uint32_t CommandType
;
7484 uint32_t MICommandOpcode
;
7485 uint32_t DwordLength
;
7486 __gen_address_type EntryAddress
;
7487 /* variable length fields follow */
7491 GEN8_MI_UPDATE_GTT_pack(__gen_user_data
*data
, void * restrict dst
,
7492 const struct GEN8_MI_UPDATE_GTT
* restrict values
)
7494 uint32_t *dw
= (uint32_t * restrict
) dst
;
7497 __gen_field(values
->CommandType
, 29, 31) |
7498 __gen_field(values
->MICommandOpcode
, 23, 28) |
7499 __gen_field(values
->DwordLength
, 0, 9) |
7506 __gen_combine_address(data
, &dw
[1], values
->EntryAddress
, dw1
);
7508 /* variable length fields follow */
7511 #define GEN8_MI_URB_ATOMIC_ALLOC_length 0x00000001
7512 #define GEN8_MI_URB_ATOMIC_ALLOC_length_bias 0x00000001
7513 #define GEN8_MI_URB_ATOMIC_ALLOC_header \
7515 .MICommandOpcode = 9
7517 struct GEN8_MI_URB_ATOMIC_ALLOC
{
7518 uint32_t CommandType
;
7519 uint32_t MICommandOpcode
;
7520 uint32_t URBAtomicStorageOffset
;
7521 uint32_t URBAtomicStorageSize
;
7525 GEN8_MI_URB_ATOMIC_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
7526 const struct GEN8_MI_URB_ATOMIC_ALLOC
* restrict values
)
7528 uint32_t *dw
= (uint32_t * restrict
) dst
;
7531 __gen_field(values
->CommandType
, 29, 31) |
7532 __gen_field(values
->MICommandOpcode
, 23, 28) |
7533 __gen_field(values
->URBAtomicStorageOffset
, 12, 19) |
7534 __gen_field(values
->URBAtomicStorageSize
, 0, 8) |
7539 #define GEN8_MI_URB_CLEAR_length 0x00000002
7540 #define GEN8_MI_URB_CLEAR_length_bias 0x00000002
7541 #define GEN8_MI_URB_CLEAR_header \
7543 .MICommandOpcode = 25, \
7546 struct GEN8_MI_URB_CLEAR
{
7547 uint32_t CommandType
;
7548 uint32_t MICommandOpcode
;
7549 uint32_t DwordLength
;
7550 uint32_t URBClearLength
;
7551 uint32_t URBAddress
;
7555 GEN8_MI_URB_CLEAR_pack(__gen_user_data
*data
, void * restrict dst
,
7556 const struct GEN8_MI_URB_CLEAR
* restrict values
)
7558 uint32_t *dw
= (uint32_t * restrict
) dst
;
7561 __gen_field(values
->CommandType
, 29, 31) |
7562 __gen_field(values
->MICommandOpcode
, 23, 28) |
7563 __gen_field(values
->DwordLength
, 0, 7) |
7567 __gen_field(values
->URBClearLength
, 16, 29) |
7568 __gen_offset(values
->URBAddress
, 0, 14) |
7573 #define GEN8_MI_USER_INTERRUPT_length 0x00000001
7574 #define GEN8_MI_USER_INTERRUPT_length_bias 0x00000001
7575 #define GEN8_MI_USER_INTERRUPT_header \
7577 .MICommandOpcode = 2
7579 struct GEN8_MI_USER_INTERRUPT
{
7580 uint32_t CommandType
;
7581 uint32_t MICommandOpcode
;
7585 GEN8_MI_USER_INTERRUPT_pack(__gen_user_data
*data
, void * restrict dst
,
7586 const struct GEN8_MI_USER_INTERRUPT
* restrict values
)
7588 uint32_t *dw
= (uint32_t * restrict
) dst
;
7591 __gen_field(values
->CommandType
, 29, 31) |
7592 __gen_field(values
->MICommandOpcode
, 23, 28) |
7597 #define GEN8_MI_WAIT_FOR_EVENT_length 0x00000001
7598 #define GEN8_MI_WAIT_FOR_EVENT_length_bias 0x00000001
7599 #define GEN8_MI_WAIT_FOR_EVENT_header \
7601 .MICommandOpcode = 3
7603 struct GEN8_MI_WAIT_FOR_EVENT
{
7604 uint32_t CommandType
;
7605 uint32_t MICommandOpcode
;
7606 uint32_t DisplayPipeCVerticalBlankWaitEnable
;
7607 uint32_t DisplaySpriteCFlipPendingWaitEnable
;
7608 uint32_t DisplayPlaneCFlipPendingWaitEnable
;
7609 uint32_t DisplayPipeCScanLineWaitEnable
;
7610 uint32_t DisplayPipeBVerticalBlankWaitEnable
;
7611 uint32_t DisplaySpriteBFlipPendingWaitEnable
;
7612 uint32_t DisplayPlaneBFlipPendingWaitEnable
;
7613 uint32_t DisplayPipeBScanLineWaitEnable
;
7614 uint32_t DisplayPipeAVerticalBlankWaitEnable
;
7615 uint32_t DisplaySpriteAFlipPendingWaitEnable
;
7616 uint32_t DisplayPlaneAFlipPendingWaitEnable
;
7617 uint32_t DisplayPipeAScanLineWaitEnable
;
7621 GEN8_MI_WAIT_FOR_EVENT_pack(__gen_user_data
*data
, void * restrict dst
,
7622 const struct GEN8_MI_WAIT_FOR_EVENT
* restrict values
)
7624 uint32_t *dw
= (uint32_t * restrict
) dst
;
7627 __gen_field(values
->CommandType
, 29, 31) |
7628 __gen_field(values
->MICommandOpcode
, 23, 28) |
7629 __gen_field(values
->DisplayPipeCVerticalBlankWaitEnable
, 21, 21) |
7630 __gen_field(values
->DisplaySpriteCFlipPendingWaitEnable
, 20, 20) |
7631 __gen_field(values
->DisplayPlaneCFlipPendingWaitEnable
, 15, 15) |
7632 __gen_field(values
->DisplayPipeCScanLineWaitEnable
, 14, 14) |
7633 __gen_field(values
->DisplayPipeBVerticalBlankWaitEnable
, 11, 11) |
7634 __gen_field(values
->DisplaySpriteBFlipPendingWaitEnable
, 10, 10) |
7635 __gen_field(values
->DisplayPlaneBFlipPendingWaitEnable
, 9, 9) |
7636 __gen_field(values
->DisplayPipeBScanLineWaitEnable
, 8, 8) |
7637 __gen_field(values
->DisplayPipeAVerticalBlankWaitEnable
, 3, 3) |
7638 __gen_field(values
->DisplaySpriteAFlipPendingWaitEnable
, 2, 2) |
7639 __gen_field(values
->DisplayPlaneAFlipPendingWaitEnable
, 1, 1) |
7640 __gen_field(values
->DisplayPipeAScanLineWaitEnable
, 0, 0) |
7645 #define GEN8_PIPE_CONTROL_length 0x00000006
7646 #define GEN8_PIPE_CONTROL_length_bias 0x00000002
7647 #define GEN8_PIPE_CONTROL_header \
7649 .CommandSubType = 3, \
7650 ._3DCommandOpcode = 2, \
7651 ._3DCommandSubOpcode = 0, \
7654 struct GEN8_PIPE_CONTROL
{
7655 uint32_t CommandType
;
7656 uint32_t CommandSubType
;
7657 uint32_t _3DCommandOpcode
;
7658 uint32_t _3DCommandSubOpcode
;
7659 uint32_t DwordLength
;
7662 uint32_t DestinationAddressType
;
7663 #define NoLRIOperation 0
7664 #define MMIOWriteImmediateData 1
7665 uint32_t LRIPostSyncOperation
;
7666 uint32_t StoreDataIndex
;
7667 uint32_t CommandStreamerStallEnable
;
7670 uint32_t GlobalSnapshotCountReset
;
7671 uint32_t TLBInvalidate
;
7672 uint32_t GenericMediaStateClear
;
7674 #define WriteImmediateData 1
7675 #define WritePSDepthCount 2
7676 #define WriteTimestamp 3
7677 uint32_t PostSyncOperation
;
7678 uint32_t DepthStallEnable
;
7679 #define DisableFlush 0
7680 #define EnableFlush 1
7681 uint32_t RenderTargetCacheFlushEnable
;
7682 uint32_t InstructionCacheInvalidateEnable
;
7683 uint32_t TextureCacheInvalidationEnable
;
7684 uint32_t IndirectStatePointersDisable
;
7685 uint32_t NotifyEnable
;
7686 uint32_t PipeControlFlushEnable
;
7687 uint32_t DCFlushEnable
;
7688 uint32_t VFCacheInvalidationEnable
;
7689 uint32_t ConstantCacheInvalidationEnable
;
7690 uint32_t StateCacheInvalidationEnable
;
7691 uint32_t StallAtPixelScoreboard
;
7692 #define FlushDisabled 0
7693 #define FlushEnabled 1
7694 uint32_t DepthCacheFlushEnable
;
7695 __gen_address_type Address
;
7696 __gen_address_type AddressHigh
;
7697 uint64_t ImmediateData
;
7701 GEN8_PIPE_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7702 const struct GEN8_PIPE_CONTROL
* restrict values
)
7704 uint32_t *dw
= (uint32_t * restrict
) dst
;
7707 __gen_field(values
->CommandType
, 29, 31) |
7708 __gen_field(values
->CommandSubType
, 27, 28) |
7709 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
7710 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
7711 __gen_field(values
->DwordLength
, 0, 7) |
7715 __gen_field(values
->DestinationAddressType
, 24, 24) |
7716 __gen_field(values
->LRIPostSyncOperation
, 23, 23) |
7717 __gen_field(values
->StoreDataIndex
, 21, 21) |
7718 __gen_field(values
->CommandStreamerStallEnable
, 20, 20) |
7719 __gen_field(values
->GlobalSnapshotCountReset
, 19, 19) |
7720 __gen_field(values
->TLBInvalidate
, 18, 18) |
7721 __gen_field(values
->GenericMediaStateClear
, 16, 16) |
7722 __gen_field(values
->PostSyncOperation
, 14, 15) |
7723 __gen_field(values
->DepthStallEnable
, 13, 13) |
7724 __gen_field(values
->RenderTargetCacheFlushEnable
, 12, 12) |
7725 __gen_field(values
->InstructionCacheInvalidateEnable
, 11, 11) |
7726 __gen_field(values
->TextureCacheInvalidationEnable
, 10, 10) |
7727 __gen_field(values
->IndirectStatePointersDisable
, 9, 9) |
7728 __gen_field(values
->NotifyEnable
, 8, 8) |
7729 __gen_field(values
->PipeControlFlushEnable
, 7, 7) |
7730 __gen_field(values
->DCFlushEnable
, 5, 5) |
7731 __gen_field(values
->VFCacheInvalidationEnable
, 4, 4) |
7732 __gen_field(values
->ConstantCacheInvalidationEnable
, 3, 3) |
7733 __gen_field(values
->StateCacheInvalidationEnable
, 2, 2) |
7734 __gen_field(values
->StallAtPixelScoreboard
, 1, 1) |
7735 __gen_field(values
->DepthCacheFlushEnable
, 0, 0) |
7742 __gen_combine_address(data
, &dw
[2], values
->Address
, dw2
);
7748 __gen_combine_address(data
, &dw
[3], values
->AddressHigh
, dw3
);
7751 __gen_field(values
->ImmediateData
, 0, 63) |
7759 #define GEN8_3DSTATE_CONSTANT_BODY_length 0x0000000a
7761 #define GEN8_BINDING_TABLE_EDIT_ENTRY_length 0x00000001
7763 #define GEN8_GATHER_CONSTANT_ENTRY_length 0x00000001
7765 #define GEN8_VERTEX_BUFFER_STATE_length 0x00000004
7767 #define GEN8_VERTEX_ELEMENT_STATE_length 0x00000002
7769 #define GEN8_SO_DECL_ENTRY_length 0x00000002
7771 #define GEN8_SO_DECL_length 0x00000001
7773 #define GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_length 0x00000001
7775 #define GEN8_SCISSOR_RECT_length 0x00000002
7777 struct GEN8_SCISSOR_RECT
{
7778 uint32_t ScissorRectangleYMin
;
7779 uint32_t ScissorRectangleXMin
;
7780 uint32_t ScissorRectangleYMax
;
7781 uint32_t ScissorRectangleXMax
;
7785 GEN8_SCISSOR_RECT_pack(__gen_user_data
*data
, void * restrict dst
,
7786 const struct GEN8_SCISSOR_RECT
* restrict values
)
7788 uint32_t *dw
= (uint32_t * restrict
) dst
;
7791 __gen_field(values
->ScissorRectangleYMin
, 16, 31) |
7792 __gen_field(values
->ScissorRectangleXMin
, 0, 15) |
7796 __gen_field(values
->ScissorRectangleYMax
, 16, 31) |
7797 __gen_field(values
->ScissorRectangleXMax
, 0, 15) |
7802 #define GEN8_SF_CLIP_VIEWPORT_length 0x00000010
7804 struct GEN8_SF_CLIP_VIEWPORT
{
7805 float ViewportMatrixElementm00
;
7806 float ViewportMatrixElementm11
;
7807 float ViewportMatrixElementm22
;
7808 float ViewportMatrixElementm30
;
7809 float ViewportMatrixElementm31
;
7810 float ViewportMatrixElementm32
;
7811 float XMinClipGuardband
;
7812 float XMaxClipGuardband
;
7813 float YMinClipGuardband
;
7814 float YMaxClipGuardband
;
7822 GEN8_SF_CLIP_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
7823 const struct GEN8_SF_CLIP_VIEWPORT
* restrict values
)
7825 uint32_t *dw
= (uint32_t * restrict
) dst
;
7828 __gen_float(values
->ViewportMatrixElementm00
) |
7832 __gen_float(values
->ViewportMatrixElementm11
) |
7836 __gen_float(values
->ViewportMatrixElementm22
) |
7840 __gen_float(values
->ViewportMatrixElementm30
) |
7844 __gen_float(values
->ViewportMatrixElementm31
) |
7848 __gen_float(values
->ViewportMatrixElementm32
) |
7858 __gen_float(values
->XMinClipGuardband
) |
7862 __gen_float(values
->XMaxClipGuardband
) |
7866 __gen_float(values
->YMinClipGuardband
) |
7870 __gen_float(values
->YMaxClipGuardband
) |
7874 __gen_float(values
->XMinViewPort
) |
7878 __gen_float(values
->XMaxViewPort
) |
7882 __gen_float(values
->YMinViewPort
) |
7886 __gen_float(values
->YMaxViewPort
) |
7891 #define GEN8_BLEND_STATE_length 0x00000011
7893 struct GEN8_BLEND_STATE_ENTRY
{
7894 uint32_t LogicOpEnable
;
7895 uint32_t LogicOpFunction
;
7896 uint32_t PreBlendSourceOnlyClampEnable
;
7897 #define COLORCLAMP_UNORM 0
7898 #define COLORCLAMP_SNORM 1
7899 #define COLORCLAMP_RTFORMAT 2
7900 uint32_t ColorClampRange
;
7901 uint32_t PreBlendColorClampEnable
;
7902 uint32_t PostBlendColorClampEnable
;
7903 uint32_t ColorBufferBlendEnable
;
7904 uint32_t SourceBlendFactor
;
7905 uint32_t DestinationBlendFactor
;
7906 uint32_t ColorBlendFunction
;
7907 uint32_t SourceAlphaBlendFactor
;
7908 uint32_t DestinationAlphaBlendFactor
;
7909 uint32_t AlphaBlendFunction
;
7910 uint32_t WriteDisableAlpha
;
7911 uint32_t WriteDisableRed
;
7912 uint32_t WriteDisableGreen
;
7913 uint32_t WriteDisableBlue
;
7917 GEN8_BLEND_STATE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
7918 const struct GEN8_BLEND_STATE_ENTRY
* restrict values
)
7920 uint32_t *dw
= (uint32_t * restrict
) dst
;
7923 __gen_field(values
->LogicOpEnable
, 63, 63) |
7924 __gen_field(values
->LogicOpFunction
, 59, 62) |
7925 __gen_field(values
->PreBlendSourceOnlyClampEnable
, 36, 36) |
7926 __gen_field(values
->ColorClampRange
, 34, 35) |
7927 __gen_field(values
->PreBlendColorClampEnable
, 33, 33) |
7928 __gen_field(values
->PostBlendColorClampEnable
, 32, 32) |
7929 __gen_field(values
->ColorBufferBlendEnable
, 31, 31) |
7930 __gen_field(values
->SourceBlendFactor
, 26, 30) |
7931 __gen_field(values
->DestinationBlendFactor
, 21, 25) |
7932 __gen_field(values
->ColorBlendFunction
, 18, 20) |
7933 __gen_field(values
->SourceAlphaBlendFactor
, 13, 17) |
7934 __gen_field(values
->DestinationAlphaBlendFactor
, 8, 12) |
7935 __gen_field(values
->AlphaBlendFunction
, 5, 7) |
7936 __gen_field(values
->WriteDisableAlpha
, 3, 3) |
7937 __gen_field(values
->WriteDisableRed
, 2, 2) |
7938 __gen_field(values
->WriteDisableGreen
, 1, 1) |
7939 __gen_field(values
->WriteDisableBlue
, 0, 0) |
7944 struct GEN8_BLEND_STATE
{
7945 uint32_t AlphaToCoverageEnable
;
7946 uint32_t IndependentAlphaBlendEnable
;
7947 uint32_t AlphaToOneEnable
;
7948 uint32_t AlphaToCoverageDitherEnable
;
7949 uint32_t AlphaTestEnable
;
7950 uint32_t AlphaTestFunction
;
7951 uint32_t ColorDitherEnable
;
7952 uint32_t XDitherOffset
;
7953 uint32_t YDitherOffset
;
7954 struct GEN8_BLEND_STATE_ENTRY Entry
;
7958 GEN8_BLEND_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
7959 const struct GEN8_BLEND_STATE
* restrict values
)
7961 uint32_t *dw
= (uint32_t * restrict
) dst
;
7964 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
7965 __gen_field(values
->IndependentAlphaBlendEnable
, 30, 30) |
7966 __gen_field(values
->AlphaToOneEnable
, 29, 29) |
7967 __gen_field(values
->AlphaToCoverageDitherEnable
, 28, 28) |
7968 __gen_field(values
->AlphaTestEnable
, 27, 27) |
7969 __gen_field(values
->AlphaTestFunction
, 24, 26) |
7970 __gen_field(values
->ColorDitherEnable
, 23, 23) |
7971 __gen_field(values
->XDitherOffset
, 21, 22) |
7972 __gen_field(values
->YDitherOffset
, 19, 20) |
7975 GEN8_BLEND_STATE_ENTRY_pack(data
, &dw
[1], &values
->Entry
);
7978 #define GEN8_BLEND_STATE_ENTRY_length 0x00000001
7980 #define GEN8_CC_VIEWPORT_length 0x00000002
7982 struct GEN8_CC_VIEWPORT
{
7988 GEN8_CC_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
7989 const struct GEN8_CC_VIEWPORT
* restrict values
)
7991 uint32_t *dw
= (uint32_t * restrict
) dst
;
7994 __gen_float(values
->MinimumDepth
) |
7998 __gen_float(values
->MaximumDepth
) |
8003 #define GEN8_COLOR_CALC_STATE_length 0x00000006
8005 struct GEN8_COLOR_CALC_STATE
{
8006 uint32_t StencilReferenceValue
;
8007 uint32_t BackFaceStencilReferenceValue
;
8009 #define NotCancelled 1
8010 uint32_t RoundDisableFunctionDisable
;
8011 #define ALPHATEST_UNORM8 0
8012 #define ALPHATEST_FLOAT32 1
8013 uint32_t AlphaTestFormat
;
8014 uint32_t AlphaReferenceValueAsUNORM8
;
8015 float AlphaReferenceValueAsFLOAT32
;
8016 float BlendConstantColorRed
;
8017 float BlendConstantColorGreen
;
8018 float BlendConstantColorBlue
;
8019 float BlendConstantColorAlpha
;
8023 GEN8_COLOR_CALC_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8024 const struct GEN8_COLOR_CALC_STATE
* restrict values
)
8026 uint32_t *dw
= (uint32_t * restrict
) dst
;
8029 __gen_field(values
->StencilReferenceValue
, 24, 31) |
8030 __gen_field(values
->BackFaceStencilReferenceValue
, 16, 23) |
8031 __gen_field(values
->RoundDisableFunctionDisable
, 15, 15) |
8032 __gen_field(values
->AlphaTestFormat
, 0, 0) |
8036 __gen_field(values
->AlphaReferenceValueAsUNORM8
, 0, 31) |
8037 __gen_float(values
->AlphaReferenceValueAsFLOAT32
) |
8041 __gen_float(values
->BlendConstantColorRed
) |
8045 __gen_float(values
->BlendConstantColorGreen
) |
8049 __gen_float(values
->BlendConstantColorBlue
) |
8053 __gen_float(values
->BlendConstantColorAlpha
) |
8058 #define GEN8_MEMORY_OBJECT_CONTROL_STATE_length 0x00000001
8060 #define GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_length 0x00000001
8062 struct GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS
{
8063 #define UseCacheabilityControlsfrompagetableUCwithFenceifcoherentcycle 0
8064 #define UncacheableUCnoncacheable 1
8065 #define WritethroughWT 2
8066 #define WritebackWB 3
8067 uint32_t MemoryTypeLLCeLLCCacheabilityControlLeLLCCC
;
8070 #define LLCeLLCAllowed 2
8071 #define L3LLCeLLCAllowed 3
8072 uint32_t TargetCacheTC
;
8073 uint32_t EncryptedData
;
8074 #define PoorChance 3
8075 #define NormalChance 2
8076 #define BetterChance 1
8077 #define BestChance 0
8078 uint32_t AgeforQUADLRUAGE
;
8082 GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_pack(__gen_user_data
*data
, void * restrict dst
,
8083 const struct GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS
* restrict values
)
8085 uint32_t *dw
= (uint32_t * restrict
) dst
;
8088 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControlLeLLCCC
, 5, 6) |
8089 __gen_field(values
->TargetCacheTC
, 3, 4) |
8090 __gen_field(values
->EncryptedData
, 2, 2) |
8091 __gen_field(values
->AgeforQUADLRUAGE
, 0, 1) |
8096 #define GEN8_INTERFACE_DESCRIPTOR_DATA_length 0x00000008
8098 struct GEN8_INTERFACE_DESCRIPTOR_DATA
{
8099 uint32_t KernelStartPointer
;
8100 uint32_t KernelStartPointerHigh
;
8102 #define SetByKernel 1
8103 uint32_t DenormMode
;
8106 uint32_t SingleProgramFlow
;
8107 #define NormalPriority 0
8108 #define HighPriority 1
8109 uint32_t ThreadPriority
;
8112 uint32_t FloatingPointMode
;
8113 uint32_t IllegalOpcodeExceptionEnable
;
8114 uint32_t MaskStackExceptionEnable
;
8115 uint32_t SoftwareExceptionEnable
;
8116 uint32_t SamplerStatePointer
;
8117 #define Nosamplersused 0
8118 #define Between1and4samplersused 1
8119 #define Between5and8samplersused 2
8120 #define Between9and12samplersused 3
8121 #define Between13and16samplersused 4
8122 uint32_t SamplerCount
;
8123 uint32_t BindingTablePointer
;
8124 uint32_t BindingTableEntryCount
;
8125 uint32_t ConstantIndirectURBEntryReadLength
;
8126 uint32_t ConstantURBEntryReadOffset
;
8131 uint32_t RoundingMode
;
8132 uint32_t BarrierEnable
;
8136 #define Encodes16k 4
8137 #define Encodes32k 8
8138 #define Encodes64k 16
8139 uint32_t SharedLocalMemorySize
;
8140 uint32_t NumberofThreadsinGPGPUThreadGroup
;
8141 uint32_t CrossThreadConstantDataReadLength
;
8145 GEN8_INTERFACE_DESCRIPTOR_DATA_pack(__gen_user_data
*data
, void * restrict dst
,
8146 const struct GEN8_INTERFACE_DESCRIPTOR_DATA
* restrict values
)
8148 uint32_t *dw
= (uint32_t * restrict
) dst
;
8151 __gen_offset(values
->KernelStartPointer
, 6, 31) |
8155 __gen_offset(values
->KernelStartPointerHigh
, 0, 15) |
8159 __gen_field(values
->DenormMode
, 19, 19) |
8160 __gen_field(values
->SingleProgramFlow
, 18, 18) |
8161 __gen_field(values
->ThreadPriority
, 17, 17) |
8162 __gen_field(values
->FloatingPointMode
, 16, 16) |
8163 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
8164 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
8165 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
8169 __gen_offset(values
->SamplerStatePointer
, 5, 31) |
8170 __gen_field(values
->SamplerCount
, 2, 4) |
8174 __gen_offset(values
->BindingTablePointer
, 5, 15) |
8175 __gen_field(values
->BindingTableEntryCount
, 0, 4) |
8179 __gen_field(values
->ConstantIndirectURBEntryReadLength
, 16, 31) |
8180 __gen_field(values
->ConstantURBEntryReadOffset
, 0, 15) |
8184 __gen_field(values
->RoundingMode
, 22, 23) |
8185 __gen_field(values
->BarrierEnable
, 21, 21) |
8186 __gen_field(values
->SharedLocalMemorySize
, 16, 20) |
8187 __gen_field(values
->NumberofThreadsinGPGPUThreadGroup
, 0, 9) |
8191 __gen_field(values
->CrossThreadConstantDataReadLength
, 0, 7) |
8196 #define GEN8_PALETTE_ENTRY_length 0x00000001
8198 #define GEN8_RENDER_SURFACE_STATE_length 0x00000010
8200 struct GEN8_RENDER_SURFACE_STATE
{
8201 #define SURFTYPE_1D 0
8202 #define SURFTYPE_2D 1
8203 #define SURFTYPE_3D 2
8204 #define SURFTYPE_CUBE 3
8205 #define SURFTYPE_BUFFER 4
8206 #define SURFTYPE_STRBUF 5
8207 #define SURFTYPE_NULL 7
8208 uint32_t SurfaceType
;
8209 uint32_t SurfaceArray
;
8210 uint32_t SurfaceFormat
;
8214 uint32_t SurfaceVerticalAlignment
;
8218 uint32_t SurfaceHorizontalAlignment
;
8224 uint32_t VerticalLineStride
;
8225 uint32_t VerticalLineStrideOffset
;
8226 uint32_t SamplerL2BypassModeDisable
;
8227 #define WriteOnlyCache 0
8228 #define ReadWriteCache 1
8229 uint32_t RenderCacheReadWriteMode
;
8230 #define NORMAL_MODE 0
8231 #define PROGRESSIVE_FRAME 2
8232 #define INTERLACED_FRAME 3
8233 uint32_t MediaBoundaryPixelMode
;
8234 uint32_t CubeFaceEnablePositiveZ
;
8235 uint32_t CubeFaceEnableNegativeZ
;
8236 uint32_t CubeFaceEnablePositiveY
;
8237 uint32_t CubeFaceEnableNegativeY
;
8238 uint32_t CubeFaceEnablePositiveX
;
8239 uint32_t CubeFaceEnableNegativeX
;
8240 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
8241 uint32_t BaseMipLevel
;
8242 uint32_t SurfaceQPitch
;
8246 uint32_t SurfacePitch
;
8250 uint32_t RenderTargetAndSampleUnormRotation
;
8251 uint32_t MinimumArrayElement
;
8252 uint32_t RenderTargetViewExtent
;
8254 #define DEPTH_STENCIL 1
8255 uint32_t MultisampledSurfaceStorageFormat
;
8256 #define MULTISAMPLECOUNT_1 0
8257 #define MULTISAMPLECOUNT_2 1
8258 #define MULTISAMPLECOUNT_4 2
8259 #define MULTISAMPLECOUNT_8 3
8260 uint32_t NumberofMultisamples
;
8261 uint32_t MultisamplePositionPaletteIndex
;
8264 uint32_t EWADisableForCube
;
8265 #define GPUcoherent 0
8266 #define IAcoherent 1
8267 uint32_t CoherencyType
;
8268 uint32_t SurfaceMinLOD
;
8269 uint32_t MIPCountLOD
;
8270 uint32_t AuxiliarySurfaceQPitch
;
8271 uint32_t AuxiliarySurfacePitch
;
8274 #define AUX_APPEND 2
8276 uint32_t AuxiliarySurfaceMode
;
8277 uint32_t SeparateUVPlaneEnable
;
8278 uint32_t XOffsetforUorUVPlane
;
8279 uint32_t YOffsetforUorUVPlane
;
8280 uint32_t RedClearColor
;
8281 uint32_t GreenClearColor
;
8282 uint32_t BlueClearColor
;
8283 uint32_t AlphaClearColor
;
8284 uint32_t ShaderChannelSelectRed
;
8285 uint32_t ShaderChannelSelectGreen
;
8286 uint32_t ShaderChannelSelectBlue
;
8287 uint32_t ShaderChannelSelectAlpha
;
8288 uint32_t ResourceMinLOD
;
8289 __gen_address_type SurfaceBaseAddress
;
8290 uint32_t XOffsetforVPlane
;
8291 uint32_t YOffsetforVPlane
;
8292 uint32_t AuxiliaryTableIndexforMediaCompressedSurface
;
8293 __gen_address_type AuxiliarySurfaceBaseAddress
;
8297 GEN8_RENDER_SURFACE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8298 const struct GEN8_RENDER_SURFACE_STATE
* restrict values
)
8300 uint32_t *dw
= (uint32_t * restrict
) dst
;
8303 __gen_field(values
->SurfaceType
, 29, 31) |
8304 __gen_field(values
->SurfaceArray
, 28, 28) |
8305 __gen_field(values
->SurfaceFormat
, 18, 26) |
8306 __gen_field(values
->SurfaceVerticalAlignment
, 16, 17) |
8307 __gen_field(values
->SurfaceHorizontalAlignment
, 14, 15) |
8308 __gen_field(values
->TileMode
, 12, 13) |
8309 __gen_field(values
->VerticalLineStride
, 11, 11) |
8310 __gen_field(values
->VerticalLineStrideOffset
, 10, 10) |
8311 __gen_field(values
->SamplerL2BypassModeDisable
, 9, 9) |
8312 __gen_field(values
->RenderCacheReadWriteMode
, 8, 8) |
8313 __gen_field(values
->MediaBoundaryPixelMode
, 6, 7) |
8314 __gen_field(values
->CubeFaceEnablePositiveZ
, 0, 0) |
8315 __gen_field(values
->CubeFaceEnableNegativeZ
, 1, 1) |
8316 __gen_field(values
->CubeFaceEnablePositiveY
, 2, 2) |
8317 __gen_field(values
->CubeFaceEnableNegativeY
, 3, 3) |
8318 __gen_field(values
->CubeFaceEnablePositiveX
, 4, 4) |
8319 __gen_field(values
->CubeFaceEnableNegativeX
, 5, 5) |
8322 uint32_t dw_MemoryObjectControlState
;
8323 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
8325 __gen_field(dw_MemoryObjectControlState
, 24, 30) |
8326 __gen_field(values
->BaseMipLevel
, 19, 23) |
8327 __gen_field(values
->SurfaceQPitch
, 0, 14) |
8331 __gen_field(values
->Height
, 16, 29) |
8332 __gen_field(values
->Width
, 0, 13) |
8336 __gen_field(values
->Depth
, 21, 31) |
8337 __gen_field(values
->SurfacePitch
, 0, 17) |
8341 __gen_field(values
->RenderTargetAndSampleUnormRotation
, 29, 30) |
8342 __gen_field(values
->MinimumArrayElement
, 18, 28) |
8343 __gen_field(values
->RenderTargetViewExtent
, 7, 17) |
8344 __gen_field(values
->MultisampledSurfaceStorageFormat
, 6, 6) |
8345 __gen_field(values
->NumberofMultisamples
, 3, 5) |
8346 __gen_field(values
->MultisamplePositionPaletteIndex
, 0, 2) |
8350 __gen_offset(values
->XOffset
, 25, 31) |
8351 __gen_offset(values
->YOffset
, 21, 23) |
8352 __gen_field(values
->EWADisableForCube
, 20, 20) |
8353 __gen_field(values
->CoherencyType
, 14, 14) |
8354 __gen_field(values
->SurfaceMinLOD
, 4, 7) |
8355 __gen_field(values
->MIPCountLOD
, 0, 3) |
8359 __gen_field(values
->AuxiliarySurfaceQPitch
, 16, 30) |
8360 __gen_field(values
->AuxiliarySurfacePitch
, 3, 11) |
8361 __gen_field(values
->AuxiliarySurfaceMode
, 0, 2) |
8362 __gen_field(values
->SeparateUVPlaneEnable
, 31, 31) |
8363 __gen_field(values
->XOffsetforUorUVPlane
, 16, 29) |
8364 __gen_field(values
->YOffsetforUorUVPlane
, 0, 13) |
8368 __gen_field(values
->RedClearColor
, 31, 31) |
8369 __gen_field(values
->GreenClearColor
, 30, 30) |
8370 __gen_field(values
->BlueClearColor
, 29, 29) |
8371 __gen_field(values
->AlphaClearColor
, 28, 28) |
8372 __gen_field(values
->ShaderChannelSelectRed
, 25, 27) |
8373 __gen_field(values
->ShaderChannelSelectGreen
, 22, 24) |
8374 __gen_field(values
->ShaderChannelSelectBlue
, 19, 21) |
8375 __gen_field(values
->ShaderChannelSelectAlpha
, 16, 18) |
8376 __gen_field(values
->ResourceMinLOD
, 0, 11) |
8383 __gen_combine_address(data
, &dw
[8], values
->SurfaceBaseAddress
, dw8
);
8389 __gen_field(values
->XOffsetforVPlane
, 48, 61) |
8390 __gen_field(values
->YOffsetforVPlane
, 32, 45) |
8391 __gen_field(values
->AuxiliaryTableIndexforMediaCompressedSurface
, 21, 31) |
8395 __gen_combine_address(data
, &dw
[10], values
->AuxiliarySurfaceBaseAddress
, dw10
);
8398 dw
[11] = qw10
>> 32;
8414 #define GEN8_SAMPLER_STATE_length 0x00000004
8416 struct GEN8_SAMPLER_STATE
{
8417 uint32_t SamplerDisable
;
8420 uint32_t TextureBorderColorMode
;
8421 #define CLAMP_NONE 0
8423 uint32_t LODPreClampMode
;
8424 uint32_t BaseMipLevel
;
8425 #define MIPFILTER_NONE 0
8426 #define MIPFILTER_NEAREST 1
8427 #define MIPFILTER_LINEAR 3
8428 uint32_t MipModeFilter
;
8429 #define MAPFILTER_NEAREST 0
8430 #define MAPFILTER_LINEAR 1
8431 #define MAPFILTER_ANISOTROPIC 2
8432 #define MAPFILTER_MONO 6
8433 uint32_t MagModeFilter
;
8434 #define MAPFILTER_NEAREST 0
8435 #define MAPFILTER_LINEAR 1
8436 #define MAPFILTER_ANISOTROPIC 2
8437 #define MAPFILTER_MONO 6
8438 uint32_t MinModeFilter
;
8439 uint32_t TextureLODBias
;
8441 #define EWAApproximation 1
8442 uint32_t AnisotropicAlgorithm
;
8445 uint32_t ChromaKeyEnable
;
8446 uint32_t ChromaKeyIndex
;
8447 #define KEYFILTER_KILL_ON_ANY_MATCH 0
8448 #define KEYFILTER_REPLACE_BLACK 1
8449 uint32_t ChromaKeyMode
;
8450 #define PREFILTEROPALWAYS 0
8451 #define PREFILTEROPNEVER 1
8452 #define PREFILTEROPLESS 2
8453 #define PREFILTEROPEQUAL 3
8454 #define PREFILTEROPLEQUAL 4
8455 #define PREFILTEROPGREATER 5
8456 #define PREFILTEROPNOTEQUAL 6
8457 #define PREFILTEROPGEQUAL 7
8458 uint32_t ShadowFunction
;
8459 #define PROGRAMMED 0
8461 uint32_t CubeSurfaceControlMode
;
8462 uint32_t IndirectStatePointer
;
8465 uint32_t LODClampMagnificationMode
;
8474 uint32_t MaximumAnisotropy
;
8475 uint32_t RAddressMinFilterRoundingEnable
;
8476 uint32_t RAddressMagFilterRoundingEnable
;
8477 uint32_t VAddressMinFilterRoundingEnable
;
8478 uint32_t VAddressMagFilterRoundingEnable
;
8479 uint32_t UAddressMinFilterRoundingEnable
;
8480 uint32_t UAddressMagFilterRoundingEnable
;
8485 uint32_t TrilinearFilterQuality
;
8486 uint32_t NonnormalizedCoordinateEnable
;
8487 uint32_t TCXAddressControlMode
;
8488 uint32_t TCYAddressControlMode
;
8489 uint32_t TCZAddressControlMode
;
8493 GEN8_SAMPLER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8494 const struct GEN8_SAMPLER_STATE
* restrict values
)
8496 uint32_t *dw
= (uint32_t * restrict
) dst
;
8499 __gen_field(values
->SamplerDisable
, 31, 31) |
8500 __gen_field(values
->TextureBorderColorMode
, 29, 29) |
8501 __gen_field(values
->LODPreClampMode
, 27, 28) |
8502 __gen_field(values
->BaseMipLevel
, 22, 26) |
8503 __gen_field(values
->MipModeFilter
, 20, 21) |
8504 __gen_field(values
->MagModeFilter
, 17, 19) |
8505 __gen_field(values
->MinModeFilter
, 14, 16) |
8506 __gen_field(values
->TextureLODBias
, 1, 13) |
8507 __gen_field(values
->AnisotropicAlgorithm
, 0, 0) |
8511 __gen_field(values
->MinLOD
, 20, 31) |
8512 __gen_field(values
->MaxLOD
, 8, 19) |
8513 __gen_field(values
->ChromaKeyEnable
, 7, 7) |
8514 __gen_field(values
->ChromaKeyIndex
, 5, 6) |
8515 __gen_field(values
->ChromaKeyMode
, 4, 4) |
8516 __gen_field(values
->ShadowFunction
, 1, 3) |
8517 __gen_field(values
->CubeSurfaceControlMode
, 0, 0) |
8521 __gen_field(values
->IndirectStatePointer
, 6, 23) |
8522 __gen_field(values
->LODClampMagnificationMode
, 0, 0) |
8526 __gen_field(values
->MaximumAnisotropy
, 19, 21) |
8527 __gen_field(values
->RAddressMinFilterRoundingEnable
, 13, 13) |
8528 __gen_field(values
->RAddressMagFilterRoundingEnable
, 14, 14) |
8529 __gen_field(values
->VAddressMinFilterRoundingEnable
, 15, 15) |
8530 __gen_field(values
->VAddressMagFilterRoundingEnable
, 16, 16) |
8531 __gen_field(values
->UAddressMinFilterRoundingEnable
, 17, 17) |
8532 __gen_field(values
->UAddressMagFilterRoundingEnable
, 18, 18) |
8533 __gen_field(values
->TrilinearFilterQuality
, 11, 12) |
8534 __gen_field(values
->NonnormalizedCoordinateEnable
, 10, 10) |
8535 __gen_field(values
->TCXAddressControlMode
, 6, 8) |
8536 __gen_field(values
->TCYAddressControlMode
, 3, 5) |
8537 __gen_field(values
->TCZAddressControlMode
, 0, 2) |
8542 /* Enum 3D_Prim_Topo_Type */
8543 #define _3DPRIM_POINTLIST 1
8544 #define _3DPRIM_LINELIST 2
8545 #define _3DPRIM_LINESTRIP 3
8546 #define _3DPRIM_TRILIST 4
8547 #define _3DPRIM_TRISTRIP 5
8548 #define _3DPRIM_TRIFAN 6
8549 #define _3DPRIM_QUADLIST 7
8550 #define _3DPRIM_QUADSTRIP 8
8551 #define _3DPRIM_LINELIST_ADJ 9
8552 #define _3DPRIM_LISTSTRIP_ADJ 10
8553 #define _3DPRIM_TRILIST_ADJ 11
8554 #define _3DPRIM_TRISTRIP_ADJ 12
8555 #define _3DPRIM_TRISTRIP_REVERSE 13
8556 #define _3DPRIM_POLYGON 14
8557 #define _3DPRIM_RECTLIST 15
8558 #define _3DPRIM_LINELOOP 16
8559 #define _3DPRIM_POINTLIST_BF 17
8560 #define _3DPRIM_LINESTRIP_CONT 18
8561 #define _3DPRIM_LINESTRIP_BF 19
8562 #define _3DPRIM_LINESTRIP_CONT_BF 20
8563 #define _3DPRIM_TRIFAN_NOSTIPPLE 22
8564 #define _3DPRIM_PATCHLIST_1 32
8565 #define _3DPRIM_PATCHLIST_2 33
8566 #define _3DPRIM_PATCHLIST_3 34
8567 #define _3DPRIM_PATCHLIST_4 35
8568 #define _3DPRIM_PATCHLIST_5 36
8569 #define _3DPRIM_PATCHLIST_6 37
8570 #define _3DPRIM_PATCHLIST_7 38
8571 #define _3DPRIM_PATCHLIST_8 39
8572 #define _3DPRIM_PATCHLIST_9 40
8573 #define _3DPRIM_PATCHLIST_10 41
8574 #define _3DPRIM_PATCHLIST_11 42
8575 #define _3DPRIM_PATCHLIST_12 43
8576 #define _3DPRIM_PATCHLIST_13 44
8577 #define _3DPRIM_PATCHLIST_14 45
8578 #define _3DPRIM_PATCHLIST_15 46
8579 #define _3DPRIM_PATCHLIST_16 47
8580 #define _3DPRIM_PATCHLIST_17 48
8581 #define _3DPRIM_PATCHLIST_18 49
8582 #define _3DPRIM_PATCHLIST_19 50
8583 #define _3DPRIM_PATCHLIST_20 51
8584 #define _3DPRIM_PATCHLIST_21 52
8585 #define _3DPRIM_PATCHLIST_22 53
8586 #define _3DPRIM_PATCHLIST_23 54
8587 #define _3DPRIM_PATCHLIST_24 55
8588 #define _3DPRIM_PATCHLIST_25 56
8589 #define _3DPRIM_PATCHLIST_26 57
8590 #define _3DPRIM_PATCHLIST_27 58
8591 #define _3DPRIM_PATCHLIST_28 59
8592 #define _3DPRIM_PATCHLIST_29 60
8593 #define _3DPRIM_PATCHLIST_30 61
8594 #define _3DPRIM_PATCHLIST_31 62
8595 #define _3DPRIM_PATCHLIST_32 63
8597 /* Enum 3D_Vertex_Component_Control */
8598 #define VFCOMP_NOSTORE 0
8599 #define VFCOMP_STORE_SRC 1
8600 #define VFCOMP_STORE_0 2
8601 #define VFCOMP_STORE_1_FP 3
8602 #define VFCOMP_STORE_1_INT 4
8603 #define VFCOMP_STORE_PID 7
8605 /* Enum WRAP_SHORTEST_ENABLE */
8622 /* Enum 3D_Stencil_Operation */
8623 #define STENCILOP_KEEP 0
8624 #define STENCILOP_ZERO 1
8625 #define STENCILOP_REPLACE 2
8626 #define STENCILOP_INCRSAT 3
8627 #define STENCILOP_DECRSAT 4
8628 #define STENCILOP_INCR 5
8629 #define STENCILOP_DECR 6
8630 #define STENCILOP_INVERT 7
8632 /* Enum 3D_Color_Buffer_Blend_Factor */
8633 #define BLENDFACTOR_ONE 1
8634 #define BLENDFACTOR_SRC_COLOR 2
8635 #define BLENDFACTOR_SRC_ALPHA 3
8636 #define BLENDFACTOR_DST_ALPHA 4
8637 #define BLENDFACTOR_DST_COLOR 5
8638 #define BLENDFACTOR_SRC_ALPHA_SATURATE 6
8639 #define BLENDFACTOR_CONST_COLOR 7
8640 #define BLENDFACTOR_CONST_ALPHA 8
8641 #define BLENDFACTOR_SRC1_COLOR 9
8642 #define BLENDFACTOR_SRC1_ALPHA 10
8643 #define BLENDFACTOR_ZERO 17
8644 #define BLENDFACTOR_INV_SRC_COLOR 18
8645 #define BLENDFACTOR_INV_SRC_ALPHA 19
8646 #define BLENDFACTOR_INV_DST_ALPHA 20
8647 #define BLENDFACTOR_INV_DST_COLOR 21
8648 #define BLENDFACTOR_INV_CONST_COLOR 23
8649 #define BLENDFACTOR_INV_CONST_ALPHA 24
8650 #define BLENDFACTOR_INV_SRC1_COLOR 25
8651 #define BLENDFACTOR_INV_SRC1_ALPHA 26
8653 /* Enum 3D_Color_Buffer_Blend_Function */
8654 #define BLENDFUNCTION_ADD 0
8655 #define BLENDFUNCTION_SUBTRACT 1
8656 #define BLENDFUNCTION_REVERSE_SUBTRACT 2
8657 #define BLENDFUNCTION_MIN 3
8658 #define BLENDFUNCTION_MAX 4
8660 /* Enum 3D_Compare_Function */
8661 #define COMPAREFUNCTION_ALWAYS 0
8662 #define COMPAREFUNCTION_NEVER 1
8663 #define COMPAREFUNCTION_LESS 2
8664 #define COMPAREFUNCTION_EQUAL 3
8665 #define COMPAREFUNCTION_LEQUAL 4
8666 #define COMPAREFUNCTION_GREATER 5
8667 #define COMPAREFUNCTION_NOTEQUAL 6
8668 #define COMPAREFUNCTION_GEQUAL 7
8670 /* Enum 3D_Logic_Op_Function */
8671 #define LOGICOP_CLEAR 0
8672 #define LOGICOP_NOR 1
8673 #define LOGICOP_AND_INVERTED 2
8674 #define LOGICOP_COPY_INVERTED 3
8675 #define LOGICOP_AND_REVERSE 4
8676 #define LOGICOP_INVERT 5
8677 #define LOGICOP_XOR 6
8678 #define LOGICOP_NAND 7
8679 #define LOGICOP_AND 8
8680 #define LOGICOP_EQUIV 9
8681 #define LOGICOP_NOOP 10
8682 #define LOGICOP_OR_INVERTED 11
8683 #define LOGICOP_COPY 12
8684 #define LOGICOP_OR_REVERSE 13
8685 #define LOGICOP_OR 14
8686 #define LOGICOP_SET 15
8688 /* Enum SURFACE_FORMAT */
8689 #define R32G32B32A32_FLOAT 0
8690 #define R32G32B32A32_SINT 1
8691 #define R32G32B32A32_UINT 2
8692 #define R32G32B32A32_UNORM 3
8693 #define R32G32B32A32_SNORM 4
8694 #define R64G64_FLOAT 5
8695 #define R32G32B32X32_FLOAT 6
8696 #define R32G32B32A32_SSCALED 7
8697 #define R32G32B32A32_USCALED 8
8698 #define R32G32B32A32_SFIXED 32
8699 #define R64G64_PASSTHRU 33
8700 #define R32G32B32_FLOAT 64
8701 #define R32G32B32_SINT 65
8702 #define R32G32B32_UINT 66
8703 #define R32G32B32_UNORM 67
8704 #define R32G32B32_SNORM 68
8705 #define R32G32B32_SSCALED 69
8706 #define R32G32B32_USCALED 70
8707 #define R32G32B32_SFIXED 80
8708 #define R16G16B16A16_UNORM 128
8709 #define R16G16B16A16_SNORM 129
8710 #define R16G16B16A16_SINT 130
8711 #define R16G16B16A16_UINT 131
8712 #define R16G16B16A16_FLOAT 132
8713 #define R32G32_FLOAT 133
8714 #define R32G32_SINT 134
8715 #define R32G32_UINT 135
8716 #define R32_FLOAT_X8X24_TYPELESS 136
8717 #define X32_TYPELESS_G8X24_UINT 137
8718 #define L32A32_FLOAT 138
8719 #define R32G32_UNORM 139
8720 #define R32G32_SNORM 140
8721 #define R64_FLOAT 141
8722 #define R16G16B16X16_UNORM 142
8723 #define R16G16B16X16_FLOAT 143
8724 #define A32X32_FLOAT 144
8725 #define L32X32_FLOAT 145
8726 #define I32X32_FLOAT 146
8727 #define R16G16B16A16_SSCALED 147
8728 #define R16G16B16A16_USCALED 148
8729 #define R32G32_SSCALED 149
8730 #define R32G32_USCALED 150
8731 #define R32G32_SFIXED 160
8732 #define R64_PASSTHRU 161
8733 #define B8G8R8A8_UNORM 192
8734 #define B8G8R8A8_UNORM_SRGB 193
8735 #define R10G10B10A2_UNORM 194
8736 #define R10G10B10A2_UNORM_SRGB 195
8737 #define R10G10B10A2_UINT 196
8738 #define R10G10B10_SNORM_A2_UNORM 197
8739 #define R8G8B8A8_UNORM 199
8740 #define R8G8B8A8_UNORM_SRGB 200
8741 #define R8G8B8A8_SNORM 201
8742 #define R8G8B8A8_SINT 202
8743 #define R8G8B8A8_UINT 203
8744 #define R16G16_UNORM 204
8745 #define R16G16_SNORM 205
8746 #define R16G16_SINT 206
8747 #define R16G16_UINT 207
8748 #define R16G16_FLOAT 208
8749 #define B10G10R10A2_UNORM 209
8750 #define B10G10R10A2_UNORM_SRGB 210
8751 #define R11G11B10_FLOAT 211
8752 #define R32_SINT 214
8753 #define R32_UINT 215
8754 #define R32_FLOAT 216
8755 #define R24_UNORM_X8_TYPELESS 217
8756 #define X24_TYPELESS_G8_UINT 218
8757 #define L32_UNORM 221
8758 #define A32_UNORM 222
8759 #define L16A16_UNORM 223
8760 #define I24X8_UNORM 224
8761 #define L24X8_UNORM 225
8762 #define A24X8_UNORM 226
8763 #define I32_FLOAT 227
8764 #define L32_FLOAT 228
8765 #define A32_FLOAT 229
8766 #define X8B8_UNORM_G8R8_SNORM 230
8767 #define A8X8_UNORM_G8R8_SNORM 231
8768 #define B8X8_UNORM_G8R8_SNORM 232
8769 #define B8G8R8X8_UNORM 233
8770 #define B8G8R8X8_UNORM_SRGB 234
8771 #define R8G8B8X8_UNORM 235
8772 #define R8G8B8X8_UNORM_SRGB 236
8773 #define R9G9B9E5_SHAREDEXP 237
8774 #define B10G10R10X2_UNORM 238
8775 #define L16A16_FLOAT 240
8776 #define R32_UNORM 241
8777 #define R32_SNORM 242
8778 #define R10G10B10X2_USCALED 243
8779 #define R8G8B8A8_SSCALED 244
8780 #define R8G8B8A8_USCALED 245
8781 #define R16G16_SSCALED 246
8782 #define R16G16_USCALED 247
8783 #define R32_SSCALED 248
8784 #define R32_USCALED 249
8785 #define B5G6R5_UNORM 256
8786 #define B5G6R5_UNORM_SRGB 257
8787 #define B5G5R5A1_UNORM 258
8788 #define B5G5R5A1_UNORM_SRGB 259
8789 #define B4G4R4A4_UNORM 260
8790 #define B4G4R4A4_UNORM_SRGB 261
8791 #define R8G8_UNORM 262
8792 #define R8G8_SNORM 263
8793 #define R8G8_SINT 264
8794 #define R8G8_UINT 265
8795 #define R16_UNORM 266
8796 #define R16_SNORM 267
8797 #define R16_SINT 268
8798 #define R16_UINT 269
8799 #define R16_FLOAT 270
8800 #define A8P8_UNORM_PALETTE0 271
8801 #define A8P8_UNORM_PALETTE1 272
8802 #define I16_UNORM 273
8803 #define L16_UNORM 274
8804 #define A16_UNORM 275
8805 #define L8A8_UNORM 276
8806 #define I16_FLOAT 277
8807 #define L16_FLOAT 278
8808 #define A16_FLOAT 279
8809 #define L8A8_UNORM_SRGB 280
8810 #define R5G5_SNORM_B6_UNORM 281
8811 #define B5G5R5X1_UNORM 282
8812 #define B5G5R5X1_UNORM_SRGB 283
8813 #define R8G8_SSCALED 284
8814 #define R8G8_USCALED 285
8815 #define R16_SSCALED 286
8816 #define R16_USCALED 287
8817 #define P8A8_UNORM_PALETTE0 290
8818 #define P8A8_UNORM_PALETTE1 291
8819 #define A1B5G5R5_UNORM 292
8820 #define A4B4G4R4_UNORM 293
8821 #define L8A8_UINT 294
8822 #define L8A8_SINT 295
8823 #define R8_UNORM 320
8824 #define R8_SNORM 321
8827 #define A8_UNORM 324
8828 #define I8_UNORM 325
8829 #define L8_UNORM 326
8830 #define P4A4_UNORM_PALETTE0 327
8831 #define A4P4_UNORM_PALETTE0 328
8832 #define R8_SSCALED 329
8833 #define R8_USCALED 330
8834 #define P8_UNORM_PALETTE0 331
8835 #define L8_UNORM_SRGB 332
8836 #define P8_UNORM_PALETTE1 333
8837 #define P4A4_UNORM_PALETTE1 334
8838 #define A4P4_UNORM_PALETTE1 335
8839 #define Y8_UNORM 336
8844 #define DXT1_RGB_SRGB 384
8845 #define R1_UNORM 385
8846 #define YCRCB_NORMAL 386
8847 #define YCRCB_SWAPUVY 387
8848 #define P2_UNORM_PALETTE0 388
8849 #define P2_UNORM_PALETTE1 389
8850 #define BC1_UNORM 390
8851 #define BC2_UNORM 391
8852 #define BC3_UNORM 392
8853 #define BC4_UNORM 393
8854 #define BC5_UNORM 394
8855 #define BC1_UNORM_SRGB 395
8856 #define BC2_UNORM_SRGB 396
8857 #define BC3_UNORM_SRGB 397
8859 #define YCRCB_SWAPUV 399
8860 #define YCRCB_SWAPY 400
8861 #define DXT1_RGB 401
8863 #define R8G8B8_UNORM 403
8864 #define R8G8B8_SNORM 404
8865 #define R8G8B8_SSCALED 405
8866 #define R8G8B8_USCALED 406
8867 #define R64G64B64A64_FLOAT 407
8868 #define R64G64B64_FLOAT 408
8869 #define BC4_SNORM 409
8870 #define BC5_SNORM 410
8871 #define R16G16B16_FLOAT 411
8872 #define R16G16B16_UNORM 412
8873 #define R16G16B16_SNORM 413
8874 #define R16G16B16_SSCALED 414
8875 #define R16G16B16_USCALED 415
8876 #define BC6H_SF16 417
8877 #define BC7_UNORM 418
8878 #define BC7_UNORM_SRGB 419
8879 #define BC6H_UF16 420
8880 #define PLANAR_420_8 421
8881 #define R8G8B8_UNORM_SRGB 424
8882 #define ETC1_RGB8 425
8883 #define ETC2_RGB8 426
8885 #define EAC_RG11 428
8886 #define EAC_SIGNED_R11 429
8887 #define EAC_SIGNED_RG11 430
8888 #define ETC2_SRGB8 431
8889 #define R16G16B16_UINT 432
8890 #define R16G16B16_SINT 433
8891 #define R32_SFIXED 434
8892 #define R10G10B10A2_SNORM 435
8893 #define R10G10B10A2_USCALED 436
8894 #define R10G10B10A2_SSCALED 437
8895 #define R10G10B10A2_SINT 438
8896 #define B10G10R10A2_SNORM 439
8897 #define B10G10R10A2_USCALED 440
8898 #define B10G10R10A2_SSCALED 441
8899 #define B10G10R10A2_UINT 442
8900 #define B10G10R10A2_SINT 443
8901 #define R64G64B64A64_PASSTHRU 444
8902 #define R64G64B64_PASSTHRU 445
8903 #define ETC2_RGB8_PTA 448
8904 #define ETC2_SRGB8_PTA 449
8905 #define ETC2_EAC_RGBA8 450
8906 #define ETC2_EAC_SRGB8_A8 451
8907 #define R8G8B8_UINT 456
8908 #define R8G8B8_SINT 457
8911 /* Enum Shader Channel Select */
8919 /* Enum Clear Color */
8923 /* Enum Texture Coordinate Mode */
8925 #define TCM_MIRROR 1
8928 #define TCM_CLAMP_BORDER 4
8929 #define TCM_MIRROR_ONCE 5
8930 #define TCM_HALF_BORDER 6