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 (~0ull >> (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
< 1ull << (end
- start
+ 1));
65 static inline uint64_t
66 __gen_fixed(float v
, uint32_t start
, uint32_t end
,
67 bool is_signed
, uint32_t fract_bits
)
69 __gen_validate_value(v
);
71 const float factor
= (1 << fract_bits
);
75 max
= ((1 << (end
- start
)) - 1) / factor
;
76 min
= -(1 << (end
- start
)) / factor
;
78 max
= ((1 << (end
- start
+ 1)) - 1) / factor
;
87 int32_t int_val
= roundf(v
* factor
);
90 int_val
&= (1 << (end
- start
+ 1)) - 1;
92 return int_val
<< start
;
95 static inline uint64_t
96 __gen_offset(uint64_t v
, uint32_t start
, uint32_t end
)
98 __gen_validate_value(v
);
100 uint64_t mask
= (~0ull >> (64 - (end
- start
+ 1))) << start
;
102 assert((v
& ~mask
) == 0);
108 static inline uint32_t
111 __gen_validate_value(v
);
112 return ((union __gen_value
) { .f
= (v
) }).dw
;
115 #ifndef __gen_address_type
116 #error #define __gen_address_type before including this file
119 #ifndef __gen_user_data
120 #error #define __gen_combine_address before including this file
125 #define GEN8_3DSTATE_URB_VS_length_bias 0x00000002
126 #define GEN8_3DSTATE_URB_VS_header \
128 .CommandSubType = 3, \
129 ._3DCommandOpcode = 0, \
130 ._3DCommandSubOpcode = 48, \
133 #define GEN8_3DSTATE_URB_VS_length 0x00000002
135 struct GEN8_3DSTATE_URB_VS
{
136 uint32_t CommandType
;
137 uint32_t CommandSubType
;
138 uint32_t _3DCommandOpcode
;
139 uint32_t _3DCommandSubOpcode
;
140 uint32_t DwordLength
;
141 uint32_t VSURBStartingAddress
;
142 uint32_t VSURBEntryAllocationSize
;
143 uint32_t VSNumberofURBEntries
;
147 GEN8_3DSTATE_URB_VS_pack(__gen_user_data
*data
, void * restrict dst
,
148 const struct GEN8_3DSTATE_URB_VS
* restrict values
)
150 uint32_t *dw
= (uint32_t * restrict
) dst
;
153 __gen_field(values
->CommandType
, 29, 31) |
154 __gen_field(values
->CommandSubType
, 27, 28) |
155 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
156 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
157 __gen_field(values
->DwordLength
, 0, 7) |
161 __gen_field(values
->VSURBStartingAddress
, 25, 31) |
162 __gen_field(values
->VSURBEntryAllocationSize
, 16, 24) |
163 __gen_field(values
->VSNumberofURBEntries
, 0, 15) |
168 #define GEN8_3DSTATE_VS_length_bias 0x00000002
169 #define GEN8_3DSTATE_VS_header \
171 .CommandSubType = 3, \
172 ._3DCommandOpcode = 0, \
173 ._3DCommandSubOpcode = 16, \
176 #define GEN8_3DSTATE_VS_length 0x00000009
178 struct GEN8_3DSTATE_VS
{
179 uint32_t CommandType
;
180 uint32_t CommandSubType
;
181 uint32_t _3DCommandOpcode
;
182 uint32_t _3DCommandSubOpcode
;
183 uint32_t DwordLength
;
184 uint64_t KernelStartPointer
;
187 uint32_t SingleVertexDispatch
;
190 uint32_t VectorMaskEnable
;
192 #define _14Samplers 1
193 #define _58Samplers 2
194 #define _912Samplers 3
195 #define _1316Samplers 4
196 uint32_t SamplerCount
;
197 uint32_t BindingTableEntryCount
;
200 uint32_t ThreadDispatchPriority
;
203 uint32_t FloatingPointMode
;
204 bool IllegalOpcodeExceptionEnable
;
206 bool SoftwareExceptionEnable
;
207 uint64_t ScratchSpaceBasePointer
;
208 uint32_t PerThreadScratchSpace
;
209 uint32_t DispatchGRFStartRegisterForURBData
;
210 uint32_t VertexURBEntryReadLength
;
211 uint32_t VertexURBEntryReadOffset
;
212 uint32_t MaximumNumberofThreads
;
213 bool StatisticsEnable
;
214 bool SIMD8DispatchEnable
;
215 bool VertexCacheDisable
;
217 uint32_t VertexURBEntryOutputReadOffset
;
218 uint32_t VertexURBEntryOutputLength
;
219 uint32_t UserClipDistanceClipTestEnableBitmask
;
220 uint32_t UserClipDistanceCullTestEnableBitmask
;
224 GEN8_3DSTATE_VS_pack(__gen_user_data
*data
, void * restrict dst
,
225 const struct GEN8_3DSTATE_VS
* restrict values
)
227 uint32_t *dw
= (uint32_t * restrict
) dst
;
230 __gen_field(values
->CommandType
, 29, 31) |
231 __gen_field(values
->CommandSubType
, 27, 28) |
232 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
233 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
234 __gen_field(values
->DwordLength
, 0, 7) |
238 __gen_offset(values
->KernelStartPointer
, 6, 63) |
245 __gen_field(values
->SingleVertexDispatch
, 31, 31) |
246 __gen_field(values
->VectorMaskEnable
, 30, 30) |
247 __gen_field(values
->SamplerCount
, 27, 29) |
248 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
249 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
250 __gen_field(values
->FloatingPointMode
, 16, 16) |
251 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
252 __gen_field(values
->AccessesUAV
, 12, 12) |
253 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
257 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
258 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
265 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
266 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
267 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
271 __gen_field(values
->MaximumNumberofThreads
, 23, 31) |
272 __gen_field(values
->StatisticsEnable
, 10, 10) |
273 __gen_field(values
->SIMD8DispatchEnable
, 2, 2) |
274 __gen_field(values
->VertexCacheDisable
, 1, 1) |
275 __gen_field(values
->FunctionEnable
, 0, 0) |
279 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
280 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
281 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
282 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
287 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length_bias 0x00000002
288 #define GEN8_GPGPU_CSR_BASE_ADDRESS_header \
290 .CommandSubType = 0, \
291 ._3DCommandOpcode = 1, \
292 ._3DCommandSubOpcode = 4, \
295 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length 0x00000003
297 struct GEN8_GPGPU_CSR_BASE_ADDRESS
{
298 uint32_t CommandType
;
299 uint32_t CommandSubType
;
300 uint32_t _3DCommandOpcode
;
301 uint32_t _3DCommandSubOpcode
;
302 uint32_t DwordLength
;
303 __gen_address_type GPGPUCSRBaseAddress
;
307 GEN8_GPGPU_CSR_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
308 const struct GEN8_GPGPU_CSR_BASE_ADDRESS
* restrict values
)
310 uint32_t *dw
= (uint32_t * restrict
) dst
;
313 __gen_field(values
->CommandType
, 29, 31) |
314 __gen_field(values
->CommandSubType
, 27, 28) |
315 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
316 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
317 __gen_field(values
->DwordLength
, 0, 7) |
324 __gen_combine_address(data
, &dw
[1], values
->GPGPUCSRBaseAddress
, dw1
);
331 #define GEN8_MI_ATOMIC_length_bias 0x00000002
332 #define GEN8_MI_ATOMIC_header \
334 .MICommandOpcode = 47
336 #define GEN8_MI_ATOMIC_length 0x00000003
338 struct GEN8_MI_ATOMIC
{
339 uint32_t CommandType
;
340 uint32_t MICommandOpcode
;
341 #define PerProcessGraphicsAddress 0
342 #define GlobalGraphicsAddress 1
344 uint32_t PostSyncOperation
;
352 uint32_t ReturnDataControl
;
353 uint32_t ATOMICOPCODE
;
354 uint32_t DwordLength
;
355 __gen_address_type MemoryAddress
;
356 uint32_t Operand1DataDword0
;
357 uint32_t Operand2DataDword0
;
358 uint32_t Operand1DataDword1
;
359 uint32_t Operand2DataDword1
;
360 uint32_t Operand1DataDword2
;
361 uint32_t Operand2DataDword2
;
362 uint32_t Operand1DataDword3
;
363 uint32_t Operand2DataDword3
;
367 GEN8_MI_ATOMIC_pack(__gen_user_data
*data
, void * restrict dst
,
368 const struct GEN8_MI_ATOMIC
* restrict values
)
370 uint32_t *dw
= (uint32_t * restrict
) dst
;
373 __gen_field(values
->CommandType
, 29, 31) |
374 __gen_field(values
->MICommandOpcode
, 23, 28) |
375 __gen_field(values
->MemoryType
, 22, 22) |
376 __gen_field(values
->PostSyncOperation
, 21, 21) |
377 __gen_field(values
->DataSize
, 19, 20) |
378 __gen_field(values
->InlineData
, 18, 18) |
379 __gen_field(values
->CSSTALL
, 17, 17) |
380 __gen_field(values
->ReturnDataControl
, 16, 16) |
381 __gen_field(values
->ATOMICOPCODE
, 8, 15) |
382 __gen_field(values
->DwordLength
, 0, 7) |
389 __gen_combine_address(data
, &dw
[1], values
->MemoryAddress
, dw1
);
395 __gen_field(values
->Operand1DataDword0
, 0, 31) |
399 __gen_field(values
->Operand2DataDword0
, 0, 31) |
403 __gen_field(values
->Operand1DataDword1
, 0, 31) |
407 __gen_field(values
->Operand2DataDword1
, 0, 31) |
411 __gen_field(values
->Operand1DataDword2
, 0, 31) |
415 __gen_field(values
->Operand2DataDword2
, 0, 31) |
419 __gen_field(values
->Operand1DataDword3
, 0, 31) |
423 __gen_field(values
->Operand2DataDword3
, 0, 31) |
428 #define GEN8_MI_LOAD_REGISTER_REG_length_bias 0x00000002
429 #define GEN8_MI_LOAD_REGISTER_REG_header \
431 .MICommandOpcode = 42, \
434 #define GEN8_MI_LOAD_REGISTER_REG_length 0x00000003
436 struct GEN8_MI_LOAD_REGISTER_REG
{
437 uint32_t CommandType
;
438 uint32_t MICommandOpcode
;
439 uint32_t DwordLength
;
440 uint32_t SourceRegisterAddress
;
441 uint32_t DestinationRegisterAddress
;
445 GEN8_MI_LOAD_REGISTER_REG_pack(__gen_user_data
*data
, void * restrict dst
,
446 const struct GEN8_MI_LOAD_REGISTER_REG
* restrict values
)
448 uint32_t *dw
= (uint32_t * restrict
) dst
;
451 __gen_field(values
->CommandType
, 29, 31) |
452 __gen_field(values
->MICommandOpcode
, 23, 28) |
453 __gen_field(values
->DwordLength
, 0, 7) |
457 __gen_offset(values
->SourceRegisterAddress
, 2, 22) |
461 __gen_offset(values
->DestinationRegisterAddress
, 2, 22) |
466 #define GEN8_MI_SEMAPHORE_SIGNAL_length_bias 0x00000002
467 #define GEN8_MI_SEMAPHORE_SIGNAL_header \
469 .MICommandOpcode = 27, \
472 #define GEN8_MI_SEMAPHORE_SIGNAL_length 0x00000002
474 struct GEN8_MI_SEMAPHORE_SIGNAL
{
475 uint32_t CommandType
;
476 uint32_t MICommandOpcode
;
477 uint32_t PostSyncOperation
;
483 uint32_t TargetEngineSelect
;
484 uint32_t DwordLength
;
485 uint32_t TargetContextID
;
489 GEN8_MI_SEMAPHORE_SIGNAL_pack(__gen_user_data
*data
, void * restrict dst
,
490 const struct GEN8_MI_SEMAPHORE_SIGNAL
* restrict values
)
492 uint32_t *dw
= (uint32_t * restrict
) dst
;
495 __gen_field(values
->CommandType
, 29, 31) |
496 __gen_field(values
->MICommandOpcode
, 23, 28) |
497 __gen_field(values
->PostSyncOperation
, 21, 21) |
498 __gen_field(values
->TargetEngineSelect
, 15, 17) |
499 __gen_field(values
->DwordLength
, 0, 7) |
503 __gen_field(values
->TargetContextID
, 0, 31) |
508 #define GEN8_MI_SEMAPHORE_WAIT_length_bias 0x00000002
509 #define GEN8_MI_SEMAPHORE_WAIT_header \
511 .MICommandOpcode = 28, \
514 #define GEN8_MI_SEMAPHORE_WAIT_length 0x00000004
516 struct GEN8_MI_SEMAPHORE_WAIT
{
517 uint32_t CommandType
;
518 uint32_t MICommandOpcode
;
519 #define PerProcessGraphicsAddress 0
520 #define GlobalGraphicsAddress 1
522 #define PollingMode 1
525 #define SAD_GREATER_THAN_SDD 0
526 #define SAD_GREATER_THAN_OR_EQUAL_SDD 1
527 #define SAD_LESS_THAN_SDD 2
528 #define SAD_LESS_THAN_OR_EQUAL_SDD 3
529 #define SAD_EQUAL_SDD 4
530 #define SAD_NOT_EQUAL_SDD 5
531 uint32_t CompareOperation
;
532 uint32_t DwordLength
;
533 uint32_t SemaphoreDataDword
;
534 __gen_address_type SemaphoreAddress
;
538 GEN8_MI_SEMAPHORE_WAIT_pack(__gen_user_data
*data
, void * restrict dst
,
539 const struct GEN8_MI_SEMAPHORE_WAIT
* restrict values
)
541 uint32_t *dw
= (uint32_t * restrict
) dst
;
544 __gen_field(values
->CommandType
, 29, 31) |
545 __gen_field(values
->MICommandOpcode
, 23, 28) |
546 __gen_field(values
->MemoryType
, 22, 22) |
547 __gen_field(values
->WaitMode
, 15, 15) |
548 __gen_field(values
->CompareOperation
, 12, 14) |
549 __gen_field(values
->DwordLength
, 0, 7) |
553 __gen_field(values
->SemaphoreDataDword
, 0, 31) |
560 __gen_combine_address(data
, &dw
[2], values
->SemaphoreAddress
, dw2
);
567 #define GEN8_MI_STORE_REGISTER_MEM_length_bias 0x00000002
568 #define GEN8_MI_STORE_REGISTER_MEM_header \
570 .MICommandOpcode = 36, \
573 #define GEN8_MI_STORE_REGISTER_MEM_length 0x00000004
575 struct GEN8_MI_STORE_REGISTER_MEM
{
576 uint32_t CommandType
;
577 uint32_t MICommandOpcode
;
579 uint32_t PredicateEnable
;
580 uint32_t DwordLength
;
581 uint32_t RegisterAddress
;
582 __gen_address_type MemoryAddress
;
586 GEN8_MI_STORE_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
587 const struct GEN8_MI_STORE_REGISTER_MEM
* restrict values
)
589 uint32_t *dw
= (uint32_t * restrict
) dst
;
592 __gen_field(values
->CommandType
, 29, 31) |
593 __gen_field(values
->MICommandOpcode
, 23, 28) |
594 __gen_field(values
->UseGlobalGTT
, 22, 22) |
595 __gen_field(values
->PredicateEnable
, 21, 21) |
596 __gen_field(values
->DwordLength
, 0, 7) |
600 __gen_offset(values
->RegisterAddress
, 2, 22) |
607 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
614 #define GEN8_PIPELINE_SELECT_length_bias 0x00000001
615 #define GEN8_PIPELINE_SELECT_header \
617 .CommandSubType = 1, \
618 ._3DCommandOpcode = 1, \
619 ._3DCommandSubOpcode = 4
621 #define GEN8_PIPELINE_SELECT_length 0x00000001
623 struct GEN8_PIPELINE_SELECT
{
624 uint32_t CommandType
;
625 uint32_t CommandSubType
;
626 uint32_t _3DCommandOpcode
;
627 uint32_t _3DCommandSubOpcode
;
631 uint32_t PipelineSelection
;
635 GEN8_PIPELINE_SELECT_pack(__gen_user_data
*data
, void * restrict dst
,
636 const struct GEN8_PIPELINE_SELECT
* restrict values
)
638 uint32_t *dw
= (uint32_t * restrict
) dst
;
641 __gen_field(values
->CommandType
, 29, 31) |
642 __gen_field(values
->CommandSubType
, 27, 28) |
643 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
644 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
645 __gen_field(values
->PipelineSelection
, 0, 1) |
650 #define GEN8_STATE_BASE_ADDRESS_length_bias 0x00000002
651 #define GEN8_STATE_BASE_ADDRESS_header \
653 .CommandSubType = 0, \
654 ._3DCommandOpcode = 1, \
655 ._3DCommandSubOpcode = 1, \
658 #define GEN8_STATE_BASE_ADDRESS_length 0x00000010
660 #define GEN8_MEMORY_OBJECT_CONTROL_STATE_length 0x00000001
662 struct GEN8_MEMORY_OBJECT_CONTROL_STATE
{
663 #define UCwithFenceifcoherentcycle 0
664 #define UCUncacheable 1
667 uint32_t MemoryTypeLLCeLLCCacheabilityControl
;
668 #define eLLCOnlywheneDRAMispresentelsegetsallocatedinLLC 0
670 #define LLCeLLCAllowed 2
671 #define L3DefertoPATforLLCeLLCselection 3
672 uint32_t TargetCache
;
673 uint32_t AgeforQUADLRU
;
677 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
678 const struct GEN8_MEMORY_OBJECT_CONTROL_STATE
* restrict values
)
680 uint32_t *dw
= (uint32_t * restrict
) dst
;
683 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControl
, 5, 6) |
684 __gen_field(values
->TargetCache
, 3, 4) |
685 __gen_field(values
->AgeforQUADLRU
, 0, 1) |
690 struct GEN8_STATE_BASE_ADDRESS
{
691 uint32_t CommandType
;
692 uint32_t CommandSubType
;
693 uint32_t _3DCommandOpcode
;
694 uint32_t _3DCommandSubOpcode
;
695 uint32_t DwordLength
;
696 __gen_address_type GeneralStateBaseAddress
;
697 struct GEN8_MEMORY_OBJECT_CONTROL_STATE GeneralStateMemoryObjectControlState
;
698 bool GeneralStateBaseAddressModifyEnable
;
699 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StatelessDataPortAccessMemoryObjectControlState
;
700 __gen_address_type SurfaceStateBaseAddress
;
701 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceStateMemoryObjectControlState
;
702 bool SurfaceStateBaseAddressModifyEnable
;
703 __gen_address_type DynamicStateBaseAddress
;
704 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DynamicStateMemoryObjectControlState
;
705 bool DynamicStateBaseAddressModifyEnable
;
706 __gen_address_type IndirectObjectBaseAddress
;
707 struct GEN8_MEMORY_OBJECT_CONTROL_STATE IndirectObjectMemoryObjectControlState
;
708 bool IndirectObjectBaseAddressModifyEnable
;
709 __gen_address_type InstructionBaseAddress
;
710 struct GEN8_MEMORY_OBJECT_CONTROL_STATE InstructionMemoryObjectControlState
;
711 bool InstructionBaseAddressModifyEnable
;
712 uint32_t GeneralStateBufferSize
;
713 bool GeneralStateBufferSizeModifyEnable
;
714 uint32_t DynamicStateBufferSize
;
715 bool DynamicStateBufferSizeModifyEnable
;
716 uint32_t IndirectObjectBufferSize
;
717 bool IndirectObjectBufferSizeModifyEnable
;
718 uint32_t InstructionBufferSize
;
719 bool InstructionBuffersizeModifyEnable
;
723 GEN8_STATE_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
724 const struct GEN8_STATE_BASE_ADDRESS
* restrict values
)
726 uint32_t *dw
= (uint32_t * restrict
) dst
;
729 __gen_field(values
->CommandType
, 29, 31) |
730 __gen_field(values
->CommandSubType
, 27, 28) |
731 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
732 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
733 __gen_field(values
->DwordLength
, 0, 7) |
736 uint32_t dw_GeneralStateMemoryObjectControlState
;
737 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_GeneralStateMemoryObjectControlState
, &values
->GeneralStateMemoryObjectControlState
);
739 __gen_field(dw_GeneralStateMemoryObjectControlState
, 4, 10) |
740 __gen_field(values
->GeneralStateBaseAddressModifyEnable
, 0, 0) |
744 __gen_combine_address(data
, &dw
[1], values
->GeneralStateBaseAddress
, dw1
);
749 uint32_t dw_StatelessDataPortAccessMemoryObjectControlState
;
750 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StatelessDataPortAccessMemoryObjectControlState
, &values
->StatelessDataPortAccessMemoryObjectControlState
);
752 __gen_field(dw_StatelessDataPortAccessMemoryObjectControlState
, 16, 22) |
755 uint32_t dw_SurfaceStateMemoryObjectControlState
;
756 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceStateMemoryObjectControlState
, &values
->SurfaceStateMemoryObjectControlState
);
758 __gen_field(dw_SurfaceStateMemoryObjectControlState
, 4, 10) |
759 __gen_field(values
->SurfaceStateBaseAddressModifyEnable
, 0, 0) |
763 __gen_combine_address(data
, &dw
[4], values
->SurfaceStateBaseAddress
, dw4
);
768 uint32_t dw_DynamicStateMemoryObjectControlState
;
769 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DynamicStateMemoryObjectControlState
, &values
->DynamicStateMemoryObjectControlState
);
771 __gen_field(dw_DynamicStateMemoryObjectControlState
, 4, 10) |
772 __gen_field(values
->DynamicStateBaseAddressModifyEnable
, 0, 0) |
776 __gen_combine_address(data
, &dw
[6], values
->DynamicStateBaseAddress
, dw6
);
781 uint32_t dw_IndirectObjectMemoryObjectControlState
;
782 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_IndirectObjectMemoryObjectControlState
, &values
->IndirectObjectMemoryObjectControlState
);
784 __gen_field(dw_IndirectObjectMemoryObjectControlState
, 4, 10) |
785 __gen_field(values
->IndirectObjectBaseAddressModifyEnable
, 0, 0) |
789 __gen_combine_address(data
, &dw
[8], values
->IndirectObjectBaseAddress
, dw8
);
794 uint32_t dw_InstructionMemoryObjectControlState
;
795 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_InstructionMemoryObjectControlState
, &values
->InstructionMemoryObjectControlState
);
797 __gen_field(dw_InstructionMemoryObjectControlState
, 4, 10) |
798 __gen_field(values
->InstructionBaseAddressModifyEnable
, 0, 0) |
802 __gen_combine_address(data
, &dw
[10], values
->InstructionBaseAddress
, dw10
);
808 __gen_field(values
->GeneralStateBufferSize
, 12, 31) |
809 __gen_field(values
->GeneralStateBufferSizeModifyEnable
, 0, 0) |
813 __gen_field(values
->DynamicStateBufferSize
, 12, 31) |
814 __gen_field(values
->DynamicStateBufferSizeModifyEnable
, 0, 0) |
818 __gen_field(values
->IndirectObjectBufferSize
, 12, 31) |
819 __gen_field(values
->IndirectObjectBufferSizeModifyEnable
, 0, 0) |
823 __gen_field(values
->InstructionBufferSize
, 12, 31) |
824 __gen_field(values
->InstructionBuffersizeModifyEnable
, 0, 0) |
829 #define GEN8_STATE_PREFETCH_length_bias 0x00000002
830 #define GEN8_STATE_PREFETCH_header \
832 .CommandSubType = 0, \
833 ._3DCommandOpcode = 0, \
834 ._3DCommandSubOpcode = 3, \
837 #define GEN8_STATE_PREFETCH_length 0x00000002
839 struct GEN8_STATE_PREFETCH
{
840 uint32_t CommandType
;
841 uint32_t CommandSubType
;
842 uint32_t _3DCommandOpcode
;
843 uint32_t _3DCommandSubOpcode
;
844 uint32_t DwordLength
;
845 __gen_address_type PrefetchPointer
;
846 uint32_t PrefetchCount
;
850 GEN8_STATE_PREFETCH_pack(__gen_user_data
*data
, void * restrict dst
,
851 const struct GEN8_STATE_PREFETCH
* restrict values
)
853 uint32_t *dw
= (uint32_t * restrict
) dst
;
856 __gen_field(values
->CommandType
, 29, 31) |
857 __gen_field(values
->CommandSubType
, 27, 28) |
858 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
859 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
860 __gen_field(values
->DwordLength
, 0, 7) |
864 __gen_field(values
->PrefetchCount
, 0, 2) |
868 __gen_combine_address(data
, &dw
[1], values
->PrefetchPointer
, dw1
);
872 #define GEN8_STATE_SIP_length_bias 0x00000002
873 #define GEN8_STATE_SIP_header \
875 .CommandSubType = 0, \
876 ._3DCommandOpcode = 1, \
877 ._3DCommandSubOpcode = 2, \
880 #define GEN8_STATE_SIP_length 0x00000003
882 struct GEN8_STATE_SIP
{
883 uint32_t CommandType
;
884 uint32_t CommandSubType
;
885 uint32_t _3DCommandOpcode
;
886 uint32_t _3DCommandSubOpcode
;
887 uint32_t DwordLength
;
888 uint64_t SystemInstructionPointer
;
892 GEN8_STATE_SIP_pack(__gen_user_data
*data
, void * restrict dst
,
893 const struct GEN8_STATE_SIP
* restrict values
)
895 uint32_t *dw
= (uint32_t * restrict
) dst
;
898 __gen_field(values
->CommandType
, 29, 31) |
899 __gen_field(values
->CommandSubType
, 27, 28) |
900 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
901 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
902 __gen_field(values
->DwordLength
, 0, 7) |
906 __gen_offset(values
->SystemInstructionPointer
, 4, 63) |
914 #define GEN8_SWTESS_BASE_ADDRESS_length_bias 0x00000002
915 #define GEN8_SWTESS_BASE_ADDRESS_header \
917 .CommandSubType = 0, \
918 ._3DCommandOpcode = 1, \
919 ._3DCommandSubOpcode = 3, \
922 #define GEN8_SWTESS_BASE_ADDRESS_length 0x00000002
924 struct GEN8_SWTESS_BASE_ADDRESS
{
925 uint32_t CommandType
;
926 uint32_t CommandSubType
;
927 uint32_t _3DCommandOpcode
;
928 uint32_t _3DCommandSubOpcode
;
929 uint32_t DwordLength
;
930 __gen_address_type SWTessellationBaseAddress
;
931 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SWTessellationMemoryObjectControlState
;
935 GEN8_SWTESS_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
936 const struct GEN8_SWTESS_BASE_ADDRESS
* restrict values
)
938 uint32_t *dw
= (uint32_t * restrict
) dst
;
941 __gen_field(values
->CommandType
, 29, 31) |
942 __gen_field(values
->CommandSubType
, 27, 28) |
943 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
944 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
945 __gen_field(values
->DwordLength
, 0, 7) |
948 uint32_t dw_SWTessellationMemoryObjectControlState
;
949 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SWTessellationMemoryObjectControlState
, &values
->SWTessellationMemoryObjectControlState
);
951 __gen_field(dw_SWTessellationMemoryObjectControlState
, 8, 11) |
955 __gen_combine_address(data
, &dw
[1], values
->SWTessellationBaseAddress
, dw1
);
962 #define GEN8_3DPRIMITIVE_length_bias 0x00000002
963 #define GEN8_3DPRIMITIVE_header \
965 .CommandSubType = 3, \
966 ._3DCommandOpcode = 3, \
967 ._3DCommandSubOpcode = 0, \
970 #define GEN8_3DPRIMITIVE_length 0x00000007
972 struct GEN8_3DPRIMITIVE
{
973 uint32_t CommandType
;
974 uint32_t CommandSubType
;
975 uint32_t _3DCommandOpcode
;
976 uint32_t _3DCommandSubOpcode
;
977 bool IndirectParameterEnable
;
978 uint32_t UAVCoherencyRequired
;
979 bool PredicateEnable
;
980 uint32_t DwordLength
;
981 bool EndOffsetEnable
;
984 uint32_t VertexAccessType
;
985 uint32_t PrimitiveTopologyType
;
986 uint32_t VertexCountPerInstance
;
987 uint32_t StartVertexLocation
;
988 uint32_t InstanceCount
;
989 uint32_t StartInstanceLocation
;
990 uint32_t BaseVertexLocation
;
994 GEN8_3DPRIMITIVE_pack(__gen_user_data
*data
, void * restrict dst
,
995 const struct GEN8_3DPRIMITIVE
* restrict values
)
997 uint32_t *dw
= (uint32_t * restrict
) dst
;
1000 __gen_field(values
->CommandType
, 29, 31) |
1001 __gen_field(values
->CommandSubType
, 27, 28) |
1002 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1003 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1004 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
1005 __gen_field(values
->UAVCoherencyRequired
, 9, 9) |
1006 __gen_field(values
->PredicateEnable
, 8, 8) |
1007 __gen_field(values
->DwordLength
, 0, 7) |
1011 __gen_field(values
->EndOffsetEnable
, 9, 9) |
1012 __gen_field(values
->VertexAccessType
, 8, 8) |
1013 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
1017 __gen_field(values
->VertexCountPerInstance
, 0, 31) |
1021 __gen_field(values
->StartVertexLocation
, 0, 31) |
1025 __gen_field(values
->InstanceCount
, 0, 31) |
1029 __gen_field(values
->StartInstanceLocation
, 0, 31) |
1033 __gen_field(values
->BaseVertexLocation
, 0, 31) |
1038 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length_bias 0x00000002
1039 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_header \
1041 .CommandSubType = 3, \
1042 ._3DCommandOpcode = 1, \
1043 ._3DCommandSubOpcode = 10, \
1046 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length 0x00000003
1048 struct GEN8_3DSTATE_AA_LINE_PARAMETERS
{
1049 uint32_t CommandType
;
1050 uint32_t CommandSubType
;
1051 uint32_t _3DCommandOpcode
;
1052 uint32_t _3DCommandSubOpcode
;
1053 uint32_t DwordLength
;
1054 float AAPointCoverageBias
;
1055 float AACoverageBias
;
1056 float AAPointCoverageSlope
;
1057 float AACoverageSlope
;
1058 float AAPointCoverageEndCapBias
;
1059 float AACoverageEndCapBias
;
1060 float AAPointCoverageEndCapSlope
;
1061 float AACoverageEndCapSlope
;
1065 GEN8_3DSTATE_AA_LINE_PARAMETERS_pack(__gen_user_data
*data
, void * restrict dst
,
1066 const struct GEN8_3DSTATE_AA_LINE_PARAMETERS
* restrict values
)
1068 uint32_t *dw
= (uint32_t * restrict
) dst
;
1071 __gen_field(values
->CommandType
, 29, 31) |
1072 __gen_field(values
->CommandSubType
, 27, 28) |
1073 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1074 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1075 __gen_field(values
->DwordLength
, 0, 7) |
1079 __gen_field(values
->AAPointCoverageBias
* (1 << 8), 24, 31) |
1080 __gen_field(values
->AACoverageBias
* (1 << 8), 16, 23) |
1081 __gen_field(values
->AAPointCoverageSlope
* (1 << 8), 8, 15) |
1082 __gen_field(values
->AACoverageSlope
* (1 << 8), 0, 7) |
1086 __gen_field(values
->AAPointCoverageEndCapBias
* (1 << 8), 24, 31) |
1087 __gen_field(values
->AACoverageEndCapBias
* (1 << 8), 16, 23) |
1088 __gen_field(values
->AAPointCoverageEndCapSlope
* (1 << 8), 8, 15) |
1089 __gen_field(values
->AACoverageEndCapSlope
* (1 << 8), 0, 7) |
1094 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias 0x00000002
1095 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_header\
1097 .CommandSubType = 3, \
1098 ._3DCommandOpcode = 0, \
1099 ._3DCommandSubOpcode = 70
1101 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_length 0x00000000
1103 #define GEN8_BINDING_TABLE_EDIT_ENTRY_length 0x00000001
1105 struct GEN8_BINDING_TABLE_EDIT_ENTRY
{
1106 uint32_t BindingTableIndex
;
1107 uint32_t SurfaceStatePointer
;
1111 GEN8_BINDING_TABLE_EDIT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
1112 const struct GEN8_BINDING_TABLE_EDIT_ENTRY
* restrict values
)
1114 uint32_t *dw
= (uint32_t * restrict
) dst
;
1117 __gen_field(values
->BindingTableIndex
, 16, 23) |
1118 __gen_offset(values
->SurfaceStatePointer
, 0, 15) |
1123 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
{
1124 uint32_t CommandType
;
1125 uint32_t CommandSubType
;
1126 uint32_t _3DCommandOpcode
;
1127 uint32_t _3DCommandSubOpcode
;
1128 uint32_t DwordLength
;
1129 uint32_t BindingTableBlockClear
;
1133 uint32_t BindingTableEditTarget
;
1134 /* variable length fields follow */
1138 GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1139 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
* restrict values
)
1141 uint32_t *dw
= (uint32_t * restrict
) dst
;
1144 __gen_field(values
->CommandType
, 29, 31) |
1145 __gen_field(values
->CommandSubType
, 27, 28) |
1146 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1147 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1148 __gen_field(values
->DwordLength
, 0, 8) |
1152 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1153 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1156 /* variable length fields follow */
1159 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias 0x00000002
1160 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_header\
1162 .CommandSubType = 3, \
1163 ._3DCommandOpcode = 0, \
1164 ._3DCommandSubOpcode = 68
1166 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_length 0x00000000
1168 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
{
1169 uint32_t CommandType
;
1170 uint32_t CommandSubType
;
1171 uint32_t _3DCommandOpcode
;
1172 uint32_t _3DCommandSubOpcode
;
1173 uint32_t DwordLength
;
1174 uint32_t BindingTableBlockClear
;
1178 uint32_t BindingTableEditTarget
;
1179 /* variable length fields follow */
1183 GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1184 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
* restrict values
)
1186 uint32_t *dw
= (uint32_t * restrict
) dst
;
1189 __gen_field(values
->CommandType
, 29, 31) |
1190 __gen_field(values
->CommandSubType
, 27, 28) |
1191 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1192 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1193 __gen_field(values
->DwordLength
, 0, 8) |
1197 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1198 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1201 /* variable length fields follow */
1204 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias 0x00000002
1205 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_header\
1207 .CommandSubType = 3, \
1208 ._3DCommandOpcode = 0, \
1209 ._3DCommandSubOpcode = 69
1211 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_length 0x00000000
1213 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
{
1214 uint32_t CommandType
;
1215 uint32_t CommandSubType
;
1216 uint32_t _3DCommandOpcode
;
1217 uint32_t _3DCommandSubOpcode
;
1218 uint32_t DwordLength
;
1219 uint32_t BindingTableBlockClear
;
1223 uint32_t BindingTableEditTarget
;
1224 /* variable length fields follow */
1228 GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1229 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
* restrict values
)
1231 uint32_t *dw
= (uint32_t * restrict
) dst
;
1234 __gen_field(values
->CommandType
, 29, 31) |
1235 __gen_field(values
->CommandSubType
, 27, 28) |
1236 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1237 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1238 __gen_field(values
->DwordLength
, 0, 8) |
1242 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1243 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1246 /* variable length fields follow */
1249 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias 0x00000002
1250 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_header\
1252 .CommandSubType = 3, \
1253 ._3DCommandOpcode = 0, \
1254 ._3DCommandSubOpcode = 71
1256 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_length 0x00000000
1258 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
{
1259 uint32_t CommandType
;
1260 uint32_t CommandSubType
;
1261 uint32_t _3DCommandOpcode
;
1262 uint32_t _3DCommandSubOpcode
;
1263 uint32_t DwordLength
;
1264 uint32_t BindingTableBlockClear
;
1268 uint32_t BindingTableEditTarget
;
1269 /* variable length fields follow */
1273 GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1274 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
* restrict values
)
1276 uint32_t *dw
= (uint32_t * restrict
) dst
;
1279 __gen_field(values
->CommandType
, 29, 31) |
1280 __gen_field(values
->CommandSubType
, 27, 28) |
1281 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1282 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1283 __gen_field(values
->DwordLength
, 0, 8) |
1287 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1288 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1291 /* variable length fields follow */
1294 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias 0x00000002
1295 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_header\
1297 .CommandSubType = 3, \
1298 ._3DCommandOpcode = 0, \
1299 ._3DCommandSubOpcode = 67
1301 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_length 0x00000000
1303 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
{
1304 uint32_t CommandType
;
1305 uint32_t CommandSubType
;
1306 uint32_t _3DCommandOpcode
;
1307 uint32_t _3DCommandSubOpcode
;
1308 uint32_t DwordLength
;
1309 uint32_t BindingTableBlockClear
;
1313 uint32_t BindingTableEditTarget
;
1314 /* variable length fields follow */
1318 GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1319 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
* restrict values
)
1321 uint32_t *dw
= (uint32_t * restrict
) dst
;
1324 __gen_field(values
->CommandType
, 29, 31) |
1325 __gen_field(values
->CommandSubType
, 27, 28) |
1326 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1327 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1328 __gen_field(values
->DwordLength
, 0, 8) |
1332 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1333 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1336 /* variable length fields follow */
1339 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias 0x00000002
1340 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_header\
1342 .CommandSubType = 3, \
1343 ._3DCommandOpcode = 0, \
1344 ._3DCommandSubOpcode = 40, \
1347 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length 0x00000002
1349 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
{
1350 uint32_t CommandType
;
1351 uint32_t CommandSubType
;
1352 uint32_t _3DCommandOpcode
;
1353 uint32_t _3DCommandSubOpcode
;
1354 uint32_t DwordLength
;
1355 uint32_t PointertoDSBindingTable
;
1359 GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1360 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
* restrict values
)
1362 uint32_t *dw
= (uint32_t * restrict
) dst
;
1365 __gen_field(values
->CommandType
, 29, 31) |
1366 __gen_field(values
->CommandSubType
, 27, 28) |
1367 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1368 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1369 __gen_field(values
->DwordLength
, 0, 7) |
1373 __gen_offset(values
->PointertoDSBindingTable
, 5, 15) |
1378 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias 0x00000002
1379 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_header\
1381 .CommandSubType = 3, \
1382 ._3DCommandOpcode = 0, \
1383 ._3DCommandSubOpcode = 41, \
1386 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length 0x00000002
1388 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
{
1389 uint32_t CommandType
;
1390 uint32_t CommandSubType
;
1391 uint32_t _3DCommandOpcode
;
1392 uint32_t _3DCommandSubOpcode
;
1393 uint32_t DwordLength
;
1394 uint32_t PointertoGSBindingTable
;
1398 GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1399 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
* restrict values
)
1401 uint32_t *dw
= (uint32_t * restrict
) dst
;
1404 __gen_field(values
->CommandType
, 29, 31) |
1405 __gen_field(values
->CommandSubType
, 27, 28) |
1406 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1407 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1408 __gen_field(values
->DwordLength
, 0, 7) |
1412 __gen_offset(values
->PointertoGSBindingTable
, 5, 15) |
1417 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias 0x00000002
1418 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_header\
1420 .CommandSubType = 3, \
1421 ._3DCommandOpcode = 0, \
1422 ._3DCommandSubOpcode = 39, \
1425 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length 0x00000002
1427 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
{
1428 uint32_t CommandType
;
1429 uint32_t CommandSubType
;
1430 uint32_t _3DCommandOpcode
;
1431 uint32_t _3DCommandSubOpcode
;
1432 uint32_t DwordLength
;
1433 uint32_t PointertoHSBindingTable
;
1437 GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1438 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
* restrict values
)
1440 uint32_t *dw
= (uint32_t * restrict
) dst
;
1443 __gen_field(values
->CommandType
, 29, 31) |
1444 __gen_field(values
->CommandSubType
, 27, 28) |
1445 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1446 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1447 __gen_field(values
->DwordLength
, 0, 7) |
1451 __gen_offset(values
->PointertoHSBindingTable
, 5, 15) |
1456 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias 0x00000002
1457 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_header\
1459 .CommandSubType = 3, \
1460 ._3DCommandOpcode = 0, \
1461 ._3DCommandSubOpcode = 42, \
1464 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length 0x00000002
1466 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
{
1467 uint32_t CommandType
;
1468 uint32_t CommandSubType
;
1469 uint32_t _3DCommandOpcode
;
1470 uint32_t _3DCommandSubOpcode
;
1471 uint32_t DwordLength
;
1472 uint32_t PointertoPSBindingTable
;
1476 GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1477 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
* restrict values
)
1479 uint32_t *dw
= (uint32_t * restrict
) dst
;
1482 __gen_field(values
->CommandType
, 29, 31) |
1483 __gen_field(values
->CommandSubType
, 27, 28) |
1484 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1485 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1486 __gen_field(values
->DwordLength
, 0, 7) |
1490 __gen_offset(values
->PointertoPSBindingTable
, 5, 15) |
1495 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias 0x00000002
1496 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_header\
1498 .CommandSubType = 3, \
1499 ._3DCommandOpcode = 0, \
1500 ._3DCommandSubOpcode = 38, \
1503 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length 0x00000002
1505 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
{
1506 uint32_t CommandType
;
1507 uint32_t CommandSubType
;
1508 uint32_t _3DCommandOpcode
;
1509 uint32_t _3DCommandSubOpcode
;
1510 uint32_t DwordLength
;
1511 uint32_t PointertoVSBindingTable
;
1515 GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1516 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
* restrict values
)
1518 uint32_t *dw
= (uint32_t * restrict
) dst
;
1521 __gen_field(values
->CommandType
, 29, 31) |
1522 __gen_field(values
->CommandSubType
, 27, 28) |
1523 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1524 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1525 __gen_field(values
->DwordLength
, 0, 7) |
1529 __gen_offset(values
->PointertoVSBindingTable
, 5, 15) |
1534 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias 0x00000002
1535 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\
1537 .CommandSubType = 3, \
1538 ._3DCommandOpcode = 1, \
1539 ._3DCommandSubOpcode = 25, \
1542 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length 0x00000004
1544 struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
{
1545 uint32_t CommandType
;
1546 uint32_t CommandSubType
;
1547 uint32_t _3DCommandOpcode
;
1548 uint32_t _3DCommandSubOpcode
;
1549 uint32_t DwordLength
;
1550 __gen_address_type BindingTablePoolBaseAddress
;
1551 uint32_t BindingTablePoolEnable
;
1552 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceObjectControlState
;
1553 #define NoValidData 0
1554 uint32_t BindingTablePoolBufferSize
;
1558 GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
1559 const struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
* restrict values
)
1561 uint32_t *dw
= (uint32_t * restrict
) dst
;
1564 __gen_field(values
->CommandType
, 29, 31) |
1565 __gen_field(values
->CommandSubType
, 27, 28) |
1566 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1567 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1568 __gen_field(values
->DwordLength
, 0, 7) |
1571 uint32_t dw_SurfaceObjectControlState
;
1572 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceObjectControlState
, &values
->SurfaceObjectControlState
);
1574 __gen_field(values
->BindingTablePoolEnable
, 11, 11) |
1575 __gen_field(dw_SurfaceObjectControlState
, 0, 6) |
1579 __gen_combine_address(data
, &dw
[1], values
->BindingTablePoolBaseAddress
, dw1
);
1585 __gen_field(values
->BindingTablePoolBufferSize
, 12, 31) |
1590 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length_bias 0x00000002
1591 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_header\
1593 .CommandSubType = 3, \
1594 ._3DCommandOpcode = 0, \
1595 ._3DCommandSubOpcode = 36, \
1598 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length 0x00000002
1600 struct GEN8_3DSTATE_BLEND_STATE_POINTERS
{
1601 uint32_t CommandType
;
1602 uint32_t CommandSubType
;
1603 uint32_t _3DCommandOpcode
;
1604 uint32_t _3DCommandSubOpcode
;
1605 uint32_t DwordLength
;
1606 uint32_t BlendStatePointer
;
1607 bool BlendStatePointerValid
;
1611 GEN8_3DSTATE_BLEND_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1612 const struct GEN8_3DSTATE_BLEND_STATE_POINTERS
* restrict values
)
1614 uint32_t *dw
= (uint32_t * restrict
) dst
;
1617 __gen_field(values
->CommandType
, 29, 31) |
1618 __gen_field(values
->CommandSubType
, 27, 28) |
1619 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1620 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1621 __gen_field(values
->DwordLength
, 0, 7) |
1625 __gen_offset(values
->BlendStatePointer
, 6, 31) |
1626 __gen_field(values
->BlendStatePointerValid
, 0, 0) |
1631 #define GEN8_3DSTATE_CC_STATE_POINTERS_length_bias 0x00000002
1632 #define GEN8_3DSTATE_CC_STATE_POINTERS_header \
1634 .CommandSubType = 3, \
1635 ._3DCommandOpcode = 0, \
1636 ._3DCommandSubOpcode = 14, \
1639 #define GEN8_3DSTATE_CC_STATE_POINTERS_length 0x00000002
1641 struct GEN8_3DSTATE_CC_STATE_POINTERS
{
1642 uint32_t CommandType
;
1643 uint32_t CommandSubType
;
1644 uint32_t _3DCommandOpcode
;
1645 uint32_t _3DCommandSubOpcode
;
1646 uint32_t DwordLength
;
1647 uint32_t ColorCalcStatePointer
;
1648 bool ColorCalcStatePointerValid
;
1652 GEN8_3DSTATE_CC_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1653 const struct GEN8_3DSTATE_CC_STATE_POINTERS
* restrict values
)
1655 uint32_t *dw
= (uint32_t * restrict
) dst
;
1658 __gen_field(values
->CommandType
, 29, 31) |
1659 __gen_field(values
->CommandSubType
, 27, 28) |
1660 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1661 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1662 __gen_field(values
->DwordLength
, 0, 7) |
1666 __gen_offset(values
->ColorCalcStatePointer
, 6, 31) |
1667 __gen_field(values
->ColorCalcStatePointerValid
, 0, 0) |
1672 #define GEN8_3DSTATE_CHROMA_KEY_length_bias 0x00000002
1673 #define GEN8_3DSTATE_CHROMA_KEY_header \
1675 .CommandSubType = 3, \
1676 ._3DCommandOpcode = 1, \
1677 ._3DCommandSubOpcode = 4, \
1680 #define GEN8_3DSTATE_CHROMA_KEY_length 0x00000004
1682 struct GEN8_3DSTATE_CHROMA_KEY
{
1683 uint32_t CommandType
;
1684 uint32_t CommandSubType
;
1685 uint32_t _3DCommandOpcode
;
1686 uint32_t _3DCommandSubOpcode
;
1687 uint32_t DwordLength
;
1688 uint32_t ChromaKeyTableIndex
;
1689 uint32_t ChromaKeyLowValue
;
1690 uint32_t ChromaKeyHighValue
;
1694 GEN8_3DSTATE_CHROMA_KEY_pack(__gen_user_data
*data
, void * restrict dst
,
1695 const struct GEN8_3DSTATE_CHROMA_KEY
* restrict values
)
1697 uint32_t *dw
= (uint32_t * restrict
) dst
;
1700 __gen_field(values
->CommandType
, 29, 31) |
1701 __gen_field(values
->CommandSubType
, 27, 28) |
1702 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1703 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1704 __gen_field(values
->DwordLength
, 0, 7) |
1708 __gen_field(values
->ChromaKeyTableIndex
, 30, 31) |
1712 __gen_field(values
->ChromaKeyLowValue
, 0, 31) |
1716 __gen_field(values
->ChromaKeyHighValue
, 0, 31) |
1721 #define GEN8_3DSTATE_CLEAR_PARAMS_length_bias 0x00000002
1722 #define GEN8_3DSTATE_CLEAR_PARAMS_header \
1724 .CommandSubType = 3, \
1725 ._3DCommandOpcode = 0, \
1726 ._3DCommandSubOpcode = 4, \
1729 #define GEN8_3DSTATE_CLEAR_PARAMS_length 0x00000003
1731 struct GEN8_3DSTATE_CLEAR_PARAMS
{
1732 uint32_t CommandType
;
1733 uint32_t CommandSubType
;
1734 uint32_t _3DCommandOpcode
;
1735 uint32_t _3DCommandSubOpcode
;
1736 uint32_t DwordLength
;
1737 float DepthClearValue
;
1738 bool DepthClearValueValid
;
1742 GEN8_3DSTATE_CLEAR_PARAMS_pack(__gen_user_data
*data
, void * restrict dst
,
1743 const struct GEN8_3DSTATE_CLEAR_PARAMS
* restrict values
)
1745 uint32_t *dw
= (uint32_t * restrict
) dst
;
1748 __gen_field(values
->CommandType
, 29, 31) |
1749 __gen_field(values
->CommandSubType
, 27, 28) |
1750 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1751 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1752 __gen_field(values
->DwordLength
, 0, 7) |
1756 __gen_float(values
->DepthClearValue
) |
1760 __gen_field(values
->DepthClearValueValid
, 0, 0) |
1765 #define GEN8_3DSTATE_CLIP_length_bias 0x00000002
1766 #define GEN8_3DSTATE_CLIP_header \
1768 .CommandSubType = 3, \
1769 ._3DCommandOpcode = 0, \
1770 ._3DCommandSubOpcode = 18, \
1773 #define GEN8_3DSTATE_CLIP_length 0x00000004
1775 struct GEN8_3DSTATE_CLIP
{
1776 uint32_t CommandType
;
1777 uint32_t CommandSubType
;
1778 uint32_t _3DCommandOpcode
;
1779 uint32_t _3DCommandSubOpcode
;
1780 uint32_t DwordLength
;
1783 bool ForceUserClipDistanceCullTestEnableBitmask
;
1786 uint32_t VertexSubPixelPrecisionSelect
;
1787 bool EarlyCullEnable
;
1790 bool ForceUserClipDistanceClipTestEnableBitmask
;
1794 bool ClipperStatisticsEnable
;
1795 uint32_t UserClipDistanceCullTestEnableBitmask
;
1799 bool ViewportXYClipTestEnable
;
1800 bool GuardbandClipTestEnable
;
1801 uint32_t UserClipDistanceClipTestEnableBitmask
;
1803 #define REJECT_ALL 3
1804 #define ACCEPT_ALL 4
1806 bool PerspectiveDivideDisable
;
1807 bool NonPerspectiveBarycentricEnable
;
1808 uint32_t TriangleStripListProvokingVertexSelect
;
1809 uint32_t LineStripListProvokingVertexSelect
;
1810 uint32_t TriangleFanProvokingVertexSelect
;
1811 float MinimumPointWidth
;
1812 float MaximumPointWidth
;
1813 bool ForceZeroRTAIndexEnable
;
1814 uint32_t MaximumVPIndex
;
1818 GEN8_3DSTATE_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
1819 const struct GEN8_3DSTATE_CLIP
* restrict values
)
1821 uint32_t *dw
= (uint32_t * restrict
) dst
;
1824 __gen_field(values
->CommandType
, 29, 31) |
1825 __gen_field(values
->CommandSubType
, 27, 28) |
1826 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1827 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1828 __gen_field(values
->DwordLength
, 0, 7) |
1832 __gen_field(values
->ForceUserClipDistanceCullTestEnableBitmask
, 20, 20) |
1833 __gen_field(values
->VertexSubPixelPrecisionSelect
, 19, 19) |
1834 __gen_field(values
->EarlyCullEnable
, 18, 18) |
1835 __gen_field(values
->ForceUserClipDistanceClipTestEnableBitmask
, 17, 17) |
1836 __gen_field(values
->ForceClipMode
, 16, 16) |
1837 __gen_field(values
->ClipperStatisticsEnable
, 10, 10) |
1838 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
1842 __gen_field(values
->ClipEnable
, 31, 31) |
1843 __gen_field(values
->APIMode
, 30, 30) |
1844 __gen_field(values
->ViewportXYClipTestEnable
, 28, 28) |
1845 __gen_field(values
->GuardbandClipTestEnable
, 26, 26) |
1846 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 16, 23) |
1847 __gen_field(values
->ClipMode
, 13, 15) |
1848 __gen_field(values
->PerspectiveDivideDisable
, 9, 9) |
1849 __gen_field(values
->NonPerspectiveBarycentricEnable
, 8, 8) |
1850 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 4, 5) |
1851 __gen_field(values
->LineStripListProvokingVertexSelect
, 2, 3) |
1852 __gen_field(values
->TriangleFanProvokingVertexSelect
, 0, 1) |
1856 __gen_field(values
->MinimumPointWidth
* (1 << 3), 17, 27) |
1857 __gen_field(values
->MaximumPointWidth
* (1 << 3), 6, 16) |
1858 __gen_field(values
->ForceZeroRTAIndexEnable
, 5, 5) |
1859 __gen_field(values
->MaximumVPIndex
, 0, 3) |
1864 #define GEN8_3DSTATE_CONSTANT_DS_length_bias 0x00000002
1865 #define GEN8_3DSTATE_CONSTANT_DS_header \
1867 .CommandSubType = 3, \
1868 ._3DCommandOpcode = 0, \
1869 ._3DCommandSubOpcode = 26, \
1872 #define GEN8_3DSTATE_CONSTANT_DS_length 0x0000000b
1874 #define GEN8_3DSTATE_CONSTANT_BODY_length 0x0000000a
1876 struct GEN8_3DSTATE_CONSTANT_BODY
{
1877 uint32_t ConstantBuffer1ReadLength
;
1878 uint32_t ConstantBuffer0ReadLength
;
1879 uint32_t ConstantBuffer3ReadLength
;
1880 uint32_t ConstantBuffer2ReadLength
;
1881 __gen_address_type PointerToConstantBuffer0
;
1882 __gen_address_type PointerToConstantBuffer1
;
1883 __gen_address_type PointerToConstantBuffer2
;
1884 __gen_address_type PointerToConstantBuffer3
;
1888 GEN8_3DSTATE_CONSTANT_BODY_pack(__gen_user_data
*data
, void * restrict dst
,
1889 const struct GEN8_3DSTATE_CONSTANT_BODY
* restrict values
)
1891 uint32_t *dw
= (uint32_t * restrict
) dst
;
1894 __gen_field(values
->ConstantBuffer1ReadLength
, 16, 31) |
1895 __gen_field(values
->ConstantBuffer0ReadLength
, 0, 15) |
1899 __gen_field(values
->ConstantBuffer3ReadLength
, 16, 31) |
1900 __gen_field(values
->ConstantBuffer2ReadLength
, 0, 15) |
1907 __gen_combine_address(data
, &dw
[2], values
->PointerToConstantBuffer0
, dw2
);
1916 __gen_combine_address(data
, &dw
[4], values
->PointerToConstantBuffer1
, dw4
);
1925 __gen_combine_address(data
, &dw
[6], values
->PointerToConstantBuffer2
, dw6
);
1934 __gen_combine_address(data
, &dw
[8], values
->PointerToConstantBuffer3
, dw8
);
1941 struct GEN8_3DSTATE_CONSTANT_DS
{
1942 uint32_t CommandType
;
1943 uint32_t CommandSubType
;
1944 uint32_t _3DCommandOpcode
;
1945 uint32_t _3DCommandSubOpcode
;
1946 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1947 uint32_t DwordLength
;
1948 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1952 GEN8_3DSTATE_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1953 const struct GEN8_3DSTATE_CONSTANT_DS
* restrict values
)
1955 uint32_t *dw
= (uint32_t * restrict
) dst
;
1957 uint32_t dw_ConstantBufferObjectControlState
;
1958 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1960 __gen_field(values
->CommandType
, 29, 31) |
1961 __gen_field(values
->CommandSubType
, 27, 28) |
1962 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1963 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1964 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1965 __gen_field(values
->DwordLength
, 0, 7) |
1968 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1971 #define GEN8_3DSTATE_CONSTANT_GS_length_bias 0x00000002
1972 #define GEN8_3DSTATE_CONSTANT_GS_header \
1974 .CommandSubType = 3, \
1975 ._3DCommandOpcode = 0, \
1976 ._3DCommandSubOpcode = 22, \
1979 #define GEN8_3DSTATE_CONSTANT_GS_length 0x0000000b
1981 struct GEN8_3DSTATE_CONSTANT_GS
{
1982 uint32_t CommandType
;
1983 uint32_t CommandSubType
;
1984 uint32_t _3DCommandOpcode
;
1985 uint32_t _3DCommandSubOpcode
;
1986 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1987 uint32_t DwordLength
;
1988 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1992 GEN8_3DSTATE_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1993 const struct GEN8_3DSTATE_CONSTANT_GS
* restrict values
)
1995 uint32_t *dw
= (uint32_t * restrict
) dst
;
1997 uint32_t dw_ConstantBufferObjectControlState
;
1998 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2000 __gen_field(values
->CommandType
, 29, 31) |
2001 __gen_field(values
->CommandSubType
, 27, 28) |
2002 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2003 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2004 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2005 __gen_field(values
->DwordLength
, 0, 7) |
2008 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2011 #define GEN8_3DSTATE_CONSTANT_HS_length_bias 0x00000002
2012 #define GEN8_3DSTATE_CONSTANT_HS_header \
2014 .CommandSubType = 3, \
2015 ._3DCommandOpcode = 0, \
2016 ._3DCommandSubOpcode = 25, \
2019 #define GEN8_3DSTATE_CONSTANT_HS_length 0x0000000b
2021 struct GEN8_3DSTATE_CONSTANT_HS
{
2022 uint32_t CommandType
;
2023 uint32_t CommandSubType
;
2024 uint32_t _3DCommandOpcode
;
2025 uint32_t _3DCommandSubOpcode
;
2026 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
2027 uint32_t DwordLength
;
2028 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
2032 GEN8_3DSTATE_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2033 const struct GEN8_3DSTATE_CONSTANT_HS
* restrict values
)
2035 uint32_t *dw
= (uint32_t * restrict
) dst
;
2037 uint32_t dw_ConstantBufferObjectControlState
;
2038 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2040 __gen_field(values
->CommandType
, 29, 31) |
2041 __gen_field(values
->CommandSubType
, 27, 28) |
2042 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2043 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2044 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2045 __gen_field(values
->DwordLength
, 0, 7) |
2048 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2051 #define GEN8_3DSTATE_CONSTANT_PS_length_bias 0x00000002
2052 #define GEN8_3DSTATE_CONSTANT_PS_header \
2054 .CommandSubType = 3, \
2055 ._3DCommandOpcode = 0, \
2056 ._3DCommandSubOpcode = 23, \
2059 #define GEN8_3DSTATE_CONSTANT_PS_length 0x0000000b
2061 struct GEN8_3DSTATE_CONSTANT_PS
{
2062 uint32_t CommandType
;
2063 uint32_t CommandSubType
;
2064 uint32_t _3DCommandOpcode
;
2065 uint32_t _3DCommandSubOpcode
;
2066 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
2067 uint32_t DwordLength
;
2068 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
2072 GEN8_3DSTATE_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
2073 const struct GEN8_3DSTATE_CONSTANT_PS
* restrict values
)
2075 uint32_t *dw
= (uint32_t * restrict
) dst
;
2077 uint32_t dw_ConstantBufferObjectControlState
;
2078 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2080 __gen_field(values
->CommandType
, 29, 31) |
2081 __gen_field(values
->CommandSubType
, 27, 28) |
2082 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2083 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2084 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2085 __gen_field(values
->DwordLength
, 0, 7) |
2088 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2091 #define GEN8_3DSTATE_CONSTANT_VS_length_bias 0x00000002
2092 #define GEN8_3DSTATE_CONSTANT_VS_header \
2094 .CommandSubType = 3, \
2095 ._3DCommandOpcode = 0, \
2096 ._3DCommandSubOpcode = 21, \
2099 #define GEN8_3DSTATE_CONSTANT_VS_length 0x0000000b
2101 struct GEN8_3DSTATE_CONSTANT_VS
{
2102 uint32_t CommandType
;
2103 uint32_t CommandSubType
;
2104 uint32_t _3DCommandOpcode
;
2105 uint32_t _3DCommandSubOpcode
;
2106 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
2107 uint32_t DwordLength
;
2108 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
2112 GEN8_3DSTATE_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2113 const struct GEN8_3DSTATE_CONSTANT_VS
* restrict values
)
2115 uint32_t *dw
= (uint32_t * restrict
) dst
;
2117 uint32_t dw_ConstantBufferObjectControlState
;
2118 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2120 __gen_field(values
->CommandType
, 29, 31) |
2121 __gen_field(values
->CommandSubType
, 27, 28) |
2122 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2123 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2124 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2125 __gen_field(values
->DwordLength
, 0, 7) |
2128 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2131 #define GEN8_3DSTATE_DEPTH_BUFFER_length_bias 0x00000002
2132 #define GEN8_3DSTATE_DEPTH_BUFFER_header \
2134 .CommandSubType = 3, \
2135 ._3DCommandOpcode = 0, \
2136 ._3DCommandSubOpcode = 5, \
2139 #define GEN8_3DSTATE_DEPTH_BUFFER_length 0x00000008
2141 struct GEN8_3DSTATE_DEPTH_BUFFER
{
2142 uint32_t CommandType
;
2143 uint32_t CommandSubType
;
2144 uint32_t _3DCommandOpcode
;
2145 uint32_t _3DCommandSubOpcode
;
2146 uint32_t DwordLength
;
2147 #define SURFTYPE_1D 0
2148 #define SURFTYPE_2D 1
2149 #define SURFTYPE_3D 2
2150 #define SURFTYPE_CUBE 3
2151 #define SURFTYPE_NULL 7
2152 uint32_t SurfaceType
;
2153 bool DepthWriteEnable
;
2154 bool StencilWriteEnable
;
2155 bool HierarchicalDepthBufferEnable
;
2157 #define D24_UNORM_X8_UINT 3
2159 uint32_t SurfaceFormat
;
2160 uint32_t SurfacePitch
;
2161 __gen_address_type SurfaceBaseAddress
;
2166 uint32_t MinimumArrayElement
;
2167 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DepthBufferObjectControlState
;
2168 uint32_t RenderTargetViewExtent
;
2169 uint32_t SurfaceQPitch
;
2173 GEN8_3DSTATE_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2174 const struct GEN8_3DSTATE_DEPTH_BUFFER
* restrict values
)
2176 uint32_t *dw
= (uint32_t * restrict
) dst
;
2179 __gen_field(values
->CommandType
, 29, 31) |
2180 __gen_field(values
->CommandSubType
, 27, 28) |
2181 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2182 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2183 __gen_field(values
->DwordLength
, 0, 7) |
2187 __gen_field(values
->SurfaceType
, 29, 31) |
2188 __gen_field(values
->DepthWriteEnable
, 28, 28) |
2189 __gen_field(values
->StencilWriteEnable
, 27, 27) |
2190 __gen_field(values
->HierarchicalDepthBufferEnable
, 22, 22) |
2191 __gen_field(values
->SurfaceFormat
, 18, 20) |
2192 __gen_field(values
->SurfacePitch
, 0, 17) |
2199 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2205 __gen_field(values
->Height
, 18, 31) |
2206 __gen_field(values
->Width
, 4, 17) |
2207 __gen_field(values
->LOD
, 0, 3) |
2210 uint32_t dw_DepthBufferObjectControlState
;
2211 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DepthBufferObjectControlState
, &values
->DepthBufferObjectControlState
);
2213 __gen_field(values
->Depth
, 21, 31) |
2214 __gen_field(values
->MinimumArrayElement
, 10, 20) |
2215 __gen_field(dw_DepthBufferObjectControlState
, 0, 6) |
2222 __gen_field(values
->RenderTargetViewExtent
, 21, 31) |
2223 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2228 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length_bias 0x00000002
2229 #define GEN8_3DSTATE_DRAWING_RECTANGLE_header \
2231 .CommandSubType = 3, \
2232 ._3DCommandOpcode = 1, \
2233 ._3DCommandSubOpcode = 0, \
2236 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length 0x00000004
2238 struct GEN8_3DSTATE_DRAWING_RECTANGLE
{
2239 uint32_t CommandType
;
2240 uint32_t CommandSubType
;
2241 uint32_t _3DCommandOpcode
;
2242 uint32_t _3DCommandSubOpcode
;
2244 #define Core0Enabled 1
2245 #define Core1Enabled 2
2246 uint32_t CoreModeSelect
;
2247 uint32_t DwordLength
;
2248 uint32_t ClippedDrawingRectangleYMin
;
2249 uint32_t ClippedDrawingRectangleXMin
;
2250 uint32_t ClippedDrawingRectangleYMax
;
2251 uint32_t ClippedDrawingRectangleXMax
;
2252 uint32_t DrawingRectangleOriginY
;
2253 uint32_t DrawingRectangleOriginX
;
2257 GEN8_3DSTATE_DRAWING_RECTANGLE_pack(__gen_user_data
*data
, void * restrict dst
,
2258 const struct GEN8_3DSTATE_DRAWING_RECTANGLE
* restrict values
)
2260 uint32_t *dw
= (uint32_t * restrict
) dst
;
2263 __gen_field(values
->CommandType
, 29, 31) |
2264 __gen_field(values
->CommandSubType
, 27, 28) |
2265 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2266 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2267 __gen_field(values
->CoreModeSelect
, 14, 15) |
2268 __gen_field(values
->DwordLength
, 0, 7) |
2272 __gen_field(values
->ClippedDrawingRectangleYMin
, 16, 31) |
2273 __gen_field(values
->ClippedDrawingRectangleXMin
, 0, 15) |
2277 __gen_field(values
->ClippedDrawingRectangleYMax
, 16, 31) |
2278 __gen_field(values
->ClippedDrawingRectangleXMax
, 0, 15) |
2282 __gen_field(values
->DrawingRectangleOriginY
, 16, 31) |
2283 __gen_field(values
->DrawingRectangleOriginX
, 0, 15) |
2288 #define GEN8_3DSTATE_DS_length_bias 0x00000002
2289 #define GEN8_3DSTATE_DS_header \
2291 .CommandSubType = 3, \
2292 ._3DCommandOpcode = 0, \
2293 ._3DCommandSubOpcode = 29, \
2296 #define GEN8_3DSTATE_DS_length 0x00000009
2298 struct GEN8_3DSTATE_DS
{
2299 uint32_t CommandType
;
2300 uint32_t CommandSubType
;
2301 uint32_t _3DCommandOpcode
;
2302 uint32_t _3DCommandSubOpcode
;
2303 uint32_t DwordLength
;
2304 uint64_t KernelStartPointer
;
2307 uint32_t SingleDomainPointDispatch
;
2310 uint32_t VectorMaskEnable
;
2311 #define NoSamplers 0
2312 #define _14Samplers 1
2313 #define _58Samplers 2
2314 #define _912Samplers 3
2315 #define _1316Samplers 4
2316 uint32_t SamplerCount
;
2317 uint32_t BindingTableEntryCount
;
2320 uint32_t ThreadDispatchPriority
;
2323 uint32_t FloatingPointMode
;
2325 bool IllegalOpcodeExceptionEnable
;
2326 bool SoftwareExceptionEnable
;
2327 uint64_t ScratchSpaceBasePointer
;
2328 uint32_t PerThreadScratchSpace
;
2329 uint32_t DispatchGRFStartRegisterForURBData
;
2330 uint32_t PatchURBEntryReadLength
;
2331 uint32_t PatchURBEntryReadOffset
;
2332 uint32_t MaximumNumberofThreads
;
2333 bool StatisticsEnable
;
2334 bool SIMD8DispatchEnable
;
2335 bool ComputeWCoordinateEnable
;
2337 bool FunctionEnable
;
2338 uint32_t VertexURBEntryOutputReadOffset
;
2339 uint32_t VertexURBEntryOutputLength
;
2340 uint32_t UserClipDistanceClipTestEnableBitmask
;
2341 uint32_t UserClipDistanceCullTestEnableBitmask
;
2345 GEN8_3DSTATE_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2346 const struct GEN8_3DSTATE_DS
* restrict values
)
2348 uint32_t *dw
= (uint32_t * restrict
) dst
;
2351 __gen_field(values
->CommandType
, 29, 31) |
2352 __gen_field(values
->CommandSubType
, 27, 28) |
2353 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2354 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2355 __gen_field(values
->DwordLength
, 0, 7) |
2359 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2366 __gen_field(values
->SingleDomainPointDispatch
, 31, 31) |
2367 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2368 __gen_field(values
->SamplerCount
, 27, 29) |
2369 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2370 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2371 __gen_field(values
->FloatingPointMode
, 16, 16) |
2372 __gen_field(values
->AccessesUAV
, 14, 14) |
2373 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2374 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2378 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2379 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2386 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
2387 __gen_field(values
->PatchURBEntryReadLength
, 11, 17) |
2388 __gen_field(values
->PatchURBEntryReadOffset
, 4, 9) |
2392 __gen_field(values
->MaximumNumberofThreads
, 21, 29) |
2393 __gen_field(values
->StatisticsEnable
, 10, 10) |
2394 __gen_field(values
->SIMD8DispatchEnable
, 3, 3) |
2395 __gen_field(values
->ComputeWCoordinateEnable
, 2, 2) |
2396 __gen_field(values
->CacheDisable
, 1, 1) |
2397 __gen_field(values
->FunctionEnable
, 0, 0) |
2401 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2402 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2403 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2404 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2409 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_length_bias 0x00000002
2410 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_header \
2412 .CommandSubType = 3, \
2413 ._3DCommandOpcode = 0, \
2414 ._3DCommandSubOpcode = 55
2416 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_length 0x00000000
2418 #define GEN8_GATHER_CONSTANT_ENTRY_length 0x00000001
2420 struct GEN8_GATHER_CONSTANT_ENTRY
{
2421 uint32_t ConstantBufferOffset
;
2422 uint32_t ChannelMask
;
2423 uint32_t BindingTableIndexOffset
;
2427 GEN8_GATHER_CONSTANT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
2428 const struct GEN8_GATHER_CONSTANT_ENTRY
* restrict values
)
2430 uint32_t *dw
= (uint32_t * restrict
) dst
;
2433 __gen_offset(values
->ConstantBufferOffset
, 8, 15) |
2434 __gen_field(values
->ChannelMask
, 4, 7) |
2435 __gen_field(values
->BindingTableIndexOffset
, 0, 3) |
2440 struct GEN8_3DSTATE_GATHER_CONSTANT_DS
{
2441 uint32_t CommandType
;
2442 uint32_t CommandSubType
;
2443 uint32_t _3DCommandOpcode
;
2444 uint32_t _3DCommandSubOpcode
;
2445 uint32_t DwordLength
;
2446 uint32_t ConstantBufferValid
;
2447 uint32_t ConstantBufferBindingTableBlock
;
2448 uint32_t GatherBufferOffset
;
2449 bool ConstantBufferDx9GenerateStall
;
2450 /* variable length fields follow */
2454 GEN8_3DSTATE_GATHER_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2455 const struct GEN8_3DSTATE_GATHER_CONSTANT_DS
* restrict values
)
2457 uint32_t *dw
= (uint32_t * restrict
) dst
;
2460 __gen_field(values
->CommandType
, 29, 31) |
2461 __gen_field(values
->CommandSubType
, 27, 28) |
2462 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2463 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2464 __gen_field(values
->DwordLength
, 0, 7) |
2468 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2469 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2473 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2474 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2477 /* variable length fields follow */
2480 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_length_bias 0x00000002
2481 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_header \
2483 .CommandSubType = 3, \
2484 ._3DCommandOpcode = 0, \
2485 ._3DCommandSubOpcode = 53
2487 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_length 0x00000000
2489 struct GEN8_3DSTATE_GATHER_CONSTANT_GS
{
2490 uint32_t CommandType
;
2491 uint32_t CommandSubType
;
2492 uint32_t _3DCommandOpcode
;
2493 uint32_t _3DCommandSubOpcode
;
2494 uint32_t DwordLength
;
2495 uint32_t ConstantBufferValid
;
2496 uint32_t ConstantBufferBindingTableBlock
;
2497 uint32_t GatherBufferOffset
;
2498 bool ConstantBufferDx9GenerateStall
;
2499 /* variable length fields follow */
2503 GEN8_3DSTATE_GATHER_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2504 const struct GEN8_3DSTATE_GATHER_CONSTANT_GS
* restrict values
)
2506 uint32_t *dw
= (uint32_t * restrict
) dst
;
2509 __gen_field(values
->CommandType
, 29, 31) |
2510 __gen_field(values
->CommandSubType
, 27, 28) |
2511 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2512 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2513 __gen_field(values
->DwordLength
, 0, 7) |
2517 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2518 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2522 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2523 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2526 /* variable length fields follow */
2529 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_length_bias 0x00000002
2530 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_header \
2532 .CommandSubType = 3, \
2533 ._3DCommandOpcode = 0, \
2534 ._3DCommandSubOpcode = 54
2536 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_length 0x00000000
2538 struct GEN8_3DSTATE_GATHER_CONSTANT_HS
{
2539 uint32_t CommandType
;
2540 uint32_t CommandSubType
;
2541 uint32_t _3DCommandOpcode
;
2542 uint32_t _3DCommandSubOpcode
;
2543 uint32_t DwordLength
;
2544 uint32_t ConstantBufferValid
;
2545 uint32_t ConstantBufferBindingTableBlock
;
2546 uint32_t GatherBufferOffset
;
2547 bool ConstantBufferDx9GenerateStall
;
2548 /* variable length fields follow */
2552 GEN8_3DSTATE_GATHER_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2553 const struct GEN8_3DSTATE_GATHER_CONSTANT_HS
* restrict values
)
2555 uint32_t *dw
= (uint32_t * restrict
) dst
;
2558 __gen_field(values
->CommandType
, 29, 31) |
2559 __gen_field(values
->CommandSubType
, 27, 28) |
2560 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2561 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2562 __gen_field(values
->DwordLength
, 0, 7) |
2566 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2567 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2571 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2572 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2575 /* variable length fields follow */
2578 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_length_bias 0x00000002
2579 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_header \
2581 .CommandSubType = 3, \
2582 ._3DCommandOpcode = 0, \
2583 ._3DCommandSubOpcode = 56
2585 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_length 0x00000000
2587 struct GEN8_3DSTATE_GATHER_CONSTANT_PS
{
2588 uint32_t CommandType
;
2589 uint32_t CommandSubType
;
2590 uint32_t _3DCommandOpcode
;
2591 uint32_t _3DCommandSubOpcode
;
2592 uint32_t DwordLength
;
2593 uint32_t ConstantBufferValid
;
2594 uint32_t ConstantBufferBindingTableBlock
;
2595 uint32_t GatherBufferOffset
;
2596 bool ConstantBufferDx9GenerateStall
;
2597 bool ConstantBufferDx9Enable
;
2598 /* variable length fields follow */
2602 GEN8_3DSTATE_GATHER_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
2603 const struct GEN8_3DSTATE_GATHER_CONSTANT_PS
* restrict values
)
2605 uint32_t *dw
= (uint32_t * restrict
) dst
;
2608 __gen_field(values
->CommandType
, 29, 31) |
2609 __gen_field(values
->CommandSubType
, 27, 28) |
2610 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2611 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2612 __gen_field(values
->DwordLength
, 0, 7) |
2616 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2617 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2621 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2622 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2623 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2626 /* variable length fields follow */
2629 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_length_bias 0x00000002
2630 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_header \
2632 .CommandSubType = 3, \
2633 ._3DCommandOpcode = 0, \
2634 ._3DCommandSubOpcode = 52
2636 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_length 0x00000000
2638 struct GEN8_3DSTATE_GATHER_CONSTANT_VS
{
2639 uint32_t CommandType
;
2640 uint32_t CommandSubType
;
2641 uint32_t _3DCommandOpcode
;
2642 uint32_t _3DCommandSubOpcode
;
2643 uint32_t DwordLength
;
2644 uint32_t ConstantBufferValid
;
2645 uint32_t ConstantBufferBindingTableBlock
;
2646 uint32_t GatherBufferOffset
;
2647 bool ConstantBufferDx9GenerateStall
;
2648 bool ConstantBufferDx9Enable
;
2649 /* variable length fields follow */
2653 GEN8_3DSTATE_GATHER_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2654 const struct GEN8_3DSTATE_GATHER_CONSTANT_VS
* restrict values
)
2656 uint32_t *dw
= (uint32_t * restrict
) dst
;
2659 __gen_field(values
->CommandType
, 29, 31) |
2660 __gen_field(values
->CommandSubType
, 27, 28) |
2661 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2662 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2663 __gen_field(values
->DwordLength
, 0, 7) |
2667 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2668 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2672 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2673 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2674 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2677 /* variable length fields follow */
2680 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length_bias 0x00000002
2681 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_header \
2683 .CommandSubType = 3, \
2684 ._3DCommandOpcode = 1, \
2685 ._3DCommandSubOpcode = 26, \
2688 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length 0x00000004
2690 struct GEN8_3DSTATE_GATHER_POOL_ALLOC
{
2691 uint32_t CommandType
;
2692 uint32_t CommandSubType
;
2693 uint32_t _3DCommandOpcode
;
2694 uint32_t _3DCommandSubOpcode
;
2695 uint32_t DwordLength
;
2696 __gen_address_type GatherPoolBaseAddress
;
2697 bool GatherPoolEnable
;
2698 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2699 uint32_t GatherPoolBufferSize
;
2703 GEN8_3DSTATE_GATHER_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
2704 const struct GEN8_3DSTATE_GATHER_POOL_ALLOC
* restrict values
)
2706 uint32_t *dw
= (uint32_t * restrict
) dst
;
2709 __gen_field(values
->CommandType
, 29, 31) |
2710 __gen_field(values
->CommandSubType
, 27, 28) |
2711 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2712 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2713 __gen_field(values
->DwordLength
, 0, 7) |
2716 uint32_t dw_MemoryObjectControlState
;
2717 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
2719 __gen_field(values
->GatherPoolEnable
, 11, 11) |
2720 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
2724 __gen_combine_address(data
, &dw
[1], values
->GatherPoolBaseAddress
, dw1
);
2730 __gen_field(values
->GatherPoolBufferSize
, 12, 31) |
2735 #define GEN8_3DSTATE_GS_length_bias 0x00000002
2736 #define GEN8_3DSTATE_GS_header \
2738 .CommandSubType = 3, \
2739 ._3DCommandOpcode = 0, \
2740 ._3DCommandSubOpcode = 17, \
2743 #define GEN8_3DSTATE_GS_length 0x0000000a
2745 struct GEN8_3DSTATE_GS
{
2746 uint32_t CommandType
;
2747 uint32_t CommandSubType
;
2748 uint32_t _3DCommandOpcode
;
2749 uint32_t _3DCommandSubOpcode
;
2750 uint32_t DwordLength
;
2751 uint64_t KernelStartPointer
;
2752 uint32_t SingleProgramFlow
;
2755 uint32_t VectorMaskEnable
;
2756 #define NoSamplers 0
2757 #define _14Samplers 1
2758 #define _58Samplers 2
2759 #define _912Samplers 3
2760 #define _1316Samplers 4
2761 uint32_t SamplerCount
;
2762 uint32_t BindingTableEntryCount
;
2765 uint32_t ThreadDispatchPriority
;
2768 uint32_t FloatingPointMode
;
2769 bool IllegalOpcodeExceptionEnable
;
2771 bool MaskStackExceptionEnable
;
2772 bool SoftwareExceptionEnable
;
2773 uint32_t ExpectedVertexCount
;
2774 uint64_t ScratchSpaceBasePointer
;
2775 uint32_t PerThreadScratchSpace
;
2776 uint32_t OutputVertexSize
;
2777 uint32_t OutputTopology
;
2778 uint32_t VertexURBEntryReadLength
;
2779 bool IncludeVertexHandles
;
2780 uint32_t VertexURBEntryReadOffset
;
2781 uint32_t DispatchGRFStartRegisterForURBData
;
2782 uint32_t MaximumNumberofThreads
;
2783 uint32_t ControlDataHeaderSize
;
2784 uint32_t InstanceControl
;
2785 uint32_t DefaultStreamId
;
2786 #define DispatchModeSingle 0
2787 #define DispatchModeDualInstance 1
2788 #define DispatchModeDualObject 2
2789 #define DispatchModeSIMD8 3
2790 uint32_t DispatchMode
;
2791 bool StatisticsEnable
;
2792 uint32_t InvocationsIncrementValue
;
2793 bool IncludePrimitiveID
;
2797 uint32_t ReorderMode
;
2798 bool DiscardAdjacency
;
2802 uint32_t ControlDataFormat
;
2804 uint32_t StaticOutputVertexCount
;
2805 uint32_t VertexURBEntryOutputReadOffset
;
2806 uint32_t VertexURBEntryOutputLength
;
2807 uint32_t UserClipDistanceClipTestEnableBitmask
;
2808 uint32_t UserClipDistanceCullTestEnableBitmask
;
2812 GEN8_3DSTATE_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2813 const struct GEN8_3DSTATE_GS
* restrict values
)
2815 uint32_t *dw
= (uint32_t * restrict
) dst
;
2818 __gen_field(values
->CommandType
, 29, 31) |
2819 __gen_field(values
->CommandSubType
, 27, 28) |
2820 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2821 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2822 __gen_field(values
->DwordLength
, 0, 7) |
2826 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2833 __gen_field(values
->SingleProgramFlow
, 31, 31) |
2834 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2835 __gen_field(values
->SamplerCount
, 27, 29) |
2836 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2837 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2838 __gen_field(values
->FloatingPointMode
, 16, 16) |
2839 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2840 __gen_field(values
->AccessesUAV
, 12, 12) |
2841 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
2842 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2843 __gen_field(values
->ExpectedVertexCount
, 0, 5) |
2847 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2848 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2855 __gen_field(values
->OutputVertexSize
, 23, 28) |
2856 __gen_field(values
->OutputTopology
, 17, 22) |
2857 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2858 __gen_field(values
->IncludeVertexHandles
, 10, 10) |
2859 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2860 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 0, 3) |
2864 __gen_field(values
->MaximumNumberofThreads
, 24, 31) |
2865 __gen_field(values
->ControlDataHeaderSize
, 20, 23) |
2866 __gen_field(values
->InstanceControl
, 15, 19) |
2867 __gen_field(values
->DefaultStreamId
, 13, 14) |
2868 __gen_field(values
->DispatchMode
, 11, 12) |
2869 __gen_field(values
->StatisticsEnable
, 10, 10) |
2870 __gen_field(values
->InvocationsIncrementValue
, 5, 9) |
2871 __gen_field(values
->IncludePrimitiveID
, 4, 4) |
2872 __gen_field(values
->Hint
, 3, 3) |
2873 __gen_field(values
->ReorderMode
, 2, 2) |
2874 __gen_field(values
->DiscardAdjacency
, 1, 1) |
2875 __gen_field(values
->Enable
, 0, 0) |
2879 __gen_field(values
->ControlDataFormat
, 31, 31) |
2880 __gen_field(values
->StaticOutput
, 30, 30) |
2881 __gen_field(values
->StaticOutputVertexCount
, 16, 26) |
2885 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2886 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2887 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2888 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2893 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length_bias 0x00000002
2894 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_header \
2896 .CommandSubType = 3, \
2897 ._3DCommandOpcode = 0, \
2898 ._3DCommandSubOpcode = 7, \
2901 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length 0x00000005
2903 struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
{
2904 uint32_t CommandType
;
2905 uint32_t CommandSubType
;
2906 uint32_t _3DCommandOpcode
;
2907 uint32_t _3DCommandSubOpcode
;
2908 uint32_t DwordLength
;
2909 struct GEN8_MEMORY_OBJECT_CONTROL_STATE HierarchicalDepthBufferObjectControlState
;
2910 uint32_t SurfacePitch
;
2911 __gen_address_type SurfaceBaseAddress
;
2912 uint32_t SurfaceQPitch
;
2916 GEN8_3DSTATE_HIER_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2917 const struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
* restrict values
)
2919 uint32_t *dw
= (uint32_t * restrict
) dst
;
2922 __gen_field(values
->CommandType
, 29, 31) |
2923 __gen_field(values
->CommandSubType
, 27, 28) |
2924 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2925 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2926 __gen_field(values
->DwordLength
, 0, 7) |
2929 uint32_t dw_HierarchicalDepthBufferObjectControlState
;
2930 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_HierarchicalDepthBufferObjectControlState
, &values
->HierarchicalDepthBufferObjectControlState
);
2932 __gen_field(dw_HierarchicalDepthBufferObjectControlState
, 25, 31) |
2933 __gen_field(values
->SurfacePitch
, 0, 16) |
2940 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2946 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2951 #define GEN8_3DSTATE_HS_length_bias 0x00000002
2952 #define GEN8_3DSTATE_HS_header \
2954 .CommandSubType = 3, \
2955 ._3DCommandOpcode = 0, \
2956 ._3DCommandSubOpcode = 27, \
2959 #define GEN8_3DSTATE_HS_length 0x00000009
2961 struct GEN8_3DSTATE_HS
{
2962 uint32_t CommandType
;
2963 uint32_t CommandSubType
;
2964 uint32_t _3DCommandOpcode
;
2965 uint32_t _3DCommandSubOpcode
;
2966 uint32_t DwordLength
;
2967 #define NoSamplers 0
2968 #define _14Samplers 1
2969 #define _58Samplers 2
2970 #define _912Samplers 3
2971 #define _1316Samplers 4
2972 uint32_t SamplerCount
;
2973 uint32_t BindingTableEntryCount
;
2976 uint32_t ThreadDispatchPriority
;
2979 uint32_t FloatingPointMode
;
2980 bool IllegalOpcodeExceptionEnable
;
2981 bool SoftwareExceptionEnable
;
2983 bool StatisticsEnable
;
2984 uint32_t MaximumNumberofThreads
;
2985 uint32_t InstanceCount
;
2986 uint64_t KernelStartPointer
;
2987 uint64_t ScratchSpaceBasePointer
;
2988 uint32_t PerThreadScratchSpace
;
2989 bool SingleProgramFlow
;
2992 uint32_t VectorMaskEnable
;
2994 bool IncludeVertexHandles
;
2995 uint32_t DispatchGRFStartRegisterForURBData
;
2996 uint32_t VertexURBEntryReadLength
;
2997 uint32_t VertexURBEntryReadOffset
;
3001 GEN8_3DSTATE_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3002 const struct GEN8_3DSTATE_HS
* restrict values
)
3004 uint32_t *dw
= (uint32_t * restrict
) dst
;
3007 __gen_field(values
->CommandType
, 29, 31) |
3008 __gen_field(values
->CommandSubType
, 27, 28) |
3009 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3010 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3011 __gen_field(values
->DwordLength
, 0, 7) |
3015 __gen_field(values
->SamplerCount
, 27, 29) |
3016 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
3017 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
3018 __gen_field(values
->FloatingPointMode
, 16, 16) |
3019 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
3020 __gen_field(values
->SoftwareExceptionEnable
, 12, 12) |
3024 __gen_field(values
->Enable
, 31, 31) |
3025 __gen_field(values
->StatisticsEnable
, 29, 29) |
3026 __gen_field(values
->MaximumNumberofThreads
, 8, 16) |
3027 __gen_field(values
->InstanceCount
, 0, 3) |
3031 __gen_offset(values
->KernelStartPointer
, 6, 63) |
3038 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
3039 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
3046 __gen_field(values
->SingleProgramFlow
, 27, 27) |
3047 __gen_field(values
->VectorMaskEnable
, 26, 26) |
3048 __gen_field(values
->AccessesUAV
, 25, 25) |
3049 __gen_field(values
->IncludeVertexHandles
, 24, 24) |
3050 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 19, 23) |
3051 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
3052 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
3060 #define GEN8_3DSTATE_INDEX_BUFFER_length_bias 0x00000002
3061 #define GEN8_3DSTATE_INDEX_BUFFER_header \
3063 .CommandSubType = 3, \
3064 ._3DCommandOpcode = 0, \
3065 ._3DCommandSubOpcode = 10, \
3068 #define GEN8_3DSTATE_INDEX_BUFFER_length 0x00000005
3070 struct GEN8_3DSTATE_INDEX_BUFFER
{
3071 uint32_t CommandType
;
3072 uint32_t CommandSubType
;
3073 uint32_t _3DCommandOpcode
;
3074 uint32_t _3DCommandSubOpcode
;
3075 uint32_t DwordLength
;
3076 #define INDEX_BYTE 0
3077 #define INDEX_WORD 1
3078 #define INDEX_DWORD 2
3079 uint32_t IndexFormat
;
3080 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
3081 __gen_address_type BufferStartingAddress
;
3082 uint32_t BufferSize
;
3086 GEN8_3DSTATE_INDEX_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
3087 const struct GEN8_3DSTATE_INDEX_BUFFER
* restrict values
)
3089 uint32_t *dw
= (uint32_t * restrict
) dst
;
3092 __gen_field(values
->CommandType
, 29, 31) |
3093 __gen_field(values
->CommandSubType
, 27, 28) |
3094 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3095 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3096 __gen_field(values
->DwordLength
, 0, 7) |
3099 uint32_t dw_MemoryObjectControlState
;
3100 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
3102 __gen_field(values
->IndexFormat
, 8, 9) |
3103 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
3110 __gen_combine_address(data
, &dw
[2], values
->BufferStartingAddress
, dw2
);
3116 __gen_field(values
->BufferSize
, 0, 31) |
3121 #define GEN8_3DSTATE_LINE_STIPPLE_length_bias 0x00000002
3122 #define GEN8_3DSTATE_LINE_STIPPLE_header \
3124 .CommandSubType = 3, \
3125 ._3DCommandOpcode = 1, \
3126 ._3DCommandSubOpcode = 8, \
3129 #define GEN8_3DSTATE_LINE_STIPPLE_length 0x00000003
3131 struct GEN8_3DSTATE_LINE_STIPPLE
{
3132 uint32_t CommandType
;
3133 uint32_t CommandSubType
;
3134 uint32_t _3DCommandOpcode
;
3135 uint32_t _3DCommandSubOpcode
;
3136 uint32_t DwordLength
;
3137 bool ModifyEnableCurrentRepeatCounterCurrentStippleIndex
;
3138 uint32_t CurrentRepeatCounter
;
3139 uint32_t CurrentStippleIndex
;
3140 uint32_t LineStipplePattern
;
3141 float LineStippleInverseRepeatCount
;
3142 uint32_t LineStippleRepeatCount
;
3146 GEN8_3DSTATE_LINE_STIPPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3147 const struct GEN8_3DSTATE_LINE_STIPPLE
* restrict values
)
3149 uint32_t *dw
= (uint32_t * restrict
) dst
;
3152 __gen_field(values
->CommandType
, 29, 31) |
3153 __gen_field(values
->CommandSubType
, 27, 28) |
3154 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3155 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3156 __gen_field(values
->DwordLength
, 0, 7) |
3160 __gen_field(values
->ModifyEnableCurrentRepeatCounterCurrentStippleIndex
, 31, 31) |
3161 __gen_field(values
->CurrentRepeatCounter
, 21, 29) |
3162 __gen_field(values
->CurrentStippleIndex
, 16, 19) |
3163 __gen_field(values
->LineStipplePattern
, 0, 15) |
3167 __gen_field(values
->LineStippleInverseRepeatCount
* (1 << 16), 15, 31) |
3168 __gen_field(values
->LineStippleRepeatCount
, 0, 8) |
3173 #define GEN8_3DSTATE_MONOFILTER_SIZE_length_bias 0x00000002
3174 #define GEN8_3DSTATE_MONOFILTER_SIZE_header \
3176 .CommandSubType = 3, \
3177 ._3DCommandOpcode = 1, \
3178 ._3DCommandSubOpcode = 17, \
3181 #define GEN8_3DSTATE_MONOFILTER_SIZE_length 0x00000002
3183 struct GEN8_3DSTATE_MONOFILTER_SIZE
{
3184 uint32_t CommandType
;
3185 uint32_t CommandSubType
;
3186 uint32_t _3DCommandOpcode
;
3187 uint32_t _3DCommandSubOpcode
;
3188 uint32_t DwordLength
;
3189 uint32_t MonochromeFilterWidth
;
3190 uint32_t MonochromeFilterHeight
;
3194 GEN8_3DSTATE_MONOFILTER_SIZE_pack(__gen_user_data
*data
, void * restrict dst
,
3195 const struct GEN8_3DSTATE_MONOFILTER_SIZE
* restrict values
)
3197 uint32_t *dw
= (uint32_t * restrict
) dst
;
3200 __gen_field(values
->CommandType
, 29, 31) |
3201 __gen_field(values
->CommandSubType
, 27, 28) |
3202 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3203 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3204 __gen_field(values
->DwordLength
, 0, 7) |
3208 __gen_field(values
->MonochromeFilterWidth
, 3, 5) |
3209 __gen_field(values
->MonochromeFilterHeight
, 0, 2) |
3214 #define GEN8_3DSTATE_MULTISAMPLE_length_bias 0x00000002
3215 #define GEN8_3DSTATE_MULTISAMPLE_header \
3217 .CommandSubType = 3, \
3218 ._3DCommandOpcode = 0, \
3219 ._3DCommandSubOpcode = 13, \
3222 #define GEN8_3DSTATE_MULTISAMPLE_length 0x00000002
3224 struct GEN8_3DSTATE_MULTISAMPLE
{
3225 uint32_t CommandType
;
3226 uint32_t CommandSubType
;
3227 uint32_t _3DCommandOpcode
;
3228 uint32_t _3DCommandSubOpcode
;
3229 uint32_t DwordLength
;
3230 uint32_t PixelPositionOffsetEnable
;
3233 uint32_t PixelLocation
;
3234 uint32_t NumberofMultisamples
;
3238 GEN8_3DSTATE_MULTISAMPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3239 const struct GEN8_3DSTATE_MULTISAMPLE
* restrict values
)
3241 uint32_t *dw
= (uint32_t * restrict
) dst
;
3244 __gen_field(values
->CommandType
, 29, 31) |
3245 __gen_field(values
->CommandSubType
, 27, 28) |
3246 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3247 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3248 __gen_field(values
->DwordLength
, 0, 7) |
3252 __gen_field(values
->PixelPositionOffsetEnable
, 5, 5) |
3253 __gen_field(values
->PixelLocation
, 4, 4) |
3254 __gen_field(values
->NumberofMultisamples
, 1, 3) |
3259 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length_bias 0x00000002
3260 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_header \
3262 .CommandSubType = 3, \
3263 ._3DCommandOpcode = 1, \
3264 ._3DCommandSubOpcode = 6, \
3267 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length 0x00000002
3269 struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
{
3270 uint32_t CommandType
;
3271 uint32_t CommandSubType
;
3272 uint32_t _3DCommandOpcode
;
3273 uint32_t _3DCommandSubOpcode
;
3274 uint32_t DwordLength
;
3275 uint32_t PolygonStippleXOffset
;
3276 uint32_t PolygonStippleYOffset
;
3280 GEN8_3DSTATE_POLY_STIPPLE_OFFSET_pack(__gen_user_data
*data
, void * restrict dst
,
3281 const struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
* restrict values
)
3283 uint32_t *dw
= (uint32_t * restrict
) dst
;
3286 __gen_field(values
->CommandType
, 29, 31) |
3287 __gen_field(values
->CommandSubType
, 27, 28) |
3288 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3289 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3290 __gen_field(values
->DwordLength
, 0, 7) |
3294 __gen_field(values
->PolygonStippleXOffset
, 8, 12) |
3295 __gen_field(values
->PolygonStippleYOffset
, 0, 4) |
3300 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length_bias 0x00000002
3301 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_header\
3303 .CommandSubType = 3, \
3304 ._3DCommandOpcode = 1, \
3305 ._3DCommandSubOpcode = 7, \
3308 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length 0x00000021
3310 struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
{
3311 uint32_t CommandType
;
3312 uint32_t CommandSubType
;
3313 uint32_t _3DCommandOpcode
;
3314 uint32_t _3DCommandSubOpcode
;
3315 uint32_t DwordLength
;
3316 uint32_t PatternRow
[32];
3320 GEN8_3DSTATE_POLY_STIPPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
3321 const struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
* restrict values
)
3323 uint32_t *dw
= (uint32_t * restrict
) dst
;
3326 __gen_field(values
->CommandType
, 29, 31) |
3327 __gen_field(values
->CommandSubType
, 27, 28) |
3328 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3329 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3330 __gen_field(values
->DwordLength
, 0, 7) |
3333 for (uint32_t i
= 0, j
= 1; i
< 32; i
+= 1, j
++) {
3335 __gen_field(values
->PatternRow
[i
+ 0], 0, 31) |
3341 #define GEN8_3DSTATE_PS_length_bias 0x00000002
3342 #define GEN8_3DSTATE_PS_header \
3344 .CommandSubType = 3, \
3345 ._3DCommandOpcode = 0, \
3346 ._3DCommandSubOpcode = 32, \
3349 #define GEN8_3DSTATE_PS_length 0x0000000c
3351 struct GEN8_3DSTATE_PS
{
3352 uint32_t CommandType
;
3353 uint32_t CommandSubType
;
3354 uint32_t _3DCommandOpcode
;
3355 uint32_t _3DCommandSubOpcode
;
3356 uint32_t DwordLength
;
3357 uint64_t KernelStartPointer0
;
3360 uint32_t SingleProgramFlow
;
3363 uint32_t VectorMaskEnable
;
3364 #define NoSamplers 0
3365 #define _14Samplers 1
3366 #define _58Samplers 2
3367 #define _912Samplers 3
3368 #define _1316Samplers 4
3369 uint32_t SamplerCount
;
3370 #define FlushedtoZero 0
3372 uint32_t SinglePrecisionDenormalMode
;
3373 uint32_t BindingTableEntryCount
;
3376 uint32_t ThreadDispatchPriority
;
3379 uint32_t FloatingPointMode
;
3384 uint32_t RoundingMode
;
3385 bool IllegalOpcodeExceptionEnable
;
3386 bool MaskStackExceptionEnable
;
3387 bool SoftwareExceptionEnable
;
3388 uint64_t ScratchSpaceBasePointer
;
3389 uint32_t PerThreadScratchSpace
;
3390 uint32_t MaximumNumberofThreadsPerPSD
;
3391 bool PushConstantEnable
;
3392 bool RenderTargetFastClearEnable
;
3393 bool RenderTargetResolveEnable
;
3394 #define POSOFFSET_NONE 0
3395 #define POSOFFSET_CENTROID 2
3396 #define POSOFFSET_SAMPLE 3
3397 uint32_t PositionXYOffsetSelect
;
3398 bool _32PixelDispatchEnable
;
3399 bool _16PixelDispatchEnable
;
3400 bool _8PixelDispatchEnable
;
3401 uint32_t DispatchGRFStartRegisterForConstantSetupData0
;
3402 uint32_t DispatchGRFStartRegisterForConstantSetupData1
;
3403 uint32_t DispatchGRFStartRegisterForConstantSetupData2
;
3404 uint64_t KernelStartPointer1
;
3405 uint64_t KernelStartPointer2
;
3409 GEN8_3DSTATE_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3410 const struct GEN8_3DSTATE_PS
* restrict values
)
3412 uint32_t *dw
= (uint32_t * restrict
) dst
;
3415 __gen_field(values
->CommandType
, 29, 31) |
3416 __gen_field(values
->CommandSubType
, 27, 28) |
3417 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3418 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3419 __gen_field(values
->DwordLength
, 0, 7) |
3423 __gen_offset(values
->KernelStartPointer0
, 6, 63) |
3430 __gen_field(values
->SingleProgramFlow
, 31, 31) |
3431 __gen_field(values
->VectorMaskEnable
, 30, 30) |
3432 __gen_field(values
->SamplerCount
, 27, 29) |
3433 __gen_field(values
->SinglePrecisionDenormalMode
, 26, 26) |
3434 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
3435 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
3436 __gen_field(values
->FloatingPointMode
, 16, 16) |
3437 __gen_field(values
->RoundingMode
, 14, 15) |
3438 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
3439 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
3440 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
3444 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
3445 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
3452 __gen_field(values
->MaximumNumberofThreadsPerPSD
, 23, 31) |
3453 __gen_field(values
->PushConstantEnable
, 11, 11) |
3454 __gen_field(values
->RenderTargetFastClearEnable
, 8, 8) |
3455 __gen_field(values
->RenderTargetResolveEnable
, 6, 6) |
3456 __gen_field(values
->PositionXYOffsetSelect
, 3, 4) |
3457 __gen_field(values
->_32PixelDispatchEnable
, 2, 2) |
3458 __gen_field(values
->_16PixelDispatchEnable
, 1, 1) |
3459 __gen_field(values
->_8PixelDispatchEnable
, 0, 0) |
3463 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData0
, 16, 22) |
3464 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData1
, 8, 14) |
3465 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData2
, 0, 6) |
3469 __gen_offset(values
->KernelStartPointer1
, 6, 63) |
3476 __gen_offset(values
->KernelStartPointer2
, 6, 63) |
3480 dw
[11] = qw10
>> 32;
3484 #define GEN8_3DSTATE_PS_BLEND_length_bias 0x00000002
3485 #define GEN8_3DSTATE_PS_BLEND_header \
3487 .CommandSubType = 3, \
3488 ._3DCommandOpcode = 0, \
3489 ._3DCommandSubOpcode = 77, \
3492 #define GEN8_3DSTATE_PS_BLEND_length 0x00000002
3494 struct GEN8_3DSTATE_PS_BLEND
{
3495 uint32_t CommandType
;
3496 uint32_t CommandSubType
;
3497 uint32_t _3DCommandOpcode
;
3498 uint32_t _3DCommandSubOpcode
;
3499 uint32_t DwordLength
;
3500 bool AlphaToCoverageEnable
;
3501 bool HasWriteableRT
;
3502 bool ColorBufferBlendEnable
;
3503 uint32_t SourceAlphaBlendFactor
;
3504 uint32_t DestinationAlphaBlendFactor
;
3505 uint32_t SourceBlendFactor
;
3506 uint32_t DestinationBlendFactor
;
3507 bool AlphaTestEnable
;
3508 bool IndependentAlphaBlendEnable
;
3512 GEN8_3DSTATE_PS_BLEND_pack(__gen_user_data
*data
, void * restrict dst
,
3513 const struct GEN8_3DSTATE_PS_BLEND
* restrict values
)
3515 uint32_t *dw
= (uint32_t * restrict
) dst
;
3518 __gen_field(values
->CommandType
, 29, 31) |
3519 __gen_field(values
->CommandSubType
, 27, 28) |
3520 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3521 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3522 __gen_field(values
->DwordLength
, 0, 7) |
3526 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
3527 __gen_field(values
->HasWriteableRT
, 30, 30) |
3528 __gen_field(values
->ColorBufferBlendEnable
, 29, 29) |
3529 __gen_field(values
->SourceAlphaBlendFactor
, 24, 28) |
3530 __gen_field(values
->DestinationAlphaBlendFactor
, 19, 23) |
3531 __gen_field(values
->SourceBlendFactor
, 14, 18) |
3532 __gen_field(values
->DestinationBlendFactor
, 9, 13) |
3533 __gen_field(values
->AlphaTestEnable
, 8, 8) |
3534 __gen_field(values
->IndependentAlphaBlendEnable
, 7, 7) |
3539 #define GEN8_3DSTATE_PS_EXTRA_length_bias 0x00000002
3540 #define GEN8_3DSTATE_PS_EXTRA_header \
3542 .CommandSubType = 3, \
3543 ._3DCommandOpcode = 0, \
3544 ._3DCommandSubOpcode = 79, \
3547 #define GEN8_3DSTATE_PS_EXTRA_length 0x00000002
3549 struct GEN8_3DSTATE_PS_EXTRA
{
3550 uint32_t CommandType
;
3551 uint32_t CommandSubType
;
3552 uint32_t _3DCommandOpcode
;
3553 uint32_t _3DCommandSubOpcode
;
3554 uint32_t DwordLength
;
3555 bool PixelShaderValid
;
3556 bool PixelShaderDoesnotwritetoRT
;
3557 bool oMaskPresenttoRenderTarget
;
3558 bool PixelShaderKillsPixel
;
3559 #define PSCDEPTH_OFF 0
3560 #define PSCDEPTH_ON 1
3561 #define PSCDEPTH_ON_GE 2
3562 #define PSCDEPTH_ON_LE 3
3563 uint32_t PixelShaderComputedDepthMode
;
3564 bool ForceComputedDepth
;
3565 bool PixelShaderUsesSourceDepth
;
3566 bool PixelShaderUsesSourceW
;
3568 bool AttributeEnable
;
3569 bool PixelShaderDisablesAlphaToCoverage
;
3570 bool PixelShaderIsPerSample
;
3571 bool PixelShaderHasUAV
;
3572 bool PixelShaderUsesInputCoverageMask
;
3576 GEN8_3DSTATE_PS_EXTRA_pack(__gen_user_data
*data
, void * restrict dst
,
3577 const struct GEN8_3DSTATE_PS_EXTRA
* restrict values
)
3579 uint32_t *dw
= (uint32_t * restrict
) dst
;
3582 __gen_field(values
->CommandType
, 29, 31) |
3583 __gen_field(values
->CommandSubType
, 27, 28) |
3584 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3585 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3586 __gen_field(values
->DwordLength
, 0, 7) |
3590 __gen_field(values
->PixelShaderValid
, 31, 31) |
3591 __gen_field(values
->PixelShaderDoesnotwritetoRT
, 30, 30) |
3592 __gen_field(values
->oMaskPresenttoRenderTarget
, 29, 29) |
3593 __gen_field(values
->PixelShaderKillsPixel
, 28, 28) |
3594 __gen_field(values
->PixelShaderComputedDepthMode
, 26, 27) |
3595 __gen_field(values
->ForceComputedDepth
, 25, 25) |
3596 __gen_field(values
->PixelShaderUsesSourceDepth
, 24, 24) |
3597 __gen_field(values
->PixelShaderUsesSourceW
, 23, 23) |
3598 __gen_field(values
->Removed
, 17, 17) |
3599 __gen_field(values
->AttributeEnable
, 8, 8) |
3600 __gen_field(values
->PixelShaderDisablesAlphaToCoverage
, 7, 7) |
3601 __gen_field(values
->PixelShaderIsPerSample
, 6, 6) |
3602 __gen_field(values
->PixelShaderHasUAV
, 2, 2) |
3603 __gen_field(values
->PixelShaderUsesInputCoverageMask
, 1, 1) |
3608 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias 0x00000002
3609 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\
3611 .CommandSubType = 3, \
3612 ._3DCommandOpcode = 1, \
3613 ._3DCommandSubOpcode = 20, \
3616 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length 0x00000002
3618 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
{
3619 uint32_t CommandType
;
3620 uint32_t CommandSubType
;
3621 uint32_t _3DCommandOpcode
;
3622 uint32_t _3DCommandSubOpcode
;
3623 uint32_t DwordLength
;
3624 uint32_t ConstantBufferOffset
;
3625 uint32_t ConstantBufferSize
;
3629 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3630 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
* restrict values
)
3632 uint32_t *dw
= (uint32_t * restrict
) dst
;
3635 __gen_field(values
->CommandType
, 29, 31) |
3636 __gen_field(values
->CommandSubType
, 27, 28) |
3637 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3638 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3639 __gen_field(values
->DwordLength
, 0, 7) |
3643 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3644 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3649 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias 0x00000002
3650 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\
3652 .CommandSubType = 3, \
3653 ._3DCommandOpcode = 1, \
3654 ._3DCommandSubOpcode = 21, \
3657 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length 0x00000002
3659 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
{
3660 uint32_t CommandType
;
3661 uint32_t CommandSubType
;
3662 uint32_t _3DCommandOpcode
;
3663 uint32_t _3DCommandSubOpcode
;
3664 uint32_t DwordLength
;
3665 uint32_t ConstantBufferOffset
;
3666 uint32_t ConstantBufferSize
;
3670 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3671 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
* restrict values
)
3673 uint32_t *dw
= (uint32_t * restrict
) dst
;
3676 __gen_field(values
->CommandType
, 29, 31) |
3677 __gen_field(values
->CommandSubType
, 27, 28) |
3678 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3679 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3680 __gen_field(values
->DwordLength
, 0, 7) |
3684 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3685 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3690 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias 0x00000002
3691 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\
3693 .CommandSubType = 3, \
3694 ._3DCommandOpcode = 1, \
3695 ._3DCommandSubOpcode = 19, \
3698 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length 0x00000002
3700 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
{
3701 uint32_t CommandType
;
3702 uint32_t CommandSubType
;
3703 uint32_t _3DCommandOpcode
;
3704 uint32_t _3DCommandSubOpcode
;
3705 uint32_t DwordLength
;
3706 uint32_t ConstantBufferOffset
;
3707 uint32_t ConstantBufferSize
;
3711 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3712 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
* restrict values
)
3714 uint32_t *dw
= (uint32_t * restrict
) dst
;
3717 __gen_field(values
->CommandType
, 29, 31) |
3718 __gen_field(values
->CommandSubType
, 27, 28) |
3719 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3720 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3721 __gen_field(values
->DwordLength
, 0, 7) |
3725 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3726 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3731 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias 0x00000002
3732 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\
3734 .CommandSubType = 3, \
3735 ._3DCommandOpcode = 1, \
3736 ._3DCommandSubOpcode = 22, \
3739 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length 0x00000002
3741 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
{
3742 uint32_t CommandType
;
3743 uint32_t CommandSubType
;
3744 uint32_t _3DCommandOpcode
;
3745 uint32_t _3DCommandSubOpcode
;
3746 uint32_t DwordLength
;
3747 uint32_t ConstantBufferOffset
;
3748 uint32_t ConstantBufferSize
;
3752 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3753 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
* restrict values
)
3755 uint32_t *dw
= (uint32_t * restrict
) dst
;
3758 __gen_field(values
->CommandType
, 29, 31) |
3759 __gen_field(values
->CommandSubType
, 27, 28) |
3760 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3761 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3762 __gen_field(values
->DwordLength
, 0, 7) |
3766 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3767 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3772 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias 0x00000002
3773 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\
3775 .CommandSubType = 3, \
3776 ._3DCommandOpcode = 1, \
3777 ._3DCommandSubOpcode = 18, \
3780 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length 0x00000002
3782 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
{
3783 uint32_t CommandType
;
3784 uint32_t CommandSubType
;
3785 uint32_t _3DCommandOpcode
;
3786 uint32_t _3DCommandSubOpcode
;
3787 uint32_t DwordLength
;
3788 uint32_t ConstantBufferOffset
;
3789 uint32_t ConstantBufferSize
;
3793 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__gen_user_data
*data
, void * restrict dst
,
3794 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
* restrict values
)
3796 uint32_t *dw
= (uint32_t * restrict
) dst
;
3799 __gen_field(values
->CommandType
, 29, 31) |
3800 __gen_field(values
->CommandSubType
, 27, 28) |
3801 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3802 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3803 __gen_field(values
->DwordLength
, 0, 7) |
3807 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3808 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3813 #define GEN8_3DSTATE_RASTER_length_bias 0x00000002
3814 #define GEN8_3DSTATE_RASTER_header \
3816 .CommandSubType = 3, \
3817 ._3DCommandOpcode = 0, \
3818 ._3DCommandSubOpcode = 80, \
3821 #define GEN8_3DSTATE_RASTER_length 0x00000005
3823 struct GEN8_3DSTATE_RASTER
{
3824 uint32_t CommandType
;
3825 uint32_t CommandSubType
;
3826 uint32_t _3DCommandOpcode
;
3827 uint32_t _3DCommandSubOpcode
;
3828 uint32_t DwordLength
;
3834 #define CounterClockwise 1
3835 uint32_t FrontWinding
;
3836 #define FSC_NUMRASTSAMPLES_0 0
3837 #define FSC_NUMRASTSAMPLES_1 1
3838 #define FSC_NUMRASTSAMPLES_2 2
3839 #define FSC_NUMRASTSAMPLES_4 3
3840 #define FSC_NUMRASTSAMPLES_8 4
3841 #define FSC_NUMRASTSAMPLES_16 5
3842 uint32_t ForcedSampleCount
;
3843 #define CULLMODE_BOTH 0
3844 #define CULLMODE_NONE 1
3845 #define CULLMODE_FRONT 2
3846 #define CULLMODE_BACK 3
3850 uint32_t ForceMultisampling
;
3851 bool SmoothPointEnable
;
3852 bool DXMultisampleRasterizationEnable
;
3853 #define MSRASTMODE_OFF_PIXEL 0
3854 #define MSRASTMODE_OFF_PATTERN 1
3855 #define MSRASTMODE_ON_PIXEL 2
3856 #define MSRASTMODE_ON_PATTERN 3
3857 uint32_t DXMultisampleRasterizationMode
;
3858 bool GlobalDepthOffsetEnableSolid
;
3859 bool GlobalDepthOffsetEnableWireframe
;
3860 bool GlobalDepthOffsetEnablePoint
;
3861 #define RASTER_SOLID 0
3862 #define RASTER_WIREFRAME 1
3863 #define RASTER_POINT 2
3864 uint32_t FrontFaceFillMode
;
3865 #define RASTER_SOLID 0
3866 #define RASTER_WIREFRAME 1
3867 #define RASTER_POINT 2
3868 uint32_t BackFaceFillMode
;
3869 bool AntialiasingEnable
;
3870 bool ScissorRectangleEnable
;
3871 bool ViewportZClipTestEnable
;
3872 float GlobalDepthOffsetConstant
;
3873 float GlobalDepthOffsetScale
;
3874 float GlobalDepthOffsetClamp
;
3878 GEN8_3DSTATE_RASTER_pack(__gen_user_data
*data
, void * restrict dst
,
3879 const struct GEN8_3DSTATE_RASTER
* restrict values
)
3881 uint32_t *dw
= (uint32_t * restrict
) dst
;
3884 __gen_field(values
->CommandType
, 29, 31) |
3885 __gen_field(values
->CommandSubType
, 27, 28) |
3886 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3887 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3888 __gen_field(values
->DwordLength
, 0, 7) |
3892 __gen_field(values
->APIMode
, 22, 23) |
3893 __gen_field(values
->FrontWinding
, 21, 21) |
3894 __gen_field(values
->ForcedSampleCount
, 18, 20) |
3895 __gen_field(values
->CullMode
, 16, 17) |
3896 __gen_field(values
->ForceMultisampling
, 14, 14) |
3897 __gen_field(values
->SmoothPointEnable
, 13, 13) |
3898 __gen_field(values
->DXMultisampleRasterizationEnable
, 12, 12) |
3899 __gen_field(values
->DXMultisampleRasterizationMode
, 10, 11) |
3900 __gen_field(values
->GlobalDepthOffsetEnableSolid
, 9, 9) |
3901 __gen_field(values
->GlobalDepthOffsetEnableWireframe
, 8, 8) |
3902 __gen_field(values
->GlobalDepthOffsetEnablePoint
, 7, 7) |
3903 __gen_field(values
->FrontFaceFillMode
, 5, 6) |
3904 __gen_field(values
->BackFaceFillMode
, 3, 4) |
3905 __gen_field(values
->AntialiasingEnable
, 2, 2) |
3906 __gen_field(values
->ScissorRectangleEnable
, 1, 1) |
3907 __gen_field(values
->ViewportZClipTestEnable
, 0, 0) |
3911 __gen_float(values
->GlobalDepthOffsetConstant
) |
3915 __gen_float(values
->GlobalDepthOffsetScale
) |
3919 __gen_float(values
->GlobalDepthOffsetClamp
) |
3924 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias 0x00000002
3925 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_header\
3927 .CommandSubType = 3, \
3928 ._3DCommandOpcode = 1, \
3929 ._3DCommandSubOpcode = 2
3931 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_length 0x00000000
3933 #define GEN8_PALETTE_ENTRY_length 0x00000001
3935 struct GEN8_PALETTE_ENTRY
{
3943 GEN8_PALETTE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
3944 const struct GEN8_PALETTE_ENTRY
* restrict values
)
3946 uint32_t *dw
= (uint32_t * restrict
) dst
;
3949 __gen_field(values
->Alpha
, 24, 31) |
3950 __gen_field(values
->Red
, 16, 23) |
3951 __gen_field(values
->Green
, 8, 15) |
3952 __gen_field(values
->Blue
, 0, 7) |
3957 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
{
3958 uint32_t CommandType
;
3959 uint32_t CommandSubType
;
3960 uint32_t _3DCommandOpcode
;
3961 uint32_t _3DCommandSubOpcode
;
3962 uint32_t DwordLength
;
3963 /* variable length fields follow */
3967 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__gen_user_data
*data
, void * restrict dst
,
3968 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
* restrict values
)
3970 uint32_t *dw
= (uint32_t * restrict
) dst
;
3973 __gen_field(values
->CommandType
, 29, 31) |
3974 __gen_field(values
->CommandSubType
, 27, 28) |
3975 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3976 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3977 __gen_field(values
->DwordLength
, 0, 7) |
3980 /* variable length fields follow */
3983 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias 0x00000002
3984 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_header\
3986 .CommandSubType = 3, \
3987 ._3DCommandOpcode = 1, \
3988 ._3DCommandSubOpcode = 12
3990 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_length 0x00000000
3992 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
{
3993 uint32_t CommandType
;
3994 uint32_t CommandSubType
;
3995 uint32_t _3DCommandOpcode
;
3996 uint32_t _3DCommandSubOpcode
;
3997 uint32_t DwordLength
;
3998 /* variable length fields follow */
4002 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__gen_user_data
*data
, void * restrict dst
,
4003 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
* restrict values
)
4005 uint32_t *dw
= (uint32_t * restrict
) dst
;
4008 __gen_field(values
->CommandType
, 29, 31) |
4009 __gen_field(values
->CommandSubType
, 27, 28) |
4010 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4011 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4012 __gen_field(values
->DwordLength
, 0, 7) |
4015 /* variable length fields follow */
4018 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias 0x00000002
4019 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\
4021 .CommandSubType = 3, \
4022 ._3DCommandOpcode = 0, \
4023 ._3DCommandSubOpcode = 45, \
4026 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length 0x00000002
4028 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
{
4029 uint32_t CommandType
;
4030 uint32_t CommandSubType
;
4031 uint32_t _3DCommandOpcode
;
4032 uint32_t _3DCommandSubOpcode
;
4033 uint32_t DwordLength
;
4034 uint32_t PointertoDSSamplerState
;
4038 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
4039 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
* restrict values
)
4041 uint32_t *dw
= (uint32_t * restrict
) dst
;
4044 __gen_field(values
->CommandType
, 29, 31) |
4045 __gen_field(values
->CommandSubType
, 27, 28) |
4046 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4047 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4048 __gen_field(values
->DwordLength
, 0, 7) |
4052 __gen_offset(values
->PointertoDSSamplerState
, 5, 31) |
4057 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias 0x00000002
4058 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\
4060 .CommandSubType = 3, \
4061 ._3DCommandOpcode = 0, \
4062 ._3DCommandSubOpcode = 46, \
4065 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length 0x00000002
4067 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
{
4068 uint32_t CommandType
;
4069 uint32_t CommandSubType
;
4070 uint32_t _3DCommandOpcode
;
4071 uint32_t _3DCommandSubOpcode
;
4072 uint32_t DwordLength
;
4073 uint32_t PointertoGSSamplerState
;
4077 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
4078 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
* restrict values
)
4080 uint32_t *dw
= (uint32_t * restrict
) dst
;
4083 __gen_field(values
->CommandType
, 29, 31) |
4084 __gen_field(values
->CommandSubType
, 27, 28) |
4085 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4086 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4087 __gen_field(values
->DwordLength
, 0, 7) |
4091 __gen_offset(values
->PointertoGSSamplerState
, 5, 31) |
4096 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias 0x00000002
4097 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\
4099 .CommandSubType = 3, \
4100 ._3DCommandOpcode = 0, \
4101 ._3DCommandSubOpcode = 44, \
4104 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length 0x00000002
4106 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
{
4107 uint32_t CommandType
;
4108 uint32_t CommandSubType
;
4109 uint32_t _3DCommandOpcode
;
4110 uint32_t _3DCommandSubOpcode
;
4111 uint32_t DwordLength
;
4112 uint32_t PointertoHSSamplerState
;
4116 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
4117 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
* restrict values
)
4119 uint32_t *dw
= (uint32_t * restrict
) dst
;
4122 __gen_field(values
->CommandType
, 29, 31) |
4123 __gen_field(values
->CommandSubType
, 27, 28) |
4124 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4125 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4126 __gen_field(values
->DwordLength
, 0, 7) |
4130 __gen_offset(values
->PointertoHSSamplerState
, 5, 31) |
4135 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias 0x00000002
4136 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\
4138 .CommandSubType = 3, \
4139 ._3DCommandOpcode = 0, \
4140 ._3DCommandSubOpcode = 47, \
4143 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length 0x00000002
4145 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
{
4146 uint32_t CommandType
;
4147 uint32_t CommandSubType
;
4148 uint32_t _3DCommandOpcode
;
4149 uint32_t _3DCommandSubOpcode
;
4150 uint32_t DwordLength
;
4151 uint32_t PointertoPSSamplerState
;
4155 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
4156 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
* restrict values
)
4158 uint32_t *dw
= (uint32_t * restrict
) dst
;
4161 __gen_field(values
->CommandType
, 29, 31) |
4162 __gen_field(values
->CommandSubType
, 27, 28) |
4163 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4164 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4165 __gen_field(values
->DwordLength
, 0, 7) |
4169 __gen_offset(values
->PointertoPSSamplerState
, 5, 31) |
4174 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias 0x00000002
4175 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\
4177 .CommandSubType = 3, \
4178 ._3DCommandOpcode = 0, \
4179 ._3DCommandSubOpcode = 43, \
4182 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length 0x00000002
4184 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
{
4185 uint32_t CommandType
;
4186 uint32_t CommandSubType
;
4187 uint32_t _3DCommandOpcode
;
4188 uint32_t _3DCommandSubOpcode
;
4189 uint32_t DwordLength
;
4190 uint32_t PointertoVSSamplerState
;
4194 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
4195 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
* restrict values
)
4197 uint32_t *dw
= (uint32_t * restrict
) dst
;
4200 __gen_field(values
->CommandType
, 29, 31) |
4201 __gen_field(values
->CommandSubType
, 27, 28) |
4202 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4203 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4204 __gen_field(values
->DwordLength
, 0, 7) |
4208 __gen_offset(values
->PointertoVSSamplerState
, 5, 31) |
4213 #define GEN8_3DSTATE_SAMPLE_MASK_length_bias 0x00000002
4214 #define GEN8_3DSTATE_SAMPLE_MASK_header \
4216 .CommandSubType = 3, \
4217 ._3DCommandOpcode = 0, \
4218 ._3DCommandSubOpcode = 24, \
4221 #define GEN8_3DSTATE_SAMPLE_MASK_length 0x00000002
4223 struct GEN8_3DSTATE_SAMPLE_MASK
{
4224 uint32_t CommandType
;
4225 uint32_t CommandSubType
;
4226 uint32_t _3DCommandOpcode
;
4227 uint32_t _3DCommandSubOpcode
;
4228 uint32_t DwordLength
;
4229 uint32_t SampleMask
;
4233 GEN8_3DSTATE_SAMPLE_MASK_pack(__gen_user_data
*data
, void * restrict dst
,
4234 const struct GEN8_3DSTATE_SAMPLE_MASK
* restrict values
)
4236 uint32_t *dw
= (uint32_t * restrict
) dst
;
4239 __gen_field(values
->CommandType
, 29, 31) |
4240 __gen_field(values
->CommandSubType
, 27, 28) |
4241 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4242 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4243 __gen_field(values
->DwordLength
, 0, 7) |
4247 __gen_field(values
->SampleMask
, 0, 15) |
4252 #define GEN8_3DSTATE_SAMPLE_PATTERN_length_bias 0x00000002
4253 #define GEN8_3DSTATE_SAMPLE_PATTERN_header \
4255 .CommandSubType = 3, \
4256 ._3DCommandOpcode = 1, \
4257 ._3DCommandSubOpcode = 28, \
4260 #define GEN8_3DSTATE_SAMPLE_PATTERN_length 0x00000009
4262 struct GEN8_3DSTATE_SAMPLE_PATTERN
{
4263 uint32_t CommandType
;
4264 uint32_t CommandSubType
;
4265 uint32_t _3DCommandOpcode
;
4266 uint32_t _3DCommandSubOpcode
;
4267 uint32_t DwordLength
;
4268 float _8xSample7XOffset
;
4269 float _8xSample7YOffset
;
4270 float _8xSample6XOffset
;
4271 float _8xSample6YOffset
;
4272 float _8xSample5XOffset
;
4273 float _8xSample5YOffset
;
4274 float _8xSample4XOffset
;
4275 float _8xSample4YOffset
;
4276 float _8xSample3XOffset
;
4277 float _8xSample3YOffset
;
4278 float _8xSample2XOffset
;
4279 float _8xSample2YOffset
;
4280 float _8xSample1XOffset
;
4281 float _8xSample1YOffset
;
4282 float _8xSample0XOffset
;
4283 float _8xSample0YOffset
;
4284 float _4xSample3XOffset
;
4285 float _4xSample3YOffset
;
4286 float _4xSample2XOffset
;
4287 float _4xSample2YOffset
;
4288 float _4xSample1XOffset
;
4289 float _4xSample1YOffset
;
4290 float _4xSample0XOffset
;
4291 float _4xSample0YOffset
;
4292 float _1xSample0XOffset
;
4293 float _1xSample0YOffset
;
4294 float _2xSample1XOffset
;
4295 float _2xSample1YOffset
;
4296 float _2xSample0XOffset
;
4297 float _2xSample0YOffset
;
4301 GEN8_3DSTATE_SAMPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
4302 const struct GEN8_3DSTATE_SAMPLE_PATTERN
* restrict values
)
4304 uint32_t *dw
= (uint32_t * restrict
) dst
;
4307 __gen_field(values
->CommandType
, 29, 31) |
4308 __gen_field(values
->CommandSubType
, 27, 28) |
4309 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4310 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4311 __gen_field(values
->DwordLength
, 0, 7) |
4314 for (uint32_t i
= 0, j
= 1; i
< 4; i
+= 1, j
++) {
4320 __gen_field(values
->_8xSample7XOffset
* (1 << 4), 28, 31) |
4321 __gen_field(values
->_8xSample7YOffset
* (1 << 4), 24, 27) |
4322 __gen_field(values
->_8xSample6XOffset
* (1 << 4), 20, 23) |
4323 __gen_field(values
->_8xSample6YOffset
* (1 << 4), 16, 19) |
4324 __gen_field(values
->_8xSample5XOffset
* (1 << 4), 12, 15) |
4325 __gen_field(values
->_8xSample5YOffset
* (1 << 4), 8, 11) |
4326 __gen_field(values
->_8xSample4XOffset
* (1 << 4), 4, 7) |
4327 __gen_field(values
->_8xSample4YOffset
* (1 << 4), 0, 3) |
4331 __gen_field(values
->_8xSample3XOffset
* (1 << 4), 28, 31) |
4332 __gen_field(values
->_8xSample3YOffset
* (1 << 4), 24, 27) |
4333 __gen_field(values
->_8xSample2XOffset
* (1 << 4), 20, 23) |
4334 __gen_field(values
->_8xSample2YOffset
* (1 << 4), 16, 19) |
4335 __gen_field(values
->_8xSample1XOffset
* (1 << 4), 12, 15) |
4336 __gen_field(values
->_8xSample1YOffset
* (1 << 4), 8, 11) |
4337 __gen_field(values
->_8xSample0XOffset
* (1 << 4), 4, 7) |
4338 __gen_field(values
->_8xSample0YOffset
* (1 << 4), 0, 3) |
4342 __gen_field(values
->_4xSample3XOffset
* (1 << 4), 28, 31) |
4343 __gen_field(values
->_4xSample3YOffset
* (1 << 4), 24, 27) |
4344 __gen_field(values
->_4xSample2XOffset
* (1 << 4), 20, 23) |
4345 __gen_field(values
->_4xSample2YOffset
* (1 << 4), 16, 19) |
4346 __gen_field(values
->_4xSample1XOffset
* (1 << 4), 12, 15) |
4347 __gen_field(values
->_4xSample1YOffset
* (1 << 4), 8, 11) |
4348 __gen_field(values
->_4xSample0XOffset
* (1 << 4), 4, 7) |
4349 __gen_field(values
->_4xSample0YOffset
* (1 << 4), 0, 3) |
4353 __gen_field(values
->_1xSample0XOffset
* (1 << 4), 20, 23) |
4354 __gen_field(values
->_1xSample0YOffset
* (1 << 4), 16, 19) |
4355 __gen_field(values
->_2xSample1XOffset
* (1 << 4), 12, 15) |
4356 __gen_field(values
->_2xSample1YOffset
* (1 << 4), 8, 11) |
4357 __gen_field(values
->_2xSample0XOffset
* (1 << 4), 4, 7) |
4358 __gen_field(values
->_2xSample0YOffset
* (1 << 4), 0, 3) |
4363 #define GEN8_3DSTATE_SBE_length_bias 0x00000002
4364 #define GEN8_3DSTATE_SBE_header \
4366 .CommandSubType = 3, \
4367 ._3DCommandOpcode = 0, \
4368 ._3DCommandSubOpcode = 31, \
4371 #define GEN8_3DSTATE_SBE_length 0x00000004
4373 struct GEN8_3DSTATE_SBE
{
4374 uint32_t CommandType
;
4375 uint32_t CommandSubType
;
4376 uint32_t _3DCommandOpcode
;
4377 uint32_t _3DCommandSubOpcode
;
4378 uint32_t DwordLength
;
4379 bool ForceVertexURBEntryReadLength
;
4380 bool ForceVertexURBEntryReadOffset
;
4381 uint32_t NumberofSFOutputAttributes
;
4382 bool AttributeSwizzleEnable
;
4385 uint32_t PointSpriteTextureCoordinateOrigin
;
4386 bool PrimitiveIDOverrideComponentW
;
4387 bool PrimitiveIDOverrideComponentZ
;
4388 bool PrimitiveIDOverrideComponentY
;
4389 bool PrimitiveIDOverrideComponentX
;
4390 uint32_t VertexURBEntryReadLength
;
4391 uint32_t VertexURBEntryReadOffset
;
4392 uint32_t PrimitiveIDOverrideAttributeSelect
;
4393 uint32_t PointSpriteTextureCoordinateEnable
;
4394 uint32_t ConstantInterpolationEnable
;
4398 GEN8_3DSTATE_SBE_pack(__gen_user_data
*data
, void * restrict dst
,
4399 const struct GEN8_3DSTATE_SBE
* restrict values
)
4401 uint32_t *dw
= (uint32_t * restrict
) dst
;
4404 __gen_field(values
->CommandType
, 29, 31) |
4405 __gen_field(values
->CommandSubType
, 27, 28) |
4406 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4407 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4408 __gen_field(values
->DwordLength
, 0, 7) |
4412 __gen_field(values
->ForceVertexURBEntryReadLength
, 29, 29) |
4413 __gen_field(values
->ForceVertexURBEntryReadOffset
, 28, 28) |
4414 __gen_field(values
->NumberofSFOutputAttributes
, 22, 27) |
4415 __gen_field(values
->AttributeSwizzleEnable
, 21, 21) |
4416 __gen_field(values
->PointSpriteTextureCoordinateOrigin
, 20, 20) |
4417 __gen_field(values
->PrimitiveIDOverrideComponentW
, 19, 19) |
4418 __gen_field(values
->PrimitiveIDOverrideComponentZ
, 18, 18) |
4419 __gen_field(values
->PrimitiveIDOverrideComponentY
, 17, 17) |
4420 __gen_field(values
->PrimitiveIDOverrideComponentX
, 16, 16) |
4421 __gen_field(values
->VertexURBEntryReadLength
, 11, 15) |
4422 __gen_field(values
->VertexURBEntryReadOffset
, 5, 10) |
4423 __gen_field(values
->PrimitiveIDOverrideAttributeSelect
, 0, 4) |
4427 __gen_field(values
->PointSpriteTextureCoordinateEnable
, 0, 31) |
4431 __gen_field(values
->ConstantInterpolationEnable
, 0, 31) |
4436 #define GEN8_3DSTATE_SBE_SWIZ_length_bias 0x00000002
4437 #define GEN8_3DSTATE_SBE_SWIZ_header \
4439 .CommandSubType = 3, \
4440 ._3DCommandOpcode = 0, \
4441 ._3DCommandSubOpcode = 81, \
4444 #define GEN8_3DSTATE_SBE_SWIZ_length 0x0000000b
4446 #define GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_length 0x00000001
4448 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
{
4449 bool ComponentOverrideW
;
4450 bool ComponentOverrideZ
;
4451 bool ComponentOverrideY
;
4452 bool ComponentOverrideX
;
4453 uint32_t SwizzleControlMode
;
4454 #define CONST_0000 0
4455 #define CONST_0001_FLOAT 1
4456 #define CONST_1111_FLOAT 2
4458 uint32_t ConstantSource
;
4460 #define INPUTATTR_FACING 1
4461 #define INPUTATTR_W 2
4462 #define INPUTATTR_FACING_W 3
4463 uint32_t SwizzleSelect
;
4464 uint32_t SourceAttribute
;
4468 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__gen_user_data
*data
, void * restrict dst
,
4469 const struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
* restrict values
)
4471 uint32_t *dw
= (uint32_t * restrict
) dst
;
4474 __gen_field(values
->ComponentOverrideW
, 15, 15) |
4475 __gen_field(values
->ComponentOverrideZ
, 14, 14) |
4476 __gen_field(values
->ComponentOverrideY
, 13, 13) |
4477 __gen_field(values
->ComponentOverrideX
, 12, 12) |
4478 __gen_field(values
->SwizzleControlMode
, 11, 11) |
4479 __gen_field(values
->ConstantSource
, 9, 10) |
4480 __gen_field(values
->SwizzleSelect
, 6, 7) |
4481 __gen_field(values
->SourceAttribute
, 0, 4) |
4486 struct GEN8_3DSTATE_SBE_SWIZ
{
4487 uint32_t CommandType
;
4488 uint32_t CommandSubType
;
4489 uint32_t _3DCommandOpcode
;
4490 uint32_t _3DCommandSubOpcode
;
4491 uint32_t DwordLength
;
4492 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute
[16];
4493 uint32_t AttributeWrapShortestEnables
[16];
4497 GEN8_3DSTATE_SBE_SWIZ_pack(__gen_user_data
*data
, void * restrict dst
,
4498 const struct GEN8_3DSTATE_SBE_SWIZ
* restrict values
)
4500 uint32_t *dw
= (uint32_t * restrict
) dst
;
4503 __gen_field(values
->CommandType
, 29, 31) |
4504 __gen_field(values
->CommandSubType
, 27, 28) |
4505 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4506 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4507 __gen_field(values
->DwordLength
, 0, 7) |
4510 for (uint32_t i
= 0, j
= 1; i
< 16; i
+= 2, j
++) {
4511 uint32_t dw_Attribute0
;
4512 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data
, &dw_Attribute0
, &values
->Attribute
[i
+ 0]);
4513 uint32_t dw_Attribute1
;
4514 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data
, &dw_Attribute1
, &values
->Attribute
[i
+ 1]);
4516 __gen_field(dw_Attribute0
, 0, 15) |
4517 __gen_field(dw_Attribute1
, 16, 31) |
4521 for (uint32_t i
= 0, j
= 9; i
< 16; i
+= 8, j
++) {
4523 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 0], 0, 3) |
4524 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 1], 4, 7) |
4525 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 2], 8, 11) |
4526 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 3], 12, 15) |
4527 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 4], 16, 19) |
4528 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 5], 20, 23) |
4529 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 6], 24, 27) |
4530 __gen_field(values
->AttributeWrapShortestEnables
[i
+ 7], 28, 31) |
4536 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length_bias 0x00000002
4537 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_header\
4539 .CommandSubType = 3, \
4540 ._3DCommandOpcode = 0, \
4541 ._3DCommandSubOpcode = 15, \
4544 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length 0x00000002
4546 struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
{
4547 uint32_t CommandType
;
4548 uint32_t CommandSubType
;
4549 uint32_t _3DCommandOpcode
;
4550 uint32_t _3DCommandSubOpcode
;
4551 uint32_t DwordLength
;
4552 uint32_t ScissorRectPointer
;
4556 GEN8_3DSTATE_SCISSOR_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
4557 const struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
* restrict values
)
4559 uint32_t *dw
= (uint32_t * restrict
) dst
;
4562 __gen_field(values
->CommandType
, 29, 31) |
4563 __gen_field(values
->CommandSubType
, 27, 28) |
4564 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4565 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4566 __gen_field(values
->DwordLength
, 0, 7) |
4570 __gen_offset(values
->ScissorRectPointer
, 5, 31) |
4575 #define GEN8_3DSTATE_SF_length_bias 0x00000002
4576 #define GEN8_3DSTATE_SF_header \
4578 .CommandSubType = 3, \
4579 ._3DCommandOpcode = 0, \
4580 ._3DCommandSubOpcode = 19, \
4583 #define GEN8_3DSTATE_SF_length 0x00000004
4585 struct GEN8_3DSTATE_SF
{
4586 uint32_t CommandType
;
4587 uint32_t CommandSubType
;
4588 uint32_t _3DCommandOpcode
;
4589 uint32_t _3DCommandSubOpcode
;
4590 uint32_t DwordLength
;
4591 bool LegacyGlobalDepthBiasEnable
;
4592 bool StatisticsEnable
;
4593 bool ViewportTransformEnable
;
4599 uint32_t LineEndCapAntialiasingRegionWidth
;
4600 bool LastPixelEnable
;
4601 uint32_t TriangleStripListProvokingVertexSelect
;
4602 uint32_t LineStripListProvokingVertexSelect
;
4603 uint32_t TriangleFanProvokingVertexSelect
;
4604 #define AALINEDISTANCE_TRUE 1
4605 uint32_t AALineDistanceMode
;
4606 bool SmoothPointEnable
;
4607 uint32_t VertexSubPixelPrecisionSelect
;
4610 uint32_t PointWidthSource
;
4615 GEN8_3DSTATE_SF_pack(__gen_user_data
*data
, void * restrict dst
,
4616 const struct GEN8_3DSTATE_SF
* restrict values
)
4618 uint32_t *dw
= (uint32_t * restrict
) dst
;
4621 __gen_field(values
->CommandType
, 29, 31) |
4622 __gen_field(values
->CommandSubType
, 27, 28) |
4623 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4624 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4625 __gen_field(values
->DwordLength
, 0, 7) |
4629 __gen_field(values
->LegacyGlobalDepthBiasEnable
, 11, 11) |
4630 __gen_field(values
->StatisticsEnable
, 10, 10) |
4631 __gen_field(values
->ViewportTransformEnable
, 1, 1) |
4635 __gen_field(values
->LineWidth
* (1 << 7), 18, 27) |
4636 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 16, 17) |
4640 __gen_field(values
->LastPixelEnable
, 31, 31) |
4641 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 29, 30) |
4642 __gen_field(values
->LineStripListProvokingVertexSelect
, 27, 28) |
4643 __gen_field(values
->TriangleFanProvokingVertexSelect
, 25, 26) |
4644 __gen_field(values
->AALineDistanceMode
, 14, 14) |
4645 __gen_field(values
->SmoothPointEnable
, 13, 13) |
4646 __gen_field(values
->VertexSubPixelPrecisionSelect
, 12, 12) |
4647 __gen_field(values
->PointWidthSource
, 11, 11) |
4648 __gen_field(values
->PointWidth
* (1 << 3), 0, 10) |
4653 #define GEN8_3DSTATE_SO_BUFFER_length_bias 0x00000002
4654 #define GEN8_3DSTATE_SO_BUFFER_header \
4656 .CommandSubType = 3, \
4657 ._3DCommandOpcode = 1, \
4658 ._3DCommandSubOpcode = 24, \
4661 #define GEN8_3DSTATE_SO_BUFFER_length 0x00000008
4663 struct GEN8_3DSTATE_SO_BUFFER
{
4664 uint32_t CommandType
;
4665 uint32_t CommandSubType
;
4666 uint32_t _3DCommandOpcode
;
4667 uint32_t _3DCommandSubOpcode
;
4668 uint32_t DwordLength
;
4669 bool SOBufferEnable
;
4670 uint32_t SOBufferIndex
;
4671 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SOBufferObjectControlState
;
4672 bool StreamOffsetWriteEnable
;
4673 bool StreamOutputBufferOffsetAddressEnable
;
4674 __gen_address_type SurfaceBaseAddress
;
4675 uint32_t SurfaceSize
;
4676 __gen_address_type StreamOutputBufferOffsetAddress
;
4677 uint32_t StreamOffset
;
4681 GEN8_3DSTATE_SO_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4682 const struct GEN8_3DSTATE_SO_BUFFER
* restrict values
)
4684 uint32_t *dw
= (uint32_t * restrict
) dst
;
4687 __gen_field(values
->CommandType
, 29, 31) |
4688 __gen_field(values
->CommandSubType
, 27, 28) |
4689 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4690 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4691 __gen_field(values
->DwordLength
, 0, 7) |
4694 uint32_t dw_SOBufferObjectControlState
;
4695 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SOBufferObjectControlState
, &values
->SOBufferObjectControlState
);
4697 __gen_field(values
->SOBufferEnable
, 31, 31) |
4698 __gen_field(values
->SOBufferIndex
, 29, 30) |
4699 __gen_field(dw_SOBufferObjectControlState
, 22, 28) |
4700 __gen_field(values
->StreamOffsetWriteEnable
, 21, 21) |
4701 __gen_field(values
->StreamOutputBufferOffsetAddressEnable
, 20, 20) |
4708 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4714 __gen_field(values
->SurfaceSize
, 0, 29) |
4721 __gen_combine_address(data
, &dw
[5], values
->StreamOutputBufferOffsetAddress
, dw5
);
4727 __gen_field(values
->StreamOffset
, 0, 31) |
4732 #define GEN8_3DSTATE_SO_DECL_LIST_length_bias 0x00000002
4733 #define GEN8_3DSTATE_SO_DECL_LIST_header \
4735 .CommandSubType = 3, \
4736 ._3DCommandOpcode = 1, \
4737 ._3DCommandSubOpcode = 23
4739 #define GEN8_3DSTATE_SO_DECL_LIST_length 0x00000000
4741 #define GEN8_SO_DECL_ENTRY_length 0x00000002
4743 #define GEN8_SO_DECL_length 0x00000001
4745 struct GEN8_SO_DECL
{
4746 uint32_t OutputBufferSlot
;
4748 uint32_t RegisterIndex
;
4749 uint32_t ComponentMask
;
4753 GEN8_SO_DECL_pack(__gen_user_data
*data
, void * restrict dst
,
4754 const struct GEN8_SO_DECL
* restrict values
)
4756 uint32_t *dw
= (uint32_t * restrict
) dst
;
4759 __gen_field(values
->OutputBufferSlot
, 12, 13) |
4760 __gen_field(values
->HoleFlag
, 11, 11) |
4761 __gen_field(values
->RegisterIndex
, 4, 9) |
4762 __gen_field(values
->ComponentMask
, 0, 3) |
4767 struct GEN8_SO_DECL_ENTRY
{
4768 struct GEN8_SO_DECL Stream3Decl
;
4769 struct GEN8_SO_DECL Stream2Decl
;
4770 struct GEN8_SO_DECL Stream1Decl
;
4771 struct GEN8_SO_DECL Stream0Decl
;
4775 GEN8_SO_DECL_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
4776 const struct GEN8_SO_DECL_ENTRY
* restrict values
)
4778 uint32_t *dw
= (uint32_t * restrict
) dst
;
4780 uint32_t dw_Stream3Decl
;
4781 GEN8_SO_DECL_pack(data
, &dw_Stream3Decl
, &values
->Stream3Decl
);
4782 uint32_t dw_Stream2Decl
;
4783 GEN8_SO_DECL_pack(data
, &dw_Stream2Decl
, &values
->Stream2Decl
);
4784 uint32_t dw_Stream1Decl
;
4785 GEN8_SO_DECL_pack(data
, &dw_Stream1Decl
, &values
->Stream1Decl
);
4786 uint32_t dw_Stream0Decl
;
4787 GEN8_SO_DECL_pack(data
, &dw_Stream0Decl
, &values
->Stream0Decl
);
4789 __gen_field(dw_Stream3Decl
, 48, 63) |
4790 __gen_field(dw_Stream2Decl
, 32, 47) |
4791 __gen_field(dw_Stream1Decl
, 16, 31) |
4792 __gen_field(dw_Stream0Decl
, 0, 15) |
4800 struct GEN8_3DSTATE_SO_DECL_LIST
{
4801 uint32_t CommandType
;
4802 uint32_t CommandSubType
;
4803 uint32_t _3DCommandOpcode
;
4804 uint32_t _3DCommandSubOpcode
;
4805 uint32_t DwordLength
;
4806 uint32_t StreamtoBufferSelects3
;
4807 uint32_t StreamtoBufferSelects2
;
4808 uint32_t StreamtoBufferSelects1
;
4809 uint32_t StreamtoBufferSelects0
;
4810 uint32_t NumEntries3
;
4811 uint32_t NumEntries2
;
4812 uint32_t NumEntries1
;
4813 uint32_t NumEntries0
;
4814 /* variable length fields follow */
4818 GEN8_3DSTATE_SO_DECL_LIST_pack(__gen_user_data
*data
, void * restrict dst
,
4819 const struct GEN8_3DSTATE_SO_DECL_LIST
* restrict values
)
4821 uint32_t *dw
= (uint32_t * restrict
) dst
;
4824 __gen_field(values
->CommandType
, 29, 31) |
4825 __gen_field(values
->CommandSubType
, 27, 28) |
4826 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4827 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4828 __gen_field(values
->DwordLength
, 0, 8) |
4832 __gen_field(values
->StreamtoBufferSelects3
, 12, 15) |
4833 __gen_field(values
->StreamtoBufferSelects2
, 8, 11) |
4834 __gen_field(values
->StreamtoBufferSelects1
, 4, 7) |
4835 __gen_field(values
->StreamtoBufferSelects0
, 0, 3) |
4839 __gen_field(values
->NumEntries3
, 24, 31) |
4840 __gen_field(values
->NumEntries2
, 16, 23) |
4841 __gen_field(values
->NumEntries1
, 8, 15) |
4842 __gen_field(values
->NumEntries0
, 0, 7) |
4845 /* variable length fields follow */
4848 #define GEN8_3DSTATE_STENCIL_BUFFER_length_bias 0x00000002
4849 #define GEN8_3DSTATE_STENCIL_BUFFER_header \
4851 .CommandSubType = 3, \
4852 ._3DCommandOpcode = 0, \
4853 ._3DCommandSubOpcode = 6, \
4856 #define GEN8_3DSTATE_STENCIL_BUFFER_length 0x00000005
4858 struct GEN8_3DSTATE_STENCIL_BUFFER
{
4859 uint32_t CommandType
;
4860 uint32_t CommandSubType
;
4861 uint32_t _3DCommandOpcode
;
4862 uint32_t _3DCommandSubOpcode
;
4863 uint32_t DwordLength
;
4864 uint32_t StencilBufferEnable
;
4865 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StencilBufferObjectControlState
;
4866 uint32_t SurfacePitch
;
4867 __gen_address_type SurfaceBaseAddress
;
4868 uint32_t SurfaceQPitch
;
4872 GEN8_3DSTATE_STENCIL_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4873 const struct GEN8_3DSTATE_STENCIL_BUFFER
* restrict values
)
4875 uint32_t *dw
= (uint32_t * restrict
) dst
;
4878 __gen_field(values
->CommandType
, 29, 31) |
4879 __gen_field(values
->CommandSubType
, 27, 28) |
4880 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4881 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4882 __gen_field(values
->DwordLength
, 0, 7) |
4885 uint32_t dw_StencilBufferObjectControlState
;
4886 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StencilBufferObjectControlState
, &values
->StencilBufferObjectControlState
);
4888 __gen_field(values
->StencilBufferEnable
, 31, 31) |
4889 __gen_field(dw_StencilBufferObjectControlState
, 22, 28) |
4890 __gen_field(values
->SurfacePitch
, 0, 16) |
4897 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4903 __gen_field(values
->SurfaceQPitch
, 0, 14) |
4908 #define GEN8_3DSTATE_STREAMOUT_length_bias 0x00000002
4909 #define GEN8_3DSTATE_STREAMOUT_header \
4911 .CommandSubType = 3, \
4912 ._3DCommandOpcode = 0, \
4913 ._3DCommandSubOpcode = 30, \
4916 #define GEN8_3DSTATE_STREAMOUT_length 0x00000005
4918 struct GEN8_3DSTATE_STREAMOUT
{
4919 uint32_t CommandType
;
4920 uint32_t CommandSubType
;
4921 uint32_t _3DCommandOpcode
;
4922 uint32_t _3DCommandSubOpcode
;
4923 uint32_t DwordLength
;
4924 uint32_t SOFunctionEnable
;
4925 uint32_t APIRenderingDisable
;
4926 uint32_t RenderStreamSelect
;
4929 uint32_t ReorderMode
;
4930 bool SOStatisticsEnable
;
4935 uint32_t ForceRendering
;
4936 uint32_t Stream3VertexReadOffset
;
4937 uint32_t Stream3VertexReadLength
;
4938 uint32_t Stream2VertexReadOffset
;
4939 uint32_t Stream2VertexReadLength
;
4940 uint32_t Stream1VertexReadOffset
;
4941 uint32_t Stream1VertexReadLength
;
4942 uint32_t Stream0VertexReadOffset
;
4943 uint32_t Stream0VertexReadLength
;
4944 uint32_t Buffer1SurfacePitch
;
4945 uint32_t Buffer0SurfacePitch
;
4946 uint32_t Buffer3SurfacePitch
;
4947 uint32_t Buffer2SurfacePitch
;
4951 GEN8_3DSTATE_STREAMOUT_pack(__gen_user_data
*data
, void * restrict dst
,
4952 const struct GEN8_3DSTATE_STREAMOUT
* restrict values
)
4954 uint32_t *dw
= (uint32_t * restrict
) dst
;
4957 __gen_field(values
->CommandType
, 29, 31) |
4958 __gen_field(values
->CommandSubType
, 27, 28) |
4959 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4960 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4961 __gen_field(values
->DwordLength
, 0, 7) |
4965 __gen_field(values
->SOFunctionEnable
, 31, 31) |
4966 __gen_field(values
->APIRenderingDisable
, 30, 30) |
4967 __gen_field(values
->RenderStreamSelect
, 27, 28) |
4968 __gen_field(values
->ReorderMode
, 26, 26) |
4969 __gen_field(values
->SOStatisticsEnable
, 25, 25) |
4970 __gen_field(values
->ForceRendering
, 23, 24) |
4974 __gen_field(values
->Stream3VertexReadOffset
, 29, 29) |
4975 __gen_field(values
->Stream3VertexReadLength
, 24, 28) |
4976 __gen_field(values
->Stream2VertexReadOffset
, 21, 21) |
4977 __gen_field(values
->Stream2VertexReadLength
, 16, 20) |
4978 __gen_field(values
->Stream1VertexReadOffset
, 13, 13) |
4979 __gen_field(values
->Stream1VertexReadLength
, 8, 12) |
4980 __gen_field(values
->Stream0VertexReadOffset
, 5, 5) |
4981 __gen_field(values
->Stream0VertexReadLength
, 0, 4) |
4985 __gen_field(values
->Buffer1SurfacePitch
, 16, 27) |
4986 __gen_field(values
->Buffer0SurfacePitch
, 0, 11) |
4990 __gen_field(values
->Buffer3SurfacePitch
, 16, 27) |
4991 __gen_field(values
->Buffer2SurfacePitch
, 0, 11) |
4996 #define GEN8_3DSTATE_TE_length_bias 0x00000002
4997 #define GEN8_3DSTATE_TE_header \
4999 .CommandSubType = 3, \
5000 ._3DCommandOpcode = 0, \
5001 ._3DCommandSubOpcode = 28, \
5004 #define GEN8_3DSTATE_TE_length 0x00000004
5006 struct GEN8_3DSTATE_TE
{
5007 uint32_t CommandType
;
5008 uint32_t CommandSubType
;
5009 uint32_t _3DCommandOpcode
;
5010 uint32_t _3DCommandSubOpcode
;
5011 uint32_t DwordLength
;
5013 #define ODD_FRACTIONAL 1
5014 #define EVEN_FRACTIONAL 2
5015 uint32_t Partitioning
;
5017 #define OUTPUT_LINE 1
5018 #define OUTPUT_TRI_CW 2
5019 #define OUTPUT_TRI_CCW 3
5020 uint32_t OutputTopology
;
5029 float MaximumTessellationFactorOdd
;
5030 float MaximumTessellationFactorNotOdd
;
5034 GEN8_3DSTATE_TE_pack(__gen_user_data
*data
, void * restrict dst
,
5035 const struct GEN8_3DSTATE_TE
* restrict values
)
5037 uint32_t *dw
= (uint32_t * restrict
) dst
;
5040 __gen_field(values
->CommandType
, 29, 31) |
5041 __gen_field(values
->CommandSubType
, 27, 28) |
5042 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5043 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5044 __gen_field(values
->DwordLength
, 0, 7) |
5048 __gen_field(values
->Partitioning
, 12, 13) |
5049 __gen_field(values
->OutputTopology
, 8, 9) |
5050 __gen_field(values
->TEDomain
, 4, 5) |
5051 __gen_field(values
->TEMode
, 1, 2) |
5052 __gen_field(values
->TEEnable
, 0, 0) |
5056 __gen_float(values
->MaximumTessellationFactorOdd
) |
5060 __gen_float(values
->MaximumTessellationFactorNotOdd
) |
5065 #define GEN8_3DSTATE_URB_DS_length_bias 0x00000002
5066 #define GEN8_3DSTATE_URB_DS_header \
5068 .CommandSubType = 3, \
5069 ._3DCommandOpcode = 0, \
5070 ._3DCommandSubOpcode = 50, \
5073 #define GEN8_3DSTATE_URB_DS_length 0x00000002
5075 struct GEN8_3DSTATE_URB_DS
{
5076 uint32_t CommandType
;
5077 uint32_t CommandSubType
;
5078 uint32_t _3DCommandOpcode
;
5079 uint32_t _3DCommandSubOpcode
;
5080 uint32_t DwordLength
;
5081 uint32_t DSURBStartingAddress
;
5082 uint32_t DSURBEntryAllocationSize
;
5083 uint32_t DSNumberofURBEntries
;
5087 GEN8_3DSTATE_URB_DS_pack(__gen_user_data
*data
, void * restrict dst
,
5088 const struct GEN8_3DSTATE_URB_DS
* restrict values
)
5090 uint32_t *dw
= (uint32_t * restrict
) dst
;
5093 __gen_field(values
->CommandType
, 29, 31) |
5094 __gen_field(values
->CommandSubType
, 27, 28) |
5095 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5096 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5097 __gen_field(values
->DwordLength
, 0, 7) |
5101 __gen_field(values
->DSURBStartingAddress
, 25, 31) |
5102 __gen_field(values
->DSURBEntryAllocationSize
, 16, 24) |
5103 __gen_field(values
->DSNumberofURBEntries
, 0, 15) |
5108 #define GEN8_3DSTATE_URB_GS_length_bias 0x00000002
5109 #define GEN8_3DSTATE_URB_GS_header \
5111 .CommandSubType = 3, \
5112 ._3DCommandOpcode = 0, \
5113 ._3DCommandSubOpcode = 51, \
5116 #define GEN8_3DSTATE_URB_GS_length 0x00000002
5118 struct GEN8_3DSTATE_URB_GS
{
5119 uint32_t CommandType
;
5120 uint32_t CommandSubType
;
5121 uint32_t _3DCommandOpcode
;
5122 uint32_t _3DCommandSubOpcode
;
5123 uint32_t DwordLength
;
5124 uint32_t GSURBStartingAddress
;
5125 uint32_t GSURBEntryAllocationSize
;
5126 uint32_t GSNumberofURBEntries
;
5130 GEN8_3DSTATE_URB_GS_pack(__gen_user_data
*data
, void * restrict dst
,
5131 const struct GEN8_3DSTATE_URB_GS
* restrict values
)
5133 uint32_t *dw
= (uint32_t * restrict
) dst
;
5136 __gen_field(values
->CommandType
, 29, 31) |
5137 __gen_field(values
->CommandSubType
, 27, 28) |
5138 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5139 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5140 __gen_field(values
->DwordLength
, 0, 7) |
5144 __gen_field(values
->GSURBStartingAddress
, 25, 31) |
5145 __gen_field(values
->GSURBEntryAllocationSize
, 16, 24) |
5146 __gen_field(values
->GSNumberofURBEntries
, 0, 15) |
5151 #define GEN8_3DSTATE_URB_HS_length_bias 0x00000002
5152 #define GEN8_3DSTATE_URB_HS_header \
5154 .CommandSubType = 3, \
5155 ._3DCommandOpcode = 0, \
5156 ._3DCommandSubOpcode = 49, \
5159 #define GEN8_3DSTATE_URB_HS_length 0x00000002
5161 struct GEN8_3DSTATE_URB_HS
{
5162 uint32_t CommandType
;
5163 uint32_t CommandSubType
;
5164 uint32_t _3DCommandOpcode
;
5165 uint32_t _3DCommandSubOpcode
;
5166 uint32_t DwordLength
;
5167 uint32_t HSURBStartingAddress
;
5168 uint32_t HSURBEntryAllocationSize
;
5169 uint32_t HSNumberofURBEntries
;
5173 GEN8_3DSTATE_URB_HS_pack(__gen_user_data
*data
, void * restrict dst
,
5174 const struct GEN8_3DSTATE_URB_HS
* restrict values
)
5176 uint32_t *dw
= (uint32_t * restrict
) dst
;
5179 __gen_field(values
->CommandType
, 29, 31) |
5180 __gen_field(values
->CommandSubType
, 27, 28) |
5181 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5182 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5183 __gen_field(values
->DwordLength
, 0, 7) |
5187 __gen_field(values
->HSURBStartingAddress
, 25, 31) |
5188 __gen_field(values
->HSURBEntryAllocationSize
, 16, 24) |
5189 __gen_field(values
->HSNumberofURBEntries
, 0, 15) |
5194 #define GEN8_3DSTATE_VERTEX_BUFFERS_length_bias 0x00000002
5195 #define GEN8_3DSTATE_VERTEX_BUFFERS_header \
5197 .CommandSubType = 3, \
5198 ._3DCommandOpcode = 0, \
5199 ._3DCommandSubOpcode = 8
5201 #define GEN8_3DSTATE_VERTEX_BUFFERS_length 0x00000000
5203 #define GEN8_VERTEX_BUFFER_STATE_length 0x00000004
5205 struct GEN8_VERTEX_BUFFER_STATE
{
5206 uint32_t VertexBufferIndex
;
5207 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
5208 uint32_t AddressModifyEnable
;
5209 bool NullVertexBuffer
;
5210 uint32_t BufferPitch
;
5211 __gen_address_type BufferStartingAddress
;
5212 uint32_t BufferSize
;
5216 GEN8_VERTEX_BUFFER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5217 const struct GEN8_VERTEX_BUFFER_STATE
* restrict values
)
5219 uint32_t *dw
= (uint32_t * restrict
) dst
;
5221 uint32_t dw_MemoryObjectControlState
;
5222 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
5224 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5225 __gen_field(dw_MemoryObjectControlState
, 16, 22) |
5226 __gen_field(values
->AddressModifyEnable
, 14, 14) |
5227 __gen_field(values
->NullVertexBuffer
, 13, 13) |
5228 __gen_field(values
->BufferPitch
, 0, 11) |
5235 __gen_combine_address(data
, &dw
[1], values
->BufferStartingAddress
, dw1
);
5241 __gen_field(values
->BufferSize
, 0, 31) |
5246 struct GEN8_3DSTATE_VERTEX_BUFFERS
{
5247 uint32_t CommandType
;
5248 uint32_t CommandSubType
;
5249 uint32_t _3DCommandOpcode
;
5250 uint32_t _3DCommandSubOpcode
;
5251 uint32_t DwordLength
;
5252 /* variable length fields follow */
5256 GEN8_3DSTATE_VERTEX_BUFFERS_pack(__gen_user_data
*data
, void * restrict dst
,
5257 const struct GEN8_3DSTATE_VERTEX_BUFFERS
* restrict values
)
5259 uint32_t *dw
= (uint32_t * restrict
) dst
;
5262 __gen_field(values
->CommandType
, 29, 31) |
5263 __gen_field(values
->CommandSubType
, 27, 28) |
5264 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5265 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5266 __gen_field(values
->DwordLength
, 0, 7) |
5269 /* variable length fields follow */
5272 #define GEN8_3DSTATE_VERTEX_ELEMENTS_length_bias 0x00000002
5273 #define GEN8_3DSTATE_VERTEX_ELEMENTS_header \
5275 .CommandSubType = 3, \
5276 ._3DCommandOpcode = 0, \
5277 ._3DCommandSubOpcode = 9
5279 #define GEN8_3DSTATE_VERTEX_ELEMENTS_length 0x00000000
5281 #define GEN8_VERTEX_ELEMENT_STATE_length 0x00000002
5283 struct GEN8_VERTEX_ELEMENT_STATE
{
5284 uint32_t VertexBufferIndex
;
5286 uint32_t SourceElementFormat
;
5287 bool EdgeFlagEnable
;
5288 uint32_t SourceElementOffset
;
5289 uint32_t Component0Control
;
5290 uint32_t Component1Control
;
5291 uint32_t Component2Control
;
5292 uint32_t Component3Control
;
5296 GEN8_VERTEX_ELEMENT_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5297 const struct GEN8_VERTEX_ELEMENT_STATE
* restrict values
)
5299 uint32_t *dw
= (uint32_t * restrict
) dst
;
5302 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5303 __gen_field(values
->Valid
, 25, 25) |
5304 __gen_field(values
->SourceElementFormat
, 16, 24) |
5305 __gen_field(values
->EdgeFlagEnable
, 15, 15) |
5306 __gen_field(values
->SourceElementOffset
, 0, 11) |
5310 __gen_field(values
->Component0Control
, 28, 30) |
5311 __gen_field(values
->Component1Control
, 24, 26) |
5312 __gen_field(values
->Component2Control
, 20, 22) |
5313 __gen_field(values
->Component3Control
, 16, 18) |
5318 struct GEN8_3DSTATE_VERTEX_ELEMENTS
{
5319 uint32_t CommandType
;
5320 uint32_t CommandSubType
;
5321 uint32_t _3DCommandOpcode
;
5322 uint32_t _3DCommandSubOpcode
;
5323 uint32_t DwordLength
;
5324 /* variable length fields follow */
5328 GEN8_3DSTATE_VERTEX_ELEMENTS_pack(__gen_user_data
*data
, void * restrict dst
,
5329 const struct GEN8_3DSTATE_VERTEX_ELEMENTS
* restrict values
)
5331 uint32_t *dw
= (uint32_t * restrict
) dst
;
5334 __gen_field(values
->CommandType
, 29, 31) |
5335 __gen_field(values
->CommandSubType
, 27, 28) |
5336 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5337 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5338 __gen_field(values
->DwordLength
, 0, 7) |
5341 /* variable length fields follow */
5344 #define GEN8_3DSTATE_VF_length_bias 0x00000002
5345 #define GEN8_3DSTATE_VF_header \
5347 .CommandSubType = 3, \
5348 ._3DCommandOpcode = 0, \
5349 ._3DCommandSubOpcode = 12, \
5352 #define GEN8_3DSTATE_VF_length 0x00000002
5354 struct GEN8_3DSTATE_VF
{
5355 uint32_t CommandType
;
5356 uint32_t CommandSubType
;
5357 uint32_t _3DCommandOpcode
;
5358 uint32_t _3DCommandSubOpcode
;
5359 bool IndexedDrawCutIndexEnable
;
5360 uint32_t DwordLength
;
5365 GEN8_3DSTATE_VF_pack(__gen_user_data
*data
, void * restrict dst
,
5366 const struct GEN8_3DSTATE_VF
* restrict values
)
5368 uint32_t *dw
= (uint32_t * restrict
) dst
;
5371 __gen_field(values
->CommandType
, 29, 31) |
5372 __gen_field(values
->CommandSubType
, 27, 28) |
5373 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5374 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5375 __gen_field(values
->IndexedDrawCutIndexEnable
, 8, 8) |
5376 __gen_field(values
->DwordLength
, 0, 7) |
5380 __gen_field(values
->CutIndex
, 0, 31) |
5385 #define GEN8_3DSTATE_VF_INSTANCING_length_bias 0x00000002
5386 #define GEN8_3DSTATE_VF_INSTANCING_header \
5388 .CommandSubType = 3, \
5389 ._3DCommandOpcode = 0, \
5390 ._3DCommandSubOpcode = 73, \
5393 #define GEN8_3DSTATE_VF_INSTANCING_length 0x00000003
5395 struct GEN8_3DSTATE_VF_INSTANCING
{
5396 uint32_t CommandType
;
5397 uint32_t CommandSubType
;
5398 uint32_t _3DCommandOpcode
;
5399 uint32_t _3DCommandSubOpcode
;
5400 uint32_t DwordLength
;
5401 bool InstancingEnable
;
5402 uint32_t VertexElementIndex
;
5403 uint32_t InstanceDataStepRate
;
5407 GEN8_3DSTATE_VF_INSTANCING_pack(__gen_user_data
*data
, void * restrict dst
,
5408 const struct GEN8_3DSTATE_VF_INSTANCING
* restrict values
)
5410 uint32_t *dw
= (uint32_t * restrict
) dst
;
5413 __gen_field(values
->CommandType
, 29, 31) |
5414 __gen_field(values
->CommandSubType
, 27, 28) |
5415 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5416 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5417 __gen_field(values
->DwordLength
, 0, 7) |
5421 __gen_field(values
->InstancingEnable
, 8, 8) |
5422 __gen_field(values
->VertexElementIndex
, 0, 5) |
5426 __gen_field(values
->InstanceDataStepRate
, 0, 31) |
5431 #define GEN8_3DSTATE_VF_SGVS_length_bias 0x00000002
5432 #define GEN8_3DSTATE_VF_SGVS_header \
5434 .CommandSubType = 3, \
5435 ._3DCommandOpcode = 0, \
5436 ._3DCommandSubOpcode = 74, \
5439 #define GEN8_3DSTATE_VF_SGVS_length 0x00000002
5441 struct GEN8_3DSTATE_VF_SGVS
{
5442 uint32_t CommandType
;
5443 uint32_t CommandSubType
;
5444 uint32_t _3DCommandOpcode
;
5445 uint32_t _3DCommandSubOpcode
;
5446 uint32_t DwordLength
;
5447 bool InstanceIDEnable
;
5452 uint32_t InstanceIDComponentNumber
;
5453 uint32_t InstanceIDElementOffset
;
5454 bool VertexIDEnable
;
5459 uint32_t VertexIDComponentNumber
;
5460 uint32_t VertexIDElementOffset
;
5464 GEN8_3DSTATE_VF_SGVS_pack(__gen_user_data
*data
, void * restrict dst
,
5465 const struct GEN8_3DSTATE_VF_SGVS
* restrict values
)
5467 uint32_t *dw
= (uint32_t * restrict
) dst
;
5470 __gen_field(values
->CommandType
, 29, 31) |
5471 __gen_field(values
->CommandSubType
, 27, 28) |
5472 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5473 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5474 __gen_field(values
->DwordLength
, 0, 7) |
5478 __gen_field(values
->InstanceIDEnable
, 31, 31) |
5479 __gen_field(values
->InstanceIDComponentNumber
, 29, 30) |
5480 __gen_field(values
->InstanceIDElementOffset
, 16, 21) |
5481 __gen_field(values
->VertexIDEnable
, 15, 15) |
5482 __gen_field(values
->VertexIDComponentNumber
, 13, 14) |
5483 __gen_field(values
->VertexIDElementOffset
, 0, 5) |
5488 #define GEN8_3DSTATE_VF_STATISTICS_length_bias 0x00000001
5489 #define GEN8_3DSTATE_VF_STATISTICS_header \
5491 .CommandSubType = 1, \
5492 ._3DCommandOpcode = 0, \
5493 ._3DCommandSubOpcode = 11
5495 #define GEN8_3DSTATE_VF_STATISTICS_length 0x00000001
5497 struct GEN8_3DSTATE_VF_STATISTICS
{
5498 uint32_t CommandType
;
5499 uint32_t CommandSubType
;
5500 uint32_t _3DCommandOpcode
;
5501 uint32_t _3DCommandSubOpcode
;
5502 bool StatisticsEnable
;
5506 GEN8_3DSTATE_VF_STATISTICS_pack(__gen_user_data
*data
, void * restrict dst
,
5507 const struct GEN8_3DSTATE_VF_STATISTICS
* restrict values
)
5509 uint32_t *dw
= (uint32_t * restrict
) dst
;
5512 __gen_field(values
->CommandType
, 29, 31) |
5513 __gen_field(values
->CommandSubType
, 27, 28) |
5514 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5515 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5516 __gen_field(values
->StatisticsEnable
, 0, 0) |
5521 #define GEN8_3DSTATE_VF_TOPOLOGY_length_bias 0x00000002
5522 #define GEN8_3DSTATE_VF_TOPOLOGY_header \
5524 .CommandSubType = 3, \
5525 ._3DCommandOpcode = 0, \
5526 ._3DCommandSubOpcode = 75, \
5529 #define GEN8_3DSTATE_VF_TOPOLOGY_length 0x00000002
5531 struct GEN8_3DSTATE_VF_TOPOLOGY
{
5532 uint32_t CommandType
;
5533 uint32_t CommandSubType
;
5534 uint32_t _3DCommandOpcode
;
5535 uint32_t _3DCommandSubOpcode
;
5536 uint32_t DwordLength
;
5537 uint32_t PrimitiveTopologyType
;
5541 GEN8_3DSTATE_VF_TOPOLOGY_pack(__gen_user_data
*data
, void * restrict dst
,
5542 const struct GEN8_3DSTATE_VF_TOPOLOGY
* restrict values
)
5544 uint32_t *dw
= (uint32_t * restrict
) dst
;
5547 __gen_field(values
->CommandType
, 29, 31) |
5548 __gen_field(values
->CommandSubType
, 27, 28) |
5549 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5550 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5551 __gen_field(values
->DwordLength
, 0, 7) |
5555 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
5560 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias 0x00000002
5561 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\
5563 .CommandSubType = 3, \
5564 ._3DCommandOpcode = 0, \
5565 ._3DCommandSubOpcode = 35, \
5568 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length 0x00000002
5570 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
{
5571 uint32_t CommandType
;
5572 uint32_t CommandSubType
;
5573 uint32_t _3DCommandOpcode
;
5574 uint32_t _3DCommandSubOpcode
;
5575 uint32_t DwordLength
;
5576 uint32_t CCViewportPointer
;
5580 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__gen_user_data
*data
, void * restrict dst
,
5581 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
* restrict values
)
5583 uint32_t *dw
= (uint32_t * restrict
) dst
;
5586 __gen_field(values
->CommandType
, 29, 31) |
5587 __gen_field(values
->CommandSubType
, 27, 28) |
5588 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5589 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5590 __gen_field(values
->DwordLength
, 0, 7) |
5594 __gen_offset(values
->CCViewportPointer
, 5, 31) |
5599 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias 0x00000002
5600 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\
5602 .CommandSubType = 3, \
5603 ._3DCommandOpcode = 0, \
5604 ._3DCommandSubOpcode = 33, \
5607 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length 0x00000002
5609 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
{
5610 uint32_t CommandType
;
5611 uint32_t CommandSubType
;
5612 uint32_t _3DCommandOpcode
;
5613 uint32_t _3DCommandSubOpcode
;
5614 uint32_t DwordLength
;
5615 uint32_t SFClipViewportPointer
;
5619 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
5620 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
* restrict values
)
5622 uint32_t *dw
= (uint32_t * restrict
) dst
;
5625 __gen_field(values
->CommandType
, 29, 31) |
5626 __gen_field(values
->CommandSubType
, 27, 28) |
5627 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5628 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5629 __gen_field(values
->DwordLength
, 0, 7) |
5633 __gen_offset(values
->SFClipViewportPointer
, 6, 31) |
5638 #define GEN8_3DSTATE_WM_length_bias 0x00000002
5639 #define GEN8_3DSTATE_WM_header \
5641 .CommandSubType = 3, \
5642 ._3DCommandOpcode = 0, \
5643 ._3DCommandSubOpcode = 20, \
5646 #define GEN8_3DSTATE_WM_length 0x00000002
5648 struct GEN8_3DSTATE_WM
{
5649 uint32_t CommandType
;
5650 uint32_t CommandSubType
;
5651 uint32_t _3DCommandOpcode
;
5652 uint32_t _3DCommandSubOpcode
;
5653 uint32_t DwordLength
;
5654 bool StatisticsEnable
;
5655 bool LegacyDepthBufferClearEnable
;
5656 bool LegacyDepthBufferResolveEnable
;
5657 bool LegacyHierarchicalDepthBufferResolveEnable
;
5658 bool LegacyDiamondLineRasterization
;
5662 uint32_t EarlyDepthStencilControl
;
5666 uint32_t ForceThreadDispatchEnable
;
5667 #define INTERP_PIXEL 0
5668 #define INTERP_CENTROID 2
5669 #define INTERP_SAMPLE 3
5670 uint32_t PositionZWInterpolationMode
;
5671 uint32_t BarycentricInterpolationMode
;
5676 uint32_t LineEndCapAntialiasingRegionWidth
;
5681 uint32_t LineAntialiasingRegionWidth
;
5682 bool PolygonStippleEnable
;
5683 bool LineStippleEnable
;
5684 #define RASTRULE_UPPER_LEFT 0
5685 #define RASTRULE_UPPER_RIGHT 1
5686 uint32_t PointRasterizationRule
;
5690 uint32_t ForceKillPixelEnable
;
5694 GEN8_3DSTATE_WM_pack(__gen_user_data
*data
, void * restrict dst
,
5695 const struct GEN8_3DSTATE_WM
* restrict values
)
5697 uint32_t *dw
= (uint32_t * restrict
) dst
;
5700 __gen_field(values
->CommandType
, 29, 31) |
5701 __gen_field(values
->CommandSubType
, 27, 28) |
5702 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5703 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5704 __gen_field(values
->DwordLength
, 0, 7) |
5708 __gen_field(values
->StatisticsEnable
, 31, 31) |
5709 __gen_field(values
->LegacyDepthBufferClearEnable
, 30, 30) |
5710 __gen_field(values
->LegacyDepthBufferResolveEnable
, 28, 28) |
5711 __gen_field(values
->LegacyHierarchicalDepthBufferResolveEnable
, 27, 27) |
5712 __gen_field(values
->LegacyDiamondLineRasterization
, 26, 26) |
5713 __gen_field(values
->EarlyDepthStencilControl
, 21, 22) |
5714 __gen_field(values
->ForceThreadDispatchEnable
, 19, 20) |
5715 __gen_field(values
->PositionZWInterpolationMode
, 17, 18) |
5716 __gen_field(values
->BarycentricInterpolationMode
, 11, 16) |
5717 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 8, 9) |
5718 __gen_field(values
->LineAntialiasingRegionWidth
, 6, 7) |
5719 __gen_field(values
->PolygonStippleEnable
, 4, 4) |
5720 __gen_field(values
->LineStippleEnable
, 3, 3) |
5721 __gen_field(values
->PointRasterizationRule
, 2, 2) |
5722 __gen_field(values
->ForceKillPixelEnable
, 0, 1) |
5727 #define GEN8_3DSTATE_WM_CHROMAKEY_length_bias 0x00000002
5728 #define GEN8_3DSTATE_WM_CHROMAKEY_header \
5730 .CommandSubType = 3, \
5731 ._3DCommandOpcode = 0, \
5732 ._3DCommandSubOpcode = 76, \
5735 #define GEN8_3DSTATE_WM_CHROMAKEY_length 0x00000002
5737 struct GEN8_3DSTATE_WM_CHROMAKEY
{
5738 uint32_t CommandType
;
5739 uint32_t CommandSubType
;
5740 uint32_t _3DCommandOpcode
;
5741 uint32_t _3DCommandSubOpcode
;
5742 uint32_t DwordLength
;
5743 bool ChromaKeyKillEnable
;
5747 GEN8_3DSTATE_WM_CHROMAKEY_pack(__gen_user_data
*data
, void * restrict dst
,
5748 const struct GEN8_3DSTATE_WM_CHROMAKEY
* restrict values
)
5750 uint32_t *dw
= (uint32_t * restrict
) dst
;
5753 __gen_field(values
->CommandType
, 29, 31) |
5754 __gen_field(values
->CommandSubType
, 27, 28) |
5755 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5756 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5757 __gen_field(values
->DwordLength
, 0, 7) |
5761 __gen_field(values
->ChromaKeyKillEnable
, 31, 31) |
5766 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length_bias 0x00000002
5767 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_header \
5769 .CommandSubType = 3, \
5770 ._3DCommandOpcode = 0, \
5771 ._3DCommandSubOpcode = 78, \
5774 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length 0x00000003
5776 struct GEN8_3DSTATE_WM_DEPTH_STENCIL
{
5777 uint32_t CommandType
;
5778 uint32_t CommandSubType
;
5779 uint32_t _3DCommandOpcode
;
5780 uint32_t _3DCommandSubOpcode
;
5781 uint32_t DwordLength
;
5782 uint32_t StencilFailOp
;
5783 uint32_t StencilPassDepthFailOp
;
5784 uint32_t StencilPassDepthPassOp
;
5785 uint32_t BackfaceStencilTestFunction
;
5786 uint32_t BackfaceStencilFailOp
;
5787 uint32_t BackfaceStencilPassDepthFailOp
;
5788 uint32_t BackfaceStencilPassDepthPassOp
;
5789 uint32_t StencilTestFunction
;
5790 uint32_t DepthTestFunction
;
5791 bool DoubleSidedStencilEnable
;
5792 bool StencilTestEnable
;
5793 bool StencilBufferWriteEnable
;
5794 bool DepthTestEnable
;
5795 bool DepthBufferWriteEnable
;
5796 uint32_t StencilTestMask
;
5797 uint32_t StencilWriteMask
;
5798 uint32_t BackfaceStencilTestMask
;
5799 uint32_t BackfaceStencilWriteMask
;
5803 GEN8_3DSTATE_WM_DEPTH_STENCIL_pack(__gen_user_data
*data
, void * restrict dst
,
5804 const struct GEN8_3DSTATE_WM_DEPTH_STENCIL
* restrict values
)
5806 uint32_t *dw
= (uint32_t * restrict
) dst
;
5809 __gen_field(values
->CommandType
, 29, 31) |
5810 __gen_field(values
->CommandSubType
, 27, 28) |
5811 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5812 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5813 __gen_field(values
->DwordLength
, 0, 7) |
5817 __gen_field(values
->StencilFailOp
, 29, 31) |
5818 __gen_field(values
->StencilPassDepthFailOp
, 26, 28) |
5819 __gen_field(values
->StencilPassDepthPassOp
, 23, 25) |
5820 __gen_field(values
->BackfaceStencilTestFunction
, 20, 22) |
5821 __gen_field(values
->BackfaceStencilFailOp
, 17, 19) |
5822 __gen_field(values
->BackfaceStencilPassDepthFailOp
, 14, 16) |
5823 __gen_field(values
->BackfaceStencilPassDepthPassOp
, 11, 13) |
5824 __gen_field(values
->StencilTestFunction
, 8, 10) |
5825 __gen_field(values
->DepthTestFunction
, 5, 7) |
5826 __gen_field(values
->DoubleSidedStencilEnable
, 4, 4) |
5827 __gen_field(values
->StencilTestEnable
, 3, 3) |
5828 __gen_field(values
->StencilBufferWriteEnable
, 2, 2) |
5829 __gen_field(values
->DepthTestEnable
, 1, 1) |
5830 __gen_field(values
->DepthBufferWriteEnable
, 0, 0) |
5834 __gen_field(values
->StencilTestMask
, 24, 31) |
5835 __gen_field(values
->StencilWriteMask
, 16, 23) |
5836 __gen_field(values
->BackfaceStencilTestMask
, 8, 15) |
5837 __gen_field(values
->BackfaceStencilWriteMask
, 0, 7) |
5842 #define GEN8_3DSTATE_WM_HZ_OP_length_bias 0x00000002
5843 #define GEN8_3DSTATE_WM_HZ_OP_header \
5845 .CommandSubType = 3, \
5846 ._3DCommandOpcode = 0, \
5847 ._3DCommandSubOpcode = 82, \
5850 #define GEN8_3DSTATE_WM_HZ_OP_length 0x00000005
5852 struct GEN8_3DSTATE_WM_HZ_OP
{
5853 uint32_t CommandType
;
5854 uint32_t CommandSubType
;
5855 uint32_t _3DCommandOpcode
;
5856 uint32_t _3DCommandSubOpcode
;
5857 uint32_t DwordLength
;
5858 bool StencilBufferClearEnable
;
5859 bool DepthBufferClearEnable
;
5860 bool ScissorRectangleEnable
;
5861 bool DepthBufferResolveEnable
;
5862 bool HierarchicalDepthBufferResolveEnable
;
5863 uint32_t PixelPositionOffsetEnable
;
5864 bool FullSurfaceDepthClear
;
5865 uint32_t StencilClearValue
;
5866 uint32_t NumberofMultisamples
;
5867 uint32_t ClearRectangleYMin
;
5868 uint32_t ClearRectangleXMin
;
5869 uint32_t ClearRectangleYMax
;
5870 uint32_t ClearRectangleXMax
;
5871 uint32_t SampleMask
;
5875 GEN8_3DSTATE_WM_HZ_OP_pack(__gen_user_data
*data
, void * restrict dst
,
5876 const struct GEN8_3DSTATE_WM_HZ_OP
* restrict values
)
5878 uint32_t *dw
= (uint32_t * restrict
) dst
;
5881 __gen_field(values
->CommandType
, 29, 31) |
5882 __gen_field(values
->CommandSubType
, 27, 28) |
5883 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5884 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5885 __gen_field(values
->DwordLength
, 0, 7) |
5889 __gen_field(values
->StencilBufferClearEnable
, 31, 31) |
5890 __gen_field(values
->DepthBufferClearEnable
, 30, 30) |
5891 __gen_field(values
->ScissorRectangleEnable
, 29, 29) |
5892 __gen_field(values
->DepthBufferResolveEnable
, 28, 28) |
5893 __gen_field(values
->HierarchicalDepthBufferResolveEnable
, 27, 27) |
5894 __gen_field(values
->PixelPositionOffsetEnable
, 26, 26) |
5895 __gen_field(values
->FullSurfaceDepthClear
, 25, 25) |
5896 __gen_field(values
->StencilClearValue
, 16, 23) |
5897 __gen_field(values
->NumberofMultisamples
, 13, 15) |
5901 __gen_field(values
->ClearRectangleYMin
, 16, 31) |
5902 __gen_field(values
->ClearRectangleXMin
, 0, 15) |
5906 __gen_field(values
->ClearRectangleYMax
, 16, 31) |
5907 __gen_field(values
->ClearRectangleXMax
, 0, 15) |
5911 __gen_field(values
->SampleMask
, 0, 15) |
5916 #define GEN8_GPGPU_WALKER_length_bias 0x00000002
5917 #define GEN8_GPGPU_WALKER_header \
5920 .MediaCommandOpcode = 1, \
5924 #define GEN8_GPGPU_WALKER_length 0x0000000f
5926 struct GEN8_GPGPU_WALKER
{
5927 uint32_t CommandType
;
5929 uint32_t MediaCommandOpcode
;
5931 bool IndirectParameterEnable
;
5932 bool PredicateEnable
;
5933 uint32_t DwordLength
;
5934 uint32_t InterfaceDescriptorOffset
;
5935 uint32_t IndirectDataLength
;
5936 uint32_t IndirectDataStartAddress
;
5941 uint32_t ThreadDepthCounterMaximum
;
5942 uint32_t ThreadHeightCounterMaximum
;
5943 uint32_t ThreadWidthCounterMaximum
;
5944 uint32_t ThreadGroupIDStartingX
;
5945 uint32_t ThreadGroupIDXDimension
;
5946 uint32_t ThreadGroupIDStartingY
;
5947 uint32_t ThreadGroupIDYDimension
;
5948 uint32_t ThreadGroupIDStartingResumeZ
;
5949 uint32_t ThreadGroupIDZDimension
;
5950 uint32_t RightExecutionMask
;
5951 uint32_t BottomExecutionMask
;
5955 GEN8_GPGPU_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
5956 const struct GEN8_GPGPU_WALKER
* restrict values
)
5958 uint32_t *dw
= (uint32_t * restrict
) dst
;
5961 __gen_field(values
->CommandType
, 29, 31) |
5962 __gen_field(values
->Pipeline
, 27, 28) |
5963 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5964 __gen_field(values
->SubOpcode
, 16, 23) |
5965 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
5966 __gen_field(values
->PredicateEnable
, 8, 8) |
5967 __gen_field(values
->DwordLength
, 0, 7) |
5971 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
5975 __gen_field(values
->IndirectDataLength
, 0, 16) |
5979 __gen_offset(values
->IndirectDataStartAddress
, 6, 31) |
5983 __gen_field(values
->SIMDSize
, 30, 31) |
5984 __gen_field(values
->ThreadDepthCounterMaximum
, 16, 21) |
5985 __gen_field(values
->ThreadHeightCounterMaximum
, 8, 13) |
5986 __gen_field(values
->ThreadWidthCounterMaximum
, 0, 5) |
5990 __gen_field(values
->ThreadGroupIDStartingX
, 0, 31) |
5997 __gen_field(values
->ThreadGroupIDXDimension
, 0, 31) |
6001 __gen_field(values
->ThreadGroupIDStartingY
, 0, 31) |
6008 __gen_field(values
->ThreadGroupIDYDimension
, 0, 31) |
6012 __gen_field(values
->ThreadGroupIDStartingResumeZ
, 0, 31) |
6016 __gen_field(values
->ThreadGroupIDZDimension
, 0, 31) |
6020 __gen_field(values
->RightExecutionMask
, 0, 31) |
6024 __gen_field(values
->BottomExecutionMask
, 0, 31) |
6029 #define GEN8_MEDIA_CURBE_LOAD_length_bias 0x00000002
6030 #define GEN8_MEDIA_CURBE_LOAD_header \
6033 .MediaCommandOpcode = 0, \
6037 #define GEN8_MEDIA_CURBE_LOAD_length 0x00000004
6039 struct GEN8_MEDIA_CURBE_LOAD
{
6040 uint32_t CommandType
;
6042 uint32_t MediaCommandOpcode
;
6044 uint32_t DwordLength
;
6045 uint32_t CURBETotalDataLength
;
6046 uint32_t CURBEDataStartAddress
;
6050 GEN8_MEDIA_CURBE_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
6051 const struct GEN8_MEDIA_CURBE_LOAD
* restrict values
)
6053 uint32_t *dw
= (uint32_t * restrict
) dst
;
6056 __gen_field(values
->CommandType
, 29, 31) |
6057 __gen_field(values
->Pipeline
, 27, 28) |
6058 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6059 __gen_field(values
->SubOpcode
, 16, 23) |
6060 __gen_field(values
->DwordLength
, 0, 15) |
6067 __gen_field(values
->CURBETotalDataLength
, 0, 16) |
6071 __gen_field(values
->CURBEDataStartAddress
, 0, 31) |
6076 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias 0x00000002
6077 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\
6080 .MediaCommandOpcode = 0, \
6084 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length 0x00000004
6086 struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
{
6087 uint32_t CommandType
;
6089 uint32_t MediaCommandOpcode
;
6091 uint32_t DwordLength
;
6092 uint32_t InterfaceDescriptorTotalLength
;
6093 uint32_t InterfaceDescriptorDataStartAddress
;
6097 GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
6098 const struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
* restrict values
)
6100 uint32_t *dw
= (uint32_t * restrict
) dst
;
6103 __gen_field(values
->CommandType
, 29, 31) |
6104 __gen_field(values
->Pipeline
, 27, 28) |
6105 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6106 __gen_field(values
->SubOpcode
, 16, 23) |
6107 __gen_field(values
->DwordLength
, 0, 15) |
6114 __gen_field(values
->InterfaceDescriptorTotalLength
, 0, 16) |
6118 __gen_offset(values
->InterfaceDescriptorDataStartAddress
, 0, 31) |
6123 #define GEN8_MEDIA_OBJECT_length_bias 0x00000002
6124 #define GEN8_MEDIA_OBJECT_header \
6126 .MediaCommandPipeline = 2, \
6127 .MediaCommandOpcode = 1, \
6128 .MediaCommandSubOpcode = 0
6130 #define GEN8_MEDIA_OBJECT_length 0x00000000
6132 struct GEN8_MEDIA_OBJECT
{
6133 uint32_t CommandType
;
6134 uint32_t MediaCommandPipeline
;
6135 uint32_t MediaCommandOpcode
;
6136 uint32_t MediaCommandSubOpcode
;
6137 uint32_t DwordLength
;
6138 uint32_t InterfaceDescriptorOffset
;
6139 bool ChildrenPresent
;
6140 #define Nothreadsynchronization 0
6141 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
6142 uint32_t ThreadSynchronization
;
6143 uint32_t ForceDestination
;
6144 #define Notusingscoreboard 0
6145 #define Usingscoreboard 1
6146 uint32_t UseScoreboard
;
6150 uint32_t SliceDestinationSelect
;
6154 uint32_t SubSliceDestinationSelect
;
6155 uint32_t IndirectDataLength
;
6156 __gen_address_type IndirectDataStartAddress
;
6157 uint32_t ScoredboardY
;
6158 uint32_t ScoreboardX
;
6159 uint32_t ScoreboardColor
;
6160 bool ScoreboardMask
;
6161 /* variable length fields follow */
6165 GEN8_MEDIA_OBJECT_pack(__gen_user_data
*data
, void * restrict dst
,
6166 const struct GEN8_MEDIA_OBJECT
* restrict values
)
6168 uint32_t *dw
= (uint32_t * restrict
) dst
;
6171 __gen_field(values
->CommandType
, 29, 31) |
6172 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6173 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6174 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6175 __gen_field(values
->DwordLength
, 0, 15) |
6179 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6183 __gen_field(values
->ChildrenPresent
, 31, 31) |
6184 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6185 __gen_field(values
->ForceDestination
, 22, 22) |
6186 __gen_field(values
->UseScoreboard
, 21, 21) |
6187 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6188 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6189 __gen_field(values
->IndirectDataLength
, 0, 16) |
6196 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6199 __gen_field(values
->ScoredboardY
, 16, 24) |
6200 __gen_field(values
->ScoreboardX
, 0, 8) |
6204 __gen_field(values
->ScoreboardColor
, 16, 19) |
6205 __gen_field(values
->ScoreboardMask
, 0, 7) |
6208 /* variable length fields follow */
6211 #define GEN8_MEDIA_OBJECT_GRPID_length_bias 0x00000002
6212 #define GEN8_MEDIA_OBJECT_GRPID_header \
6214 .MediaCommandPipeline = 2, \
6215 .MediaCommandOpcode = 1, \
6216 .MediaCommandSubOpcode = 6
6218 #define GEN8_MEDIA_OBJECT_GRPID_length 0x00000000
6220 struct GEN8_MEDIA_OBJECT_GRPID
{
6221 uint32_t CommandType
;
6222 uint32_t MediaCommandPipeline
;
6223 uint32_t MediaCommandOpcode
;
6224 uint32_t MediaCommandSubOpcode
;
6225 uint32_t DwordLength
;
6226 uint32_t InterfaceDescriptorOffset
;
6227 uint32_t EndofThreadGroup
;
6228 uint32_t ForceDestination
;
6229 #define Notusingscoreboard 0
6230 #define Usingscoreboard 1
6231 uint32_t UseScoreboard
;
6235 uint32_t SliceDestinationSelect
;
6239 uint32_t SubSliceDestinationSelect
;
6240 uint32_t IndirectDataLength
;
6241 __gen_address_type IndirectDataStartAddress
;
6242 uint32_t ScoreboardY
;
6243 uint32_t ScoreboardX
;
6244 uint32_t ScoreboardColor
;
6245 bool ScoreboardMask
;
6247 /* variable length fields follow */
6251 GEN8_MEDIA_OBJECT_GRPID_pack(__gen_user_data
*data
, void * restrict dst
,
6252 const struct GEN8_MEDIA_OBJECT_GRPID
* restrict values
)
6254 uint32_t *dw
= (uint32_t * restrict
) dst
;
6257 __gen_field(values
->CommandType
, 29, 31) |
6258 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6259 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6260 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6261 __gen_field(values
->DwordLength
, 0, 15) |
6265 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6269 __gen_field(values
->EndofThreadGroup
, 23, 23) |
6270 __gen_field(values
->ForceDestination
, 22, 22) |
6271 __gen_field(values
->UseScoreboard
, 21, 21) |
6272 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6273 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6274 __gen_field(values
->IndirectDataLength
, 0, 16) |
6281 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6284 __gen_field(values
->ScoreboardY
, 16, 24) |
6285 __gen_field(values
->ScoreboardX
, 0, 8) |
6289 __gen_field(values
->ScoreboardColor
, 16, 19) |
6290 __gen_field(values
->ScoreboardMask
, 0, 7) |
6294 __gen_field(values
->GroupID
, 0, 31) |
6297 /* variable length fields follow */
6300 #define GEN8_MEDIA_OBJECT_PRT_length_bias 0x00000002
6301 #define GEN8_MEDIA_OBJECT_PRT_header \
6304 .MediaCommandOpcode = 1, \
6308 #define GEN8_MEDIA_OBJECT_PRT_length 0x00000010
6310 struct GEN8_MEDIA_OBJECT_PRT
{
6311 uint32_t CommandType
;
6313 uint32_t MediaCommandOpcode
;
6315 uint32_t DwordLength
;
6316 uint32_t InterfaceDescriptorOffset
;
6317 bool ChildrenPresent
;
6318 bool PRT_FenceNeeded
;
6319 #define Rootthreadqueue 0
6320 #define VFEstateflush 1
6321 uint32_t PRT_FenceType
;
6322 uint32_t InlineData
[12];
6326 GEN8_MEDIA_OBJECT_PRT_pack(__gen_user_data
*data
, void * restrict dst
,
6327 const struct GEN8_MEDIA_OBJECT_PRT
* restrict values
)
6329 uint32_t *dw
= (uint32_t * restrict
) dst
;
6332 __gen_field(values
->CommandType
, 29, 31) |
6333 __gen_field(values
->Pipeline
, 27, 28) |
6334 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6335 __gen_field(values
->SubOpcode
, 16, 23) |
6336 __gen_field(values
->DwordLength
, 0, 15) |
6340 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6344 __gen_field(values
->ChildrenPresent
, 31, 31) |
6345 __gen_field(values
->PRT_FenceNeeded
, 23, 23) |
6346 __gen_field(values
->PRT_FenceType
, 22, 22) |
6352 for (uint32_t i
= 0, j
= 4; i
< 12; i
+= 1, j
++) {
6354 __gen_field(values
->InlineData
[i
+ 0], 0, 31) |
6360 #define GEN8_MEDIA_OBJECT_WALKER_length_bias 0x00000002
6361 #define GEN8_MEDIA_OBJECT_WALKER_header \
6364 .MediaCommandOpcode = 1, \
6367 #define GEN8_MEDIA_OBJECT_WALKER_length 0x00000000
6369 struct GEN8_MEDIA_OBJECT_WALKER
{
6370 uint32_t CommandType
;
6372 uint32_t MediaCommandOpcode
;
6374 uint32_t DwordLength
;
6375 uint32_t InterfaceDescriptorOffset
;
6376 bool ChildrenPresent
;
6377 #define Nothreadsynchronization 0
6378 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
6379 uint32_t ThreadSynchronization
;
6380 #define Notusingscoreboard 0
6381 #define Usingscoreboard 1
6382 uint32_t UseScoreboard
;
6383 uint32_t IndirectDataLength
;
6384 uint32_t IndirectDataStartAddress
;
6385 uint32_t GroupIDLoopSelect
;
6386 bool ScoreboardMask
;
6387 uint32_t ColorCountMinusOne
;
6388 uint32_t MiddleLoopExtraSteps
;
6389 uint32_t LocalMidLoopUnitY
;
6390 uint32_t MidLoopUnitX
;
6391 uint32_t GlobalLoopExecCount
;
6392 uint32_t LocalLoopExecCount
;
6393 uint32_t BlockResolutionY
;
6394 uint32_t BlockResolutionX
;
6395 uint32_t LocalStartY
;
6396 uint32_t LocalStartX
;
6397 uint32_t LocalOuterLoopStrideY
;
6398 uint32_t LocalOuterLoopStrideX
;
6399 uint32_t LocalInnerLoopUnitY
;
6400 uint32_t LocalInnerLoopUnitX
;
6401 uint32_t GlobalResolutionY
;
6402 uint32_t GlobalResolutionX
;
6403 uint32_t GlobalStartY
;
6404 uint32_t GlobalStartX
;
6405 uint32_t GlobalOuterLoopStrideY
;
6406 uint32_t GlobalOuterLoopStrideX
;
6407 uint32_t GlobalInnerLoopUnitY
;
6408 uint32_t GlobalInnerLoopUnitX
;
6409 /* variable length fields follow */
6413 GEN8_MEDIA_OBJECT_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
6414 const struct GEN8_MEDIA_OBJECT_WALKER
* restrict values
)
6416 uint32_t *dw
= (uint32_t * restrict
) dst
;
6419 __gen_field(values
->CommandType
, 29, 31) |
6420 __gen_field(values
->Pipeline
, 27, 28) |
6421 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6422 __gen_field(values
->SubOpcode
, 16, 23) |
6423 __gen_field(values
->DwordLength
, 0, 15) |
6427 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6431 __gen_field(values
->ChildrenPresent
, 31, 31) |
6432 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6433 __gen_field(values
->UseScoreboard
, 21, 21) |
6434 __gen_field(values
->IndirectDataLength
, 0, 16) |
6438 __gen_offset(values
->IndirectDataStartAddress
, 0, 31) |
6445 __gen_field(values
->GroupIDLoopSelect
, 8, 31) |
6446 __gen_field(values
->ScoreboardMask
, 0, 7) |
6450 __gen_field(values
->ColorCountMinusOne
, 24, 27) |
6451 __gen_field(values
->MiddleLoopExtraSteps
, 16, 20) |
6452 __gen_field(values
->LocalMidLoopUnitY
, 12, 13) |
6453 __gen_field(values
->MidLoopUnitX
, 8, 9) |
6457 __gen_field(values
->GlobalLoopExecCount
, 16, 25) |
6458 __gen_field(values
->LocalLoopExecCount
, 0, 9) |
6462 __gen_field(values
->BlockResolutionY
, 16, 24) |
6463 __gen_field(values
->BlockResolutionX
, 0, 8) |
6467 __gen_field(values
->LocalStartY
, 16, 24) |
6468 __gen_field(values
->LocalStartX
, 0, 8) |
6475 __gen_field(values
->LocalOuterLoopStrideY
, 16, 25) |
6476 __gen_field(values
->LocalOuterLoopStrideX
, 0, 9) |
6480 __gen_field(values
->LocalInnerLoopUnitY
, 16, 25) |
6481 __gen_field(values
->LocalInnerLoopUnitX
, 0, 9) |
6485 __gen_field(values
->GlobalResolutionY
, 16, 24) |
6486 __gen_field(values
->GlobalResolutionX
, 0, 8) |
6490 __gen_field(values
->GlobalStartY
, 16, 25) |
6491 __gen_field(values
->GlobalStartX
, 0, 9) |
6495 __gen_field(values
->GlobalOuterLoopStrideY
, 16, 25) |
6496 __gen_field(values
->GlobalOuterLoopStrideX
, 0, 9) |
6500 __gen_field(values
->GlobalInnerLoopUnitY
, 16, 25) |
6501 __gen_field(values
->GlobalInnerLoopUnitX
, 0, 9) |
6504 /* variable length fields follow */
6507 #define GEN8_MEDIA_STATE_FLUSH_length_bias 0x00000002
6508 #define GEN8_MEDIA_STATE_FLUSH_header \
6511 .MediaCommandOpcode = 0, \
6515 #define GEN8_MEDIA_STATE_FLUSH_length 0x00000002
6517 struct GEN8_MEDIA_STATE_FLUSH
{
6518 uint32_t CommandType
;
6520 uint32_t MediaCommandOpcode
;
6522 uint32_t DwordLength
;
6524 uint32_t WatermarkRequired
;
6525 uint32_t InterfaceDescriptorOffset
;
6529 GEN8_MEDIA_STATE_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6530 const struct GEN8_MEDIA_STATE_FLUSH
* restrict values
)
6532 uint32_t *dw
= (uint32_t * restrict
) dst
;
6535 __gen_field(values
->CommandType
, 29, 31) |
6536 __gen_field(values
->Pipeline
, 27, 28) |
6537 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6538 __gen_field(values
->SubOpcode
, 16, 23) |
6539 __gen_field(values
->DwordLength
, 0, 15) |
6543 __gen_field(values
->FlushtoGO
, 7, 7) |
6544 __gen_field(values
->WatermarkRequired
, 6, 6) |
6545 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6550 #define GEN8_MEDIA_VFE_STATE_length_bias 0x00000002
6551 #define GEN8_MEDIA_VFE_STATE_header \
6554 .MediaCommandOpcode = 0, \
6558 #define GEN8_MEDIA_VFE_STATE_length 0x00000009
6560 struct GEN8_MEDIA_VFE_STATE
{
6561 uint32_t CommandType
;
6563 uint32_t MediaCommandOpcode
;
6565 uint32_t DwordLength
;
6566 uint32_t ScratchSpaceBasePointer
;
6568 uint32_t PerThreadScratchSpace
;
6569 uint32_t ScratchSpaceBasePointerHigh
;
6570 uint32_t MaximumNumberofThreads
;
6571 uint32_t NumberofURBEntries
;
6572 #define Maintainingtheexistingtimestampstate 0
6573 #define Resettingrelativetimerandlatchingtheglobaltimestamp 1
6574 uint32_t ResetGatewayTimer
;
6575 #define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0
6576 #define BypassingOpenGatewayCloseGatewayprotocol 1
6577 uint32_t BypassGatewayControl
;
6578 uint32_t SliceDisable
;
6579 uint32_t URBEntryAllocationSize
;
6580 uint32_t CURBEAllocationSize
;
6581 #define Scoreboarddisabled 0
6582 #define Scoreboardenabled 1
6583 uint32_t ScoreboardEnable
;
6584 #define StallingScoreboard 0
6585 #define NonStallingScoreboard 1
6586 uint32_t ScoreboardType
;
6587 uint32_t ScoreboardMask
;
6588 uint32_t Scoreboard3DeltaY
;
6589 uint32_t Scoreboard3DeltaX
;
6590 uint32_t Scoreboard2DeltaY
;
6591 uint32_t Scoreboard2DeltaX
;
6592 uint32_t Scoreboard1DeltaY
;
6593 uint32_t Scoreboard1DeltaX
;
6594 uint32_t Scoreboard0DeltaY
;
6595 uint32_t Scoreboard0DeltaX
;
6596 uint32_t Scoreboard7DeltaY
;
6597 uint32_t Scoreboard7DeltaX
;
6598 uint32_t Scoreboard6DeltaY
;
6599 uint32_t Scoreboard6DeltaX
;
6600 uint32_t Scoreboard5DeltaY
;
6601 uint32_t Scoreboard5DeltaX
;
6602 uint32_t Scoreboard4DeltaY
;
6603 uint32_t Scoreboard4DeltaX
;
6607 GEN8_MEDIA_VFE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
6608 const struct GEN8_MEDIA_VFE_STATE
* restrict values
)
6610 uint32_t *dw
= (uint32_t * restrict
) dst
;
6613 __gen_field(values
->CommandType
, 29, 31) |
6614 __gen_field(values
->Pipeline
, 27, 28) |
6615 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6616 __gen_field(values
->SubOpcode
, 16, 23) |
6617 __gen_field(values
->DwordLength
, 0, 15) |
6621 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 31) |
6622 __gen_field(values
->StackSize
, 4, 7) |
6623 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
6627 __gen_offset(values
->ScratchSpaceBasePointerHigh
, 0, 15) |
6631 __gen_field(values
->MaximumNumberofThreads
, 16, 31) |
6632 __gen_field(values
->NumberofURBEntries
, 8, 15) |
6633 __gen_field(values
->ResetGatewayTimer
, 7, 7) |
6634 __gen_field(values
->BypassGatewayControl
, 6, 6) |
6638 __gen_field(values
->SliceDisable
, 0, 1) |
6642 __gen_field(values
->URBEntryAllocationSize
, 16, 31) |
6643 __gen_field(values
->CURBEAllocationSize
, 0, 15) |
6647 __gen_field(values
->ScoreboardEnable
, 31, 31) |
6648 __gen_field(values
->ScoreboardType
, 30, 30) |
6649 __gen_field(values
->ScoreboardMask
, 0, 7) |
6653 __gen_field(values
->Scoreboard3DeltaY
, 28, 31) |
6654 __gen_field(values
->Scoreboard3DeltaX
, 24, 27) |
6655 __gen_field(values
->Scoreboard2DeltaY
, 20, 23) |
6656 __gen_field(values
->Scoreboard2DeltaX
, 16, 19) |
6657 __gen_field(values
->Scoreboard1DeltaY
, 12, 15) |
6658 __gen_field(values
->Scoreboard1DeltaX
, 8, 11) |
6659 __gen_field(values
->Scoreboard0DeltaY
, 4, 7) |
6660 __gen_field(values
->Scoreboard0DeltaX
, 0, 3) |
6664 __gen_field(values
->Scoreboard7DeltaY
, 28, 31) |
6665 __gen_field(values
->Scoreboard7DeltaX
, 24, 27) |
6666 __gen_field(values
->Scoreboard6DeltaY
, 20, 23) |
6667 __gen_field(values
->Scoreboard6DeltaX
, 16, 19) |
6668 __gen_field(values
->Scoreboard5DeltaY
, 12, 15) |
6669 __gen_field(values
->Scoreboard5DeltaX
, 8, 11) |
6670 __gen_field(values
->Scoreboard4DeltaY
, 4, 7) |
6671 __gen_field(values
->Scoreboard4DeltaX
, 0, 3) |
6676 #define GEN8_MI_ARB_CHECK_length_bias 0x00000001
6677 #define GEN8_MI_ARB_CHECK_header \
6679 .MICommandOpcode = 5
6681 #define GEN8_MI_ARB_CHECK_length 0x00000001
6683 struct GEN8_MI_ARB_CHECK
{
6684 uint32_t CommandType
;
6685 uint32_t MICommandOpcode
;
6689 GEN8_MI_ARB_CHECK_pack(__gen_user_data
*data
, void * restrict dst
,
6690 const struct GEN8_MI_ARB_CHECK
* restrict values
)
6692 uint32_t *dw
= (uint32_t * restrict
) dst
;
6695 __gen_field(values
->CommandType
, 29, 31) |
6696 __gen_field(values
->MICommandOpcode
, 23, 28) |
6701 #define GEN8_MI_BATCH_BUFFER_END_length_bias 0x00000001
6702 #define GEN8_MI_BATCH_BUFFER_END_header \
6704 .MICommandOpcode = 10
6706 #define GEN8_MI_BATCH_BUFFER_END_length 0x00000001
6708 struct GEN8_MI_BATCH_BUFFER_END
{
6709 uint32_t CommandType
;
6710 uint32_t MICommandOpcode
;
6714 GEN8_MI_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6715 const struct GEN8_MI_BATCH_BUFFER_END
* restrict values
)
6717 uint32_t *dw
= (uint32_t * restrict
) dst
;
6720 __gen_field(values
->CommandType
, 29, 31) |
6721 __gen_field(values
->MICommandOpcode
, 23, 28) |
6726 #define GEN8_MI_BATCH_BUFFER_START_length_bias 0x00000002
6727 #define GEN8_MI_BATCH_BUFFER_START_header \
6729 .MICommandOpcode = 49, \
6732 #define GEN8_MI_BATCH_BUFFER_START_length 0x00000003
6734 struct GEN8_MI_BATCH_BUFFER_START
{
6735 uint32_t CommandType
;
6736 uint32_t MICommandOpcode
;
6737 #define _1stlevelbatch 0
6738 #define _2ndlevelbatch 1
6739 uint32_t _2ndLevelBatchBuffer
;
6740 bool AddOffsetEnable
;
6741 uint32_t PredicationEnable
;
6742 bool ResourceStreamerEnable
;
6745 uint32_t AddressSpaceIndicator
;
6746 uint32_t DwordLength
;
6747 __gen_address_type BatchBufferStartAddress
;
6751 GEN8_MI_BATCH_BUFFER_START_pack(__gen_user_data
*data
, void * restrict dst
,
6752 const struct GEN8_MI_BATCH_BUFFER_START
* restrict values
)
6754 uint32_t *dw
= (uint32_t * restrict
) dst
;
6757 __gen_field(values
->CommandType
, 29, 31) |
6758 __gen_field(values
->MICommandOpcode
, 23, 28) |
6759 __gen_field(values
->_2ndLevelBatchBuffer
, 22, 22) |
6760 __gen_field(values
->AddOffsetEnable
, 16, 16) |
6761 __gen_field(values
->PredicationEnable
, 15, 15) |
6762 __gen_field(values
->ResourceStreamerEnable
, 10, 10) |
6763 __gen_field(values
->AddressSpaceIndicator
, 8, 8) |
6764 __gen_field(values
->DwordLength
, 0, 7) |
6771 __gen_combine_address(data
, &dw
[1], values
->BatchBufferStartAddress
, dw1
);
6778 #define GEN8_MI_CLFLUSH_length_bias 0x00000002
6779 #define GEN8_MI_CLFLUSH_header \
6781 .MICommandOpcode = 39
6783 #define GEN8_MI_CLFLUSH_length 0x00000000
6785 struct GEN8_MI_CLFLUSH
{
6786 uint32_t CommandType
;
6787 uint32_t MICommandOpcode
;
6788 #define PerProcessGraphicsAddress 0
6789 #define GlobalGraphicsAddress 1
6790 uint32_t UseGlobalGTT
;
6791 uint32_t DwordLength
;
6792 __gen_address_type PageBaseAddress
;
6793 uint32_t StartingCachelineOffset
;
6794 /* variable length fields follow */
6798 GEN8_MI_CLFLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6799 const struct GEN8_MI_CLFLUSH
* restrict values
)
6801 uint32_t *dw
= (uint32_t * restrict
) dst
;
6804 __gen_field(values
->CommandType
, 29, 31) |
6805 __gen_field(values
->MICommandOpcode
, 23, 28) |
6806 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6807 __gen_field(values
->DwordLength
, 0, 9) |
6811 __gen_field(values
->StartingCachelineOffset
, 6, 11) |
6815 __gen_combine_address(data
, &dw
[1], values
->PageBaseAddress
, dw1
);
6820 /* variable length fields follow */
6823 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias 0x00000002
6824 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_header\
6826 .MICommandOpcode = 54, \
6827 .UseGlobalGTT = 0, \
6828 .CompareSemaphore = 0, \
6831 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length 0x00000003
6833 struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
{
6834 uint32_t CommandType
;
6835 uint32_t MICommandOpcode
;
6836 uint32_t UseGlobalGTT
;
6837 uint32_t CompareSemaphore
;
6838 uint32_t DwordLength
;
6839 uint32_t CompareDataDword
;
6840 __gen_address_type CompareAddress
;
6844 GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6845 const struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
* restrict values
)
6847 uint32_t *dw
= (uint32_t * restrict
) dst
;
6850 __gen_field(values
->CommandType
, 29, 31) |
6851 __gen_field(values
->MICommandOpcode
, 23, 28) |
6852 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6853 __gen_field(values
->CompareSemaphore
, 21, 21) |
6854 __gen_field(values
->DwordLength
, 0, 7) |
6858 __gen_field(values
->CompareDataDword
, 0, 31) |
6865 __gen_combine_address(data
, &dw
[2], values
->CompareAddress
, dw2
);
6872 #define GEN8_MI_COPY_MEM_MEM_length_bias 0x00000002
6873 #define GEN8_MI_COPY_MEM_MEM_header \
6875 .MICommandOpcode = 46, \
6878 #define GEN8_MI_COPY_MEM_MEM_length 0x00000005
6880 struct GEN8_MI_COPY_MEM_MEM
{
6881 uint32_t CommandType
;
6882 uint32_t MICommandOpcode
;
6883 #define PerProcessGraphicsAddress 0
6884 #define GlobalGraphicsAddress 1
6885 uint32_t UseGlobalGTTSource
;
6886 #define PerProcessGraphicsAddress 0
6887 #define GlobalGraphicsAddress 1
6888 uint32_t UseGlobalGTTDestination
;
6889 uint32_t DwordLength
;
6890 __gen_address_type DestinationMemoryAddress
;
6891 __gen_address_type SourceMemoryAddress
;
6895 GEN8_MI_COPY_MEM_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6896 const struct GEN8_MI_COPY_MEM_MEM
* restrict values
)
6898 uint32_t *dw
= (uint32_t * restrict
) dst
;
6901 __gen_field(values
->CommandType
, 29, 31) |
6902 __gen_field(values
->MICommandOpcode
, 23, 28) |
6903 __gen_field(values
->UseGlobalGTTSource
, 22, 22) |
6904 __gen_field(values
->UseGlobalGTTDestination
, 21, 21) |
6905 __gen_field(values
->DwordLength
, 0, 7) |
6912 __gen_combine_address(data
, &dw
[1], values
->DestinationMemoryAddress
, dw1
);
6921 __gen_combine_address(data
, &dw
[3], values
->SourceMemoryAddress
, dw3
);
6928 #define GEN8_MI_LOAD_REGISTER_IMM_length_bias 0x00000002
6929 #define GEN8_MI_LOAD_REGISTER_IMM_header \
6931 .MICommandOpcode = 34, \
6934 #define GEN8_MI_LOAD_REGISTER_IMM_length 0x00000003
6936 struct GEN8_MI_LOAD_REGISTER_IMM
{
6937 uint32_t CommandType
;
6938 uint32_t MICommandOpcode
;
6939 uint32_t ByteWriteDisables
;
6940 uint32_t DwordLength
;
6941 uint32_t RegisterOffset
;
6946 GEN8_MI_LOAD_REGISTER_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
6947 const struct GEN8_MI_LOAD_REGISTER_IMM
* restrict values
)
6949 uint32_t *dw
= (uint32_t * restrict
) dst
;
6952 __gen_field(values
->CommandType
, 29, 31) |
6953 __gen_field(values
->MICommandOpcode
, 23, 28) |
6954 __gen_field(values
->ByteWriteDisables
, 8, 11) |
6955 __gen_field(values
->DwordLength
, 0, 7) |
6959 __gen_offset(values
->RegisterOffset
, 2, 22) |
6963 __gen_field(values
->DataDWord
, 0, 31) |
6968 #define GEN8_MI_LOAD_REGISTER_MEM_length_bias 0x00000002
6969 #define GEN8_MI_LOAD_REGISTER_MEM_header \
6971 .MICommandOpcode = 41, \
6974 #define GEN8_MI_LOAD_REGISTER_MEM_length 0x00000004
6976 struct GEN8_MI_LOAD_REGISTER_MEM
{
6977 uint32_t CommandType
;
6978 uint32_t MICommandOpcode
;
6980 uint32_t AsyncModeEnable
;
6981 uint32_t DwordLength
;
6982 uint32_t RegisterAddress
;
6983 __gen_address_type MemoryAddress
;
6987 GEN8_MI_LOAD_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6988 const struct GEN8_MI_LOAD_REGISTER_MEM
* restrict values
)
6990 uint32_t *dw
= (uint32_t * restrict
) dst
;
6993 __gen_field(values
->CommandType
, 29, 31) |
6994 __gen_field(values
->MICommandOpcode
, 23, 28) |
6995 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6996 __gen_field(values
->AsyncModeEnable
, 21, 21) |
6997 __gen_field(values
->DwordLength
, 0, 7) |
7001 __gen_offset(values
->RegisterAddress
, 2, 22) |
7008 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7015 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length_bias 0x00000002
7016 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_header \
7018 .MICommandOpcode = 19, \
7021 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length 0x00000002
7023 struct GEN8_MI_LOAD_SCAN_LINES_EXCL
{
7024 uint32_t CommandType
;
7025 uint32_t MICommandOpcode
;
7026 #define DisplayPlaneA 0
7027 #define DisplayPlaneB 1
7028 #define DisplayPlaneC 4
7029 uint32_t DisplayPlaneSelect
;
7030 uint32_t DwordLength
;
7031 uint32_t StartScanLineNumber
;
7032 uint32_t EndScanLineNumber
;
7036 GEN8_MI_LOAD_SCAN_LINES_EXCL_pack(__gen_user_data
*data
, void * restrict dst
,
7037 const struct GEN8_MI_LOAD_SCAN_LINES_EXCL
* restrict values
)
7039 uint32_t *dw
= (uint32_t * restrict
) dst
;
7042 __gen_field(values
->CommandType
, 29, 31) |
7043 __gen_field(values
->MICommandOpcode
, 23, 28) |
7044 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
7045 __gen_field(values
->DwordLength
, 0, 5) |
7049 __gen_field(values
->StartScanLineNumber
, 16, 28) |
7050 __gen_field(values
->EndScanLineNumber
, 0, 12) |
7055 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length_bias 0x00000002
7056 #define GEN8_MI_LOAD_SCAN_LINES_INCL_header \
7058 .MICommandOpcode = 18, \
7061 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length 0x00000002
7063 struct GEN8_MI_LOAD_SCAN_LINES_INCL
{
7064 uint32_t CommandType
;
7065 uint32_t MICommandOpcode
;
7066 #define DisplayPlaneA 0
7067 #define DisplayPlaneB 1
7068 #define DisplayPlaneC 4
7069 uint32_t DisplayPlaneSelect
;
7070 #define NeverForward 0
7071 #define AlwaysForward 1
7072 #define ConditionallyForward 2
7073 bool ScanLineEventDoneForward
;
7074 uint32_t DwordLength
;
7075 uint32_t StartScanLineNumber
;
7076 uint32_t EndScanLineNumber
;
7080 GEN8_MI_LOAD_SCAN_LINES_INCL_pack(__gen_user_data
*data
, void * restrict dst
,
7081 const struct GEN8_MI_LOAD_SCAN_LINES_INCL
* restrict values
)
7083 uint32_t *dw
= (uint32_t * restrict
) dst
;
7086 __gen_field(values
->CommandType
, 29, 31) |
7087 __gen_field(values
->MICommandOpcode
, 23, 28) |
7088 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
7089 __gen_field(values
->ScanLineEventDoneForward
, 17, 18) |
7090 __gen_field(values
->DwordLength
, 0, 5) |
7094 __gen_field(values
->StartScanLineNumber
, 16, 28) |
7095 __gen_field(values
->EndScanLineNumber
, 0, 12) |
7100 #define GEN8_MI_LOAD_URB_MEM_length_bias 0x00000002
7101 #define GEN8_MI_LOAD_URB_MEM_header \
7103 .MICommandOpcode = 44, \
7106 #define GEN8_MI_LOAD_URB_MEM_length 0x00000004
7108 struct GEN8_MI_LOAD_URB_MEM
{
7109 uint32_t CommandType
;
7110 uint32_t MICommandOpcode
;
7111 uint32_t DwordLength
;
7112 uint32_t URBAddress
;
7113 __gen_address_type MemoryAddress
;
7117 GEN8_MI_LOAD_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
7118 const struct GEN8_MI_LOAD_URB_MEM
* restrict values
)
7120 uint32_t *dw
= (uint32_t * restrict
) dst
;
7123 __gen_field(values
->CommandType
, 29, 31) |
7124 __gen_field(values
->MICommandOpcode
, 23, 28) |
7125 __gen_field(values
->DwordLength
, 0, 7) |
7129 __gen_field(values
->URBAddress
, 2, 14) |
7136 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7143 #define GEN8_MI_MATH_length_bias 0x00000002
7144 #define GEN8_MI_MATH_header \
7146 .MICommandOpcode = 26
7148 #define GEN8_MI_MATH_length 0x00000000
7150 struct GEN8_MI_MATH
{
7151 uint32_t CommandType
;
7152 uint32_t MICommandOpcode
;
7153 uint32_t DwordLength
;
7154 uint32_t ALUINSTRUCTION1
;
7155 uint32_t ALUINSTRUCTION2
;
7156 /* variable length fields follow */
7160 GEN8_MI_MATH_pack(__gen_user_data
*data
, void * restrict dst
,
7161 const struct GEN8_MI_MATH
* restrict values
)
7163 uint32_t *dw
= (uint32_t * restrict
) dst
;
7166 __gen_field(values
->CommandType
, 29, 31) |
7167 __gen_field(values
->MICommandOpcode
, 23, 28) |
7168 __gen_field(values
->DwordLength
, 0, 5) |
7172 __gen_field(values
->ALUINSTRUCTION1
, 0, 31) |
7176 __gen_field(values
->ALUINSTRUCTION2
, 0, 31) |
7179 /* variable length fields follow */
7182 #define GEN8_MI_NOOP_length_bias 0x00000001
7183 #define GEN8_MI_NOOP_header \
7185 .MICommandOpcode = 0
7187 #define GEN8_MI_NOOP_length 0x00000001
7189 struct GEN8_MI_NOOP
{
7190 uint32_t CommandType
;
7191 uint32_t MICommandOpcode
;
7192 bool IdentificationNumberRegisterWriteEnable
;
7193 uint32_t IdentificationNumber
;
7197 GEN8_MI_NOOP_pack(__gen_user_data
*data
, void * restrict dst
,
7198 const struct GEN8_MI_NOOP
* restrict values
)
7200 uint32_t *dw
= (uint32_t * restrict
) dst
;
7203 __gen_field(values
->CommandType
, 29, 31) |
7204 __gen_field(values
->MICommandOpcode
, 23, 28) |
7205 __gen_field(values
->IdentificationNumberRegisterWriteEnable
, 22, 22) |
7206 __gen_field(values
->IdentificationNumber
, 0, 21) |
7211 #define GEN8_MI_PREDICATE_length_bias 0x00000001
7212 #define GEN8_MI_PREDICATE_header \
7214 .MICommandOpcode = 12
7216 #define GEN8_MI_PREDICATE_length 0x00000001
7218 struct GEN8_MI_PREDICATE
{
7219 uint32_t CommandType
;
7220 uint32_t MICommandOpcode
;
7223 #define LOAD_LOADINV 3
7224 uint32_t LoadOperation
;
7225 #define COMBINE_SET 0
7226 #define COMBINE_AND 1
7227 #define COMBINE_OR 2
7228 #define COMBINE_XOR 3
7229 uint32_t CombineOperation
;
7230 #define COMPARE_SRCS_EQUAL 2
7231 #define COMPARE_DELTAS_EQUAL 3
7232 uint32_t CompareOperation
;
7236 GEN8_MI_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7237 const struct GEN8_MI_PREDICATE
* restrict values
)
7239 uint32_t *dw
= (uint32_t * restrict
) dst
;
7242 __gen_field(values
->CommandType
, 29, 31) |
7243 __gen_field(values
->MICommandOpcode
, 23, 28) |
7244 __gen_field(values
->LoadOperation
, 6, 7) |
7245 __gen_field(values
->CombineOperation
, 3, 4) |
7246 __gen_field(values
->CompareOperation
, 0, 1) |
7251 #define GEN8_MI_REPORT_HEAD_length_bias 0x00000001
7252 #define GEN8_MI_REPORT_HEAD_header \
7254 .MICommandOpcode = 7
7256 #define GEN8_MI_REPORT_HEAD_length 0x00000001
7258 struct GEN8_MI_REPORT_HEAD
{
7259 uint32_t CommandType
;
7260 uint32_t MICommandOpcode
;
7264 GEN8_MI_REPORT_HEAD_pack(__gen_user_data
*data
, void * restrict dst
,
7265 const struct GEN8_MI_REPORT_HEAD
* restrict values
)
7267 uint32_t *dw
= (uint32_t * restrict
) dst
;
7270 __gen_field(values
->CommandType
, 29, 31) |
7271 __gen_field(values
->MICommandOpcode
, 23, 28) |
7276 #define GEN8_MI_RS_CONTEXT_length_bias 0x00000001
7277 #define GEN8_MI_RS_CONTEXT_header \
7279 .MICommandOpcode = 15
7281 #define GEN8_MI_RS_CONTEXT_length 0x00000001
7283 struct GEN8_MI_RS_CONTEXT
{
7284 uint32_t CommandType
;
7285 uint32_t MICommandOpcode
;
7286 #define RS_RESTORE 0
7288 uint32_t ResourceStreamerSave
;
7292 GEN8_MI_RS_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7293 const struct GEN8_MI_RS_CONTEXT
* restrict values
)
7295 uint32_t *dw
= (uint32_t * restrict
) dst
;
7298 __gen_field(values
->CommandType
, 29, 31) |
7299 __gen_field(values
->MICommandOpcode
, 23, 28) |
7300 __gen_field(values
->ResourceStreamerSave
, 0, 0) |
7305 #define GEN8_MI_RS_CONTROL_length_bias 0x00000001
7306 #define GEN8_MI_RS_CONTROL_header \
7308 .MICommandOpcode = 6
7310 #define GEN8_MI_RS_CONTROL_length 0x00000001
7312 struct GEN8_MI_RS_CONTROL
{
7313 uint32_t CommandType
;
7314 uint32_t MICommandOpcode
;
7317 uint32_t ResourceStreamerControl
;
7321 GEN8_MI_RS_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7322 const struct GEN8_MI_RS_CONTROL
* restrict values
)
7324 uint32_t *dw
= (uint32_t * restrict
) dst
;
7327 __gen_field(values
->CommandType
, 29, 31) |
7328 __gen_field(values
->MICommandOpcode
, 23, 28) |
7329 __gen_field(values
->ResourceStreamerControl
, 0, 0) |
7334 #define GEN8_MI_RS_STORE_DATA_IMM_length_bias 0x00000002
7335 #define GEN8_MI_RS_STORE_DATA_IMM_header \
7337 .MICommandOpcode = 43, \
7340 #define GEN8_MI_RS_STORE_DATA_IMM_length 0x00000004
7342 struct GEN8_MI_RS_STORE_DATA_IMM
{
7343 uint32_t CommandType
;
7344 uint32_t MICommandOpcode
;
7345 uint32_t DwordLength
;
7346 __gen_address_type DestinationAddress
;
7347 uint32_t CoreModeEnable
;
7348 uint32_t DataDWord0
;
7352 GEN8_MI_RS_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7353 const struct GEN8_MI_RS_STORE_DATA_IMM
* restrict values
)
7355 uint32_t *dw
= (uint32_t * restrict
) dst
;
7358 __gen_field(values
->CommandType
, 29, 31) |
7359 __gen_field(values
->MICommandOpcode
, 23, 28) |
7360 __gen_field(values
->DwordLength
, 0, 7) |
7364 __gen_field(values
->CoreModeEnable
, 0, 0) |
7368 __gen_combine_address(data
, &dw
[1], values
->DestinationAddress
, dw1
);
7374 __gen_field(values
->DataDWord0
, 0, 31) |
7379 #define GEN8_MI_SET_CONTEXT_length_bias 0x00000002
7380 #define GEN8_MI_SET_CONTEXT_header \
7382 .MICommandOpcode = 24, \
7385 #define GEN8_MI_SET_CONTEXT_length 0x00000002
7387 struct GEN8_MI_SET_CONTEXT
{
7388 uint32_t CommandType
;
7389 uint32_t MICommandOpcode
;
7390 uint32_t DwordLength
;
7391 __gen_address_type LogicalContextAddress
;
7392 uint32_t ReservedMustbe1
;
7393 bool CoreModeEnable
;
7394 bool ResourceStreamerStateSaveEnable
;
7395 bool ResourceStreamerStateRestoreEnable
;
7396 uint32_t ForceRestore
;
7397 uint32_t RestoreInhibit
;
7401 GEN8_MI_SET_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7402 const struct GEN8_MI_SET_CONTEXT
* restrict values
)
7404 uint32_t *dw
= (uint32_t * restrict
) dst
;
7407 __gen_field(values
->CommandType
, 29, 31) |
7408 __gen_field(values
->MICommandOpcode
, 23, 28) |
7409 __gen_field(values
->DwordLength
, 0, 7) |
7413 __gen_field(values
->ReservedMustbe1
, 8, 8) |
7414 __gen_field(values
->CoreModeEnable
, 4, 4) |
7415 __gen_field(values
->ResourceStreamerStateSaveEnable
, 3, 3) |
7416 __gen_field(values
->ResourceStreamerStateRestoreEnable
, 2, 2) |
7417 __gen_field(values
->ForceRestore
, 1, 1) |
7418 __gen_field(values
->RestoreInhibit
, 0, 0) |
7422 __gen_combine_address(data
, &dw
[1], values
->LogicalContextAddress
, dw1
);
7426 #define GEN8_MI_SET_PREDICATE_length_bias 0x00000001
7427 #define GEN8_MI_SET_PREDICATE_header \
7429 .MICommandOpcode = 1
7431 #define GEN8_MI_SET_PREDICATE_length 0x00000001
7433 struct GEN8_MI_SET_PREDICATE
{
7434 uint32_t CommandType
;
7435 uint32_t MICommandOpcode
;
7437 #define NOOPonResult2clear 1
7438 #define NOOPonResult2set 2
7439 #define NOOPonResultclear 3
7440 #define NOOPonResultset 4
7441 #define Executewhenonesliceenabled 5
7442 #define Executewhentwoslicesareenabled 6
7443 #define Executewhenthreeslicesareenabled 7
7444 #define NOOPAlways 15
7445 uint32_t PREDICATEENABLE
;
7449 GEN8_MI_SET_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7450 const struct GEN8_MI_SET_PREDICATE
* restrict values
)
7452 uint32_t *dw
= (uint32_t * restrict
) dst
;
7455 __gen_field(values
->CommandType
, 29, 31) |
7456 __gen_field(values
->MICommandOpcode
, 23, 28) |
7457 __gen_field(values
->PREDICATEENABLE
, 0, 3) |
7462 #define GEN8_MI_STORE_DATA_IMM_length_bias 0x00000002
7463 #define GEN8_MI_STORE_DATA_IMM_header \
7465 .MICommandOpcode = 32, \
7468 #define GEN8_MI_STORE_DATA_IMM_length 0x00000004
7470 struct GEN8_MI_STORE_DATA_IMM
{
7471 uint32_t CommandType
;
7472 uint32_t MICommandOpcode
;
7475 uint32_t DwordLength
;
7476 __gen_address_type Address
;
7477 uint32_t CoreModeEnable
;
7478 uint32_t DataDWord0
;
7479 uint32_t DataDWord1
;
7483 GEN8_MI_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7484 const struct GEN8_MI_STORE_DATA_IMM
* restrict values
)
7486 uint32_t *dw
= (uint32_t * restrict
) dst
;
7489 __gen_field(values
->CommandType
, 29, 31) |
7490 __gen_field(values
->MICommandOpcode
, 23, 28) |
7491 __gen_field(values
->UseGlobalGTT
, 22, 22) |
7492 __gen_field(values
->StoreQword
, 21, 21) |
7493 __gen_field(values
->DwordLength
, 0, 9) |
7497 __gen_field(values
->CoreModeEnable
, 0, 0) |
7501 __gen_combine_address(data
, &dw
[1], values
->Address
, dw1
);
7507 __gen_field(values
->DataDWord0
, 0, 31) |
7511 __gen_field(values
->DataDWord1
, 0, 31) |
7516 #define GEN8_MI_STORE_DATA_INDEX_length_bias 0x00000002
7517 #define GEN8_MI_STORE_DATA_INDEX_header \
7519 .MICommandOpcode = 33, \
7522 #define GEN8_MI_STORE_DATA_INDEX_length 0x00000003
7524 struct GEN8_MI_STORE_DATA_INDEX
{
7525 uint32_t CommandType
;
7526 uint32_t MICommandOpcode
;
7527 uint32_t UsePerProcessHardwareStatusPage
;
7528 uint32_t DwordLength
;
7530 uint32_t DataDWord0
;
7531 uint32_t DataDWord1
;
7535 GEN8_MI_STORE_DATA_INDEX_pack(__gen_user_data
*data
, void * restrict dst
,
7536 const struct GEN8_MI_STORE_DATA_INDEX
* restrict values
)
7538 uint32_t *dw
= (uint32_t * restrict
) dst
;
7541 __gen_field(values
->CommandType
, 29, 31) |
7542 __gen_field(values
->MICommandOpcode
, 23, 28) |
7543 __gen_field(values
->UsePerProcessHardwareStatusPage
, 21, 21) |
7544 __gen_field(values
->DwordLength
, 0, 7) |
7548 __gen_field(values
->Offset
, 2, 11) |
7552 __gen_field(values
->DataDWord0
, 0, 31) |
7556 __gen_field(values
->DataDWord1
, 0, 31) |
7561 #define GEN8_MI_STORE_URB_MEM_length_bias 0x00000002
7562 #define GEN8_MI_STORE_URB_MEM_header \
7564 .MICommandOpcode = 45, \
7567 #define GEN8_MI_STORE_URB_MEM_length 0x00000004
7569 struct GEN8_MI_STORE_URB_MEM
{
7570 uint32_t CommandType
;
7571 uint32_t MICommandOpcode
;
7572 uint32_t DwordLength
;
7573 uint32_t URBAddress
;
7574 __gen_address_type MemoryAddress
;
7578 GEN8_MI_STORE_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
7579 const struct GEN8_MI_STORE_URB_MEM
* restrict values
)
7581 uint32_t *dw
= (uint32_t * restrict
) dst
;
7584 __gen_field(values
->CommandType
, 29, 31) |
7585 __gen_field(values
->MICommandOpcode
, 23, 28) |
7586 __gen_field(values
->DwordLength
, 0, 7) |
7590 __gen_field(values
->URBAddress
, 2, 14) |
7597 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7604 #define GEN8_MI_SUSPEND_FLUSH_length_bias 0x00000001
7605 #define GEN8_MI_SUSPEND_FLUSH_header \
7607 .MICommandOpcode = 11
7609 #define GEN8_MI_SUSPEND_FLUSH_length 0x00000001
7611 struct GEN8_MI_SUSPEND_FLUSH
{
7612 uint32_t CommandType
;
7613 uint32_t MICommandOpcode
;
7618 GEN8_MI_SUSPEND_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
7619 const struct GEN8_MI_SUSPEND_FLUSH
* restrict values
)
7621 uint32_t *dw
= (uint32_t * restrict
) dst
;
7624 __gen_field(values
->CommandType
, 29, 31) |
7625 __gen_field(values
->MICommandOpcode
, 23, 28) |
7626 __gen_field(values
->SuspendFlush
, 0, 0) |
7631 #define GEN8_MI_TOPOLOGY_FILTER_length_bias 0x00000001
7632 #define GEN8_MI_TOPOLOGY_FILTER_header \
7634 .MICommandOpcode = 13
7636 #define GEN8_MI_TOPOLOGY_FILTER_length 0x00000001
7638 struct GEN8_MI_TOPOLOGY_FILTER
{
7639 uint32_t CommandType
;
7640 uint32_t MICommandOpcode
;
7641 uint32_t TopologyFilterValue
;
7645 GEN8_MI_TOPOLOGY_FILTER_pack(__gen_user_data
*data
, void * restrict dst
,
7646 const struct GEN8_MI_TOPOLOGY_FILTER
* restrict values
)
7648 uint32_t *dw
= (uint32_t * restrict
) dst
;
7651 __gen_field(values
->CommandType
, 29, 31) |
7652 __gen_field(values
->MICommandOpcode
, 23, 28) |
7653 __gen_field(values
->TopologyFilterValue
, 0, 5) |
7658 #define GEN8_MI_UPDATE_GTT_length_bias 0x00000002
7659 #define GEN8_MI_UPDATE_GTT_header \
7661 .MICommandOpcode = 35
7663 #define GEN8_MI_UPDATE_GTT_length 0x00000000
7665 struct GEN8_MI_UPDATE_GTT
{
7666 uint32_t CommandType
;
7667 uint32_t MICommandOpcode
;
7668 uint32_t DwordLength
;
7669 __gen_address_type EntryAddress
;
7670 /* variable length fields follow */
7674 GEN8_MI_UPDATE_GTT_pack(__gen_user_data
*data
, void * restrict dst
,
7675 const struct GEN8_MI_UPDATE_GTT
* restrict values
)
7677 uint32_t *dw
= (uint32_t * restrict
) dst
;
7680 __gen_field(values
->CommandType
, 29, 31) |
7681 __gen_field(values
->MICommandOpcode
, 23, 28) |
7682 __gen_field(values
->DwordLength
, 0, 9) |
7689 __gen_combine_address(data
, &dw
[1], values
->EntryAddress
, dw1
);
7691 /* variable length fields follow */
7694 #define GEN8_MI_URB_ATOMIC_ALLOC_length_bias 0x00000001
7695 #define GEN8_MI_URB_ATOMIC_ALLOC_header \
7697 .MICommandOpcode = 9
7699 #define GEN8_MI_URB_ATOMIC_ALLOC_length 0x00000001
7701 struct GEN8_MI_URB_ATOMIC_ALLOC
{
7702 uint32_t CommandType
;
7703 uint32_t MICommandOpcode
;
7704 uint32_t URBAtomicStorageOffset
;
7705 uint32_t URBAtomicStorageSize
;
7709 GEN8_MI_URB_ATOMIC_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
7710 const struct GEN8_MI_URB_ATOMIC_ALLOC
* restrict values
)
7712 uint32_t *dw
= (uint32_t * restrict
) dst
;
7715 __gen_field(values
->CommandType
, 29, 31) |
7716 __gen_field(values
->MICommandOpcode
, 23, 28) |
7717 __gen_field(values
->URBAtomicStorageOffset
, 12, 19) |
7718 __gen_field(values
->URBAtomicStorageSize
, 0, 8) |
7723 #define GEN8_MI_URB_CLEAR_length_bias 0x00000002
7724 #define GEN8_MI_URB_CLEAR_header \
7726 .MICommandOpcode = 25, \
7729 #define GEN8_MI_URB_CLEAR_length 0x00000002
7731 struct GEN8_MI_URB_CLEAR
{
7732 uint32_t CommandType
;
7733 uint32_t MICommandOpcode
;
7734 uint32_t DwordLength
;
7735 uint32_t URBClearLength
;
7736 uint32_t URBAddress
;
7740 GEN8_MI_URB_CLEAR_pack(__gen_user_data
*data
, void * restrict dst
,
7741 const struct GEN8_MI_URB_CLEAR
* restrict values
)
7743 uint32_t *dw
= (uint32_t * restrict
) dst
;
7746 __gen_field(values
->CommandType
, 29, 31) |
7747 __gen_field(values
->MICommandOpcode
, 23, 28) |
7748 __gen_field(values
->DwordLength
, 0, 7) |
7752 __gen_field(values
->URBClearLength
, 16, 29) |
7753 __gen_offset(values
->URBAddress
, 0, 14) |
7758 #define GEN8_MI_USER_INTERRUPT_length_bias 0x00000001
7759 #define GEN8_MI_USER_INTERRUPT_header \
7761 .MICommandOpcode = 2
7763 #define GEN8_MI_USER_INTERRUPT_length 0x00000001
7765 struct GEN8_MI_USER_INTERRUPT
{
7766 uint32_t CommandType
;
7767 uint32_t MICommandOpcode
;
7771 GEN8_MI_USER_INTERRUPT_pack(__gen_user_data
*data
, void * restrict dst
,
7772 const struct GEN8_MI_USER_INTERRUPT
* restrict values
)
7774 uint32_t *dw
= (uint32_t * restrict
) dst
;
7777 __gen_field(values
->CommandType
, 29, 31) |
7778 __gen_field(values
->MICommandOpcode
, 23, 28) |
7783 #define GEN8_MI_WAIT_FOR_EVENT_length_bias 0x00000001
7784 #define GEN8_MI_WAIT_FOR_EVENT_header \
7786 .MICommandOpcode = 3
7788 #define GEN8_MI_WAIT_FOR_EVENT_length 0x00000001
7790 struct GEN8_MI_WAIT_FOR_EVENT
{
7791 uint32_t CommandType
;
7792 uint32_t MICommandOpcode
;
7793 bool DisplayPipeCVerticalBlankWaitEnable
;
7794 bool DisplaySpriteCFlipPendingWaitEnable
;
7795 bool DisplayPlaneCFlipPendingWaitEnable
;
7796 bool DisplayPipeCScanLineWaitEnable
;
7797 bool DisplayPipeBVerticalBlankWaitEnable
;
7798 bool DisplaySpriteBFlipPendingWaitEnable
;
7799 bool DisplayPlaneBFlipPendingWaitEnable
;
7800 bool DisplayPipeBScanLineWaitEnable
;
7801 bool DisplayPipeAVerticalBlankWaitEnable
;
7802 bool DisplaySpriteAFlipPendingWaitEnable
;
7803 bool DisplayPlaneAFlipPendingWaitEnable
;
7804 bool DisplayPipeAScanLineWaitEnable
;
7808 GEN8_MI_WAIT_FOR_EVENT_pack(__gen_user_data
*data
, void * restrict dst
,
7809 const struct GEN8_MI_WAIT_FOR_EVENT
* restrict values
)
7811 uint32_t *dw
= (uint32_t * restrict
) dst
;
7814 __gen_field(values
->CommandType
, 29, 31) |
7815 __gen_field(values
->MICommandOpcode
, 23, 28) |
7816 __gen_field(values
->DisplayPipeCVerticalBlankWaitEnable
, 21, 21) |
7817 __gen_field(values
->DisplaySpriteCFlipPendingWaitEnable
, 20, 20) |
7818 __gen_field(values
->DisplayPlaneCFlipPendingWaitEnable
, 15, 15) |
7819 __gen_field(values
->DisplayPipeCScanLineWaitEnable
, 14, 14) |
7820 __gen_field(values
->DisplayPipeBVerticalBlankWaitEnable
, 11, 11) |
7821 __gen_field(values
->DisplaySpriteBFlipPendingWaitEnable
, 10, 10) |
7822 __gen_field(values
->DisplayPlaneBFlipPendingWaitEnable
, 9, 9) |
7823 __gen_field(values
->DisplayPipeBScanLineWaitEnable
, 8, 8) |
7824 __gen_field(values
->DisplayPipeAVerticalBlankWaitEnable
, 3, 3) |
7825 __gen_field(values
->DisplaySpriteAFlipPendingWaitEnable
, 2, 2) |
7826 __gen_field(values
->DisplayPlaneAFlipPendingWaitEnable
, 1, 1) |
7827 __gen_field(values
->DisplayPipeAScanLineWaitEnable
, 0, 0) |
7832 #define GEN8_PIPE_CONTROL_length_bias 0x00000002
7833 #define GEN8_PIPE_CONTROL_header \
7835 .CommandSubType = 3, \
7836 ._3DCommandOpcode = 2, \
7837 ._3DCommandSubOpcode = 0, \
7840 #define GEN8_PIPE_CONTROL_length 0x00000006
7842 struct GEN8_PIPE_CONTROL
{
7843 uint32_t CommandType
;
7844 uint32_t CommandSubType
;
7845 uint32_t _3DCommandOpcode
;
7846 uint32_t _3DCommandSubOpcode
;
7847 uint32_t DwordLength
;
7850 uint32_t DestinationAddressType
;
7851 #define NoLRIOperation 0
7852 #define MMIOWriteImmediateData 1
7853 uint32_t LRIPostSyncOperation
;
7854 uint32_t StoreDataIndex
;
7855 uint32_t CommandStreamerStallEnable
;
7858 uint32_t GlobalSnapshotCountReset
;
7859 uint32_t TLBInvalidate
;
7860 bool GenericMediaStateClear
;
7862 #define WriteImmediateData 1
7863 #define WritePSDepthCount 2
7864 #define WriteTimestamp 3
7865 uint32_t PostSyncOperation
;
7866 bool DepthStallEnable
;
7867 #define DisableFlush 0
7868 #define EnableFlush 1
7869 bool RenderTargetCacheFlushEnable
;
7870 bool InstructionCacheInvalidateEnable
;
7871 bool TextureCacheInvalidationEnable
;
7872 bool IndirectStatePointersDisable
;
7874 bool PipeControlFlushEnable
;
7876 bool VFCacheInvalidationEnable
;
7877 bool ConstantCacheInvalidationEnable
;
7878 bool StateCacheInvalidationEnable
;
7879 bool StallAtPixelScoreboard
;
7880 #define FlushDisabled 0
7881 #define FlushEnabled 1
7882 bool DepthCacheFlushEnable
;
7883 __gen_address_type Address
;
7884 uint64_t ImmediateData
;
7888 GEN8_PIPE_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7889 const struct GEN8_PIPE_CONTROL
* restrict values
)
7891 uint32_t *dw
= (uint32_t * restrict
) dst
;
7894 __gen_field(values
->CommandType
, 29, 31) |
7895 __gen_field(values
->CommandSubType
, 27, 28) |
7896 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
7897 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
7898 __gen_field(values
->DwordLength
, 0, 7) |
7902 __gen_field(values
->DestinationAddressType
, 24, 24) |
7903 __gen_field(values
->LRIPostSyncOperation
, 23, 23) |
7904 __gen_field(values
->StoreDataIndex
, 21, 21) |
7905 __gen_field(values
->CommandStreamerStallEnable
, 20, 20) |
7906 __gen_field(values
->GlobalSnapshotCountReset
, 19, 19) |
7907 __gen_field(values
->TLBInvalidate
, 18, 18) |
7908 __gen_field(values
->GenericMediaStateClear
, 16, 16) |
7909 __gen_field(values
->PostSyncOperation
, 14, 15) |
7910 __gen_field(values
->DepthStallEnable
, 13, 13) |
7911 __gen_field(values
->RenderTargetCacheFlushEnable
, 12, 12) |
7912 __gen_field(values
->InstructionCacheInvalidateEnable
, 11, 11) |
7913 __gen_field(values
->TextureCacheInvalidationEnable
, 10, 10) |
7914 __gen_field(values
->IndirectStatePointersDisable
, 9, 9) |
7915 __gen_field(values
->NotifyEnable
, 8, 8) |
7916 __gen_field(values
->PipeControlFlushEnable
, 7, 7) |
7917 __gen_field(values
->DCFlushEnable
, 5, 5) |
7918 __gen_field(values
->VFCacheInvalidationEnable
, 4, 4) |
7919 __gen_field(values
->ConstantCacheInvalidationEnable
, 3, 3) |
7920 __gen_field(values
->StateCacheInvalidationEnable
, 2, 2) |
7921 __gen_field(values
->StallAtPixelScoreboard
, 1, 1) |
7922 __gen_field(values
->DepthCacheFlushEnable
, 0, 0) |
7929 __gen_combine_address(data
, &dw
[2], values
->Address
, dw2
);
7935 __gen_field(values
->ImmediateData
, 0, 63) |
7943 #define GEN8_SCISSOR_RECT_length 0x00000002
7945 struct GEN8_SCISSOR_RECT
{
7946 uint32_t ScissorRectangleYMin
;
7947 uint32_t ScissorRectangleXMin
;
7948 uint32_t ScissorRectangleYMax
;
7949 uint32_t ScissorRectangleXMax
;
7953 GEN8_SCISSOR_RECT_pack(__gen_user_data
*data
, void * restrict dst
,
7954 const struct GEN8_SCISSOR_RECT
* restrict values
)
7956 uint32_t *dw
= (uint32_t * restrict
) dst
;
7959 __gen_field(values
->ScissorRectangleYMin
, 16, 31) |
7960 __gen_field(values
->ScissorRectangleXMin
, 0, 15) |
7964 __gen_field(values
->ScissorRectangleYMax
, 16, 31) |
7965 __gen_field(values
->ScissorRectangleXMax
, 0, 15) |
7970 #define GEN8_SF_CLIP_VIEWPORT_length 0x00000010
7972 struct GEN8_SF_CLIP_VIEWPORT
{
7973 float ViewportMatrixElementm00
;
7974 float ViewportMatrixElementm11
;
7975 float ViewportMatrixElementm22
;
7976 float ViewportMatrixElementm30
;
7977 float ViewportMatrixElementm31
;
7978 float ViewportMatrixElementm32
;
7979 float XMinClipGuardband
;
7980 float XMaxClipGuardband
;
7981 float YMinClipGuardband
;
7982 float YMaxClipGuardband
;
7990 GEN8_SF_CLIP_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
7991 const struct GEN8_SF_CLIP_VIEWPORT
* restrict values
)
7993 uint32_t *dw
= (uint32_t * restrict
) dst
;
7996 __gen_float(values
->ViewportMatrixElementm00
) |
8000 __gen_float(values
->ViewportMatrixElementm11
) |
8004 __gen_float(values
->ViewportMatrixElementm22
) |
8008 __gen_float(values
->ViewportMatrixElementm30
) |
8012 __gen_float(values
->ViewportMatrixElementm31
) |
8016 __gen_float(values
->ViewportMatrixElementm32
) |
8026 __gen_float(values
->XMinClipGuardband
) |
8030 __gen_float(values
->XMaxClipGuardband
) |
8034 __gen_float(values
->YMinClipGuardband
) |
8038 __gen_float(values
->YMaxClipGuardband
) |
8042 __gen_float(values
->XMinViewPort
) |
8046 __gen_float(values
->XMaxViewPort
) |
8050 __gen_float(values
->YMinViewPort
) |
8054 __gen_float(values
->YMaxViewPort
) |
8059 #define GEN8_BLEND_STATE_length 0x00000011
8061 #define GEN8_BLEND_STATE_ENTRY_length 0x00000002
8063 struct GEN8_BLEND_STATE_ENTRY
{
8065 uint32_t LogicOpFunction
;
8066 uint32_t PreBlendSourceOnlyClampEnable
;
8067 #define COLORCLAMP_UNORM 0
8068 #define COLORCLAMP_SNORM 1
8069 #define COLORCLAMP_RTFORMAT 2
8070 uint32_t ColorClampRange
;
8071 bool PreBlendColorClampEnable
;
8072 bool PostBlendColorClampEnable
;
8073 bool ColorBufferBlendEnable
;
8074 uint32_t SourceBlendFactor
;
8075 uint32_t DestinationBlendFactor
;
8076 uint32_t ColorBlendFunction
;
8077 uint32_t SourceAlphaBlendFactor
;
8078 uint32_t DestinationAlphaBlendFactor
;
8079 uint32_t AlphaBlendFunction
;
8080 bool WriteDisableAlpha
;
8081 bool WriteDisableRed
;
8082 bool WriteDisableGreen
;
8083 bool WriteDisableBlue
;
8087 GEN8_BLEND_STATE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
8088 const struct GEN8_BLEND_STATE_ENTRY
* restrict values
)
8090 uint32_t *dw
= (uint32_t * restrict
) dst
;
8093 __gen_field(values
->LogicOpEnable
, 63, 63) |
8094 __gen_field(values
->LogicOpFunction
, 59, 62) |
8095 __gen_field(values
->PreBlendSourceOnlyClampEnable
, 36, 36) |
8096 __gen_field(values
->ColorClampRange
, 34, 35) |
8097 __gen_field(values
->PreBlendColorClampEnable
, 33, 33) |
8098 __gen_field(values
->PostBlendColorClampEnable
, 32, 32) |
8099 __gen_field(values
->ColorBufferBlendEnable
, 31, 31) |
8100 __gen_field(values
->SourceBlendFactor
, 26, 30) |
8101 __gen_field(values
->DestinationBlendFactor
, 21, 25) |
8102 __gen_field(values
->ColorBlendFunction
, 18, 20) |
8103 __gen_field(values
->SourceAlphaBlendFactor
, 13, 17) |
8104 __gen_field(values
->DestinationAlphaBlendFactor
, 8, 12) |
8105 __gen_field(values
->AlphaBlendFunction
, 5, 7) |
8106 __gen_field(values
->WriteDisableAlpha
, 3, 3) |
8107 __gen_field(values
->WriteDisableRed
, 2, 2) |
8108 __gen_field(values
->WriteDisableGreen
, 1, 1) |
8109 __gen_field(values
->WriteDisableBlue
, 0, 0) |
8117 struct GEN8_BLEND_STATE
{
8118 bool AlphaToCoverageEnable
;
8119 bool IndependentAlphaBlendEnable
;
8120 bool AlphaToOneEnable
;
8121 bool AlphaToCoverageDitherEnable
;
8122 bool AlphaTestEnable
;
8123 uint32_t AlphaTestFunction
;
8124 bool ColorDitherEnable
;
8125 uint32_t XDitherOffset
;
8126 uint32_t YDitherOffset
;
8127 struct GEN8_BLEND_STATE_ENTRY Entry
[8];
8131 GEN8_BLEND_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8132 const struct GEN8_BLEND_STATE
* restrict values
)
8134 uint32_t *dw
= (uint32_t * restrict
) dst
;
8137 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
8138 __gen_field(values
->IndependentAlphaBlendEnable
, 30, 30) |
8139 __gen_field(values
->AlphaToOneEnable
, 29, 29) |
8140 __gen_field(values
->AlphaToCoverageDitherEnable
, 28, 28) |
8141 __gen_field(values
->AlphaTestEnable
, 27, 27) |
8142 __gen_field(values
->AlphaTestFunction
, 24, 26) |
8143 __gen_field(values
->ColorDitherEnable
, 23, 23) |
8144 __gen_field(values
->XDitherOffset
, 21, 22) |
8145 __gen_field(values
->YDitherOffset
, 19, 20) |
8148 for (uint32_t i
= 0, j
= 1; i
< 8; i
++, j
+= 2)
8149 GEN8_BLEND_STATE_ENTRY_pack(data
, &dw
[j
], &values
->Entry
[i
]);
8152 #define GEN8_CC_VIEWPORT_length 0x00000002
8154 struct GEN8_CC_VIEWPORT
{
8160 GEN8_CC_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
8161 const struct GEN8_CC_VIEWPORT
* restrict values
)
8163 uint32_t *dw
= (uint32_t * restrict
) dst
;
8166 __gen_float(values
->MinimumDepth
) |
8170 __gen_float(values
->MaximumDepth
) |
8175 #define GEN8_COLOR_CALC_STATE_length 0x00000006
8177 struct GEN8_COLOR_CALC_STATE
{
8178 uint32_t StencilReferenceValue
;
8179 uint32_t BackFaceStencilReferenceValue
;
8181 #define NotCancelled 1
8182 uint32_t RoundDisableFunctionDisable
;
8183 #define ALPHATEST_UNORM8 0
8184 #define ALPHATEST_FLOAT32 1
8185 uint32_t AlphaTestFormat
;
8186 uint32_t AlphaReferenceValueAsUNORM8
;
8187 float AlphaReferenceValueAsFLOAT32
;
8188 float BlendConstantColorRed
;
8189 float BlendConstantColorGreen
;
8190 float BlendConstantColorBlue
;
8191 float BlendConstantColorAlpha
;
8195 GEN8_COLOR_CALC_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8196 const struct GEN8_COLOR_CALC_STATE
* restrict values
)
8198 uint32_t *dw
= (uint32_t * restrict
) dst
;
8201 __gen_field(values
->StencilReferenceValue
, 24, 31) |
8202 __gen_field(values
->BackFaceStencilReferenceValue
, 16, 23) |
8203 __gen_field(values
->RoundDisableFunctionDisable
, 15, 15) |
8204 __gen_field(values
->AlphaTestFormat
, 0, 0) |
8208 __gen_field(values
->AlphaReferenceValueAsUNORM8
, 0, 31) |
8209 __gen_float(values
->AlphaReferenceValueAsFLOAT32
) |
8213 __gen_float(values
->BlendConstantColorRed
) |
8217 __gen_float(values
->BlendConstantColorGreen
) |
8221 __gen_float(values
->BlendConstantColorBlue
) |
8225 __gen_float(values
->BlendConstantColorAlpha
) |
8230 #define GEN8_BLACK_LEVEL_CORRECTION_STATE__DW7576_length 0x00000002
8232 struct GEN8_BLACK_LEVEL_CORRECTION_STATE__DW7576
{
8233 uint32_t BlackPointOffsetR
;
8234 uint32_t BlackPointOffsetG
;
8235 uint32_t BlackPointOffsetB
;
8239 GEN8_BLACK_LEVEL_CORRECTION_STATE__DW7576_pack(__gen_user_data
*data
, void * restrict dst
,
8240 const struct GEN8_BLACK_LEVEL_CORRECTION_STATE__DW7576
* restrict values
)
8242 uint32_t *dw
= (uint32_t * restrict
) dst
;
8245 __gen_field(values
->BlackPointOffsetR
, 0, 12) |
8249 __gen_field(values
->BlackPointOffsetG
, 13, 25) |
8250 __gen_field(values
->BlackPointOffsetB
, 0, 12) |
8255 #define GEN8_INTERFACE_DESCRIPTOR_DATA_length 0x00000008
8257 struct GEN8_INTERFACE_DESCRIPTOR_DATA
{
8258 uint32_t KernelStartPointer
;
8259 uint32_t KernelStartPointerHigh
;
8261 #define SetByKernel 1
8262 uint32_t DenormMode
;
8265 uint32_t SingleProgramFlow
;
8266 #define NormalPriority 0
8267 #define HighPriority 1
8268 uint32_t ThreadPriority
;
8271 uint32_t FloatingPointMode
;
8272 bool IllegalOpcodeExceptionEnable
;
8273 bool MaskStackExceptionEnable
;
8274 bool SoftwareExceptionEnable
;
8275 uint32_t SamplerStatePointer
;
8276 #define Nosamplersused 0
8277 #define Between1and4samplersused 1
8278 #define Between5and8samplersused 2
8279 #define Between9and12samplersused 3
8280 #define Between13and16samplersused 4
8281 uint32_t SamplerCount
;
8282 uint32_t BindingTablePointer
;
8283 uint32_t BindingTableEntryCount
;
8284 uint32_t ConstantIndirectURBEntryReadLength
;
8285 uint32_t ConstantURBEntryReadOffset
;
8290 uint32_t RoundingMode
;
8295 #define Encodes16k 4
8296 #define Encodes32k 8
8297 #define Encodes64k 16
8298 uint32_t SharedLocalMemorySize
;
8299 uint32_t NumberofThreadsinGPGPUThreadGroup
;
8300 uint32_t CrossThreadConstantDataReadLength
;
8304 GEN8_INTERFACE_DESCRIPTOR_DATA_pack(__gen_user_data
*data
, void * restrict dst
,
8305 const struct GEN8_INTERFACE_DESCRIPTOR_DATA
* restrict values
)
8307 uint32_t *dw
= (uint32_t * restrict
) dst
;
8310 __gen_offset(values
->KernelStartPointer
, 6, 31) |
8314 __gen_offset(values
->KernelStartPointerHigh
, 0, 15) |
8318 __gen_field(values
->DenormMode
, 19, 19) |
8319 __gen_field(values
->SingleProgramFlow
, 18, 18) |
8320 __gen_field(values
->ThreadPriority
, 17, 17) |
8321 __gen_field(values
->FloatingPointMode
, 16, 16) |
8322 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
8323 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
8324 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
8328 __gen_offset(values
->SamplerStatePointer
, 5, 31) |
8329 __gen_field(values
->SamplerCount
, 2, 4) |
8333 __gen_offset(values
->BindingTablePointer
, 5, 15) |
8334 __gen_field(values
->BindingTableEntryCount
, 0, 4) |
8338 __gen_field(values
->ConstantIndirectURBEntryReadLength
, 16, 31) |
8339 __gen_field(values
->ConstantURBEntryReadOffset
, 0, 15) |
8343 __gen_field(values
->RoundingMode
, 22, 23) |
8344 __gen_field(values
->BarrierEnable
, 21, 21) |
8345 __gen_field(values
->SharedLocalMemorySize
, 16, 20) |
8346 __gen_field(values
->NumberofThreadsinGPGPUThreadGroup
, 0, 9) |
8350 __gen_field(values
->CrossThreadConstantDataReadLength
, 0, 7) |
8355 #define GEN8_BINDING_TABLE_STATE_length 0x00000001
8357 struct GEN8_BINDING_TABLE_STATE
{
8358 uint32_t SurfaceStatePointer
;
8362 GEN8_BINDING_TABLE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8363 const struct GEN8_BINDING_TABLE_STATE
* restrict values
)
8365 uint32_t *dw
= (uint32_t * restrict
) dst
;
8368 __gen_offset(values
->SurfaceStatePointer
, 6, 31) |
8373 #define GEN8_RENDER_SURFACE_STATE_length 0x00000010
8375 struct GEN8_RENDER_SURFACE_STATE
{
8376 #define SURFTYPE_1D 0
8377 #define SURFTYPE_2D 1
8378 #define SURFTYPE_3D 2
8379 #define SURFTYPE_CUBE 3
8380 #define SURFTYPE_BUFFER 4
8381 #define SURFTYPE_STRBUF 5
8382 #define SURFTYPE_NULL 7
8383 uint32_t SurfaceType
;
8385 uint32_t SurfaceFormat
;
8389 uint32_t SurfaceVerticalAlignment
;
8393 uint32_t SurfaceHorizontalAlignment
;
8399 uint32_t VerticalLineStride
;
8400 uint32_t VerticalLineStrideOffset
;
8401 bool SamplerL2BypassModeDisable
;
8402 #define WriteOnlyCache 0
8403 #define ReadWriteCache 1
8404 uint32_t RenderCacheReadWriteMode
;
8405 #define NORMAL_MODE 0
8406 #define PROGRESSIVE_FRAME 2
8407 #define INTERLACED_FRAME 3
8408 uint32_t MediaBoundaryPixelMode
;
8409 bool CubeFaceEnablePositiveZ
;
8410 bool CubeFaceEnableNegativeZ
;
8411 bool CubeFaceEnablePositiveY
;
8412 bool CubeFaceEnableNegativeY
;
8413 bool CubeFaceEnablePositiveX
;
8414 bool CubeFaceEnableNegativeX
;
8415 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
8417 uint32_t SurfaceQPitch
;
8421 uint32_t SurfacePitch
;
8425 uint32_t RenderTargetAndSampleUnormRotation
;
8426 uint32_t MinimumArrayElement
;
8427 uint32_t RenderTargetViewExtent
;
8429 #define DEPTH_STENCIL 1
8430 uint32_t MultisampledSurfaceStorageFormat
;
8431 #define MULTISAMPLECOUNT_1 0
8432 #define MULTISAMPLECOUNT_2 1
8433 #define MULTISAMPLECOUNT_4 2
8434 #define MULTISAMPLECOUNT_8 3
8435 uint32_t NumberofMultisamples
;
8436 uint32_t MultisamplePositionPaletteIndex
;
8439 bool EWADisableForCube
;
8440 #define GPUcoherent 0
8441 #define IAcoherent 1
8442 uint32_t CoherencyType
;
8443 uint32_t SurfaceMinLOD
;
8444 uint32_t MIPCountLOD
;
8445 uint32_t AuxiliarySurfaceQPitch
;
8446 uint32_t AuxiliarySurfacePitch
;
8449 #define AUX_APPEND 2
8451 uint32_t AuxiliarySurfaceMode
;
8452 bool SeparateUVPlaneEnable
;
8453 uint32_t XOffsetforUorUVPlane
;
8454 uint32_t YOffsetforUorUVPlane
;
8455 uint32_t RedClearColor
;
8456 uint32_t GreenClearColor
;
8457 uint32_t BlueClearColor
;
8458 uint32_t AlphaClearColor
;
8459 uint32_t ShaderChannelSelectRed
;
8460 uint32_t ShaderChannelSelectGreen
;
8461 uint32_t ShaderChannelSelectBlue
;
8462 uint32_t ShaderChannelSelectAlpha
;
8463 float ResourceMinLOD
;
8464 __gen_address_type SurfaceBaseAddress
;
8465 uint32_t XOffsetforVPlane
;
8466 uint32_t YOffsetforVPlane
;
8467 uint32_t AuxiliaryTableIndexforMediaCompressedSurface
;
8468 __gen_address_type AuxiliarySurfaceBaseAddress
;
8472 GEN8_RENDER_SURFACE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8473 const struct GEN8_RENDER_SURFACE_STATE
* restrict values
)
8475 uint32_t *dw
= (uint32_t * restrict
) dst
;
8478 __gen_field(values
->SurfaceType
, 29, 31) |
8479 __gen_field(values
->SurfaceArray
, 28, 28) |
8480 __gen_field(values
->SurfaceFormat
, 18, 26) |
8481 __gen_field(values
->SurfaceVerticalAlignment
, 16, 17) |
8482 __gen_field(values
->SurfaceHorizontalAlignment
, 14, 15) |
8483 __gen_field(values
->TileMode
, 12, 13) |
8484 __gen_field(values
->VerticalLineStride
, 11, 11) |
8485 __gen_field(values
->VerticalLineStrideOffset
, 10, 10) |
8486 __gen_field(values
->SamplerL2BypassModeDisable
, 9, 9) |
8487 __gen_field(values
->RenderCacheReadWriteMode
, 8, 8) |
8488 __gen_field(values
->MediaBoundaryPixelMode
, 6, 7) |
8489 __gen_field(values
->CubeFaceEnablePositiveZ
, 0, 0) |
8490 __gen_field(values
->CubeFaceEnableNegativeZ
, 1, 1) |
8491 __gen_field(values
->CubeFaceEnablePositiveY
, 2, 2) |
8492 __gen_field(values
->CubeFaceEnableNegativeY
, 3, 3) |
8493 __gen_field(values
->CubeFaceEnablePositiveX
, 4, 4) |
8494 __gen_field(values
->CubeFaceEnableNegativeX
, 5, 5) |
8497 uint32_t dw_MemoryObjectControlState
;
8498 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
8500 __gen_field(dw_MemoryObjectControlState
, 24, 30) |
8501 __gen_field(values
->BaseMipLevel
* (1 << 1), 19, 23) |
8502 __gen_field(values
->SurfaceQPitch
, 0, 14) |
8506 __gen_field(values
->Height
, 16, 29) |
8507 __gen_field(values
->Width
, 0, 13) |
8511 __gen_field(values
->Depth
, 21, 31) |
8512 __gen_field(values
->SurfacePitch
, 0, 17) |
8516 __gen_field(values
->RenderTargetAndSampleUnormRotation
, 29, 30) |
8517 __gen_field(values
->MinimumArrayElement
, 18, 28) |
8518 __gen_field(values
->RenderTargetViewExtent
, 7, 17) |
8519 __gen_field(values
->MultisampledSurfaceStorageFormat
, 6, 6) |
8520 __gen_field(values
->NumberofMultisamples
, 3, 5) |
8521 __gen_field(values
->MultisamplePositionPaletteIndex
, 0, 2) |
8525 __gen_offset(values
->XOffset
, 25, 31) |
8526 __gen_offset(values
->YOffset
, 21, 23) |
8527 __gen_field(values
->EWADisableForCube
, 20, 20) |
8528 __gen_field(values
->CoherencyType
, 14, 14) |
8529 __gen_field(values
->SurfaceMinLOD
, 4, 7) |
8530 __gen_field(values
->MIPCountLOD
, 0, 3) |
8534 __gen_field(values
->AuxiliarySurfaceQPitch
, 16, 30) |
8535 __gen_field(values
->AuxiliarySurfacePitch
, 3, 11) |
8536 __gen_field(values
->AuxiliarySurfaceMode
, 0, 2) |
8537 __gen_field(values
->SeparateUVPlaneEnable
, 31, 31) |
8538 __gen_field(values
->XOffsetforUorUVPlane
, 16, 29) |
8539 __gen_field(values
->YOffsetforUorUVPlane
, 0, 13) |
8543 __gen_field(values
->RedClearColor
, 31, 31) |
8544 __gen_field(values
->GreenClearColor
, 30, 30) |
8545 __gen_field(values
->BlueClearColor
, 29, 29) |
8546 __gen_field(values
->AlphaClearColor
, 28, 28) |
8547 __gen_field(values
->ShaderChannelSelectRed
, 25, 27) |
8548 __gen_field(values
->ShaderChannelSelectGreen
, 22, 24) |
8549 __gen_field(values
->ShaderChannelSelectBlue
, 19, 21) |
8550 __gen_field(values
->ShaderChannelSelectAlpha
, 16, 18) |
8551 __gen_field(values
->ResourceMinLOD
* (1 << 8), 0, 11) |
8558 __gen_combine_address(data
, &dw
[8], values
->SurfaceBaseAddress
, dw8
);
8564 __gen_field(values
->XOffsetforVPlane
, 48, 61) |
8565 __gen_field(values
->YOffsetforVPlane
, 32, 45) |
8566 __gen_field(values
->AuxiliaryTableIndexforMediaCompressedSurface
, 21, 31) |
8570 __gen_combine_address(data
, &dw
[10], values
->AuxiliarySurfaceBaseAddress
, dw10
);
8573 dw
[11] = qw10
>> 32;
8589 #define GEN8_FILTER_COEFFICIENT_length 0x00000001
8591 struct GEN8_FILTER_COEFFICIENT
{
8592 uint32_t FilterCoefficient
;
8596 GEN8_FILTER_COEFFICIENT_pack(__gen_user_data
*data
, void * restrict dst
,
8597 const struct GEN8_FILTER_COEFFICIENT
* restrict values
)
8599 uint32_t *dw
= (uint32_t * restrict
) dst
;
8602 __gen_field(values
->FilterCoefficient
, 0, 7) |
8607 #define GEN8_SAMPLER_STATE_length 0x00000004
8609 struct GEN8_SAMPLER_STATE
{
8610 bool SamplerDisable
;
8613 uint32_t TextureBorderColorMode
;
8614 #define CLAMP_NONE 0
8616 uint32_t LODPreClampMode
;
8618 #define MIPFILTER_NONE 0
8619 #define MIPFILTER_NEAREST 1
8620 #define MIPFILTER_LINEAR 3
8621 uint32_t MipModeFilter
;
8622 #define MAPFILTER_NEAREST 0
8623 #define MAPFILTER_LINEAR 1
8624 #define MAPFILTER_ANISOTROPIC 2
8625 #define MAPFILTER_MONO 6
8626 uint32_t MagModeFilter
;
8627 #define MAPFILTER_NEAREST 0
8628 #define MAPFILTER_LINEAR 1
8629 #define MAPFILTER_ANISOTROPIC 2
8630 #define MAPFILTER_MONO 6
8631 uint32_t MinModeFilter
;
8632 float TextureLODBias
;
8634 #define EWAApproximation 1
8635 uint32_t AnisotropicAlgorithm
;
8638 bool ChromaKeyEnable
;
8639 uint32_t ChromaKeyIndex
;
8640 #define KEYFILTER_KILL_ON_ANY_MATCH 0
8641 #define KEYFILTER_REPLACE_BLACK 1
8642 uint32_t ChromaKeyMode
;
8643 #define PREFILTEROPALWAYS 0
8644 #define PREFILTEROPNEVER 1
8645 #define PREFILTEROPLESS 2
8646 #define PREFILTEROPEQUAL 3
8647 #define PREFILTEROPLEQUAL 4
8648 #define PREFILTEROPGREATER 5
8649 #define PREFILTEROPNOTEQUAL 6
8650 #define PREFILTEROPGEQUAL 7
8651 uint32_t ShadowFunction
;
8652 #define PROGRAMMED 0
8654 uint32_t CubeSurfaceControlMode
;
8655 uint32_t IndirectStatePointer
;
8658 uint32_t LODClampMagnificationMode
;
8667 uint32_t MaximumAnisotropy
;
8668 bool RAddressMinFilterRoundingEnable
;
8669 bool RAddressMagFilterRoundingEnable
;
8670 bool VAddressMinFilterRoundingEnable
;
8671 bool VAddressMagFilterRoundingEnable
;
8672 bool UAddressMinFilterRoundingEnable
;
8673 bool UAddressMagFilterRoundingEnable
;
8678 uint32_t TrilinearFilterQuality
;
8679 bool NonnormalizedCoordinateEnable
;
8680 uint32_t TCXAddressControlMode
;
8681 uint32_t TCYAddressControlMode
;
8682 uint32_t TCZAddressControlMode
;
8686 GEN8_SAMPLER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8687 const struct GEN8_SAMPLER_STATE
* restrict values
)
8689 uint32_t *dw
= (uint32_t * restrict
) dst
;
8692 __gen_field(values
->SamplerDisable
, 31, 31) |
8693 __gen_field(values
->TextureBorderColorMode
, 29, 29) |
8694 __gen_field(values
->LODPreClampMode
, 27, 28) |
8695 __gen_field(values
->BaseMipLevel
* (1 << 1), 22, 26) |
8696 __gen_field(values
->MipModeFilter
, 20, 21) |
8697 __gen_field(values
->MagModeFilter
, 17, 19) |
8698 __gen_field(values
->MinModeFilter
, 14, 16) |
8699 __gen_fixed(values
->TextureLODBias
, 1, 13, true, 8) |
8700 __gen_field(values
->AnisotropicAlgorithm
, 0, 0) |
8704 __gen_field(values
->MinLOD
* (1 << 8), 20, 31) |
8705 __gen_field(values
->MaxLOD
* (1 << 8), 8, 19) |
8706 __gen_field(values
->ChromaKeyEnable
, 7, 7) |
8707 __gen_field(values
->ChromaKeyIndex
, 5, 6) |
8708 __gen_field(values
->ChromaKeyMode
, 4, 4) |
8709 __gen_field(values
->ShadowFunction
, 1, 3) |
8710 __gen_field(values
->CubeSurfaceControlMode
, 0, 0) |
8714 __gen_field(values
->IndirectStatePointer
, 6, 23) |
8715 __gen_field(values
->LODClampMagnificationMode
, 0, 0) |
8719 __gen_field(values
->MaximumAnisotropy
, 19, 21) |
8720 __gen_field(values
->RAddressMinFilterRoundingEnable
, 13, 13) |
8721 __gen_field(values
->RAddressMagFilterRoundingEnable
, 14, 14) |
8722 __gen_field(values
->VAddressMinFilterRoundingEnable
, 15, 15) |
8723 __gen_field(values
->VAddressMagFilterRoundingEnable
, 16, 16) |
8724 __gen_field(values
->UAddressMinFilterRoundingEnable
, 17, 17) |
8725 __gen_field(values
->UAddressMagFilterRoundingEnable
, 18, 18) |
8726 __gen_field(values
->TrilinearFilterQuality
, 11, 12) |
8727 __gen_field(values
->NonnormalizedCoordinateEnable
, 10, 10) |
8728 __gen_field(values
->TCXAddressControlMode
, 6, 8) |
8729 __gen_field(values
->TCYAddressControlMode
, 3, 5) |
8730 __gen_field(values
->TCZAddressControlMode
, 0, 2) |
8735 #define GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS_length 0x00000008
8737 struct GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS
{
8738 uint32_t Table0YFilterCoefficientn1
;
8739 uint32_t Table0XFilterCoefficientn1
;
8740 uint32_t Table0YFilterCoefficientn0
;
8741 uint32_t Table0XFilterCoefficientn0
;
8742 uint32_t Table0YFilterCoefficientn3
;
8743 uint32_t Table0XFilterCoefficientn3
;
8744 uint32_t Table0YFilterCoefficientn2
;
8745 uint32_t Table0XFilterCoefficientn2
;
8746 uint32_t Table0YFilterCoefficientn5
;
8747 uint32_t Table0XFilterCoefficientn5
;
8748 uint32_t Table0YFilterCoefficientn4
;
8749 uint32_t Table0XFilterCoefficientn4
;
8750 uint32_t Table0YFilterCoefficientn7
;
8751 uint32_t Table0XFilterCoefficientn7
;
8752 uint32_t Table0YFilterCoefficientn6
;
8753 uint32_t Table0XFilterCoefficientn6
;
8754 uint32_t Table1XFilterCoefficientn3
;
8755 uint32_t Table1XFilterCoefficientn2
;
8756 uint32_t Table1XFilterCoefficientn5
;
8757 uint32_t Table1XFilterCoefficientn4
;
8758 uint32_t Table1YFilterCoefficientn3
;
8759 uint32_t Table1YFilterCoefficientn2
;
8760 uint32_t Table1YFilterCoefficientn5
;
8761 uint32_t Table1YFilterCoefficientn4
;
8765 GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS_pack(__gen_user_data
*data
, void * restrict dst
,
8766 const struct GEN8_SAMPLER_STATE_8X8_AVS_COEFFICIENTS
* restrict values
)
8768 uint32_t *dw
= (uint32_t * restrict
) dst
;
8771 __gen_field(values
->Table0YFilterCoefficientn1
, 24, 31) |
8772 __gen_field(values
->Table0XFilterCoefficientn1
, 16, 23) |
8773 __gen_field(values
->Table0YFilterCoefficientn0
, 8, 15) |
8774 __gen_field(values
->Table0XFilterCoefficientn0
, 0, 7) |
8778 __gen_field(values
->Table0YFilterCoefficientn3
, 24, 31) |
8779 __gen_field(values
->Table0XFilterCoefficientn3
, 16, 23) |
8780 __gen_field(values
->Table0YFilterCoefficientn2
, 8, 15) |
8781 __gen_field(values
->Table0XFilterCoefficientn2
, 0, 7) |
8785 __gen_field(values
->Table0YFilterCoefficientn5
, 24, 31) |
8786 __gen_field(values
->Table0XFilterCoefficientn5
, 16, 23) |
8787 __gen_field(values
->Table0YFilterCoefficientn4
, 8, 15) |
8788 __gen_field(values
->Table0XFilterCoefficientn4
, 0, 7) |
8792 __gen_field(values
->Table0YFilterCoefficientn7
, 24, 31) |
8793 __gen_field(values
->Table0XFilterCoefficientn7
, 16, 23) |
8794 __gen_field(values
->Table0YFilterCoefficientn6
, 8, 15) |
8795 __gen_field(values
->Table0XFilterCoefficientn6
, 0, 7) |
8799 __gen_field(values
->Table1XFilterCoefficientn3
, 24, 31) |
8800 __gen_field(values
->Table1XFilterCoefficientn2
, 16, 23) |
8804 __gen_field(values
->Table1XFilterCoefficientn5
, 8, 15) |
8805 __gen_field(values
->Table1XFilterCoefficientn4
, 0, 7) |
8809 __gen_field(values
->Table1YFilterCoefficientn3
, 24, 31) |
8810 __gen_field(values
->Table1YFilterCoefficientn2
, 16, 23) |
8814 __gen_field(values
->Table1YFilterCoefficientn5
, 8, 15) |
8815 __gen_field(values
->Table1YFilterCoefficientn4
, 0, 7) |
8820 /* Enum 3D_Prim_Topo_Type */
8821 #define _3DPRIM_POINTLIST 1
8822 #define _3DPRIM_LINELIST 2
8823 #define _3DPRIM_LINESTRIP 3
8824 #define _3DPRIM_TRILIST 4
8825 #define _3DPRIM_TRISTRIP 5
8826 #define _3DPRIM_TRIFAN 6
8827 #define _3DPRIM_QUADLIST 7
8828 #define _3DPRIM_QUADSTRIP 8
8829 #define _3DPRIM_LINELIST_ADJ 9
8830 #define _3DPRIM_LINESTRIP_ADJ 10
8831 #define _3DPRIM_TRILIST_ADJ 11
8832 #define _3DPRIM_TRISTRIP_ADJ 12
8833 #define _3DPRIM_TRISTRIP_REVERSE 13
8834 #define _3DPRIM_POLYGON 14
8835 #define _3DPRIM_RECTLIST 15
8836 #define _3DPRIM_LINELOOP 16
8837 #define _3DPRIM_POINTLIST_BF 17
8838 #define _3DPRIM_LINESTRIP_CONT 18
8839 #define _3DPRIM_LINESTRIP_BF 19
8840 #define _3DPRIM_LINESTRIP_CONT_BF 20
8841 #define _3DPRIM_TRIFAN_NOSTIPPLE 22
8842 #define _3DPRIM_PATCHLIST_1 32
8843 #define _3DPRIM_PATCHLIST_2 33
8844 #define _3DPRIM_PATCHLIST_3 34
8845 #define _3DPRIM_PATCHLIST_4 35
8846 #define _3DPRIM_PATCHLIST_5 36
8847 #define _3DPRIM_PATCHLIST_6 37
8848 #define _3DPRIM_PATCHLIST_7 38
8849 #define _3DPRIM_PATCHLIST_8 39
8850 #define _3DPRIM_PATCHLIST_9 40
8851 #define _3DPRIM_PATCHLIST_10 41
8852 #define _3DPRIM_PATCHLIST_11 42
8853 #define _3DPRIM_PATCHLIST_12 43
8854 #define _3DPRIM_PATCHLIST_13 44
8855 #define _3DPRIM_PATCHLIST_14 45
8856 #define _3DPRIM_PATCHLIST_15 46
8857 #define _3DPRIM_PATCHLIST_16 47
8858 #define _3DPRIM_PATCHLIST_17 48
8859 #define _3DPRIM_PATCHLIST_18 49
8860 #define _3DPRIM_PATCHLIST_19 50
8861 #define _3DPRIM_PATCHLIST_20 51
8862 #define _3DPRIM_PATCHLIST_21 52
8863 #define _3DPRIM_PATCHLIST_22 53
8864 #define _3DPRIM_PATCHLIST_23 54
8865 #define _3DPRIM_PATCHLIST_24 55
8866 #define _3DPRIM_PATCHLIST_25 56
8867 #define _3DPRIM_PATCHLIST_26 57
8868 #define _3DPRIM_PATCHLIST_27 58
8869 #define _3DPRIM_PATCHLIST_28 59
8870 #define _3DPRIM_PATCHLIST_29 60
8871 #define _3DPRIM_PATCHLIST_30 61
8872 #define _3DPRIM_PATCHLIST_31 62
8873 #define _3DPRIM_PATCHLIST_32 63
8875 /* Enum 3D_Vertex_Component_Control */
8876 #define VFCOMP_NOSTORE 0
8877 #define VFCOMP_STORE_SRC 1
8878 #define VFCOMP_STORE_0 2
8879 #define VFCOMP_STORE_1_FP 3
8880 #define VFCOMP_STORE_1_INT 4
8881 #define VFCOMP_STORE_PID 7
8883 /* Enum WRAP_SHORTEST_ENABLE */
8900 /* Enum 3D_Stencil_Operation */
8901 #define STENCILOP_KEEP 0
8902 #define STENCILOP_ZERO 1
8903 #define STENCILOP_REPLACE 2
8904 #define STENCILOP_INCRSAT 3
8905 #define STENCILOP_DECRSAT 4
8906 #define STENCILOP_INCR 5
8907 #define STENCILOP_DECR 6
8908 #define STENCILOP_INVERT 7
8910 /* Enum 3D_Color_Buffer_Blend_Factor */
8911 #define BLENDFACTOR_ONE 1
8912 #define BLENDFACTOR_SRC_COLOR 2
8913 #define BLENDFACTOR_SRC_ALPHA 3
8914 #define BLENDFACTOR_DST_ALPHA 4
8915 #define BLENDFACTOR_DST_COLOR 5
8916 #define BLENDFACTOR_SRC_ALPHA_SATURATE 6
8917 #define BLENDFACTOR_CONST_COLOR 7
8918 #define BLENDFACTOR_CONST_ALPHA 8
8919 #define BLENDFACTOR_SRC1_COLOR 9
8920 #define BLENDFACTOR_SRC1_ALPHA 10
8921 #define BLENDFACTOR_ZERO 17
8922 #define BLENDFACTOR_INV_SRC_COLOR 18
8923 #define BLENDFACTOR_INV_SRC_ALPHA 19
8924 #define BLENDFACTOR_INV_DST_ALPHA 20
8925 #define BLENDFACTOR_INV_DST_COLOR 21
8926 #define BLENDFACTOR_INV_CONST_COLOR 23
8927 #define BLENDFACTOR_INV_CONST_ALPHA 24
8928 #define BLENDFACTOR_INV_SRC1_COLOR 25
8929 #define BLENDFACTOR_INV_SRC1_ALPHA 26
8931 /* Enum 3D_Color_Buffer_Blend_Function */
8932 #define BLENDFUNCTION_ADD 0
8933 #define BLENDFUNCTION_SUBTRACT 1
8934 #define BLENDFUNCTION_REVERSE_SUBTRACT 2
8935 #define BLENDFUNCTION_MIN 3
8936 #define BLENDFUNCTION_MAX 4
8938 /* Enum 3D_Compare_Function */
8939 #define COMPAREFUNCTION_ALWAYS 0
8940 #define COMPAREFUNCTION_NEVER 1
8941 #define COMPAREFUNCTION_LESS 2
8942 #define COMPAREFUNCTION_EQUAL 3
8943 #define COMPAREFUNCTION_LEQUAL 4
8944 #define COMPAREFUNCTION_GREATER 5
8945 #define COMPAREFUNCTION_NOTEQUAL 6
8946 #define COMPAREFUNCTION_GEQUAL 7
8948 /* Enum 3D_Logic_Op_Function */
8949 #define LOGICOP_CLEAR 0
8950 #define LOGICOP_NOR 1
8951 #define LOGICOP_AND_INVERTED 2
8952 #define LOGICOP_COPY_INVERTED 3
8953 #define LOGICOP_AND_REVERSE 4
8954 #define LOGICOP_INVERT 5
8955 #define LOGICOP_XOR 6
8956 #define LOGICOP_NAND 7
8957 #define LOGICOP_AND 8
8958 #define LOGICOP_EQUIV 9
8959 #define LOGICOP_NOOP 10
8960 #define LOGICOP_OR_INVERTED 11
8961 #define LOGICOP_COPY 12
8962 #define LOGICOP_OR_REVERSE 13
8963 #define LOGICOP_OR 14
8964 #define LOGICOP_SET 15
8966 /* Enum SURFACE_FORMAT */
8967 #define R32G32B32A32_FLOAT 0
8968 #define R32G32B32A32_SINT 1
8969 #define R32G32B32A32_UINT 2
8970 #define R32G32B32A32_UNORM 3
8971 #define R32G32B32A32_SNORM 4
8972 #define R64G64_FLOAT 5
8973 #define R32G32B32X32_FLOAT 6
8974 #define R32G32B32A32_SSCALED 7
8975 #define R32G32B32A32_USCALED 8
8976 #define R32G32B32A32_SFIXED 32
8977 #define R64G64_PASSTHRU 33
8978 #define R32G32B32_FLOAT 64
8979 #define R32G32B32_SINT 65
8980 #define R32G32B32_UINT 66
8981 #define R32G32B32_UNORM 67
8982 #define R32G32B32_SNORM 68
8983 #define R32G32B32_SSCALED 69
8984 #define R32G32B32_USCALED 70
8985 #define R32G32B32_SFIXED 80
8986 #define R16G16B16A16_UNORM 128
8987 #define R16G16B16A16_SNORM 129
8988 #define R16G16B16A16_SINT 130
8989 #define R16G16B16A16_UINT 131
8990 #define R16G16B16A16_FLOAT 132
8991 #define R32G32_FLOAT 133
8992 #define R32G32_SINT 134
8993 #define R32G32_UINT 135
8994 #define R32_FLOAT_X8X24_TYPELESS 136
8995 #define X32_TYPELESS_G8X24_UINT 137
8996 #define L32A32_FLOAT 138
8997 #define R32G32_UNORM 139
8998 #define R32G32_SNORM 140
8999 #define R64_FLOAT 141
9000 #define R16G16B16X16_UNORM 142
9001 #define R16G16B16X16_FLOAT 143
9002 #define A32X32_FLOAT 144
9003 #define L32X32_FLOAT 145
9004 #define I32X32_FLOAT 146
9005 #define R16G16B16A16_SSCALED 147
9006 #define R16G16B16A16_USCALED 148
9007 #define R32G32_SSCALED 149
9008 #define R32G32_USCALED 150
9009 #define R32G32_SFIXED 160
9010 #define R64_PASSTHRU 161
9011 #define B8G8R8A8_UNORM 192
9012 #define B8G8R8A8_UNORM_SRGB 193
9013 #define R10G10B10A2_UNORM 194
9014 #define R10G10B10A2_UNORM_SRGB 195
9015 #define R10G10B10A2_UINT 196
9016 #define R10G10B10_SNORM_A2_UNORM 197
9017 #define R8G8B8A8_UNORM 199
9018 #define R8G8B8A8_UNORM_SRGB 200
9019 #define R8G8B8A8_SNORM 201
9020 #define R8G8B8A8_SINT 202
9021 #define R8G8B8A8_UINT 203
9022 #define R16G16_UNORM 204
9023 #define R16G16_SNORM 205
9024 #define R16G16_SINT 206
9025 #define R16G16_UINT 207
9026 #define R16G16_FLOAT 208
9027 #define B10G10R10A2_UNORM 209
9028 #define B10G10R10A2_UNORM_SRGB 210
9029 #define R11G11B10_FLOAT 211
9030 #define R32_SINT 214
9031 #define R32_UINT 215
9032 #define R32_FLOAT 216
9033 #define R24_UNORM_X8_TYPELESS 217
9034 #define X24_TYPELESS_G8_UINT 218
9035 #define L32_UNORM 221
9036 #define A32_UNORM 222
9037 #define L16A16_UNORM 223
9038 #define I24X8_UNORM 224
9039 #define L24X8_UNORM 225
9040 #define A24X8_UNORM 226
9041 #define I32_FLOAT 227
9042 #define L32_FLOAT 228
9043 #define A32_FLOAT 229
9044 #define X8B8_UNORM_G8R8_SNORM 230
9045 #define A8X8_UNORM_G8R8_SNORM 231
9046 #define B8X8_UNORM_G8R8_SNORM 232
9047 #define B8G8R8X8_UNORM 233
9048 #define B8G8R8X8_UNORM_SRGB 234
9049 #define R8G8B8X8_UNORM 235
9050 #define R8G8B8X8_UNORM_SRGB 236
9051 #define R9G9B9E5_SHAREDEXP 237
9052 #define B10G10R10X2_UNORM 238
9053 #define L16A16_FLOAT 240
9054 #define R32_UNORM 241
9055 #define R32_SNORM 242
9056 #define R10G10B10X2_USCALED 243
9057 #define R8G8B8A8_SSCALED 244
9058 #define R8G8B8A8_USCALED 245
9059 #define R16G16_SSCALED 246
9060 #define R16G16_USCALED 247
9061 #define R32_SSCALED 248
9062 #define R32_USCALED 249
9063 #define B5G6R5_UNORM 256
9064 #define B5G6R5_UNORM_SRGB 257
9065 #define B5G5R5A1_UNORM 258
9066 #define B5G5R5A1_UNORM_SRGB 259
9067 #define B4G4R4A4_UNORM 260
9068 #define B4G4R4A4_UNORM_SRGB 261
9069 #define R8G8_UNORM 262
9070 #define R8G8_SNORM 263
9071 #define R8G8_SINT 264
9072 #define R8G8_UINT 265
9073 #define R16_UNORM 266
9074 #define R16_SNORM 267
9075 #define R16_SINT 268
9076 #define R16_UINT 269
9077 #define R16_FLOAT 270
9078 #define A8P8_UNORM_PALETTE0 271
9079 #define A8P8_UNORM_PALETTE1 272
9080 #define I16_UNORM 273
9081 #define L16_UNORM 274
9082 #define A16_UNORM 275
9083 #define L8A8_UNORM 276
9084 #define I16_FLOAT 277
9085 #define L16_FLOAT 278
9086 #define A16_FLOAT 279
9087 #define L8A8_UNORM_SRGB 280
9088 #define R5G5_SNORM_B6_UNORM 281
9089 #define B5G5R5X1_UNORM 282
9090 #define B5G5R5X1_UNORM_SRGB 283
9091 #define R8G8_SSCALED 284
9092 #define R8G8_USCALED 285
9093 #define R16_SSCALED 286
9094 #define R16_USCALED 287
9095 #define P8A8_UNORM_PALETTE0 290
9096 #define P8A8_UNORM_PALETTE1 291
9097 #define A1B5G5R5_UNORM 292
9098 #define A4B4G4R4_UNORM 293
9099 #define L8A8_UINT 294
9100 #define L8A8_SINT 295
9101 #define R8_UNORM 320
9102 #define R8_SNORM 321
9105 #define A8_UNORM 324
9106 #define I8_UNORM 325
9107 #define L8_UNORM 326
9108 #define P4A4_UNORM_PALETTE0 327
9109 #define A4P4_UNORM_PALETTE0 328
9110 #define R8_SSCALED 329
9111 #define R8_USCALED 330
9112 #define P8_UNORM_PALETTE0 331
9113 #define L8_UNORM_SRGB 332
9114 #define P8_UNORM_PALETTE1 333
9115 #define P4A4_UNORM_PALETTE1 334
9116 #define A4P4_UNORM_PALETTE1 335
9117 #define Y8_UNORM 336
9122 #define DXT1_RGB_SRGB 384
9123 #define R1_UNORM 385
9124 #define YCRCB_NORMAL 386
9125 #define YCRCB_SWAPUVY 387
9126 #define P2_UNORM_PALETTE0 388
9127 #define P2_UNORM_PALETTE1 389
9128 #define BC1_UNORM 390
9129 #define BC2_UNORM 391
9130 #define BC3_UNORM 392
9131 #define BC4_UNORM 393
9132 #define BC5_UNORM 394
9133 #define BC1_UNORM_SRGB 395
9134 #define BC2_UNORM_SRGB 396
9135 #define BC3_UNORM_SRGB 397
9137 #define YCRCB_SWAPUV 399
9138 #define YCRCB_SWAPY 400
9139 #define DXT1_RGB 401
9141 #define R8G8B8_UNORM 403
9142 #define R8G8B8_SNORM 404
9143 #define R8G8B8_SSCALED 405
9144 #define R8G8B8_USCALED 406
9145 #define R64G64B64A64_FLOAT 407
9146 #define R64G64B64_FLOAT 408
9147 #define BC4_SNORM 409
9148 #define BC5_SNORM 410
9149 #define R16G16B16_FLOAT 411
9150 #define R16G16B16_UNORM 412
9151 #define R16G16B16_SNORM 413
9152 #define R16G16B16_SSCALED 414
9153 #define R16G16B16_USCALED 415
9154 #define BC6H_SF16 417
9155 #define BC7_UNORM 418
9156 #define BC7_UNORM_SRGB 419
9157 #define BC6H_UF16 420
9158 #define PLANAR_420_8 421
9159 #define R8G8B8_UNORM_SRGB 424
9160 #define ETC1_RGB8 425
9161 #define ETC2_RGB8 426
9163 #define EAC_RG11 428
9164 #define EAC_SIGNED_R11 429
9165 #define EAC_SIGNED_RG11 430
9166 #define ETC2_SRGB8 431
9167 #define R16G16B16_UINT 432
9168 #define R16G16B16_SINT 433
9169 #define R32_SFIXED 434
9170 #define R10G10B10A2_SNORM 435
9171 #define R10G10B10A2_USCALED 436
9172 #define R10G10B10A2_SSCALED 437
9173 #define R10G10B10A2_SINT 438
9174 #define B10G10R10A2_SNORM 439
9175 #define B10G10R10A2_USCALED 440
9176 #define B10G10R10A2_SSCALED 441
9177 #define B10G10R10A2_UINT 442
9178 #define B10G10R10A2_SINT 443
9179 #define R64G64B64A64_PASSTHRU 444
9180 #define R64G64B64_PASSTHRU 445
9181 #define ETC2_RGB8_PTA 448
9182 #define ETC2_SRGB8_PTA 449
9183 #define ETC2_EAC_RGBA8 450
9184 #define ETC2_EAC_SRGB8_A8 451
9185 #define R8G8B8_UINT 456
9186 #define R8G8B8_SINT 457
9189 /* Enum Shader Channel Select */
9197 /* Enum Clear Color */
9201 /* Enum Texture Coordinate Mode */
9203 #define TCM_MIRROR 1
9206 #define TCM_CLAMP_BORDER 4
9207 #define TCM_MIRROR_ONCE 5
9208 #define TCM_HALF_BORDER 6