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_validate_value
36 #define __gen_validate_value(x)
39 #ifndef __gen_field_functions
40 #define __gen_field_functions
47 static inline uint64_t
48 __gen_mbo(uint32_t start
, uint32_t end
)
50 return (~0ul >> (64 - (end
- start
+ 1))) << start
;
53 static inline uint64_t
54 __gen_field(uint64_t v
, uint32_t start
, uint32_t end
)
56 __gen_validate_value(v
);
58 if (end
- start
+ 1 < 64)
59 assert(v
< 1ul << (end
- start
+ 1));
65 static inline uint64_t
66 __gen_offset(uint64_t v
, uint32_t start
, uint32_t end
)
68 __gen_validate_value(v
);
70 uint64_t mask
= (~0ul >> (64 - (end
- start
+ 1))) << start
;
72 assert((v
& ~mask
) == 0);
78 static inline uint32_t
81 __gen_validate_value(v
);
82 return ((union __gen_value
) { .f
= (v
) }).dw
;
85 #ifndef __gen_address_type
86 #error #define __gen_address_type before including this file
89 #ifndef __gen_user_data
90 #error #define __gen_combine_address before including this file
95 #define GEN8_3DSTATE_URB_VS_length 0x00000002
96 #define GEN8_3DSTATE_URB_VS_length_bias 0x00000002
97 #define GEN8_3DSTATE_URB_VS_header \
99 .CommandSubType = 3, \
100 ._3DCommandOpcode = 0, \
101 ._3DCommandSubOpcode = 48, \
104 struct GEN8_3DSTATE_URB_VS
{
105 uint32_t CommandType
;
106 uint32_t CommandSubType
;
107 uint32_t _3DCommandOpcode
;
108 uint32_t _3DCommandSubOpcode
;
109 uint32_t DwordLength
;
110 uint32_t VSURBStartingAddress
;
111 uint32_t VSURBEntryAllocationSize
;
112 uint32_t VSNumberofURBEntries
;
116 GEN8_3DSTATE_URB_VS_pack(__gen_user_data
*data
, void * restrict dst
,
117 const struct GEN8_3DSTATE_URB_VS
* restrict values
)
119 uint32_t *dw
= (uint32_t * restrict
) dst
;
122 __gen_field(values
->CommandType
, 29, 31) |
123 __gen_field(values
->CommandSubType
, 27, 28) |
124 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
125 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
126 __gen_field(values
->DwordLength
, 0, 7) |
130 __gen_field(values
->VSURBStartingAddress
, 25, 31) |
131 __gen_field(values
->VSURBEntryAllocationSize
, 16, 24) |
132 __gen_field(values
->VSNumberofURBEntries
, 0, 15) |
137 #define GEN8_3DSTATE_VS_length 0x00000009
138 #define GEN8_3DSTATE_VS_length_bias 0x00000002
139 #define GEN8_3DSTATE_VS_header \
141 .CommandSubType = 3, \
142 ._3DCommandOpcode = 0, \
143 ._3DCommandSubOpcode = 16, \
146 struct GEN8_3DSTATE_VS
{
147 uint32_t CommandType
;
148 uint32_t CommandSubType
;
149 uint32_t _3DCommandOpcode
;
150 uint32_t _3DCommandSubOpcode
;
151 uint32_t DwordLength
;
152 uint64_t KernelStartPointer
;
155 uint32_t SingleVertexDispatch
;
158 uint32_t VectorMaskEnable
;
160 #define _14Samplers 1
161 #define _58Samplers 2
162 #define _912Samplers 3
163 #define _1316Samplers 4
164 uint32_t SamplerCount
;
165 uint32_t BindingTableEntryCount
;
168 uint32_t ThreadDispatchPriority
;
171 uint32_t FloatingPointMode
;
172 bool IllegalOpcodeExceptionEnable
;
174 bool SoftwareExceptionEnable
;
175 uint64_t ScratchSpaceBasePointer
;
176 uint32_t PerThreadScratchSpace
;
177 uint32_t DispatchGRFStartRegisterForURBData
;
178 uint32_t VertexURBEntryReadLength
;
179 uint32_t VertexURBEntryReadOffset
;
180 uint32_t MaximumNumberofThreads
;
181 bool StatisticsEnable
;
182 bool SIMD8DispatchEnable
;
183 bool VertexCacheDisable
;
185 uint32_t VertexURBEntryOutputReadOffset
;
186 uint32_t VertexURBEntryOutputLength
;
187 uint32_t UserClipDistanceClipTestEnableBitmask
;
188 uint32_t UserClipDistanceCullTestEnableBitmask
;
192 GEN8_3DSTATE_VS_pack(__gen_user_data
*data
, void * restrict dst
,
193 const struct GEN8_3DSTATE_VS
* restrict values
)
195 uint32_t *dw
= (uint32_t * restrict
) dst
;
198 __gen_field(values
->CommandType
, 29, 31) |
199 __gen_field(values
->CommandSubType
, 27, 28) |
200 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
201 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
202 __gen_field(values
->DwordLength
, 0, 7) |
206 __gen_offset(values
->KernelStartPointer
, 6, 63) |
213 __gen_field(values
->SingleVertexDispatch
, 31, 31) |
214 __gen_field(values
->VectorMaskEnable
, 30, 30) |
215 __gen_field(values
->SamplerCount
, 27, 29) |
216 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
217 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
218 __gen_field(values
->FloatingPointMode
, 16, 16) |
219 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
220 __gen_field(values
->AccessesUAV
, 12, 12) |
221 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
225 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
226 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
233 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
234 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
235 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
239 __gen_field(values
->MaximumNumberofThreads
, 23, 31) |
240 __gen_field(values
->StatisticsEnable
, 10, 10) |
241 __gen_field(values
->SIMD8DispatchEnable
, 2, 2) |
242 __gen_field(values
->VertexCacheDisable
, 1, 1) |
243 __gen_field(values
->FunctionEnable
, 0, 0) |
247 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
248 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
249 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
250 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
255 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length 0x00000003
256 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length_bias 0x00000002
257 #define GEN8_GPGPU_CSR_BASE_ADDRESS_header \
259 .CommandSubType = 0, \
260 ._3DCommandOpcode = 1, \
261 ._3DCommandSubOpcode = 4, \
264 struct GEN8_GPGPU_CSR_BASE_ADDRESS
{
265 uint32_t CommandType
;
266 uint32_t CommandSubType
;
267 uint32_t _3DCommandOpcode
;
268 uint32_t _3DCommandSubOpcode
;
269 uint32_t DwordLength
;
270 __gen_address_type GPGPUCSRBaseAddress
;
274 GEN8_GPGPU_CSR_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
275 const struct GEN8_GPGPU_CSR_BASE_ADDRESS
* restrict values
)
277 uint32_t *dw
= (uint32_t * restrict
) dst
;
280 __gen_field(values
->CommandType
, 29, 31) |
281 __gen_field(values
->CommandSubType
, 27, 28) |
282 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
283 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
284 __gen_field(values
->DwordLength
, 0, 7) |
291 __gen_combine_address(data
, &dw
[1], values
->GPGPUCSRBaseAddress
, dw1
);
298 #define GEN8_MI_ATOMIC_length 0x00000003
299 #define GEN8_MI_ATOMIC_length_bias 0x00000002
300 #define GEN8_MI_ATOMIC_header \
302 .MICommandOpcode = 47
304 struct GEN8_MI_ATOMIC
{
305 uint32_t CommandType
;
306 uint32_t MICommandOpcode
;
307 #define PerProcessGraphicsAddress 0
308 #define GlobalGraphicsAddress 1
310 uint32_t PostSyncOperation
;
318 uint32_t ReturnDataControl
;
319 uint32_t ATOMICOPCODE
;
320 uint32_t DwordLength
;
321 __gen_address_type MemoryAddress
;
322 uint32_t Operand1DataDword0
;
323 uint32_t Operand2DataDword0
;
324 uint32_t Operand1DataDword1
;
325 uint32_t Operand2DataDword1
;
326 uint32_t Operand1DataDword2
;
327 uint32_t Operand2DataDword2
;
328 uint32_t Operand1DataDword3
;
329 uint32_t Operand2DataDword3
;
333 GEN8_MI_ATOMIC_pack(__gen_user_data
*data
, void * restrict dst
,
334 const struct GEN8_MI_ATOMIC
* restrict values
)
336 uint32_t *dw
= (uint32_t * restrict
) dst
;
339 __gen_field(values
->CommandType
, 29, 31) |
340 __gen_field(values
->MICommandOpcode
, 23, 28) |
341 __gen_field(values
->MemoryType
, 22, 22) |
342 __gen_field(values
->PostSyncOperation
, 21, 21) |
343 __gen_field(values
->DataSize
, 19, 20) |
344 __gen_field(values
->InlineData
, 18, 18) |
345 __gen_field(values
->CSSTALL
, 17, 17) |
346 __gen_field(values
->ReturnDataControl
, 16, 16) |
347 __gen_field(values
->ATOMICOPCODE
, 8, 15) |
348 __gen_field(values
->DwordLength
, 0, 7) |
355 __gen_combine_address(data
, &dw
[1], values
->MemoryAddress
, dw1
);
361 __gen_field(values
->Operand1DataDword0
, 0, 31) |
365 __gen_field(values
->Operand2DataDword0
, 0, 31) |
369 __gen_field(values
->Operand1DataDword1
, 0, 31) |
373 __gen_field(values
->Operand2DataDword1
, 0, 31) |
377 __gen_field(values
->Operand1DataDword2
, 0, 31) |
381 __gen_field(values
->Operand2DataDword2
, 0, 31) |
385 __gen_field(values
->Operand1DataDword3
, 0, 31) |
389 __gen_field(values
->Operand2DataDword3
, 0, 31) |
394 #define GEN8_MI_LOAD_REGISTER_REG_length 0x00000003
395 #define GEN8_MI_LOAD_REGISTER_REG_length_bias 0x00000002
396 #define GEN8_MI_LOAD_REGISTER_REG_header \
398 .MICommandOpcode = 42, \
401 struct GEN8_MI_LOAD_REGISTER_REG
{
402 uint32_t CommandType
;
403 uint32_t MICommandOpcode
;
404 uint32_t DwordLength
;
405 uint32_t SourceRegisterAddress
;
406 uint32_t DestinationRegisterAddress
;
410 GEN8_MI_LOAD_REGISTER_REG_pack(__gen_user_data
*data
, void * restrict dst
,
411 const struct GEN8_MI_LOAD_REGISTER_REG
* restrict values
)
413 uint32_t *dw
= (uint32_t * restrict
) dst
;
416 __gen_field(values
->CommandType
, 29, 31) |
417 __gen_field(values
->MICommandOpcode
, 23, 28) |
418 __gen_field(values
->DwordLength
, 0, 7) |
422 __gen_offset(values
->SourceRegisterAddress
, 2, 22) |
426 __gen_offset(values
->DestinationRegisterAddress
, 2, 22) |
431 #define GEN8_MI_SEMAPHORE_SIGNAL_length 0x00000002
432 #define GEN8_MI_SEMAPHORE_SIGNAL_length_bias 0x00000002
433 #define GEN8_MI_SEMAPHORE_SIGNAL_header \
435 .MICommandOpcode = 27, \
438 struct GEN8_MI_SEMAPHORE_SIGNAL
{
439 uint32_t CommandType
;
440 uint32_t MICommandOpcode
;
441 uint32_t PostSyncOperation
;
447 uint32_t TargetEngineSelect
;
448 uint32_t DwordLength
;
449 uint32_t TargetContextID
;
453 GEN8_MI_SEMAPHORE_SIGNAL_pack(__gen_user_data
*data
, void * restrict dst
,
454 const struct GEN8_MI_SEMAPHORE_SIGNAL
* restrict values
)
456 uint32_t *dw
= (uint32_t * restrict
) dst
;
459 __gen_field(values
->CommandType
, 29, 31) |
460 __gen_field(values
->MICommandOpcode
, 23, 28) |
461 __gen_field(values
->PostSyncOperation
, 21, 21) |
462 __gen_field(values
->TargetEngineSelect
, 15, 17) |
463 __gen_field(values
->DwordLength
, 0, 7) |
467 __gen_field(values
->TargetContextID
, 0, 31) |
472 #define GEN8_MI_SEMAPHORE_WAIT_length 0x00000004
473 #define GEN8_MI_SEMAPHORE_WAIT_length_bias 0x00000002
474 #define GEN8_MI_SEMAPHORE_WAIT_header \
476 .MICommandOpcode = 28, \
479 struct GEN8_MI_SEMAPHORE_WAIT
{
480 uint32_t CommandType
;
481 uint32_t MICommandOpcode
;
482 #define PerProcessGraphicsAddress 0
483 #define GlobalGraphicsAddress 1
485 #define PollingMode 1
488 #define SAD_GREATER_THAN_SDD 0
489 #define SAD_GREATER_THAN_OR_EQUAL_SDD 1
490 #define SAD_LESS_THAN_SDD 2
491 #define SAD_LESS_THAN_OR_EQUAL_SDD 3
492 #define SAD_EQUAL_SDD 4
493 #define SAD_NOT_EQUAL_SDD 5
494 uint32_t CompareOperation
;
495 uint32_t DwordLength
;
496 uint32_t SemaphoreDataDword
;
497 __gen_address_type SemaphoreAddress
;
501 GEN8_MI_SEMAPHORE_WAIT_pack(__gen_user_data
*data
, void * restrict dst
,
502 const struct GEN8_MI_SEMAPHORE_WAIT
* restrict values
)
504 uint32_t *dw
= (uint32_t * restrict
) dst
;
507 __gen_field(values
->CommandType
, 29, 31) |
508 __gen_field(values
->MICommandOpcode
, 23, 28) |
509 __gen_field(values
->MemoryType
, 22, 22) |
510 __gen_field(values
->WaitMode
, 15, 15) |
511 __gen_field(values
->CompareOperation
, 12, 14) |
512 __gen_field(values
->DwordLength
, 0, 7) |
516 __gen_field(values
->SemaphoreDataDword
, 0, 31) |
523 __gen_combine_address(data
, &dw
[2], values
->SemaphoreAddress
, dw2
);
530 #define GEN8_MI_STORE_REGISTER_MEM_length 0x00000004
531 #define GEN8_MI_STORE_REGISTER_MEM_length_bias 0x00000002
532 #define GEN8_MI_STORE_REGISTER_MEM_header \
534 .MICommandOpcode = 36, \
537 struct GEN8_MI_STORE_REGISTER_MEM
{
538 uint32_t CommandType
;
539 uint32_t MICommandOpcode
;
541 uint32_t PredicateEnable
;
542 uint32_t DwordLength
;
543 uint32_t RegisterAddress
;
544 __gen_address_type MemoryAddress
;
548 GEN8_MI_STORE_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
549 const struct GEN8_MI_STORE_REGISTER_MEM
* restrict values
)
551 uint32_t *dw
= (uint32_t * restrict
) dst
;
554 __gen_field(values
->CommandType
, 29, 31) |
555 __gen_field(values
->MICommandOpcode
, 23, 28) |
556 __gen_field(values
->UseGlobalGTT
, 22, 22) |
557 __gen_field(values
->PredicateEnable
, 21, 21) |
558 __gen_field(values
->DwordLength
, 0, 7) |
562 __gen_offset(values
->RegisterAddress
, 2, 22) |
569 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
576 #define GEN8_PIPELINE_SELECT_length 0x00000001
577 #define GEN8_PIPELINE_SELECT_length_bias 0x00000001
578 #define GEN8_PIPELINE_SELECT_header \
580 .CommandSubType = 1, \
581 ._3DCommandOpcode = 1, \
582 ._3DCommandSubOpcode = 4
584 struct GEN8_PIPELINE_SELECT
{
585 uint32_t CommandType
;
586 uint32_t CommandSubType
;
587 uint32_t _3DCommandOpcode
;
588 uint32_t _3DCommandSubOpcode
;
592 uint32_t PipelineSelection
;
596 GEN8_PIPELINE_SELECT_pack(__gen_user_data
*data
, void * restrict dst
,
597 const struct GEN8_PIPELINE_SELECT
* restrict values
)
599 uint32_t *dw
= (uint32_t * restrict
) dst
;
602 __gen_field(values
->CommandType
, 29, 31) |
603 __gen_field(values
->CommandSubType
, 27, 28) |
604 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
605 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
606 __gen_field(values
->PipelineSelection
, 0, 1) |
611 #define GEN8_STATE_BASE_ADDRESS_length 0x00000010
612 #define GEN8_STATE_BASE_ADDRESS_length_bias 0x00000002
613 #define GEN8_STATE_BASE_ADDRESS_header \
615 .CommandSubType = 0, \
616 ._3DCommandOpcode = 1, \
617 ._3DCommandSubOpcode = 1, \
620 struct GEN8_MEMORY_OBJECT_CONTROL_STATE
{
621 #define UCwithFenceifcoherentcycle 0
622 #define UCUncacheable 1
625 uint32_t MemoryTypeLLCeLLCCacheabilityControl
;
626 #define eLLCOnlywheneDRAMispresentelsegetsallocatedinLLC 0
628 #define LLCeLLCAllowed 2
629 #define L3DefertoPATforLLCeLLCselection 3
630 uint32_t TargetCache
;
631 uint32_t AgeforQUADLRU
;
635 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
636 const struct GEN8_MEMORY_OBJECT_CONTROL_STATE
* restrict values
)
638 uint32_t *dw
= (uint32_t * restrict
) dst
;
641 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControl
, 5, 6) |
642 __gen_field(values
->TargetCache
, 3, 4) |
643 __gen_field(values
->AgeforQUADLRU
, 0, 1) |
648 struct GEN8_STATE_BASE_ADDRESS
{
649 uint32_t CommandType
;
650 uint32_t CommandSubType
;
651 uint32_t _3DCommandOpcode
;
652 uint32_t _3DCommandSubOpcode
;
653 uint32_t DwordLength
;
654 __gen_address_type GeneralStateBaseAddress
;
655 struct GEN8_MEMORY_OBJECT_CONTROL_STATE GeneralStateMemoryObjectControlState
;
656 bool GeneralStateBaseAddressModifyEnable
;
657 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StatelessDataPortAccessMemoryObjectControlState
;
658 __gen_address_type SurfaceStateBaseAddress
;
659 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceStateMemoryObjectControlState
;
660 bool SurfaceStateBaseAddressModifyEnable
;
661 __gen_address_type DynamicStateBaseAddress
;
662 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DynamicStateMemoryObjectControlState
;
663 bool DynamicStateBaseAddressModifyEnable
;
664 __gen_address_type IndirectObjectBaseAddress
;
665 struct GEN8_MEMORY_OBJECT_CONTROL_STATE IndirectObjectMemoryObjectControlState
;
666 bool IndirectObjectBaseAddressModifyEnable
;
667 __gen_address_type InstructionBaseAddress
;
668 struct GEN8_MEMORY_OBJECT_CONTROL_STATE InstructionMemoryObjectControlState
;
669 bool InstructionBaseAddressModifyEnable
;
670 uint32_t GeneralStateBufferSize
;
671 bool GeneralStateBufferSizeModifyEnable
;
672 uint32_t DynamicStateBufferSize
;
673 bool DynamicStateBufferSizeModifyEnable
;
674 uint32_t IndirectObjectBufferSize
;
675 bool IndirectObjectBufferSizeModifyEnable
;
676 uint32_t InstructionBufferSize
;
677 bool InstructionBuffersizeModifyEnable
;
681 GEN8_STATE_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
682 const struct GEN8_STATE_BASE_ADDRESS
* restrict values
)
684 uint32_t *dw
= (uint32_t * restrict
) dst
;
687 __gen_field(values
->CommandType
, 29, 31) |
688 __gen_field(values
->CommandSubType
, 27, 28) |
689 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
690 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
691 __gen_field(values
->DwordLength
, 0, 7) |
694 uint32_t dw_GeneralStateMemoryObjectControlState
;
695 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_GeneralStateMemoryObjectControlState
, &values
->GeneralStateMemoryObjectControlState
);
697 __gen_field(dw_GeneralStateMemoryObjectControlState
, 4, 10) |
698 __gen_field(values
->GeneralStateBaseAddressModifyEnable
, 0, 0) |
702 __gen_combine_address(data
, &dw
[1], values
->GeneralStateBaseAddress
, dw1
);
707 uint32_t dw_StatelessDataPortAccessMemoryObjectControlState
;
708 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StatelessDataPortAccessMemoryObjectControlState
, &values
->StatelessDataPortAccessMemoryObjectControlState
);
710 __gen_field(dw_StatelessDataPortAccessMemoryObjectControlState
, 16, 22) |
713 uint32_t dw_SurfaceStateMemoryObjectControlState
;
714 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceStateMemoryObjectControlState
, &values
->SurfaceStateMemoryObjectControlState
);
716 __gen_field(dw_SurfaceStateMemoryObjectControlState
, 4, 10) |
717 __gen_field(values
->SurfaceStateBaseAddressModifyEnable
, 0, 0) |
721 __gen_combine_address(data
, &dw
[4], values
->SurfaceStateBaseAddress
, dw4
);
726 uint32_t dw_DynamicStateMemoryObjectControlState
;
727 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DynamicStateMemoryObjectControlState
, &values
->DynamicStateMemoryObjectControlState
);
729 __gen_field(dw_DynamicStateMemoryObjectControlState
, 4, 10) |
730 __gen_field(values
->DynamicStateBaseAddressModifyEnable
, 0, 0) |
734 __gen_combine_address(data
, &dw
[6], values
->DynamicStateBaseAddress
, dw6
);
739 uint32_t dw_IndirectObjectMemoryObjectControlState
;
740 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_IndirectObjectMemoryObjectControlState
, &values
->IndirectObjectMemoryObjectControlState
);
742 __gen_field(dw_IndirectObjectMemoryObjectControlState
, 4, 10) |
743 __gen_field(values
->IndirectObjectBaseAddressModifyEnable
, 0, 0) |
747 __gen_combine_address(data
, &dw
[8], values
->IndirectObjectBaseAddress
, dw8
);
752 uint32_t dw_InstructionMemoryObjectControlState
;
753 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_InstructionMemoryObjectControlState
, &values
->InstructionMemoryObjectControlState
);
755 __gen_field(dw_InstructionMemoryObjectControlState
, 4, 10) |
756 __gen_field(values
->InstructionBaseAddressModifyEnable
, 0, 0) |
760 __gen_combine_address(data
, &dw
[10], values
->InstructionBaseAddress
, dw10
);
766 __gen_field(values
->GeneralStateBufferSize
, 12, 31) |
767 __gen_field(values
->GeneralStateBufferSizeModifyEnable
, 0, 0) |
771 __gen_field(values
->DynamicStateBufferSize
, 12, 31) |
772 __gen_field(values
->DynamicStateBufferSizeModifyEnable
, 0, 0) |
776 __gen_field(values
->IndirectObjectBufferSize
, 12, 31) |
777 __gen_field(values
->IndirectObjectBufferSizeModifyEnable
, 0, 0) |
781 __gen_field(values
->InstructionBufferSize
, 12, 31) |
782 __gen_field(values
->InstructionBuffersizeModifyEnable
, 0, 0) |
787 #define GEN8_STATE_PREFETCH_length 0x00000002
788 #define GEN8_STATE_PREFETCH_length_bias 0x00000002
789 #define GEN8_STATE_PREFETCH_header \
791 .CommandSubType = 0, \
792 ._3DCommandOpcode = 0, \
793 ._3DCommandSubOpcode = 3, \
796 struct GEN8_STATE_PREFETCH
{
797 uint32_t CommandType
;
798 uint32_t CommandSubType
;
799 uint32_t _3DCommandOpcode
;
800 uint32_t _3DCommandSubOpcode
;
801 uint32_t DwordLength
;
802 __gen_address_type PrefetchPointer
;
803 uint32_t PrefetchCount
;
807 GEN8_STATE_PREFETCH_pack(__gen_user_data
*data
, void * restrict dst
,
808 const struct GEN8_STATE_PREFETCH
* restrict values
)
810 uint32_t *dw
= (uint32_t * restrict
) dst
;
813 __gen_field(values
->CommandType
, 29, 31) |
814 __gen_field(values
->CommandSubType
, 27, 28) |
815 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
816 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
817 __gen_field(values
->DwordLength
, 0, 7) |
821 __gen_field(values
->PrefetchCount
, 0, 2) |
825 __gen_combine_address(data
, &dw
[1], values
->PrefetchPointer
, dw1
);
829 #define GEN8_STATE_SIP_length 0x00000003
830 #define GEN8_STATE_SIP_length_bias 0x00000002
831 #define GEN8_STATE_SIP_header \
833 .CommandSubType = 0, \
834 ._3DCommandOpcode = 1, \
835 ._3DCommandSubOpcode = 2, \
838 struct GEN8_STATE_SIP
{
839 uint32_t CommandType
;
840 uint32_t CommandSubType
;
841 uint32_t _3DCommandOpcode
;
842 uint32_t _3DCommandSubOpcode
;
843 uint32_t DwordLength
;
844 uint64_t SystemInstructionPointer
;
848 GEN8_STATE_SIP_pack(__gen_user_data
*data
, void * restrict dst
,
849 const struct GEN8_STATE_SIP
* restrict values
)
851 uint32_t *dw
= (uint32_t * restrict
) dst
;
854 __gen_field(values
->CommandType
, 29, 31) |
855 __gen_field(values
->CommandSubType
, 27, 28) |
856 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
857 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
858 __gen_field(values
->DwordLength
, 0, 7) |
862 __gen_offset(values
->SystemInstructionPointer
, 4, 63) |
870 #define GEN8_SWTESS_BASE_ADDRESS_length 0x00000002
871 #define GEN8_SWTESS_BASE_ADDRESS_length_bias 0x00000002
872 #define GEN8_SWTESS_BASE_ADDRESS_header \
874 .CommandSubType = 0, \
875 ._3DCommandOpcode = 1, \
876 ._3DCommandSubOpcode = 3, \
879 struct GEN8_SWTESS_BASE_ADDRESS
{
880 uint32_t CommandType
;
881 uint32_t CommandSubType
;
882 uint32_t _3DCommandOpcode
;
883 uint32_t _3DCommandSubOpcode
;
884 uint32_t DwordLength
;
885 __gen_address_type SWTessellationBaseAddress
;
886 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SWTessellationMemoryObjectControlState
;
890 GEN8_SWTESS_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
891 const struct GEN8_SWTESS_BASE_ADDRESS
* restrict values
)
893 uint32_t *dw
= (uint32_t * restrict
) dst
;
896 __gen_field(values
->CommandType
, 29, 31) |
897 __gen_field(values
->CommandSubType
, 27, 28) |
898 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
899 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
900 __gen_field(values
->DwordLength
, 0, 7) |
903 uint32_t dw_SWTessellationMemoryObjectControlState
;
904 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SWTessellationMemoryObjectControlState
, &values
->SWTessellationMemoryObjectControlState
);
906 __gen_field(dw_SWTessellationMemoryObjectControlState
, 8, 11) |
910 __gen_combine_address(data
, &dw
[1], values
->SWTessellationBaseAddress
, dw1
);
917 #define GEN8_3DPRIMITIVE_length 0x00000007
918 #define GEN8_3DPRIMITIVE_length_bias 0x00000002
919 #define GEN8_3DPRIMITIVE_header \
921 .CommandSubType = 3, \
922 ._3DCommandOpcode = 3, \
923 ._3DCommandSubOpcode = 0, \
926 struct GEN8_3DPRIMITIVE
{
927 uint32_t CommandType
;
928 uint32_t CommandSubType
;
929 uint32_t _3DCommandOpcode
;
930 uint32_t _3DCommandSubOpcode
;
931 bool IndirectParameterEnable
;
932 uint32_t UAVCoherencyRequired
;
933 bool PredicateEnable
;
934 uint32_t DwordLength
;
935 bool EndOffsetEnable
;
938 uint32_t VertexAccessType
;
939 uint32_t PrimitiveTopologyType
;
940 uint32_t VertexCountPerInstance
;
941 uint32_t StartVertexLocation
;
942 uint32_t InstanceCount
;
943 uint32_t StartInstanceLocation
;
944 uint32_t BaseVertexLocation
;
948 GEN8_3DPRIMITIVE_pack(__gen_user_data
*data
, void * restrict dst
,
949 const struct GEN8_3DPRIMITIVE
* restrict values
)
951 uint32_t *dw
= (uint32_t * restrict
) dst
;
954 __gen_field(values
->CommandType
, 29, 31) |
955 __gen_field(values
->CommandSubType
, 27, 28) |
956 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
957 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
958 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
959 __gen_field(values
->UAVCoherencyRequired
, 9, 9) |
960 __gen_field(values
->PredicateEnable
, 8, 8) |
961 __gen_field(values
->DwordLength
, 0, 7) |
965 __gen_field(values
->EndOffsetEnable
, 9, 9) |
966 __gen_field(values
->VertexAccessType
, 8, 8) |
967 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
971 __gen_field(values
->VertexCountPerInstance
, 0, 31) |
975 __gen_field(values
->StartVertexLocation
, 0, 31) |
979 __gen_field(values
->InstanceCount
, 0, 31) |
983 __gen_field(values
->StartInstanceLocation
, 0, 31) |
987 __gen_field(values
->BaseVertexLocation
, 0, 31) |
992 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length 0x00000003
993 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length_bias 0x00000002
994 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_header \
996 .CommandSubType = 3, \
997 ._3DCommandOpcode = 1, \
998 ._3DCommandSubOpcode = 10, \
1001 struct GEN8_3DSTATE_AA_LINE_PARAMETERS
{
1002 uint32_t CommandType
;
1003 uint32_t CommandSubType
;
1004 uint32_t _3DCommandOpcode
;
1005 uint32_t _3DCommandSubOpcode
;
1006 uint32_t DwordLength
;
1007 float AAPointCoverageBias
;
1008 float AACoverageBias
;
1009 float AAPointCoverageSlope
;
1010 float AACoverageSlope
;
1011 float AAPointCoverageEndCapBias
;
1012 float AACoverageEndCapBias
;
1013 float AAPointCoverageEndCapSlope
;
1014 float AACoverageEndCapSlope
;
1018 GEN8_3DSTATE_AA_LINE_PARAMETERS_pack(__gen_user_data
*data
, void * restrict dst
,
1019 const struct GEN8_3DSTATE_AA_LINE_PARAMETERS
* restrict values
)
1021 uint32_t *dw
= (uint32_t * restrict
) dst
;
1024 __gen_field(values
->CommandType
, 29, 31) |
1025 __gen_field(values
->CommandSubType
, 27, 28) |
1026 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1027 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1028 __gen_field(values
->DwordLength
, 0, 7) |
1032 __gen_field(values
->AAPointCoverageBias
* (1 << 8), 24, 31) |
1033 __gen_field(values
->AACoverageBias
* (1 << 8), 16, 23) |
1034 __gen_field(values
->AAPointCoverageSlope
* (1 << 8), 8, 15) |
1035 __gen_field(values
->AACoverageSlope
* (1 << 8), 0, 7) |
1039 __gen_field(values
->AAPointCoverageEndCapBias
* (1 << 8), 24, 31) |
1040 __gen_field(values
->AACoverageEndCapBias
* (1 << 8), 16, 23) |
1041 __gen_field(values
->AAPointCoverageEndCapSlope
* (1 << 8), 8, 15) |
1042 __gen_field(values
->AACoverageEndCapSlope
* (1 << 8), 0, 7) |
1047 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias 0x00000002
1048 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_header\
1050 .CommandSubType = 3, \
1051 ._3DCommandOpcode = 0, \
1052 ._3DCommandSubOpcode = 70
1054 struct GEN8_BINDING_TABLE_EDIT_ENTRY
{
1055 uint32_t BindingTableIndex
;
1056 uint32_t SurfaceStatePointer
;
1060 GEN8_BINDING_TABLE_EDIT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
1061 const struct GEN8_BINDING_TABLE_EDIT_ENTRY
* restrict values
)
1063 uint32_t *dw
= (uint32_t * restrict
) dst
;
1066 __gen_field(values
->BindingTableIndex
, 16, 23) |
1067 __gen_offset(values
->SurfaceStatePointer
, 0, 15) |
1072 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
{
1073 uint32_t CommandType
;
1074 uint32_t CommandSubType
;
1075 uint32_t _3DCommandOpcode
;
1076 uint32_t _3DCommandSubOpcode
;
1077 uint32_t DwordLength
;
1078 uint32_t BindingTableBlockClear
;
1082 uint32_t BindingTableEditTarget
;
1083 /* variable length fields follow */
1087 GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1088 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
* restrict values
)
1090 uint32_t *dw
= (uint32_t * restrict
) dst
;
1093 __gen_field(values
->CommandType
, 29, 31) |
1094 __gen_field(values
->CommandSubType
, 27, 28) |
1095 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1096 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1097 __gen_field(values
->DwordLength
, 0, 8) |
1101 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1102 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1105 /* variable length fields follow */
1108 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias 0x00000002
1109 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_header\
1111 .CommandSubType = 3, \
1112 ._3DCommandOpcode = 0, \
1113 ._3DCommandSubOpcode = 68
1115 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
{
1116 uint32_t CommandType
;
1117 uint32_t CommandSubType
;
1118 uint32_t _3DCommandOpcode
;
1119 uint32_t _3DCommandSubOpcode
;
1120 uint32_t DwordLength
;
1121 uint32_t BindingTableBlockClear
;
1125 uint32_t BindingTableEditTarget
;
1126 /* variable length fields follow */
1130 GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1131 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
* restrict values
)
1133 uint32_t *dw
= (uint32_t * restrict
) dst
;
1136 __gen_field(values
->CommandType
, 29, 31) |
1137 __gen_field(values
->CommandSubType
, 27, 28) |
1138 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1139 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1140 __gen_field(values
->DwordLength
, 0, 8) |
1144 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1145 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1148 /* variable length fields follow */
1151 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias 0x00000002
1152 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_header\
1154 .CommandSubType = 3, \
1155 ._3DCommandOpcode = 0, \
1156 ._3DCommandSubOpcode = 69
1158 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
{
1159 uint32_t CommandType
;
1160 uint32_t CommandSubType
;
1161 uint32_t _3DCommandOpcode
;
1162 uint32_t _3DCommandSubOpcode
;
1163 uint32_t DwordLength
;
1164 uint32_t BindingTableBlockClear
;
1168 uint32_t BindingTableEditTarget
;
1169 /* variable length fields follow */
1173 GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1174 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
* restrict values
)
1176 uint32_t *dw
= (uint32_t * restrict
) dst
;
1179 __gen_field(values
->CommandType
, 29, 31) |
1180 __gen_field(values
->CommandSubType
, 27, 28) |
1181 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1182 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1183 __gen_field(values
->DwordLength
, 0, 8) |
1187 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1188 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1191 /* variable length fields follow */
1194 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias 0x00000002
1195 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_header\
1197 .CommandSubType = 3, \
1198 ._3DCommandOpcode = 0, \
1199 ._3DCommandSubOpcode = 71
1201 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
{
1202 uint32_t CommandType
;
1203 uint32_t CommandSubType
;
1204 uint32_t _3DCommandOpcode
;
1205 uint32_t _3DCommandSubOpcode
;
1206 uint32_t DwordLength
;
1207 uint32_t BindingTableBlockClear
;
1211 uint32_t BindingTableEditTarget
;
1212 /* variable length fields follow */
1216 GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1217 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
* restrict values
)
1219 uint32_t *dw
= (uint32_t * restrict
) dst
;
1222 __gen_field(values
->CommandType
, 29, 31) |
1223 __gen_field(values
->CommandSubType
, 27, 28) |
1224 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1225 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1226 __gen_field(values
->DwordLength
, 0, 8) |
1230 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1231 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1234 /* variable length fields follow */
1237 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias 0x00000002
1238 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_header\
1240 .CommandSubType = 3, \
1241 ._3DCommandOpcode = 0, \
1242 ._3DCommandSubOpcode = 67
1244 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
{
1245 uint32_t CommandType
;
1246 uint32_t CommandSubType
;
1247 uint32_t _3DCommandOpcode
;
1248 uint32_t _3DCommandSubOpcode
;
1249 uint32_t DwordLength
;
1250 uint32_t BindingTableBlockClear
;
1254 uint32_t BindingTableEditTarget
;
1255 /* variable length fields follow */
1259 GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1260 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
* restrict values
)
1262 uint32_t *dw
= (uint32_t * restrict
) dst
;
1265 __gen_field(values
->CommandType
, 29, 31) |
1266 __gen_field(values
->CommandSubType
, 27, 28) |
1267 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1268 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1269 __gen_field(values
->DwordLength
, 0, 8) |
1273 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1274 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1277 /* variable length fields follow */
1280 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length 0x00000002
1281 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias 0x00000002
1282 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_header\
1284 .CommandSubType = 3, \
1285 ._3DCommandOpcode = 0, \
1286 ._3DCommandSubOpcode = 40, \
1289 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
{
1290 uint32_t CommandType
;
1291 uint32_t CommandSubType
;
1292 uint32_t _3DCommandOpcode
;
1293 uint32_t _3DCommandSubOpcode
;
1294 uint32_t DwordLength
;
1295 uint32_t PointertoDSBindingTable
;
1299 GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1300 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
* restrict values
)
1302 uint32_t *dw
= (uint32_t * restrict
) dst
;
1305 __gen_field(values
->CommandType
, 29, 31) |
1306 __gen_field(values
->CommandSubType
, 27, 28) |
1307 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1308 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1309 __gen_field(values
->DwordLength
, 0, 7) |
1313 __gen_offset(values
->PointertoDSBindingTable
, 5, 15) |
1318 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length 0x00000002
1319 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias 0x00000002
1320 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_header\
1322 .CommandSubType = 3, \
1323 ._3DCommandOpcode = 0, \
1324 ._3DCommandSubOpcode = 41, \
1327 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
{
1328 uint32_t CommandType
;
1329 uint32_t CommandSubType
;
1330 uint32_t _3DCommandOpcode
;
1331 uint32_t _3DCommandSubOpcode
;
1332 uint32_t DwordLength
;
1333 uint32_t PointertoGSBindingTable
;
1337 GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1338 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
* restrict values
)
1340 uint32_t *dw
= (uint32_t * restrict
) dst
;
1343 __gen_field(values
->CommandType
, 29, 31) |
1344 __gen_field(values
->CommandSubType
, 27, 28) |
1345 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1346 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1347 __gen_field(values
->DwordLength
, 0, 7) |
1351 __gen_offset(values
->PointertoGSBindingTable
, 5, 15) |
1356 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length 0x00000002
1357 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias 0x00000002
1358 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_header\
1360 .CommandSubType = 3, \
1361 ._3DCommandOpcode = 0, \
1362 ._3DCommandSubOpcode = 39, \
1365 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
{
1366 uint32_t CommandType
;
1367 uint32_t CommandSubType
;
1368 uint32_t _3DCommandOpcode
;
1369 uint32_t _3DCommandSubOpcode
;
1370 uint32_t DwordLength
;
1371 uint32_t PointertoHSBindingTable
;
1375 GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1376 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
* restrict values
)
1378 uint32_t *dw
= (uint32_t * restrict
) dst
;
1381 __gen_field(values
->CommandType
, 29, 31) |
1382 __gen_field(values
->CommandSubType
, 27, 28) |
1383 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1384 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1385 __gen_field(values
->DwordLength
, 0, 7) |
1389 __gen_offset(values
->PointertoHSBindingTable
, 5, 15) |
1394 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length 0x00000002
1395 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias 0x00000002
1396 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_header\
1398 .CommandSubType = 3, \
1399 ._3DCommandOpcode = 0, \
1400 ._3DCommandSubOpcode = 42, \
1403 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
{
1404 uint32_t CommandType
;
1405 uint32_t CommandSubType
;
1406 uint32_t _3DCommandOpcode
;
1407 uint32_t _3DCommandSubOpcode
;
1408 uint32_t DwordLength
;
1409 uint32_t PointertoPSBindingTable
;
1413 GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1414 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
* restrict values
)
1416 uint32_t *dw
= (uint32_t * restrict
) dst
;
1419 __gen_field(values
->CommandType
, 29, 31) |
1420 __gen_field(values
->CommandSubType
, 27, 28) |
1421 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1422 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1423 __gen_field(values
->DwordLength
, 0, 7) |
1427 __gen_offset(values
->PointertoPSBindingTable
, 5, 15) |
1432 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length 0x00000002
1433 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias 0x00000002
1434 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_header\
1436 .CommandSubType = 3, \
1437 ._3DCommandOpcode = 0, \
1438 ._3DCommandSubOpcode = 38, \
1441 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
{
1442 uint32_t CommandType
;
1443 uint32_t CommandSubType
;
1444 uint32_t _3DCommandOpcode
;
1445 uint32_t _3DCommandSubOpcode
;
1446 uint32_t DwordLength
;
1447 uint32_t PointertoVSBindingTable
;
1451 GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1452 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
* restrict values
)
1454 uint32_t *dw
= (uint32_t * restrict
) dst
;
1457 __gen_field(values
->CommandType
, 29, 31) |
1458 __gen_field(values
->CommandSubType
, 27, 28) |
1459 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1460 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1461 __gen_field(values
->DwordLength
, 0, 7) |
1465 __gen_offset(values
->PointertoVSBindingTable
, 5, 15) |
1470 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length 0x00000004
1471 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias 0x00000002
1472 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\
1474 .CommandSubType = 3, \
1475 ._3DCommandOpcode = 1, \
1476 ._3DCommandSubOpcode = 25, \
1479 struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
{
1480 uint32_t CommandType
;
1481 uint32_t CommandSubType
;
1482 uint32_t _3DCommandOpcode
;
1483 uint32_t _3DCommandSubOpcode
;
1484 uint32_t DwordLength
;
1485 __gen_address_type BindingTablePoolBaseAddress
;
1486 uint32_t BindingTablePoolEnable
;
1487 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceObjectControlState
;
1488 #define NoValidData 0
1489 uint32_t BindingTablePoolBufferSize
;
1493 GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
1494 const struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
* restrict values
)
1496 uint32_t *dw
= (uint32_t * restrict
) dst
;
1499 __gen_field(values
->CommandType
, 29, 31) |
1500 __gen_field(values
->CommandSubType
, 27, 28) |
1501 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1502 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1503 __gen_field(values
->DwordLength
, 0, 7) |
1506 uint32_t dw_SurfaceObjectControlState
;
1507 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceObjectControlState
, &values
->SurfaceObjectControlState
);
1509 __gen_field(values
->BindingTablePoolEnable
, 11, 11) |
1510 __gen_field(dw_SurfaceObjectControlState
, 0, 6) |
1514 __gen_combine_address(data
, &dw
[1], values
->BindingTablePoolBaseAddress
, dw1
);
1520 __gen_field(values
->BindingTablePoolBufferSize
, 12, 31) |
1525 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length 0x00000002
1526 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length_bias 0x00000002
1527 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_header\
1529 .CommandSubType = 3, \
1530 ._3DCommandOpcode = 0, \
1531 ._3DCommandSubOpcode = 36, \
1534 struct GEN8_3DSTATE_BLEND_STATE_POINTERS
{
1535 uint32_t CommandType
;
1536 uint32_t CommandSubType
;
1537 uint32_t _3DCommandOpcode
;
1538 uint32_t _3DCommandSubOpcode
;
1539 uint32_t DwordLength
;
1540 uint32_t BlendStatePointer
;
1541 bool BlendStatePointerValid
;
1545 GEN8_3DSTATE_BLEND_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1546 const struct GEN8_3DSTATE_BLEND_STATE_POINTERS
* restrict values
)
1548 uint32_t *dw
= (uint32_t * restrict
) dst
;
1551 __gen_field(values
->CommandType
, 29, 31) |
1552 __gen_field(values
->CommandSubType
, 27, 28) |
1553 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1554 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1555 __gen_field(values
->DwordLength
, 0, 7) |
1559 __gen_offset(values
->BlendStatePointer
, 6, 31) |
1560 __gen_field(values
->BlendStatePointerValid
, 0, 0) |
1565 #define GEN8_3DSTATE_CC_STATE_POINTERS_length 0x00000002
1566 #define GEN8_3DSTATE_CC_STATE_POINTERS_length_bias 0x00000002
1567 #define GEN8_3DSTATE_CC_STATE_POINTERS_header \
1569 .CommandSubType = 3, \
1570 ._3DCommandOpcode = 0, \
1571 ._3DCommandSubOpcode = 14, \
1574 struct GEN8_3DSTATE_CC_STATE_POINTERS
{
1575 uint32_t CommandType
;
1576 uint32_t CommandSubType
;
1577 uint32_t _3DCommandOpcode
;
1578 uint32_t _3DCommandSubOpcode
;
1579 uint32_t DwordLength
;
1580 uint32_t ColorCalcStatePointer
;
1581 bool ColorCalcStatePointerValid
;
1585 GEN8_3DSTATE_CC_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1586 const struct GEN8_3DSTATE_CC_STATE_POINTERS
* restrict values
)
1588 uint32_t *dw
= (uint32_t * restrict
) dst
;
1591 __gen_field(values
->CommandType
, 29, 31) |
1592 __gen_field(values
->CommandSubType
, 27, 28) |
1593 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1594 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1595 __gen_field(values
->DwordLength
, 0, 7) |
1599 __gen_offset(values
->ColorCalcStatePointer
, 6, 31) |
1600 __gen_field(values
->ColorCalcStatePointerValid
, 0, 0) |
1605 #define GEN8_3DSTATE_CHROMA_KEY_length 0x00000004
1606 #define GEN8_3DSTATE_CHROMA_KEY_length_bias 0x00000002
1607 #define GEN8_3DSTATE_CHROMA_KEY_header \
1609 .CommandSubType = 3, \
1610 ._3DCommandOpcode = 1, \
1611 ._3DCommandSubOpcode = 4, \
1614 struct GEN8_3DSTATE_CHROMA_KEY
{
1615 uint32_t CommandType
;
1616 uint32_t CommandSubType
;
1617 uint32_t _3DCommandOpcode
;
1618 uint32_t _3DCommandSubOpcode
;
1619 uint32_t DwordLength
;
1620 uint32_t ChromaKeyTableIndex
;
1621 uint32_t ChromaKeyLowValue
;
1622 uint32_t ChromaKeyHighValue
;
1626 GEN8_3DSTATE_CHROMA_KEY_pack(__gen_user_data
*data
, void * restrict dst
,
1627 const struct GEN8_3DSTATE_CHROMA_KEY
* restrict values
)
1629 uint32_t *dw
= (uint32_t * restrict
) dst
;
1632 __gen_field(values
->CommandType
, 29, 31) |
1633 __gen_field(values
->CommandSubType
, 27, 28) |
1634 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1635 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1636 __gen_field(values
->DwordLength
, 0, 7) |
1640 __gen_field(values
->ChromaKeyTableIndex
, 30, 31) |
1644 __gen_field(values
->ChromaKeyLowValue
, 0, 31) |
1648 __gen_field(values
->ChromaKeyHighValue
, 0, 31) |
1653 #define GEN8_3DSTATE_CLEAR_PARAMS_length 0x00000003
1654 #define GEN8_3DSTATE_CLEAR_PARAMS_length_bias 0x00000002
1655 #define GEN8_3DSTATE_CLEAR_PARAMS_header \
1657 .CommandSubType = 3, \
1658 ._3DCommandOpcode = 0, \
1659 ._3DCommandSubOpcode = 4, \
1662 struct GEN8_3DSTATE_CLEAR_PARAMS
{
1663 uint32_t CommandType
;
1664 uint32_t CommandSubType
;
1665 uint32_t _3DCommandOpcode
;
1666 uint32_t _3DCommandSubOpcode
;
1667 uint32_t DwordLength
;
1668 float DepthClearValue
;
1669 bool DepthClearValueValid
;
1673 GEN8_3DSTATE_CLEAR_PARAMS_pack(__gen_user_data
*data
, void * restrict dst
,
1674 const struct GEN8_3DSTATE_CLEAR_PARAMS
* restrict values
)
1676 uint32_t *dw
= (uint32_t * restrict
) dst
;
1679 __gen_field(values
->CommandType
, 29, 31) |
1680 __gen_field(values
->CommandSubType
, 27, 28) |
1681 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1682 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1683 __gen_field(values
->DwordLength
, 0, 7) |
1687 __gen_float(values
->DepthClearValue
) |
1691 __gen_field(values
->DepthClearValueValid
, 0, 0) |
1696 #define GEN8_3DSTATE_CLIP_length 0x00000004
1697 #define GEN8_3DSTATE_CLIP_length_bias 0x00000002
1698 #define GEN8_3DSTATE_CLIP_header \
1700 .CommandSubType = 3, \
1701 ._3DCommandOpcode = 0, \
1702 ._3DCommandSubOpcode = 18, \
1705 struct GEN8_3DSTATE_CLIP
{
1706 uint32_t CommandType
;
1707 uint32_t CommandSubType
;
1708 uint32_t _3DCommandOpcode
;
1709 uint32_t _3DCommandSubOpcode
;
1710 uint32_t DwordLength
;
1713 bool ForceUserClipDistanceCullTestEnableBitmask
;
1716 uint32_t VertexSubPixelPrecisionSelect
;
1717 bool EarlyCullEnable
;
1720 bool ForceUserClipDistanceClipTestEnableBitmask
;
1724 bool ClipperStatisticsEnable
;
1725 uint32_t UserClipDistanceCullTestEnableBitmask
;
1729 bool ViewportXYClipTestEnable
;
1730 bool GuardbandClipTestEnable
;
1731 uint32_t UserClipDistanceClipTestEnableBitmask
;
1733 #define REJECT_ALL 3
1734 #define ACCEPT_ALL 4
1736 bool PerspectiveDivideDisable
;
1737 bool NonPerspectiveBarycentricEnable
;
1738 uint32_t TriangleStripListProvokingVertexSelect
;
1739 uint32_t LineStripListProvokingVertexSelect
;
1740 uint32_t TriangleFanProvokingVertexSelect
;
1741 float MinimumPointWidth
;
1742 float MaximumPointWidth
;
1743 bool ForceZeroRTAIndexEnable
;
1744 uint32_t MaximumVPIndex
;
1748 GEN8_3DSTATE_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
1749 const struct GEN8_3DSTATE_CLIP
* restrict values
)
1751 uint32_t *dw
= (uint32_t * restrict
) dst
;
1754 __gen_field(values
->CommandType
, 29, 31) |
1755 __gen_field(values
->CommandSubType
, 27, 28) |
1756 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1757 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1758 __gen_field(values
->DwordLength
, 0, 7) |
1762 __gen_field(values
->ForceUserClipDistanceCullTestEnableBitmask
, 20, 20) |
1763 __gen_field(values
->VertexSubPixelPrecisionSelect
, 19, 19) |
1764 __gen_field(values
->EarlyCullEnable
, 18, 18) |
1765 __gen_field(values
->ForceUserClipDistanceClipTestEnableBitmask
, 17, 17) |
1766 __gen_field(values
->ForceClipMode
, 16, 16) |
1767 __gen_field(values
->ClipperStatisticsEnable
, 10, 10) |
1768 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
1772 __gen_field(values
->ClipEnable
, 31, 31) |
1773 __gen_field(values
->APIMode
, 30, 30) |
1774 __gen_field(values
->ViewportXYClipTestEnable
, 28, 28) |
1775 __gen_field(values
->GuardbandClipTestEnable
, 26, 26) |
1776 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 16, 23) |
1777 __gen_field(values
->ClipMode
, 13, 15) |
1778 __gen_field(values
->PerspectiveDivideDisable
, 9, 9) |
1779 __gen_field(values
->NonPerspectiveBarycentricEnable
, 8, 8) |
1780 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 4, 5) |
1781 __gen_field(values
->LineStripListProvokingVertexSelect
, 2, 3) |
1782 __gen_field(values
->TriangleFanProvokingVertexSelect
, 0, 1) |
1786 __gen_field(values
->MinimumPointWidth
* (1 << 3), 17, 27) |
1787 __gen_field(values
->MaximumPointWidth
* (1 << 3), 6, 16) |
1788 __gen_field(values
->ForceZeroRTAIndexEnable
, 5, 5) |
1789 __gen_field(values
->MaximumVPIndex
, 0, 3) |
1794 #define GEN8_3DSTATE_CONSTANT_DS_length 0x0000000b
1795 #define GEN8_3DSTATE_CONSTANT_DS_length_bias 0x00000002
1796 #define GEN8_3DSTATE_CONSTANT_DS_header \
1798 .CommandSubType = 3, \
1799 ._3DCommandOpcode = 0, \
1800 ._3DCommandSubOpcode = 26, \
1803 struct GEN8_3DSTATE_CONSTANT_BODY
{
1804 uint32_t ConstantBuffer1ReadLength
;
1805 uint32_t ConstantBuffer0ReadLength
;
1806 uint32_t ConstantBuffer3ReadLength
;
1807 uint32_t ConstantBuffer2ReadLength
;
1808 __gen_address_type PointerToConstantBuffer0
;
1809 __gen_address_type PointerToConstantBuffer1
;
1810 __gen_address_type PointerToConstantBuffer2
;
1811 __gen_address_type PointerToConstantBuffer3
;
1815 GEN8_3DSTATE_CONSTANT_BODY_pack(__gen_user_data
*data
, void * restrict dst
,
1816 const struct GEN8_3DSTATE_CONSTANT_BODY
* restrict values
)
1818 uint32_t *dw
= (uint32_t * restrict
) dst
;
1821 __gen_field(values
->ConstantBuffer1ReadLength
, 16, 31) |
1822 __gen_field(values
->ConstantBuffer0ReadLength
, 0, 15) |
1826 __gen_field(values
->ConstantBuffer3ReadLength
, 16, 31) |
1827 __gen_field(values
->ConstantBuffer2ReadLength
, 0, 15) |
1834 __gen_combine_address(data
, &dw
[2], values
->PointerToConstantBuffer0
, dw2
);
1843 __gen_combine_address(data
, &dw
[4], values
->PointerToConstantBuffer1
, dw4
);
1852 __gen_combine_address(data
, &dw
[6], values
->PointerToConstantBuffer2
, dw6
);
1861 __gen_combine_address(data
, &dw
[8], values
->PointerToConstantBuffer3
, dw8
);
1868 struct GEN8_3DSTATE_CONSTANT_DS
{
1869 uint32_t CommandType
;
1870 uint32_t CommandSubType
;
1871 uint32_t _3DCommandOpcode
;
1872 uint32_t _3DCommandSubOpcode
;
1873 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1874 uint32_t DwordLength
;
1875 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1879 GEN8_3DSTATE_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1880 const struct GEN8_3DSTATE_CONSTANT_DS
* restrict values
)
1882 uint32_t *dw
= (uint32_t * restrict
) dst
;
1884 uint32_t dw_ConstantBufferObjectControlState
;
1885 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1887 __gen_field(values
->CommandType
, 29, 31) |
1888 __gen_field(values
->CommandSubType
, 27, 28) |
1889 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1890 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1891 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1892 __gen_field(values
->DwordLength
, 0, 7) |
1895 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1898 #define GEN8_3DSTATE_CONSTANT_GS_length 0x0000000b
1899 #define GEN8_3DSTATE_CONSTANT_GS_length_bias 0x00000002
1900 #define GEN8_3DSTATE_CONSTANT_GS_header \
1902 .CommandSubType = 3, \
1903 ._3DCommandOpcode = 0, \
1904 ._3DCommandSubOpcode = 22, \
1907 struct GEN8_3DSTATE_CONSTANT_GS
{
1908 uint32_t CommandType
;
1909 uint32_t CommandSubType
;
1910 uint32_t _3DCommandOpcode
;
1911 uint32_t _3DCommandSubOpcode
;
1912 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1913 uint32_t DwordLength
;
1914 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1918 GEN8_3DSTATE_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1919 const struct GEN8_3DSTATE_CONSTANT_GS
* restrict values
)
1921 uint32_t *dw
= (uint32_t * restrict
) dst
;
1923 uint32_t dw_ConstantBufferObjectControlState
;
1924 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1926 __gen_field(values
->CommandType
, 29, 31) |
1927 __gen_field(values
->CommandSubType
, 27, 28) |
1928 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1929 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1930 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1931 __gen_field(values
->DwordLength
, 0, 7) |
1934 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1937 #define GEN8_3DSTATE_CONSTANT_HS_length 0x0000000b
1938 #define GEN8_3DSTATE_CONSTANT_HS_length_bias 0x00000002
1939 #define GEN8_3DSTATE_CONSTANT_HS_header \
1941 .CommandSubType = 3, \
1942 ._3DCommandOpcode = 0, \
1943 ._3DCommandSubOpcode = 25, \
1946 struct GEN8_3DSTATE_CONSTANT_HS
{
1947 uint32_t CommandType
;
1948 uint32_t CommandSubType
;
1949 uint32_t _3DCommandOpcode
;
1950 uint32_t _3DCommandSubOpcode
;
1951 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1952 uint32_t DwordLength
;
1953 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1957 GEN8_3DSTATE_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1958 const struct GEN8_3DSTATE_CONSTANT_HS
* restrict values
)
1960 uint32_t *dw
= (uint32_t * restrict
) dst
;
1962 uint32_t dw_ConstantBufferObjectControlState
;
1963 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1965 __gen_field(values
->CommandType
, 29, 31) |
1966 __gen_field(values
->CommandSubType
, 27, 28) |
1967 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1968 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1969 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1970 __gen_field(values
->DwordLength
, 0, 7) |
1973 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1976 #define GEN8_3DSTATE_CONSTANT_PS_length 0x0000000b
1977 #define GEN8_3DSTATE_CONSTANT_PS_length_bias 0x00000002
1978 #define GEN8_3DSTATE_CONSTANT_PS_header \
1980 .CommandSubType = 3, \
1981 ._3DCommandOpcode = 0, \
1982 ._3DCommandSubOpcode = 23, \
1985 struct GEN8_3DSTATE_CONSTANT_PS
{
1986 uint32_t CommandType
;
1987 uint32_t CommandSubType
;
1988 uint32_t _3DCommandOpcode
;
1989 uint32_t _3DCommandSubOpcode
;
1990 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1991 uint32_t DwordLength
;
1992 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1996 GEN8_3DSTATE_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1997 const struct GEN8_3DSTATE_CONSTANT_PS
* restrict values
)
1999 uint32_t *dw
= (uint32_t * restrict
) dst
;
2001 uint32_t dw_ConstantBufferObjectControlState
;
2002 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2004 __gen_field(values
->CommandType
, 29, 31) |
2005 __gen_field(values
->CommandSubType
, 27, 28) |
2006 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2007 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2008 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2009 __gen_field(values
->DwordLength
, 0, 7) |
2012 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2015 #define GEN8_3DSTATE_CONSTANT_VS_length 0x0000000b
2016 #define GEN8_3DSTATE_CONSTANT_VS_length_bias 0x00000002
2017 #define GEN8_3DSTATE_CONSTANT_VS_header \
2019 .CommandSubType = 3, \
2020 ._3DCommandOpcode = 0, \
2021 ._3DCommandSubOpcode = 21, \
2024 struct GEN8_3DSTATE_CONSTANT_VS
{
2025 uint32_t CommandType
;
2026 uint32_t CommandSubType
;
2027 uint32_t _3DCommandOpcode
;
2028 uint32_t _3DCommandSubOpcode
;
2029 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
2030 uint32_t DwordLength
;
2031 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
2035 GEN8_3DSTATE_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2036 const struct GEN8_3DSTATE_CONSTANT_VS
* restrict values
)
2038 uint32_t *dw
= (uint32_t * restrict
) dst
;
2040 uint32_t dw_ConstantBufferObjectControlState
;
2041 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2043 __gen_field(values
->CommandType
, 29, 31) |
2044 __gen_field(values
->CommandSubType
, 27, 28) |
2045 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2046 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2047 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2048 __gen_field(values
->DwordLength
, 0, 7) |
2051 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2054 #define GEN8_3DSTATE_DEPTH_BUFFER_length 0x00000008
2055 #define GEN8_3DSTATE_DEPTH_BUFFER_length_bias 0x00000002
2056 #define GEN8_3DSTATE_DEPTH_BUFFER_header \
2058 .CommandSubType = 3, \
2059 ._3DCommandOpcode = 0, \
2060 ._3DCommandSubOpcode = 5, \
2063 struct GEN8_3DSTATE_DEPTH_BUFFER
{
2064 uint32_t CommandType
;
2065 uint32_t CommandSubType
;
2066 uint32_t _3DCommandOpcode
;
2067 uint32_t _3DCommandSubOpcode
;
2068 uint32_t DwordLength
;
2069 #define SURFTYPE_1D 0
2070 #define SURFTYPE_2D 1
2071 #define SURFTYPE_3D 2
2072 #define SURFTYPE_CUBE 3
2073 #define SURFTYPE_NULL 7
2074 uint32_t SurfaceType
;
2075 bool DepthWriteEnable
;
2076 bool StencilWriteEnable
;
2077 bool HierarchicalDepthBufferEnable
;
2079 #define D24_UNORM_X8_UINT 3
2081 uint32_t SurfaceFormat
;
2082 uint32_t SurfacePitch
;
2083 __gen_address_type SurfaceBaseAddress
;
2088 uint32_t MinimumArrayElement
;
2089 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DepthBufferObjectControlState
;
2090 uint32_t RenderTargetViewExtent
;
2091 uint32_t SurfaceQPitch
;
2095 GEN8_3DSTATE_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2096 const struct GEN8_3DSTATE_DEPTH_BUFFER
* restrict values
)
2098 uint32_t *dw
= (uint32_t * restrict
) dst
;
2101 __gen_field(values
->CommandType
, 29, 31) |
2102 __gen_field(values
->CommandSubType
, 27, 28) |
2103 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2104 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2105 __gen_field(values
->DwordLength
, 0, 7) |
2109 __gen_field(values
->SurfaceType
, 29, 31) |
2110 __gen_field(values
->DepthWriteEnable
, 28, 28) |
2111 __gen_field(values
->StencilWriteEnable
, 27, 27) |
2112 __gen_field(values
->HierarchicalDepthBufferEnable
, 22, 22) |
2113 __gen_field(values
->SurfaceFormat
, 18, 20) |
2114 __gen_field(values
->SurfacePitch
, 0, 17) |
2121 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2127 __gen_field(values
->Height
, 18, 31) |
2128 __gen_field(values
->Width
, 4, 17) |
2129 __gen_field(values
->LOD
, 0, 3) |
2132 uint32_t dw_DepthBufferObjectControlState
;
2133 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DepthBufferObjectControlState
, &values
->DepthBufferObjectControlState
);
2135 __gen_field(values
->Depth
, 21, 31) |
2136 __gen_field(values
->MinimumArrayElement
, 10, 20) |
2137 __gen_field(dw_DepthBufferObjectControlState
, 0, 6) |
2144 __gen_field(values
->RenderTargetViewExtent
, 21, 31) |
2145 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2150 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length 0x00000004
2151 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length_bias 0x00000002
2152 #define GEN8_3DSTATE_DRAWING_RECTANGLE_header \
2154 .CommandSubType = 3, \
2155 ._3DCommandOpcode = 1, \
2156 ._3DCommandSubOpcode = 0, \
2159 struct GEN8_3DSTATE_DRAWING_RECTANGLE
{
2160 uint32_t CommandType
;
2161 uint32_t CommandSubType
;
2162 uint32_t _3DCommandOpcode
;
2163 uint32_t _3DCommandSubOpcode
;
2165 #define Core0Enabled 1
2166 #define Core1Enabled 2
2167 uint32_t CoreModeSelect
;
2168 uint32_t DwordLength
;
2169 uint32_t ClippedDrawingRectangleYMin
;
2170 uint32_t ClippedDrawingRectangleXMin
;
2171 uint32_t ClippedDrawingRectangleYMax
;
2172 uint32_t ClippedDrawingRectangleXMax
;
2173 uint32_t DrawingRectangleOriginY
;
2174 uint32_t DrawingRectangleOriginX
;
2178 GEN8_3DSTATE_DRAWING_RECTANGLE_pack(__gen_user_data
*data
, void * restrict dst
,
2179 const struct GEN8_3DSTATE_DRAWING_RECTANGLE
* restrict values
)
2181 uint32_t *dw
= (uint32_t * restrict
) dst
;
2184 __gen_field(values
->CommandType
, 29, 31) |
2185 __gen_field(values
->CommandSubType
, 27, 28) |
2186 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2187 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2188 __gen_field(values
->CoreModeSelect
, 14, 15) |
2189 __gen_field(values
->DwordLength
, 0, 7) |
2193 __gen_field(values
->ClippedDrawingRectangleYMin
, 16, 31) |
2194 __gen_field(values
->ClippedDrawingRectangleXMin
, 0, 15) |
2198 __gen_field(values
->ClippedDrawingRectangleYMax
, 16, 31) |
2199 __gen_field(values
->ClippedDrawingRectangleXMax
, 0, 15) |
2203 __gen_field(values
->DrawingRectangleOriginY
, 16, 31) |
2204 __gen_field(values
->DrawingRectangleOriginX
, 0, 15) |
2209 #define GEN8_3DSTATE_DS_length 0x00000009
2210 #define GEN8_3DSTATE_DS_length_bias 0x00000002
2211 #define GEN8_3DSTATE_DS_header \
2213 .CommandSubType = 3, \
2214 ._3DCommandOpcode = 0, \
2215 ._3DCommandSubOpcode = 29, \
2218 struct GEN8_3DSTATE_DS
{
2219 uint32_t CommandType
;
2220 uint32_t CommandSubType
;
2221 uint32_t _3DCommandOpcode
;
2222 uint32_t _3DCommandSubOpcode
;
2223 uint32_t DwordLength
;
2224 uint64_t KernelStartPointer
;
2227 uint32_t SingleDomainPointDispatch
;
2230 uint32_t VectorMaskEnable
;
2231 #define NoSamplers 0
2232 #define _14Samplers 1
2233 #define _58Samplers 2
2234 #define _912Samplers 3
2235 #define _1316Samplers 4
2236 uint32_t SamplerCount
;
2237 uint32_t BindingTableEntryCount
;
2240 uint32_t ThreadDispatchPriority
;
2243 uint32_t FloatingPointMode
;
2245 bool IllegalOpcodeExceptionEnable
;
2246 bool SoftwareExceptionEnable
;
2247 uint64_t ScratchSpaceBasePointer
;
2248 uint32_t PerThreadScratchSpace
;
2249 uint32_t DispatchGRFStartRegisterForURBData
;
2250 uint32_t PatchURBEntryReadLength
;
2251 uint32_t PatchURBEntryReadOffset
;
2252 uint32_t MaximumNumberofThreads
;
2253 bool StatisticsEnable
;
2254 bool SIMD8DispatchEnable
;
2255 bool ComputeWCoordinateEnable
;
2257 bool FunctionEnable
;
2258 uint32_t VertexURBEntryOutputReadOffset
;
2259 uint32_t VertexURBEntryOutputLength
;
2260 uint32_t UserClipDistanceClipTestEnableBitmask
;
2261 uint32_t UserClipDistanceCullTestEnableBitmask
;
2265 GEN8_3DSTATE_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2266 const struct GEN8_3DSTATE_DS
* restrict values
)
2268 uint32_t *dw
= (uint32_t * restrict
) dst
;
2271 __gen_field(values
->CommandType
, 29, 31) |
2272 __gen_field(values
->CommandSubType
, 27, 28) |
2273 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2274 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2275 __gen_field(values
->DwordLength
, 0, 7) |
2279 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2286 __gen_field(values
->SingleDomainPointDispatch
, 31, 31) |
2287 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2288 __gen_field(values
->SamplerCount
, 27, 29) |
2289 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2290 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2291 __gen_field(values
->FloatingPointMode
, 16, 16) |
2292 __gen_field(values
->AccessesUAV
, 14, 14) |
2293 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2294 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2298 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2299 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2306 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
2307 __gen_field(values
->PatchURBEntryReadLength
, 11, 17) |
2308 __gen_field(values
->PatchURBEntryReadOffset
, 4, 9) |
2312 __gen_field(values
->MaximumNumberofThreads
, 21, 29) |
2313 __gen_field(values
->StatisticsEnable
, 10, 10) |
2314 __gen_field(values
->SIMD8DispatchEnable
, 3, 3) |
2315 __gen_field(values
->ComputeWCoordinateEnable
, 2, 2) |
2316 __gen_field(values
->CacheDisable
, 1, 1) |
2317 __gen_field(values
->FunctionEnable
, 0, 0) |
2321 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2322 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2323 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2324 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2329 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_length_bias 0x00000002
2330 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_header \
2332 .CommandSubType = 3, \
2333 ._3DCommandOpcode = 0, \
2334 ._3DCommandSubOpcode = 55
2336 struct GEN8_GATHER_CONSTANT_ENTRY
{
2337 uint32_t ConstantBufferOffset
;
2338 uint32_t ChannelMask
;
2339 uint32_t BindingTableIndexOffset
;
2343 GEN8_GATHER_CONSTANT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
2344 const struct GEN8_GATHER_CONSTANT_ENTRY
* restrict values
)
2346 uint32_t *dw
= (uint32_t * restrict
) dst
;
2349 __gen_offset(values
->ConstantBufferOffset
, 8, 15) |
2350 __gen_field(values
->ChannelMask
, 4, 7) |
2351 __gen_field(values
->BindingTableIndexOffset
, 0, 3) |
2356 struct GEN8_3DSTATE_GATHER_CONSTANT_DS
{
2357 uint32_t CommandType
;
2358 uint32_t CommandSubType
;
2359 uint32_t _3DCommandOpcode
;
2360 uint32_t _3DCommandSubOpcode
;
2361 uint32_t DwordLength
;
2362 uint32_t ConstantBufferValid
;
2363 uint32_t ConstantBufferBindingTableBlock
;
2364 uint32_t GatherBufferOffset
;
2365 bool ConstantBufferDx9GenerateStall
;
2366 /* variable length fields follow */
2370 GEN8_3DSTATE_GATHER_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2371 const struct GEN8_3DSTATE_GATHER_CONSTANT_DS
* restrict values
)
2373 uint32_t *dw
= (uint32_t * restrict
) dst
;
2376 __gen_field(values
->CommandType
, 29, 31) |
2377 __gen_field(values
->CommandSubType
, 27, 28) |
2378 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2379 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2380 __gen_field(values
->DwordLength
, 0, 7) |
2384 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2385 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2389 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2390 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2393 /* variable length fields follow */
2396 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_length_bias 0x00000002
2397 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_header \
2399 .CommandSubType = 3, \
2400 ._3DCommandOpcode = 0, \
2401 ._3DCommandSubOpcode = 53
2403 struct GEN8_3DSTATE_GATHER_CONSTANT_GS
{
2404 uint32_t CommandType
;
2405 uint32_t CommandSubType
;
2406 uint32_t _3DCommandOpcode
;
2407 uint32_t _3DCommandSubOpcode
;
2408 uint32_t DwordLength
;
2409 uint32_t ConstantBufferValid
;
2410 uint32_t ConstantBufferBindingTableBlock
;
2411 uint32_t GatherBufferOffset
;
2412 bool ConstantBufferDx9GenerateStall
;
2413 /* variable length fields follow */
2417 GEN8_3DSTATE_GATHER_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2418 const struct GEN8_3DSTATE_GATHER_CONSTANT_GS
* restrict values
)
2420 uint32_t *dw
= (uint32_t * restrict
) dst
;
2423 __gen_field(values
->CommandType
, 29, 31) |
2424 __gen_field(values
->CommandSubType
, 27, 28) |
2425 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2426 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2427 __gen_field(values
->DwordLength
, 0, 7) |
2431 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2432 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2436 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2437 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2440 /* variable length fields follow */
2443 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_length_bias 0x00000002
2444 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_header \
2446 .CommandSubType = 3, \
2447 ._3DCommandOpcode = 0, \
2448 ._3DCommandSubOpcode = 54
2450 struct GEN8_3DSTATE_GATHER_CONSTANT_HS
{
2451 uint32_t CommandType
;
2452 uint32_t CommandSubType
;
2453 uint32_t _3DCommandOpcode
;
2454 uint32_t _3DCommandSubOpcode
;
2455 uint32_t DwordLength
;
2456 uint32_t ConstantBufferValid
;
2457 uint32_t ConstantBufferBindingTableBlock
;
2458 uint32_t GatherBufferOffset
;
2459 bool ConstantBufferDx9GenerateStall
;
2460 /* variable length fields follow */
2464 GEN8_3DSTATE_GATHER_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2465 const struct GEN8_3DSTATE_GATHER_CONSTANT_HS
* restrict values
)
2467 uint32_t *dw
= (uint32_t * restrict
) dst
;
2470 __gen_field(values
->CommandType
, 29, 31) |
2471 __gen_field(values
->CommandSubType
, 27, 28) |
2472 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2473 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2474 __gen_field(values
->DwordLength
, 0, 7) |
2478 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2479 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2483 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2484 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2487 /* variable length fields follow */
2490 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_length_bias 0x00000002
2491 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_header \
2493 .CommandSubType = 3, \
2494 ._3DCommandOpcode = 0, \
2495 ._3DCommandSubOpcode = 56
2497 struct GEN8_3DSTATE_GATHER_CONSTANT_PS
{
2498 uint32_t CommandType
;
2499 uint32_t CommandSubType
;
2500 uint32_t _3DCommandOpcode
;
2501 uint32_t _3DCommandSubOpcode
;
2502 uint32_t DwordLength
;
2503 uint32_t ConstantBufferValid
;
2504 uint32_t ConstantBufferBindingTableBlock
;
2505 uint32_t GatherBufferOffset
;
2506 bool ConstantBufferDx9GenerateStall
;
2507 bool ConstantBufferDx9Enable
;
2508 /* variable length fields follow */
2512 GEN8_3DSTATE_GATHER_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
2513 const struct GEN8_3DSTATE_GATHER_CONSTANT_PS
* restrict values
)
2515 uint32_t *dw
= (uint32_t * restrict
) dst
;
2518 __gen_field(values
->CommandType
, 29, 31) |
2519 __gen_field(values
->CommandSubType
, 27, 28) |
2520 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2521 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2522 __gen_field(values
->DwordLength
, 0, 7) |
2526 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2527 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2531 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2532 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2533 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2536 /* variable length fields follow */
2539 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_length_bias 0x00000002
2540 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_header \
2542 .CommandSubType = 3, \
2543 ._3DCommandOpcode = 0, \
2544 ._3DCommandSubOpcode = 52
2546 struct GEN8_3DSTATE_GATHER_CONSTANT_VS
{
2547 uint32_t CommandType
;
2548 uint32_t CommandSubType
;
2549 uint32_t _3DCommandOpcode
;
2550 uint32_t _3DCommandSubOpcode
;
2551 uint32_t DwordLength
;
2552 uint32_t ConstantBufferValid
;
2553 uint32_t ConstantBufferBindingTableBlock
;
2554 uint32_t GatherBufferOffset
;
2555 bool ConstantBufferDx9GenerateStall
;
2556 bool ConstantBufferDx9Enable
;
2557 /* variable length fields follow */
2561 GEN8_3DSTATE_GATHER_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2562 const struct GEN8_3DSTATE_GATHER_CONSTANT_VS
* restrict values
)
2564 uint32_t *dw
= (uint32_t * restrict
) dst
;
2567 __gen_field(values
->CommandType
, 29, 31) |
2568 __gen_field(values
->CommandSubType
, 27, 28) |
2569 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2570 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2571 __gen_field(values
->DwordLength
, 0, 7) |
2575 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2576 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2580 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2581 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2582 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2585 /* variable length fields follow */
2588 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length 0x00000004
2589 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length_bias 0x00000002
2590 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_header \
2592 .CommandSubType = 3, \
2593 ._3DCommandOpcode = 1, \
2594 ._3DCommandSubOpcode = 26, \
2597 struct GEN8_3DSTATE_GATHER_POOL_ALLOC
{
2598 uint32_t CommandType
;
2599 uint32_t CommandSubType
;
2600 uint32_t _3DCommandOpcode
;
2601 uint32_t _3DCommandSubOpcode
;
2602 uint32_t DwordLength
;
2603 __gen_address_type GatherPoolBaseAddress
;
2604 bool GatherPoolEnable
;
2605 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2606 uint32_t GatherPoolBufferSize
;
2610 GEN8_3DSTATE_GATHER_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
2611 const struct GEN8_3DSTATE_GATHER_POOL_ALLOC
* restrict values
)
2613 uint32_t *dw
= (uint32_t * restrict
) dst
;
2616 __gen_field(values
->CommandType
, 29, 31) |
2617 __gen_field(values
->CommandSubType
, 27, 28) |
2618 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2619 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2620 __gen_field(values
->DwordLength
, 0, 7) |
2623 uint32_t dw_MemoryObjectControlState
;
2624 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
2626 __gen_field(values
->GatherPoolEnable
, 11, 11) |
2627 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
2631 __gen_combine_address(data
, &dw
[1], values
->GatherPoolBaseAddress
, dw1
);
2637 __gen_field(values
->GatherPoolBufferSize
, 12, 31) |
2642 #define GEN8_3DSTATE_GS_length 0x0000000a
2643 #define GEN8_3DSTATE_GS_length_bias 0x00000002
2644 #define GEN8_3DSTATE_GS_header \
2646 .CommandSubType = 3, \
2647 ._3DCommandOpcode = 0, \
2648 ._3DCommandSubOpcode = 17, \
2651 struct GEN8_3DSTATE_GS
{
2652 uint32_t CommandType
;
2653 uint32_t CommandSubType
;
2654 uint32_t _3DCommandOpcode
;
2655 uint32_t _3DCommandSubOpcode
;
2656 uint32_t DwordLength
;
2657 uint64_t KernelStartPointer
;
2658 uint32_t SingleProgramFlow
;
2661 uint32_t VectorMaskEnable
;
2662 #define NoSamplers 0
2663 #define _14Samplers 1
2664 #define _58Samplers 2
2665 #define _912Samplers 3
2666 #define _1316Samplers 4
2667 uint32_t SamplerCount
;
2668 uint32_t BindingTableEntryCount
;
2671 uint32_t ThreadDispatchPriority
;
2674 uint32_t FloatingPointMode
;
2675 bool IllegalOpcodeExceptionEnable
;
2677 bool MaskStackExceptionEnable
;
2678 bool SoftwareExceptionEnable
;
2679 uint32_t ExpectedVertexCount
;
2680 uint64_t ScratchSpaceBasePointer
;
2681 uint32_t PerThreadScratchSpace
;
2682 uint32_t OutputVertexSize
;
2683 uint32_t OutputTopology
;
2684 uint32_t VertexURBEntryReadLength
;
2685 bool IncludeVertexHandles
;
2686 uint32_t VertexURBEntryReadOffset
;
2687 uint32_t DispatchGRFStartRegisterForURBData
;
2688 uint32_t MaximumNumberofThreads
;
2689 uint32_t ControlDataHeaderSize
;
2690 uint32_t InstanceControl
;
2691 uint32_t DefaultStreamId
;
2692 #define DispatchModeSingle 0
2693 #define DispatchModeDualInstance 1
2694 #define DispatchModeDualObject 2
2695 #define DispatchModeSIMD8 3
2696 uint32_t DispatchMode
;
2697 bool StatisticsEnable
;
2698 uint32_t InvocationsIncrementValue
;
2699 bool IncludePrimitiveID
;
2703 uint32_t ReorderMode
;
2704 bool DiscardAdjacency
;
2708 uint32_t ControlDataFormat
;
2710 uint32_t StaticOutputVertexCount
;
2711 uint32_t VertexURBEntryOutputReadOffset
;
2712 uint32_t VertexURBEntryOutputLength
;
2713 uint32_t UserClipDistanceClipTestEnableBitmask
;
2714 uint32_t UserClipDistanceCullTestEnableBitmask
;
2718 GEN8_3DSTATE_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2719 const struct GEN8_3DSTATE_GS
* restrict values
)
2721 uint32_t *dw
= (uint32_t * restrict
) dst
;
2724 __gen_field(values
->CommandType
, 29, 31) |
2725 __gen_field(values
->CommandSubType
, 27, 28) |
2726 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2727 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2728 __gen_field(values
->DwordLength
, 0, 7) |
2732 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2739 __gen_field(values
->SingleProgramFlow
, 31, 31) |
2740 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2741 __gen_field(values
->SamplerCount
, 27, 29) |
2742 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2743 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2744 __gen_field(values
->FloatingPointMode
, 16, 16) |
2745 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2746 __gen_field(values
->AccessesUAV
, 12, 12) |
2747 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
2748 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2749 __gen_field(values
->ExpectedVertexCount
, 0, 5) |
2753 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2754 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2761 __gen_field(values
->OutputVertexSize
, 23, 28) |
2762 __gen_field(values
->OutputTopology
, 17, 22) |
2763 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2764 __gen_field(values
->IncludeVertexHandles
, 10, 10) |
2765 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2766 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 0, 3) |
2770 __gen_field(values
->MaximumNumberofThreads
, 24, 31) |
2771 __gen_field(values
->ControlDataHeaderSize
, 20, 23) |
2772 __gen_field(values
->InstanceControl
, 15, 19) |
2773 __gen_field(values
->DefaultStreamId
, 13, 14) |
2774 __gen_field(values
->DispatchMode
, 11, 12) |
2775 __gen_field(values
->StatisticsEnable
, 10, 10) |
2776 __gen_field(values
->InvocationsIncrementValue
, 5, 9) |
2777 __gen_field(values
->IncludePrimitiveID
, 4, 4) |
2778 __gen_field(values
->Hint
, 3, 3) |
2779 __gen_field(values
->ReorderMode
, 2, 2) |
2780 __gen_field(values
->DiscardAdjacency
, 1, 1) |
2781 __gen_field(values
->Enable
, 0, 0) |
2785 __gen_field(values
->ControlDataFormat
, 31, 31) |
2786 __gen_field(values
->StaticOutput
, 30, 30) |
2787 __gen_field(values
->StaticOutputVertexCount
, 16, 26) |
2791 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2792 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2793 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2794 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2799 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length 0x00000005
2800 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length_bias 0x00000002
2801 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_header \
2803 .CommandSubType = 3, \
2804 ._3DCommandOpcode = 0, \
2805 ._3DCommandSubOpcode = 7, \
2808 struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
{
2809 uint32_t CommandType
;
2810 uint32_t CommandSubType
;
2811 uint32_t _3DCommandOpcode
;
2812 uint32_t _3DCommandSubOpcode
;
2813 uint32_t DwordLength
;
2814 struct GEN8_MEMORY_OBJECT_CONTROL_STATE HierarchicalDepthBufferObjectControlState
;
2815 uint32_t SurfacePitch
;
2816 __gen_address_type SurfaceBaseAddress
;
2817 uint32_t SurfaceQPitch
;
2821 GEN8_3DSTATE_HIER_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2822 const struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
* restrict values
)
2824 uint32_t *dw
= (uint32_t * restrict
) dst
;
2827 __gen_field(values
->CommandType
, 29, 31) |
2828 __gen_field(values
->CommandSubType
, 27, 28) |
2829 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2830 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2831 __gen_field(values
->DwordLength
, 0, 7) |
2834 uint32_t dw_HierarchicalDepthBufferObjectControlState
;
2835 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_HierarchicalDepthBufferObjectControlState
, &values
->HierarchicalDepthBufferObjectControlState
);
2837 __gen_field(dw_HierarchicalDepthBufferObjectControlState
, 25, 31) |
2838 __gen_field(values
->SurfacePitch
, 0, 16) |
2845 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2851 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2856 #define GEN8_3DSTATE_HS_length 0x00000009
2857 #define GEN8_3DSTATE_HS_length_bias 0x00000002
2858 #define GEN8_3DSTATE_HS_header \
2860 .CommandSubType = 3, \
2861 ._3DCommandOpcode = 0, \
2862 ._3DCommandSubOpcode = 27, \
2865 struct GEN8_3DSTATE_HS
{
2866 uint32_t CommandType
;
2867 uint32_t CommandSubType
;
2868 uint32_t _3DCommandOpcode
;
2869 uint32_t _3DCommandSubOpcode
;
2870 uint32_t DwordLength
;
2871 #define NoSamplers 0
2872 #define _14Samplers 1
2873 #define _58Samplers 2
2874 #define _912Samplers 3
2875 #define _1316Samplers 4
2876 uint32_t SamplerCount
;
2877 uint32_t BindingTableEntryCount
;
2880 uint32_t ThreadDispatchPriority
;
2883 uint32_t FloatingPointMode
;
2884 bool IllegalOpcodeExceptionEnable
;
2885 bool SoftwareExceptionEnable
;
2887 bool StatisticsEnable
;
2888 uint32_t MaximumNumberofThreads
;
2889 uint32_t InstanceCount
;
2890 uint64_t KernelStartPointer
;
2891 uint64_t ScratchSpaceBasePointer
;
2892 uint32_t PerThreadScratchSpace
;
2893 bool SingleProgramFlow
;
2896 uint32_t VectorMaskEnable
;
2898 bool IncludeVertexHandles
;
2899 uint32_t DispatchGRFStartRegisterForURBData
;
2900 uint32_t VertexURBEntryReadLength
;
2901 uint32_t VertexURBEntryReadOffset
;
2905 GEN8_3DSTATE_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2906 const struct GEN8_3DSTATE_HS
* restrict values
)
2908 uint32_t *dw
= (uint32_t * restrict
) dst
;
2911 __gen_field(values
->CommandType
, 29, 31) |
2912 __gen_field(values
->CommandSubType
, 27, 28) |
2913 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2914 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2915 __gen_field(values
->DwordLength
, 0, 7) |
2919 __gen_field(values
->SamplerCount
, 27, 29) |
2920 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2921 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2922 __gen_field(values
->FloatingPointMode
, 16, 16) |
2923 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2924 __gen_field(values
->SoftwareExceptionEnable
, 12, 12) |
2928 __gen_field(values
->Enable
, 31, 31) |
2929 __gen_field(values
->StatisticsEnable
, 29, 29) |
2930 __gen_field(values
->MaximumNumberofThreads
, 8, 16) |
2931 __gen_field(values
->InstanceCount
, 0, 3) |
2935 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2942 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2943 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2950 __gen_field(values
->SingleProgramFlow
, 27, 27) |
2951 __gen_field(values
->VectorMaskEnable
, 26, 26) |
2952 __gen_field(values
->AccessesUAV
, 25, 25) |
2953 __gen_field(values
->IncludeVertexHandles
, 24, 24) |
2954 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 19, 23) |
2955 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2956 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2964 #define GEN8_3DSTATE_INDEX_BUFFER_length 0x00000005
2965 #define GEN8_3DSTATE_INDEX_BUFFER_length_bias 0x00000002
2966 #define GEN8_3DSTATE_INDEX_BUFFER_header \
2968 .CommandSubType = 3, \
2969 ._3DCommandOpcode = 0, \
2970 ._3DCommandSubOpcode = 10, \
2973 struct GEN8_3DSTATE_INDEX_BUFFER
{
2974 uint32_t CommandType
;
2975 uint32_t CommandSubType
;
2976 uint32_t _3DCommandOpcode
;
2977 uint32_t _3DCommandSubOpcode
;
2978 uint32_t DwordLength
;
2979 #define INDEX_BYTE 0
2980 #define INDEX_WORD 1
2981 #define INDEX_DWORD 2
2982 uint32_t IndexFormat
;
2983 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2984 __gen_address_type BufferStartingAddress
;
2985 uint32_t BufferSize
;
2989 GEN8_3DSTATE_INDEX_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2990 const struct GEN8_3DSTATE_INDEX_BUFFER
* restrict values
)
2992 uint32_t *dw
= (uint32_t * restrict
) dst
;
2995 __gen_field(values
->CommandType
, 29, 31) |
2996 __gen_field(values
->CommandSubType
, 27, 28) |
2997 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2998 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2999 __gen_field(values
->DwordLength
, 0, 7) |
3002 uint32_t dw_MemoryObjectControlState
;
3003 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
3005 __gen_field(values
->IndexFormat
, 8, 9) |
3006 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
3013 __gen_combine_address(data
, &dw
[2], values
->BufferStartingAddress
, dw2
);
3019 __gen_field(values
->BufferSize
, 0, 31) |
3024 #define GEN8_3DSTATE_LINE_STIPPLE_length 0x00000003
3025 #define GEN8_3DSTATE_LINE_STIPPLE_length_bias 0x00000002
3026 #define GEN8_3DSTATE_LINE_STIPPLE_header \
3028 .CommandSubType = 3, \
3029 ._3DCommandOpcode = 1, \
3030 ._3DCommandSubOpcode = 8, \
3033 struct GEN8_3DSTATE_LINE_STIPPLE
{
3034 uint32_t CommandType
;
3035 uint32_t CommandSubType
;
3036 uint32_t _3DCommandOpcode
;
3037 uint32_t _3DCommandSubOpcode
;
3038 uint32_t DwordLength
;
3039 bool ModifyEnableCurrentRepeatCounterCurrentStippleIndex
;
3040 uint32_t CurrentRepeatCounter
;
3041 uint32_t CurrentStippleIndex
;
3042 uint32_t LineStipplePattern
;
3043 float LineStippleInverseRepeatCount
;
3044 uint32_t LineStippleRepeatCount
;
3048 GEN8_3DSTATE_LINE_STIPPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3049 const struct GEN8_3DSTATE_LINE_STIPPLE
* restrict values
)
3051 uint32_t *dw
= (uint32_t * restrict
) dst
;
3054 __gen_field(values
->CommandType
, 29, 31) |
3055 __gen_field(values
->CommandSubType
, 27, 28) |
3056 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3057 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3058 __gen_field(values
->DwordLength
, 0, 7) |
3062 __gen_field(values
->ModifyEnableCurrentRepeatCounterCurrentStippleIndex
, 31, 31) |
3063 __gen_field(values
->CurrentRepeatCounter
, 21, 29) |
3064 __gen_field(values
->CurrentStippleIndex
, 16, 19) |
3065 __gen_field(values
->LineStipplePattern
, 0, 15) |
3069 __gen_field(values
->LineStippleInverseRepeatCount
* (1 << 16), 15, 31) |
3070 __gen_field(values
->LineStippleRepeatCount
, 0, 8) |
3075 #define GEN8_3DSTATE_MONOFILTER_SIZE_length 0x00000002
3076 #define GEN8_3DSTATE_MONOFILTER_SIZE_length_bias 0x00000002
3077 #define GEN8_3DSTATE_MONOFILTER_SIZE_header \
3079 .CommandSubType = 3, \
3080 ._3DCommandOpcode = 1, \
3081 ._3DCommandSubOpcode = 17, \
3084 struct GEN8_3DSTATE_MONOFILTER_SIZE
{
3085 uint32_t CommandType
;
3086 uint32_t CommandSubType
;
3087 uint32_t _3DCommandOpcode
;
3088 uint32_t _3DCommandSubOpcode
;
3089 uint32_t DwordLength
;
3090 uint32_t MonochromeFilterWidth
;
3091 uint32_t MonochromeFilterHeight
;
3095 GEN8_3DSTATE_MONOFILTER_SIZE_pack(__gen_user_data
*data
, void * restrict dst
,
3096 const struct GEN8_3DSTATE_MONOFILTER_SIZE
* restrict values
)
3098 uint32_t *dw
= (uint32_t * restrict
) dst
;
3101 __gen_field(values
->CommandType
, 29, 31) |
3102 __gen_field(values
->CommandSubType
, 27, 28) |
3103 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3104 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3105 __gen_field(values
->DwordLength
, 0, 7) |
3109 __gen_field(values
->MonochromeFilterWidth
, 3, 5) |
3110 __gen_field(values
->MonochromeFilterHeight
, 0, 2) |
3115 #define GEN8_3DSTATE_MULTISAMPLE_length 0x00000002
3116 #define GEN8_3DSTATE_MULTISAMPLE_length_bias 0x00000002
3117 #define GEN8_3DSTATE_MULTISAMPLE_header \
3119 .CommandSubType = 3, \
3120 ._3DCommandOpcode = 0, \
3121 ._3DCommandSubOpcode = 13, \
3124 struct GEN8_3DSTATE_MULTISAMPLE
{
3125 uint32_t CommandType
;
3126 uint32_t CommandSubType
;
3127 uint32_t _3DCommandOpcode
;
3128 uint32_t _3DCommandSubOpcode
;
3129 uint32_t DwordLength
;
3130 uint32_t PixelPositionOffsetEnable
;
3133 uint32_t PixelLocation
;
3134 uint32_t NumberofMultisamples
;
3138 GEN8_3DSTATE_MULTISAMPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3139 const struct GEN8_3DSTATE_MULTISAMPLE
* restrict values
)
3141 uint32_t *dw
= (uint32_t * restrict
) dst
;
3144 __gen_field(values
->CommandType
, 29, 31) |
3145 __gen_field(values
->CommandSubType
, 27, 28) |
3146 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3147 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3148 __gen_field(values
->DwordLength
, 0, 7) |
3152 __gen_field(values
->PixelPositionOffsetEnable
, 5, 5) |
3153 __gen_field(values
->PixelLocation
, 4, 4) |
3154 __gen_field(values
->NumberofMultisamples
, 1, 3) |
3159 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length 0x00000002
3160 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length_bias 0x00000002
3161 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_header \
3163 .CommandSubType = 3, \
3164 ._3DCommandOpcode = 1, \
3165 ._3DCommandSubOpcode = 6, \
3168 struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
{
3169 uint32_t CommandType
;
3170 uint32_t CommandSubType
;
3171 uint32_t _3DCommandOpcode
;
3172 uint32_t _3DCommandSubOpcode
;
3173 uint32_t DwordLength
;
3174 uint32_t PolygonStippleXOffset
;
3175 uint32_t PolygonStippleYOffset
;
3179 GEN8_3DSTATE_POLY_STIPPLE_OFFSET_pack(__gen_user_data
*data
, void * restrict dst
,
3180 const struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
* restrict values
)
3182 uint32_t *dw
= (uint32_t * restrict
) dst
;
3185 __gen_field(values
->CommandType
, 29, 31) |
3186 __gen_field(values
->CommandSubType
, 27, 28) |
3187 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3188 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3189 __gen_field(values
->DwordLength
, 0, 7) |
3193 __gen_field(values
->PolygonStippleXOffset
, 8, 12) |
3194 __gen_field(values
->PolygonStippleYOffset
, 0, 4) |
3199 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length 0x00000021
3200 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length_bias 0x00000002
3201 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_header\
3203 .CommandSubType = 3, \
3204 ._3DCommandOpcode = 1, \
3205 ._3DCommandSubOpcode = 7, \
3208 struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
{
3209 uint32_t CommandType
;
3210 uint32_t CommandSubType
;
3211 uint32_t _3DCommandOpcode
;
3212 uint32_t _3DCommandSubOpcode
;
3213 uint32_t DwordLength
;
3214 uint32_t PatternRow
[32];
3218 GEN8_3DSTATE_POLY_STIPPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
3219 const struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
* restrict values
)
3221 uint32_t *dw
= (uint32_t * restrict
) dst
;
3224 __gen_field(values
->CommandType
, 29, 31) |
3225 __gen_field(values
->CommandSubType
, 27, 28) |
3226 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3227 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3228 __gen_field(values
->DwordLength
, 0, 7) |
3231 for (uint32_t i
= 0, j
= 1; i
< 32; i
+= 1, j
++) {
3233 __gen_field(values
->PatternRow
[i
+ 0], 0, 31) |
3239 #define GEN8_3DSTATE_PS_length 0x0000000c
3240 #define GEN8_3DSTATE_PS_length_bias 0x00000002
3241 #define GEN8_3DSTATE_PS_header \
3243 .CommandSubType = 3, \
3244 ._3DCommandOpcode = 0, \
3245 ._3DCommandSubOpcode = 32, \
3248 struct GEN8_3DSTATE_PS
{
3249 uint32_t CommandType
;
3250 uint32_t CommandSubType
;
3251 uint32_t _3DCommandOpcode
;
3252 uint32_t _3DCommandSubOpcode
;
3253 uint32_t DwordLength
;
3254 uint64_t KernelStartPointer0
;
3257 uint32_t SingleProgramFlow
;
3260 uint32_t VectorMaskEnable
;
3261 #define NoSamplers 0
3262 #define _14Samplers 1
3263 #define _58Samplers 2
3264 #define _912Samplers 3
3265 #define _1316Samplers 4
3266 uint32_t SamplerCount
;
3267 #define FlushedtoZero 0
3269 uint32_t SinglePrecisionDenormalMode
;
3270 uint32_t BindingTableEntryCount
;
3273 uint32_t ThreadDispatchPriority
;
3276 uint32_t FloatingPointMode
;
3281 uint32_t RoundingMode
;
3282 bool IllegalOpcodeExceptionEnable
;
3283 bool MaskStackExceptionEnable
;
3284 bool SoftwareExceptionEnable
;
3285 uint64_t ScratchSpaceBasePointer
;
3286 uint32_t PerThreadScratchSpace
;
3287 uint32_t MaximumNumberofThreadsPerPSD
;
3288 bool PushConstantEnable
;
3289 bool RenderTargetFastClearEnable
;
3290 bool RenderTargetResolveEnable
;
3291 #define POSOFFSET_NONE 0
3292 #define POSOFFSET_CENTROID 2
3293 #define POSOFFSET_SAMPLE 3
3294 uint32_t PositionXYOffsetSelect
;
3295 bool _32PixelDispatchEnable
;
3296 bool _16PixelDispatchEnable
;
3297 bool _8PixelDispatchEnable
;
3298 uint32_t DispatchGRFStartRegisterForConstantSetupData0
;
3299 uint32_t DispatchGRFStartRegisterForConstantSetupData1
;
3300 uint32_t DispatchGRFStartRegisterForConstantSetupData2
;
3301 uint64_t KernelStartPointer1
;
3302 uint64_t KernelStartPointer2
;
3306 GEN8_3DSTATE_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3307 const struct GEN8_3DSTATE_PS
* restrict values
)
3309 uint32_t *dw
= (uint32_t * restrict
) dst
;
3312 __gen_field(values
->CommandType
, 29, 31) |
3313 __gen_field(values
->CommandSubType
, 27, 28) |
3314 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3315 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3316 __gen_field(values
->DwordLength
, 0, 7) |
3320 __gen_offset(values
->KernelStartPointer0
, 6, 63) |
3327 __gen_field(values
->SingleProgramFlow
, 31, 31) |
3328 __gen_field(values
->VectorMaskEnable
, 30, 30) |
3329 __gen_field(values
->SamplerCount
, 27, 29) |
3330 __gen_field(values
->SinglePrecisionDenormalMode
, 26, 26) |
3331 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
3332 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
3333 __gen_field(values
->FloatingPointMode
, 16, 16) |
3334 __gen_field(values
->RoundingMode
, 14, 15) |
3335 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
3336 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
3337 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
3341 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
3342 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
3349 __gen_field(values
->MaximumNumberofThreadsPerPSD
, 23, 31) |
3350 __gen_field(values
->PushConstantEnable
, 11, 11) |
3351 __gen_field(values
->RenderTargetFastClearEnable
, 8, 8) |
3352 __gen_field(values
->RenderTargetResolveEnable
, 6, 6) |
3353 __gen_field(values
->PositionXYOffsetSelect
, 3, 4) |
3354 __gen_field(values
->_32PixelDispatchEnable
, 2, 2) |
3355 __gen_field(values
->_16PixelDispatchEnable
, 1, 1) |
3356 __gen_field(values
->_8PixelDispatchEnable
, 0, 0) |
3360 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData0
, 16, 22) |
3361 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData1
, 8, 14) |
3362 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData2
, 0, 6) |
3366 __gen_offset(values
->KernelStartPointer1
, 6, 63) |
3373 __gen_offset(values
->KernelStartPointer2
, 6, 63) |
3377 dw
[11] = qw10
>> 32;
3381 #define GEN8_3DSTATE_PS_BLEND_length 0x00000002
3382 #define GEN8_3DSTATE_PS_BLEND_length_bias 0x00000002
3383 #define GEN8_3DSTATE_PS_BLEND_header \
3385 .CommandSubType = 3, \
3386 ._3DCommandOpcode = 0, \
3387 ._3DCommandSubOpcode = 77, \
3390 struct GEN8_3DSTATE_PS_BLEND
{
3391 uint32_t CommandType
;
3392 uint32_t CommandSubType
;
3393 uint32_t _3DCommandOpcode
;
3394 uint32_t _3DCommandSubOpcode
;
3395 uint32_t DwordLength
;
3396 bool AlphaToCoverageEnable
;
3397 bool HasWriteableRT
;
3398 bool ColorBufferBlendEnable
;
3399 uint32_t SourceAlphaBlendFactor
;
3400 uint32_t DestinationAlphaBlendFactor
;
3401 uint32_t SourceBlendFactor
;
3402 uint32_t DestinationBlendFactor
;
3403 bool AlphaTestEnable
;
3404 bool IndependentAlphaBlendEnable
;
3408 GEN8_3DSTATE_PS_BLEND_pack(__gen_user_data
*data
, void * restrict dst
,
3409 const struct GEN8_3DSTATE_PS_BLEND
* restrict values
)
3411 uint32_t *dw
= (uint32_t * restrict
) dst
;
3414 __gen_field(values
->CommandType
, 29, 31) |
3415 __gen_field(values
->CommandSubType
, 27, 28) |
3416 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3417 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3418 __gen_field(values
->DwordLength
, 0, 7) |
3422 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
3423 __gen_field(values
->HasWriteableRT
, 30, 30) |
3424 __gen_field(values
->ColorBufferBlendEnable
, 29, 29) |
3425 __gen_field(values
->SourceAlphaBlendFactor
, 24, 28) |
3426 __gen_field(values
->DestinationAlphaBlendFactor
, 19, 23) |
3427 __gen_field(values
->SourceBlendFactor
, 14, 18) |
3428 __gen_field(values
->DestinationBlendFactor
, 9, 13) |
3429 __gen_field(values
->AlphaTestEnable
, 8, 8) |
3430 __gen_field(values
->IndependentAlphaBlendEnable
, 7, 7) |
3435 #define GEN8_3DSTATE_PS_EXTRA_length 0x00000002
3436 #define GEN8_3DSTATE_PS_EXTRA_length_bias 0x00000002
3437 #define GEN8_3DSTATE_PS_EXTRA_header \
3439 .CommandSubType = 3, \
3440 ._3DCommandOpcode = 0, \
3441 ._3DCommandSubOpcode = 79, \
3444 struct GEN8_3DSTATE_PS_EXTRA
{
3445 uint32_t CommandType
;
3446 uint32_t CommandSubType
;
3447 uint32_t _3DCommandOpcode
;
3448 uint32_t _3DCommandSubOpcode
;
3449 uint32_t DwordLength
;
3450 bool PixelShaderValid
;
3451 bool PixelShaderDoesnotwritetoRT
;
3452 bool oMaskPresenttoRenderTarget
;
3453 bool PixelShaderKillsPixel
;
3454 #define PSCDEPTH_OFF 0
3455 #define PSCDEPTH_ON 1
3456 #define PSCDEPTH_ON_GE 2
3457 #define PSCDEPTH_ON_LE 3
3458 uint32_t PixelShaderComputedDepthMode
;
3459 bool ForceComputedDepth
;
3460 bool PixelShaderUsesSourceDepth
;
3461 bool PixelShaderUsesSourceW
;
3463 bool AttributeEnable
;
3464 bool PixelShaderDisablesAlphaToCoverage
;
3465 bool PixelShaderIsPerSample
;
3466 bool PixelShaderHasUAV
;
3467 bool PixelShaderUsesInputCoverageMask
;
3471 GEN8_3DSTATE_PS_EXTRA_pack(__gen_user_data
*data
, void * restrict dst
,
3472 const struct GEN8_3DSTATE_PS_EXTRA
* restrict values
)
3474 uint32_t *dw
= (uint32_t * restrict
) dst
;
3477 __gen_field(values
->CommandType
, 29, 31) |
3478 __gen_field(values
->CommandSubType
, 27, 28) |
3479 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3480 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3481 __gen_field(values
->DwordLength
, 0, 7) |
3485 __gen_field(values
->PixelShaderValid
, 31, 31) |
3486 __gen_field(values
->PixelShaderDoesnotwritetoRT
, 30, 30) |
3487 __gen_field(values
->oMaskPresenttoRenderTarget
, 29, 29) |
3488 __gen_field(values
->PixelShaderKillsPixel
, 28, 28) |
3489 __gen_field(values
->PixelShaderComputedDepthMode
, 26, 27) |
3490 __gen_field(values
->ForceComputedDepth
, 25, 25) |
3491 __gen_field(values
->PixelShaderUsesSourceDepth
, 24, 24) |
3492 __gen_field(values
->PixelShaderUsesSourceW
, 23, 23) |
3493 __gen_field(values
->Removed
, 17, 17) |
3494 __gen_field(values
->AttributeEnable
, 8, 8) |
3495 __gen_field(values
->PixelShaderDisablesAlphaToCoverage
, 7, 7) |
3496 __gen_field(values
->PixelShaderIsPerSample
, 6, 6) |
3497 __gen_field(values
->PixelShaderHasUAV
, 2, 2) |
3498 __gen_field(values
->PixelShaderUsesInputCoverageMask
, 1, 1) |
3503 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length 0x00000002
3504 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias 0x00000002
3505 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\
3507 .CommandSubType = 3, \
3508 ._3DCommandOpcode = 1, \
3509 ._3DCommandSubOpcode = 20, \
3512 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
{
3513 uint32_t CommandType
;
3514 uint32_t CommandSubType
;
3515 uint32_t _3DCommandOpcode
;
3516 uint32_t _3DCommandSubOpcode
;
3517 uint32_t DwordLength
;
3518 uint32_t ConstantBufferOffset
;
3519 uint32_t ConstantBufferSize
;
3523 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3524 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
* restrict values
)
3526 uint32_t *dw
= (uint32_t * restrict
) dst
;
3529 __gen_field(values
->CommandType
, 29, 31) |
3530 __gen_field(values
->CommandSubType
, 27, 28) |
3531 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3532 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3533 __gen_field(values
->DwordLength
, 0, 7) |
3537 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3538 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3543 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length 0x00000002
3544 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias 0x00000002
3545 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\
3547 .CommandSubType = 3, \
3548 ._3DCommandOpcode = 1, \
3549 ._3DCommandSubOpcode = 21, \
3552 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
{
3553 uint32_t CommandType
;
3554 uint32_t CommandSubType
;
3555 uint32_t _3DCommandOpcode
;
3556 uint32_t _3DCommandSubOpcode
;
3557 uint32_t DwordLength
;
3558 uint32_t ConstantBufferOffset
;
3559 uint32_t ConstantBufferSize
;
3563 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3564 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
* restrict values
)
3566 uint32_t *dw
= (uint32_t * restrict
) dst
;
3569 __gen_field(values
->CommandType
, 29, 31) |
3570 __gen_field(values
->CommandSubType
, 27, 28) |
3571 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3572 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3573 __gen_field(values
->DwordLength
, 0, 7) |
3577 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3578 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3583 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length 0x00000002
3584 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias 0x00000002
3585 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\
3587 .CommandSubType = 3, \
3588 ._3DCommandOpcode = 1, \
3589 ._3DCommandSubOpcode = 19, \
3592 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
{
3593 uint32_t CommandType
;
3594 uint32_t CommandSubType
;
3595 uint32_t _3DCommandOpcode
;
3596 uint32_t _3DCommandSubOpcode
;
3597 uint32_t DwordLength
;
3598 uint32_t ConstantBufferOffset
;
3599 uint32_t ConstantBufferSize
;
3603 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3604 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
* restrict values
)
3606 uint32_t *dw
= (uint32_t * restrict
) dst
;
3609 __gen_field(values
->CommandType
, 29, 31) |
3610 __gen_field(values
->CommandSubType
, 27, 28) |
3611 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3612 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3613 __gen_field(values
->DwordLength
, 0, 7) |
3617 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3618 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3623 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length 0x00000002
3624 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias 0x00000002
3625 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\
3627 .CommandSubType = 3, \
3628 ._3DCommandOpcode = 1, \
3629 ._3DCommandSubOpcode = 22, \
3632 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
{
3633 uint32_t CommandType
;
3634 uint32_t CommandSubType
;
3635 uint32_t _3DCommandOpcode
;
3636 uint32_t _3DCommandSubOpcode
;
3637 uint32_t DwordLength
;
3638 uint32_t ConstantBufferOffset
;
3639 uint32_t ConstantBufferSize
;
3643 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3644 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
* restrict values
)
3646 uint32_t *dw
= (uint32_t * restrict
) dst
;
3649 __gen_field(values
->CommandType
, 29, 31) |
3650 __gen_field(values
->CommandSubType
, 27, 28) |
3651 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3652 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3653 __gen_field(values
->DwordLength
, 0, 7) |
3657 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3658 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3663 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length 0x00000002
3664 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias 0x00000002
3665 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\
3667 .CommandSubType = 3, \
3668 ._3DCommandOpcode = 1, \
3669 ._3DCommandSubOpcode = 18, \
3672 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
{
3673 uint32_t CommandType
;
3674 uint32_t CommandSubType
;
3675 uint32_t _3DCommandOpcode
;
3676 uint32_t _3DCommandSubOpcode
;
3677 uint32_t DwordLength
;
3678 uint32_t ConstantBufferOffset
;
3679 uint32_t ConstantBufferSize
;
3683 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__gen_user_data
*data
, void * restrict dst
,
3684 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
* restrict values
)
3686 uint32_t *dw
= (uint32_t * restrict
) dst
;
3689 __gen_field(values
->CommandType
, 29, 31) |
3690 __gen_field(values
->CommandSubType
, 27, 28) |
3691 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3692 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3693 __gen_field(values
->DwordLength
, 0, 7) |
3697 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3698 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3703 #define GEN8_3DSTATE_RASTER_length 0x00000005
3704 #define GEN8_3DSTATE_RASTER_length_bias 0x00000002
3705 #define GEN8_3DSTATE_RASTER_header \
3707 .CommandSubType = 3, \
3708 ._3DCommandOpcode = 0, \
3709 ._3DCommandSubOpcode = 80, \
3712 struct GEN8_3DSTATE_RASTER
{
3713 uint32_t CommandType
;
3714 uint32_t CommandSubType
;
3715 uint32_t _3DCommandOpcode
;
3716 uint32_t _3DCommandSubOpcode
;
3717 uint32_t DwordLength
;
3723 #define CounterClockwise 1
3724 uint32_t FrontWinding
;
3725 #define FSC_NUMRASTSAMPLES_0 0
3726 #define FSC_NUMRASTSAMPLES_1 1
3727 #define FSC_NUMRASTSAMPLES_2 2
3728 #define FSC_NUMRASTSAMPLES_4 3
3729 #define FSC_NUMRASTSAMPLES_8 4
3730 #define FSC_NUMRASTSAMPLES_16 5
3731 uint32_t ForcedSampleCount
;
3732 #define CULLMODE_BOTH 0
3733 #define CULLMODE_NONE 1
3734 #define CULLMODE_FRONT 2
3735 #define CULLMODE_BACK 3
3739 uint32_t ForceMultisampling
;
3740 bool SmoothPointEnable
;
3741 bool DXMultisampleRasterizationEnable
;
3742 #define MSRASTMODE_OFF_PIXEL 0
3743 #define MSRASTMODE_OFF_PATTERN 1
3744 #define MSRASTMODE_ON_PIXEL 2
3745 #define MSRASTMODE_ON_PATTERN 3
3746 uint32_t DXMultisampleRasterizationMode
;
3747 bool GlobalDepthOffsetEnableSolid
;
3748 bool GlobalDepthOffsetEnableWireframe
;
3749 bool GlobalDepthOffsetEnablePoint
;
3750 #define RASTER_SOLID 0
3751 #define RASTER_WIREFRAME 1
3752 #define RASTER_POINT 2
3753 uint32_t FrontFaceFillMode
;
3754 #define RASTER_SOLID 0
3755 #define RASTER_WIREFRAME 1
3756 #define RASTER_POINT 2
3757 uint32_t BackFaceFillMode
;
3758 bool AntialiasingEnable
;
3759 bool ScissorRectangleEnable
;
3760 bool ViewportZClipTestEnable
;
3761 float GlobalDepthOffsetConstant
;
3762 float GlobalDepthOffsetScale
;
3763 float GlobalDepthOffsetClamp
;
3767 GEN8_3DSTATE_RASTER_pack(__gen_user_data
*data
, void * restrict dst
,
3768 const struct GEN8_3DSTATE_RASTER
* restrict values
)
3770 uint32_t *dw
= (uint32_t * restrict
) dst
;
3773 __gen_field(values
->CommandType
, 29, 31) |
3774 __gen_field(values
->CommandSubType
, 27, 28) |
3775 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3776 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3777 __gen_field(values
->DwordLength
, 0, 7) |
3781 __gen_field(values
->APIMode
, 22, 23) |
3782 __gen_field(values
->FrontWinding
, 21, 21) |
3783 __gen_field(values
->ForcedSampleCount
, 18, 20) |
3784 __gen_field(values
->CullMode
, 16, 17) |
3785 __gen_field(values
->ForceMultisampling
, 14, 14) |
3786 __gen_field(values
->SmoothPointEnable
, 13, 13) |
3787 __gen_field(values
->DXMultisampleRasterizationEnable
, 12, 12) |
3788 __gen_field(values
->DXMultisampleRasterizationMode
, 10, 11) |
3789 __gen_field(values
->GlobalDepthOffsetEnableSolid
, 9, 9) |
3790 __gen_field(values
->GlobalDepthOffsetEnableWireframe
, 8, 8) |
3791 __gen_field(values
->GlobalDepthOffsetEnablePoint
, 7, 7) |
3792 __gen_field(values
->FrontFaceFillMode
, 5, 6) |
3793 __gen_field(values
->BackFaceFillMode
, 3, 4) |
3794 __gen_field(values
->AntialiasingEnable
, 2, 2) |
3795 __gen_field(values
->ScissorRectangleEnable
, 1, 1) |
3796 __gen_field(values
->ViewportZClipTestEnable
, 0, 0) |
3800 __gen_float(values
->GlobalDepthOffsetConstant
) |
3804 __gen_float(values
->GlobalDepthOffsetScale
) |
3808 __gen_float(values
->GlobalDepthOffsetClamp
) |
3813 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias 0x00000002
3814 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_header\
3816 .CommandSubType = 3, \
3817 ._3DCommandOpcode = 1, \
3818 ._3DCommandSubOpcode = 2
3820 struct GEN8_PALETTE_ENTRY
{
3828 GEN8_PALETTE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
3829 const struct GEN8_PALETTE_ENTRY
* restrict values
)
3831 uint32_t *dw
= (uint32_t * restrict
) dst
;
3834 __gen_field(values
->Alpha
, 24, 31) |
3835 __gen_field(values
->Red
, 16, 23) |
3836 __gen_field(values
->Green
, 8, 15) |
3837 __gen_field(values
->Blue
, 0, 7) |
3842 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
{
3843 uint32_t CommandType
;
3844 uint32_t CommandSubType
;
3845 uint32_t _3DCommandOpcode
;
3846 uint32_t _3DCommandSubOpcode
;
3847 uint32_t DwordLength
;
3848 /* variable length fields follow */
3852 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__gen_user_data
*data
, void * restrict dst
,
3853 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
* restrict values
)
3855 uint32_t *dw
= (uint32_t * restrict
) dst
;
3858 __gen_field(values
->CommandType
, 29, 31) |
3859 __gen_field(values
->CommandSubType
, 27, 28) |
3860 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3861 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3862 __gen_field(values
->DwordLength
, 0, 7) |
3865 /* variable length fields follow */
3868 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias 0x00000002
3869 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_header\
3871 .CommandSubType = 3, \
3872 ._3DCommandOpcode = 1, \
3873 ._3DCommandSubOpcode = 12
3875 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
{
3876 uint32_t CommandType
;
3877 uint32_t CommandSubType
;
3878 uint32_t _3DCommandOpcode
;
3879 uint32_t _3DCommandSubOpcode
;
3880 uint32_t DwordLength
;
3881 /* variable length fields follow */
3885 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__gen_user_data
*data
, void * restrict dst
,
3886 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
* restrict values
)
3888 uint32_t *dw
= (uint32_t * restrict
) dst
;
3891 __gen_field(values
->CommandType
, 29, 31) |
3892 __gen_field(values
->CommandSubType
, 27, 28) |
3893 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3894 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3895 __gen_field(values
->DwordLength
, 0, 7) |
3898 /* variable length fields follow */
3901 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length 0x00000002
3902 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias 0x00000002
3903 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\
3905 .CommandSubType = 3, \
3906 ._3DCommandOpcode = 0, \
3907 ._3DCommandSubOpcode = 45, \
3910 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
{
3911 uint32_t CommandType
;
3912 uint32_t CommandSubType
;
3913 uint32_t _3DCommandOpcode
;
3914 uint32_t _3DCommandSubOpcode
;
3915 uint32_t DwordLength
;
3916 uint32_t PointertoDSSamplerState
;
3920 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3921 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
* restrict values
)
3923 uint32_t *dw
= (uint32_t * restrict
) dst
;
3926 __gen_field(values
->CommandType
, 29, 31) |
3927 __gen_field(values
->CommandSubType
, 27, 28) |
3928 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3929 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3930 __gen_field(values
->DwordLength
, 0, 7) |
3934 __gen_offset(values
->PointertoDSSamplerState
, 5, 31) |
3939 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length 0x00000002
3940 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias 0x00000002
3941 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\
3943 .CommandSubType = 3, \
3944 ._3DCommandOpcode = 0, \
3945 ._3DCommandSubOpcode = 46, \
3948 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
{
3949 uint32_t CommandType
;
3950 uint32_t CommandSubType
;
3951 uint32_t _3DCommandOpcode
;
3952 uint32_t _3DCommandSubOpcode
;
3953 uint32_t DwordLength
;
3954 uint32_t PointertoGSSamplerState
;
3958 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3959 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
* restrict values
)
3961 uint32_t *dw
= (uint32_t * restrict
) dst
;
3964 __gen_field(values
->CommandType
, 29, 31) |
3965 __gen_field(values
->CommandSubType
, 27, 28) |
3966 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3967 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3968 __gen_field(values
->DwordLength
, 0, 7) |
3972 __gen_offset(values
->PointertoGSSamplerState
, 5, 31) |
3977 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length 0x00000002
3978 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias 0x00000002
3979 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\
3981 .CommandSubType = 3, \
3982 ._3DCommandOpcode = 0, \
3983 ._3DCommandSubOpcode = 44, \
3986 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
{
3987 uint32_t CommandType
;
3988 uint32_t CommandSubType
;
3989 uint32_t _3DCommandOpcode
;
3990 uint32_t _3DCommandSubOpcode
;
3991 uint32_t DwordLength
;
3992 uint32_t PointertoHSSamplerState
;
3996 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3997 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
* restrict values
)
3999 uint32_t *dw
= (uint32_t * restrict
) dst
;
4002 __gen_field(values
->CommandType
, 29, 31) |
4003 __gen_field(values
->CommandSubType
, 27, 28) |
4004 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4005 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4006 __gen_field(values
->DwordLength
, 0, 7) |
4010 __gen_offset(values
->PointertoHSSamplerState
, 5, 31) |
4015 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length 0x00000002
4016 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias 0x00000002
4017 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\
4019 .CommandSubType = 3, \
4020 ._3DCommandOpcode = 0, \
4021 ._3DCommandSubOpcode = 47, \
4024 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
{
4025 uint32_t CommandType
;
4026 uint32_t CommandSubType
;
4027 uint32_t _3DCommandOpcode
;
4028 uint32_t _3DCommandSubOpcode
;
4029 uint32_t DwordLength
;
4030 uint32_t PointertoPSSamplerState
;
4034 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
4035 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
* restrict values
)
4037 uint32_t *dw
= (uint32_t * restrict
) dst
;
4040 __gen_field(values
->CommandType
, 29, 31) |
4041 __gen_field(values
->CommandSubType
, 27, 28) |
4042 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4043 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4044 __gen_field(values
->DwordLength
, 0, 7) |
4048 __gen_offset(values
->PointertoPSSamplerState
, 5, 31) |
4053 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length 0x00000002
4054 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias 0x00000002
4055 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\
4057 .CommandSubType = 3, \
4058 ._3DCommandOpcode = 0, \
4059 ._3DCommandSubOpcode = 43, \
4062 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
{
4063 uint32_t CommandType
;
4064 uint32_t CommandSubType
;
4065 uint32_t _3DCommandOpcode
;
4066 uint32_t _3DCommandSubOpcode
;
4067 uint32_t DwordLength
;
4068 uint32_t PointertoVSSamplerState
;
4072 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
4073 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
* restrict values
)
4075 uint32_t *dw
= (uint32_t * restrict
) dst
;
4078 __gen_field(values
->CommandType
, 29, 31) |
4079 __gen_field(values
->CommandSubType
, 27, 28) |
4080 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4081 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4082 __gen_field(values
->DwordLength
, 0, 7) |
4086 __gen_offset(values
->PointertoVSSamplerState
, 5, 31) |
4091 #define GEN8_3DSTATE_SAMPLE_MASK_length 0x00000002
4092 #define GEN8_3DSTATE_SAMPLE_MASK_length_bias 0x00000002
4093 #define GEN8_3DSTATE_SAMPLE_MASK_header \
4095 .CommandSubType = 3, \
4096 ._3DCommandOpcode = 0, \
4097 ._3DCommandSubOpcode = 24, \
4100 struct GEN8_3DSTATE_SAMPLE_MASK
{
4101 uint32_t CommandType
;
4102 uint32_t CommandSubType
;
4103 uint32_t _3DCommandOpcode
;
4104 uint32_t _3DCommandSubOpcode
;
4105 uint32_t DwordLength
;
4106 uint32_t SampleMask
;
4110 GEN8_3DSTATE_SAMPLE_MASK_pack(__gen_user_data
*data
, void * restrict dst
,
4111 const struct GEN8_3DSTATE_SAMPLE_MASK
* restrict values
)
4113 uint32_t *dw
= (uint32_t * restrict
) dst
;
4116 __gen_field(values
->CommandType
, 29, 31) |
4117 __gen_field(values
->CommandSubType
, 27, 28) |
4118 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4119 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4120 __gen_field(values
->DwordLength
, 0, 7) |
4124 __gen_field(values
->SampleMask
, 0, 15) |
4129 #define GEN8_3DSTATE_SAMPLE_PATTERN_length 0x00000009
4130 #define GEN8_3DSTATE_SAMPLE_PATTERN_length_bias 0x00000002
4131 #define GEN8_3DSTATE_SAMPLE_PATTERN_header \
4133 .CommandSubType = 3, \
4134 ._3DCommandOpcode = 1, \
4135 ._3DCommandSubOpcode = 28, \
4138 struct GEN8_3DSTATE_SAMPLE_PATTERN
{
4139 uint32_t CommandType
;
4140 uint32_t CommandSubType
;
4141 uint32_t _3DCommandOpcode
;
4142 uint32_t _3DCommandSubOpcode
;
4143 uint32_t DwordLength
;
4144 float _8xSample7XOffset
;
4145 float _8xSample7YOffset
;
4146 float _8xSample6XOffset
;
4147 float _8xSample6YOffset
;
4148 float _8xSample5XOffset
;
4149 float _8xSample5YOffset
;
4150 float _8xSample4XOffset
;
4151 float _8xSample4YOffset
;
4152 float _8xSample3XOffset
;
4153 float _8xSample3YOffset
;
4154 float _8xSample2XOffset
;
4155 float _8xSample2YOffset
;
4156 float _8xSample1XOffset
;
4157 float _8xSample1YOffset
;
4158 float _8xSample0XOffset
;
4159 float _8xSample0YOffset
;
4160 float _4xSample3XOffset
;
4161 float _4xSample3YOffset
;
4162 float _4xSample2XOffset
;
4163 float _4xSample2YOffset
;
4164 float _4xSample1XOffset
;
4165 float _4xSample1YOffset
;
4166 float _4xSample0XOffset
;
4167 float _4xSample0YOffset
;
4168 float _1xSample0XOffset
;
4169 float _1xSample0YOffset
;
4170 float _2xSample1XOffset
;
4171 float _2xSample1YOffset
;
4172 float _2xSample0XOffset
;
4173 float _2xSample0YOffset
;
4177 GEN8_3DSTATE_SAMPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
4178 const struct GEN8_3DSTATE_SAMPLE_PATTERN
* restrict values
)
4180 uint32_t *dw
= (uint32_t * restrict
) dst
;
4183 __gen_field(values
->CommandType
, 29, 31) |
4184 __gen_field(values
->CommandSubType
, 27, 28) |
4185 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4186 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4187 __gen_field(values
->DwordLength
, 0, 7) |
4191 __gen_field(values
->_8xSample7XOffset
* (1 << 4), 28, 31) |
4192 __gen_field(values
->_8xSample7YOffset
* (1 << 4), 24, 27) |
4193 __gen_field(values
->_8xSample6XOffset
* (1 << 4), 20, 23) |
4194 __gen_field(values
->_8xSample6YOffset
* (1 << 4), 16, 19) |
4195 __gen_field(values
->_8xSample5XOffset
* (1 << 4), 12, 15) |
4196 __gen_field(values
->_8xSample5YOffset
* (1 << 4), 8, 11) |
4197 __gen_field(values
->_8xSample4XOffset
* (1 << 4), 4, 7) |
4198 __gen_field(values
->_8xSample4YOffset
* (1 << 4), 0, 3) |
4202 __gen_field(values
->_8xSample3XOffset
* (1 << 4), 28, 31) |
4203 __gen_field(values
->_8xSample3YOffset
* (1 << 4), 24, 27) |
4204 __gen_field(values
->_8xSample2XOffset
* (1 << 4), 20, 23) |
4205 __gen_field(values
->_8xSample2YOffset
* (1 << 4), 16, 19) |
4206 __gen_field(values
->_8xSample1XOffset
* (1 << 4), 12, 15) |
4207 __gen_field(values
->_8xSample1YOffset
* (1 << 4), 8, 11) |
4208 __gen_field(values
->_8xSample0XOffset
* (1 << 4), 4, 7) |
4209 __gen_field(values
->_8xSample0YOffset
* (1 << 4), 0, 3) |
4213 __gen_field(values
->_4xSample3XOffset
* (1 << 4), 28, 31) |
4214 __gen_field(values
->_4xSample3YOffset
* (1 << 4), 24, 27) |
4215 __gen_field(values
->_4xSample2XOffset
* (1 << 4), 20, 23) |
4216 __gen_field(values
->_4xSample2YOffset
* (1 << 4), 16, 19) |
4217 __gen_field(values
->_4xSample1XOffset
* (1 << 4), 12, 15) |
4218 __gen_field(values
->_4xSample1YOffset
* (1 << 4), 8, 11) |
4219 __gen_field(values
->_4xSample0XOffset
* (1 << 4), 4, 7) |
4220 __gen_field(values
->_4xSample0YOffset
* (1 << 4), 0, 3) |
4224 __gen_field(values
->_1xSample0XOffset
* (1 << 4), 20, 23) |
4225 __gen_field(values
->_1xSample0YOffset
* (1 << 4), 16, 19) |
4226 __gen_field(values
->_2xSample1XOffset
* (1 << 4), 12, 15) |
4227 __gen_field(values
->_2xSample1YOffset
* (1 << 4), 8, 11) |
4228 __gen_field(values
->_2xSample0XOffset
* (1 << 4), 4, 7) |
4229 __gen_field(values
->_2xSample0YOffset
* (1 << 4), 0, 3) |
4234 #define GEN8_3DSTATE_SBE_length 0x00000004
4235 #define GEN8_3DSTATE_SBE_length_bias 0x00000002
4236 #define GEN8_3DSTATE_SBE_header \
4238 .CommandSubType = 3, \
4239 ._3DCommandOpcode = 0, \
4240 ._3DCommandSubOpcode = 31, \
4243 struct GEN8_3DSTATE_SBE
{
4244 uint32_t CommandType
;
4245 uint32_t CommandSubType
;
4246 uint32_t _3DCommandOpcode
;
4247 uint32_t _3DCommandSubOpcode
;
4248 uint32_t DwordLength
;
4249 bool ForceVertexURBEntryReadLength
;
4250 bool ForceVertexURBEntryReadOffset
;
4251 uint32_t NumberofSFOutputAttributes
;
4252 bool AttributeSwizzleEnable
;
4255 uint32_t PointSpriteTextureCoordinateOrigin
;
4256 bool PrimitiveIDOverrideComponentW
;
4257 bool PrimitiveIDOverrideComponentZ
;
4258 bool PrimitiveIDOverrideComponentY
;
4259 bool PrimitiveIDOverrideComponentX
;
4260 uint32_t VertexURBEntryReadLength
;
4261 uint32_t VertexURBEntryReadOffset
;
4262 uint32_t PrimitiveIDOverrideAttributeSelect
;
4263 uint32_t PointSpriteTextureCoordinateEnable
;
4264 uint32_t ConstantInterpolationEnable
;
4268 GEN8_3DSTATE_SBE_pack(__gen_user_data
*data
, void * restrict dst
,
4269 const struct GEN8_3DSTATE_SBE
* restrict values
)
4271 uint32_t *dw
= (uint32_t * restrict
) dst
;
4274 __gen_field(values
->CommandType
, 29, 31) |
4275 __gen_field(values
->CommandSubType
, 27, 28) |
4276 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4277 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4278 __gen_field(values
->DwordLength
, 0, 7) |
4282 __gen_field(values
->ForceVertexURBEntryReadLength
, 29, 29) |
4283 __gen_field(values
->ForceVertexURBEntryReadOffset
, 28, 28) |
4284 __gen_field(values
->NumberofSFOutputAttributes
, 22, 27) |
4285 __gen_field(values
->AttributeSwizzleEnable
, 21, 21) |
4286 __gen_field(values
->PointSpriteTextureCoordinateOrigin
, 20, 20) |
4287 __gen_field(values
->PrimitiveIDOverrideComponentW
, 19, 19) |
4288 __gen_field(values
->PrimitiveIDOverrideComponentZ
, 18, 18) |
4289 __gen_field(values
->PrimitiveIDOverrideComponentY
, 17, 17) |
4290 __gen_field(values
->PrimitiveIDOverrideComponentX
, 16, 16) |
4291 __gen_field(values
->VertexURBEntryReadLength
, 11, 15) |
4292 __gen_field(values
->VertexURBEntryReadOffset
, 5, 10) |
4293 __gen_field(values
->PrimitiveIDOverrideAttributeSelect
, 0, 4) |
4297 __gen_field(values
->PointSpriteTextureCoordinateEnable
, 0, 31) |
4301 __gen_field(values
->ConstantInterpolationEnable
, 0, 31) |
4306 #define GEN8_3DSTATE_SBE_SWIZ_length 0x0000000b
4307 #define GEN8_3DSTATE_SBE_SWIZ_length_bias 0x00000002
4308 #define GEN8_3DSTATE_SBE_SWIZ_header \
4310 .CommandSubType = 3, \
4311 ._3DCommandOpcode = 0, \
4312 ._3DCommandSubOpcode = 81, \
4315 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
{
4316 bool ComponentOverrideW
;
4317 bool ComponentOverrideZ
;
4318 bool ComponentOverrideY
;
4319 bool ComponentOverrideX
;
4320 uint32_t SwizzleControlMode
;
4321 #define CONST_0000 0
4322 #define CONST_0001_FLOAT 1
4323 #define CONST_1111_FLOAT 2
4325 uint32_t ConstantSource
;
4327 #define INPUTATTR_FACING 1
4328 #define INPUTATTR_W 2
4329 #define INPUTATTR_FACING_W 3
4330 uint32_t SwizzleSelect
;
4331 uint32_t SourceAttribute
;
4335 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__gen_user_data
*data
, void * restrict dst
,
4336 const struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
* restrict values
)
4338 uint32_t *dw
= (uint32_t * restrict
) dst
;
4341 __gen_field(values
->ComponentOverrideW
, 15, 15) |
4342 __gen_field(values
->ComponentOverrideZ
, 14, 14) |
4343 __gen_field(values
->ComponentOverrideY
, 13, 13) |
4344 __gen_field(values
->ComponentOverrideX
, 12, 12) |
4345 __gen_field(values
->SwizzleControlMode
, 11, 11) |
4346 __gen_field(values
->ConstantSource
, 9, 10) |
4347 __gen_field(values
->SwizzleSelect
, 6, 7) |
4348 __gen_field(values
->SourceAttribute
, 0, 4) |
4353 struct GEN8_3DSTATE_SBE_SWIZ
{
4354 uint32_t CommandType
;
4355 uint32_t CommandSubType
;
4356 uint32_t _3DCommandOpcode
;
4357 uint32_t _3DCommandSubOpcode
;
4358 uint32_t DwordLength
;
4359 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute
[16];
4360 uint32_t AttributeWrapShortestEnables
[16];
4364 GEN8_3DSTATE_SBE_SWIZ_pack(__gen_user_data
*data
, void * restrict dst
,
4365 const struct GEN8_3DSTATE_SBE_SWIZ
* restrict values
)
4367 uint32_t *dw
= (uint32_t * restrict
) dst
;
4370 __gen_field(values
->CommandType
, 29, 31) |
4371 __gen_field(values
->CommandSubType
, 27, 28) |
4372 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4373 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4374 __gen_field(values
->DwordLength
, 0, 7) |
4377 for (uint32_t i
= 0, j
= 1; i
< 16; i
+= 2, j
++) {
4378 uint32_t dw_Attribute0
;
4379 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data
, &dw_Attribute0
, &values
->Attribute
[i
+ 0]);
4380 uint32_t dw_Attribute1
;
4381 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data
, &dw_Attribute1
, &values
->Attribute
[i
+ 1]);
4383 __gen_field(dw_Attribute0
, 0, 15) |
4384 __gen_field(dw_Attribute1
, 16, 31) |
4388 for (uint32_t i
= 0, j
= 9; i
< 16; i
+= 8, j
++) {
4390 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 0], 0, 3) |
4391 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 1], 4, 7) |
4392 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 2], 8, 11) |
4393 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 3], 12, 15) |
4394 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 4], 16, 19) |
4395 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 5], 20, 23) |
4396 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 6], 24, 27) |
4397 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 7], 28, 31) |
4403 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length 0x00000002
4404 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length_bias 0x00000002
4405 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_header\
4407 .CommandSubType = 3, \
4408 ._3DCommandOpcode = 0, \
4409 ._3DCommandSubOpcode = 15, \
4412 struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
{
4413 uint32_t CommandType
;
4414 uint32_t CommandSubType
;
4415 uint32_t _3DCommandOpcode
;
4416 uint32_t _3DCommandSubOpcode
;
4417 uint32_t DwordLength
;
4418 uint32_t ScissorRectPointer
;
4422 GEN8_3DSTATE_SCISSOR_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
4423 const struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
* restrict values
)
4425 uint32_t *dw
= (uint32_t * restrict
) dst
;
4428 __gen_field(values
->CommandType
, 29, 31) |
4429 __gen_field(values
->CommandSubType
, 27, 28) |
4430 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4431 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4432 __gen_field(values
->DwordLength
, 0, 7) |
4436 __gen_offset(values
->ScissorRectPointer
, 5, 31) |
4441 #define GEN8_3DSTATE_SF_length 0x00000004
4442 #define GEN8_3DSTATE_SF_length_bias 0x00000002
4443 #define GEN8_3DSTATE_SF_header \
4445 .CommandSubType = 3, \
4446 ._3DCommandOpcode = 0, \
4447 ._3DCommandSubOpcode = 19, \
4450 struct GEN8_3DSTATE_SF
{
4451 uint32_t CommandType
;
4452 uint32_t CommandSubType
;
4453 uint32_t _3DCommandOpcode
;
4454 uint32_t _3DCommandSubOpcode
;
4455 uint32_t DwordLength
;
4456 bool LegacyGlobalDepthBiasEnable
;
4457 bool StatisticsEnable
;
4458 bool ViewportTransformEnable
;
4464 uint32_t LineEndCapAntialiasingRegionWidth
;
4465 bool LastPixelEnable
;
4466 uint32_t TriangleStripListProvokingVertexSelect
;
4467 uint32_t LineStripListProvokingVertexSelect
;
4468 uint32_t TriangleFanProvokingVertexSelect
;
4469 #define AALINEDISTANCE_TRUE 1
4470 uint32_t AALineDistanceMode
;
4471 bool SmoothPointEnable
;
4472 uint32_t VertexSubPixelPrecisionSelect
;
4475 uint32_t PointWidthSource
;
4480 GEN8_3DSTATE_SF_pack(__gen_user_data
*data
, void * restrict dst
,
4481 const struct GEN8_3DSTATE_SF
* restrict values
)
4483 uint32_t *dw
= (uint32_t * restrict
) dst
;
4486 __gen_field(values
->CommandType
, 29, 31) |
4487 __gen_field(values
->CommandSubType
, 27, 28) |
4488 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4489 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4490 __gen_field(values
->DwordLength
, 0, 7) |
4494 __gen_field(values
->LegacyGlobalDepthBiasEnable
, 11, 11) |
4495 __gen_field(values
->StatisticsEnable
, 10, 10) |
4496 __gen_field(values
->ViewportTransformEnable
, 1, 1) |
4500 __gen_field(values
->LineWidth
* (1 << 7), 18, 27) |
4501 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 16, 17) |
4505 __gen_field(values
->LastPixelEnable
, 31, 31) |
4506 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 29, 30) |
4507 __gen_field(values
->LineStripListProvokingVertexSelect
, 27, 28) |
4508 __gen_field(values
->TriangleFanProvokingVertexSelect
, 25, 26) |
4509 __gen_field(values
->AALineDistanceMode
, 14, 14) |
4510 __gen_field(values
->SmoothPointEnable
, 13, 13) |
4511 __gen_field(values
->VertexSubPixelPrecisionSelect
, 12, 12) |
4512 __gen_field(values
->PointWidthSource
, 11, 11) |
4513 __gen_field(values
->PointWidth
* (1 << 3), 0, 10) |
4518 #define GEN8_3DSTATE_SO_BUFFER_length 0x00000008
4519 #define GEN8_3DSTATE_SO_BUFFER_length_bias 0x00000002
4520 #define GEN8_3DSTATE_SO_BUFFER_header \
4522 .CommandSubType = 3, \
4523 ._3DCommandOpcode = 1, \
4524 ._3DCommandSubOpcode = 24, \
4527 struct GEN8_3DSTATE_SO_BUFFER
{
4528 uint32_t CommandType
;
4529 uint32_t CommandSubType
;
4530 uint32_t _3DCommandOpcode
;
4531 uint32_t _3DCommandSubOpcode
;
4532 uint32_t DwordLength
;
4533 bool SOBufferEnable
;
4534 uint32_t SOBufferIndex
;
4535 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SOBufferObjectControlState
;
4536 bool StreamOffsetWriteEnable
;
4537 bool StreamOutputBufferOffsetAddressEnable
;
4538 __gen_address_type SurfaceBaseAddress
;
4539 uint32_t SurfaceSize
;
4540 __gen_address_type StreamOutputBufferOffsetAddress
;
4541 uint32_t StreamOffset
;
4545 GEN8_3DSTATE_SO_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4546 const struct GEN8_3DSTATE_SO_BUFFER
* restrict values
)
4548 uint32_t *dw
= (uint32_t * restrict
) dst
;
4551 __gen_field(values
->CommandType
, 29, 31) |
4552 __gen_field(values
->CommandSubType
, 27, 28) |
4553 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4554 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4555 __gen_field(values
->DwordLength
, 0, 7) |
4558 uint32_t dw_SOBufferObjectControlState
;
4559 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SOBufferObjectControlState
, &values
->SOBufferObjectControlState
);
4561 __gen_field(values
->SOBufferEnable
, 31, 31) |
4562 __gen_field(values
->SOBufferIndex
, 29, 30) |
4563 __gen_field(dw_SOBufferObjectControlState
, 22, 28) |
4564 __gen_field(values
->StreamOffsetWriteEnable
, 21, 21) |
4565 __gen_field(values
->StreamOutputBufferOffsetAddressEnable
, 20, 20) |
4572 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4578 __gen_field(values
->SurfaceSize
, 0, 29) |
4585 __gen_combine_address(data
, &dw
[5], values
->StreamOutputBufferOffsetAddress
, dw5
);
4591 __gen_field(values
->StreamOffset
, 0, 31) |
4596 #define GEN8_3DSTATE_SO_DECL_LIST_length_bias 0x00000002
4597 #define GEN8_3DSTATE_SO_DECL_LIST_header \
4599 .CommandSubType = 3, \
4600 ._3DCommandOpcode = 1, \
4601 ._3DCommandSubOpcode = 23
4603 struct GEN8_SO_DECL
{
4604 uint32_t OutputBufferSlot
;
4606 uint32_t RegisterIndex
;
4607 uint32_t ComponentMask
;
4611 GEN8_SO_DECL_pack(__gen_user_data
*data
, void * restrict dst
,
4612 const struct GEN8_SO_DECL
* restrict values
)
4614 uint32_t *dw
= (uint32_t * restrict
) dst
;
4617 __gen_field(values
->OutputBufferSlot
, 12, 13) |
4618 __gen_field(values
->HoleFlag
, 11, 11) |
4619 __gen_field(values
->RegisterIndex
, 4, 9) |
4620 __gen_field(values
->ComponentMask
, 0, 3) |
4625 struct GEN8_SO_DECL_ENTRY
{
4626 struct GEN8_SO_DECL Stream3Decl
;
4627 struct GEN8_SO_DECL Stream2Decl
;
4628 struct GEN8_SO_DECL Stream1Decl
;
4629 struct GEN8_SO_DECL Stream0Decl
;
4633 GEN8_SO_DECL_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
4634 const struct GEN8_SO_DECL_ENTRY
* restrict values
)
4636 uint32_t *dw
= (uint32_t * restrict
) dst
;
4638 uint32_t dw_Stream3Decl
;
4639 GEN8_SO_DECL_pack(data
, &dw_Stream3Decl
, &values
->Stream3Decl
);
4640 uint32_t dw_Stream2Decl
;
4641 GEN8_SO_DECL_pack(data
, &dw_Stream2Decl
, &values
->Stream2Decl
);
4642 uint32_t dw_Stream1Decl
;
4643 GEN8_SO_DECL_pack(data
, &dw_Stream1Decl
, &values
->Stream1Decl
);
4644 uint32_t dw_Stream0Decl
;
4645 GEN8_SO_DECL_pack(data
, &dw_Stream0Decl
, &values
->Stream0Decl
);
4647 __gen_field(dw_Stream3Decl
, 48, 63) |
4648 __gen_field(dw_Stream2Decl
, 32, 47) |
4649 __gen_field(dw_Stream1Decl
, 16, 31) |
4650 __gen_field(dw_Stream0Decl
, 0, 15) |
4658 struct GEN8_3DSTATE_SO_DECL_LIST
{
4659 uint32_t CommandType
;
4660 uint32_t CommandSubType
;
4661 uint32_t _3DCommandOpcode
;
4662 uint32_t _3DCommandSubOpcode
;
4663 uint32_t DwordLength
;
4664 uint32_t StreamtoBufferSelects3
;
4665 uint32_t StreamtoBufferSelects2
;
4666 uint32_t StreamtoBufferSelects1
;
4667 uint32_t StreamtoBufferSelects0
;
4668 uint32_t NumEntries3
;
4669 uint32_t NumEntries2
;
4670 uint32_t NumEntries1
;
4671 uint32_t NumEntries0
;
4672 /* variable length fields follow */
4676 GEN8_3DSTATE_SO_DECL_LIST_pack(__gen_user_data
*data
, void * restrict dst
,
4677 const struct GEN8_3DSTATE_SO_DECL_LIST
* restrict values
)
4679 uint32_t *dw
= (uint32_t * restrict
) dst
;
4682 __gen_field(values
->CommandType
, 29, 31) |
4683 __gen_field(values
->CommandSubType
, 27, 28) |
4684 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4685 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4686 __gen_field(values
->DwordLength
, 0, 8) |
4690 __gen_field(values
->StreamtoBufferSelects3
, 12, 15) |
4691 __gen_field(values
->StreamtoBufferSelects2
, 8, 11) |
4692 __gen_field(values
->StreamtoBufferSelects1
, 4, 7) |
4693 __gen_field(values
->StreamtoBufferSelects0
, 0, 3) |
4697 __gen_field(values
->NumEntries3
, 24, 31) |
4698 __gen_field(values
->NumEntries2
, 16, 23) |
4699 __gen_field(values
->NumEntries1
, 8, 15) |
4700 __gen_field(values
->NumEntries0
, 0, 7) |
4703 /* variable length fields follow */
4706 #define GEN8_3DSTATE_STENCIL_BUFFER_length 0x00000005
4707 #define GEN8_3DSTATE_STENCIL_BUFFER_length_bias 0x00000002
4708 #define GEN8_3DSTATE_STENCIL_BUFFER_header \
4710 .CommandSubType = 3, \
4711 ._3DCommandOpcode = 0, \
4712 ._3DCommandSubOpcode = 6, \
4715 struct GEN8_3DSTATE_STENCIL_BUFFER
{
4716 uint32_t CommandType
;
4717 uint32_t CommandSubType
;
4718 uint32_t _3DCommandOpcode
;
4719 uint32_t _3DCommandSubOpcode
;
4720 uint32_t DwordLength
;
4721 uint32_t StencilBufferEnable
;
4722 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StencilBufferObjectControlState
;
4723 uint32_t SurfacePitch
;
4724 __gen_address_type SurfaceBaseAddress
;
4725 uint32_t SurfaceQPitch
;
4729 GEN8_3DSTATE_STENCIL_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4730 const struct GEN8_3DSTATE_STENCIL_BUFFER
* restrict values
)
4732 uint32_t *dw
= (uint32_t * restrict
) dst
;
4735 __gen_field(values
->CommandType
, 29, 31) |
4736 __gen_field(values
->CommandSubType
, 27, 28) |
4737 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4738 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4739 __gen_field(values
->DwordLength
, 0, 7) |
4742 uint32_t dw_StencilBufferObjectControlState
;
4743 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StencilBufferObjectControlState
, &values
->StencilBufferObjectControlState
);
4745 __gen_field(values
->StencilBufferEnable
, 31, 31) |
4746 __gen_field(dw_StencilBufferObjectControlState
, 22, 28) |
4747 __gen_field(values
->SurfacePitch
, 0, 16) |
4754 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4760 __gen_field(values
->SurfaceQPitch
, 0, 14) |
4765 #define GEN8_3DSTATE_STREAMOUT_length 0x00000005
4766 #define GEN8_3DSTATE_STREAMOUT_length_bias 0x00000002
4767 #define GEN8_3DSTATE_STREAMOUT_header \
4769 .CommandSubType = 3, \
4770 ._3DCommandOpcode = 0, \
4771 ._3DCommandSubOpcode = 30, \
4774 struct GEN8_3DSTATE_STREAMOUT
{
4775 uint32_t CommandType
;
4776 uint32_t CommandSubType
;
4777 uint32_t _3DCommandOpcode
;
4778 uint32_t _3DCommandSubOpcode
;
4779 uint32_t DwordLength
;
4780 uint32_t SOFunctionEnable
;
4781 uint32_t APIRenderingDisable
;
4782 uint32_t RenderStreamSelect
;
4785 uint32_t ReorderMode
;
4786 bool SOStatisticsEnable
;
4791 uint32_t ForceRendering
;
4792 uint32_t Stream3VertexReadOffset
;
4793 uint32_t Stream3VertexReadLength
;
4794 uint32_t Stream2VertexReadOffset
;
4795 uint32_t Stream2VertexReadLength
;
4796 uint32_t Stream1VertexReadOffset
;
4797 uint32_t Stream1VertexReadLength
;
4798 uint32_t Stream0VertexReadOffset
;
4799 uint32_t Stream0VertexReadLength
;
4800 uint32_t Buffer1SurfacePitch
;
4801 uint32_t Buffer0SurfacePitch
;
4802 uint32_t Buffer3SurfacePitch
;
4803 uint32_t Buffer2SurfacePitch
;
4807 GEN8_3DSTATE_STREAMOUT_pack(__gen_user_data
*data
, void * restrict dst
,
4808 const struct GEN8_3DSTATE_STREAMOUT
* restrict values
)
4810 uint32_t *dw
= (uint32_t * restrict
) dst
;
4813 __gen_field(values
->CommandType
, 29, 31) |
4814 __gen_field(values
->CommandSubType
, 27, 28) |
4815 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4816 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4817 __gen_field(values
->DwordLength
, 0, 7) |
4821 __gen_field(values
->SOFunctionEnable
, 31, 31) |
4822 __gen_field(values
->APIRenderingDisable
, 30, 30) |
4823 __gen_field(values
->RenderStreamSelect
, 27, 28) |
4824 __gen_field(values
->ReorderMode
, 26, 26) |
4825 __gen_field(values
->SOStatisticsEnable
, 25, 25) |
4826 __gen_field(values
->ForceRendering
, 23, 24) |
4830 __gen_field(values
->Stream3VertexReadOffset
, 29, 29) |
4831 __gen_field(values
->Stream3VertexReadLength
, 24, 28) |
4832 __gen_field(values
->Stream2VertexReadOffset
, 21, 21) |
4833 __gen_field(values
->Stream2VertexReadLength
, 16, 20) |
4834 __gen_field(values
->Stream1VertexReadOffset
, 13, 13) |
4835 __gen_field(values
->Stream1VertexReadLength
, 8, 12) |
4836 __gen_field(values
->Stream0VertexReadOffset
, 5, 5) |
4837 __gen_field(values
->Stream0VertexReadLength
, 0, 4) |
4841 __gen_field(values
->Buffer1SurfacePitch
, 16, 27) |
4842 __gen_field(values
->Buffer0SurfacePitch
, 0, 11) |
4846 __gen_field(values
->Buffer3SurfacePitch
, 16, 27) |
4847 __gen_field(values
->Buffer2SurfacePitch
, 0, 11) |
4852 #define GEN8_3DSTATE_TE_length 0x00000004
4853 #define GEN8_3DSTATE_TE_length_bias 0x00000002
4854 #define GEN8_3DSTATE_TE_header \
4856 .CommandSubType = 3, \
4857 ._3DCommandOpcode = 0, \
4858 ._3DCommandSubOpcode = 28, \
4861 struct GEN8_3DSTATE_TE
{
4862 uint32_t CommandType
;
4863 uint32_t CommandSubType
;
4864 uint32_t _3DCommandOpcode
;
4865 uint32_t _3DCommandSubOpcode
;
4866 uint32_t DwordLength
;
4868 #define ODD_FRACTIONAL 1
4869 #define EVEN_FRACTIONAL 2
4870 uint32_t Partitioning
;
4872 #define OUTPUT_LINE 1
4873 #define OUTPUT_TRI_CW 2
4874 #define OUTPUT_TRI_CCW 3
4875 uint32_t OutputTopology
;
4884 float MaximumTessellationFactorOdd
;
4885 float MaximumTessellationFactorNotOdd
;
4889 GEN8_3DSTATE_TE_pack(__gen_user_data
*data
, void * restrict dst
,
4890 const struct GEN8_3DSTATE_TE
* restrict values
)
4892 uint32_t *dw
= (uint32_t * restrict
) dst
;
4895 __gen_field(values
->CommandType
, 29, 31) |
4896 __gen_field(values
->CommandSubType
, 27, 28) |
4897 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4898 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4899 __gen_field(values
->DwordLength
, 0, 7) |
4903 __gen_field(values
->Partitioning
, 12, 13) |
4904 __gen_field(values
->OutputTopology
, 8, 9) |
4905 __gen_field(values
->TEDomain
, 4, 5) |
4906 __gen_field(values
->TEMode
, 1, 2) |
4907 __gen_field(values
->TEEnable
, 0, 0) |
4911 __gen_float(values
->MaximumTessellationFactorOdd
) |
4915 __gen_float(values
->MaximumTessellationFactorNotOdd
) |
4920 #define GEN8_3DSTATE_URB_DS_length 0x00000002
4921 #define GEN8_3DSTATE_URB_DS_length_bias 0x00000002
4922 #define GEN8_3DSTATE_URB_DS_header \
4924 .CommandSubType = 3, \
4925 ._3DCommandOpcode = 0, \
4926 ._3DCommandSubOpcode = 50, \
4929 struct GEN8_3DSTATE_URB_DS
{
4930 uint32_t CommandType
;
4931 uint32_t CommandSubType
;
4932 uint32_t _3DCommandOpcode
;
4933 uint32_t _3DCommandSubOpcode
;
4934 uint32_t DwordLength
;
4935 uint32_t DSURBStartingAddress
;
4936 uint32_t DSURBEntryAllocationSize
;
4937 uint32_t DSNumberofURBEntries
;
4941 GEN8_3DSTATE_URB_DS_pack(__gen_user_data
*data
, void * restrict dst
,
4942 const struct GEN8_3DSTATE_URB_DS
* restrict values
)
4944 uint32_t *dw
= (uint32_t * restrict
) dst
;
4947 __gen_field(values
->CommandType
, 29, 31) |
4948 __gen_field(values
->CommandSubType
, 27, 28) |
4949 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4950 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4951 __gen_field(values
->DwordLength
, 0, 7) |
4955 __gen_field(values
->DSURBStartingAddress
, 25, 31) |
4956 __gen_field(values
->DSURBEntryAllocationSize
, 16, 24) |
4957 __gen_field(values
->DSNumberofURBEntries
, 0, 15) |
4962 #define GEN8_3DSTATE_URB_GS_length 0x00000002
4963 #define GEN8_3DSTATE_URB_GS_length_bias 0x00000002
4964 #define GEN8_3DSTATE_URB_GS_header \
4966 .CommandSubType = 3, \
4967 ._3DCommandOpcode = 0, \
4968 ._3DCommandSubOpcode = 51, \
4971 struct GEN8_3DSTATE_URB_GS
{
4972 uint32_t CommandType
;
4973 uint32_t CommandSubType
;
4974 uint32_t _3DCommandOpcode
;
4975 uint32_t _3DCommandSubOpcode
;
4976 uint32_t DwordLength
;
4977 uint32_t GSURBStartingAddress
;
4978 uint32_t GSURBEntryAllocationSize
;
4979 uint32_t GSNumberofURBEntries
;
4983 GEN8_3DSTATE_URB_GS_pack(__gen_user_data
*data
, void * restrict dst
,
4984 const struct GEN8_3DSTATE_URB_GS
* restrict values
)
4986 uint32_t *dw
= (uint32_t * restrict
) dst
;
4989 __gen_field(values
->CommandType
, 29, 31) |
4990 __gen_field(values
->CommandSubType
, 27, 28) |
4991 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4992 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4993 __gen_field(values
->DwordLength
, 0, 7) |
4997 __gen_field(values
->GSURBStartingAddress
, 25, 31) |
4998 __gen_field(values
->GSURBEntryAllocationSize
, 16, 24) |
4999 __gen_field(values
->GSNumberofURBEntries
, 0, 15) |
5004 #define GEN8_3DSTATE_URB_HS_length 0x00000002
5005 #define GEN8_3DSTATE_URB_HS_length_bias 0x00000002
5006 #define GEN8_3DSTATE_URB_HS_header \
5008 .CommandSubType = 3, \
5009 ._3DCommandOpcode = 0, \
5010 ._3DCommandSubOpcode = 49, \
5013 struct GEN8_3DSTATE_URB_HS
{
5014 uint32_t CommandType
;
5015 uint32_t CommandSubType
;
5016 uint32_t _3DCommandOpcode
;
5017 uint32_t _3DCommandSubOpcode
;
5018 uint32_t DwordLength
;
5019 uint32_t HSURBStartingAddress
;
5020 uint32_t HSURBEntryAllocationSize
;
5021 uint32_t HSNumberofURBEntries
;
5025 GEN8_3DSTATE_URB_HS_pack(__gen_user_data
*data
, void * restrict dst
,
5026 const struct GEN8_3DSTATE_URB_HS
* restrict values
)
5028 uint32_t *dw
= (uint32_t * restrict
) dst
;
5031 __gen_field(values
->CommandType
, 29, 31) |
5032 __gen_field(values
->CommandSubType
, 27, 28) |
5033 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5034 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5035 __gen_field(values
->DwordLength
, 0, 7) |
5039 __gen_field(values
->HSURBStartingAddress
, 25, 31) |
5040 __gen_field(values
->HSURBEntryAllocationSize
, 16, 24) |
5041 __gen_field(values
->HSNumberofURBEntries
, 0, 15) |
5046 #define GEN8_3DSTATE_VERTEX_BUFFERS_length_bias 0x00000002
5047 #define GEN8_3DSTATE_VERTEX_BUFFERS_header \
5049 .CommandSubType = 3, \
5050 ._3DCommandOpcode = 0, \
5051 ._3DCommandSubOpcode = 8
5053 struct GEN8_VERTEX_BUFFER_STATE
{
5054 uint32_t VertexBufferIndex
;
5055 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
5056 uint32_t AddressModifyEnable
;
5057 bool NullVertexBuffer
;
5058 uint32_t BufferPitch
;
5059 __gen_address_type BufferStartingAddress
;
5060 uint32_t BufferSize
;
5064 GEN8_VERTEX_BUFFER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5065 const struct GEN8_VERTEX_BUFFER_STATE
* restrict values
)
5067 uint32_t *dw
= (uint32_t * restrict
) dst
;
5069 uint32_t dw_MemoryObjectControlState
;
5070 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
5072 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5073 __gen_field(dw_MemoryObjectControlState
, 16, 22) |
5074 __gen_field(values
->AddressModifyEnable
, 14, 14) |
5075 __gen_field(values
->NullVertexBuffer
, 13, 13) |
5076 __gen_field(values
->BufferPitch
, 0, 11) |
5083 __gen_combine_address(data
, &dw
[1], values
->BufferStartingAddress
, dw1
);
5089 __gen_field(values
->BufferSize
, 0, 31) |
5094 struct GEN8_3DSTATE_VERTEX_BUFFERS
{
5095 uint32_t CommandType
;
5096 uint32_t CommandSubType
;
5097 uint32_t _3DCommandOpcode
;
5098 uint32_t _3DCommandSubOpcode
;
5099 uint32_t DwordLength
;
5100 /* variable length fields follow */
5104 GEN8_3DSTATE_VERTEX_BUFFERS_pack(__gen_user_data
*data
, void * restrict dst
,
5105 const struct GEN8_3DSTATE_VERTEX_BUFFERS
* restrict values
)
5107 uint32_t *dw
= (uint32_t * restrict
) dst
;
5110 __gen_field(values
->CommandType
, 29, 31) |
5111 __gen_field(values
->CommandSubType
, 27, 28) |
5112 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5113 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5114 __gen_field(values
->DwordLength
, 0, 7) |
5117 /* variable length fields follow */
5120 #define GEN8_3DSTATE_VERTEX_ELEMENTS_length_bias 0x00000002
5121 #define GEN8_3DSTATE_VERTEX_ELEMENTS_header \
5123 .CommandSubType = 3, \
5124 ._3DCommandOpcode = 0, \
5125 ._3DCommandSubOpcode = 9
5127 struct GEN8_VERTEX_ELEMENT_STATE
{
5128 uint32_t VertexBufferIndex
;
5130 uint32_t SourceElementFormat
;
5131 bool EdgeFlagEnable
;
5132 uint32_t SourceElementOffset
;
5133 uint32_t Component0Control
;
5134 uint32_t Component1Control
;
5135 uint32_t Component2Control
;
5136 uint32_t Component3Control
;
5140 GEN8_VERTEX_ELEMENT_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5141 const struct GEN8_VERTEX_ELEMENT_STATE
* restrict values
)
5143 uint32_t *dw
= (uint32_t * restrict
) dst
;
5146 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5147 __gen_field(values
->Valid
, 25, 25) |
5148 __gen_field(values
->SourceElementFormat
, 16, 24) |
5149 __gen_field(values
->EdgeFlagEnable
, 15, 15) |
5150 __gen_field(values
->SourceElementOffset
, 0, 11) |
5154 __gen_field(values
->Component0Control
, 28, 30) |
5155 __gen_field(values
->Component1Control
, 24, 26) |
5156 __gen_field(values
->Component2Control
, 20, 22) |
5157 __gen_field(values
->Component3Control
, 16, 18) |
5162 struct GEN8_3DSTATE_VERTEX_ELEMENTS
{
5163 uint32_t CommandType
;
5164 uint32_t CommandSubType
;
5165 uint32_t _3DCommandOpcode
;
5166 uint32_t _3DCommandSubOpcode
;
5167 uint32_t DwordLength
;
5168 /* variable length fields follow */
5172 GEN8_3DSTATE_VERTEX_ELEMENTS_pack(__gen_user_data
*data
, void * restrict dst
,
5173 const struct GEN8_3DSTATE_VERTEX_ELEMENTS
* restrict values
)
5175 uint32_t *dw
= (uint32_t * restrict
) dst
;
5178 __gen_field(values
->CommandType
, 29, 31) |
5179 __gen_field(values
->CommandSubType
, 27, 28) |
5180 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5181 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5182 __gen_field(values
->DwordLength
, 0, 7) |
5185 /* variable length fields follow */
5188 #define GEN8_3DSTATE_VF_length 0x00000002
5189 #define GEN8_3DSTATE_VF_length_bias 0x00000002
5190 #define GEN8_3DSTATE_VF_header \
5192 .CommandSubType = 3, \
5193 ._3DCommandOpcode = 0, \
5194 ._3DCommandSubOpcode = 12, \
5197 struct GEN8_3DSTATE_VF
{
5198 uint32_t CommandType
;
5199 uint32_t CommandSubType
;
5200 uint32_t _3DCommandOpcode
;
5201 uint32_t _3DCommandSubOpcode
;
5202 bool IndexedDrawCutIndexEnable
;
5203 uint32_t DwordLength
;
5208 GEN8_3DSTATE_VF_pack(__gen_user_data
*data
, void * restrict dst
,
5209 const struct GEN8_3DSTATE_VF
* restrict values
)
5211 uint32_t *dw
= (uint32_t * restrict
) dst
;
5214 __gen_field(values
->CommandType
, 29, 31) |
5215 __gen_field(values
->CommandSubType
, 27, 28) |
5216 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5217 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5218 __gen_field(values
->IndexedDrawCutIndexEnable
, 8, 8) |
5219 __gen_field(values
->DwordLength
, 0, 7) |
5223 __gen_field(values
->CutIndex
, 0, 31) |
5228 #define GEN8_3DSTATE_VF_INSTANCING_length 0x00000003
5229 #define GEN8_3DSTATE_VF_INSTANCING_length_bias 0x00000002
5230 #define GEN8_3DSTATE_VF_INSTANCING_header \
5232 .CommandSubType = 3, \
5233 ._3DCommandOpcode = 0, \
5234 ._3DCommandSubOpcode = 73, \
5237 struct GEN8_3DSTATE_VF_INSTANCING
{
5238 uint32_t CommandType
;
5239 uint32_t CommandSubType
;
5240 uint32_t _3DCommandOpcode
;
5241 uint32_t _3DCommandSubOpcode
;
5242 uint32_t DwordLength
;
5243 bool InstancingEnable
;
5244 uint32_t VertexElementIndex
;
5245 uint32_t InstanceDataStepRate
;
5249 GEN8_3DSTATE_VF_INSTANCING_pack(__gen_user_data
*data
, void * restrict dst
,
5250 const struct GEN8_3DSTATE_VF_INSTANCING
* restrict values
)
5252 uint32_t *dw
= (uint32_t * restrict
) dst
;
5255 __gen_field(values
->CommandType
, 29, 31) |
5256 __gen_field(values
->CommandSubType
, 27, 28) |
5257 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5258 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5259 __gen_field(values
->DwordLength
, 0, 7) |
5263 __gen_field(values
->InstancingEnable
, 8, 8) |
5264 __gen_field(values
->VertexElementIndex
, 0, 5) |
5268 __gen_field(values
->InstanceDataStepRate
, 0, 31) |
5273 #define GEN8_3DSTATE_VF_SGVS_length 0x00000002
5274 #define GEN8_3DSTATE_VF_SGVS_length_bias 0x00000002
5275 #define GEN8_3DSTATE_VF_SGVS_header \
5277 .CommandSubType = 3, \
5278 ._3DCommandOpcode = 0, \
5279 ._3DCommandSubOpcode = 74, \
5282 struct GEN8_3DSTATE_VF_SGVS
{
5283 uint32_t CommandType
;
5284 uint32_t CommandSubType
;
5285 uint32_t _3DCommandOpcode
;
5286 uint32_t _3DCommandSubOpcode
;
5287 uint32_t DwordLength
;
5288 bool InstanceIDEnable
;
5293 uint32_t InstanceIDComponentNumber
;
5294 uint32_t InstanceIDElementOffset
;
5295 bool VertexIDEnable
;
5300 uint32_t VertexIDComponentNumber
;
5301 uint32_t VertexIDElementOffset
;
5305 GEN8_3DSTATE_VF_SGVS_pack(__gen_user_data
*data
, void * restrict dst
,
5306 const struct GEN8_3DSTATE_VF_SGVS
* restrict values
)
5308 uint32_t *dw
= (uint32_t * restrict
) dst
;
5311 __gen_field(values
->CommandType
, 29, 31) |
5312 __gen_field(values
->CommandSubType
, 27, 28) |
5313 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5314 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5315 __gen_field(values
->DwordLength
, 0, 7) |
5319 __gen_field(values
->InstanceIDEnable
, 31, 31) |
5320 __gen_field(values
->InstanceIDComponentNumber
, 29, 30) |
5321 __gen_field(values
->InstanceIDElementOffset
, 16, 21) |
5322 __gen_field(values
->VertexIDEnable
, 15, 15) |
5323 __gen_field(values
->VertexIDComponentNumber
, 13, 14) |
5324 __gen_field(values
->VertexIDElementOffset
, 0, 5) |
5329 #define GEN8_3DSTATE_VF_STATISTICS_length 0x00000001
5330 #define GEN8_3DSTATE_VF_STATISTICS_length_bias 0x00000001
5331 #define GEN8_3DSTATE_VF_STATISTICS_header \
5333 .CommandSubType = 1, \
5334 ._3DCommandOpcode = 0, \
5335 ._3DCommandSubOpcode = 11
5337 struct GEN8_3DSTATE_VF_STATISTICS
{
5338 uint32_t CommandType
;
5339 uint32_t CommandSubType
;
5340 uint32_t _3DCommandOpcode
;
5341 uint32_t _3DCommandSubOpcode
;
5342 bool StatisticsEnable
;
5346 GEN8_3DSTATE_VF_STATISTICS_pack(__gen_user_data
*data
, void * restrict dst
,
5347 const struct GEN8_3DSTATE_VF_STATISTICS
* restrict values
)
5349 uint32_t *dw
= (uint32_t * restrict
) dst
;
5352 __gen_field(values
->CommandType
, 29, 31) |
5353 __gen_field(values
->CommandSubType
, 27, 28) |
5354 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5355 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5356 __gen_field(values
->StatisticsEnable
, 0, 0) |
5361 #define GEN8_3DSTATE_VF_TOPOLOGY_length 0x00000002
5362 #define GEN8_3DSTATE_VF_TOPOLOGY_length_bias 0x00000002
5363 #define GEN8_3DSTATE_VF_TOPOLOGY_header \
5365 .CommandSubType = 3, \
5366 ._3DCommandOpcode = 0, \
5367 ._3DCommandSubOpcode = 75, \
5370 struct GEN8_3DSTATE_VF_TOPOLOGY
{
5371 uint32_t CommandType
;
5372 uint32_t CommandSubType
;
5373 uint32_t _3DCommandOpcode
;
5374 uint32_t _3DCommandSubOpcode
;
5375 uint32_t DwordLength
;
5376 uint32_t PrimitiveTopologyType
;
5380 GEN8_3DSTATE_VF_TOPOLOGY_pack(__gen_user_data
*data
, void * restrict dst
,
5381 const struct GEN8_3DSTATE_VF_TOPOLOGY
* restrict values
)
5383 uint32_t *dw
= (uint32_t * restrict
) dst
;
5386 __gen_field(values
->CommandType
, 29, 31) |
5387 __gen_field(values
->CommandSubType
, 27, 28) |
5388 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5389 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5390 __gen_field(values
->DwordLength
, 0, 7) |
5394 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
5399 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length 0x00000002
5400 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias 0x00000002
5401 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\
5403 .CommandSubType = 3, \
5404 ._3DCommandOpcode = 0, \
5405 ._3DCommandSubOpcode = 35, \
5408 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
{
5409 uint32_t CommandType
;
5410 uint32_t CommandSubType
;
5411 uint32_t _3DCommandOpcode
;
5412 uint32_t _3DCommandSubOpcode
;
5413 uint32_t DwordLength
;
5414 uint32_t CCViewportPointer
;
5418 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__gen_user_data
*data
, void * restrict dst
,
5419 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
* restrict values
)
5421 uint32_t *dw
= (uint32_t * restrict
) dst
;
5424 __gen_field(values
->CommandType
, 29, 31) |
5425 __gen_field(values
->CommandSubType
, 27, 28) |
5426 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5427 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5428 __gen_field(values
->DwordLength
, 0, 7) |
5432 __gen_offset(values
->CCViewportPointer
, 5, 31) |
5437 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length 0x00000002
5438 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias 0x00000002
5439 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\
5441 .CommandSubType = 3, \
5442 ._3DCommandOpcode = 0, \
5443 ._3DCommandSubOpcode = 33, \
5446 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
{
5447 uint32_t CommandType
;
5448 uint32_t CommandSubType
;
5449 uint32_t _3DCommandOpcode
;
5450 uint32_t _3DCommandSubOpcode
;
5451 uint32_t DwordLength
;
5452 uint32_t SFClipViewportPointer
;
5456 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
5457 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
* restrict values
)
5459 uint32_t *dw
= (uint32_t * restrict
) dst
;
5462 __gen_field(values
->CommandType
, 29, 31) |
5463 __gen_field(values
->CommandSubType
, 27, 28) |
5464 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5465 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5466 __gen_field(values
->DwordLength
, 0, 7) |
5470 __gen_offset(values
->SFClipViewportPointer
, 6, 31) |
5475 #define GEN8_3DSTATE_WM_length 0x00000002
5476 #define GEN8_3DSTATE_WM_length_bias 0x00000002
5477 #define GEN8_3DSTATE_WM_header \
5479 .CommandSubType = 3, \
5480 ._3DCommandOpcode = 0, \
5481 ._3DCommandSubOpcode = 20, \
5484 struct GEN8_3DSTATE_WM
{
5485 uint32_t CommandType
;
5486 uint32_t CommandSubType
;
5487 uint32_t _3DCommandOpcode
;
5488 uint32_t _3DCommandSubOpcode
;
5489 uint32_t DwordLength
;
5490 bool StatisticsEnable
;
5491 bool LegacyDepthBufferClearEnable
;
5492 bool LegacyDepthBufferResolveEnable
;
5493 bool LegacyHierarchicalDepthBufferResolveEnable
;
5494 bool LegacyDiamondLineRasterization
;
5498 uint32_t EarlyDepthStencilControl
;
5502 uint32_t ForceThreadDispatchEnable
;
5503 #define INTERP_PIXEL 0
5504 #define INTERP_CENTROID 2
5505 #define INTERP_SAMPLE 3
5506 uint32_t PositionZWInterpolationMode
;
5507 uint32_t BarycentricInterpolationMode
;
5512 uint32_t LineEndCapAntialiasingRegionWidth
;
5517 uint32_t LineAntialiasingRegionWidth
;
5518 bool PolygonStippleEnable
;
5519 bool LineStippleEnable
;
5520 #define RASTRULE_UPPER_LEFT 0
5521 #define RASTRULE_UPPER_RIGHT 1
5522 uint32_t PointRasterizationRule
;
5526 uint32_t ForceKillPixelEnable
;
5530 GEN8_3DSTATE_WM_pack(__gen_user_data
*data
, void * restrict dst
,
5531 const struct GEN8_3DSTATE_WM
* restrict values
)
5533 uint32_t *dw
= (uint32_t * restrict
) dst
;
5536 __gen_field(values
->CommandType
, 29, 31) |
5537 __gen_field(values
->CommandSubType
, 27, 28) |
5538 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5539 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5540 __gen_field(values
->DwordLength
, 0, 7) |
5544 __gen_field(values
->StatisticsEnable
, 31, 31) |
5545 __gen_field(values
->LegacyDepthBufferClearEnable
, 30, 30) |
5546 __gen_field(values
->LegacyDepthBufferResolveEnable
, 28, 28) |
5547 __gen_field(values
->LegacyHierarchicalDepthBufferResolveEnable
, 27, 27) |
5548 __gen_field(values
->LegacyDiamondLineRasterization
, 26, 26) |
5549 __gen_field(values
->EarlyDepthStencilControl
, 21, 22) |
5550 __gen_field(values
->ForceThreadDispatchEnable
, 19, 20) |
5551 __gen_field(values
->PositionZWInterpolationMode
, 17, 18) |
5552 __gen_field(values
->BarycentricInterpolationMode
, 11, 16) |
5553 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 8, 9) |
5554 __gen_field(values
->LineAntialiasingRegionWidth
, 6, 7) |
5555 __gen_field(values
->PolygonStippleEnable
, 4, 4) |
5556 __gen_field(values
->LineStippleEnable
, 3, 3) |
5557 __gen_field(values
->PointRasterizationRule
, 2, 2) |
5558 __gen_field(values
->ForceKillPixelEnable
, 0, 1) |
5563 #define GEN8_3DSTATE_WM_CHROMAKEY_length 0x00000002
5564 #define GEN8_3DSTATE_WM_CHROMAKEY_length_bias 0x00000002
5565 #define GEN8_3DSTATE_WM_CHROMAKEY_header \
5567 .CommandSubType = 3, \
5568 ._3DCommandOpcode = 0, \
5569 ._3DCommandSubOpcode = 76, \
5572 struct GEN8_3DSTATE_WM_CHROMAKEY
{
5573 uint32_t CommandType
;
5574 uint32_t CommandSubType
;
5575 uint32_t _3DCommandOpcode
;
5576 uint32_t _3DCommandSubOpcode
;
5577 uint32_t DwordLength
;
5578 bool ChromaKeyKillEnable
;
5582 GEN8_3DSTATE_WM_CHROMAKEY_pack(__gen_user_data
*data
, void * restrict dst
,
5583 const struct GEN8_3DSTATE_WM_CHROMAKEY
* restrict values
)
5585 uint32_t *dw
= (uint32_t * restrict
) dst
;
5588 __gen_field(values
->CommandType
, 29, 31) |
5589 __gen_field(values
->CommandSubType
, 27, 28) |
5590 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5591 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5592 __gen_field(values
->DwordLength
, 0, 7) |
5596 __gen_field(values
->ChromaKeyKillEnable
, 31, 31) |
5601 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length 0x00000003
5602 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length_bias 0x00000002
5603 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_header \
5605 .CommandSubType = 3, \
5606 ._3DCommandOpcode = 0, \
5607 ._3DCommandSubOpcode = 78, \
5610 struct GEN8_3DSTATE_WM_DEPTH_STENCIL
{
5611 uint32_t CommandType
;
5612 uint32_t CommandSubType
;
5613 uint32_t _3DCommandOpcode
;
5614 uint32_t _3DCommandSubOpcode
;
5615 uint32_t DwordLength
;
5616 uint32_t StencilFailOp
;
5617 uint32_t StencilPassDepthFailOp
;
5618 uint32_t StencilPassDepthPassOp
;
5619 uint32_t BackfaceStencilTestFunction
;
5620 uint32_t BackfaceStencilFailOp
;
5621 uint32_t BackfaceStencilPassDepthFailOp
;
5622 uint32_t BackfaceStencilPassDepthPassOp
;
5623 uint32_t StencilTestFunction
;
5624 uint32_t DepthTestFunction
;
5625 bool DoubleSidedStencilEnable
;
5626 bool StencilTestEnable
;
5627 bool StencilBufferWriteEnable
;
5628 bool DepthTestEnable
;
5629 bool DepthBufferWriteEnable
;
5630 uint32_t StencilTestMask
;
5631 uint32_t StencilWriteMask
;
5632 uint32_t BackfaceStencilTestMask
;
5633 uint32_t BackfaceStencilWriteMask
;
5637 GEN8_3DSTATE_WM_DEPTH_STENCIL_pack(__gen_user_data
*data
, void * restrict dst
,
5638 const struct GEN8_3DSTATE_WM_DEPTH_STENCIL
* restrict values
)
5640 uint32_t *dw
= (uint32_t * restrict
) dst
;
5643 __gen_field(values
->CommandType
, 29, 31) |
5644 __gen_field(values
->CommandSubType
, 27, 28) |
5645 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5646 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5647 __gen_field(values
->DwordLength
, 0, 7) |
5651 __gen_field(values
->StencilFailOp
, 29, 31) |
5652 __gen_field(values
->StencilPassDepthFailOp
, 26, 28) |
5653 __gen_field(values
->StencilPassDepthPassOp
, 23, 25) |
5654 __gen_field(values
->BackfaceStencilTestFunction
, 20, 22) |
5655 __gen_field(values
->BackfaceStencilFailOp
, 17, 19) |
5656 __gen_field(values
->BackfaceStencilPassDepthFailOp
, 14, 16) |
5657 __gen_field(values
->BackfaceStencilPassDepthPassOp
, 11, 13) |
5658 __gen_field(values
->StencilTestFunction
, 8, 10) |
5659 __gen_field(values
->DepthTestFunction
, 5, 7) |
5660 __gen_field(values
->DoubleSidedStencilEnable
, 4, 4) |
5661 __gen_field(values
->StencilTestEnable
, 3, 3) |
5662 __gen_field(values
->StencilBufferWriteEnable
, 2, 2) |
5663 __gen_field(values
->DepthTestEnable
, 1, 1) |
5664 __gen_field(values
->DepthBufferWriteEnable
, 0, 0) |
5668 __gen_field(values
->StencilTestMask
, 24, 31) |
5669 __gen_field(values
->StencilWriteMask
, 16, 23) |
5670 __gen_field(values
->BackfaceStencilTestMask
, 8, 15) |
5671 __gen_field(values
->BackfaceStencilWriteMask
, 0, 7) |
5676 #define GEN8_3DSTATE_WM_HZ_OP_length 0x00000005
5677 #define GEN8_3DSTATE_WM_HZ_OP_length_bias 0x00000002
5678 #define GEN8_3DSTATE_WM_HZ_OP_header \
5680 .CommandSubType = 3, \
5681 ._3DCommandOpcode = 0, \
5682 ._3DCommandSubOpcode = 82, \
5685 struct GEN8_3DSTATE_WM_HZ_OP
{
5686 uint32_t CommandType
;
5687 uint32_t CommandSubType
;
5688 uint32_t _3DCommandOpcode
;
5689 uint32_t _3DCommandSubOpcode
;
5690 uint32_t DwordLength
;
5691 bool StencilBufferClearEnable
;
5692 bool DepthBufferClearEnable
;
5693 bool ScissorRectangleEnable
;
5694 bool DepthBufferResolveEnable
;
5695 bool HierarchicalDepthBufferResolveEnable
;
5696 uint32_t PixelPositionOffsetEnable
;
5697 bool FullSurfaceDepthClear
;
5698 uint32_t StencilClearValue
;
5699 uint32_t NumberofMultisamples
;
5700 uint32_t ClearRectangleYMin
;
5701 uint32_t ClearRectangleXMin
;
5702 uint32_t ClearRectangleYMax
;
5703 uint32_t ClearRectangleXMax
;
5704 uint32_t SampleMask
;
5708 GEN8_3DSTATE_WM_HZ_OP_pack(__gen_user_data
*data
, void * restrict dst
,
5709 const struct GEN8_3DSTATE_WM_HZ_OP
* restrict values
)
5711 uint32_t *dw
= (uint32_t * restrict
) dst
;
5714 __gen_field(values
->CommandType
, 29, 31) |
5715 __gen_field(values
->CommandSubType
, 27, 28) |
5716 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5717 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5718 __gen_field(values
->DwordLength
, 0, 7) |
5722 __gen_field(values
->StencilBufferClearEnable
, 31, 31) |
5723 __gen_field(values
->DepthBufferClearEnable
, 30, 30) |
5724 __gen_field(values
->ScissorRectangleEnable
, 29, 29) |
5725 __gen_field(values
->DepthBufferResolveEnable
, 28, 28) |
5726 __gen_field(values
->HierarchicalDepthBufferResolveEnable
, 27, 27) |
5727 __gen_field(values
->PixelPositionOffsetEnable
, 26, 26) |
5728 __gen_field(values
->FullSurfaceDepthClear
, 25, 25) |
5729 __gen_field(values
->StencilClearValue
, 16, 23) |
5730 __gen_field(values
->NumberofMultisamples
, 13, 15) |
5734 __gen_field(values
->ClearRectangleYMin
, 16, 31) |
5735 __gen_field(values
->ClearRectangleXMin
, 0, 15) |
5739 __gen_field(values
->ClearRectangleYMax
, 16, 31) |
5740 __gen_field(values
->ClearRectangleXMax
, 0, 15) |
5744 __gen_field(values
->SampleMask
, 0, 15) |
5749 #define GEN8_GPGPU_WALKER_length 0x0000000f
5750 #define GEN8_GPGPU_WALKER_length_bias 0x00000002
5751 #define GEN8_GPGPU_WALKER_header \
5754 .MediaCommandOpcode = 1, \
5758 struct GEN8_GPGPU_WALKER
{
5759 uint32_t CommandType
;
5761 uint32_t MediaCommandOpcode
;
5763 bool IndirectParameterEnable
;
5764 bool PredicateEnable
;
5765 uint32_t DwordLength
;
5766 uint32_t InterfaceDescriptorOffset
;
5767 uint32_t IndirectDataLength
;
5768 uint32_t IndirectDataStartAddress
;
5773 uint32_t ThreadDepthCounterMaximum
;
5774 uint32_t ThreadHeightCounterMaximum
;
5775 uint32_t ThreadWidthCounterMaximum
;
5776 uint32_t ThreadGroupIDStartingX
;
5777 uint32_t ThreadGroupIDXDimension
;
5778 uint32_t ThreadGroupIDStartingY
;
5779 uint32_t ThreadGroupIDYDimension
;
5780 uint32_t ThreadGroupIDStartingResumeZ
;
5781 uint32_t ThreadGroupIDZDimension
;
5782 uint32_t RightExecutionMask
;
5783 uint32_t BottomExecutionMask
;
5787 GEN8_GPGPU_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
5788 const struct GEN8_GPGPU_WALKER
* restrict values
)
5790 uint32_t *dw
= (uint32_t * restrict
) dst
;
5793 __gen_field(values
->CommandType
, 29, 31) |
5794 __gen_field(values
->Pipeline
, 27, 28) |
5795 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5796 __gen_field(values
->SubOpcode
, 16, 23) |
5797 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
5798 __gen_field(values
->PredicateEnable
, 8, 8) |
5799 __gen_field(values
->DwordLength
, 0, 7) |
5803 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
5807 __gen_field(values
->IndirectDataLength
, 0, 16) |
5811 __gen_offset(values
->IndirectDataStartAddress
, 6, 31) |
5815 __gen_field(values
->SIMDSize
, 30, 31) |
5816 __gen_field(values
->ThreadDepthCounterMaximum
, 16, 21) |
5817 __gen_field(values
->ThreadHeightCounterMaximum
, 8, 13) |
5818 __gen_field(values
->ThreadWidthCounterMaximum
, 0, 5) |
5822 __gen_field(values
->ThreadGroupIDStartingX
, 0, 31) |
5829 __gen_field(values
->ThreadGroupIDXDimension
, 0, 31) |
5833 __gen_field(values
->ThreadGroupIDStartingY
, 0, 31) |
5840 __gen_field(values
->ThreadGroupIDYDimension
, 0, 31) |
5844 __gen_field(values
->ThreadGroupIDStartingResumeZ
, 0, 31) |
5848 __gen_field(values
->ThreadGroupIDZDimension
, 0, 31) |
5852 __gen_field(values
->RightExecutionMask
, 0, 31) |
5856 __gen_field(values
->BottomExecutionMask
, 0, 31) |
5861 #define GEN8_MEDIA_CURBE_LOAD_length 0x00000004
5862 #define GEN8_MEDIA_CURBE_LOAD_length_bias 0x00000002
5863 #define GEN8_MEDIA_CURBE_LOAD_header \
5866 .MediaCommandOpcode = 0, \
5870 struct GEN8_MEDIA_CURBE_LOAD
{
5871 uint32_t CommandType
;
5873 uint32_t MediaCommandOpcode
;
5875 uint32_t DwordLength
;
5876 uint32_t CURBETotalDataLength
;
5877 uint32_t CURBEDataStartAddress
;
5881 GEN8_MEDIA_CURBE_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
5882 const struct GEN8_MEDIA_CURBE_LOAD
* restrict values
)
5884 uint32_t *dw
= (uint32_t * restrict
) dst
;
5887 __gen_field(values
->CommandType
, 29, 31) |
5888 __gen_field(values
->Pipeline
, 27, 28) |
5889 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5890 __gen_field(values
->SubOpcode
, 16, 23) |
5891 __gen_field(values
->DwordLength
, 0, 15) |
5898 __gen_field(values
->CURBETotalDataLength
, 0, 16) |
5902 __gen_field(values
->CURBEDataStartAddress
, 0, 31) |
5907 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length 0x00000004
5908 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias 0x00000002
5909 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\
5912 .MediaCommandOpcode = 0, \
5916 struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
{
5917 uint32_t CommandType
;
5919 uint32_t MediaCommandOpcode
;
5921 uint32_t DwordLength
;
5922 uint32_t InterfaceDescriptorTotalLength
;
5923 uint32_t InterfaceDescriptorDataStartAddress
;
5927 GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
5928 const struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
* restrict values
)
5930 uint32_t *dw
= (uint32_t * restrict
) dst
;
5933 __gen_field(values
->CommandType
, 29, 31) |
5934 __gen_field(values
->Pipeline
, 27, 28) |
5935 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5936 __gen_field(values
->SubOpcode
, 16, 23) |
5937 __gen_field(values
->DwordLength
, 0, 15) |
5944 __gen_field(values
->InterfaceDescriptorTotalLength
, 0, 16) |
5948 __gen_offset(values
->InterfaceDescriptorDataStartAddress
, 0, 31) |
5953 #define GEN8_MEDIA_OBJECT_length_bias 0x00000002
5954 #define GEN8_MEDIA_OBJECT_header \
5956 .MediaCommandPipeline = 2, \
5957 .MediaCommandOpcode = 1, \
5958 .MediaCommandSubOpcode = 0
5960 struct GEN8_MEDIA_OBJECT
{
5961 uint32_t CommandType
;
5962 uint32_t MediaCommandPipeline
;
5963 uint32_t MediaCommandOpcode
;
5964 uint32_t MediaCommandSubOpcode
;
5965 uint32_t DwordLength
;
5966 uint32_t InterfaceDescriptorOffset
;
5967 bool ChildrenPresent
;
5968 #define Nothreadsynchronization 0
5969 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
5970 uint32_t ThreadSynchronization
;
5971 uint32_t ForceDestination
;
5972 #define Notusingscoreboard 0
5973 #define Usingscoreboard 1
5974 uint32_t UseScoreboard
;
5978 uint32_t SliceDestinationSelect
;
5982 uint32_t SubSliceDestinationSelect
;
5983 uint32_t IndirectDataLength
;
5984 __gen_address_type IndirectDataStartAddress
;
5985 uint32_t ScoredboardY
;
5986 uint32_t ScoreboardX
;
5987 uint32_t ScoreboardColor
;
5988 bool ScoreboardMask
;
5989 /* variable length fields follow */
5993 GEN8_MEDIA_OBJECT_pack(__gen_user_data
*data
, void * restrict dst
,
5994 const struct GEN8_MEDIA_OBJECT
* restrict values
)
5996 uint32_t *dw
= (uint32_t * restrict
) dst
;
5999 __gen_field(values
->CommandType
, 29, 31) |
6000 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6001 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6002 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6003 __gen_field(values
->DwordLength
, 0, 15) |
6007 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6011 __gen_field(values
->ChildrenPresent
, 31, 31) |
6012 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6013 __gen_field(values
->ForceDestination
, 22, 22) |
6014 __gen_field(values
->UseScoreboard
, 21, 21) |
6015 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6016 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6017 __gen_field(values
->IndirectDataLength
, 0, 16) |
6024 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6027 __gen_field(values
->ScoredboardY
, 16, 24) |
6028 __gen_field(values
->ScoreboardX
, 0, 8) |
6032 __gen_field(values
->ScoreboardColor
, 16, 19) |
6033 __gen_field(values
->ScoreboardMask
, 0, 7) |
6036 /* variable length fields follow */
6039 #define GEN8_MEDIA_OBJECT_GRPID_length_bias 0x00000002
6040 #define GEN8_MEDIA_OBJECT_GRPID_header \
6042 .MediaCommandPipeline = 2, \
6043 .MediaCommandOpcode = 1, \
6044 .MediaCommandSubOpcode = 6
6046 struct GEN8_MEDIA_OBJECT_GRPID
{
6047 uint32_t CommandType
;
6048 uint32_t MediaCommandPipeline
;
6049 uint32_t MediaCommandOpcode
;
6050 uint32_t MediaCommandSubOpcode
;
6051 uint32_t DwordLength
;
6052 uint32_t InterfaceDescriptorOffset
;
6053 uint32_t EndofThreadGroup
;
6054 uint32_t ForceDestination
;
6055 #define Notusingscoreboard 0
6056 #define Usingscoreboard 1
6057 uint32_t UseScoreboard
;
6061 uint32_t SliceDestinationSelect
;
6065 uint32_t SubSliceDestinationSelect
;
6066 uint32_t IndirectDataLength
;
6067 __gen_address_type IndirectDataStartAddress
;
6068 uint32_t ScoreboardY
;
6069 uint32_t ScoreboardX
;
6070 uint32_t ScoreboardColor
;
6071 bool ScoreboardMask
;
6073 /* variable length fields follow */
6077 GEN8_MEDIA_OBJECT_GRPID_pack(__gen_user_data
*data
, void * restrict dst
,
6078 const struct GEN8_MEDIA_OBJECT_GRPID
* restrict values
)
6080 uint32_t *dw
= (uint32_t * restrict
) dst
;
6083 __gen_field(values
->CommandType
, 29, 31) |
6084 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6085 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6086 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6087 __gen_field(values
->DwordLength
, 0, 15) |
6091 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6095 __gen_field(values
->EndofThreadGroup
, 23, 23) |
6096 __gen_field(values
->ForceDestination
, 22, 22) |
6097 __gen_field(values
->UseScoreboard
, 21, 21) |
6098 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6099 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6100 __gen_field(values
->IndirectDataLength
, 0, 16) |
6107 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6110 __gen_field(values
->ScoreboardY
, 16, 24) |
6111 __gen_field(values
->ScoreboardX
, 0, 8) |
6115 __gen_field(values
->ScoreboardColor
, 16, 19) |
6116 __gen_field(values
->ScoreboardMask
, 0, 7) |
6120 __gen_field(values
->GroupID
, 0, 31) |
6123 /* variable length fields follow */
6126 #define GEN8_MEDIA_OBJECT_PRT_length 0x00000010
6127 #define GEN8_MEDIA_OBJECT_PRT_length_bias 0x00000002
6128 #define GEN8_MEDIA_OBJECT_PRT_header \
6131 .MediaCommandOpcode = 1, \
6135 struct GEN8_MEDIA_OBJECT_PRT
{
6136 uint32_t CommandType
;
6138 uint32_t MediaCommandOpcode
;
6140 uint32_t DwordLength
;
6141 uint32_t InterfaceDescriptorOffset
;
6142 bool ChildrenPresent
;
6143 bool PRT_FenceNeeded
;
6144 #define Rootthreadqueue 0
6145 #define VFEstateflush 1
6146 uint32_t PRT_FenceType
;
6147 uint32_t InlineData
[12];
6151 GEN8_MEDIA_OBJECT_PRT_pack(__gen_user_data
*data
, void * restrict dst
,
6152 const struct GEN8_MEDIA_OBJECT_PRT
* restrict values
)
6154 uint32_t *dw
= (uint32_t * restrict
) dst
;
6157 __gen_field(values
->CommandType
, 29, 31) |
6158 __gen_field(values
->Pipeline
, 27, 28) |
6159 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6160 __gen_field(values
->SubOpcode
, 16, 23) |
6161 __gen_field(values
->DwordLength
, 0, 15) |
6165 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6169 __gen_field(values
->ChildrenPresent
, 31, 31) |
6170 __gen_field(values
->PRT_FenceNeeded
, 23, 23) |
6171 __gen_field(values
->PRT_FenceType
, 22, 22) |
6177 for (uint32_t i
= 0, j
= 4; i
< 12; i
+= 1, j
++) {
6179 __gen_field(values
->InlineData
[i
+ 0], 0, 31) |
6185 #define GEN8_MEDIA_OBJECT_WALKER_length_bias 0x00000002
6186 #define GEN8_MEDIA_OBJECT_WALKER_header \
6189 .MediaCommandOpcode = 1, \
6192 struct GEN8_MEDIA_OBJECT_WALKER
{
6193 uint32_t CommandType
;
6195 uint32_t MediaCommandOpcode
;
6197 uint32_t DwordLength
;
6198 uint32_t InterfaceDescriptorOffset
;
6199 bool ChildrenPresent
;
6200 #define Nothreadsynchronization 0
6201 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
6202 uint32_t ThreadSynchronization
;
6203 #define Notusingscoreboard 0
6204 #define Usingscoreboard 1
6205 uint32_t UseScoreboard
;
6206 uint32_t IndirectDataLength
;
6207 uint32_t IndirectDataStartAddress
;
6208 uint32_t GroupIDLoopSelect
;
6209 bool ScoreboardMask
;
6210 uint32_t ColorCountMinusOne
;
6211 uint32_t MiddleLoopExtraSteps
;
6212 uint32_t LocalMidLoopUnitY
;
6213 uint32_t MidLoopUnitX
;
6214 uint32_t GlobalLoopExecCount
;
6215 uint32_t LocalLoopExecCount
;
6216 uint32_t BlockResolutionY
;
6217 uint32_t BlockResolutionX
;
6218 uint32_t LocalStartY
;
6219 uint32_t LocalStartX
;
6220 uint32_t LocalOuterLoopStrideY
;
6221 uint32_t LocalOuterLoopStrideX
;
6222 uint32_t LocalInnerLoopUnitY
;
6223 uint32_t LocalInnerLoopUnitX
;
6224 uint32_t GlobalResolutionY
;
6225 uint32_t GlobalResolutionX
;
6226 uint32_t GlobalStartY
;
6227 uint32_t GlobalStartX
;
6228 uint32_t GlobalOuterLoopStrideY
;
6229 uint32_t GlobalOuterLoopStrideX
;
6230 uint32_t GlobalInnerLoopUnitY
;
6231 uint32_t GlobalInnerLoopUnitX
;
6232 /* variable length fields follow */
6236 GEN8_MEDIA_OBJECT_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
6237 const struct GEN8_MEDIA_OBJECT_WALKER
* restrict values
)
6239 uint32_t *dw
= (uint32_t * restrict
) dst
;
6242 __gen_field(values
->CommandType
, 29, 31) |
6243 __gen_field(values
->Pipeline
, 27, 28) |
6244 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6245 __gen_field(values
->SubOpcode
, 16, 23) |
6246 __gen_field(values
->DwordLength
, 0, 15) |
6250 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6254 __gen_field(values
->ChildrenPresent
, 31, 31) |
6255 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6256 __gen_field(values
->UseScoreboard
, 21, 21) |
6257 __gen_field(values
->IndirectDataLength
, 0, 16) |
6261 __gen_offset(values
->IndirectDataStartAddress
, 0, 31) |
6268 __gen_field(values
->GroupIDLoopSelect
, 8, 31) |
6269 __gen_field(values
->ScoreboardMask
, 0, 7) |
6273 __gen_field(values
->ColorCountMinusOne
, 24, 27) |
6274 __gen_field(values
->MiddleLoopExtraSteps
, 16, 20) |
6275 __gen_field(values
->LocalMidLoopUnitY
, 12, 13) |
6276 __gen_field(values
->MidLoopUnitX
, 8, 9) |
6280 __gen_field(values
->GlobalLoopExecCount
, 16, 25) |
6281 __gen_field(values
->LocalLoopExecCount
, 0, 9) |
6285 __gen_field(values
->BlockResolutionY
, 16, 24) |
6286 __gen_field(values
->BlockResolutionX
, 0, 8) |
6290 __gen_field(values
->LocalStartY
, 16, 24) |
6291 __gen_field(values
->LocalStartX
, 0, 8) |
6298 __gen_field(values
->LocalOuterLoopStrideY
, 16, 25) |
6299 __gen_field(values
->LocalOuterLoopStrideX
, 0, 9) |
6303 __gen_field(values
->LocalInnerLoopUnitY
, 16, 25) |
6304 __gen_field(values
->LocalInnerLoopUnitX
, 0, 9) |
6308 __gen_field(values
->GlobalResolutionY
, 16, 24) |
6309 __gen_field(values
->GlobalResolutionX
, 0, 8) |
6313 __gen_field(values
->GlobalStartY
, 16, 25) |
6314 __gen_field(values
->GlobalStartX
, 0, 9) |
6318 __gen_field(values
->GlobalOuterLoopStrideY
, 16, 25) |
6319 __gen_field(values
->GlobalOuterLoopStrideX
, 0, 9) |
6323 __gen_field(values
->GlobalInnerLoopUnitY
, 16, 25) |
6324 __gen_field(values
->GlobalInnerLoopUnitX
, 0, 9) |
6327 /* variable length fields follow */
6330 #define GEN8_MEDIA_STATE_FLUSH_length 0x00000002
6331 #define GEN8_MEDIA_STATE_FLUSH_length_bias 0x00000002
6332 #define GEN8_MEDIA_STATE_FLUSH_header \
6335 .MediaCommandOpcode = 0, \
6339 struct GEN8_MEDIA_STATE_FLUSH
{
6340 uint32_t CommandType
;
6342 uint32_t MediaCommandOpcode
;
6344 uint32_t DwordLength
;
6346 uint32_t WatermarkRequired
;
6347 uint32_t InterfaceDescriptorOffset
;
6351 GEN8_MEDIA_STATE_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6352 const struct GEN8_MEDIA_STATE_FLUSH
* restrict values
)
6354 uint32_t *dw
= (uint32_t * restrict
) dst
;
6357 __gen_field(values
->CommandType
, 29, 31) |
6358 __gen_field(values
->Pipeline
, 27, 28) |
6359 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6360 __gen_field(values
->SubOpcode
, 16, 23) |
6361 __gen_field(values
->DwordLength
, 0, 15) |
6365 __gen_field(values
->FlushtoGO
, 7, 7) |
6366 __gen_field(values
->WatermarkRequired
, 6, 6) |
6367 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6372 #define GEN8_MEDIA_VFE_STATE_length 0x00000009
6373 #define GEN8_MEDIA_VFE_STATE_length_bias 0x00000002
6374 #define GEN8_MEDIA_VFE_STATE_header \
6377 .MediaCommandOpcode = 0, \
6381 struct GEN8_MEDIA_VFE_STATE
{
6382 uint32_t CommandType
;
6384 uint32_t MediaCommandOpcode
;
6386 uint32_t DwordLength
;
6387 uint32_t ScratchSpaceBasePointer
;
6389 uint32_t PerThreadScratchSpace
;
6390 uint32_t ScratchSpaceBasePointerHigh
;
6391 uint32_t MaximumNumberofThreads
;
6392 uint32_t NumberofURBEntries
;
6393 #define Maintainingtheexistingtimestampstate 0
6394 #define Resettingrelativetimerandlatchingtheglobaltimestamp 1
6395 uint32_t ResetGatewayTimer
;
6396 #define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0
6397 #define BypassingOpenGatewayCloseGatewayprotocol 1
6398 uint32_t BypassGatewayControl
;
6399 uint32_t SliceDisable
;
6400 uint32_t URBEntryAllocationSize
;
6401 uint32_t CURBEAllocationSize
;
6402 #define Scoreboarddisabled 0
6403 #define Scoreboardenabled 1
6404 uint32_t ScoreboardEnable
;
6405 #define StallingScoreboard 0
6406 #define NonStallingScoreboard 1
6407 uint32_t ScoreboardType
;
6408 uint32_t ScoreboardMask
;
6409 uint32_t Scoreboard3DeltaY
;
6410 uint32_t Scoreboard3DeltaX
;
6411 uint32_t Scoreboard2DeltaY
;
6412 uint32_t Scoreboard2DeltaX
;
6413 uint32_t Scoreboard1DeltaY
;
6414 uint32_t Scoreboard1DeltaX
;
6415 uint32_t Scoreboard0DeltaY
;
6416 uint32_t Scoreboard0DeltaX
;
6417 uint32_t Scoreboard7DeltaY
;
6418 uint32_t Scoreboard7DeltaX
;
6419 uint32_t Scoreboard6DeltaY
;
6420 uint32_t Scoreboard6DeltaX
;
6421 uint32_t Scoreboard5DeltaY
;
6422 uint32_t Scoreboard5DeltaX
;
6423 uint32_t Scoreboard4DeltaY
;
6424 uint32_t Scoreboard4DeltaX
;
6428 GEN8_MEDIA_VFE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
6429 const struct GEN8_MEDIA_VFE_STATE
* restrict values
)
6431 uint32_t *dw
= (uint32_t * restrict
) dst
;
6434 __gen_field(values
->CommandType
, 29, 31) |
6435 __gen_field(values
->Pipeline
, 27, 28) |
6436 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6437 __gen_field(values
->SubOpcode
, 16, 23) |
6438 __gen_field(values
->DwordLength
, 0, 15) |
6442 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 31) |
6443 __gen_field(values
->StackSize
, 4, 7) |
6444 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
6448 __gen_offset(values
->ScratchSpaceBasePointerHigh
, 0, 15) |
6452 __gen_field(values
->MaximumNumberofThreads
, 16, 31) |
6453 __gen_field(values
->NumberofURBEntries
, 8, 15) |
6454 __gen_field(values
->ResetGatewayTimer
, 7, 7) |
6455 __gen_field(values
->BypassGatewayControl
, 6, 6) |
6459 __gen_field(values
->SliceDisable
, 0, 1) |
6463 __gen_field(values
->URBEntryAllocationSize
, 16, 31) |
6464 __gen_field(values
->CURBEAllocationSize
, 0, 15) |
6468 __gen_field(values
->ScoreboardEnable
, 31, 31) |
6469 __gen_field(values
->ScoreboardType
, 30, 30) |
6470 __gen_field(values
->ScoreboardMask
, 0, 7) |
6474 __gen_field(values
->Scoreboard3DeltaY
, 28, 31) |
6475 __gen_field(values
->Scoreboard3DeltaX
, 24, 27) |
6476 __gen_field(values
->Scoreboard2DeltaY
, 20, 23) |
6477 __gen_field(values
->Scoreboard2DeltaX
, 16, 19) |
6478 __gen_field(values
->Scoreboard1DeltaY
, 12, 15) |
6479 __gen_field(values
->Scoreboard1DeltaX
, 8, 11) |
6480 __gen_field(values
->Scoreboard0DeltaY
, 4, 7) |
6481 __gen_field(values
->Scoreboard0DeltaX
, 0, 3) |
6485 __gen_field(values
->Scoreboard7DeltaY
, 28, 31) |
6486 __gen_field(values
->Scoreboard7DeltaX
, 24, 27) |
6487 __gen_field(values
->Scoreboard6DeltaY
, 20, 23) |
6488 __gen_field(values
->Scoreboard6DeltaX
, 16, 19) |
6489 __gen_field(values
->Scoreboard5DeltaY
, 12, 15) |
6490 __gen_field(values
->Scoreboard5DeltaX
, 8, 11) |
6491 __gen_field(values
->Scoreboard4DeltaY
, 4, 7) |
6492 __gen_field(values
->Scoreboard4DeltaX
, 0, 3) |
6497 #define GEN8_MI_ARB_CHECK_length 0x00000001
6498 #define GEN8_MI_ARB_CHECK_length_bias 0x00000001
6499 #define GEN8_MI_ARB_CHECK_header \
6501 .MICommandOpcode = 5
6503 struct GEN8_MI_ARB_CHECK
{
6504 uint32_t CommandType
;
6505 uint32_t MICommandOpcode
;
6509 GEN8_MI_ARB_CHECK_pack(__gen_user_data
*data
, void * restrict dst
,
6510 const struct GEN8_MI_ARB_CHECK
* restrict values
)
6512 uint32_t *dw
= (uint32_t * restrict
) dst
;
6515 __gen_field(values
->CommandType
, 29, 31) |
6516 __gen_field(values
->MICommandOpcode
, 23, 28) |
6521 #define GEN8_MI_BATCH_BUFFER_END_length 0x00000001
6522 #define GEN8_MI_BATCH_BUFFER_END_length_bias 0x00000001
6523 #define GEN8_MI_BATCH_BUFFER_END_header \
6525 .MICommandOpcode = 10
6527 struct GEN8_MI_BATCH_BUFFER_END
{
6528 uint32_t CommandType
;
6529 uint32_t MICommandOpcode
;
6533 GEN8_MI_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6534 const struct GEN8_MI_BATCH_BUFFER_END
* restrict values
)
6536 uint32_t *dw
= (uint32_t * restrict
) dst
;
6539 __gen_field(values
->CommandType
, 29, 31) |
6540 __gen_field(values
->MICommandOpcode
, 23, 28) |
6545 #define GEN8_MI_BATCH_BUFFER_START_length 0x00000003
6546 #define GEN8_MI_BATCH_BUFFER_START_length_bias 0x00000002
6547 #define GEN8_MI_BATCH_BUFFER_START_header \
6549 .MICommandOpcode = 49, \
6552 struct GEN8_MI_BATCH_BUFFER_START
{
6553 uint32_t CommandType
;
6554 uint32_t MICommandOpcode
;
6555 #define _1stlevelbatch 0
6556 #define _2ndlevelbatch 1
6557 uint32_t _2ndLevelBatchBuffer
;
6558 bool AddOffsetEnable
;
6559 uint32_t PredicationEnable
;
6560 bool ResourceStreamerEnable
;
6563 uint32_t AddressSpaceIndicator
;
6564 uint32_t DwordLength
;
6565 __gen_address_type BatchBufferStartAddress
;
6569 GEN8_MI_BATCH_BUFFER_START_pack(__gen_user_data
*data
, void * restrict dst
,
6570 const struct GEN8_MI_BATCH_BUFFER_START
* restrict values
)
6572 uint32_t *dw
= (uint32_t * restrict
) dst
;
6575 __gen_field(values
->CommandType
, 29, 31) |
6576 __gen_field(values
->MICommandOpcode
, 23, 28) |
6577 __gen_field(values
->_2ndLevelBatchBuffer
, 22, 22) |
6578 __gen_field(values
->AddOffsetEnable
, 16, 16) |
6579 __gen_field(values
->PredicationEnable
, 15, 15) |
6580 __gen_field(values
->ResourceStreamerEnable
, 10, 10) |
6581 __gen_field(values
->AddressSpaceIndicator
, 8, 8) |
6582 __gen_field(values
->DwordLength
, 0, 7) |
6589 __gen_combine_address(data
, &dw
[1], values
->BatchBufferStartAddress
, dw1
);
6596 #define GEN8_MI_CLFLUSH_length_bias 0x00000002
6597 #define GEN8_MI_CLFLUSH_header \
6599 .MICommandOpcode = 39
6601 struct GEN8_MI_CLFLUSH
{
6602 uint32_t CommandType
;
6603 uint32_t MICommandOpcode
;
6604 #define PerProcessGraphicsAddress 0
6605 #define GlobalGraphicsAddress 1
6606 uint32_t UseGlobalGTT
;
6607 uint32_t DwordLength
;
6608 __gen_address_type PageBaseAddress
;
6609 uint32_t StartingCachelineOffset
;
6610 /* variable length fields follow */
6614 GEN8_MI_CLFLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6615 const struct GEN8_MI_CLFLUSH
* restrict values
)
6617 uint32_t *dw
= (uint32_t * restrict
) dst
;
6620 __gen_field(values
->CommandType
, 29, 31) |
6621 __gen_field(values
->MICommandOpcode
, 23, 28) |
6622 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6623 __gen_field(values
->DwordLength
, 0, 9) |
6627 __gen_field(values
->StartingCachelineOffset
, 6, 11) |
6631 __gen_combine_address(data
, &dw
[1], values
->PageBaseAddress
, dw1
);
6636 /* variable length fields follow */
6639 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length 0x00000003
6640 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias 0x00000002
6641 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_header\
6643 .MICommandOpcode = 54, \
6644 .UseGlobalGTT = 0, \
6645 .CompareSemaphore = 0, \
6648 struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
{
6649 uint32_t CommandType
;
6650 uint32_t MICommandOpcode
;
6651 uint32_t UseGlobalGTT
;
6652 uint32_t CompareSemaphore
;
6653 uint32_t DwordLength
;
6654 uint32_t CompareDataDword
;
6655 __gen_address_type CompareAddress
;
6659 GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6660 const struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
* restrict values
)
6662 uint32_t *dw
= (uint32_t * restrict
) dst
;
6665 __gen_field(values
->CommandType
, 29, 31) |
6666 __gen_field(values
->MICommandOpcode
, 23, 28) |
6667 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6668 __gen_field(values
->CompareSemaphore
, 21, 21) |
6669 __gen_field(values
->DwordLength
, 0, 7) |
6673 __gen_field(values
->CompareDataDword
, 0, 31) |
6680 __gen_combine_address(data
, &dw
[2], values
->CompareAddress
, dw2
);
6687 #define GEN8_MI_COPY_MEM_MEM_length 0x00000005
6688 #define GEN8_MI_COPY_MEM_MEM_length_bias 0x00000002
6689 #define GEN8_MI_COPY_MEM_MEM_header \
6691 .MICommandOpcode = 46, \
6694 struct GEN8_MI_COPY_MEM_MEM
{
6695 uint32_t CommandType
;
6696 uint32_t MICommandOpcode
;
6697 #define PerProcessGraphicsAddress 0
6698 #define GlobalGraphicsAddress 1
6699 uint32_t UseGlobalGTTSource
;
6700 #define PerProcessGraphicsAddress 0
6701 #define GlobalGraphicsAddress 1
6702 uint32_t UseGlobalGTTDestination
;
6703 uint32_t DwordLength
;
6704 __gen_address_type DestinationMemoryAddress
;
6705 __gen_address_type SourceMemoryAddress
;
6709 GEN8_MI_COPY_MEM_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6710 const struct GEN8_MI_COPY_MEM_MEM
* restrict values
)
6712 uint32_t *dw
= (uint32_t * restrict
) dst
;
6715 __gen_field(values
->CommandType
, 29, 31) |
6716 __gen_field(values
->MICommandOpcode
, 23, 28) |
6717 __gen_field(values
->UseGlobalGTTSource
, 22, 22) |
6718 __gen_field(values
->UseGlobalGTTDestination
, 21, 21) |
6719 __gen_field(values
->DwordLength
, 0, 7) |
6726 __gen_combine_address(data
, &dw
[1], values
->DestinationMemoryAddress
, dw1
);
6735 __gen_combine_address(data
, &dw
[3], values
->SourceMemoryAddress
, dw3
);
6742 #define GEN8_MI_LOAD_REGISTER_IMM_length 0x00000003
6743 #define GEN8_MI_LOAD_REGISTER_IMM_length_bias 0x00000002
6744 #define GEN8_MI_LOAD_REGISTER_IMM_header \
6746 .MICommandOpcode = 34, \
6749 struct GEN8_MI_LOAD_REGISTER_IMM
{
6750 uint32_t CommandType
;
6751 uint32_t MICommandOpcode
;
6752 uint32_t ByteWriteDisables
;
6753 uint32_t DwordLength
;
6754 uint32_t RegisterOffset
;
6759 GEN8_MI_LOAD_REGISTER_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
6760 const struct GEN8_MI_LOAD_REGISTER_IMM
* restrict values
)
6762 uint32_t *dw
= (uint32_t * restrict
) dst
;
6765 __gen_field(values
->CommandType
, 29, 31) |
6766 __gen_field(values
->MICommandOpcode
, 23, 28) |
6767 __gen_field(values
->ByteWriteDisables
, 8, 11) |
6768 __gen_field(values
->DwordLength
, 0, 7) |
6772 __gen_offset(values
->RegisterOffset
, 2, 22) |
6776 __gen_field(values
->DataDWord
, 0, 31) |
6781 #define GEN8_MI_LOAD_REGISTER_MEM_length 0x00000004
6782 #define GEN8_MI_LOAD_REGISTER_MEM_length_bias 0x00000002
6783 #define GEN8_MI_LOAD_REGISTER_MEM_header \
6785 .MICommandOpcode = 41, \
6788 struct GEN8_MI_LOAD_REGISTER_MEM
{
6789 uint32_t CommandType
;
6790 uint32_t MICommandOpcode
;
6792 uint32_t AsyncModeEnable
;
6793 uint32_t DwordLength
;
6794 uint32_t RegisterAddress
;
6795 __gen_address_type MemoryAddress
;
6799 GEN8_MI_LOAD_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6800 const struct GEN8_MI_LOAD_REGISTER_MEM
* restrict values
)
6802 uint32_t *dw
= (uint32_t * restrict
) dst
;
6805 __gen_field(values
->CommandType
, 29, 31) |
6806 __gen_field(values
->MICommandOpcode
, 23, 28) |
6807 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6808 __gen_field(values
->AsyncModeEnable
, 21, 21) |
6809 __gen_field(values
->DwordLength
, 0, 7) |
6813 __gen_offset(values
->RegisterAddress
, 2, 22) |
6820 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
6827 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length 0x00000002
6828 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length_bias 0x00000002
6829 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_header \
6831 .MICommandOpcode = 19, \
6834 struct GEN8_MI_LOAD_SCAN_LINES_EXCL
{
6835 uint32_t CommandType
;
6836 uint32_t MICommandOpcode
;
6837 #define DisplayPlaneA 0
6838 #define DisplayPlaneB 1
6839 #define DisplayPlaneC 4
6840 uint32_t DisplayPlaneSelect
;
6841 uint32_t DwordLength
;
6842 uint32_t StartScanLineNumber
;
6843 uint32_t EndScanLineNumber
;
6847 GEN8_MI_LOAD_SCAN_LINES_EXCL_pack(__gen_user_data
*data
, void * restrict dst
,
6848 const struct GEN8_MI_LOAD_SCAN_LINES_EXCL
* restrict values
)
6850 uint32_t *dw
= (uint32_t * restrict
) dst
;
6853 __gen_field(values
->CommandType
, 29, 31) |
6854 __gen_field(values
->MICommandOpcode
, 23, 28) |
6855 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
6856 __gen_field(values
->DwordLength
, 0, 5) |
6860 __gen_field(values
->StartScanLineNumber
, 16, 28) |
6861 __gen_field(values
->EndScanLineNumber
, 0, 12) |
6866 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length 0x00000002
6867 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length_bias 0x00000002
6868 #define GEN8_MI_LOAD_SCAN_LINES_INCL_header \
6870 .MICommandOpcode = 18, \
6873 struct GEN8_MI_LOAD_SCAN_LINES_INCL
{
6874 uint32_t CommandType
;
6875 uint32_t MICommandOpcode
;
6876 #define DisplayPlaneA 0
6877 #define DisplayPlaneB 1
6878 #define DisplayPlaneC 4
6879 uint32_t DisplayPlaneSelect
;
6880 #define NeverForward 0
6881 #define AlwaysForward 1
6882 #define ConditionallyForward 2
6883 bool ScanLineEventDoneForward
;
6884 uint32_t DwordLength
;
6885 uint32_t StartScanLineNumber
;
6886 uint32_t EndScanLineNumber
;
6890 GEN8_MI_LOAD_SCAN_LINES_INCL_pack(__gen_user_data
*data
, void * restrict dst
,
6891 const struct GEN8_MI_LOAD_SCAN_LINES_INCL
* restrict values
)
6893 uint32_t *dw
= (uint32_t * restrict
) dst
;
6896 __gen_field(values
->CommandType
, 29, 31) |
6897 __gen_field(values
->MICommandOpcode
, 23, 28) |
6898 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
6899 __gen_field(values
->ScanLineEventDoneForward
, 17, 18) |
6900 __gen_field(values
->DwordLength
, 0, 5) |
6904 __gen_field(values
->StartScanLineNumber
, 16, 28) |
6905 __gen_field(values
->EndScanLineNumber
, 0, 12) |
6910 #define GEN8_MI_LOAD_URB_MEM_length 0x00000004
6911 #define GEN8_MI_LOAD_URB_MEM_length_bias 0x00000002
6912 #define GEN8_MI_LOAD_URB_MEM_header \
6914 .MICommandOpcode = 44, \
6917 struct GEN8_MI_LOAD_URB_MEM
{
6918 uint32_t CommandType
;
6919 uint32_t MICommandOpcode
;
6920 uint32_t DwordLength
;
6921 uint32_t URBAddress
;
6922 __gen_address_type MemoryAddress
;
6926 GEN8_MI_LOAD_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6927 const struct GEN8_MI_LOAD_URB_MEM
* restrict values
)
6929 uint32_t *dw
= (uint32_t * restrict
) dst
;
6932 __gen_field(values
->CommandType
, 29, 31) |
6933 __gen_field(values
->MICommandOpcode
, 23, 28) |
6934 __gen_field(values
->DwordLength
, 0, 7) |
6938 __gen_field(values
->URBAddress
, 2, 14) |
6945 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
6952 #define GEN8_MI_MATH_length_bias 0x00000002
6953 #define GEN8_MI_MATH_header \
6955 .MICommandOpcode = 26
6957 struct GEN8_MI_MATH
{
6958 uint32_t CommandType
;
6959 uint32_t MICommandOpcode
;
6960 uint32_t DwordLength
;
6961 uint32_t ALUINSTRUCTION1
;
6962 uint32_t ALUINSTRUCTION2
;
6963 /* variable length fields follow */
6967 GEN8_MI_MATH_pack(__gen_user_data
*data
, void * restrict dst
,
6968 const struct GEN8_MI_MATH
* restrict values
)
6970 uint32_t *dw
= (uint32_t * restrict
) dst
;
6973 __gen_field(values
->CommandType
, 29, 31) |
6974 __gen_field(values
->MICommandOpcode
, 23, 28) |
6975 __gen_field(values
->DwordLength
, 0, 5) |
6979 __gen_field(values
->ALUINSTRUCTION1
, 0, 31) |
6983 __gen_field(values
->ALUINSTRUCTION2
, 0, 31) |
6986 /* variable length fields follow */
6989 #define GEN8_MI_NOOP_length 0x00000001
6990 #define GEN8_MI_NOOP_length_bias 0x00000001
6991 #define GEN8_MI_NOOP_header \
6993 .MICommandOpcode = 0
6995 struct GEN8_MI_NOOP
{
6996 uint32_t CommandType
;
6997 uint32_t MICommandOpcode
;
6998 bool IdentificationNumberRegisterWriteEnable
;
6999 uint32_t IdentificationNumber
;
7003 GEN8_MI_NOOP_pack(__gen_user_data
*data
, void * restrict dst
,
7004 const struct GEN8_MI_NOOP
* restrict values
)
7006 uint32_t *dw
= (uint32_t * restrict
) dst
;
7009 __gen_field(values
->CommandType
, 29, 31) |
7010 __gen_field(values
->MICommandOpcode
, 23, 28) |
7011 __gen_field(values
->IdentificationNumberRegisterWriteEnable
, 22, 22) |
7012 __gen_field(values
->IdentificationNumber
, 0, 21) |
7017 #define GEN8_MI_PREDICATE_length 0x00000001
7018 #define GEN8_MI_PREDICATE_length_bias 0x00000001
7019 #define GEN8_MI_PREDICATE_header \
7021 .MICommandOpcode = 12
7023 struct GEN8_MI_PREDICATE
{
7024 uint32_t CommandType
;
7025 uint32_t MICommandOpcode
;
7028 #define LOAD_LOADINV 3
7029 uint32_t LoadOperation
;
7030 #define COMBINE_SET 0
7031 #define COMBINE_AND 1
7032 #define COMBINE_OR 2
7033 #define COMBINE_XOR 3
7034 uint32_t CombineOperation
;
7035 #define COMPARE_SRCS_EQUAL 2
7036 #define COMPARE_DELTAS_EQUAL 3
7037 uint32_t CompareOperation
;
7041 GEN8_MI_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7042 const struct GEN8_MI_PREDICATE
* restrict values
)
7044 uint32_t *dw
= (uint32_t * restrict
) dst
;
7047 __gen_field(values
->CommandType
, 29, 31) |
7048 __gen_field(values
->MICommandOpcode
, 23, 28) |
7049 __gen_field(values
->LoadOperation
, 6, 7) |
7050 __gen_field(values
->CombineOperation
, 3, 4) |
7051 __gen_field(values
->CompareOperation
, 0, 1) |
7056 #define GEN8_MI_REPORT_HEAD_length 0x00000001
7057 #define GEN8_MI_REPORT_HEAD_length_bias 0x00000001
7058 #define GEN8_MI_REPORT_HEAD_header \
7060 .MICommandOpcode = 7
7062 struct GEN8_MI_REPORT_HEAD
{
7063 uint32_t CommandType
;
7064 uint32_t MICommandOpcode
;
7068 GEN8_MI_REPORT_HEAD_pack(__gen_user_data
*data
, void * restrict dst
,
7069 const struct GEN8_MI_REPORT_HEAD
* restrict values
)
7071 uint32_t *dw
= (uint32_t * restrict
) dst
;
7074 __gen_field(values
->CommandType
, 29, 31) |
7075 __gen_field(values
->MICommandOpcode
, 23, 28) |
7080 #define GEN8_MI_RS_CONTEXT_length 0x00000001
7081 #define GEN8_MI_RS_CONTEXT_length_bias 0x00000001
7082 #define GEN8_MI_RS_CONTEXT_header \
7084 .MICommandOpcode = 15
7086 struct GEN8_MI_RS_CONTEXT
{
7087 uint32_t CommandType
;
7088 uint32_t MICommandOpcode
;
7089 #define RS_RESTORE 0
7091 uint32_t ResourceStreamerSave
;
7095 GEN8_MI_RS_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7096 const struct GEN8_MI_RS_CONTEXT
* restrict values
)
7098 uint32_t *dw
= (uint32_t * restrict
) dst
;
7101 __gen_field(values
->CommandType
, 29, 31) |
7102 __gen_field(values
->MICommandOpcode
, 23, 28) |
7103 __gen_field(values
->ResourceStreamerSave
, 0, 0) |
7108 #define GEN8_MI_RS_CONTROL_length 0x00000001
7109 #define GEN8_MI_RS_CONTROL_length_bias 0x00000001
7110 #define GEN8_MI_RS_CONTROL_header \
7112 .MICommandOpcode = 6
7114 struct GEN8_MI_RS_CONTROL
{
7115 uint32_t CommandType
;
7116 uint32_t MICommandOpcode
;
7119 uint32_t ResourceStreamerControl
;
7123 GEN8_MI_RS_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7124 const struct GEN8_MI_RS_CONTROL
* restrict values
)
7126 uint32_t *dw
= (uint32_t * restrict
) dst
;
7129 __gen_field(values
->CommandType
, 29, 31) |
7130 __gen_field(values
->MICommandOpcode
, 23, 28) |
7131 __gen_field(values
->ResourceStreamerControl
, 0, 0) |
7136 #define GEN8_MI_RS_STORE_DATA_IMM_length 0x00000004
7137 #define GEN8_MI_RS_STORE_DATA_IMM_length_bias 0x00000002
7138 #define GEN8_MI_RS_STORE_DATA_IMM_header \
7140 .MICommandOpcode = 43, \
7143 struct GEN8_MI_RS_STORE_DATA_IMM
{
7144 uint32_t CommandType
;
7145 uint32_t MICommandOpcode
;
7146 uint32_t DwordLength
;
7147 __gen_address_type DestinationAddress
;
7148 uint32_t CoreModeEnable
;
7149 uint32_t DataDWord0
;
7153 GEN8_MI_RS_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7154 const struct GEN8_MI_RS_STORE_DATA_IMM
* restrict values
)
7156 uint32_t *dw
= (uint32_t * restrict
) dst
;
7159 __gen_field(values
->CommandType
, 29, 31) |
7160 __gen_field(values
->MICommandOpcode
, 23, 28) |
7161 __gen_field(values
->DwordLength
, 0, 7) |
7165 __gen_field(values
->CoreModeEnable
, 0, 0) |
7169 __gen_combine_address(data
, &dw
[1], values
->DestinationAddress
, dw1
);
7175 __gen_field(values
->DataDWord0
, 0, 31) |
7180 #define GEN8_MI_SET_CONTEXT_length 0x00000002
7181 #define GEN8_MI_SET_CONTEXT_length_bias 0x00000002
7182 #define GEN8_MI_SET_CONTEXT_header \
7184 .MICommandOpcode = 24, \
7187 struct GEN8_MI_SET_CONTEXT
{
7188 uint32_t CommandType
;
7189 uint32_t MICommandOpcode
;
7190 uint32_t DwordLength
;
7191 __gen_address_type LogicalContextAddress
;
7192 uint32_t ReservedMustbe1
;
7193 bool CoreModeEnable
;
7194 bool ResourceStreamerStateSaveEnable
;
7195 bool ResourceStreamerStateRestoreEnable
;
7196 uint32_t ForceRestore
;
7197 uint32_t RestoreInhibit
;
7201 GEN8_MI_SET_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7202 const struct GEN8_MI_SET_CONTEXT
* restrict values
)
7204 uint32_t *dw
= (uint32_t * restrict
) dst
;
7207 __gen_field(values
->CommandType
, 29, 31) |
7208 __gen_field(values
->MICommandOpcode
, 23, 28) |
7209 __gen_field(values
->DwordLength
, 0, 7) |
7213 __gen_field(values
->ReservedMustbe1
, 8, 8) |
7214 __gen_field(values
->CoreModeEnable
, 4, 4) |
7215 __gen_field(values
->ResourceStreamerStateSaveEnable
, 3, 3) |
7216 __gen_field(values
->ResourceStreamerStateRestoreEnable
, 2, 2) |
7217 __gen_field(values
->ForceRestore
, 1, 1) |
7218 __gen_field(values
->RestoreInhibit
, 0, 0) |
7222 __gen_combine_address(data
, &dw
[1], values
->LogicalContextAddress
, dw1
);
7226 #define GEN8_MI_SET_PREDICATE_length 0x00000001
7227 #define GEN8_MI_SET_PREDICATE_length_bias 0x00000001
7228 #define GEN8_MI_SET_PREDICATE_header \
7230 .MICommandOpcode = 1
7232 struct GEN8_MI_SET_PREDICATE
{
7233 uint32_t CommandType
;
7234 uint32_t MICommandOpcode
;
7236 #define NOOPonResult2clear 1
7237 #define NOOPonResult2set 2
7238 #define NOOPonResultclear 3
7239 #define NOOPonResultset 4
7240 #define Executewhenonesliceenabled 5
7241 #define Executewhentwoslicesareenabled 6
7242 #define Executewhenthreeslicesareenabled 7
7243 #define NOOPAlways 15
7244 uint32_t PREDICATEENABLE
;
7248 GEN8_MI_SET_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7249 const struct GEN8_MI_SET_PREDICATE
* restrict values
)
7251 uint32_t *dw
= (uint32_t * restrict
) dst
;
7254 __gen_field(values
->CommandType
, 29, 31) |
7255 __gen_field(values
->MICommandOpcode
, 23, 28) |
7256 __gen_field(values
->PREDICATEENABLE
, 0, 3) |
7261 #define GEN8_MI_STORE_DATA_IMM_length 0x00000004
7262 #define GEN8_MI_STORE_DATA_IMM_length_bias 0x00000002
7263 #define GEN8_MI_STORE_DATA_IMM_header \
7265 .MICommandOpcode = 32, \
7268 struct GEN8_MI_STORE_DATA_IMM
{
7269 uint32_t CommandType
;
7270 uint32_t MICommandOpcode
;
7273 uint32_t DwordLength
;
7274 __gen_address_type Address
;
7275 uint32_t CoreModeEnable
;
7276 uint32_t DataDWord0
;
7277 uint32_t DataDWord1
;
7281 GEN8_MI_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7282 const struct GEN8_MI_STORE_DATA_IMM
* restrict values
)
7284 uint32_t *dw
= (uint32_t * restrict
) dst
;
7287 __gen_field(values
->CommandType
, 29, 31) |
7288 __gen_field(values
->MICommandOpcode
, 23, 28) |
7289 __gen_field(values
->UseGlobalGTT
, 22, 22) |
7290 __gen_field(values
->StoreQword
, 21, 21) |
7291 __gen_field(values
->DwordLength
, 0, 9) |
7295 __gen_field(values
->CoreModeEnable
, 0, 0) |
7299 __gen_combine_address(data
, &dw
[1], values
->Address
, dw1
);
7305 __gen_field(values
->DataDWord0
, 0, 31) |
7309 __gen_field(values
->DataDWord1
, 0, 31) |
7314 #define GEN8_MI_STORE_DATA_INDEX_length 0x00000003
7315 #define GEN8_MI_STORE_DATA_INDEX_length_bias 0x00000002
7316 #define GEN8_MI_STORE_DATA_INDEX_header \
7318 .MICommandOpcode = 33, \
7321 struct GEN8_MI_STORE_DATA_INDEX
{
7322 uint32_t CommandType
;
7323 uint32_t MICommandOpcode
;
7324 uint32_t UsePerProcessHardwareStatusPage
;
7325 uint32_t DwordLength
;
7327 uint32_t DataDWord0
;
7328 uint32_t DataDWord1
;
7332 GEN8_MI_STORE_DATA_INDEX_pack(__gen_user_data
*data
, void * restrict dst
,
7333 const struct GEN8_MI_STORE_DATA_INDEX
* restrict values
)
7335 uint32_t *dw
= (uint32_t * restrict
) dst
;
7338 __gen_field(values
->CommandType
, 29, 31) |
7339 __gen_field(values
->MICommandOpcode
, 23, 28) |
7340 __gen_field(values
->UsePerProcessHardwareStatusPage
, 21, 21) |
7341 __gen_field(values
->DwordLength
, 0, 7) |
7345 __gen_field(values
->Offset
, 2, 11) |
7349 __gen_field(values
->DataDWord0
, 0, 31) |
7353 __gen_field(values
->DataDWord1
, 0, 31) |
7358 #define GEN8_MI_STORE_URB_MEM_length 0x00000004
7359 #define GEN8_MI_STORE_URB_MEM_length_bias 0x00000002
7360 #define GEN8_MI_STORE_URB_MEM_header \
7362 .MICommandOpcode = 45, \
7365 struct GEN8_MI_STORE_URB_MEM
{
7366 uint32_t CommandType
;
7367 uint32_t MICommandOpcode
;
7368 uint32_t DwordLength
;
7369 uint32_t URBAddress
;
7370 __gen_address_type MemoryAddress
;
7374 GEN8_MI_STORE_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
7375 const struct GEN8_MI_STORE_URB_MEM
* restrict values
)
7377 uint32_t *dw
= (uint32_t * restrict
) dst
;
7380 __gen_field(values
->CommandType
, 29, 31) |
7381 __gen_field(values
->MICommandOpcode
, 23, 28) |
7382 __gen_field(values
->DwordLength
, 0, 7) |
7386 __gen_field(values
->URBAddress
, 2, 14) |
7393 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7400 #define GEN8_MI_SUSPEND_FLUSH_length 0x00000001
7401 #define GEN8_MI_SUSPEND_FLUSH_length_bias 0x00000001
7402 #define GEN8_MI_SUSPEND_FLUSH_header \
7404 .MICommandOpcode = 11
7406 struct GEN8_MI_SUSPEND_FLUSH
{
7407 uint32_t CommandType
;
7408 uint32_t MICommandOpcode
;
7413 GEN8_MI_SUSPEND_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
7414 const struct GEN8_MI_SUSPEND_FLUSH
* restrict values
)
7416 uint32_t *dw
= (uint32_t * restrict
) dst
;
7419 __gen_field(values
->CommandType
, 29, 31) |
7420 __gen_field(values
->MICommandOpcode
, 23, 28) |
7421 __gen_field(values
->SuspendFlush
, 0, 0) |
7426 #define GEN8_MI_TOPOLOGY_FILTER_length 0x00000001
7427 #define GEN8_MI_TOPOLOGY_FILTER_length_bias 0x00000001
7428 #define GEN8_MI_TOPOLOGY_FILTER_header \
7430 .MICommandOpcode = 13
7432 struct GEN8_MI_TOPOLOGY_FILTER
{
7433 uint32_t CommandType
;
7434 uint32_t MICommandOpcode
;
7435 uint32_t TopologyFilterValue
;
7439 GEN8_MI_TOPOLOGY_FILTER_pack(__gen_user_data
*data
, void * restrict dst
,
7440 const struct GEN8_MI_TOPOLOGY_FILTER
* restrict values
)
7442 uint32_t *dw
= (uint32_t * restrict
) dst
;
7445 __gen_field(values
->CommandType
, 29, 31) |
7446 __gen_field(values
->MICommandOpcode
, 23, 28) |
7447 __gen_field(values
->TopologyFilterValue
, 0, 5) |
7452 #define GEN8_MI_UPDATE_GTT_length_bias 0x00000002
7453 #define GEN8_MI_UPDATE_GTT_header \
7455 .MICommandOpcode = 35
7457 struct GEN8_MI_UPDATE_GTT
{
7458 uint32_t CommandType
;
7459 uint32_t MICommandOpcode
;
7460 uint32_t DwordLength
;
7461 __gen_address_type EntryAddress
;
7462 /* variable length fields follow */
7466 GEN8_MI_UPDATE_GTT_pack(__gen_user_data
*data
, void * restrict dst
,
7467 const struct GEN8_MI_UPDATE_GTT
* restrict values
)
7469 uint32_t *dw
= (uint32_t * restrict
) dst
;
7472 __gen_field(values
->CommandType
, 29, 31) |
7473 __gen_field(values
->MICommandOpcode
, 23, 28) |
7474 __gen_field(values
->DwordLength
, 0, 9) |
7481 __gen_combine_address(data
, &dw
[1], values
->EntryAddress
, dw1
);
7483 /* variable length fields follow */
7486 #define GEN8_MI_URB_ATOMIC_ALLOC_length 0x00000001
7487 #define GEN8_MI_URB_ATOMIC_ALLOC_length_bias 0x00000001
7488 #define GEN8_MI_URB_ATOMIC_ALLOC_header \
7490 .MICommandOpcode = 9
7492 struct GEN8_MI_URB_ATOMIC_ALLOC
{
7493 uint32_t CommandType
;
7494 uint32_t MICommandOpcode
;
7495 uint32_t URBAtomicStorageOffset
;
7496 uint32_t URBAtomicStorageSize
;
7500 GEN8_MI_URB_ATOMIC_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
7501 const struct GEN8_MI_URB_ATOMIC_ALLOC
* restrict values
)
7503 uint32_t *dw
= (uint32_t * restrict
) dst
;
7506 __gen_field(values
->CommandType
, 29, 31) |
7507 __gen_field(values
->MICommandOpcode
, 23, 28) |
7508 __gen_field(values
->URBAtomicStorageOffset
, 12, 19) |
7509 __gen_field(values
->URBAtomicStorageSize
, 0, 8) |
7514 #define GEN8_MI_URB_CLEAR_length 0x00000002
7515 #define GEN8_MI_URB_CLEAR_length_bias 0x00000002
7516 #define GEN8_MI_URB_CLEAR_header \
7518 .MICommandOpcode = 25, \
7521 struct GEN8_MI_URB_CLEAR
{
7522 uint32_t CommandType
;
7523 uint32_t MICommandOpcode
;
7524 uint32_t DwordLength
;
7525 uint32_t URBClearLength
;
7526 uint32_t URBAddress
;
7530 GEN8_MI_URB_CLEAR_pack(__gen_user_data
*data
, void * restrict dst
,
7531 const struct GEN8_MI_URB_CLEAR
* restrict values
)
7533 uint32_t *dw
= (uint32_t * restrict
) dst
;
7536 __gen_field(values
->CommandType
, 29, 31) |
7537 __gen_field(values
->MICommandOpcode
, 23, 28) |
7538 __gen_field(values
->DwordLength
, 0, 7) |
7542 __gen_field(values
->URBClearLength
, 16, 29) |
7543 __gen_offset(values
->URBAddress
, 0, 14) |
7548 #define GEN8_MI_USER_INTERRUPT_length 0x00000001
7549 #define GEN8_MI_USER_INTERRUPT_length_bias 0x00000001
7550 #define GEN8_MI_USER_INTERRUPT_header \
7552 .MICommandOpcode = 2
7554 struct GEN8_MI_USER_INTERRUPT
{
7555 uint32_t CommandType
;
7556 uint32_t MICommandOpcode
;
7560 GEN8_MI_USER_INTERRUPT_pack(__gen_user_data
*data
, void * restrict dst
,
7561 const struct GEN8_MI_USER_INTERRUPT
* restrict values
)
7563 uint32_t *dw
= (uint32_t * restrict
) dst
;
7566 __gen_field(values
->CommandType
, 29, 31) |
7567 __gen_field(values
->MICommandOpcode
, 23, 28) |
7572 #define GEN8_MI_WAIT_FOR_EVENT_length 0x00000001
7573 #define GEN8_MI_WAIT_FOR_EVENT_length_bias 0x00000001
7574 #define GEN8_MI_WAIT_FOR_EVENT_header \
7576 .MICommandOpcode = 3
7578 struct GEN8_MI_WAIT_FOR_EVENT
{
7579 uint32_t CommandType
;
7580 uint32_t MICommandOpcode
;
7581 bool DisplayPipeCVerticalBlankWaitEnable
;
7582 bool DisplaySpriteCFlipPendingWaitEnable
;
7583 bool DisplayPlaneCFlipPendingWaitEnable
;
7584 bool DisplayPipeCScanLineWaitEnable
;
7585 bool DisplayPipeBVerticalBlankWaitEnable
;
7586 bool DisplaySpriteBFlipPendingWaitEnable
;
7587 bool DisplayPlaneBFlipPendingWaitEnable
;
7588 bool DisplayPipeBScanLineWaitEnable
;
7589 bool DisplayPipeAVerticalBlankWaitEnable
;
7590 bool DisplaySpriteAFlipPendingWaitEnable
;
7591 bool DisplayPlaneAFlipPendingWaitEnable
;
7592 bool DisplayPipeAScanLineWaitEnable
;
7596 GEN8_MI_WAIT_FOR_EVENT_pack(__gen_user_data
*data
, void * restrict dst
,
7597 const struct GEN8_MI_WAIT_FOR_EVENT
* restrict values
)
7599 uint32_t *dw
= (uint32_t * restrict
) dst
;
7602 __gen_field(values
->CommandType
, 29, 31) |
7603 __gen_field(values
->MICommandOpcode
, 23, 28) |
7604 __gen_field(values
->DisplayPipeCVerticalBlankWaitEnable
, 21, 21) |
7605 __gen_field(values
->DisplaySpriteCFlipPendingWaitEnable
, 20, 20) |
7606 __gen_field(values
->DisplayPlaneCFlipPendingWaitEnable
, 15, 15) |
7607 __gen_field(values
->DisplayPipeCScanLineWaitEnable
, 14, 14) |
7608 __gen_field(values
->DisplayPipeBVerticalBlankWaitEnable
, 11, 11) |
7609 __gen_field(values
->DisplaySpriteBFlipPendingWaitEnable
, 10, 10) |
7610 __gen_field(values
->DisplayPlaneBFlipPendingWaitEnable
, 9, 9) |
7611 __gen_field(values
->DisplayPipeBScanLineWaitEnable
, 8, 8) |
7612 __gen_field(values
->DisplayPipeAVerticalBlankWaitEnable
, 3, 3) |
7613 __gen_field(values
->DisplaySpriteAFlipPendingWaitEnable
, 2, 2) |
7614 __gen_field(values
->DisplayPlaneAFlipPendingWaitEnable
, 1, 1) |
7615 __gen_field(values
->DisplayPipeAScanLineWaitEnable
, 0, 0) |
7620 #define GEN8_PIPE_CONTROL_length 0x00000006
7621 #define GEN8_PIPE_CONTROL_length_bias 0x00000002
7622 #define GEN8_PIPE_CONTROL_header \
7624 .CommandSubType = 3, \
7625 ._3DCommandOpcode = 2, \
7626 ._3DCommandSubOpcode = 0, \
7629 struct GEN8_PIPE_CONTROL
{
7630 uint32_t CommandType
;
7631 uint32_t CommandSubType
;
7632 uint32_t _3DCommandOpcode
;
7633 uint32_t _3DCommandSubOpcode
;
7634 uint32_t DwordLength
;
7637 uint32_t DestinationAddressType
;
7638 #define NoLRIOperation 0
7639 #define MMIOWriteImmediateData 1
7640 uint32_t LRIPostSyncOperation
;
7641 uint32_t StoreDataIndex
;
7642 uint32_t CommandStreamerStallEnable
;
7645 uint32_t GlobalSnapshotCountReset
;
7646 uint32_t TLBInvalidate
;
7647 bool GenericMediaStateClear
;
7649 #define WriteImmediateData 1
7650 #define WritePSDepthCount 2
7651 #define WriteTimestamp 3
7652 uint32_t PostSyncOperation
;
7653 bool DepthStallEnable
;
7654 #define DisableFlush 0
7655 #define EnableFlush 1
7656 bool RenderTargetCacheFlushEnable
;
7657 bool InstructionCacheInvalidateEnable
;
7658 bool TextureCacheInvalidationEnable
;
7659 bool IndirectStatePointersDisable
;
7661 bool PipeControlFlushEnable
;
7663 bool VFCacheInvalidationEnable
;
7664 bool ConstantCacheInvalidationEnable
;
7665 bool StateCacheInvalidationEnable
;
7666 bool StallAtPixelScoreboard
;
7667 #define FlushDisabled 0
7668 #define FlushEnabled 1
7669 bool DepthCacheFlushEnable
;
7670 __gen_address_type Address
;
7671 uint64_t ImmediateData
;
7675 GEN8_PIPE_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7676 const struct GEN8_PIPE_CONTROL
* restrict values
)
7678 uint32_t *dw
= (uint32_t * restrict
) dst
;
7681 __gen_field(values
->CommandType
, 29, 31) |
7682 __gen_field(values
->CommandSubType
, 27, 28) |
7683 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
7684 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
7685 __gen_field(values
->DwordLength
, 0, 7) |
7689 __gen_field(values
->DestinationAddressType
, 24, 24) |
7690 __gen_field(values
->LRIPostSyncOperation
, 23, 23) |
7691 __gen_field(values
->StoreDataIndex
, 21, 21) |
7692 __gen_field(values
->CommandStreamerStallEnable
, 20, 20) |
7693 __gen_field(values
->GlobalSnapshotCountReset
, 19, 19) |
7694 __gen_field(values
->TLBInvalidate
, 18, 18) |
7695 __gen_field(values
->GenericMediaStateClear
, 16, 16) |
7696 __gen_field(values
->PostSyncOperation
, 14, 15) |
7697 __gen_field(values
->DepthStallEnable
, 13, 13) |
7698 __gen_field(values
->RenderTargetCacheFlushEnable
, 12, 12) |
7699 __gen_field(values
->InstructionCacheInvalidateEnable
, 11, 11) |
7700 __gen_field(values
->TextureCacheInvalidationEnable
, 10, 10) |
7701 __gen_field(values
->IndirectStatePointersDisable
, 9, 9) |
7702 __gen_field(values
->NotifyEnable
, 8, 8) |
7703 __gen_field(values
->PipeControlFlushEnable
, 7, 7) |
7704 __gen_field(values
->DCFlushEnable
, 5, 5) |
7705 __gen_field(values
->VFCacheInvalidationEnable
, 4, 4) |
7706 __gen_field(values
->ConstantCacheInvalidationEnable
, 3, 3) |
7707 __gen_field(values
->StateCacheInvalidationEnable
, 2, 2) |
7708 __gen_field(values
->StallAtPixelScoreboard
, 1, 1) |
7709 __gen_field(values
->DepthCacheFlushEnable
, 0, 0) |
7716 __gen_combine_address(data
, &dw
[2], values
->Address
, dw2
);
7722 __gen_field(values
->ImmediateData
, 0, 63) |
7730 #define GEN8_3DSTATE_CONSTANT_BODY_length 0x0000000a
7732 #define GEN8_BINDING_TABLE_EDIT_ENTRY_length 0x00000001
7734 #define GEN8_GATHER_CONSTANT_ENTRY_length 0x00000001
7736 #define GEN8_VERTEX_BUFFER_STATE_length 0x00000004
7738 #define GEN8_VERTEX_ELEMENT_STATE_length 0x00000002
7740 #define GEN8_SO_DECL_ENTRY_length 0x00000002
7742 #define GEN8_SO_DECL_length 0x00000001
7744 #define GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_length 0x00000001
7746 #define GEN8_SCISSOR_RECT_length 0x00000002
7748 struct GEN8_SCISSOR_RECT
{
7749 uint32_t ScissorRectangleYMin
;
7750 uint32_t ScissorRectangleXMin
;
7751 uint32_t ScissorRectangleYMax
;
7752 uint32_t ScissorRectangleXMax
;
7756 GEN8_SCISSOR_RECT_pack(__gen_user_data
*data
, void * restrict dst
,
7757 const struct GEN8_SCISSOR_RECT
* restrict values
)
7759 uint32_t *dw
= (uint32_t * restrict
) dst
;
7762 __gen_field(values
->ScissorRectangleYMin
, 16, 31) |
7763 __gen_field(values
->ScissorRectangleXMin
, 0, 15) |
7767 __gen_field(values
->ScissorRectangleYMax
, 16, 31) |
7768 __gen_field(values
->ScissorRectangleXMax
, 0, 15) |
7773 #define GEN8_SF_CLIP_VIEWPORT_length 0x00000010
7775 struct GEN8_SF_CLIP_VIEWPORT
{
7776 float ViewportMatrixElementm00
;
7777 float ViewportMatrixElementm11
;
7778 float ViewportMatrixElementm22
;
7779 float ViewportMatrixElementm30
;
7780 float ViewportMatrixElementm31
;
7781 float ViewportMatrixElementm32
;
7782 float XMinClipGuardband
;
7783 float XMaxClipGuardband
;
7784 float YMinClipGuardband
;
7785 float YMaxClipGuardband
;
7793 GEN8_SF_CLIP_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
7794 const struct GEN8_SF_CLIP_VIEWPORT
* restrict values
)
7796 uint32_t *dw
= (uint32_t * restrict
) dst
;
7799 __gen_float(values
->ViewportMatrixElementm00
) |
7803 __gen_float(values
->ViewportMatrixElementm11
) |
7807 __gen_float(values
->ViewportMatrixElementm22
) |
7811 __gen_float(values
->ViewportMatrixElementm30
) |
7815 __gen_float(values
->ViewportMatrixElementm31
) |
7819 __gen_float(values
->ViewportMatrixElementm32
) |
7829 __gen_float(values
->XMinClipGuardband
) |
7833 __gen_float(values
->XMaxClipGuardband
) |
7837 __gen_float(values
->YMinClipGuardband
) |
7841 __gen_float(values
->YMaxClipGuardband
) |
7845 __gen_float(values
->XMinViewPort
) |
7849 __gen_float(values
->XMaxViewPort
) |
7853 __gen_float(values
->YMinViewPort
) |
7857 __gen_float(values
->YMaxViewPort
) |
7862 #define GEN8_BLEND_STATE_length 0x00000011
7864 struct GEN8_BLEND_STATE_ENTRY
{
7866 uint32_t LogicOpFunction
;
7867 uint32_t PreBlendSourceOnlyClampEnable
;
7868 #define COLORCLAMP_UNORM 0
7869 #define COLORCLAMP_SNORM 1
7870 #define COLORCLAMP_RTFORMAT 2
7871 uint32_t ColorClampRange
;
7872 bool PreBlendColorClampEnable
;
7873 bool PostBlendColorClampEnable
;
7874 bool ColorBufferBlendEnable
;
7875 uint32_t SourceBlendFactor
;
7876 uint32_t DestinationBlendFactor
;
7877 uint32_t ColorBlendFunction
;
7878 uint32_t SourceAlphaBlendFactor
;
7879 uint32_t DestinationAlphaBlendFactor
;
7880 uint32_t AlphaBlendFunction
;
7881 bool WriteDisableAlpha
;
7882 bool WriteDisableRed
;
7883 bool WriteDisableGreen
;
7884 bool WriteDisableBlue
;
7888 GEN8_BLEND_STATE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
7889 const struct GEN8_BLEND_STATE_ENTRY
* restrict values
)
7891 uint32_t *dw
= (uint32_t * restrict
) dst
;
7894 __gen_field(values
->LogicOpEnable
, 63, 63) |
7895 __gen_field(values
->LogicOpFunction
, 59, 62) |
7896 __gen_field(values
->PreBlendSourceOnlyClampEnable
, 36, 36) |
7897 __gen_field(values
->ColorClampRange
, 34, 35) |
7898 __gen_field(values
->PreBlendColorClampEnable
, 33, 33) |
7899 __gen_field(values
->PostBlendColorClampEnable
, 32, 32) |
7900 __gen_field(values
->ColorBufferBlendEnable
, 31, 31) |
7901 __gen_field(values
->SourceBlendFactor
, 26, 30) |
7902 __gen_field(values
->DestinationBlendFactor
, 21, 25) |
7903 __gen_field(values
->ColorBlendFunction
, 18, 20) |
7904 __gen_field(values
->SourceAlphaBlendFactor
, 13, 17) |
7905 __gen_field(values
->DestinationAlphaBlendFactor
, 8, 12) |
7906 __gen_field(values
->AlphaBlendFunction
, 5, 7) |
7907 __gen_field(values
->WriteDisableAlpha
, 3, 3) |
7908 __gen_field(values
->WriteDisableRed
, 2, 2) |
7909 __gen_field(values
->WriteDisableGreen
, 1, 1) |
7910 __gen_field(values
->WriteDisableBlue
, 0, 0) |
7918 struct GEN8_BLEND_STATE
{
7919 bool AlphaToCoverageEnable
;
7920 bool IndependentAlphaBlendEnable
;
7921 bool AlphaToOneEnable
;
7922 bool AlphaToCoverageDitherEnable
;
7923 bool AlphaTestEnable
;
7924 uint32_t AlphaTestFunction
;
7925 bool ColorDitherEnable
;
7926 uint32_t XDitherOffset
;
7927 uint32_t YDitherOffset
;
7928 struct GEN8_BLEND_STATE_ENTRY Entry
[8];
7932 GEN8_BLEND_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
7933 const struct GEN8_BLEND_STATE
* restrict values
)
7935 uint32_t *dw
= (uint32_t * restrict
) dst
;
7938 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
7939 __gen_field(values
->IndependentAlphaBlendEnable
, 30, 30) |
7940 __gen_field(values
->AlphaToOneEnable
, 29, 29) |
7941 __gen_field(values
->AlphaToCoverageDitherEnable
, 28, 28) |
7942 __gen_field(values
->AlphaTestEnable
, 27, 27) |
7943 __gen_field(values
->AlphaTestFunction
, 24, 26) |
7944 __gen_field(values
->ColorDitherEnable
, 23, 23) |
7945 __gen_field(values
->XDitherOffset
, 21, 22) |
7946 __gen_field(values
->YDitherOffset
, 19, 20) |
7949 for (uint32_t i
= 0, j
= 1; i
< 8; i
++, j
+= 2)
7950 GEN8_BLEND_STATE_ENTRY_pack(data
, &dw
[j
], &values
->Entry
[i
]);
7953 #define GEN8_BLEND_STATE_ENTRY_length 0x00000002
7955 #define GEN8_CC_VIEWPORT_length 0x00000002
7957 struct GEN8_CC_VIEWPORT
{
7963 GEN8_CC_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
7964 const struct GEN8_CC_VIEWPORT
* restrict values
)
7966 uint32_t *dw
= (uint32_t * restrict
) dst
;
7969 __gen_float(values
->MinimumDepth
) |
7973 __gen_float(values
->MaximumDepth
) |
7978 #define GEN8_COLOR_CALC_STATE_length 0x00000006
7980 struct GEN8_COLOR_CALC_STATE
{
7981 uint32_t StencilReferenceValue
;
7982 uint32_t BackFaceStencilReferenceValue
;
7984 #define NotCancelled 1
7985 uint32_t RoundDisableFunctionDisable
;
7986 #define ALPHATEST_UNORM8 0
7987 #define ALPHATEST_FLOAT32 1
7988 uint32_t AlphaTestFormat
;
7989 uint32_t AlphaReferenceValueAsUNORM8
;
7990 float AlphaReferenceValueAsFLOAT32
;
7991 float BlendConstantColorRed
;
7992 float BlendConstantColorGreen
;
7993 float BlendConstantColorBlue
;
7994 float BlendConstantColorAlpha
;
7998 GEN8_COLOR_CALC_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
7999 const struct GEN8_COLOR_CALC_STATE
* restrict values
)
8001 uint32_t *dw
= (uint32_t * restrict
) dst
;
8004 __gen_field(values
->StencilReferenceValue
, 24, 31) |
8005 __gen_field(values
->BackFaceStencilReferenceValue
, 16, 23) |
8006 __gen_field(values
->RoundDisableFunctionDisable
, 15, 15) |
8007 __gen_field(values
->AlphaTestFormat
, 0, 0) |
8011 __gen_field(values
->AlphaReferenceValueAsUNORM8
, 0, 31) |
8012 __gen_float(values
->AlphaReferenceValueAsFLOAT32
) |
8016 __gen_float(values
->BlendConstantColorRed
) |
8020 __gen_float(values
->BlendConstantColorGreen
) |
8024 __gen_float(values
->BlendConstantColorBlue
) |
8028 __gen_float(values
->BlendConstantColorAlpha
) |
8033 #define GEN8_MEMORY_OBJECT_CONTROL_STATE_length 0x00000001
8035 #define GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_length 0x00000001
8037 struct GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS
{
8038 #define UseCacheabilityControlsfrompagetableUCwithFenceifcoherentcycle 0
8039 #define UncacheableUCnoncacheable 1
8040 #define WritethroughWT 2
8041 #define WritebackWB 3
8042 uint32_t MemoryTypeLLCeLLCCacheabilityControlLeLLCCC
;
8045 #define LLCeLLCAllowed 2
8046 #define L3LLCeLLCAllowed 3
8047 uint32_t TargetCacheTC
;
8049 #define PoorChance 3
8050 #define NormalChance 2
8051 #define BetterChance 1
8052 #define BestChance 0
8053 bool AgeforQUADLRUAGE
;
8057 GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_pack(__gen_user_data
*data
, void * restrict dst
,
8058 const struct GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS
* restrict values
)
8060 uint32_t *dw
= (uint32_t * restrict
) dst
;
8063 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControlLeLLCCC
, 5, 6) |
8064 __gen_field(values
->TargetCacheTC
, 3, 4) |
8065 __gen_field(values
->EncryptedData
, 2, 2) |
8066 __gen_field(values
->AgeforQUADLRUAGE
, 0, 1) |
8071 #define GEN8_INTERFACE_DESCRIPTOR_DATA_length 0x00000008
8073 struct GEN8_INTERFACE_DESCRIPTOR_DATA
{
8074 uint32_t KernelStartPointer
;
8075 uint32_t KernelStartPointerHigh
;
8077 #define SetByKernel 1
8078 uint32_t DenormMode
;
8081 uint32_t SingleProgramFlow
;
8082 #define NormalPriority 0
8083 #define HighPriority 1
8084 uint32_t ThreadPriority
;
8087 uint32_t FloatingPointMode
;
8088 bool IllegalOpcodeExceptionEnable
;
8089 bool MaskStackExceptionEnable
;
8090 bool SoftwareExceptionEnable
;
8091 uint32_t SamplerStatePointer
;
8092 #define Nosamplersused 0
8093 #define Between1and4samplersused 1
8094 #define Between5and8samplersused 2
8095 #define Between9and12samplersused 3
8096 #define Between13and16samplersused 4
8097 uint32_t SamplerCount
;
8098 uint32_t BindingTablePointer
;
8099 uint32_t BindingTableEntryCount
;
8100 uint32_t ConstantIndirectURBEntryReadLength
;
8101 uint32_t ConstantURBEntryReadOffset
;
8106 uint32_t RoundingMode
;
8111 #define Encodes16k 4
8112 #define Encodes32k 8
8113 #define Encodes64k 16
8114 uint32_t SharedLocalMemorySize
;
8115 uint32_t NumberofThreadsinGPGPUThreadGroup
;
8116 uint32_t CrossThreadConstantDataReadLength
;
8120 GEN8_INTERFACE_DESCRIPTOR_DATA_pack(__gen_user_data
*data
, void * restrict dst
,
8121 const struct GEN8_INTERFACE_DESCRIPTOR_DATA
* restrict values
)
8123 uint32_t *dw
= (uint32_t * restrict
) dst
;
8126 __gen_offset(values
->KernelStartPointer
, 6, 31) |
8130 __gen_offset(values
->KernelStartPointerHigh
, 0, 15) |
8134 __gen_field(values
->DenormMode
, 19, 19) |
8135 __gen_field(values
->SingleProgramFlow
, 18, 18) |
8136 __gen_field(values
->ThreadPriority
, 17, 17) |
8137 __gen_field(values
->FloatingPointMode
, 16, 16) |
8138 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
8139 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
8140 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
8144 __gen_offset(values
->SamplerStatePointer
, 5, 31) |
8145 __gen_field(values
->SamplerCount
, 2, 4) |
8149 __gen_offset(values
->BindingTablePointer
, 5, 15) |
8150 __gen_field(values
->BindingTableEntryCount
, 0, 4) |
8154 __gen_field(values
->ConstantIndirectURBEntryReadLength
, 16, 31) |
8155 __gen_field(values
->ConstantURBEntryReadOffset
, 0, 15) |
8159 __gen_field(values
->RoundingMode
, 22, 23) |
8160 __gen_field(values
->BarrierEnable
, 21, 21) |
8161 __gen_field(values
->SharedLocalMemorySize
, 16, 20) |
8162 __gen_field(values
->NumberofThreadsinGPGPUThreadGroup
, 0, 9) |
8166 __gen_field(values
->CrossThreadConstantDataReadLength
, 0, 7) |
8171 #define GEN8_PALETTE_ENTRY_length 0x00000001
8173 #define GEN8_BINDING_TABLE_STATE_length 0x00000001
8175 struct GEN8_BINDING_TABLE_STATE
{
8176 uint32_t SurfaceStatePointer
;
8180 GEN8_BINDING_TABLE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8181 const struct GEN8_BINDING_TABLE_STATE
* restrict values
)
8183 uint32_t *dw
= (uint32_t * restrict
) dst
;
8186 __gen_offset(values
->SurfaceStatePointer
, 6, 31) |
8191 #define GEN8_RENDER_SURFACE_STATE_length 0x00000010
8193 struct GEN8_RENDER_SURFACE_STATE
{
8194 #define SURFTYPE_1D 0
8195 #define SURFTYPE_2D 1
8196 #define SURFTYPE_3D 2
8197 #define SURFTYPE_CUBE 3
8198 #define SURFTYPE_BUFFER 4
8199 #define SURFTYPE_STRBUF 5
8200 #define SURFTYPE_NULL 7
8201 uint32_t SurfaceType
;
8203 uint32_t SurfaceFormat
;
8207 uint32_t SurfaceVerticalAlignment
;
8211 uint32_t SurfaceHorizontalAlignment
;
8217 uint32_t VerticalLineStride
;
8218 uint32_t VerticalLineStrideOffset
;
8219 bool SamplerL2BypassModeDisable
;
8220 #define WriteOnlyCache 0
8221 #define ReadWriteCache 1
8222 uint32_t RenderCacheReadWriteMode
;
8223 #define NORMAL_MODE 0
8224 #define PROGRESSIVE_FRAME 2
8225 #define INTERLACED_FRAME 3
8226 uint32_t MediaBoundaryPixelMode
;
8227 bool CubeFaceEnablePositiveZ
;
8228 bool CubeFaceEnableNegativeZ
;
8229 bool CubeFaceEnablePositiveY
;
8230 bool CubeFaceEnableNegativeY
;
8231 bool CubeFaceEnablePositiveX
;
8232 bool CubeFaceEnableNegativeX
;
8233 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
8235 uint32_t SurfaceQPitch
;
8239 uint32_t SurfacePitch
;
8243 uint32_t RenderTargetAndSampleUnormRotation
;
8244 uint32_t MinimumArrayElement
;
8245 uint32_t RenderTargetViewExtent
;
8247 #define DEPTH_STENCIL 1
8248 uint32_t MultisampledSurfaceStorageFormat
;
8249 #define MULTISAMPLECOUNT_1 0
8250 #define MULTISAMPLECOUNT_2 1
8251 #define MULTISAMPLECOUNT_4 2
8252 #define MULTISAMPLECOUNT_8 3
8253 uint32_t NumberofMultisamples
;
8254 uint32_t MultisamplePositionPaletteIndex
;
8257 bool EWADisableForCube
;
8258 #define GPUcoherent 0
8259 #define IAcoherent 1
8260 uint32_t CoherencyType
;
8261 uint32_t SurfaceMinLOD
;
8262 uint32_t MIPCountLOD
;
8263 uint32_t AuxiliarySurfaceQPitch
;
8264 uint32_t AuxiliarySurfacePitch
;
8267 #define AUX_APPEND 2
8269 uint32_t AuxiliarySurfaceMode
;
8270 bool SeparateUVPlaneEnable
;
8271 uint32_t XOffsetforUorUVPlane
;
8272 uint32_t YOffsetforUorUVPlane
;
8273 uint32_t RedClearColor
;
8274 uint32_t GreenClearColor
;
8275 uint32_t BlueClearColor
;
8276 uint32_t AlphaClearColor
;
8277 uint32_t ShaderChannelSelectRed
;
8278 uint32_t ShaderChannelSelectGreen
;
8279 uint32_t ShaderChannelSelectBlue
;
8280 uint32_t ShaderChannelSelectAlpha
;
8281 float ResourceMinLOD
;
8282 __gen_address_type SurfaceBaseAddress
;
8283 uint32_t XOffsetforVPlane
;
8284 uint32_t YOffsetforVPlane
;
8285 uint32_t AuxiliaryTableIndexforMediaCompressedSurface
;
8286 __gen_address_type AuxiliarySurfaceBaseAddress
;
8290 GEN8_RENDER_SURFACE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8291 const struct GEN8_RENDER_SURFACE_STATE
* restrict values
)
8293 uint32_t *dw
= (uint32_t * restrict
) dst
;
8296 __gen_field(values
->SurfaceType
, 29, 31) |
8297 __gen_field(values
->SurfaceArray
, 28, 28) |
8298 __gen_field(values
->SurfaceFormat
, 18, 26) |
8299 __gen_field(values
->SurfaceVerticalAlignment
, 16, 17) |
8300 __gen_field(values
->SurfaceHorizontalAlignment
, 14, 15) |
8301 __gen_field(values
->TileMode
, 12, 13) |
8302 __gen_field(values
->VerticalLineStride
, 11, 11) |
8303 __gen_field(values
->VerticalLineStrideOffset
, 10, 10) |
8304 __gen_field(values
->SamplerL2BypassModeDisable
, 9, 9) |
8305 __gen_field(values
->RenderCacheReadWriteMode
, 8, 8) |
8306 __gen_field(values
->MediaBoundaryPixelMode
, 6, 7) |
8307 __gen_field(values
->CubeFaceEnablePositiveZ
, 0, 0) |
8308 __gen_field(values
->CubeFaceEnableNegativeZ
, 1, 1) |
8309 __gen_field(values
->CubeFaceEnablePositiveY
, 2, 2) |
8310 __gen_field(values
->CubeFaceEnableNegativeY
, 3, 3) |
8311 __gen_field(values
->CubeFaceEnablePositiveX
, 4, 4) |
8312 __gen_field(values
->CubeFaceEnableNegativeX
, 5, 5) |
8315 uint32_t dw_MemoryObjectControlState
;
8316 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
8318 __gen_field(dw_MemoryObjectControlState
, 24, 30) |
8319 __gen_field(values
->BaseMipLevel
* (1 << 1), 19, 23) |
8320 __gen_field(values
->SurfaceQPitch
, 0, 14) |
8324 __gen_field(values
->Height
, 16, 29) |
8325 __gen_field(values
->Width
, 0, 13) |
8329 __gen_field(values
->Depth
, 21, 31) |
8330 __gen_field(values
->SurfacePitch
, 0, 17) |
8334 __gen_field(values
->RenderTargetAndSampleUnormRotation
, 29, 30) |
8335 __gen_field(values
->MinimumArrayElement
, 18, 28) |
8336 __gen_field(values
->RenderTargetViewExtent
, 7, 17) |
8337 __gen_field(values
->MultisampledSurfaceStorageFormat
, 6, 6) |
8338 __gen_field(values
->NumberofMultisamples
, 3, 5) |
8339 __gen_field(values
->MultisamplePositionPaletteIndex
, 0, 2) |
8343 __gen_offset(values
->XOffset
, 25, 31) |
8344 __gen_offset(values
->YOffset
, 21, 23) |
8345 __gen_field(values
->EWADisableForCube
, 20, 20) |
8346 __gen_field(values
->CoherencyType
, 14, 14) |
8347 __gen_field(values
->SurfaceMinLOD
, 4, 7) |
8348 __gen_field(values
->MIPCountLOD
, 0, 3) |
8352 __gen_field(values
->AuxiliarySurfaceQPitch
, 16, 30) |
8353 __gen_field(values
->AuxiliarySurfacePitch
, 3, 11) |
8354 __gen_field(values
->AuxiliarySurfaceMode
, 0, 2) |
8355 __gen_field(values
->SeparateUVPlaneEnable
, 31, 31) |
8356 __gen_field(values
->XOffsetforUorUVPlane
, 16, 29) |
8357 __gen_field(values
->YOffsetforUorUVPlane
, 0, 13) |
8361 __gen_field(values
->RedClearColor
, 31, 31) |
8362 __gen_field(values
->GreenClearColor
, 30, 30) |
8363 __gen_field(values
->BlueClearColor
, 29, 29) |
8364 __gen_field(values
->AlphaClearColor
, 28, 28) |
8365 __gen_field(values
->ShaderChannelSelectRed
, 25, 27) |
8366 __gen_field(values
->ShaderChannelSelectGreen
, 22, 24) |
8367 __gen_field(values
->ShaderChannelSelectBlue
, 19, 21) |
8368 __gen_field(values
->ShaderChannelSelectAlpha
, 16, 18) |
8369 __gen_field(values
->ResourceMinLOD
* (1 << 8), 0, 11) |
8376 __gen_combine_address(data
, &dw
[8], values
->SurfaceBaseAddress
, dw8
);
8382 __gen_field(values
->XOffsetforVPlane
, 48, 61) |
8383 __gen_field(values
->YOffsetforVPlane
, 32, 45) |
8384 __gen_field(values
->AuxiliaryTableIndexforMediaCompressedSurface
, 21, 31) |
8388 __gen_combine_address(data
, &dw
[10], values
->AuxiliarySurfaceBaseAddress
, dw10
);
8391 dw
[11] = qw10
>> 32;
8407 #define GEN8_SAMPLER_STATE_length 0x00000004
8409 struct GEN8_SAMPLER_STATE
{
8410 bool SamplerDisable
;
8413 uint32_t TextureBorderColorMode
;
8414 #define CLAMP_NONE 0
8416 uint32_t LODPreClampMode
;
8418 #define MIPFILTER_NONE 0
8419 #define MIPFILTER_NEAREST 1
8420 #define MIPFILTER_LINEAR 3
8421 uint32_t MipModeFilter
;
8422 #define MAPFILTER_NEAREST 0
8423 #define MAPFILTER_LINEAR 1
8424 #define MAPFILTER_ANISOTROPIC 2
8425 #define MAPFILTER_MONO 6
8426 uint32_t MagModeFilter
;
8427 #define MAPFILTER_NEAREST 0
8428 #define MAPFILTER_LINEAR 1
8429 #define MAPFILTER_ANISOTROPIC 2
8430 #define MAPFILTER_MONO 6
8431 uint32_t MinModeFilter
;
8432 uint32_t TextureLODBias
;
8434 #define EWAApproximation 1
8435 uint32_t AnisotropicAlgorithm
;
8438 bool ChromaKeyEnable
;
8439 uint32_t ChromaKeyIndex
;
8440 #define KEYFILTER_KILL_ON_ANY_MATCH 0
8441 #define KEYFILTER_REPLACE_BLACK 1
8442 uint32_t ChromaKeyMode
;
8443 #define PREFILTEROPALWAYS 0
8444 #define PREFILTEROPNEVER 1
8445 #define PREFILTEROPLESS 2
8446 #define PREFILTEROPEQUAL 3
8447 #define PREFILTEROPLEQUAL 4
8448 #define PREFILTEROPGREATER 5
8449 #define PREFILTEROPNOTEQUAL 6
8450 #define PREFILTEROPGEQUAL 7
8451 uint32_t ShadowFunction
;
8452 #define PROGRAMMED 0
8454 uint32_t CubeSurfaceControlMode
;
8455 uint32_t IndirectStatePointer
;
8458 uint32_t LODClampMagnificationMode
;
8467 uint32_t MaximumAnisotropy
;
8468 bool RAddressMinFilterRoundingEnable
;
8469 bool RAddressMagFilterRoundingEnable
;
8470 bool VAddressMinFilterRoundingEnable
;
8471 bool VAddressMagFilterRoundingEnable
;
8472 bool UAddressMinFilterRoundingEnable
;
8473 bool UAddressMagFilterRoundingEnable
;
8478 uint32_t TrilinearFilterQuality
;
8479 bool NonnormalizedCoordinateEnable
;
8480 uint32_t TCXAddressControlMode
;
8481 uint32_t TCYAddressControlMode
;
8482 uint32_t TCZAddressControlMode
;
8486 GEN8_SAMPLER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8487 const struct GEN8_SAMPLER_STATE
* restrict values
)
8489 uint32_t *dw
= (uint32_t * restrict
) dst
;
8492 __gen_field(values
->SamplerDisable
, 31, 31) |
8493 __gen_field(values
->TextureBorderColorMode
, 29, 29) |
8494 __gen_field(values
->LODPreClampMode
, 27, 28) |
8495 __gen_field(values
->BaseMipLevel
* (1 << 1), 22, 26) |
8496 __gen_field(values
->MipModeFilter
, 20, 21) |
8497 __gen_field(values
->MagModeFilter
, 17, 19) |
8498 __gen_field(values
->MinModeFilter
, 14, 16) |
8499 __gen_field(values
->TextureLODBias
, 1, 13) |
8500 __gen_field(values
->AnisotropicAlgorithm
, 0, 0) |
8504 __gen_field(values
->MinLOD
* (1 << 8), 20, 31) |
8505 __gen_field(values
->MaxLOD
* (1 << 8), 8, 19) |
8506 __gen_field(values
->ChromaKeyEnable
, 7, 7) |
8507 __gen_field(values
->ChromaKeyIndex
, 5, 6) |
8508 __gen_field(values
->ChromaKeyMode
, 4, 4) |
8509 __gen_field(values
->ShadowFunction
, 1, 3) |
8510 __gen_field(values
->CubeSurfaceControlMode
, 0, 0) |
8514 __gen_field(values
->IndirectStatePointer
, 6, 23) |
8515 __gen_field(values
->LODClampMagnificationMode
, 0, 0) |
8519 __gen_field(values
->MaximumAnisotropy
, 19, 21) |
8520 __gen_field(values
->RAddressMinFilterRoundingEnable
, 13, 13) |
8521 __gen_field(values
->RAddressMagFilterRoundingEnable
, 14, 14) |
8522 __gen_field(values
->VAddressMinFilterRoundingEnable
, 15, 15) |
8523 __gen_field(values
->VAddressMagFilterRoundingEnable
, 16, 16) |
8524 __gen_field(values
->UAddressMinFilterRoundingEnable
, 17, 17) |
8525 __gen_field(values
->UAddressMagFilterRoundingEnable
, 18, 18) |
8526 __gen_field(values
->TrilinearFilterQuality
, 11, 12) |
8527 __gen_field(values
->NonnormalizedCoordinateEnable
, 10, 10) |
8528 __gen_field(values
->TCXAddressControlMode
, 6, 8) |
8529 __gen_field(values
->TCYAddressControlMode
, 3, 5) |
8530 __gen_field(values
->TCZAddressControlMode
, 0, 2) |
8535 /* Enum 3D_Prim_Topo_Type */
8536 #define _3DPRIM_POINTLIST 1
8537 #define _3DPRIM_LINELIST 2
8538 #define _3DPRIM_LINESTRIP 3
8539 #define _3DPRIM_TRILIST 4
8540 #define _3DPRIM_TRISTRIP 5
8541 #define _3DPRIM_TRIFAN 6
8542 #define _3DPRIM_QUADLIST 7
8543 #define _3DPRIM_QUADSTRIP 8
8544 #define _3DPRIM_LINELIST_ADJ 9
8545 #define _3DPRIM_LINESTRIP_ADJ 10
8546 #define _3DPRIM_TRILIST_ADJ 11
8547 #define _3DPRIM_TRISTRIP_ADJ 12
8548 #define _3DPRIM_TRISTRIP_REVERSE 13
8549 #define _3DPRIM_POLYGON 14
8550 #define _3DPRIM_RECTLIST 15
8551 #define _3DPRIM_LINELOOP 16
8552 #define _3DPRIM_POINTLIST_BF 17
8553 #define _3DPRIM_LINESTRIP_CONT 18
8554 #define _3DPRIM_LINESTRIP_BF 19
8555 #define _3DPRIM_LINESTRIP_CONT_BF 20
8556 #define _3DPRIM_TRIFAN_NOSTIPPLE 22
8557 #define _3DPRIM_PATCHLIST_1 32
8558 #define _3DPRIM_PATCHLIST_2 33
8559 #define _3DPRIM_PATCHLIST_3 34
8560 #define _3DPRIM_PATCHLIST_4 35
8561 #define _3DPRIM_PATCHLIST_5 36
8562 #define _3DPRIM_PATCHLIST_6 37
8563 #define _3DPRIM_PATCHLIST_7 38
8564 #define _3DPRIM_PATCHLIST_8 39
8565 #define _3DPRIM_PATCHLIST_9 40
8566 #define _3DPRIM_PATCHLIST_10 41
8567 #define _3DPRIM_PATCHLIST_11 42
8568 #define _3DPRIM_PATCHLIST_12 43
8569 #define _3DPRIM_PATCHLIST_13 44
8570 #define _3DPRIM_PATCHLIST_14 45
8571 #define _3DPRIM_PATCHLIST_15 46
8572 #define _3DPRIM_PATCHLIST_16 47
8573 #define _3DPRIM_PATCHLIST_17 48
8574 #define _3DPRIM_PATCHLIST_18 49
8575 #define _3DPRIM_PATCHLIST_19 50
8576 #define _3DPRIM_PATCHLIST_20 51
8577 #define _3DPRIM_PATCHLIST_21 52
8578 #define _3DPRIM_PATCHLIST_22 53
8579 #define _3DPRIM_PATCHLIST_23 54
8580 #define _3DPRIM_PATCHLIST_24 55
8581 #define _3DPRIM_PATCHLIST_25 56
8582 #define _3DPRIM_PATCHLIST_26 57
8583 #define _3DPRIM_PATCHLIST_27 58
8584 #define _3DPRIM_PATCHLIST_28 59
8585 #define _3DPRIM_PATCHLIST_29 60
8586 #define _3DPRIM_PATCHLIST_30 61
8587 #define _3DPRIM_PATCHLIST_31 62
8588 #define _3DPRIM_PATCHLIST_32 63
8590 /* Enum 3D_Vertex_Component_Control */
8591 #define VFCOMP_NOSTORE 0
8592 #define VFCOMP_STORE_SRC 1
8593 #define VFCOMP_STORE_0 2
8594 #define VFCOMP_STORE_1_FP 3
8595 #define VFCOMP_STORE_1_INT 4
8596 #define VFCOMP_STORE_PID 7
8598 /* Enum WRAP_SHORTEST_ENABLE */
8615 /* Enum 3D_Stencil_Operation */
8616 #define STENCILOP_KEEP 0
8617 #define STENCILOP_ZERO 1
8618 #define STENCILOP_REPLACE 2
8619 #define STENCILOP_INCRSAT 3
8620 #define STENCILOP_DECRSAT 4
8621 #define STENCILOP_INCR 5
8622 #define STENCILOP_DECR 6
8623 #define STENCILOP_INVERT 7
8625 /* Enum 3D_Color_Buffer_Blend_Factor */
8626 #define BLENDFACTOR_ONE 1
8627 #define BLENDFACTOR_SRC_COLOR 2
8628 #define BLENDFACTOR_SRC_ALPHA 3
8629 #define BLENDFACTOR_DST_ALPHA 4
8630 #define BLENDFACTOR_DST_COLOR 5
8631 #define BLENDFACTOR_SRC_ALPHA_SATURATE 6
8632 #define BLENDFACTOR_CONST_COLOR 7
8633 #define BLENDFACTOR_CONST_ALPHA 8
8634 #define BLENDFACTOR_SRC1_COLOR 9
8635 #define BLENDFACTOR_SRC1_ALPHA 10
8636 #define BLENDFACTOR_ZERO 17
8637 #define BLENDFACTOR_INV_SRC_COLOR 18
8638 #define BLENDFACTOR_INV_SRC_ALPHA 19
8639 #define BLENDFACTOR_INV_DST_ALPHA 20
8640 #define BLENDFACTOR_INV_DST_COLOR 21
8641 #define BLENDFACTOR_INV_CONST_COLOR 23
8642 #define BLENDFACTOR_INV_CONST_ALPHA 24
8643 #define BLENDFACTOR_INV_SRC1_COLOR 25
8644 #define BLENDFACTOR_INV_SRC1_ALPHA 26
8646 /* Enum 3D_Color_Buffer_Blend_Function */
8647 #define BLENDFUNCTION_ADD 0
8648 #define BLENDFUNCTION_SUBTRACT 1
8649 #define BLENDFUNCTION_REVERSE_SUBTRACT 2
8650 #define BLENDFUNCTION_MIN 3
8651 #define BLENDFUNCTION_MAX 4
8653 /* Enum 3D_Compare_Function */
8654 #define COMPAREFUNCTION_ALWAYS 0
8655 #define COMPAREFUNCTION_NEVER 1
8656 #define COMPAREFUNCTION_LESS 2
8657 #define COMPAREFUNCTION_EQUAL 3
8658 #define COMPAREFUNCTION_LEQUAL 4
8659 #define COMPAREFUNCTION_GREATER 5
8660 #define COMPAREFUNCTION_NOTEQUAL 6
8661 #define COMPAREFUNCTION_GEQUAL 7
8663 /* Enum 3D_Logic_Op_Function */
8664 #define LOGICOP_CLEAR 0
8665 #define LOGICOP_NOR 1
8666 #define LOGICOP_AND_INVERTED 2
8667 #define LOGICOP_COPY_INVERTED 3
8668 #define LOGICOP_AND_REVERSE 4
8669 #define LOGICOP_INVERT 5
8670 #define LOGICOP_XOR 6
8671 #define LOGICOP_NAND 7
8672 #define LOGICOP_AND 8
8673 #define LOGICOP_EQUIV 9
8674 #define LOGICOP_NOOP 10
8675 #define LOGICOP_OR_INVERTED 11
8676 #define LOGICOP_COPY 12
8677 #define LOGICOP_OR_REVERSE 13
8678 #define LOGICOP_OR 14
8679 #define LOGICOP_SET 15
8681 /* Enum SURFACE_FORMAT */
8682 #define R32G32B32A32_FLOAT 0
8683 #define R32G32B32A32_SINT 1
8684 #define R32G32B32A32_UINT 2
8685 #define R32G32B32A32_UNORM 3
8686 #define R32G32B32A32_SNORM 4
8687 #define R64G64_FLOAT 5
8688 #define R32G32B32X32_FLOAT 6
8689 #define R32G32B32A32_SSCALED 7
8690 #define R32G32B32A32_USCALED 8
8691 #define R32G32B32A32_SFIXED 32
8692 #define R64G64_PASSTHRU 33
8693 #define R32G32B32_FLOAT 64
8694 #define R32G32B32_SINT 65
8695 #define R32G32B32_UINT 66
8696 #define R32G32B32_UNORM 67
8697 #define R32G32B32_SNORM 68
8698 #define R32G32B32_SSCALED 69
8699 #define R32G32B32_USCALED 70
8700 #define R32G32B32_SFIXED 80
8701 #define R16G16B16A16_UNORM 128
8702 #define R16G16B16A16_SNORM 129
8703 #define R16G16B16A16_SINT 130
8704 #define R16G16B16A16_UINT 131
8705 #define R16G16B16A16_FLOAT 132
8706 #define R32G32_FLOAT 133
8707 #define R32G32_SINT 134
8708 #define R32G32_UINT 135
8709 #define R32_FLOAT_X8X24_TYPELESS 136
8710 #define X32_TYPELESS_G8X24_UINT 137
8711 #define L32A32_FLOAT 138
8712 #define R32G32_UNORM 139
8713 #define R32G32_SNORM 140
8714 #define R64_FLOAT 141
8715 #define R16G16B16X16_UNORM 142
8716 #define R16G16B16X16_FLOAT 143
8717 #define A32X32_FLOAT 144
8718 #define L32X32_FLOAT 145
8719 #define I32X32_FLOAT 146
8720 #define R16G16B16A16_SSCALED 147
8721 #define R16G16B16A16_USCALED 148
8722 #define R32G32_SSCALED 149
8723 #define R32G32_USCALED 150
8724 #define R32G32_SFIXED 160
8725 #define R64_PASSTHRU 161
8726 #define B8G8R8A8_UNORM 192
8727 #define B8G8R8A8_UNORM_SRGB 193
8728 #define R10G10B10A2_UNORM 194
8729 #define R10G10B10A2_UNORM_SRGB 195
8730 #define R10G10B10A2_UINT 196
8731 #define R10G10B10_SNORM_A2_UNORM 197
8732 #define R8G8B8A8_UNORM 199
8733 #define R8G8B8A8_UNORM_SRGB 200
8734 #define R8G8B8A8_SNORM 201
8735 #define R8G8B8A8_SINT 202
8736 #define R8G8B8A8_UINT 203
8737 #define R16G16_UNORM 204
8738 #define R16G16_SNORM 205
8739 #define R16G16_SINT 206
8740 #define R16G16_UINT 207
8741 #define R16G16_FLOAT 208
8742 #define B10G10R10A2_UNORM 209
8743 #define B10G10R10A2_UNORM_SRGB 210
8744 #define R11G11B10_FLOAT 211
8745 #define R32_SINT 214
8746 #define R32_UINT 215
8747 #define R32_FLOAT 216
8748 #define R24_UNORM_X8_TYPELESS 217
8749 #define X24_TYPELESS_G8_UINT 218
8750 #define L32_UNORM 221
8751 #define A32_UNORM 222
8752 #define L16A16_UNORM 223
8753 #define I24X8_UNORM 224
8754 #define L24X8_UNORM 225
8755 #define A24X8_UNORM 226
8756 #define I32_FLOAT 227
8757 #define L32_FLOAT 228
8758 #define A32_FLOAT 229
8759 #define X8B8_UNORM_G8R8_SNORM 230
8760 #define A8X8_UNORM_G8R8_SNORM 231
8761 #define B8X8_UNORM_G8R8_SNORM 232
8762 #define B8G8R8X8_UNORM 233
8763 #define B8G8R8X8_UNORM_SRGB 234
8764 #define R8G8B8X8_UNORM 235
8765 #define R8G8B8X8_UNORM_SRGB 236
8766 #define R9G9B9E5_SHAREDEXP 237
8767 #define B10G10R10X2_UNORM 238
8768 #define L16A16_FLOAT 240
8769 #define R32_UNORM 241
8770 #define R32_SNORM 242
8771 #define R10G10B10X2_USCALED 243
8772 #define R8G8B8A8_SSCALED 244
8773 #define R8G8B8A8_USCALED 245
8774 #define R16G16_SSCALED 246
8775 #define R16G16_USCALED 247
8776 #define R32_SSCALED 248
8777 #define R32_USCALED 249
8778 #define B5G6R5_UNORM 256
8779 #define B5G6R5_UNORM_SRGB 257
8780 #define B5G5R5A1_UNORM 258
8781 #define B5G5R5A1_UNORM_SRGB 259
8782 #define B4G4R4A4_UNORM 260
8783 #define B4G4R4A4_UNORM_SRGB 261
8784 #define R8G8_UNORM 262
8785 #define R8G8_SNORM 263
8786 #define R8G8_SINT 264
8787 #define R8G8_UINT 265
8788 #define R16_UNORM 266
8789 #define R16_SNORM 267
8790 #define R16_SINT 268
8791 #define R16_UINT 269
8792 #define R16_FLOAT 270
8793 #define A8P8_UNORM_PALETTE0 271
8794 #define A8P8_UNORM_PALETTE1 272
8795 #define I16_UNORM 273
8796 #define L16_UNORM 274
8797 #define A16_UNORM 275
8798 #define L8A8_UNORM 276
8799 #define I16_FLOAT 277
8800 #define L16_FLOAT 278
8801 #define A16_FLOAT 279
8802 #define L8A8_UNORM_SRGB 280
8803 #define R5G5_SNORM_B6_UNORM 281
8804 #define B5G5R5X1_UNORM 282
8805 #define B5G5R5X1_UNORM_SRGB 283
8806 #define R8G8_SSCALED 284
8807 #define R8G8_USCALED 285
8808 #define R16_SSCALED 286
8809 #define R16_USCALED 287
8810 #define P8A8_UNORM_PALETTE0 290
8811 #define P8A8_UNORM_PALETTE1 291
8812 #define A1B5G5R5_UNORM 292
8813 #define A4B4G4R4_UNORM 293
8814 #define L8A8_UINT 294
8815 #define L8A8_SINT 295
8816 #define R8_UNORM 320
8817 #define R8_SNORM 321
8820 #define A8_UNORM 324
8821 #define I8_UNORM 325
8822 #define L8_UNORM 326
8823 #define P4A4_UNORM_PALETTE0 327
8824 #define A4P4_UNORM_PALETTE0 328
8825 #define R8_SSCALED 329
8826 #define R8_USCALED 330
8827 #define P8_UNORM_PALETTE0 331
8828 #define L8_UNORM_SRGB 332
8829 #define P8_UNORM_PALETTE1 333
8830 #define P4A4_UNORM_PALETTE1 334
8831 #define A4P4_UNORM_PALETTE1 335
8832 #define Y8_UNORM 336
8837 #define DXT1_RGB_SRGB 384
8838 #define R1_UNORM 385
8839 #define YCRCB_NORMAL 386
8840 #define YCRCB_SWAPUVY 387
8841 #define P2_UNORM_PALETTE0 388
8842 #define P2_UNORM_PALETTE1 389
8843 #define BC1_UNORM 390
8844 #define BC2_UNORM 391
8845 #define BC3_UNORM 392
8846 #define BC4_UNORM 393
8847 #define BC5_UNORM 394
8848 #define BC1_UNORM_SRGB 395
8849 #define BC2_UNORM_SRGB 396
8850 #define BC3_UNORM_SRGB 397
8852 #define YCRCB_SWAPUV 399
8853 #define YCRCB_SWAPY 400
8854 #define DXT1_RGB 401
8856 #define R8G8B8_UNORM 403
8857 #define R8G8B8_SNORM 404
8858 #define R8G8B8_SSCALED 405
8859 #define R8G8B8_USCALED 406
8860 #define R64G64B64A64_FLOAT 407
8861 #define R64G64B64_FLOAT 408
8862 #define BC4_SNORM 409
8863 #define BC5_SNORM 410
8864 #define R16G16B16_FLOAT 411
8865 #define R16G16B16_UNORM 412
8866 #define R16G16B16_SNORM 413
8867 #define R16G16B16_SSCALED 414
8868 #define R16G16B16_USCALED 415
8869 #define BC6H_SF16 417
8870 #define BC7_UNORM 418
8871 #define BC7_UNORM_SRGB 419
8872 #define BC6H_UF16 420
8873 #define PLANAR_420_8 421
8874 #define R8G8B8_UNORM_SRGB 424
8875 #define ETC1_RGB8 425
8876 #define ETC2_RGB8 426
8878 #define EAC_RG11 428
8879 #define EAC_SIGNED_R11 429
8880 #define EAC_SIGNED_RG11 430
8881 #define ETC2_SRGB8 431
8882 #define R16G16B16_UINT 432
8883 #define R16G16B16_SINT 433
8884 #define R32_SFIXED 434
8885 #define R10G10B10A2_SNORM 435
8886 #define R10G10B10A2_USCALED 436
8887 #define R10G10B10A2_SSCALED 437
8888 #define R10G10B10A2_SINT 438
8889 #define B10G10R10A2_SNORM 439
8890 #define B10G10R10A2_USCALED 440
8891 #define B10G10R10A2_SSCALED 441
8892 #define B10G10R10A2_UINT 442
8893 #define B10G10R10A2_SINT 443
8894 #define R64G64B64A64_PASSTHRU 444
8895 #define R64G64B64_PASSTHRU 445
8896 #define ETC2_RGB8_PTA 448
8897 #define ETC2_SRGB8_PTA 449
8898 #define ETC2_EAC_RGBA8 450
8899 #define ETC2_EAC_SRGB8_A8 451
8900 #define R8G8B8_UINT 456
8901 #define R8G8B8_SINT 457
8904 /* Enum Shader Channel Select */
8912 /* Enum Clear Color */
8916 /* Enum Texture Coordinate Mode */
8918 #define TCM_MIRROR 1
8921 #define TCM_CLAMP_BORDER 4
8922 #define TCM_MIRROR_ONCE 5
8923 #define TCM_HALF_BORDER 6