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_field(uint64_t v
, uint32_t start
, uint32_t end
)
50 __gen_validate_value(v
);
52 if (end
- start
+ 1 < 64)
53 assert(v
< 1ul << (end
- start
+ 1));
59 static inline uint64_t
60 __gen_offset(uint64_t v
, uint32_t start
, uint32_t end
)
62 __gen_validate_value(v
);
64 uint64_t mask
= (~0ul >> (64 - (end
- start
+ 1))) << start
;
66 assert((v
& ~mask
) == 0);
72 static inline uint32_t
75 __gen_validate_value(v
);
76 return ((union __gen_value
) { .f
= (v
) }).dw
;
79 #ifndef __gen_address_type
80 #error #define __gen_address_type before including this file
83 #ifndef __gen_user_data
84 #error #define __gen_combine_address before including this file
89 #define GEN8_3DSTATE_URB_VS_length 0x00000002
90 #define GEN8_3DSTATE_URB_VS_length_bias 0x00000002
91 #define GEN8_3DSTATE_URB_VS_header \
93 .CommandSubType = 3, \
94 ._3DCommandOpcode = 0, \
95 ._3DCommandSubOpcode = 48, \
98 struct GEN8_3DSTATE_URB_VS
{
100 uint32_t CommandSubType
;
101 uint32_t _3DCommandOpcode
;
102 uint32_t _3DCommandSubOpcode
;
103 uint32_t DwordLength
;
104 uint32_t VSURBStartingAddress
;
105 uint32_t VSURBEntryAllocationSize
;
106 uint32_t VSNumberofURBEntries
;
110 GEN8_3DSTATE_URB_VS_pack(__gen_user_data
*data
, void * restrict dst
,
111 const struct GEN8_3DSTATE_URB_VS
* restrict values
)
113 uint32_t *dw
= (uint32_t * restrict
) dst
;
116 __gen_field(values
->CommandType
, 29, 31) |
117 __gen_field(values
->CommandSubType
, 27, 28) |
118 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
119 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
120 __gen_field(values
->DwordLength
, 0, 7) |
124 __gen_field(values
->VSURBStartingAddress
, 25, 31) |
125 __gen_field(values
->VSURBEntryAllocationSize
, 16, 24) |
126 __gen_field(values
->VSNumberofURBEntries
, 0, 15) |
131 #define GEN8_3DSTATE_VS_length 0x00000009
132 #define GEN8_3DSTATE_VS_length_bias 0x00000002
133 #define GEN8_3DSTATE_VS_header \
135 .CommandSubType = 3, \
136 ._3DCommandOpcode = 0, \
137 ._3DCommandSubOpcode = 16, \
140 struct GEN8_3DSTATE_VS
{
141 uint32_t CommandType
;
142 uint32_t CommandSubType
;
143 uint32_t _3DCommandOpcode
;
144 uint32_t _3DCommandSubOpcode
;
145 uint32_t DwordLength
;
146 uint64_t KernelStartPointer
;
149 uint32_t SingleVertexDispatch
;
152 uint32_t VectorMaskEnable
;
154 #define _14Samplers 1
155 #define _58Samplers 2
156 #define _912Samplers 3
157 #define _1316Samplers 4
158 uint32_t SamplerCount
;
159 uint32_t BindingTableEntryCount
;
162 uint32_t ThreadDispatchPriority
;
165 uint32_t FloatingPointMode
;
166 uint32_t IllegalOpcodeExceptionEnable
;
167 uint32_t AccessesUAV
;
168 uint32_t SoftwareExceptionEnable
;
169 __gen_address_type ScratchSpaceBasePointer
;
170 uint32_t PerThreadScratchSpace
;
171 uint32_t DispatchGRFStartRegisterForURBData
;
172 uint32_t VertexURBEntryReadLength
;
173 uint32_t VertexURBEntryReadOffset
;
174 uint32_t MaximumNumberofThreads
;
175 uint32_t StatisticsEnable
;
176 uint32_t SIMD8DispatchEnable
;
177 uint32_t VertexCacheDisable
;
178 uint32_t FunctionEnable
;
179 uint32_t VertexURBEntryOutputReadOffset
;
180 uint32_t VertexURBEntryOutputLength
;
181 uint32_t UserClipDistanceClipTestEnableBitmask
;
182 uint32_t UserClipDistanceCullTestEnableBitmask
;
186 GEN8_3DSTATE_VS_pack(__gen_user_data
*data
, void * restrict dst
,
187 const struct GEN8_3DSTATE_VS
* restrict values
)
189 uint32_t *dw
= (uint32_t * restrict
) dst
;
192 __gen_field(values
->CommandType
, 29, 31) |
193 __gen_field(values
->CommandSubType
, 27, 28) |
194 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
195 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
196 __gen_field(values
->DwordLength
, 0, 7) |
200 __gen_offset(values
->KernelStartPointer
, 6, 63) |
207 __gen_field(values
->SingleVertexDispatch
, 31, 31) |
208 __gen_field(values
->VectorMaskEnable
, 30, 30) |
209 __gen_field(values
->SamplerCount
, 27, 29) |
210 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
211 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
212 __gen_field(values
->FloatingPointMode
, 16, 16) |
213 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
214 __gen_field(values
->AccessesUAV
, 12, 12) |
215 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
219 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
220 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
224 __gen_combine_address(data
, &dw
[4], values
->ScratchSpaceBasePointer
, dw4
);
230 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
231 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
232 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
236 __gen_field(values
->MaximumNumberofThreads
, 23, 31) |
237 __gen_field(values
->StatisticsEnable
, 10, 10) |
238 __gen_field(values
->SIMD8DispatchEnable
, 2, 2) |
239 __gen_field(values
->VertexCacheDisable
, 1, 1) |
240 __gen_field(values
->FunctionEnable
, 0, 0) |
244 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
245 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
246 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
247 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
252 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length 0x00000003
253 #define GEN8_GPGPU_CSR_BASE_ADDRESS_length_bias 0x00000002
254 #define GEN8_GPGPU_CSR_BASE_ADDRESS_header \
256 .CommandSubType = 0, \
257 ._3DCommandOpcode = 1, \
258 ._3DCommandSubOpcode = 4, \
261 struct GEN8_GPGPU_CSR_BASE_ADDRESS
{
262 uint32_t CommandType
;
263 uint32_t CommandSubType
;
264 uint32_t _3DCommandOpcode
;
265 uint32_t _3DCommandSubOpcode
;
266 uint32_t DwordLength
;
267 __gen_address_type GPGPUCSRBaseAddressHigh
;
271 GEN8_GPGPU_CSR_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
272 const struct GEN8_GPGPU_CSR_BASE_ADDRESS
* restrict values
)
274 uint32_t *dw
= (uint32_t * restrict
) dst
;
277 __gen_field(values
->CommandType
, 29, 31) |
278 __gen_field(values
->CommandSubType
, 27, 28) |
279 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
280 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
281 __gen_field(values
->DwordLength
, 0, 7) |
288 __gen_combine_address(data
, &dw
[1], values
->GPGPUCSRBaseAddressHigh
, dw1
);
295 #define GEN8_MI_ATOMIC_length 0x00000003
296 #define GEN8_MI_ATOMIC_length_bias 0x00000002
297 #define GEN8_MI_ATOMIC_header \
299 .MICommandOpcode = 47
301 struct GEN8_MI_ATOMIC
{
302 uint32_t CommandType
;
303 uint32_t MICommandOpcode
;
304 #define PerProcessGraphicsAddress 0
305 #define GlobalGraphicsAddress 1
307 uint32_t PostSyncOperation
;
315 uint32_t ReturnDataControl
;
316 uint32_t ATOMICOPCODE
;
317 uint32_t DwordLength
;
318 __gen_address_type MemoryAddress
;
319 uint32_t MemoryAddressHigh
;
320 uint32_t Operand1DataDword0
;
321 uint32_t Operand2DataDword0
;
322 uint32_t Operand1DataDword1
;
323 uint32_t Operand2DataDword1
;
324 uint32_t Operand1DataDword2
;
325 uint32_t Operand2DataDword2
;
326 uint32_t Operand1DataDword3
;
327 uint32_t Operand2DataDword3
;
331 GEN8_MI_ATOMIC_pack(__gen_user_data
*data
, void * restrict dst
,
332 const struct GEN8_MI_ATOMIC
* restrict values
)
334 uint32_t *dw
= (uint32_t * restrict
) dst
;
337 __gen_field(values
->CommandType
, 29, 31) |
338 __gen_field(values
->MICommandOpcode
, 23, 28) |
339 __gen_field(values
->MemoryType
, 22, 22) |
340 __gen_field(values
->PostSyncOperation
, 21, 21) |
341 __gen_field(values
->DataSize
, 19, 20) |
342 __gen_field(values
->InlineData
, 18, 18) |
343 __gen_field(values
->CSSTALL
, 17, 17) |
344 __gen_field(values
->ReturnDataControl
, 16, 16) |
345 __gen_field(values
->ATOMICOPCODE
, 8, 15) |
346 __gen_field(values
->DwordLength
, 0, 7) |
353 __gen_combine_address(data
, &dw
[1], values
->MemoryAddress
, dw1
);
356 __gen_field(values
->MemoryAddressHigh
, 0, 15) |
360 __gen_field(values
->Operand1DataDword0
, 0, 31) |
364 __gen_field(values
->Operand2DataDword0
, 0, 31) |
368 __gen_field(values
->Operand1DataDword1
, 0, 31) |
372 __gen_field(values
->Operand2DataDword1
, 0, 31) |
376 __gen_field(values
->Operand1DataDword2
, 0, 31) |
380 __gen_field(values
->Operand2DataDword2
, 0, 31) |
384 __gen_field(values
->Operand1DataDword3
, 0, 31) |
388 __gen_field(values
->Operand2DataDword3
, 0, 31) |
393 #define GEN8_MI_LOAD_REGISTER_REG_length 0x00000003
394 #define GEN8_MI_LOAD_REGISTER_REG_length_bias 0x00000002
395 #define GEN8_MI_LOAD_REGISTER_REG_header \
397 .MICommandOpcode = 42, \
400 struct GEN8_MI_LOAD_REGISTER_REG
{
401 uint32_t CommandType
;
402 uint32_t MICommandOpcode
;
403 uint32_t DwordLength
;
404 uint32_t SourceRegisterAddress
;
405 uint32_t DestinationRegisterAddress
;
409 GEN8_MI_LOAD_REGISTER_REG_pack(__gen_user_data
*data
, void * restrict dst
,
410 const struct GEN8_MI_LOAD_REGISTER_REG
* restrict values
)
412 uint32_t *dw
= (uint32_t * restrict
) dst
;
415 __gen_field(values
->CommandType
, 29, 31) |
416 __gen_field(values
->MICommandOpcode
, 23, 28) |
417 __gen_field(values
->DwordLength
, 0, 7) |
421 __gen_offset(values
->SourceRegisterAddress
, 2, 22) |
425 __gen_offset(values
->DestinationRegisterAddress
, 2, 22) |
430 #define GEN8_MI_SEMAPHORE_SIGNAL_length 0x00000002
431 #define GEN8_MI_SEMAPHORE_SIGNAL_length_bias 0x00000002
432 #define GEN8_MI_SEMAPHORE_SIGNAL_header \
434 .MICommandOpcode = 27, \
437 struct GEN8_MI_SEMAPHORE_SIGNAL
{
438 uint32_t CommandType
;
439 uint32_t MICommandOpcode
;
440 uint32_t PostSyncOperation
;
446 uint32_t TargetEngineSelect
;
447 uint32_t DwordLength
;
448 uint32_t TargetContextID
;
452 GEN8_MI_SEMAPHORE_SIGNAL_pack(__gen_user_data
*data
, void * restrict dst
,
453 const struct GEN8_MI_SEMAPHORE_SIGNAL
* restrict values
)
455 uint32_t *dw
= (uint32_t * restrict
) dst
;
458 __gen_field(values
->CommandType
, 29, 31) |
459 __gen_field(values
->MICommandOpcode
, 23, 28) |
460 __gen_field(values
->PostSyncOperation
, 21, 21) |
461 __gen_field(values
->TargetEngineSelect
, 15, 17) |
462 __gen_field(values
->DwordLength
, 0, 7) |
466 __gen_field(values
->TargetContextID
, 0, 31) |
471 #define GEN8_MI_SEMAPHORE_WAIT_length 0x00000004
472 #define GEN8_MI_SEMAPHORE_WAIT_length_bias 0x00000002
473 #define GEN8_MI_SEMAPHORE_WAIT_header \
475 .MICommandOpcode = 28, \
478 struct GEN8_MI_SEMAPHORE_WAIT
{
479 uint32_t CommandType
;
480 uint32_t MICommandOpcode
;
481 #define PerProcessGraphicsAddress 0
482 #define GlobalGraphicsAddress 1
484 #define PollingMode 1
487 #define SAD_GREATER_THAN_SDD 0
488 #define SAD_GREATER_THAN_OR_EQUAL_SDD 1
489 #define SAD_LESS_THAN_SDD 2
490 #define SAD_LESS_THAN_OR_EQUAL_SDD 3
491 #define SAD_EQUAL_SDD 4
492 #define SAD_NOT_EQUAL_SDD 5
493 uint32_t CompareOperation
;
494 uint32_t DwordLength
;
495 uint32_t SemaphoreDataDword
;
496 __gen_address_type SemaphoreAddress
;
500 GEN8_MI_SEMAPHORE_WAIT_pack(__gen_user_data
*data
, void * restrict dst
,
501 const struct GEN8_MI_SEMAPHORE_WAIT
* restrict values
)
503 uint32_t *dw
= (uint32_t * restrict
) dst
;
506 __gen_field(values
->CommandType
, 29, 31) |
507 __gen_field(values
->MICommandOpcode
, 23, 28) |
508 __gen_field(values
->MemoryType
, 22, 22) |
509 __gen_field(values
->WaitMode
, 15, 15) |
510 __gen_field(values
->CompareOperation
, 12, 14) |
511 __gen_field(values
->DwordLength
, 0, 7) |
515 __gen_field(values
->SemaphoreDataDword
, 0, 31) |
522 __gen_combine_address(data
, &dw
[2], values
->SemaphoreAddress
, dw2
);
529 #define GEN8_MI_STORE_REGISTER_MEM_length 0x00000004
530 #define GEN8_MI_STORE_REGISTER_MEM_length_bias 0x00000002
531 #define GEN8_MI_STORE_REGISTER_MEM_header \
533 .MICommandOpcode = 36, \
536 struct GEN8_MI_STORE_REGISTER_MEM
{
537 uint32_t CommandType
;
538 uint32_t MICommandOpcode
;
539 uint32_t UseGlobalGTT
;
540 uint32_t PredicateEnable
;
541 uint32_t DwordLength
;
542 uint32_t RegisterAddress
;
543 __gen_address_type MemoryAddress
;
547 GEN8_MI_STORE_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
548 const struct GEN8_MI_STORE_REGISTER_MEM
* restrict values
)
550 uint32_t *dw
= (uint32_t * restrict
) dst
;
553 __gen_field(values
->CommandType
, 29, 31) |
554 __gen_field(values
->MICommandOpcode
, 23, 28) |
555 __gen_field(values
->UseGlobalGTT
, 22, 22) |
556 __gen_field(values
->PredicateEnable
, 21, 21) |
557 __gen_field(values
->DwordLength
, 0, 7) |
561 __gen_offset(values
->RegisterAddress
, 2, 22) |
568 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
575 #define GEN8_PIPELINE_SELECT_length 0x00000001
576 #define GEN8_PIPELINE_SELECT_length_bias 0x00000001
577 #define GEN8_PIPELINE_SELECT_header \
579 .CommandSubType = 1, \
580 ._3DCommandOpcode = 1, \
581 ._3DCommandSubOpcode = 4
583 struct GEN8_PIPELINE_SELECT
{
584 uint32_t CommandType
;
585 uint32_t CommandSubType
;
586 uint32_t _3DCommandOpcode
;
587 uint32_t _3DCommandSubOpcode
;
591 uint32_t PipelineSelection
;
595 GEN8_PIPELINE_SELECT_pack(__gen_user_data
*data
, void * restrict dst
,
596 const struct GEN8_PIPELINE_SELECT
* restrict values
)
598 uint32_t *dw
= (uint32_t * restrict
) dst
;
601 __gen_field(values
->CommandType
, 29, 31) |
602 __gen_field(values
->CommandSubType
, 27, 28) |
603 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
604 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
605 __gen_field(values
->PipelineSelection
, 0, 1) |
610 #define GEN8_STATE_BASE_ADDRESS_length 0x00000010
611 #define GEN8_STATE_BASE_ADDRESS_length_bias 0x00000002
612 #define GEN8_STATE_BASE_ADDRESS_header \
614 .CommandSubType = 0, \
615 ._3DCommandOpcode = 1, \
616 ._3DCommandSubOpcode = 1, \
619 struct GEN8_MEMORY_OBJECT_CONTROL_STATE
{
620 #define UCwithFenceifcoherentcycle 0
621 #define UCUncacheable 1
624 uint32_t MemoryTypeLLCeLLCCacheabilityControl
;
625 #define eLLCOnlywheneDRAMispresentelsegetsallocatedinLLC 0
627 #define LLCeLLCAllowed 2
628 #define L3DefertoPATforLLCeLLCselection 3
629 uint32_t TargetCache
;
630 uint32_t AgeforQUADLRU
;
634 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
635 const struct GEN8_MEMORY_OBJECT_CONTROL_STATE
* restrict values
)
637 uint32_t *dw
= (uint32_t * restrict
) dst
;
640 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControl
, 5, 6) |
641 __gen_field(values
->TargetCache
, 3, 4) |
642 __gen_field(values
->AgeforQUADLRU
, 0, 1) |
647 struct GEN8_STATE_BASE_ADDRESS
{
648 uint32_t CommandType
;
649 uint32_t CommandSubType
;
650 uint32_t _3DCommandOpcode
;
651 uint32_t _3DCommandSubOpcode
;
652 uint32_t DwordLength
;
653 __gen_address_type GeneralStateBaseAddress
;
654 struct GEN8_MEMORY_OBJECT_CONTROL_STATE GeneralStateMemoryObjectControlState
;
655 uint32_t GeneralStateBaseAddressModifyEnable
;
656 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StatelessDataPortAccessMemoryObjectControlState
;
657 __gen_address_type SurfaceStateBaseAddress
;
658 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceStateMemoryObjectControlState
;
659 uint32_t SurfaceStateBaseAddressModifyEnable
;
660 __gen_address_type DynamicStateBaseAddress
;
661 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DynamicStateMemoryObjectControlState
;
662 uint32_t DynamicStateBaseAddressModifyEnable
;
663 __gen_address_type IndirectObjectBaseAddress
;
664 struct GEN8_MEMORY_OBJECT_CONTROL_STATE IndirectObjectMemoryObjectControlState
;
665 uint32_t IndirectObjectBaseAddressModifyEnable
;
666 __gen_address_type InstructionBaseAddress
;
667 struct GEN8_MEMORY_OBJECT_CONTROL_STATE InstructionMemoryObjectControlState
;
668 uint32_t InstructionBaseAddressModifyEnable
;
669 uint32_t GeneralStateBufferSize
;
670 uint32_t GeneralStateBufferSizeModifyEnable
;
671 uint32_t DynamicStateBufferSize
;
672 uint32_t DynamicStateBufferSizeModifyEnable
;
673 uint32_t IndirectObjectBufferSize
;
674 uint32_t IndirectObjectBufferSizeModifyEnable
;
675 uint32_t InstructionBufferSize
;
676 uint32_t InstructionBuffersizeModifyEnable
;
680 GEN8_STATE_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
681 const struct GEN8_STATE_BASE_ADDRESS
* restrict values
)
683 uint32_t *dw
= (uint32_t * restrict
) dst
;
686 __gen_field(values
->CommandType
, 29, 31) |
687 __gen_field(values
->CommandSubType
, 27, 28) |
688 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
689 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
690 __gen_field(values
->DwordLength
, 0, 7) |
693 uint32_t dw_GeneralStateMemoryObjectControlState
;
694 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_GeneralStateMemoryObjectControlState
, &values
->GeneralStateMemoryObjectControlState
);
696 __gen_field(dw_GeneralStateMemoryObjectControlState
, 4, 10) |
697 __gen_field(values
->GeneralStateBaseAddressModifyEnable
, 0, 0) |
701 __gen_combine_address(data
, &dw
[1], values
->GeneralStateBaseAddress
, dw1
);
706 uint32_t dw_StatelessDataPortAccessMemoryObjectControlState
;
707 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StatelessDataPortAccessMemoryObjectControlState
, &values
->StatelessDataPortAccessMemoryObjectControlState
);
709 __gen_field(dw_StatelessDataPortAccessMemoryObjectControlState
, 16, 22) |
712 uint32_t dw_SurfaceStateMemoryObjectControlState
;
713 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceStateMemoryObjectControlState
, &values
->SurfaceStateMemoryObjectControlState
);
715 __gen_field(dw_SurfaceStateMemoryObjectControlState
, 4, 10) |
716 __gen_field(values
->SurfaceStateBaseAddressModifyEnable
, 0, 0) |
720 __gen_combine_address(data
, &dw
[4], values
->SurfaceStateBaseAddress
, dw4
);
725 uint32_t dw_DynamicStateMemoryObjectControlState
;
726 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DynamicStateMemoryObjectControlState
, &values
->DynamicStateMemoryObjectControlState
);
728 __gen_field(dw_DynamicStateMemoryObjectControlState
, 4, 10) |
729 __gen_field(values
->DynamicStateBaseAddressModifyEnable
, 0, 0) |
733 __gen_combine_address(data
, &dw
[6], values
->DynamicStateBaseAddress
, dw6
);
738 uint32_t dw_IndirectObjectMemoryObjectControlState
;
739 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_IndirectObjectMemoryObjectControlState
, &values
->IndirectObjectMemoryObjectControlState
);
741 __gen_field(dw_IndirectObjectMemoryObjectControlState
, 4, 10) |
742 __gen_field(values
->IndirectObjectBaseAddressModifyEnable
, 0, 0) |
746 __gen_combine_address(data
, &dw
[8], values
->IndirectObjectBaseAddress
, dw8
);
751 uint32_t dw_InstructionMemoryObjectControlState
;
752 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_InstructionMemoryObjectControlState
, &values
->InstructionMemoryObjectControlState
);
754 __gen_field(dw_InstructionMemoryObjectControlState
, 4, 10) |
755 __gen_field(values
->InstructionBaseAddressModifyEnable
, 0, 0) |
759 __gen_combine_address(data
, &dw
[10], values
->InstructionBaseAddress
, dw10
);
765 __gen_field(values
->GeneralStateBufferSize
, 12, 31) |
766 __gen_field(values
->GeneralStateBufferSizeModifyEnable
, 0, 0) |
770 __gen_field(values
->DynamicStateBufferSize
, 12, 31) |
771 __gen_field(values
->DynamicStateBufferSizeModifyEnable
, 0, 0) |
775 __gen_field(values
->IndirectObjectBufferSize
, 12, 31) |
776 __gen_field(values
->IndirectObjectBufferSizeModifyEnable
, 0, 0) |
780 __gen_field(values
->InstructionBufferSize
, 12, 31) |
781 __gen_field(values
->InstructionBuffersizeModifyEnable
, 0, 0) |
786 #define GEN8_STATE_PREFETCH_length 0x00000002
787 #define GEN8_STATE_PREFETCH_length_bias 0x00000002
788 #define GEN8_STATE_PREFETCH_header \
790 .CommandSubType = 0, \
791 ._3DCommandOpcode = 0, \
792 ._3DCommandSubOpcode = 3, \
795 struct GEN8_STATE_PREFETCH
{
796 uint32_t CommandType
;
797 uint32_t CommandSubType
;
798 uint32_t _3DCommandOpcode
;
799 uint32_t _3DCommandSubOpcode
;
800 uint32_t DwordLength
;
801 __gen_address_type PrefetchPointer
;
802 uint32_t PrefetchCount
;
806 GEN8_STATE_PREFETCH_pack(__gen_user_data
*data
, void * restrict dst
,
807 const struct GEN8_STATE_PREFETCH
* restrict values
)
809 uint32_t *dw
= (uint32_t * restrict
) dst
;
812 __gen_field(values
->CommandType
, 29, 31) |
813 __gen_field(values
->CommandSubType
, 27, 28) |
814 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
815 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
816 __gen_field(values
->DwordLength
, 0, 7) |
820 __gen_field(values
->PrefetchCount
, 0, 2) |
824 __gen_combine_address(data
, &dw
[1], values
->PrefetchPointer
, dw1
);
828 #define GEN8_STATE_SIP_length 0x00000003
829 #define GEN8_STATE_SIP_length_bias 0x00000002
830 #define GEN8_STATE_SIP_header \
832 .CommandSubType = 0, \
833 ._3DCommandOpcode = 1, \
834 ._3DCommandSubOpcode = 2, \
837 struct GEN8_STATE_SIP
{
838 uint32_t CommandType
;
839 uint32_t CommandSubType
;
840 uint32_t _3DCommandOpcode
;
841 uint32_t _3DCommandSubOpcode
;
842 uint32_t DwordLength
;
843 uint64_t SystemInstructionPointer
;
847 GEN8_STATE_SIP_pack(__gen_user_data
*data
, void * restrict dst
,
848 const struct GEN8_STATE_SIP
* restrict values
)
850 uint32_t *dw
= (uint32_t * restrict
) dst
;
853 __gen_field(values
->CommandType
, 29, 31) |
854 __gen_field(values
->CommandSubType
, 27, 28) |
855 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
856 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
857 __gen_field(values
->DwordLength
, 0, 7) |
861 __gen_offset(values
->SystemInstructionPointer
, 4, 63) |
869 #define GEN8_SWTESS_BASE_ADDRESS_length 0x00000002
870 #define GEN8_SWTESS_BASE_ADDRESS_length_bias 0x00000002
871 #define GEN8_SWTESS_BASE_ADDRESS_header \
873 .CommandSubType = 0, \
874 ._3DCommandOpcode = 1, \
875 ._3DCommandSubOpcode = 3, \
878 struct GEN8_SWTESS_BASE_ADDRESS
{
879 uint32_t CommandType
;
880 uint32_t CommandSubType
;
881 uint32_t _3DCommandOpcode
;
882 uint32_t _3DCommandSubOpcode
;
883 uint32_t DwordLength
;
884 __gen_address_type SWTessellationBaseAddress
;
885 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SWTessellationMemoryObjectControlState
;
886 __gen_address_type SWTessellationBaseAddressHigh
;
890 GEN8_SWTESS_BASE_ADDRESS_pack(__gen_user_data
*data
, void * restrict dst
,
891 const struct GEN8_SWTESS_BASE_ADDRESS
* restrict values
)
893 uint32_t *dw
= (uint32_t * restrict
) dst
;
896 __gen_field(values
->CommandType
, 29, 31) |
897 __gen_field(values
->CommandSubType
, 27, 28) |
898 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
899 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
900 __gen_field(values
->DwordLength
, 0, 7) |
903 uint32_t dw_SWTessellationMemoryObjectControlState
;
904 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SWTessellationMemoryObjectControlState
, &values
->SWTessellationMemoryObjectControlState
);
906 __gen_field(dw_SWTessellationMemoryObjectControlState
, 8, 11) |
910 __gen_combine_address(data
, &dw
[1], values
->SWTessellationBaseAddress
, dw1
);
916 __gen_combine_address(data
, &dw
[2], values
->SWTessellationBaseAddressHigh
, dw2
);
920 #define GEN8_3DPRIMITIVE_length 0x00000007
921 #define GEN8_3DPRIMITIVE_length_bias 0x00000002
922 #define GEN8_3DPRIMITIVE_header \
924 .CommandSubType = 3, \
925 ._3DCommandOpcode = 3, \
926 ._3DCommandSubOpcode = 0, \
929 struct GEN8_3DPRIMITIVE
{
930 uint32_t CommandType
;
931 uint32_t CommandSubType
;
932 uint32_t _3DCommandOpcode
;
933 uint32_t _3DCommandSubOpcode
;
934 uint32_t IndirectParameterEnable
;
935 uint32_t UAVCoherencyRequired
;
936 uint32_t PredicateEnable
;
937 uint32_t DwordLength
;
938 uint32_t EndOffsetEnable
;
941 uint32_t VertexAccessType
;
942 uint32_t PrimitiveTopologyType
;
943 uint32_t VertexCountPerInstance
;
944 uint32_t StartVertexLocation
;
945 uint32_t InstanceCount
;
946 uint32_t StartInstanceLocation
;
947 uint32_t BaseVertexLocation
;
951 GEN8_3DPRIMITIVE_pack(__gen_user_data
*data
, void * restrict dst
,
952 const struct GEN8_3DPRIMITIVE
* restrict values
)
954 uint32_t *dw
= (uint32_t * restrict
) dst
;
957 __gen_field(values
->CommandType
, 29, 31) |
958 __gen_field(values
->CommandSubType
, 27, 28) |
959 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
960 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
961 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
962 __gen_field(values
->UAVCoherencyRequired
, 9, 9) |
963 __gen_field(values
->PredicateEnable
, 8, 8) |
964 __gen_field(values
->DwordLength
, 0, 7) |
968 __gen_field(values
->EndOffsetEnable
, 9, 9) |
969 __gen_field(values
->VertexAccessType
, 8, 8) |
970 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
974 __gen_field(values
->VertexCountPerInstance
, 0, 31) |
978 __gen_field(values
->StartVertexLocation
, 0, 31) |
982 __gen_field(values
->InstanceCount
, 0, 31) |
986 __gen_field(values
->StartInstanceLocation
, 0, 31) |
990 __gen_field(values
->BaseVertexLocation
, 0, 31) |
995 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length 0x00000003
996 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_length_bias 0x00000002
997 #define GEN8_3DSTATE_AA_LINE_PARAMETERS_header \
999 .CommandSubType = 3, \
1000 ._3DCommandOpcode = 1, \
1001 ._3DCommandSubOpcode = 10, \
1004 struct GEN8_3DSTATE_AA_LINE_PARAMETERS
{
1005 uint32_t CommandType
;
1006 uint32_t CommandSubType
;
1007 uint32_t _3DCommandOpcode
;
1008 uint32_t _3DCommandSubOpcode
;
1009 uint32_t DwordLength
;
1010 float AAPointCoverageBias
;
1011 float AACoverageBias
;
1012 float AAPointCoverageSlope
;
1013 float AACoverageSlope
;
1014 float AAPointCoverageEndCapBias
;
1015 float AACoverageEndCapBias
;
1016 float AAPointCoverageEndCapSlope
;
1017 float AACoverageEndCapSlope
;
1021 GEN8_3DSTATE_AA_LINE_PARAMETERS_pack(__gen_user_data
*data
, void * restrict dst
,
1022 const struct GEN8_3DSTATE_AA_LINE_PARAMETERS
* restrict values
)
1024 uint32_t *dw
= (uint32_t * restrict
) dst
;
1027 __gen_field(values
->CommandType
, 29, 31) |
1028 __gen_field(values
->CommandSubType
, 27, 28) |
1029 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1030 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1031 __gen_field(values
->DwordLength
, 0, 7) |
1035 __gen_field(values
->AAPointCoverageBias
* (1 << 8), 24, 31) |
1036 __gen_field(values
->AACoverageBias
* (1 << 8), 16, 23) |
1037 __gen_field(values
->AAPointCoverageSlope
* (1 << 8), 8, 15) |
1038 __gen_field(values
->AACoverageSlope
* (1 << 8), 0, 7) |
1042 __gen_field(values
->AAPointCoverageEndCapBias
* (1 << 8), 24, 31) |
1043 __gen_field(values
->AACoverageEndCapBias
* (1 << 8), 16, 23) |
1044 __gen_field(values
->AAPointCoverageEndCapSlope
* (1 << 8), 8, 15) |
1045 __gen_field(values
->AACoverageEndCapSlope
* (1 << 8), 0, 7) |
1050 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_length_bias 0x00000002
1051 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_header\
1053 .CommandSubType = 3, \
1054 ._3DCommandOpcode = 0, \
1055 ._3DCommandSubOpcode = 70
1057 struct GEN8_BINDING_TABLE_EDIT_ENTRY
{
1058 uint32_t BindingTableIndex
;
1059 uint32_t SurfaceStatePointer
;
1063 GEN8_BINDING_TABLE_EDIT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
1064 const struct GEN8_BINDING_TABLE_EDIT_ENTRY
* restrict values
)
1066 uint32_t *dw
= (uint32_t * restrict
) dst
;
1069 __gen_field(values
->BindingTableIndex
, 16, 23) |
1070 __gen_offset(values
->SurfaceStatePointer
, 0, 15) |
1075 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
{
1076 uint32_t CommandType
;
1077 uint32_t CommandSubType
;
1078 uint32_t _3DCommandOpcode
;
1079 uint32_t _3DCommandSubOpcode
;
1080 uint32_t DwordLength
;
1081 uint32_t BindingTableBlockClear
;
1085 uint32_t BindingTableEditTarget
;
1086 /* variable length fields follow */
1090 GEN8_3DSTATE_BINDING_TABLE_EDIT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1091 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_DS
* restrict values
)
1093 uint32_t *dw
= (uint32_t * restrict
) dst
;
1096 __gen_field(values
->CommandType
, 29, 31) |
1097 __gen_field(values
->CommandSubType
, 27, 28) |
1098 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1099 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1100 __gen_field(values
->DwordLength
, 0, 8) |
1104 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1105 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1108 /* variable length fields follow */
1111 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_length_bias 0x00000002
1112 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_header\
1114 .CommandSubType = 3, \
1115 ._3DCommandOpcode = 0, \
1116 ._3DCommandSubOpcode = 68
1118 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
{
1119 uint32_t CommandType
;
1120 uint32_t CommandSubType
;
1121 uint32_t _3DCommandOpcode
;
1122 uint32_t _3DCommandSubOpcode
;
1123 uint32_t DwordLength
;
1124 uint32_t BindingTableBlockClear
;
1128 uint32_t BindingTableEditTarget
;
1129 /* variable length fields follow */
1133 GEN8_3DSTATE_BINDING_TABLE_EDIT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1134 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_GS
* restrict values
)
1136 uint32_t *dw
= (uint32_t * restrict
) dst
;
1139 __gen_field(values
->CommandType
, 29, 31) |
1140 __gen_field(values
->CommandSubType
, 27, 28) |
1141 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1142 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1143 __gen_field(values
->DwordLength
, 0, 8) |
1147 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1148 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1151 /* variable length fields follow */
1154 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_length_bias 0x00000002
1155 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_header\
1157 .CommandSubType = 3, \
1158 ._3DCommandOpcode = 0, \
1159 ._3DCommandSubOpcode = 69
1161 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
{
1162 uint32_t CommandType
;
1163 uint32_t CommandSubType
;
1164 uint32_t _3DCommandOpcode
;
1165 uint32_t _3DCommandSubOpcode
;
1166 uint32_t DwordLength
;
1167 uint32_t BindingTableBlockClear
;
1171 uint32_t BindingTableEditTarget
;
1172 /* variable length fields follow */
1176 GEN8_3DSTATE_BINDING_TABLE_EDIT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1177 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_HS
* restrict values
)
1179 uint32_t *dw
= (uint32_t * restrict
) dst
;
1182 __gen_field(values
->CommandType
, 29, 31) |
1183 __gen_field(values
->CommandSubType
, 27, 28) |
1184 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1185 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1186 __gen_field(values
->DwordLength
, 0, 8) |
1190 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1191 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1194 /* variable length fields follow */
1197 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_length_bias 0x00000002
1198 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_header\
1200 .CommandSubType = 3, \
1201 ._3DCommandOpcode = 0, \
1202 ._3DCommandSubOpcode = 71
1204 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
{
1205 uint32_t CommandType
;
1206 uint32_t CommandSubType
;
1207 uint32_t _3DCommandOpcode
;
1208 uint32_t _3DCommandSubOpcode
;
1209 uint32_t DwordLength
;
1210 uint32_t BindingTableBlockClear
;
1214 uint32_t BindingTableEditTarget
;
1215 /* variable length fields follow */
1219 GEN8_3DSTATE_BINDING_TABLE_EDIT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1220 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_PS
* restrict values
)
1222 uint32_t *dw
= (uint32_t * restrict
) dst
;
1225 __gen_field(values
->CommandType
, 29, 31) |
1226 __gen_field(values
->CommandSubType
, 27, 28) |
1227 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1228 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1229 __gen_field(values
->DwordLength
, 0, 8) |
1233 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1234 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1237 /* variable length fields follow */
1240 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_length_bias 0x00000002
1241 #define GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_header\
1243 .CommandSubType = 3, \
1244 ._3DCommandOpcode = 0, \
1245 ._3DCommandSubOpcode = 67
1247 struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
{
1248 uint32_t CommandType
;
1249 uint32_t CommandSubType
;
1250 uint32_t _3DCommandOpcode
;
1251 uint32_t _3DCommandSubOpcode
;
1252 uint32_t DwordLength
;
1253 uint32_t BindingTableBlockClear
;
1257 uint32_t BindingTableEditTarget
;
1258 /* variable length fields follow */
1262 GEN8_3DSTATE_BINDING_TABLE_EDIT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1263 const struct GEN8_3DSTATE_BINDING_TABLE_EDIT_VS
* restrict values
)
1265 uint32_t *dw
= (uint32_t * restrict
) dst
;
1268 __gen_field(values
->CommandType
, 29, 31) |
1269 __gen_field(values
->CommandSubType
, 27, 28) |
1270 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1271 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1272 __gen_field(values
->DwordLength
, 0, 8) |
1276 __gen_field(values
->BindingTableBlockClear
, 16, 31) |
1277 __gen_field(values
->BindingTableEditTarget
, 0, 1) |
1280 /* variable length fields follow */
1283 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length 0x00000002
1284 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_length_bias 0x00000002
1285 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_header\
1287 .CommandSubType = 3, \
1288 ._3DCommandOpcode = 0, \
1289 ._3DCommandSubOpcode = 40, \
1292 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
{
1293 uint32_t CommandType
;
1294 uint32_t CommandSubType
;
1295 uint32_t _3DCommandOpcode
;
1296 uint32_t _3DCommandSubOpcode
;
1297 uint32_t DwordLength
;
1298 uint32_t PointertoDSBindingTable
;
1302 GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1303 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_DS
* restrict values
)
1305 uint32_t *dw
= (uint32_t * restrict
) dst
;
1308 __gen_field(values
->CommandType
, 29, 31) |
1309 __gen_field(values
->CommandSubType
, 27, 28) |
1310 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1311 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1312 __gen_field(values
->DwordLength
, 0, 7) |
1316 __gen_offset(values
->PointertoDSBindingTable
, 5, 15) |
1321 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length 0x00000002
1322 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_length_bias 0x00000002
1323 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_header\
1325 .CommandSubType = 3, \
1326 ._3DCommandOpcode = 0, \
1327 ._3DCommandSubOpcode = 41, \
1330 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
{
1331 uint32_t CommandType
;
1332 uint32_t CommandSubType
;
1333 uint32_t _3DCommandOpcode
;
1334 uint32_t _3DCommandSubOpcode
;
1335 uint32_t DwordLength
;
1336 uint32_t PointertoGSBindingTable
;
1340 GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1341 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_GS
* restrict values
)
1343 uint32_t *dw
= (uint32_t * restrict
) dst
;
1346 __gen_field(values
->CommandType
, 29, 31) |
1347 __gen_field(values
->CommandSubType
, 27, 28) |
1348 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1349 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1350 __gen_field(values
->DwordLength
, 0, 7) |
1354 __gen_offset(values
->PointertoGSBindingTable
, 5, 15) |
1359 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length 0x00000002
1360 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_length_bias 0x00000002
1361 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_header\
1363 .CommandSubType = 3, \
1364 ._3DCommandOpcode = 0, \
1365 ._3DCommandSubOpcode = 39, \
1368 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
{
1369 uint32_t CommandType
;
1370 uint32_t CommandSubType
;
1371 uint32_t _3DCommandOpcode
;
1372 uint32_t _3DCommandSubOpcode
;
1373 uint32_t DwordLength
;
1374 uint32_t PointertoHSBindingTable
;
1378 GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1379 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_HS
* restrict values
)
1381 uint32_t *dw
= (uint32_t * restrict
) dst
;
1384 __gen_field(values
->CommandType
, 29, 31) |
1385 __gen_field(values
->CommandSubType
, 27, 28) |
1386 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1387 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1388 __gen_field(values
->DwordLength
, 0, 7) |
1392 __gen_offset(values
->PointertoHSBindingTable
, 5, 15) |
1397 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length 0x00000002
1398 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_length_bias 0x00000002
1399 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_header\
1401 .CommandSubType = 3, \
1402 ._3DCommandOpcode = 0, \
1403 ._3DCommandSubOpcode = 42, \
1406 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
{
1407 uint32_t CommandType
;
1408 uint32_t CommandSubType
;
1409 uint32_t _3DCommandOpcode
;
1410 uint32_t _3DCommandSubOpcode
;
1411 uint32_t DwordLength
;
1412 uint32_t PointertoPSBindingTable
;
1416 GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
1417 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_PS
* restrict values
)
1419 uint32_t *dw
= (uint32_t * restrict
) dst
;
1422 __gen_field(values
->CommandType
, 29, 31) |
1423 __gen_field(values
->CommandSubType
, 27, 28) |
1424 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1425 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1426 __gen_field(values
->DwordLength
, 0, 7) |
1430 __gen_offset(values
->PointertoPSBindingTable
, 5, 15) |
1435 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length 0x00000002
1436 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_length_bias 0x00000002
1437 #define GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_header\
1439 .CommandSubType = 3, \
1440 ._3DCommandOpcode = 0, \
1441 ._3DCommandSubOpcode = 38, \
1444 struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
{
1445 uint32_t CommandType
;
1446 uint32_t CommandSubType
;
1447 uint32_t _3DCommandOpcode
;
1448 uint32_t _3DCommandSubOpcode
;
1449 uint32_t DwordLength
;
1450 uint32_t PointertoVSBindingTable
;
1454 GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
1455 const struct GEN8_3DSTATE_BINDING_TABLE_POINTERS_VS
* restrict values
)
1457 uint32_t *dw
= (uint32_t * restrict
) dst
;
1460 __gen_field(values
->CommandType
, 29, 31) |
1461 __gen_field(values
->CommandSubType
, 27, 28) |
1462 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1463 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1464 __gen_field(values
->DwordLength
, 0, 7) |
1468 __gen_offset(values
->PointertoVSBindingTable
, 5, 15) |
1473 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length 0x00000004
1474 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_length_bias 0x00000002
1475 #define GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_header\
1477 .CommandSubType = 3, \
1478 ._3DCommandOpcode = 1, \
1479 ._3DCommandSubOpcode = 25, \
1482 struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
{
1483 uint32_t CommandType
;
1484 uint32_t CommandSubType
;
1485 uint32_t _3DCommandOpcode
;
1486 uint32_t _3DCommandSubOpcode
;
1487 uint32_t DwordLength
;
1488 __gen_address_type BindingTablePoolBaseAddress
;
1489 uint32_t BindingTablePoolEnable
;
1490 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SurfaceObjectControlState
;
1491 #define NoValidData 0
1492 uint32_t BindingTablePoolBufferSize
;
1496 GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
1497 const struct GEN8_3DSTATE_BINDING_TABLE_POOL_ALLOC
* restrict values
)
1499 uint32_t *dw
= (uint32_t * restrict
) dst
;
1502 __gen_field(values
->CommandType
, 29, 31) |
1503 __gen_field(values
->CommandSubType
, 27, 28) |
1504 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1505 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1506 __gen_field(values
->DwordLength
, 0, 7) |
1509 uint32_t dw_SurfaceObjectControlState
;
1510 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SurfaceObjectControlState
, &values
->SurfaceObjectControlState
);
1512 __gen_field(values
->BindingTablePoolEnable
, 11, 11) |
1513 __gen_field(dw_SurfaceObjectControlState
, 0, 6) |
1517 __gen_combine_address(data
, &dw
[1], values
->BindingTablePoolBaseAddress
, dw1
);
1523 __gen_field(values
->BindingTablePoolBufferSize
, 12, 31) |
1528 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length 0x00000002
1529 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_length_bias 0x00000002
1530 #define GEN8_3DSTATE_BLEND_STATE_POINTERS_header\
1532 .CommandSubType = 3, \
1533 ._3DCommandOpcode = 0, \
1534 ._3DCommandSubOpcode = 36, \
1537 struct GEN8_3DSTATE_BLEND_STATE_POINTERS
{
1538 uint32_t CommandType
;
1539 uint32_t CommandSubType
;
1540 uint32_t _3DCommandOpcode
;
1541 uint32_t _3DCommandSubOpcode
;
1542 uint32_t DwordLength
;
1543 uint32_t BlendStatePointer
;
1544 uint32_t BlendStatePointerValid
;
1548 GEN8_3DSTATE_BLEND_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1549 const struct GEN8_3DSTATE_BLEND_STATE_POINTERS
* restrict values
)
1551 uint32_t *dw
= (uint32_t * restrict
) dst
;
1554 __gen_field(values
->CommandType
, 29, 31) |
1555 __gen_field(values
->CommandSubType
, 27, 28) |
1556 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1557 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1558 __gen_field(values
->DwordLength
, 0, 7) |
1562 __gen_offset(values
->BlendStatePointer
, 6, 31) |
1563 __gen_field(values
->BlendStatePointerValid
, 0, 0) |
1568 #define GEN8_3DSTATE_CC_STATE_POINTERS_length 0x00000002
1569 #define GEN8_3DSTATE_CC_STATE_POINTERS_length_bias 0x00000002
1570 #define GEN8_3DSTATE_CC_STATE_POINTERS_header \
1572 .CommandSubType = 3, \
1573 ._3DCommandOpcode = 0, \
1574 ._3DCommandSubOpcode = 14, \
1577 struct GEN8_3DSTATE_CC_STATE_POINTERS
{
1578 uint32_t CommandType
;
1579 uint32_t CommandSubType
;
1580 uint32_t _3DCommandOpcode
;
1581 uint32_t _3DCommandSubOpcode
;
1582 uint32_t DwordLength
;
1583 uint32_t ColorCalcStatePointer
;
1584 uint32_t ColorCalcStatePointerValid
;
1588 GEN8_3DSTATE_CC_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
1589 const struct GEN8_3DSTATE_CC_STATE_POINTERS
* restrict values
)
1591 uint32_t *dw
= (uint32_t * restrict
) dst
;
1594 __gen_field(values
->CommandType
, 29, 31) |
1595 __gen_field(values
->CommandSubType
, 27, 28) |
1596 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1597 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1598 __gen_field(values
->DwordLength
, 0, 7) |
1602 __gen_offset(values
->ColorCalcStatePointer
, 6, 31) |
1603 __gen_field(values
->ColorCalcStatePointerValid
, 0, 0) |
1608 #define GEN8_3DSTATE_CHROMA_KEY_length 0x00000004
1609 #define GEN8_3DSTATE_CHROMA_KEY_length_bias 0x00000002
1610 #define GEN8_3DSTATE_CHROMA_KEY_header \
1612 .CommandSubType = 3, \
1613 ._3DCommandOpcode = 1, \
1614 ._3DCommandSubOpcode = 4, \
1617 struct GEN8_3DSTATE_CHROMA_KEY
{
1618 uint32_t CommandType
;
1619 uint32_t CommandSubType
;
1620 uint32_t _3DCommandOpcode
;
1621 uint32_t _3DCommandSubOpcode
;
1622 uint32_t DwordLength
;
1623 uint32_t ChromaKeyTableIndex
;
1624 uint32_t ChromaKeyLowValue
;
1625 uint32_t ChromaKeyHighValue
;
1629 GEN8_3DSTATE_CHROMA_KEY_pack(__gen_user_data
*data
, void * restrict dst
,
1630 const struct GEN8_3DSTATE_CHROMA_KEY
* restrict values
)
1632 uint32_t *dw
= (uint32_t * restrict
) dst
;
1635 __gen_field(values
->CommandType
, 29, 31) |
1636 __gen_field(values
->CommandSubType
, 27, 28) |
1637 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1638 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1639 __gen_field(values
->DwordLength
, 0, 7) |
1643 __gen_field(values
->ChromaKeyTableIndex
, 30, 31) |
1647 __gen_field(values
->ChromaKeyLowValue
, 0, 31) |
1651 __gen_field(values
->ChromaKeyHighValue
, 0, 31) |
1656 #define GEN8_3DSTATE_CLEAR_PARAMS_length 0x00000003
1657 #define GEN8_3DSTATE_CLEAR_PARAMS_length_bias 0x00000002
1658 #define GEN8_3DSTATE_CLEAR_PARAMS_header \
1660 .CommandSubType = 3, \
1661 ._3DCommandOpcode = 0, \
1662 ._3DCommandSubOpcode = 4, \
1665 struct GEN8_3DSTATE_CLEAR_PARAMS
{
1666 uint32_t CommandType
;
1667 uint32_t CommandSubType
;
1668 uint32_t _3DCommandOpcode
;
1669 uint32_t _3DCommandSubOpcode
;
1670 uint32_t DwordLength
;
1671 float DepthClearValue
;
1672 uint32_t DepthClearValueValid
;
1676 GEN8_3DSTATE_CLEAR_PARAMS_pack(__gen_user_data
*data
, void * restrict dst
,
1677 const struct GEN8_3DSTATE_CLEAR_PARAMS
* restrict values
)
1679 uint32_t *dw
= (uint32_t * restrict
) dst
;
1682 __gen_field(values
->CommandType
, 29, 31) |
1683 __gen_field(values
->CommandSubType
, 27, 28) |
1684 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1685 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1686 __gen_field(values
->DwordLength
, 0, 7) |
1690 __gen_float(values
->DepthClearValue
) |
1694 __gen_field(values
->DepthClearValueValid
, 0, 0) |
1699 #define GEN8_3DSTATE_CLIP_length 0x00000004
1700 #define GEN8_3DSTATE_CLIP_length_bias 0x00000002
1701 #define GEN8_3DSTATE_CLIP_header \
1703 .CommandSubType = 3, \
1704 ._3DCommandOpcode = 0, \
1705 ._3DCommandSubOpcode = 18, \
1708 struct GEN8_3DSTATE_CLIP
{
1709 uint32_t CommandType
;
1710 uint32_t CommandSubType
;
1711 uint32_t _3DCommandOpcode
;
1712 uint32_t _3DCommandSubOpcode
;
1713 uint32_t DwordLength
;
1716 uint32_t ForceUserClipDistanceCullTestEnableBitmask
;
1719 uint32_t VertexSubPixelPrecisionSelect
;
1720 uint32_t EarlyCullEnable
;
1723 uint32_t ForceUserClipDistanceClipTestEnableBitmask
;
1726 uint32_t ForceClipMode
;
1727 uint32_t ClipperStatisticsEnable
;
1728 uint32_t UserClipDistanceCullTestEnableBitmask
;
1729 uint32_t ClipEnable
;
1732 uint32_t ViewportXYClipTestEnable
;
1733 uint32_t GuardbandClipTestEnable
;
1734 uint32_t UserClipDistanceClipTestEnableBitmask
;
1736 #define REJECT_ALL 3
1737 #define ACCEPT_ALL 4
1739 uint32_t PerspectiveDivideDisable
;
1740 uint32_t NonPerspectiveBarycentricEnable
;
1741 uint32_t TriangleStripListProvokingVertexSelect
;
1742 uint32_t LineStripListProvokingVertexSelect
;
1743 uint32_t TriangleFanProvokingVertexSelect
;
1744 float MinimumPointWidth
;
1745 float MaximumPointWidth
;
1746 uint32_t ForceZeroRTAIndexEnable
;
1747 uint32_t MaximumVPIndex
;
1751 GEN8_3DSTATE_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
1752 const struct GEN8_3DSTATE_CLIP
* restrict values
)
1754 uint32_t *dw
= (uint32_t * restrict
) dst
;
1757 __gen_field(values
->CommandType
, 29, 31) |
1758 __gen_field(values
->CommandSubType
, 27, 28) |
1759 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1760 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1761 __gen_field(values
->DwordLength
, 0, 7) |
1765 __gen_field(values
->ForceUserClipDistanceCullTestEnableBitmask
, 20, 20) |
1766 __gen_field(values
->VertexSubPixelPrecisionSelect
, 19, 19) |
1767 __gen_field(values
->EarlyCullEnable
, 18, 18) |
1768 __gen_field(values
->ForceUserClipDistanceClipTestEnableBitmask
, 17, 17) |
1769 __gen_field(values
->ForceClipMode
, 16, 16) |
1770 __gen_field(values
->ClipperStatisticsEnable
, 10, 10) |
1771 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
1775 __gen_field(values
->ClipEnable
, 31, 31) |
1776 __gen_field(values
->APIMode
, 30, 30) |
1777 __gen_field(values
->ViewportXYClipTestEnable
, 28, 28) |
1778 __gen_field(values
->GuardbandClipTestEnable
, 26, 26) |
1779 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 16, 23) |
1780 __gen_field(values
->ClipMode
, 13, 15) |
1781 __gen_field(values
->PerspectiveDivideDisable
, 9, 9) |
1782 __gen_field(values
->NonPerspectiveBarycentricEnable
, 8, 8) |
1783 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 4, 5) |
1784 __gen_field(values
->LineStripListProvokingVertexSelect
, 2, 3) |
1785 __gen_field(values
->TriangleFanProvokingVertexSelect
, 0, 1) |
1789 __gen_field(values
->MinimumPointWidth
* (1 << 3), 17, 27) |
1790 __gen_field(values
->MaximumPointWidth
* (1 << 3), 6, 16) |
1791 __gen_field(values
->ForceZeroRTAIndexEnable
, 5, 5) |
1792 __gen_field(values
->MaximumVPIndex
, 0, 3) |
1797 #define GEN8_3DSTATE_CONSTANT_DS_length 0x0000000b
1798 #define GEN8_3DSTATE_CONSTANT_DS_length_bias 0x00000002
1799 #define GEN8_3DSTATE_CONSTANT_DS_header \
1801 .CommandSubType = 3, \
1802 ._3DCommandOpcode = 0, \
1803 ._3DCommandSubOpcode = 26, \
1806 struct GEN8_3DSTATE_CONSTANT_BODY
{
1807 uint32_t ConstantBuffer1ReadLength
;
1808 uint32_t ConstantBuffer0ReadLength
;
1809 uint32_t ConstantBuffer3ReadLength
;
1810 uint32_t ConstantBuffer2ReadLength
;
1811 __gen_address_type PointerToConstantBuffer0
;
1812 __gen_address_type PointerToConstantBuffer1
;
1813 __gen_address_type PointerToConstantBuffer2
;
1814 __gen_address_type PointerToConstantBuffer3
;
1818 GEN8_3DSTATE_CONSTANT_BODY_pack(__gen_user_data
*data
, void * restrict dst
,
1819 const struct GEN8_3DSTATE_CONSTANT_BODY
* restrict values
)
1821 uint32_t *dw
= (uint32_t * restrict
) dst
;
1824 __gen_field(values
->ConstantBuffer1ReadLength
, 16, 31) |
1825 __gen_field(values
->ConstantBuffer0ReadLength
, 0, 15) |
1829 __gen_field(values
->ConstantBuffer3ReadLength
, 16, 31) |
1830 __gen_field(values
->ConstantBuffer2ReadLength
, 0, 15) |
1837 __gen_combine_address(data
, &dw
[2], values
->PointerToConstantBuffer0
, dw2
);
1846 __gen_combine_address(data
, &dw
[4], values
->PointerToConstantBuffer1
, dw4
);
1855 __gen_combine_address(data
, &dw
[6], values
->PointerToConstantBuffer2
, dw6
);
1864 __gen_combine_address(data
, &dw
[8], values
->PointerToConstantBuffer3
, dw8
);
1871 struct GEN8_3DSTATE_CONSTANT_DS
{
1872 uint32_t CommandType
;
1873 uint32_t CommandSubType
;
1874 uint32_t _3DCommandOpcode
;
1875 uint32_t _3DCommandSubOpcode
;
1876 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1877 uint32_t DwordLength
;
1878 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1882 GEN8_3DSTATE_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
1883 const struct GEN8_3DSTATE_CONSTANT_DS
* restrict values
)
1885 uint32_t *dw
= (uint32_t * restrict
) dst
;
1887 uint32_t dw_ConstantBufferObjectControlState
;
1888 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1890 __gen_field(values
->CommandType
, 29, 31) |
1891 __gen_field(values
->CommandSubType
, 27, 28) |
1892 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1893 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1894 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1895 __gen_field(values
->DwordLength
, 0, 7) |
1898 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1901 #define GEN8_3DSTATE_CONSTANT_GS_length 0x0000000b
1902 #define GEN8_3DSTATE_CONSTANT_GS_length_bias 0x00000002
1903 #define GEN8_3DSTATE_CONSTANT_GS_header \
1905 .CommandSubType = 3, \
1906 ._3DCommandOpcode = 0, \
1907 ._3DCommandSubOpcode = 22, \
1910 struct GEN8_3DSTATE_CONSTANT_GS
{
1911 uint32_t CommandType
;
1912 uint32_t CommandSubType
;
1913 uint32_t _3DCommandOpcode
;
1914 uint32_t _3DCommandSubOpcode
;
1915 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1916 uint32_t DwordLength
;
1917 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1921 GEN8_3DSTATE_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
1922 const struct GEN8_3DSTATE_CONSTANT_GS
* restrict values
)
1924 uint32_t *dw
= (uint32_t * restrict
) dst
;
1926 uint32_t dw_ConstantBufferObjectControlState
;
1927 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1929 __gen_field(values
->CommandType
, 29, 31) |
1930 __gen_field(values
->CommandSubType
, 27, 28) |
1931 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1932 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1933 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1934 __gen_field(values
->DwordLength
, 0, 7) |
1937 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1940 #define GEN8_3DSTATE_CONSTANT_HS_length 0x0000000b
1941 #define GEN8_3DSTATE_CONSTANT_HS_length_bias 0x00000002
1942 #define GEN8_3DSTATE_CONSTANT_HS_header \
1944 .CommandSubType = 3, \
1945 ._3DCommandOpcode = 0, \
1946 ._3DCommandSubOpcode = 25, \
1949 struct GEN8_3DSTATE_CONSTANT_HS
{
1950 uint32_t CommandType
;
1951 uint32_t CommandSubType
;
1952 uint32_t _3DCommandOpcode
;
1953 uint32_t _3DCommandSubOpcode
;
1954 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1955 uint32_t DwordLength
;
1956 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1960 GEN8_3DSTATE_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
1961 const struct GEN8_3DSTATE_CONSTANT_HS
* restrict values
)
1963 uint32_t *dw
= (uint32_t * restrict
) dst
;
1965 uint32_t dw_ConstantBufferObjectControlState
;
1966 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
1968 __gen_field(values
->CommandType
, 29, 31) |
1969 __gen_field(values
->CommandSubType
, 27, 28) |
1970 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
1971 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
1972 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
1973 __gen_field(values
->DwordLength
, 0, 7) |
1976 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
1979 #define GEN8_3DSTATE_CONSTANT_PS_length 0x0000000b
1980 #define GEN8_3DSTATE_CONSTANT_PS_length_bias 0x00000002
1981 #define GEN8_3DSTATE_CONSTANT_PS_header \
1983 .CommandSubType = 3, \
1984 ._3DCommandOpcode = 0, \
1985 ._3DCommandSubOpcode = 23, \
1988 struct GEN8_3DSTATE_CONSTANT_PS
{
1989 uint32_t CommandType
;
1990 uint32_t CommandSubType
;
1991 uint32_t _3DCommandOpcode
;
1992 uint32_t _3DCommandSubOpcode
;
1993 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
1994 uint32_t DwordLength
;
1995 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
1999 GEN8_3DSTATE_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
2000 const struct GEN8_3DSTATE_CONSTANT_PS
* restrict values
)
2002 uint32_t *dw
= (uint32_t * restrict
) dst
;
2004 uint32_t dw_ConstantBufferObjectControlState
;
2005 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2007 __gen_field(values
->CommandType
, 29, 31) |
2008 __gen_field(values
->CommandSubType
, 27, 28) |
2009 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2010 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2011 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2012 __gen_field(values
->DwordLength
, 0, 7) |
2015 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2018 #define GEN8_3DSTATE_CONSTANT_VS_length 0x0000000b
2019 #define GEN8_3DSTATE_CONSTANT_VS_length_bias 0x00000002
2020 #define GEN8_3DSTATE_CONSTANT_VS_header \
2022 .CommandSubType = 3, \
2023 ._3DCommandOpcode = 0, \
2024 ._3DCommandSubOpcode = 21, \
2027 struct GEN8_3DSTATE_CONSTANT_VS
{
2028 uint32_t CommandType
;
2029 uint32_t CommandSubType
;
2030 uint32_t _3DCommandOpcode
;
2031 uint32_t _3DCommandSubOpcode
;
2032 struct GEN8_MEMORY_OBJECT_CONTROL_STATE ConstantBufferObjectControlState
;
2033 uint32_t DwordLength
;
2034 struct GEN8_3DSTATE_CONSTANT_BODY ConstantBody
;
2038 GEN8_3DSTATE_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2039 const struct GEN8_3DSTATE_CONSTANT_VS
* restrict values
)
2041 uint32_t *dw
= (uint32_t * restrict
) dst
;
2043 uint32_t dw_ConstantBufferObjectControlState
;
2044 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_ConstantBufferObjectControlState
, &values
->ConstantBufferObjectControlState
);
2046 __gen_field(values
->CommandType
, 29, 31) |
2047 __gen_field(values
->CommandSubType
, 27, 28) |
2048 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2049 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2050 __gen_field(dw_ConstantBufferObjectControlState
, 8, 14) |
2051 __gen_field(values
->DwordLength
, 0, 7) |
2054 GEN8_3DSTATE_CONSTANT_BODY_pack(data
, &dw
[1], &values
->ConstantBody
);
2057 #define GEN8_3DSTATE_DEPTH_BUFFER_length 0x00000008
2058 #define GEN8_3DSTATE_DEPTH_BUFFER_length_bias 0x00000002
2059 #define GEN8_3DSTATE_DEPTH_BUFFER_header \
2061 .CommandSubType = 3, \
2062 ._3DCommandOpcode = 0, \
2063 ._3DCommandSubOpcode = 5, \
2066 struct GEN8_3DSTATE_DEPTH_BUFFER
{
2067 uint32_t CommandType
;
2068 uint32_t CommandSubType
;
2069 uint32_t _3DCommandOpcode
;
2070 uint32_t _3DCommandSubOpcode
;
2071 uint32_t DwordLength
;
2072 #define SURFTYPE_1D 0
2073 #define SURFTYPE_2D 1
2074 #define SURFTYPE_3D 2
2075 #define SURFTYPE_CUBE 3
2076 #define SURFTYPE_NULL 7
2077 uint32_t SurfaceType
;
2078 uint32_t DepthWriteEnable
;
2079 uint32_t StencilWriteEnable
;
2080 uint32_t HierarchicalDepthBufferEnable
;
2082 #define D24_UNORM_X8_UINT 3
2084 uint32_t SurfaceFormat
;
2085 uint32_t SurfacePitch
;
2086 __gen_address_type SurfaceBaseAddress
;
2091 uint32_t MinimumArrayElement
;
2092 struct GEN8_MEMORY_OBJECT_CONTROL_STATE DepthBufferObjectControlState
;
2093 uint32_t RenderTargetViewExtent
;
2094 uint32_t SurfaceQPitch
;
2098 GEN8_3DSTATE_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2099 const struct GEN8_3DSTATE_DEPTH_BUFFER
* restrict values
)
2101 uint32_t *dw
= (uint32_t * restrict
) dst
;
2104 __gen_field(values
->CommandType
, 29, 31) |
2105 __gen_field(values
->CommandSubType
, 27, 28) |
2106 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2107 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2108 __gen_field(values
->DwordLength
, 0, 7) |
2112 __gen_field(values
->SurfaceType
, 29, 31) |
2113 __gen_field(values
->DepthWriteEnable
, 28, 28) |
2114 __gen_field(values
->StencilWriteEnable
, 27, 27) |
2115 __gen_field(values
->HierarchicalDepthBufferEnable
, 22, 22) |
2116 __gen_field(values
->SurfaceFormat
, 18, 20) |
2117 __gen_field(values
->SurfacePitch
, 0, 17) |
2124 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2130 __gen_field(values
->Height
, 18, 31) |
2131 __gen_field(values
->Width
, 4, 17) |
2132 __gen_field(values
->LOD
, 0, 3) |
2135 uint32_t dw_DepthBufferObjectControlState
;
2136 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_DepthBufferObjectControlState
, &values
->DepthBufferObjectControlState
);
2138 __gen_field(values
->Depth
, 21, 31) |
2139 __gen_field(values
->MinimumArrayElement
, 10, 20) |
2140 __gen_field(dw_DepthBufferObjectControlState
, 0, 6) |
2147 __gen_field(values
->RenderTargetViewExtent
, 21, 31) |
2148 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2153 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length 0x00000004
2154 #define GEN8_3DSTATE_DRAWING_RECTANGLE_length_bias 0x00000002
2155 #define GEN8_3DSTATE_DRAWING_RECTANGLE_header \
2157 .CommandSubType = 3, \
2158 ._3DCommandOpcode = 1, \
2159 ._3DCommandSubOpcode = 0, \
2162 struct GEN8_3DSTATE_DRAWING_RECTANGLE
{
2163 uint32_t CommandType
;
2164 uint32_t CommandSubType
;
2165 uint32_t _3DCommandOpcode
;
2166 uint32_t _3DCommandSubOpcode
;
2168 #define Core0Enabled 1
2169 #define Core1Enabled 2
2170 uint32_t CoreModeSelect
;
2171 uint32_t DwordLength
;
2172 uint32_t ClippedDrawingRectangleYMin
;
2173 uint32_t ClippedDrawingRectangleXMin
;
2174 uint32_t ClippedDrawingRectangleYMax
;
2175 uint32_t ClippedDrawingRectangleXMax
;
2176 uint32_t DrawingRectangleOriginY
;
2177 uint32_t DrawingRectangleOriginX
;
2181 GEN8_3DSTATE_DRAWING_RECTANGLE_pack(__gen_user_data
*data
, void * restrict dst
,
2182 const struct GEN8_3DSTATE_DRAWING_RECTANGLE
* restrict values
)
2184 uint32_t *dw
= (uint32_t * restrict
) dst
;
2187 __gen_field(values
->CommandType
, 29, 31) |
2188 __gen_field(values
->CommandSubType
, 27, 28) |
2189 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2190 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2191 __gen_field(values
->CoreModeSelect
, 14, 15) |
2192 __gen_field(values
->DwordLength
, 0, 7) |
2196 __gen_field(values
->ClippedDrawingRectangleYMin
, 16, 31) |
2197 __gen_field(values
->ClippedDrawingRectangleXMin
, 0, 15) |
2201 __gen_field(values
->ClippedDrawingRectangleYMax
, 16, 31) |
2202 __gen_field(values
->ClippedDrawingRectangleXMax
, 0, 15) |
2206 __gen_field(values
->DrawingRectangleOriginY
, 16, 31) |
2207 __gen_field(values
->DrawingRectangleOriginX
, 0, 15) |
2212 #define GEN8_3DSTATE_DS_length 0x00000009
2213 #define GEN8_3DSTATE_DS_length_bias 0x00000002
2214 #define GEN8_3DSTATE_DS_header \
2216 .CommandSubType = 3, \
2217 ._3DCommandOpcode = 0, \
2218 ._3DCommandSubOpcode = 29, \
2221 struct GEN8_3DSTATE_DS
{
2222 uint32_t CommandType
;
2223 uint32_t CommandSubType
;
2224 uint32_t _3DCommandOpcode
;
2225 uint32_t _3DCommandSubOpcode
;
2226 uint32_t DwordLength
;
2227 uint64_t KernelStartPointer
;
2230 uint32_t SingleDomainPointDispatch
;
2233 uint32_t VectorMaskEnable
;
2234 #define NoSamplers 0
2235 #define _14Samplers 1
2236 #define _58Samplers 2
2237 #define _912Samplers 3
2238 #define _1316Samplers 4
2239 uint32_t SamplerCount
;
2240 uint32_t BindingTableEntryCount
;
2243 uint32_t ThreadDispatchPriority
;
2246 uint32_t FloatingPointMode
;
2247 uint32_t AccessesUAV
;
2248 uint32_t IllegalOpcodeExceptionEnable
;
2249 uint32_t SoftwareExceptionEnable
;
2250 __gen_address_type ScratchSpaceBasePointer
;
2251 uint32_t PerThreadScratchSpace
;
2252 uint32_t DispatchGRFStartRegisterForURBData
;
2253 uint32_t PatchURBEntryReadLength
;
2254 uint32_t PatchURBEntryReadOffset
;
2255 uint32_t MaximumNumberofThreads
;
2256 uint32_t StatisticsEnable
;
2257 uint32_t SIMD8DispatchEnable
;
2258 uint32_t ComputeWCoordinateEnable
;
2259 uint32_t CacheDisable
;
2260 uint32_t FunctionEnable
;
2261 uint32_t VertexURBEntryOutputReadOffset
;
2262 uint32_t VertexURBEntryOutputLength
;
2263 uint32_t UserClipDistanceClipTestEnableBitmask
;
2264 uint32_t UserClipDistanceCullTestEnableBitmask
;
2268 GEN8_3DSTATE_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2269 const struct GEN8_3DSTATE_DS
* restrict values
)
2271 uint32_t *dw
= (uint32_t * restrict
) dst
;
2274 __gen_field(values
->CommandType
, 29, 31) |
2275 __gen_field(values
->CommandSubType
, 27, 28) |
2276 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2277 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2278 __gen_field(values
->DwordLength
, 0, 7) |
2282 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2289 __gen_field(values
->SingleDomainPointDispatch
, 31, 31) |
2290 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2291 __gen_field(values
->SamplerCount
, 27, 29) |
2292 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2293 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2294 __gen_field(values
->FloatingPointMode
, 16, 16) |
2295 __gen_field(values
->AccessesUAV
, 14, 14) |
2296 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2297 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2301 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2302 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2306 __gen_combine_address(data
, &dw
[4], values
->ScratchSpaceBasePointer
, dw4
);
2312 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 20, 24) |
2313 __gen_field(values
->PatchURBEntryReadLength
, 11, 17) |
2314 __gen_field(values
->PatchURBEntryReadOffset
, 4, 9) |
2318 __gen_field(values
->MaximumNumberofThreads
, 21, 29) |
2319 __gen_field(values
->StatisticsEnable
, 10, 10) |
2320 __gen_field(values
->SIMD8DispatchEnable
, 3, 3) |
2321 __gen_field(values
->ComputeWCoordinateEnable
, 2, 2) |
2322 __gen_field(values
->CacheDisable
, 1, 1) |
2323 __gen_field(values
->FunctionEnable
, 0, 0) |
2327 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2328 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2329 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2330 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2335 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_length_bias 0x00000002
2336 #define GEN8_3DSTATE_GATHER_CONSTANT_DS_header \
2338 .CommandSubType = 3, \
2339 ._3DCommandOpcode = 0, \
2340 ._3DCommandSubOpcode = 55
2342 struct GEN8_GATHER_CONSTANT_ENTRY
{
2343 uint32_t ConstantBufferOffset
;
2344 uint32_t ChannelMask
;
2345 uint32_t BindingTableIndexOffset
;
2349 GEN8_GATHER_CONSTANT_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
2350 const struct GEN8_GATHER_CONSTANT_ENTRY
* restrict values
)
2352 uint32_t *dw
= (uint32_t * restrict
) dst
;
2355 __gen_offset(values
->ConstantBufferOffset
, 8, 15) |
2356 __gen_field(values
->ChannelMask
, 4, 7) |
2357 __gen_field(values
->BindingTableIndexOffset
, 0, 3) |
2362 struct GEN8_3DSTATE_GATHER_CONSTANT_DS
{
2363 uint32_t CommandType
;
2364 uint32_t CommandSubType
;
2365 uint32_t _3DCommandOpcode
;
2366 uint32_t _3DCommandSubOpcode
;
2367 uint32_t DwordLength
;
2368 uint32_t ConstantBufferValid
;
2369 uint32_t ConstantBufferBindingTableBlock
;
2370 uint32_t GatherBufferOffset
;
2371 uint32_t ConstantBufferDx9GenerateStall
;
2372 /* variable length fields follow */
2376 GEN8_3DSTATE_GATHER_CONSTANT_DS_pack(__gen_user_data
*data
, void * restrict dst
,
2377 const struct GEN8_3DSTATE_GATHER_CONSTANT_DS
* restrict values
)
2379 uint32_t *dw
= (uint32_t * restrict
) dst
;
2382 __gen_field(values
->CommandType
, 29, 31) |
2383 __gen_field(values
->CommandSubType
, 27, 28) |
2384 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2385 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2386 __gen_field(values
->DwordLength
, 0, 7) |
2390 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2391 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2395 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2396 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2399 /* variable length fields follow */
2402 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_length_bias 0x00000002
2403 #define GEN8_3DSTATE_GATHER_CONSTANT_GS_header \
2405 .CommandSubType = 3, \
2406 ._3DCommandOpcode = 0, \
2407 ._3DCommandSubOpcode = 53
2409 struct GEN8_3DSTATE_GATHER_CONSTANT_GS
{
2410 uint32_t CommandType
;
2411 uint32_t CommandSubType
;
2412 uint32_t _3DCommandOpcode
;
2413 uint32_t _3DCommandSubOpcode
;
2414 uint32_t DwordLength
;
2415 uint32_t ConstantBufferValid
;
2416 uint32_t ConstantBufferBindingTableBlock
;
2417 uint32_t GatherBufferOffset
;
2418 uint32_t ConstantBufferDx9GenerateStall
;
2419 /* variable length fields follow */
2423 GEN8_3DSTATE_GATHER_CONSTANT_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2424 const struct GEN8_3DSTATE_GATHER_CONSTANT_GS
* restrict values
)
2426 uint32_t *dw
= (uint32_t * restrict
) dst
;
2429 __gen_field(values
->CommandType
, 29, 31) |
2430 __gen_field(values
->CommandSubType
, 27, 28) |
2431 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2432 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2433 __gen_field(values
->DwordLength
, 0, 7) |
2437 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2438 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2442 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2443 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2446 /* variable length fields follow */
2449 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_length_bias 0x00000002
2450 #define GEN8_3DSTATE_GATHER_CONSTANT_HS_header \
2452 .CommandSubType = 3, \
2453 ._3DCommandOpcode = 0, \
2454 ._3DCommandSubOpcode = 54
2456 struct GEN8_3DSTATE_GATHER_CONSTANT_HS
{
2457 uint32_t CommandType
;
2458 uint32_t CommandSubType
;
2459 uint32_t _3DCommandOpcode
;
2460 uint32_t _3DCommandSubOpcode
;
2461 uint32_t DwordLength
;
2462 uint32_t ConstantBufferValid
;
2463 uint32_t ConstantBufferBindingTableBlock
;
2464 uint32_t GatherBufferOffset
;
2465 uint32_t ConstantBufferDx9GenerateStall
;
2466 /* variable length fields follow */
2470 GEN8_3DSTATE_GATHER_CONSTANT_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2471 const struct GEN8_3DSTATE_GATHER_CONSTANT_HS
* restrict values
)
2473 uint32_t *dw
= (uint32_t * restrict
) dst
;
2476 __gen_field(values
->CommandType
, 29, 31) |
2477 __gen_field(values
->CommandSubType
, 27, 28) |
2478 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2479 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2480 __gen_field(values
->DwordLength
, 0, 7) |
2484 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2485 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2489 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2490 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2493 /* variable length fields follow */
2496 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_length_bias 0x00000002
2497 #define GEN8_3DSTATE_GATHER_CONSTANT_PS_header \
2499 .CommandSubType = 3, \
2500 ._3DCommandOpcode = 0, \
2501 ._3DCommandSubOpcode = 56
2503 struct GEN8_3DSTATE_GATHER_CONSTANT_PS
{
2504 uint32_t CommandType
;
2505 uint32_t CommandSubType
;
2506 uint32_t _3DCommandOpcode
;
2507 uint32_t _3DCommandSubOpcode
;
2508 uint32_t DwordLength
;
2509 uint32_t ConstantBufferValid
;
2510 uint32_t ConstantBufferBindingTableBlock
;
2511 uint32_t GatherBufferOffset
;
2512 uint32_t ConstantBufferDx9GenerateStall
;
2513 uint32_t ConstantBufferDx9Enable
;
2514 /* variable length fields follow */
2518 GEN8_3DSTATE_GATHER_CONSTANT_PS_pack(__gen_user_data
*data
, void * restrict dst
,
2519 const struct GEN8_3DSTATE_GATHER_CONSTANT_PS
* restrict values
)
2521 uint32_t *dw
= (uint32_t * restrict
) dst
;
2524 __gen_field(values
->CommandType
, 29, 31) |
2525 __gen_field(values
->CommandSubType
, 27, 28) |
2526 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2527 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2528 __gen_field(values
->DwordLength
, 0, 7) |
2532 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2533 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2537 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2538 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2539 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2542 /* variable length fields follow */
2545 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_length_bias 0x00000002
2546 #define GEN8_3DSTATE_GATHER_CONSTANT_VS_header \
2548 .CommandSubType = 3, \
2549 ._3DCommandOpcode = 0, \
2550 ._3DCommandSubOpcode = 52
2552 struct GEN8_3DSTATE_GATHER_CONSTANT_VS
{
2553 uint32_t CommandType
;
2554 uint32_t CommandSubType
;
2555 uint32_t _3DCommandOpcode
;
2556 uint32_t _3DCommandSubOpcode
;
2557 uint32_t DwordLength
;
2558 uint32_t ConstantBufferValid
;
2559 uint32_t ConstantBufferBindingTableBlock
;
2560 uint32_t GatherBufferOffset
;
2561 uint32_t ConstantBufferDx9GenerateStall
;
2562 uint32_t ConstantBufferDx9Enable
;
2563 /* variable length fields follow */
2567 GEN8_3DSTATE_GATHER_CONSTANT_VS_pack(__gen_user_data
*data
, void * restrict dst
,
2568 const struct GEN8_3DSTATE_GATHER_CONSTANT_VS
* restrict values
)
2570 uint32_t *dw
= (uint32_t * restrict
) dst
;
2573 __gen_field(values
->CommandType
, 29, 31) |
2574 __gen_field(values
->CommandSubType
, 27, 28) |
2575 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2576 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2577 __gen_field(values
->DwordLength
, 0, 7) |
2581 __gen_field(values
->ConstantBufferValid
, 16, 31) |
2582 __gen_field(values
->ConstantBufferBindingTableBlock
, 12, 15) |
2586 __gen_offset(values
->GatherBufferOffset
, 6, 22) |
2587 __gen_field(values
->ConstantBufferDx9GenerateStall
, 5, 5) |
2588 __gen_field(values
->ConstantBufferDx9Enable
, 4, 4) |
2591 /* variable length fields follow */
2594 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length 0x00000004
2595 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_length_bias 0x00000002
2596 #define GEN8_3DSTATE_GATHER_POOL_ALLOC_header \
2598 .CommandSubType = 3, \
2599 ._3DCommandOpcode = 1, \
2600 ._3DCommandSubOpcode = 26, \
2603 struct GEN8_3DSTATE_GATHER_POOL_ALLOC
{
2604 uint32_t CommandType
;
2605 uint32_t CommandSubType
;
2606 uint32_t _3DCommandOpcode
;
2607 uint32_t _3DCommandSubOpcode
;
2608 uint32_t DwordLength
;
2609 __gen_address_type GatherPoolBaseAddress
;
2610 uint32_t GatherPoolEnable
;
2611 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2612 uint32_t GatherPoolBufferSize
;
2616 GEN8_3DSTATE_GATHER_POOL_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
2617 const struct GEN8_3DSTATE_GATHER_POOL_ALLOC
* restrict values
)
2619 uint32_t *dw
= (uint32_t * restrict
) dst
;
2622 __gen_field(values
->CommandType
, 29, 31) |
2623 __gen_field(values
->CommandSubType
, 27, 28) |
2624 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2625 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2626 __gen_field(values
->DwordLength
, 0, 7) |
2629 uint32_t dw_MemoryObjectControlState
;
2630 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
2632 __gen_field(values
->GatherPoolEnable
, 11, 11) |
2633 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
2637 __gen_combine_address(data
, &dw
[1], values
->GatherPoolBaseAddress
, dw1
);
2643 __gen_field(values
->GatherPoolBufferSize
, 12, 31) |
2648 #define GEN8_3DSTATE_GS_length 0x0000000a
2649 #define GEN8_3DSTATE_GS_length_bias 0x00000002
2650 #define GEN8_3DSTATE_GS_header \
2652 .CommandSubType = 3, \
2653 ._3DCommandOpcode = 0, \
2654 ._3DCommandSubOpcode = 17, \
2657 struct GEN8_3DSTATE_GS
{
2658 uint32_t CommandType
;
2659 uint32_t CommandSubType
;
2660 uint32_t _3DCommandOpcode
;
2661 uint32_t _3DCommandSubOpcode
;
2662 uint32_t DwordLength
;
2663 uint64_t KernelStartPointer
;
2664 uint32_t SingleProgramFlow
;
2667 uint32_t VectorMaskEnable
;
2668 #define NoSamplers 0
2669 #define _14Samplers 1
2670 #define _58Samplers 2
2671 #define _912Samplers 3
2672 #define _1316Samplers 4
2673 uint32_t SamplerCount
;
2674 uint32_t BindingTableEntryCount
;
2677 uint32_t ThreadDispatchPriority
;
2680 uint32_t FloatingPointMode
;
2681 uint32_t IllegalOpcodeExceptionEnable
;
2682 uint32_t AccessesUAV
;
2683 uint32_t MaskStackExceptionEnable
;
2684 uint32_t SoftwareExceptionEnable
;
2685 uint32_t ExpectedVertexCount
;
2686 __gen_address_type ScratchSpaceBasePointer
;
2687 uint32_t PerThreadScratchSpace
;
2688 uint32_t OutputVertexSize
;
2689 uint32_t OutputTopology
;
2690 uint32_t VertexURBEntryReadLength
;
2691 uint32_t IncludeVertexHandles
;
2692 uint32_t VertexURBEntryReadOffset
;
2693 uint32_t DispatchGRFStartRegisterForURBData
;
2694 uint32_t MaximumNumberofThreads
;
2695 uint32_t ControlDataHeaderSize
;
2696 uint32_t InstanceControl
;
2697 uint32_t DefaultStreamId
;
2698 #define DispatchModeSingle 0
2699 #define DispatchModeDualInstance 1
2700 #define DispatchModeDualObject 2
2701 #define DispatchModeSIMD8 3
2702 uint32_t DispatchMode
;
2703 uint32_t StatisticsEnable
;
2704 uint32_t InvocationsIncrementValue
;
2705 uint32_t IncludePrimitiveID
;
2709 uint32_t ReorderMode
;
2710 uint32_t DiscardAdjacency
;
2714 uint32_t ControlDataFormat
;
2715 uint32_t StaticOutput
;
2716 uint32_t StaticOutputVertexCount
;
2717 uint32_t VertexURBEntryOutputReadOffset
;
2718 uint32_t VertexURBEntryOutputLength
;
2719 uint32_t UserClipDistanceClipTestEnableBitmask
;
2720 uint32_t UserClipDistanceCullTestEnableBitmask
;
2724 GEN8_3DSTATE_GS_pack(__gen_user_data
*data
, void * restrict dst
,
2725 const struct GEN8_3DSTATE_GS
* restrict values
)
2727 uint32_t *dw
= (uint32_t * restrict
) dst
;
2730 __gen_field(values
->CommandType
, 29, 31) |
2731 __gen_field(values
->CommandSubType
, 27, 28) |
2732 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2733 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2734 __gen_field(values
->DwordLength
, 0, 7) |
2738 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2745 __gen_field(values
->SingleProgramFlow
, 31, 31) |
2746 __gen_field(values
->VectorMaskEnable
, 30, 30) |
2747 __gen_field(values
->SamplerCount
, 27, 29) |
2748 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2749 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2750 __gen_field(values
->FloatingPointMode
, 16, 16) |
2751 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2752 __gen_field(values
->AccessesUAV
, 12, 12) |
2753 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
2754 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
2755 __gen_field(values
->ExpectedVertexCount
, 0, 5) |
2759 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2760 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2764 __gen_combine_address(data
, &dw
[4], values
->ScratchSpaceBasePointer
, dw4
);
2770 __gen_field(values
->OutputVertexSize
, 23, 28) |
2771 __gen_field(values
->OutputTopology
, 17, 22) |
2772 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2773 __gen_field(values
->IncludeVertexHandles
, 10, 10) |
2774 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2775 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 0, 3) |
2779 __gen_field(values
->MaximumNumberofThreads
, 24, 31) |
2780 __gen_field(values
->ControlDataHeaderSize
, 20, 23) |
2781 __gen_field(values
->InstanceControl
, 15, 19) |
2782 __gen_field(values
->DefaultStreamId
, 13, 14) |
2783 __gen_field(values
->DispatchMode
, 11, 12) |
2784 __gen_field(values
->StatisticsEnable
, 10, 10) |
2785 __gen_field(values
->InvocationsIncrementValue
, 5, 9) |
2786 __gen_field(values
->IncludePrimitiveID
, 4, 4) |
2787 __gen_field(values
->Hint
, 3, 3) |
2788 __gen_field(values
->ReorderMode
, 2, 2) |
2789 __gen_field(values
->DiscardAdjacency
, 1, 1) |
2790 __gen_field(values
->Enable
, 0, 0) |
2794 __gen_field(values
->ControlDataFormat
, 31, 31) |
2795 __gen_field(values
->StaticOutput
, 30, 30) |
2796 __gen_field(values
->StaticOutputVertexCount
, 16, 26) |
2800 __gen_field(values
->VertexURBEntryOutputReadOffset
, 21, 26) |
2801 __gen_field(values
->VertexURBEntryOutputLength
, 16, 20) |
2802 __gen_field(values
->UserClipDistanceClipTestEnableBitmask
, 8, 15) |
2803 __gen_field(values
->UserClipDistanceCullTestEnableBitmask
, 0, 7) |
2808 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length 0x00000005
2809 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_length_bias 0x00000002
2810 #define GEN8_3DSTATE_HIER_DEPTH_BUFFER_header \
2812 .CommandSubType = 3, \
2813 ._3DCommandOpcode = 0, \
2814 ._3DCommandSubOpcode = 7, \
2817 struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
{
2818 uint32_t CommandType
;
2819 uint32_t CommandSubType
;
2820 uint32_t _3DCommandOpcode
;
2821 uint32_t _3DCommandSubOpcode
;
2822 uint32_t DwordLength
;
2823 struct GEN8_MEMORY_OBJECT_CONTROL_STATE HierarchicalDepthBufferObjectControlState
;
2824 uint32_t SurfacePitch
;
2825 __gen_address_type SurfaceBaseAddress
;
2826 uint32_t SurfaceQPitch
;
2830 GEN8_3DSTATE_HIER_DEPTH_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
2831 const struct GEN8_3DSTATE_HIER_DEPTH_BUFFER
* restrict values
)
2833 uint32_t *dw
= (uint32_t * restrict
) dst
;
2836 __gen_field(values
->CommandType
, 29, 31) |
2837 __gen_field(values
->CommandSubType
, 27, 28) |
2838 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2839 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2840 __gen_field(values
->DwordLength
, 0, 7) |
2843 uint32_t dw_HierarchicalDepthBufferObjectControlState
;
2844 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_HierarchicalDepthBufferObjectControlState
, &values
->HierarchicalDepthBufferObjectControlState
);
2846 __gen_field(dw_HierarchicalDepthBufferObjectControlState
, 25, 31) |
2847 __gen_field(values
->SurfacePitch
, 0, 16) |
2854 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
2860 __gen_field(values
->SurfaceQPitch
, 0, 14) |
2865 #define GEN8_3DSTATE_HS_length 0x00000009
2866 #define GEN8_3DSTATE_HS_length_bias 0x00000002
2867 #define GEN8_3DSTATE_HS_header \
2869 .CommandSubType = 3, \
2870 ._3DCommandOpcode = 0, \
2871 ._3DCommandSubOpcode = 27, \
2874 struct GEN8_3DSTATE_HS
{
2875 uint32_t CommandType
;
2876 uint32_t CommandSubType
;
2877 uint32_t _3DCommandOpcode
;
2878 uint32_t _3DCommandSubOpcode
;
2879 uint32_t DwordLength
;
2880 #define NoSamplers 0
2881 #define _14Samplers 1
2882 #define _58Samplers 2
2883 #define _912Samplers 3
2884 #define _1316Samplers 4
2885 uint32_t SamplerCount
;
2886 uint32_t BindingTableEntryCount
;
2889 uint32_t ThreadDispatchPriority
;
2892 uint32_t FloatingPointMode
;
2893 uint32_t IllegalOpcodeExceptionEnable
;
2894 uint32_t SoftwareExceptionEnable
;
2896 uint32_t StatisticsEnable
;
2897 uint32_t MaximumNumberofThreads
;
2898 uint32_t InstanceCount
;
2899 uint64_t KernelStartPointer
;
2900 __gen_address_type ScratchSpaceBasePointer
;
2901 uint32_t PerThreadScratchSpace
;
2902 uint32_t SingleProgramFlow
;
2905 uint32_t VectorMaskEnable
;
2906 uint32_t AccessesUAV
;
2907 uint32_t IncludeVertexHandles
;
2908 uint32_t DispatchGRFStartRegisterForURBData
;
2909 uint32_t VertexURBEntryReadLength
;
2910 uint32_t VertexURBEntryReadOffset
;
2914 GEN8_3DSTATE_HS_pack(__gen_user_data
*data
, void * restrict dst
,
2915 const struct GEN8_3DSTATE_HS
* restrict values
)
2917 uint32_t *dw
= (uint32_t * restrict
) dst
;
2920 __gen_field(values
->CommandType
, 29, 31) |
2921 __gen_field(values
->CommandSubType
, 27, 28) |
2922 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
2923 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
2924 __gen_field(values
->DwordLength
, 0, 7) |
2928 __gen_field(values
->SamplerCount
, 27, 29) |
2929 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
2930 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
2931 __gen_field(values
->FloatingPointMode
, 16, 16) |
2932 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
2933 __gen_field(values
->SoftwareExceptionEnable
, 12, 12) |
2937 __gen_field(values
->Enable
, 31, 31) |
2938 __gen_field(values
->StatisticsEnable
, 29, 29) |
2939 __gen_field(values
->MaximumNumberofThreads
, 8, 16) |
2940 __gen_field(values
->InstanceCount
, 0, 3) |
2944 __gen_offset(values
->KernelStartPointer
, 6, 63) |
2951 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
2952 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
2956 __gen_combine_address(data
, &dw
[5], values
->ScratchSpaceBasePointer
, dw5
);
2962 __gen_field(values
->SingleProgramFlow
, 27, 27) |
2963 __gen_field(values
->VectorMaskEnable
, 26, 26) |
2964 __gen_field(values
->AccessesUAV
, 25, 25) |
2965 __gen_field(values
->IncludeVertexHandles
, 24, 24) |
2966 __gen_field(values
->DispatchGRFStartRegisterForURBData
, 19, 23) |
2967 __gen_field(values
->VertexURBEntryReadLength
, 11, 16) |
2968 __gen_field(values
->VertexURBEntryReadOffset
, 4, 9) |
2976 #define GEN8_3DSTATE_INDEX_BUFFER_length 0x00000005
2977 #define GEN8_3DSTATE_INDEX_BUFFER_length_bias 0x00000002
2978 #define GEN8_3DSTATE_INDEX_BUFFER_header \
2980 .CommandSubType = 3, \
2981 ._3DCommandOpcode = 0, \
2982 ._3DCommandSubOpcode = 10, \
2985 struct GEN8_3DSTATE_INDEX_BUFFER
{
2986 uint32_t CommandType
;
2987 uint32_t CommandSubType
;
2988 uint32_t _3DCommandOpcode
;
2989 uint32_t _3DCommandSubOpcode
;
2990 uint32_t DwordLength
;
2991 #define INDEX_BYTE 0
2992 #define INDEX_WORD 1
2993 #define INDEX_DWORD 2
2994 uint32_t IndexFormat
;
2995 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
2996 __gen_address_type BufferStartingAddress
;
2997 uint32_t BufferSize
;
3001 GEN8_3DSTATE_INDEX_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
3002 const struct GEN8_3DSTATE_INDEX_BUFFER
* 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) |
3014 uint32_t dw_MemoryObjectControlState
;
3015 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
3017 __gen_field(values
->IndexFormat
, 8, 9) |
3018 __gen_field(dw_MemoryObjectControlState
, 0, 6) |
3025 __gen_combine_address(data
, &dw
[2], values
->BufferStartingAddress
, dw2
);
3031 __gen_field(values
->BufferSize
, 0, 31) |
3036 #define GEN8_3DSTATE_LINE_STIPPLE_length 0x00000003
3037 #define GEN8_3DSTATE_LINE_STIPPLE_length_bias 0x00000002
3038 #define GEN8_3DSTATE_LINE_STIPPLE_header \
3040 .CommandSubType = 3, \
3041 ._3DCommandOpcode = 1, \
3042 ._3DCommandSubOpcode = 8, \
3045 struct GEN8_3DSTATE_LINE_STIPPLE
{
3046 uint32_t CommandType
;
3047 uint32_t CommandSubType
;
3048 uint32_t _3DCommandOpcode
;
3049 uint32_t _3DCommandSubOpcode
;
3050 uint32_t DwordLength
;
3051 uint32_t ModifyEnableCurrentRepeatCounterCurrentStippleIndex
;
3052 uint32_t CurrentRepeatCounter
;
3053 uint32_t CurrentStippleIndex
;
3054 uint32_t LineStipplePattern
;
3055 float LineStippleInverseRepeatCount
;
3056 uint32_t LineStippleRepeatCount
;
3060 GEN8_3DSTATE_LINE_STIPPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3061 const struct GEN8_3DSTATE_LINE_STIPPLE
* restrict values
)
3063 uint32_t *dw
= (uint32_t * restrict
) dst
;
3066 __gen_field(values
->CommandType
, 29, 31) |
3067 __gen_field(values
->CommandSubType
, 27, 28) |
3068 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3069 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3070 __gen_field(values
->DwordLength
, 0, 7) |
3074 __gen_field(values
->ModifyEnableCurrentRepeatCounterCurrentStippleIndex
, 31, 31) |
3075 __gen_field(values
->CurrentRepeatCounter
, 21, 29) |
3076 __gen_field(values
->CurrentStippleIndex
, 16, 19) |
3077 __gen_field(values
->LineStipplePattern
, 0, 15) |
3081 __gen_field(values
->LineStippleInverseRepeatCount
* (1 << 16), 15, 31) |
3082 __gen_field(values
->LineStippleRepeatCount
, 0, 8) |
3087 #define GEN8_3DSTATE_MONOFILTER_SIZE_length 0x00000002
3088 #define GEN8_3DSTATE_MONOFILTER_SIZE_length_bias 0x00000002
3089 #define GEN8_3DSTATE_MONOFILTER_SIZE_header \
3091 .CommandSubType = 3, \
3092 ._3DCommandOpcode = 1, \
3093 ._3DCommandSubOpcode = 17, \
3096 struct GEN8_3DSTATE_MONOFILTER_SIZE
{
3097 uint32_t CommandType
;
3098 uint32_t CommandSubType
;
3099 uint32_t _3DCommandOpcode
;
3100 uint32_t _3DCommandSubOpcode
;
3101 uint32_t DwordLength
;
3102 uint32_t MonochromeFilterWidth
;
3103 uint32_t MonochromeFilterHeight
;
3107 GEN8_3DSTATE_MONOFILTER_SIZE_pack(__gen_user_data
*data
, void * restrict dst
,
3108 const struct GEN8_3DSTATE_MONOFILTER_SIZE
* restrict values
)
3110 uint32_t *dw
= (uint32_t * restrict
) dst
;
3113 __gen_field(values
->CommandType
, 29, 31) |
3114 __gen_field(values
->CommandSubType
, 27, 28) |
3115 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3116 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3117 __gen_field(values
->DwordLength
, 0, 7) |
3121 __gen_field(values
->MonochromeFilterWidth
, 3, 5) |
3122 __gen_field(values
->MonochromeFilterHeight
, 0, 2) |
3127 #define GEN8_3DSTATE_MULTISAMPLE_length 0x00000002
3128 #define GEN8_3DSTATE_MULTISAMPLE_length_bias 0x00000002
3129 #define GEN8_3DSTATE_MULTISAMPLE_header \
3131 .CommandSubType = 3, \
3132 ._3DCommandOpcode = 0, \
3133 ._3DCommandSubOpcode = 13, \
3136 struct GEN8_3DSTATE_MULTISAMPLE
{
3137 uint32_t CommandType
;
3138 uint32_t CommandSubType
;
3139 uint32_t _3DCommandOpcode
;
3140 uint32_t _3DCommandSubOpcode
;
3141 uint32_t DwordLength
;
3142 uint32_t PixelPositionOffsetEnable
;
3145 uint32_t PixelLocation
;
3146 uint32_t NumberofMultisamples
;
3150 GEN8_3DSTATE_MULTISAMPLE_pack(__gen_user_data
*data
, void * restrict dst
,
3151 const struct GEN8_3DSTATE_MULTISAMPLE
* restrict values
)
3153 uint32_t *dw
= (uint32_t * restrict
) dst
;
3156 __gen_field(values
->CommandType
, 29, 31) |
3157 __gen_field(values
->CommandSubType
, 27, 28) |
3158 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3159 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3160 __gen_field(values
->DwordLength
, 0, 7) |
3164 __gen_field(values
->PixelPositionOffsetEnable
, 5, 5) |
3165 __gen_field(values
->PixelLocation
, 4, 4) |
3166 __gen_field(values
->NumberofMultisamples
, 1, 3) |
3171 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length 0x00000002
3172 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_length_bias 0x00000002
3173 #define GEN8_3DSTATE_POLY_STIPPLE_OFFSET_header \
3175 .CommandSubType = 3, \
3176 ._3DCommandOpcode = 1, \
3177 ._3DCommandSubOpcode = 6, \
3180 struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
{
3181 uint32_t CommandType
;
3182 uint32_t CommandSubType
;
3183 uint32_t _3DCommandOpcode
;
3184 uint32_t _3DCommandSubOpcode
;
3185 uint32_t DwordLength
;
3186 uint32_t PolygonStippleXOffset
;
3187 uint32_t PolygonStippleYOffset
;
3191 GEN8_3DSTATE_POLY_STIPPLE_OFFSET_pack(__gen_user_data
*data
, void * restrict dst
,
3192 const struct GEN8_3DSTATE_POLY_STIPPLE_OFFSET
* restrict values
)
3194 uint32_t *dw
= (uint32_t * restrict
) dst
;
3197 __gen_field(values
->CommandType
, 29, 31) |
3198 __gen_field(values
->CommandSubType
, 27, 28) |
3199 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3200 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3201 __gen_field(values
->DwordLength
, 0, 7) |
3205 __gen_field(values
->PolygonStippleXOffset
, 8, 12) |
3206 __gen_field(values
->PolygonStippleYOffset
, 0, 4) |
3211 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length 0x00000021
3212 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_length_bias 0x00000002
3213 #define GEN8_3DSTATE_POLY_STIPPLE_PATTERN_header\
3215 .CommandSubType = 3, \
3216 ._3DCommandOpcode = 1, \
3217 ._3DCommandSubOpcode = 7, \
3220 struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
{
3221 uint32_t CommandType
;
3222 uint32_t CommandSubType
;
3223 uint32_t _3DCommandOpcode
;
3224 uint32_t _3DCommandSubOpcode
;
3225 uint32_t DwordLength
;
3226 uint32_t PatternRow
;
3230 GEN8_3DSTATE_POLY_STIPPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
3231 const struct GEN8_3DSTATE_POLY_STIPPLE_PATTERN
* restrict values
)
3233 uint32_t *dw
= (uint32_t * restrict
) dst
;
3236 __gen_field(values
->CommandType
, 29, 31) |
3237 __gen_field(values
->CommandSubType
, 27, 28) |
3238 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3239 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3240 __gen_field(values
->DwordLength
, 0, 7) |
3244 __gen_field(values
->PatternRow
, 0, 31) |
3249 #define GEN8_3DSTATE_PS_length 0x0000000c
3250 #define GEN8_3DSTATE_PS_length_bias 0x00000002
3251 #define GEN8_3DSTATE_PS_header \
3253 .CommandSubType = 3, \
3254 ._3DCommandOpcode = 0, \
3255 ._3DCommandSubOpcode = 32, \
3258 struct GEN8_3DSTATE_PS
{
3259 uint32_t CommandType
;
3260 uint32_t CommandSubType
;
3261 uint32_t _3DCommandOpcode
;
3262 uint32_t _3DCommandSubOpcode
;
3263 uint32_t DwordLength
;
3264 uint64_t KernelStartPointer0
;
3267 uint32_t SingleProgramFlow
;
3270 uint32_t VectorMaskEnable
;
3271 #define NoSamplers 0
3272 #define _14Samplers 1
3273 #define _58Samplers 2
3274 #define _912Samplers 3
3275 #define _1316Samplers 4
3276 uint32_t SamplerCount
;
3277 #define FlushedtoZero 0
3279 uint32_t SinglePrecisionDenormalMode
;
3280 uint32_t BindingTableEntryCount
;
3283 uint32_t ThreadDispatchPriority
;
3286 uint32_t FloatingPointMode
;
3291 uint32_t RoundingMode
;
3292 uint32_t IllegalOpcodeExceptionEnable
;
3293 uint32_t MaskStackExceptionEnable
;
3294 uint32_t SoftwareExceptionEnable
;
3295 __gen_address_type ScratchSpaceBasePointer
;
3296 uint32_t PerThreadScratchSpace
;
3297 uint32_t MaximumNumberofThreadsPerPSD
;
3298 uint32_t PushConstantEnable
;
3299 uint32_t RenderTargetFastClearEnable
;
3300 uint32_t RenderTargetResolveEnable
;
3301 #define POSOFFSET_NONE 0
3302 #define POSOFFSET_CENTROID 2
3303 #define POSOFFSET_SAMPLE 3
3304 uint32_t PositionXYOffsetSelect
;
3305 uint32_t _32PixelDispatchEnable
;
3306 uint32_t _16PixelDispatchEnable
;
3307 uint32_t _8PixelDispatchEnable
;
3308 uint32_t DispatchGRFStartRegisterForConstantSetupData0
;
3309 uint32_t DispatchGRFStartRegisterForConstantSetupData1
;
3310 uint32_t DispatchGRFStartRegisterForConstantSetupData2
;
3311 uint64_t KernelStartPointer1
;
3312 uint64_t KernelStartPointer2
;
3316 GEN8_3DSTATE_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3317 const struct GEN8_3DSTATE_PS
* restrict values
)
3319 uint32_t *dw
= (uint32_t * restrict
) dst
;
3322 __gen_field(values
->CommandType
, 29, 31) |
3323 __gen_field(values
->CommandSubType
, 27, 28) |
3324 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3325 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3326 __gen_field(values
->DwordLength
, 0, 7) |
3330 __gen_offset(values
->KernelStartPointer0
, 6, 63) |
3337 __gen_field(values
->SingleProgramFlow
, 31, 31) |
3338 __gen_field(values
->VectorMaskEnable
, 30, 30) |
3339 __gen_field(values
->SamplerCount
, 27, 29) |
3340 __gen_field(values
->SinglePrecisionDenormalMode
, 26, 26) |
3341 __gen_field(values
->BindingTableEntryCount
, 18, 25) |
3342 __gen_field(values
->ThreadDispatchPriority
, 17, 17) |
3343 __gen_field(values
->FloatingPointMode
, 16, 16) |
3344 __gen_field(values
->RoundingMode
, 14, 15) |
3345 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
3346 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
3347 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
3351 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 63) |
3352 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
3356 __gen_combine_address(data
, &dw
[4], values
->ScratchSpaceBasePointer
, dw4
);
3362 __gen_field(values
->MaximumNumberofThreadsPerPSD
, 23, 31) |
3363 __gen_field(values
->PushConstantEnable
, 11, 11) |
3364 __gen_field(values
->RenderTargetFastClearEnable
, 8, 8) |
3365 __gen_field(values
->RenderTargetResolveEnable
, 6, 6) |
3366 __gen_field(values
->PositionXYOffsetSelect
, 3, 4) |
3367 __gen_field(values
->_32PixelDispatchEnable
, 2, 2) |
3368 __gen_field(values
->_16PixelDispatchEnable
, 1, 1) |
3369 __gen_field(values
->_8PixelDispatchEnable
, 0, 0) |
3373 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData0
, 16, 22) |
3374 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData1
, 8, 14) |
3375 __gen_field(values
->DispatchGRFStartRegisterForConstantSetupData2
, 0, 6) |
3379 __gen_offset(values
->KernelStartPointer1
, 6, 63) |
3386 __gen_offset(values
->KernelStartPointer2
, 6, 63) |
3390 dw
[11] = qw10
>> 32;
3394 #define GEN8_3DSTATE_PS_BLEND_length 0x00000002
3395 #define GEN8_3DSTATE_PS_BLEND_length_bias 0x00000002
3396 #define GEN8_3DSTATE_PS_BLEND_header \
3398 .CommandSubType = 3, \
3399 ._3DCommandOpcode = 0, \
3400 ._3DCommandSubOpcode = 77, \
3403 struct GEN8_3DSTATE_PS_BLEND
{
3404 uint32_t CommandType
;
3405 uint32_t CommandSubType
;
3406 uint32_t _3DCommandOpcode
;
3407 uint32_t _3DCommandSubOpcode
;
3408 uint32_t DwordLength
;
3409 uint32_t AlphaToCoverageEnable
;
3410 uint32_t HasWriteableRT
;
3411 uint32_t ColorBufferBlendEnable
;
3412 uint32_t SourceAlphaBlendFactor
;
3413 uint32_t DestinationAlphaBlendFactor
;
3414 uint32_t SourceBlendFactor
;
3415 uint32_t DestinationBlendFactor
;
3416 uint32_t AlphaTestEnable
;
3417 uint32_t IndependentAlphaBlendEnable
;
3421 GEN8_3DSTATE_PS_BLEND_pack(__gen_user_data
*data
, void * restrict dst
,
3422 const struct GEN8_3DSTATE_PS_BLEND
* restrict values
)
3424 uint32_t *dw
= (uint32_t * restrict
) dst
;
3427 __gen_field(values
->CommandType
, 29, 31) |
3428 __gen_field(values
->CommandSubType
, 27, 28) |
3429 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3430 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3431 __gen_field(values
->DwordLength
, 0, 7) |
3435 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
3436 __gen_field(values
->HasWriteableRT
, 30, 30) |
3437 __gen_field(values
->ColorBufferBlendEnable
, 29, 29) |
3438 __gen_field(values
->SourceAlphaBlendFactor
, 24, 28) |
3439 __gen_field(values
->DestinationAlphaBlendFactor
, 19, 23) |
3440 __gen_field(values
->SourceBlendFactor
, 14, 18) |
3441 __gen_field(values
->DestinationBlendFactor
, 9, 13) |
3442 __gen_field(values
->AlphaTestEnable
, 8, 8) |
3443 __gen_field(values
->IndependentAlphaBlendEnable
, 7, 7) |
3448 #define GEN8_3DSTATE_PS_EXTRA_length 0x00000002
3449 #define GEN8_3DSTATE_PS_EXTRA_length_bias 0x00000002
3450 #define GEN8_3DSTATE_PS_EXTRA_header \
3452 .CommandSubType = 3, \
3453 ._3DCommandOpcode = 0, \
3454 ._3DCommandSubOpcode = 79, \
3457 struct GEN8_3DSTATE_PS_EXTRA
{
3458 uint32_t CommandType
;
3459 uint32_t CommandSubType
;
3460 uint32_t _3DCommandOpcode
;
3461 uint32_t _3DCommandSubOpcode
;
3462 uint32_t DwordLength
;
3463 uint32_t PixelShaderValid
;
3464 uint32_t PixelShaderDoesnotwritetoRT
;
3465 uint32_t oMaskPresenttoRenderTarget
;
3466 uint32_t PixelShaderKillsPixel
;
3467 #define PSCDEPTH_OFF 0
3468 #define PSCDEPTH_ON 1
3469 #define PSCDEPTH_ON_GE 2
3470 #define PSCDEPTH_ON_LE 3
3471 uint32_t PixelShaderComputedDepthMode
;
3472 uint32_t ForceComputedDepth
;
3473 uint32_t PixelShaderUsesSourceDepth
;
3474 uint32_t PixelShaderUsesSourceW
;
3476 uint32_t AttributeEnable
;
3477 uint32_t PixelShaderDisablesAlphaToCoverage
;
3478 uint32_t PixelShaderIsPerSample
;
3479 uint32_t PixelShaderHasUAV
;
3480 uint32_t PixelShaderUsesInputCoverageMask
;
3484 GEN8_3DSTATE_PS_EXTRA_pack(__gen_user_data
*data
, void * restrict dst
,
3485 const struct GEN8_3DSTATE_PS_EXTRA
* restrict values
)
3487 uint32_t *dw
= (uint32_t * restrict
) dst
;
3490 __gen_field(values
->CommandType
, 29, 31) |
3491 __gen_field(values
->CommandSubType
, 27, 28) |
3492 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3493 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3494 __gen_field(values
->DwordLength
, 0, 7) |
3498 __gen_field(values
->PixelShaderValid
, 31, 31) |
3499 __gen_field(values
->PixelShaderDoesnotwritetoRT
, 30, 30) |
3500 __gen_field(values
->oMaskPresenttoRenderTarget
, 29, 29) |
3501 __gen_field(values
->PixelShaderKillsPixel
, 28, 28) |
3502 __gen_field(values
->PixelShaderComputedDepthMode
, 26, 27) |
3503 __gen_field(values
->ForceComputedDepth
, 25, 25) |
3504 __gen_field(values
->PixelShaderUsesSourceDepth
, 24, 24) |
3505 __gen_field(values
->PixelShaderUsesSourceW
, 23, 23) |
3506 __gen_field(values
->Removed
, 17, 17) |
3507 __gen_field(values
->AttributeEnable
, 8, 8) |
3508 __gen_field(values
->PixelShaderDisablesAlphaToCoverage
, 7, 7) |
3509 __gen_field(values
->PixelShaderIsPerSample
, 6, 6) |
3510 __gen_field(values
->PixelShaderHasUAV
, 2, 2) |
3511 __gen_field(values
->PixelShaderUsesInputCoverageMask
, 1, 1) |
3516 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length 0x00000002
3517 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_length_bias 0x00000002
3518 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_header\
3520 .CommandSubType = 3, \
3521 ._3DCommandOpcode = 1, \
3522 ._3DCommandSubOpcode = 20, \
3525 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
{
3526 uint32_t CommandType
;
3527 uint32_t CommandSubType
;
3528 uint32_t _3DCommandOpcode
;
3529 uint32_t _3DCommandSubOpcode
;
3530 uint32_t DwordLength
;
3531 uint32_t ConstantBufferOffset
;
3532 uint32_t ConstantBufferSize
;
3536 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3537 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_DS
* restrict values
)
3539 uint32_t *dw
= (uint32_t * restrict
) dst
;
3542 __gen_field(values
->CommandType
, 29, 31) |
3543 __gen_field(values
->CommandSubType
, 27, 28) |
3544 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3545 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3546 __gen_field(values
->DwordLength
, 0, 7) |
3550 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3551 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3556 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length 0x00000002
3557 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_length_bias 0x00000002
3558 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_header\
3560 .CommandSubType = 3, \
3561 ._3DCommandOpcode = 1, \
3562 ._3DCommandSubOpcode = 21, \
3565 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
{
3566 uint32_t CommandType
;
3567 uint32_t CommandSubType
;
3568 uint32_t _3DCommandOpcode
;
3569 uint32_t _3DCommandSubOpcode
;
3570 uint32_t DwordLength
;
3571 uint32_t ConstantBufferOffset
;
3572 uint32_t ConstantBufferSize
;
3576 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3577 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_GS
* 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
->ConstantBufferOffset
, 16, 20) |
3591 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3596 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length 0x00000002
3597 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_length_bias 0x00000002
3598 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_header\
3600 .CommandSubType = 3, \
3601 ._3DCommandOpcode = 1, \
3602 ._3DCommandSubOpcode = 19, \
3605 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
{
3606 uint32_t CommandType
;
3607 uint32_t CommandSubType
;
3608 uint32_t _3DCommandOpcode
;
3609 uint32_t _3DCommandSubOpcode
;
3610 uint32_t DwordLength
;
3611 uint32_t ConstantBufferOffset
;
3612 uint32_t ConstantBufferSize
;
3616 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS_pack(__gen_user_data
*data
, void * restrict dst
,
3617 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_HS
* restrict values
)
3619 uint32_t *dw
= (uint32_t * restrict
) dst
;
3622 __gen_field(values
->CommandType
, 29, 31) |
3623 __gen_field(values
->CommandSubType
, 27, 28) |
3624 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3625 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3626 __gen_field(values
->DwordLength
, 0, 7) |
3630 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3631 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3636 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length 0x00000002
3637 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_length_bias 0x00000002
3638 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_header\
3640 .CommandSubType = 3, \
3641 ._3DCommandOpcode = 1, \
3642 ._3DCommandSubOpcode = 22, \
3645 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
{
3646 uint32_t CommandType
;
3647 uint32_t CommandSubType
;
3648 uint32_t _3DCommandOpcode
;
3649 uint32_t _3DCommandSubOpcode
;
3650 uint32_t DwordLength
;
3651 uint32_t ConstantBufferOffset
;
3652 uint32_t ConstantBufferSize
;
3656 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS_pack(__gen_user_data
*data
, void * restrict dst
,
3657 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_PS
* restrict values
)
3659 uint32_t *dw
= (uint32_t * restrict
) dst
;
3662 __gen_field(values
->CommandType
, 29, 31) |
3663 __gen_field(values
->CommandSubType
, 27, 28) |
3664 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3665 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3666 __gen_field(values
->DwordLength
, 0, 7) |
3670 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3671 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3676 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length 0x00000002
3677 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_length_bias 0x00000002
3678 #define GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_header\
3680 .CommandSubType = 3, \
3681 ._3DCommandOpcode = 1, \
3682 ._3DCommandSubOpcode = 18, \
3685 struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
{
3686 uint32_t CommandType
;
3687 uint32_t CommandSubType
;
3688 uint32_t _3DCommandOpcode
;
3689 uint32_t _3DCommandSubOpcode
;
3690 uint32_t DwordLength
;
3691 uint32_t ConstantBufferOffset
;
3692 uint32_t ConstantBufferSize
;
3696 GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS_pack(__gen_user_data
*data
, void * restrict dst
,
3697 const struct GEN8_3DSTATE_PUSH_CONSTANT_ALLOC_VS
* restrict values
)
3699 uint32_t *dw
= (uint32_t * restrict
) dst
;
3702 __gen_field(values
->CommandType
, 29, 31) |
3703 __gen_field(values
->CommandSubType
, 27, 28) |
3704 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3705 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3706 __gen_field(values
->DwordLength
, 0, 7) |
3710 __gen_field(values
->ConstantBufferOffset
, 16, 20) |
3711 __gen_field(values
->ConstantBufferSize
, 0, 5) |
3716 #define GEN8_3DSTATE_RASTER_length 0x00000005
3717 #define GEN8_3DSTATE_RASTER_length_bias 0x00000002
3718 #define GEN8_3DSTATE_RASTER_header \
3720 .CommandSubType = 3, \
3721 ._3DCommandOpcode = 0, \
3722 ._3DCommandSubOpcode = 80, \
3725 struct GEN8_3DSTATE_RASTER
{
3726 uint32_t CommandType
;
3727 uint32_t CommandSubType
;
3728 uint32_t _3DCommandOpcode
;
3729 uint32_t _3DCommandSubOpcode
;
3730 uint32_t DwordLength
;
3736 #define CounterClockwise 1
3737 uint32_t FrontWinding
;
3738 #define FSC_NUMRASTSAMPLES_0 0
3739 #define FSC_NUMRASTSAMPLES_1 1
3740 #define FSC_NUMRASTSAMPLES_2 2
3741 #define FSC_NUMRASTSAMPLES_4 3
3742 #define FSC_NUMRASTSAMPLES_8 4
3743 #define FSC_NUMRASTSAMPLES_16 5
3744 uint32_t ForcedSampleCount
;
3745 #define CULLMODE_BOTH 0
3746 #define CULLMODE_NONE 1
3747 #define CULLMODE_FRONT 2
3748 #define CULLMODE_BACK 3
3752 uint32_t ForceMultisampling
;
3753 uint32_t SmoothPointEnable
;
3754 uint32_t DXMultisampleRasterizationEnable
;
3755 #define MSRASTMODE_OFF_PIXEL 0
3756 #define MSRASTMODE_OFF_PATTERN 1
3757 #define MSRASTMODE_ON_PIXEL 2
3758 #define MSRASTMODE_ON_PATTERN 3
3759 uint32_t DXMultisampleRasterizationMode
;
3760 uint32_t GlobalDepthOffsetEnableSolid
;
3761 uint32_t GlobalDepthOffsetEnableWireframe
;
3762 uint32_t GlobalDepthOffsetEnablePoint
;
3763 #define RASTER_SOLID 0
3764 #define RASTER_WIREFRAME 1
3765 #define RASTER_POINT 2
3766 uint32_t FrontFaceFillMode
;
3767 #define RASTER_SOLID 0
3768 #define RASTER_WIREFRAME 1
3769 #define RASTER_POINT 2
3770 uint32_t BackFaceFillMode
;
3771 uint32_t AntialiasingEnable
;
3772 uint32_t ScissorRectangleEnable
;
3773 uint32_t ViewportZClipTestEnable
;
3774 float GlobalDepthOffsetConstant
;
3775 float GlobalDepthOffsetScale
;
3776 float GlobalDepthOffsetClamp
;
3780 GEN8_3DSTATE_RASTER_pack(__gen_user_data
*data
, void * restrict dst
,
3781 const struct GEN8_3DSTATE_RASTER
* restrict values
)
3783 uint32_t *dw
= (uint32_t * restrict
) dst
;
3786 __gen_field(values
->CommandType
, 29, 31) |
3787 __gen_field(values
->CommandSubType
, 27, 28) |
3788 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3789 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3790 __gen_field(values
->DwordLength
, 0, 7) |
3794 __gen_field(values
->APIMode
, 22, 23) |
3795 __gen_field(values
->FrontWinding
, 21, 21) |
3796 __gen_field(values
->ForcedSampleCount
, 18, 20) |
3797 __gen_field(values
->CullMode
, 16, 17) |
3798 __gen_field(values
->ForceMultisampling
, 14, 14) |
3799 __gen_field(values
->SmoothPointEnable
, 13, 13) |
3800 __gen_field(values
->DXMultisampleRasterizationEnable
, 12, 12) |
3801 __gen_field(values
->DXMultisampleRasterizationMode
, 10, 11) |
3802 __gen_field(values
->GlobalDepthOffsetEnableSolid
, 9, 9) |
3803 __gen_field(values
->GlobalDepthOffsetEnableWireframe
, 8, 8) |
3804 __gen_field(values
->GlobalDepthOffsetEnablePoint
, 7, 7) |
3805 __gen_field(values
->FrontFaceFillMode
, 5, 6) |
3806 __gen_field(values
->BackFaceFillMode
, 3, 4) |
3807 __gen_field(values
->AntialiasingEnable
, 2, 2) |
3808 __gen_field(values
->ScissorRectangleEnable
, 1, 1) |
3809 __gen_field(values
->ViewportZClipTestEnable
, 0, 0) |
3813 __gen_float(values
->GlobalDepthOffsetConstant
) |
3817 __gen_float(values
->GlobalDepthOffsetScale
) |
3821 __gen_float(values
->GlobalDepthOffsetClamp
) |
3826 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_length_bias 0x00000002
3827 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_header\
3829 .CommandSubType = 3, \
3830 ._3DCommandOpcode = 1, \
3831 ._3DCommandSubOpcode = 2
3833 struct GEN8_PALETTE_ENTRY
{
3841 GEN8_PALETTE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
3842 const struct GEN8_PALETTE_ENTRY
* restrict values
)
3844 uint32_t *dw
= (uint32_t * restrict
) dst
;
3847 __gen_field(values
->Alpha
, 24, 31) |
3848 __gen_field(values
->Red
, 16, 23) |
3849 __gen_field(values
->Green
, 8, 15) |
3850 __gen_field(values
->Blue
, 0, 7) |
3855 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
{
3856 uint32_t CommandType
;
3857 uint32_t CommandSubType
;
3858 uint32_t _3DCommandOpcode
;
3859 uint32_t _3DCommandSubOpcode
;
3860 uint32_t DwordLength
;
3861 /* variable length fields follow */
3865 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0_pack(__gen_user_data
*data
, void * restrict dst
,
3866 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD0
* restrict values
)
3868 uint32_t *dw
= (uint32_t * restrict
) dst
;
3871 __gen_field(values
->CommandType
, 29, 31) |
3872 __gen_field(values
->CommandSubType
, 27, 28) |
3873 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3874 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3875 __gen_field(values
->DwordLength
, 0, 7) |
3878 /* variable length fields follow */
3881 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_length_bias 0x00000002
3882 #define GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_header\
3884 .CommandSubType = 3, \
3885 ._3DCommandOpcode = 1, \
3886 ._3DCommandSubOpcode = 12
3888 struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
{
3889 uint32_t CommandType
;
3890 uint32_t CommandSubType
;
3891 uint32_t _3DCommandOpcode
;
3892 uint32_t _3DCommandSubOpcode
;
3893 uint32_t DwordLength
;
3894 /* variable length fields follow */
3898 GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1_pack(__gen_user_data
*data
, void * restrict dst
,
3899 const struct GEN8_3DSTATE_SAMPLER_PALETTE_LOAD1
* restrict values
)
3901 uint32_t *dw
= (uint32_t * restrict
) dst
;
3904 __gen_field(values
->CommandType
, 29, 31) |
3905 __gen_field(values
->CommandSubType
, 27, 28) |
3906 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3907 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3908 __gen_field(values
->DwordLength
, 0, 7) |
3911 /* variable length fields follow */
3914 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length 0x00000002
3915 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_length_bias 0x00000002
3916 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_header\
3918 .CommandSubType = 3, \
3919 ._3DCommandOpcode = 0, \
3920 ._3DCommandSubOpcode = 45, \
3923 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
{
3924 uint32_t CommandType
;
3925 uint32_t CommandSubType
;
3926 uint32_t _3DCommandOpcode
;
3927 uint32_t _3DCommandSubOpcode
;
3928 uint32_t DwordLength
;
3929 uint32_t PointertoDSSamplerState
;
3933 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS_pack(__gen_user_data
*data
, void * restrict dst
,
3934 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_DS
* restrict values
)
3936 uint32_t *dw
= (uint32_t * restrict
) dst
;
3939 __gen_field(values
->CommandType
, 29, 31) |
3940 __gen_field(values
->CommandSubType
, 27, 28) |
3941 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3942 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3943 __gen_field(values
->DwordLength
, 0, 7) |
3947 __gen_offset(values
->PointertoDSSamplerState
, 5, 31) |
3952 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length 0x00000002
3953 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_length_bias 0x00000002
3954 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_header\
3956 .CommandSubType = 3, \
3957 ._3DCommandOpcode = 0, \
3958 ._3DCommandSubOpcode = 46, \
3961 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
{
3962 uint32_t CommandType
;
3963 uint32_t CommandSubType
;
3964 uint32_t _3DCommandOpcode
;
3965 uint32_t _3DCommandSubOpcode
;
3966 uint32_t DwordLength
;
3967 uint32_t PointertoGSSamplerState
;
3971 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS_pack(__gen_user_data
*data
, void * restrict dst
,
3972 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_GS
* restrict values
)
3974 uint32_t *dw
= (uint32_t * restrict
) dst
;
3977 __gen_field(values
->CommandType
, 29, 31) |
3978 __gen_field(values
->CommandSubType
, 27, 28) |
3979 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
3980 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
3981 __gen_field(values
->DwordLength
, 0, 7) |
3985 __gen_offset(values
->PointertoGSSamplerState
, 5, 31) |
3990 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length 0x00000002
3991 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_length_bias 0x00000002
3992 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_header\
3994 .CommandSubType = 3, \
3995 ._3DCommandOpcode = 0, \
3996 ._3DCommandSubOpcode = 44, \
3999 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
{
4000 uint32_t CommandType
;
4001 uint32_t CommandSubType
;
4002 uint32_t _3DCommandOpcode
;
4003 uint32_t _3DCommandSubOpcode
;
4004 uint32_t DwordLength
;
4005 uint32_t PointertoHSSamplerState
;
4009 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS_pack(__gen_user_data
*data
, void * restrict dst
,
4010 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_HS
* restrict values
)
4012 uint32_t *dw
= (uint32_t * restrict
) dst
;
4015 __gen_field(values
->CommandType
, 29, 31) |
4016 __gen_field(values
->CommandSubType
, 27, 28) |
4017 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4018 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4019 __gen_field(values
->DwordLength
, 0, 7) |
4023 __gen_offset(values
->PointertoHSSamplerState
, 5, 31) |
4028 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length 0x00000002
4029 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_length_bias 0x00000002
4030 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_header\
4032 .CommandSubType = 3, \
4033 ._3DCommandOpcode = 0, \
4034 ._3DCommandSubOpcode = 47, \
4037 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
{
4038 uint32_t CommandType
;
4039 uint32_t CommandSubType
;
4040 uint32_t _3DCommandOpcode
;
4041 uint32_t _3DCommandSubOpcode
;
4042 uint32_t DwordLength
;
4043 uint32_t PointertoPSSamplerState
;
4047 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS_pack(__gen_user_data
*data
, void * restrict dst
,
4048 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_PS
* restrict values
)
4050 uint32_t *dw
= (uint32_t * restrict
) dst
;
4053 __gen_field(values
->CommandType
, 29, 31) |
4054 __gen_field(values
->CommandSubType
, 27, 28) |
4055 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4056 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4057 __gen_field(values
->DwordLength
, 0, 7) |
4061 __gen_offset(values
->PointertoPSSamplerState
, 5, 31) |
4066 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length 0x00000002
4067 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_length_bias 0x00000002
4068 #define GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_header\
4070 .CommandSubType = 3, \
4071 ._3DCommandOpcode = 0, \
4072 ._3DCommandSubOpcode = 43, \
4075 struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
{
4076 uint32_t CommandType
;
4077 uint32_t CommandSubType
;
4078 uint32_t _3DCommandOpcode
;
4079 uint32_t _3DCommandSubOpcode
;
4080 uint32_t DwordLength
;
4081 uint32_t PointertoVSSamplerState
;
4085 GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS_pack(__gen_user_data
*data
, void * restrict dst
,
4086 const struct GEN8_3DSTATE_SAMPLER_STATE_POINTERS_VS
* restrict values
)
4088 uint32_t *dw
= (uint32_t * restrict
) dst
;
4091 __gen_field(values
->CommandType
, 29, 31) |
4092 __gen_field(values
->CommandSubType
, 27, 28) |
4093 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4094 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4095 __gen_field(values
->DwordLength
, 0, 7) |
4099 __gen_offset(values
->PointertoVSSamplerState
, 5, 31) |
4104 #define GEN8_3DSTATE_SAMPLE_MASK_length 0x00000002
4105 #define GEN8_3DSTATE_SAMPLE_MASK_length_bias 0x00000002
4106 #define GEN8_3DSTATE_SAMPLE_MASK_header \
4108 .CommandSubType = 3, \
4109 ._3DCommandOpcode = 0, \
4110 ._3DCommandSubOpcode = 24, \
4113 struct GEN8_3DSTATE_SAMPLE_MASK
{
4114 uint32_t CommandType
;
4115 uint32_t CommandSubType
;
4116 uint32_t _3DCommandOpcode
;
4117 uint32_t _3DCommandSubOpcode
;
4118 uint32_t DwordLength
;
4119 uint32_t SampleMask
;
4123 GEN8_3DSTATE_SAMPLE_MASK_pack(__gen_user_data
*data
, void * restrict dst
,
4124 const struct GEN8_3DSTATE_SAMPLE_MASK
* restrict values
)
4126 uint32_t *dw
= (uint32_t * restrict
) dst
;
4129 __gen_field(values
->CommandType
, 29, 31) |
4130 __gen_field(values
->CommandSubType
, 27, 28) |
4131 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4132 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4133 __gen_field(values
->DwordLength
, 0, 7) |
4137 __gen_field(values
->SampleMask
, 0, 15) |
4142 #define GEN8_3DSTATE_SAMPLE_PATTERN_length 0x00000009
4143 #define GEN8_3DSTATE_SAMPLE_PATTERN_length_bias 0x00000002
4144 #define GEN8_3DSTATE_SAMPLE_PATTERN_header \
4146 .CommandSubType = 3, \
4147 ._3DCommandOpcode = 1, \
4148 ._3DCommandSubOpcode = 28, \
4151 struct GEN8_3DSTATE_SAMPLE_PATTERN
{
4152 uint32_t CommandType
;
4153 uint32_t CommandSubType
;
4154 uint32_t _3DCommandOpcode
;
4155 uint32_t _3DCommandSubOpcode
;
4156 uint32_t DwordLength
;
4157 float _8xSample7XOffset
;
4158 float _8xSample7YOffset
;
4159 float _8xSample6XOffset
;
4160 float _8xSample6YOffset
;
4161 float _8xSample5XOffset
;
4162 float _8xSample5YOffset
;
4163 float _8xSample4XOffset
;
4164 float _8xSample4YOffset
;
4165 float _8xSample3XOffset
;
4166 float _8xSample3YOffset
;
4167 float _8xSample2XOffset
;
4168 float _8xSample2YOffset
;
4169 float _8xSample1XOffset
;
4170 float _8xSample1YOffset
;
4171 float _8xSample0XOffset
;
4172 float _8xSample0YOffset
;
4173 float _4xSample3XOffset
;
4174 float _4xSample3YOffset
;
4175 float _4xSample2XOffset
;
4176 float _4xSample2YOffset
;
4177 float _4xSample1XOffset
;
4178 float _4xSample1YOffset
;
4179 float _4xSample0XOffset
;
4180 float _4xSample0YOffset
;
4181 float _1xSample0XOffset
;
4182 float _1xSample0YOffset
;
4183 float _2xSample1XOffset
;
4184 float _2xSample1YOffset
;
4185 float _2xSample0XOffset
;
4186 float _2xSample0YOffset
;
4190 GEN8_3DSTATE_SAMPLE_PATTERN_pack(__gen_user_data
*data
, void * restrict dst
,
4191 const struct GEN8_3DSTATE_SAMPLE_PATTERN
* restrict values
)
4193 uint32_t *dw
= (uint32_t * restrict
) dst
;
4196 __gen_field(values
->CommandType
, 29, 31) |
4197 __gen_field(values
->CommandSubType
, 27, 28) |
4198 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4199 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4200 __gen_field(values
->DwordLength
, 0, 7) |
4207 __gen_field(values
->_8xSample7XOffset
* (1 << 4), 28, 31) |
4208 __gen_field(values
->_8xSample7YOffset
* (1 << 4), 24, 27) |
4209 __gen_field(values
->_8xSample6XOffset
* (1 << 4), 20, 23) |
4210 __gen_field(values
->_8xSample6YOffset
* (1 << 4), 16, 19) |
4211 __gen_field(values
->_8xSample5XOffset
* (1 << 4), 12, 15) |
4212 __gen_field(values
->_8xSample5YOffset
* (1 << 4), 8, 11) |
4213 __gen_field(values
->_8xSample4XOffset
* (1 << 4), 4, 7) |
4214 __gen_field(values
->_8xSample4YOffset
* (1 << 4), 0, 3) |
4218 __gen_field(values
->_8xSample3XOffset
* (1 << 4), 28, 31) |
4219 __gen_field(values
->_8xSample3YOffset
* (1 << 4), 24, 27) |
4220 __gen_field(values
->_8xSample2XOffset
* (1 << 4), 20, 23) |
4221 __gen_field(values
->_8xSample2YOffset
* (1 << 4), 16, 19) |
4222 __gen_field(values
->_8xSample1XOffset
* (1 << 4), 12, 15) |
4223 __gen_field(values
->_8xSample1YOffset
* (1 << 4), 8, 11) |
4224 __gen_field(values
->_8xSample0XOffset
* (1 << 4), 4, 7) |
4225 __gen_field(values
->_8xSample0YOffset
* (1 << 4), 0, 3) |
4229 __gen_field(values
->_4xSample3XOffset
* (1 << 4), 28, 31) |
4230 __gen_field(values
->_4xSample3YOffset
* (1 << 4), 24, 27) |
4231 __gen_field(values
->_4xSample2XOffset
* (1 << 4), 20, 23) |
4232 __gen_field(values
->_4xSample2YOffset
* (1 << 4), 16, 19) |
4233 __gen_field(values
->_4xSample1XOffset
* (1 << 4), 12, 15) |
4234 __gen_field(values
->_4xSample1YOffset
* (1 << 4), 8, 11) |
4235 __gen_field(values
->_4xSample0XOffset
* (1 << 4), 4, 7) |
4236 __gen_field(values
->_4xSample0YOffset
* (1 << 4), 0, 3) |
4240 __gen_field(values
->_1xSample0XOffset
* (1 << 4), 20, 23) |
4241 __gen_field(values
->_1xSample0YOffset
* (1 << 4), 16, 19) |
4242 __gen_field(values
->_2xSample1XOffset
* (1 << 4), 12, 15) |
4243 __gen_field(values
->_2xSample1YOffset
* (1 << 4), 8, 11) |
4244 __gen_field(values
->_2xSample0XOffset
* (1 << 4), 4, 7) |
4245 __gen_field(values
->_2xSample0YOffset
* (1 << 4), 0, 3) |
4250 #define GEN8_3DSTATE_SBE_length 0x00000004
4251 #define GEN8_3DSTATE_SBE_length_bias 0x00000002
4252 #define GEN8_3DSTATE_SBE_header \
4254 .CommandSubType = 3, \
4255 ._3DCommandOpcode = 0, \
4256 ._3DCommandSubOpcode = 31, \
4259 struct GEN8_3DSTATE_SBE
{
4260 uint32_t CommandType
;
4261 uint32_t CommandSubType
;
4262 uint32_t _3DCommandOpcode
;
4263 uint32_t _3DCommandSubOpcode
;
4264 uint32_t DwordLength
;
4265 uint32_t ForceVertexURBEntryReadLength
;
4266 uint32_t ForceVertexURBEntryReadOffset
;
4267 uint32_t NumberofSFOutputAttributes
;
4268 uint32_t AttributeSwizzleEnable
;
4271 uint32_t PointSpriteTextureCoordinateOrigin
;
4272 uint32_t PrimitiveIDOverrideComponentW
;
4273 uint32_t PrimitiveIDOverrideComponentZ
;
4274 uint32_t PrimitiveIDOverrideComponentY
;
4275 uint32_t PrimitiveIDOverrideComponentX
;
4276 uint32_t VertexURBEntryReadLength
;
4277 uint32_t VertexURBEntryReadOffset
;
4278 uint32_t PrimitiveIDOverrideAttributeSelect
;
4279 uint32_t PointSpriteTextureCoordinateEnable
;
4280 uint32_t ConstantInterpolationEnable
;
4284 GEN8_3DSTATE_SBE_pack(__gen_user_data
*data
, void * restrict dst
,
4285 const struct GEN8_3DSTATE_SBE
* restrict values
)
4287 uint32_t *dw
= (uint32_t * restrict
) dst
;
4290 __gen_field(values
->CommandType
, 29, 31) |
4291 __gen_field(values
->CommandSubType
, 27, 28) |
4292 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4293 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4294 __gen_field(values
->DwordLength
, 0, 7) |
4298 __gen_field(values
->ForceVertexURBEntryReadLength
, 29, 29) |
4299 __gen_field(values
->ForceVertexURBEntryReadOffset
, 28, 28) |
4300 __gen_field(values
->NumberofSFOutputAttributes
, 22, 27) |
4301 __gen_field(values
->AttributeSwizzleEnable
, 21, 21) |
4302 __gen_field(values
->PointSpriteTextureCoordinateOrigin
, 20, 20) |
4303 __gen_field(values
->PrimitiveIDOverrideComponentW
, 19, 19) |
4304 __gen_field(values
->PrimitiveIDOverrideComponentZ
, 18, 18) |
4305 __gen_field(values
->PrimitiveIDOverrideComponentY
, 17, 17) |
4306 __gen_field(values
->PrimitiveIDOverrideComponentX
, 16, 16) |
4307 __gen_field(values
->VertexURBEntryReadLength
, 11, 15) |
4308 __gen_field(values
->VertexURBEntryReadOffset
, 5, 10) |
4309 __gen_field(values
->PrimitiveIDOverrideAttributeSelect
, 0, 4) |
4313 __gen_field(values
->PointSpriteTextureCoordinateEnable
, 0, 31) |
4317 __gen_field(values
->ConstantInterpolationEnable
, 0, 31) |
4322 #define GEN8_3DSTATE_SBE_SWIZ_length 0x0000000b
4323 #define GEN8_3DSTATE_SBE_SWIZ_length_bias 0x00000002
4324 #define GEN8_3DSTATE_SBE_SWIZ_header \
4326 .CommandSubType = 3, \
4327 ._3DCommandOpcode = 0, \
4328 ._3DCommandSubOpcode = 81, \
4331 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
{
4332 uint32_t ComponentOverrideW
;
4333 uint32_t ComponentOverrideZ
;
4334 uint32_t ComponentOverrideY
;
4335 uint32_t ComponentOverrideX
;
4336 uint32_t SwizzleControlMode
;
4337 #define CONST_0000 0
4338 #define CONST_0001_FLOAT 1
4339 #define CONST_1111_FLOAT 2
4341 uint32_t ConstantSource
;
4343 #define INPUTATTR_FACING 1
4344 #define INPUTATTR_W 2
4345 #define INPUTATTR_FACING_W 3
4346 uint32_t SwizzleSelect
;
4347 uint32_t SourceAttribute
;
4351 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(__gen_user_data
*data
, void * restrict dst
,
4352 const struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL
* restrict values
)
4354 uint32_t *dw
= (uint32_t * restrict
) dst
;
4357 __gen_field(values
->ComponentOverrideW
, 15, 15) |
4358 __gen_field(values
->ComponentOverrideZ
, 14, 14) |
4359 __gen_field(values
->ComponentOverrideY
, 13, 13) |
4360 __gen_field(values
->ComponentOverrideX
, 12, 12) |
4361 __gen_field(values
->SwizzleControlMode
, 11, 11) |
4362 __gen_field(values
->ConstantSource
, 9, 10) |
4363 __gen_field(values
->SwizzleSelect
, 6, 7) |
4364 __gen_field(values
->SourceAttribute
, 0, 4) |
4369 struct GEN8_3DSTATE_SBE_SWIZ
{
4370 uint32_t CommandType
;
4371 uint32_t CommandSubType
;
4372 uint32_t _3DCommandOpcode
;
4373 uint32_t _3DCommandSubOpcode
;
4374 uint32_t DwordLength
;
4375 struct GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL Attribute
;
4376 uint32_t Attribute15WrapShortestEnables
;
4377 uint32_t Attribute14WrapShortestEnables
;
4378 uint32_t Attribute13WrapShortestEnables
;
4379 uint32_t Attribute12WrapShortestEnables
;
4380 uint32_t Attribute11WrapShortestEnables
;
4381 uint32_t Attribute10WrapShortestEnables
;
4382 uint32_t Attribute09WrapShortestEnables
;
4383 uint32_t Attribute08WrapShortestEnables
;
4384 uint32_t Attribute07WrapShortestEnables
;
4385 uint32_t Attribute06WrapShortestEnables
;
4386 uint32_t Attribute05WrapShortestEnables
;
4387 uint32_t Attribute04WrapShortestEnables
;
4388 uint32_t Attribute03WrapShortestEnables
;
4389 uint32_t Attribute02WrapShortestEnables
;
4390 uint32_t Attribute01WrapShortestEnables
;
4391 uint32_t Attribute00WrapShortestEnables
;
4395 GEN8_3DSTATE_SBE_SWIZ_pack(__gen_user_data
*data
, void * restrict dst
,
4396 const struct GEN8_3DSTATE_SBE_SWIZ
* restrict values
)
4398 uint32_t *dw
= (uint32_t * restrict
) dst
;
4401 __gen_field(values
->CommandType
, 29, 31) |
4402 __gen_field(values
->CommandSubType
, 27, 28) |
4403 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4404 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4405 __gen_field(values
->DwordLength
, 0, 7) |
4408 uint32_t dw_Attribute
;
4409 GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_pack(data
, &dw_Attribute
, &values
->Attribute
);
4411 __gen_field(dw_Attribute
, 0, 15) |
4415 __gen_field(values
->Attribute15WrapShortestEnables
, 60, 63) |
4416 __gen_field(values
->Attribute14WrapShortestEnables
, 56, 59) |
4417 __gen_field(values
->Attribute13WrapShortestEnables
, 52, 55) |
4418 __gen_field(values
->Attribute12WrapShortestEnables
, 48, 51) |
4419 __gen_field(values
->Attribute11WrapShortestEnables
, 44, 47) |
4420 __gen_field(values
->Attribute10WrapShortestEnables
, 40, 43) |
4421 __gen_field(values
->Attribute09WrapShortestEnables
, 36, 39) |
4422 __gen_field(values
->Attribute08WrapShortestEnables
, 32, 35) |
4423 __gen_field(values
->Attribute07WrapShortestEnables
, 28, 31) |
4424 __gen_field(values
->Attribute06WrapShortestEnables
, 24, 27) |
4425 __gen_field(values
->Attribute05WrapShortestEnables
, 20, 23) |
4426 __gen_field(values
->Attribute04WrapShortestEnables
, 16, 19) |
4427 __gen_field(values
->Attribute03WrapShortestEnables
, 12, 15) |
4428 __gen_field(values
->Attribute02WrapShortestEnables
, 8, 11) |
4429 __gen_field(values
->Attribute01WrapShortestEnables
, 4, 7) |
4430 __gen_field(values
->Attribute00WrapShortestEnables
, 0, 3) |
4438 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length 0x00000002
4439 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_length_bias 0x00000002
4440 #define GEN8_3DSTATE_SCISSOR_STATE_POINTERS_header\
4442 .CommandSubType = 3, \
4443 ._3DCommandOpcode = 0, \
4444 ._3DCommandSubOpcode = 15, \
4447 struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
{
4448 uint32_t CommandType
;
4449 uint32_t CommandSubType
;
4450 uint32_t _3DCommandOpcode
;
4451 uint32_t _3DCommandSubOpcode
;
4452 uint32_t DwordLength
;
4453 uint32_t ScissorRectPointer
;
4457 GEN8_3DSTATE_SCISSOR_STATE_POINTERS_pack(__gen_user_data
*data
, void * restrict dst
,
4458 const struct GEN8_3DSTATE_SCISSOR_STATE_POINTERS
* restrict values
)
4460 uint32_t *dw
= (uint32_t * restrict
) dst
;
4463 __gen_field(values
->CommandType
, 29, 31) |
4464 __gen_field(values
->CommandSubType
, 27, 28) |
4465 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4466 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4467 __gen_field(values
->DwordLength
, 0, 7) |
4471 __gen_offset(values
->ScissorRectPointer
, 5, 31) |
4476 #define GEN8_3DSTATE_SF_length 0x00000004
4477 #define GEN8_3DSTATE_SF_length_bias 0x00000002
4478 #define GEN8_3DSTATE_SF_header \
4480 .CommandSubType = 3, \
4481 ._3DCommandOpcode = 0, \
4482 ._3DCommandSubOpcode = 19, \
4485 struct GEN8_3DSTATE_SF
{
4486 uint32_t CommandType
;
4487 uint32_t CommandSubType
;
4488 uint32_t _3DCommandOpcode
;
4489 uint32_t _3DCommandSubOpcode
;
4490 uint32_t DwordLength
;
4491 uint32_t LegacyGlobalDepthBiasEnable
;
4492 uint32_t StatisticsEnable
;
4493 uint32_t ViewportTransformEnable
;
4499 uint32_t LineEndCapAntialiasingRegionWidth
;
4500 uint32_t LastPixelEnable
;
4501 uint32_t TriangleStripListProvokingVertexSelect
;
4502 uint32_t LineStripListProvokingVertexSelect
;
4503 uint32_t TriangleFanProvokingVertexSelect
;
4504 #define AALINEDISTANCE_TRUE 1
4505 uint32_t AALineDistanceMode
;
4506 uint32_t SmoothPointEnable
;
4507 uint32_t VertexSubPixelPrecisionSelect
;
4510 uint32_t PointWidthSource
;
4515 GEN8_3DSTATE_SF_pack(__gen_user_data
*data
, void * restrict dst
,
4516 const struct GEN8_3DSTATE_SF
* restrict values
)
4518 uint32_t *dw
= (uint32_t * restrict
) dst
;
4521 __gen_field(values
->CommandType
, 29, 31) |
4522 __gen_field(values
->CommandSubType
, 27, 28) |
4523 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4524 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4525 __gen_field(values
->DwordLength
, 0, 7) |
4529 __gen_field(values
->LegacyGlobalDepthBiasEnable
, 11, 11) |
4530 __gen_field(values
->StatisticsEnable
, 10, 10) |
4531 __gen_field(values
->ViewportTransformEnable
, 1, 1) |
4535 __gen_field(values
->LineWidth
* (1 << 7), 18, 27) |
4536 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 16, 17) |
4540 __gen_field(values
->LastPixelEnable
, 31, 31) |
4541 __gen_field(values
->TriangleStripListProvokingVertexSelect
, 29, 30) |
4542 __gen_field(values
->LineStripListProvokingVertexSelect
, 27, 28) |
4543 __gen_field(values
->TriangleFanProvokingVertexSelect
, 25, 26) |
4544 __gen_field(values
->AALineDistanceMode
, 14, 14) |
4545 __gen_field(values
->SmoothPointEnable
, 13, 13) |
4546 __gen_field(values
->VertexSubPixelPrecisionSelect
, 12, 12) |
4547 __gen_field(values
->PointWidthSource
, 11, 11) |
4548 __gen_field(values
->PointWidth
* (1 << 3), 0, 10) |
4553 #define GEN8_3DSTATE_SO_BUFFER_length 0x00000008
4554 #define GEN8_3DSTATE_SO_BUFFER_length_bias 0x00000002
4555 #define GEN8_3DSTATE_SO_BUFFER_header \
4557 .CommandSubType = 3, \
4558 ._3DCommandOpcode = 1, \
4559 ._3DCommandSubOpcode = 24, \
4562 struct GEN8_3DSTATE_SO_BUFFER
{
4563 uint32_t CommandType
;
4564 uint32_t CommandSubType
;
4565 uint32_t _3DCommandOpcode
;
4566 uint32_t _3DCommandSubOpcode
;
4567 uint32_t DwordLength
;
4568 uint32_t SOBufferEnable
;
4569 uint32_t SOBufferIndex
;
4570 struct GEN8_MEMORY_OBJECT_CONTROL_STATE SOBufferObjectControlState
;
4571 uint32_t StreamOffsetWriteEnable
;
4572 uint32_t StreamOutputBufferOffsetAddressEnable
;
4573 __gen_address_type SurfaceBaseAddress
;
4574 uint32_t SurfaceSize
;
4575 __gen_address_type StreamOutputBufferOffsetAddress
;
4576 uint32_t StreamOffset
;
4580 GEN8_3DSTATE_SO_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4581 const struct GEN8_3DSTATE_SO_BUFFER
* restrict values
)
4583 uint32_t *dw
= (uint32_t * restrict
) dst
;
4586 __gen_field(values
->CommandType
, 29, 31) |
4587 __gen_field(values
->CommandSubType
, 27, 28) |
4588 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4589 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4590 __gen_field(values
->DwordLength
, 0, 7) |
4593 uint32_t dw_SOBufferObjectControlState
;
4594 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_SOBufferObjectControlState
, &values
->SOBufferObjectControlState
);
4596 __gen_field(values
->SOBufferEnable
, 31, 31) |
4597 __gen_field(values
->SOBufferIndex
, 29, 30) |
4598 __gen_field(dw_SOBufferObjectControlState
, 22, 28) |
4599 __gen_field(values
->StreamOffsetWriteEnable
, 21, 21) |
4600 __gen_field(values
->StreamOutputBufferOffsetAddressEnable
, 20, 20) |
4607 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4613 __gen_field(values
->SurfaceSize
, 0, 29) |
4620 __gen_combine_address(data
, &dw
[5], values
->StreamOutputBufferOffsetAddress
, dw5
);
4626 __gen_field(values
->StreamOffset
, 0, 31) |
4631 #define GEN8_3DSTATE_SO_DECL_LIST_length_bias 0x00000002
4632 #define GEN8_3DSTATE_SO_DECL_LIST_header \
4634 .CommandSubType = 3, \
4635 ._3DCommandOpcode = 1, \
4636 ._3DCommandSubOpcode = 23
4638 struct GEN8_SO_DECL
{
4639 uint32_t OutputBufferSlot
;
4641 uint32_t RegisterIndex
;
4642 uint32_t ComponentMask
;
4646 GEN8_SO_DECL_pack(__gen_user_data
*data
, void * restrict dst
,
4647 const struct GEN8_SO_DECL
* restrict values
)
4649 uint32_t *dw
= (uint32_t * restrict
) dst
;
4652 __gen_field(values
->OutputBufferSlot
, 12, 13) |
4653 __gen_field(values
->HoleFlag
, 11, 11) |
4654 __gen_field(values
->RegisterIndex
, 4, 9) |
4655 __gen_field(values
->ComponentMask
, 0, 3) |
4660 struct GEN8_SO_DECL_ENTRY
{
4661 struct GEN8_SO_DECL Stream3Decl
;
4662 struct GEN8_SO_DECL Stream2Decl
;
4663 struct GEN8_SO_DECL Stream1Decl
;
4664 struct GEN8_SO_DECL Stream0Decl
;
4668 GEN8_SO_DECL_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
4669 const struct GEN8_SO_DECL_ENTRY
* restrict values
)
4671 uint32_t *dw
= (uint32_t * restrict
) dst
;
4673 uint32_t dw_Stream3Decl
;
4674 GEN8_SO_DECL_pack(data
, &dw_Stream3Decl
, &values
->Stream3Decl
);
4675 uint32_t dw_Stream2Decl
;
4676 GEN8_SO_DECL_pack(data
, &dw_Stream2Decl
, &values
->Stream2Decl
);
4677 uint32_t dw_Stream1Decl
;
4678 GEN8_SO_DECL_pack(data
, &dw_Stream1Decl
, &values
->Stream1Decl
);
4679 uint32_t dw_Stream0Decl
;
4680 GEN8_SO_DECL_pack(data
, &dw_Stream0Decl
, &values
->Stream0Decl
);
4682 __gen_field(dw_Stream3Decl
, 48, 63) |
4683 __gen_field(dw_Stream2Decl
, 32, 47) |
4684 __gen_field(dw_Stream1Decl
, 16, 31) |
4685 __gen_field(dw_Stream0Decl
, 0, 15) |
4693 struct GEN8_3DSTATE_SO_DECL_LIST
{
4694 uint32_t CommandType
;
4695 uint32_t CommandSubType
;
4696 uint32_t _3DCommandOpcode
;
4697 uint32_t _3DCommandSubOpcode
;
4698 uint32_t DwordLength
;
4699 uint32_t StreamtoBufferSelects3
;
4700 uint32_t StreamtoBufferSelects2
;
4701 uint32_t StreamtoBufferSelects1
;
4702 uint32_t StreamtoBufferSelects0
;
4703 uint32_t NumEntries3
;
4704 uint32_t NumEntries2
;
4705 uint32_t NumEntries1
;
4706 uint32_t NumEntries0
;
4707 /* variable length fields follow */
4711 GEN8_3DSTATE_SO_DECL_LIST_pack(__gen_user_data
*data
, void * restrict dst
,
4712 const struct GEN8_3DSTATE_SO_DECL_LIST
* restrict values
)
4714 uint32_t *dw
= (uint32_t * restrict
) dst
;
4717 __gen_field(values
->CommandType
, 29, 31) |
4718 __gen_field(values
->CommandSubType
, 27, 28) |
4719 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4720 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4721 __gen_field(values
->DwordLength
, 0, 8) |
4725 __gen_field(values
->StreamtoBufferSelects3
, 12, 15) |
4726 __gen_field(values
->StreamtoBufferSelects2
, 8, 11) |
4727 __gen_field(values
->StreamtoBufferSelects1
, 4, 7) |
4728 __gen_field(values
->StreamtoBufferSelects0
, 0, 3) |
4732 __gen_field(values
->NumEntries3
, 24, 31) |
4733 __gen_field(values
->NumEntries2
, 16, 23) |
4734 __gen_field(values
->NumEntries1
, 8, 15) |
4735 __gen_field(values
->NumEntries0
, 0, 7) |
4738 /* variable length fields follow */
4741 #define GEN8_3DSTATE_STENCIL_BUFFER_length 0x00000005
4742 #define GEN8_3DSTATE_STENCIL_BUFFER_length_bias 0x00000002
4743 #define GEN8_3DSTATE_STENCIL_BUFFER_header \
4745 .CommandSubType = 3, \
4746 ._3DCommandOpcode = 0, \
4747 ._3DCommandSubOpcode = 6, \
4750 struct GEN8_3DSTATE_STENCIL_BUFFER
{
4751 uint32_t CommandType
;
4752 uint32_t CommandSubType
;
4753 uint32_t _3DCommandOpcode
;
4754 uint32_t _3DCommandSubOpcode
;
4755 uint32_t DwordLength
;
4756 uint32_t StencilBufferEnable
;
4757 struct GEN8_MEMORY_OBJECT_CONTROL_STATE StencilBufferObjectControlState
;
4758 uint32_t SurfacePitch
;
4759 __gen_address_type SurfaceBaseAddress
;
4760 uint32_t SurfaceQPitch
;
4764 GEN8_3DSTATE_STENCIL_BUFFER_pack(__gen_user_data
*data
, void * restrict dst
,
4765 const struct GEN8_3DSTATE_STENCIL_BUFFER
* restrict values
)
4767 uint32_t *dw
= (uint32_t * restrict
) dst
;
4770 __gen_field(values
->CommandType
, 29, 31) |
4771 __gen_field(values
->CommandSubType
, 27, 28) |
4772 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4773 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4774 __gen_field(values
->DwordLength
, 0, 7) |
4777 uint32_t dw_StencilBufferObjectControlState
;
4778 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_StencilBufferObjectControlState
, &values
->StencilBufferObjectControlState
);
4780 __gen_field(values
->StencilBufferEnable
, 31, 31) |
4781 __gen_field(dw_StencilBufferObjectControlState
, 22, 28) |
4782 __gen_field(values
->SurfacePitch
, 0, 16) |
4789 __gen_combine_address(data
, &dw
[2], values
->SurfaceBaseAddress
, dw2
);
4795 __gen_field(values
->SurfaceQPitch
, 0, 14) |
4800 #define GEN8_3DSTATE_STREAMOUT_length 0x00000005
4801 #define GEN8_3DSTATE_STREAMOUT_length_bias 0x00000002
4802 #define GEN8_3DSTATE_STREAMOUT_header \
4804 .CommandSubType = 3, \
4805 ._3DCommandOpcode = 0, \
4806 ._3DCommandSubOpcode = 30, \
4809 struct GEN8_3DSTATE_STREAMOUT
{
4810 uint32_t CommandType
;
4811 uint32_t CommandSubType
;
4812 uint32_t _3DCommandOpcode
;
4813 uint32_t _3DCommandSubOpcode
;
4814 uint32_t DwordLength
;
4815 uint32_t SOFunctionEnable
;
4816 uint32_t APIRenderingDisable
;
4817 uint32_t RenderStreamSelect
;
4820 uint32_t ReorderMode
;
4821 uint32_t SOStatisticsEnable
;
4826 uint32_t ForceRendering
;
4827 uint32_t Stream3VertexReadOffset
;
4828 uint32_t Stream3VertexReadLength
;
4829 uint32_t Stream2VertexReadOffset
;
4830 uint32_t Stream2VertexReadLength
;
4831 uint32_t Stream1VertexReadOffset
;
4832 uint32_t Stream1VertexReadLength
;
4833 uint32_t Stream0VertexReadOffset
;
4834 uint32_t Stream0VertexReadLength
;
4835 uint32_t Buffer1SurfacePitch
;
4836 uint32_t Buffer0SurfacePitch
;
4837 uint32_t Buffer3SurfacePitch
;
4838 uint32_t Buffer2SurfacePitch
;
4842 GEN8_3DSTATE_STREAMOUT_pack(__gen_user_data
*data
, void * restrict dst
,
4843 const struct GEN8_3DSTATE_STREAMOUT
* restrict values
)
4845 uint32_t *dw
= (uint32_t * restrict
) dst
;
4848 __gen_field(values
->CommandType
, 29, 31) |
4849 __gen_field(values
->CommandSubType
, 27, 28) |
4850 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4851 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4852 __gen_field(values
->DwordLength
, 0, 7) |
4856 __gen_field(values
->SOFunctionEnable
, 31, 31) |
4857 __gen_field(values
->APIRenderingDisable
, 30, 30) |
4858 __gen_field(values
->RenderStreamSelect
, 27, 28) |
4859 __gen_field(values
->ReorderMode
, 26, 26) |
4860 __gen_field(values
->SOStatisticsEnable
, 25, 25) |
4861 __gen_field(values
->ForceRendering
, 23, 24) |
4865 __gen_field(values
->Stream3VertexReadOffset
, 29, 29) |
4866 __gen_field(values
->Stream3VertexReadLength
, 24, 28) |
4867 __gen_field(values
->Stream2VertexReadOffset
, 21, 21) |
4868 __gen_field(values
->Stream2VertexReadLength
, 16, 20) |
4869 __gen_field(values
->Stream1VertexReadOffset
, 13, 13) |
4870 __gen_field(values
->Stream1VertexReadLength
, 8, 12) |
4871 __gen_field(values
->Stream0VertexReadOffset
, 5, 5) |
4872 __gen_field(values
->Stream0VertexReadLength
, 0, 4) |
4876 __gen_field(values
->Buffer1SurfacePitch
, 16, 27) |
4877 __gen_field(values
->Buffer0SurfacePitch
, 0, 11) |
4881 __gen_field(values
->Buffer3SurfacePitch
, 16, 27) |
4882 __gen_field(values
->Buffer2SurfacePitch
, 0, 11) |
4887 #define GEN8_3DSTATE_TE_length 0x00000004
4888 #define GEN8_3DSTATE_TE_length_bias 0x00000002
4889 #define GEN8_3DSTATE_TE_header \
4891 .CommandSubType = 3, \
4892 ._3DCommandOpcode = 0, \
4893 ._3DCommandSubOpcode = 28, \
4896 struct GEN8_3DSTATE_TE
{
4897 uint32_t CommandType
;
4898 uint32_t CommandSubType
;
4899 uint32_t _3DCommandOpcode
;
4900 uint32_t _3DCommandSubOpcode
;
4901 uint32_t DwordLength
;
4903 #define ODD_FRACTIONAL 1
4904 #define EVEN_FRACTIONAL 2
4905 uint32_t Partitioning
;
4910 uint32_t OutputTopology
;
4919 float MaximumTessellationFactorOdd
;
4920 float MaximumTessellationFactorNotOdd
;
4924 GEN8_3DSTATE_TE_pack(__gen_user_data
*data
, void * restrict dst
,
4925 const struct GEN8_3DSTATE_TE
* restrict values
)
4927 uint32_t *dw
= (uint32_t * restrict
) dst
;
4930 __gen_field(values
->CommandType
, 29, 31) |
4931 __gen_field(values
->CommandSubType
, 27, 28) |
4932 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4933 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4934 __gen_field(values
->DwordLength
, 0, 7) |
4938 __gen_field(values
->Partitioning
, 12, 13) |
4939 __gen_field(values
->OutputTopology
, 8, 9) |
4940 __gen_field(values
->TEDomain
, 4, 5) |
4941 __gen_field(values
->TEMode
, 1, 2) |
4942 __gen_field(values
->TEEnable
, 0, 0) |
4946 __gen_float(values
->MaximumTessellationFactorOdd
) |
4950 __gen_float(values
->MaximumTessellationFactorNotOdd
) |
4955 #define GEN8_3DSTATE_URB_DS_length 0x00000002
4956 #define GEN8_3DSTATE_URB_DS_length_bias 0x00000002
4957 #define GEN8_3DSTATE_URB_DS_header \
4959 .CommandSubType = 3, \
4960 ._3DCommandOpcode = 0, \
4961 ._3DCommandSubOpcode = 50, \
4964 struct GEN8_3DSTATE_URB_DS
{
4965 uint32_t CommandType
;
4966 uint32_t CommandSubType
;
4967 uint32_t _3DCommandOpcode
;
4968 uint32_t _3DCommandSubOpcode
;
4969 uint32_t DwordLength
;
4970 uint32_t DSURBStartingAddress
;
4971 uint32_t DSURBEntryAllocationSize
;
4972 uint32_t DSNumberofURBEntries
;
4976 GEN8_3DSTATE_URB_DS_pack(__gen_user_data
*data
, void * restrict dst
,
4977 const struct GEN8_3DSTATE_URB_DS
* restrict values
)
4979 uint32_t *dw
= (uint32_t * restrict
) dst
;
4982 __gen_field(values
->CommandType
, 29, 31) |
4983 __gen_field(values
->CommandSubType
, 27, 28) |
4984 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
4985 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
4986 __gen_field(values
->DwordLength
, 0, 7) |
4990 __gen_field(values
->DSURBStartingAddress
, 25, 31) |
4991 __gen_field(values
->DSURBEntryAllocationSize
, 16, 24) |
4992 __gen_field(values
->DSNumberofURBEntries
, 0, 15) |
4997 #define GEN8_3DSTATE_URB_GS_length 0x00000002
4998 #define GEN8_3DSTATE_URB_GS_length_bias 0x00000002
4999 #define GEN8_3DSTATE_URB_GS_header \
5001 .CommandSubType = 3, \
5002 ._3DCommandOpcode = 0, \
5003 ._3DCommandSubOpcode = 51, \
5006 struct GEN8_3DSTATE_URB_GS
{
5007 uint32_t CommandType
;
5008 uint32_t CommandSubType
;
5009 uint32_t _3DCommandOpcode
;
5010 uint32_t _3DCommandSubOpcode
;
5011 uint32_t DwordLength
;
5012 uint32_t GSURBStartingAddress
;
5013 uint32_t GSURBEntryAllocationSize
;
5014 uint32_t GSNumberofURBEntries
;
5018 GEN8_3DSTATE_URB_GS_pack(__gen_user_data
*data
, void * restrict dst
,
5019 const struct GEN8_3DSTATE_URB_GS
* restrict values
)
5021 uint32_t *dw
= (uint32_t * restrict
) dst
;
5024 __gen_field(values
->CommandType
, 29, 31) |
5025 __gen_field(values
->CommandSubType
, 27, 28) |
5026 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5027 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5028 __gen_field(values
->DwordLength
, 0, 7) |
5032 __gen_field(values
->GSURBStartingAddress
, 25, 31) |
5033 __gen_field(values
->GSURBEntryAllocationSize
, 16, 24) |
5034 __gen_field(values
->GSNumberofURBEntries
, 0, 15) |
5039 #define GEN8_3DSTATE_URB_HS_length 0x00000002
5040 #define GEN8_3DSTATE_URB_HS_length_bias 0x00000002
5041 #define GEN8_3DSTATE_URB_HS_header \
5043 .CommandSubType = 3, \
5044 ._3DCommandOpcode = 0, \
5045 ._3DCommandSubOpcode = 49, \
5048 struct GEN8_3DSTATE_URB_HS
{
5049 uint32_t CommandType
;
5050 uint32_t CommandSubType
;
5051 uint32_t _3DCommandOpcode
;
5052 uint32_t _3DCommandSubOpcode
;
5053 uint32_t DwordLength
;
5054 uint32_t HSURBStartingAddress
;
5055 uint32_t HSURBEntryAllocationSize
;
5056 uint32_t HSNumberofURBEntries
;
5060 GEN8_3DSTATE_URB_HS_pack(__gen_user_data
*data
, void * restrict dst
,
5061 const struct GEN8_3DSTATE_URB_HS
* restrict values
)
5063 uint32_t *dw
= (uint32_t * restrict
) dst
;
5066 __gen_field(values
->CommandType
, 29, 31) |
5067 __gen_field(values
->CommandSubType
, 27, 28) |
5068 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5069 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5070 __gen_field(values
->DwordLength
, 0, 7) |
5074 __gen_field(values
->HSURBStartingAddress
, 25, 31) |
5075 __gen_field(values
->HSURBEntryAllocationSize
, 16, 24) |
5076 __gen_field(values
->HSNumberofURBEntries
, 0, 15) |
5081 #define GEN8_3DSTATE_VERTEX_BUFFERS_length_bias 0x00000002
5082 #define GEN8_3DSTATE_VERTEX_BUFFERS_header \
5084 .CommandSubType = 3, \
5085 ._3DCommandOpcode = 0, \
5086 ._3DCommandSubOpcode = 8
5088 struct GEN8_VERTEX_BUFFER_STATE
{
5089 uint32_t VertexBufferIndex
;
5090 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
5091 uint32_t AddressModifyEnable
;
5092 uint32_t NullVertexBuffer
;
5093 uint32_t BufferPitch
;
5094 __gen_address_type BufferStartingAddress
;
5095 uint32_t BufferSize
;
5099 GEN8_VERTEX_BUFFER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5100 const struct GEN8_VERTEX_BUFFER_STATE
* restrict values
)
5102 uint32_t *dw
= (uint32_t * restrict
) dst
;
5104 uint32_t dw_MemoryObjectControlState
;
5105 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
5107 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5108 __gen_field(dw_MemoryObjectControlState
, 16, 22) |
5109 __gen_field(values
->AddressModifyEnable
, 14, 14) |
5110 __gen_field(values
->NullVertexBuffer
, 13, 13) |
5111 __gen_field(values
->BufferPitch
, 0, 11) |
5118 __gen_combine_address(data
, &dw
[1], values
->BufferStartingAddress
, dw1
);
5124 __gen_field(values
->BufferSize
, 0, 31) |
5129 struct GEN8_3DSTATE_VERTEX_BUFFERS
{
5130 uint32_t CommandType
;
5131 uint32_t CommandSubType
;
5132 uint32_t _3DCommandOpcode
;
5133 uint32_t _3DCommandSubOpcode
;
5134 uint32_t DwordLength
;
5135 /* variable length fields follow */
5139 GEN8_3DSTATE_VERTEX_BUFFERS_pack(__gen_user_data
*data
, void * restrict dst
,
5140 const struct GEN8_3DSTATE_VERTEX_BUFFERS
* restrict values
)
5142 uint32_t *dw
= (uint32_t * restrict
) dst
;
5145 __gen_field(values
->CommandType
, 29, 31) |
5146 __gen_field(values
->CommandSubType
, 27, 28) |
5147 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5148 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5149 __gen_field(values
->DwordLength
, 0, 7) |
5152 /* variable length fields follow */
5155 #define GEN8_3DSTATE_VERTEX_ELEMENTS_length_bias 0x00000002
5156 #define GEN8_3DSTATE_VERTEX_ELEMENTS_header \
5158 .CommandSubType = 3, \
5159 ._3DCommandOpcode = 0, \
5160 ._3DCommandSubOpcode = 9
5162 struct GEN8_VERTEX_ELEMENT_STATE
{
5163 uint32_t VertexBufferIndex
;
5165 uint32_t SourceElementFormat
;
5166 uint32_t EdgeFlagEnable
;
5167 uint32_t SourceElementOffset
;
5168 uint32_t Component0Control
;
5169 uint32_t Component1Control
;
5170 uint32_t Component2Control
;
5171 uint32_t Component3Control
;
5175 GEN8_VERTEX_ELEMENT_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
5176 const struct GEN8_VERTEX_ELEMENT_STATE
* restrict values
)
5178 uint32_t *dw
= (uint32_t * restrict
) dst
;
5181 __gen_field(values
->VertexBufferIndex
, 26, 31) |
5182 __gen_field(values
->Valid
, 25, 25) |
5183 __gen_field(values
->SourceElementFormat
, 16, 24) |
5184 __gen_field(values
->EdgeFlagEnable
, 15, 15) |
5185 __gen_field(values
->SourceElementOffset
, 0, 11) |
5189 __gen_field(values
->Component0Control
, 28, 30) |
5190 __gen_field(values
->Component1Control
, 24, 26) |
5191 __gen_field(values
->Component2Control
, 20, 22) |
5192 __gen_field(values
->Component3Control
, 16, 18) |
5197 struct GEN8_3DSTATE_VERTEX_ELEMENTS
{
5198 uint32_t CommandType
;
5199 uint32_t CommandSubType
;
5200 uint32_t _3DCommandOpcode
;
5201 uint32_t _3DCommandSubOpcode
;
5202 uint32_t DwordLength
;
5203 /* variable length fields follow */
5207 GEN8_3DSTATE_VERTEX_ELEMENTS_pack(__gen_user_data
*data
, void * restrict dst
,
5208 const struct GEN8_3DSTATE_VERTEX_ELEMENTS
* restrict values
)
5210 uint32_t *dw
= (uint32_t * restrict
) dst
;
5213 __gen_field(values
->CommandType
, 29, 31) |
5214 __gen_field(values
->CommandSubType
, 27, 28) |
5215 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5216 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5217 __gen_field(values
->DwordLength
, 0, 7) |
5220 /* variable length fields follow */
5223 #define GEN8_3DSTATE_VF_length 0x00000002
5224 #define GEN8_3DSTATE_VF_length_bias 0x00000002
5225 #define GEN8_3DSTATE_VF_header \
5227 .CommandSubType = 3, \
5228 ._3DCommandOpcode = 0, \
5229 ._3DCommandSubOpcode = 12, \
5232 struct GEN8_3DSTATE_VF
{
5233 uint32_t CommandType
;
5234 uint32_t CommandSubType
;
5235 uint32_t _3DCommandOpcode
;
5236 uint32_t _3DCommandSubOpcode
;
5237 uint32_t IndexedDrawCutIndexEnable
;
5238 uint32_t DwordLength
;
5243 GEN8_3DSTATE_VF_pack(__gen_user_data
*data
, void * restrict dst
,
5244 const struct GEN8_3DSTATE_VF
* restrict values
)
5246 uint32_t *dw
= (uint32_t * restrict
) dst
;
5249 __gen_field(values
->CommandType
, 29, 31) |
5250 __gen_field(values
->CommandSubType
, 27, 28) |
5251 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5252 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5253 __gen_field(values
->IndexedDrawCutIndexEnable
, 8, 8) |
5254 __gen_field(values
->DwordLength
, 0, 7) |
5258 __gen_field(values
->CutIndex
, 0, 31) |
5263 #define GEN8_3DSTATE_VF_INSTANCING_length 0x00000003
5264 #define GEN8_3DSTATE_VF_INSTANCING_length_bias 0x00000002
5265 #define GEN8_3DSTATE_VF_INSTANCING_header \
5267 .CommandSubType = 3, \
5268 ._3DCommandOpcode = 0, \
5269 ._3DCommandSubOpcode = 73, \
5272 struct GEN8_3DSTATE_VF_INSTANCING
{
5273 uint32_t CommandType
;
5274 uint32_t CommandSubType
;
5275 uint32_t _3DCommandOpcode
;
5276 uint32_t _3DCommandSubOpcode
;
5277 uint32_t DwordLength
;
5278 uint32_t InstancingEnable
;
5279 uint32_t VertexElementIndex
;
5280 uint32_t InstanceDataStepRate
;
5284 GEN8_3DSTATE_VF_INSTANCING_pack(__gen_user_data
*data
, void * restrict dst
,
5285 const struct GEN8_3DSTATE_VF_INSTANCING
* restrict values
)
5287 uint32_t *dw
= (uint32_t * restrict
) dst
;
5290 __gen_field(values
->CommandType
, 29, 31) |
5291 __gen_field(values
->CommandSubType
, 27, 28) |
5292 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5293 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5294 __gen_field(values
->DwordLength
, 0, 7) |
5298 __gen_field(values
->InstancingEnable
, 8, 8) |
5299 __gen_field(values
->VertexElementIndex
, 0, 5) |
5303 __gen_field(values
->InstanceDataStepRate
, 0, 31) |
5308 #define GEN8_3DSTATE_VF_SGVS_length 0x00000002
5309 #define GEN8_3DSTATE_VF_SGVS_length_bias 0x00000002
5310 #define GEN8_3DSTATE_VF_SGVS_header \
5312 .CommandSubType = 3, \
5313 ._3DCommandOpcode = 0, \
5314 ._3DCommandSubOpcode = 74, \
5317 struct GEN8_3DSTATE_VF_SGVS
{
5318 uint32_t CommandType
;
5319 uint32_t CommandSubType
;
5320 uint32_t _3DCommandOpcode
;
5321 uint32_t _3DCommandSubOpcode
;
5322 uint32_t DwordLength
;
5323 uint32_t InstanceIDEnable
;
5328 uint32_t InstanceIDComponentNumber
;
5329 uint32_t InstanceIDElementOffset
;
5330 uint32_t VertexIDEnable
;
5335 uint32_t VertexIDComponentNumber
;
5336 uint32_t VertexIDElementOffset
;
5340 GEN8_3DSTATE_VF_SGVS_pack(__gen_user_data
*data
, void * restrict dst
,
5341 const struct GEN8_3DSTATE_VF_SGVS
* restrict values
)
5343 uint32_t *dw
= (uint32_t * restrict
) dst
;
5346 __gen_field(values
->CommandType
, 29, 31) |
5347 __gen_field(values
->CommandSubType
, 27, 28) |
5348 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5349 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5350 __gen_field(values
->DwordLength
, 0, 7) |
5354 __gen_field(values
->InstanceIDEnable
, 31, 31) |
5355 __gen_field(values
->InstanceIDComponentNumber
, 29, 30) |
5356 __gen_field(values
->InstanceIDElementOffset
, 16, 21) |
5357 __gen_field(values
->VertexIDEnable
, 15, 15) |
5358 __gen_field(values
->VertexIDComponentNumber
, 13, 14) |
5359 __gen_field(values
->VertexIDElementOffset
, 0, 5) |
5364 #define GEN8_3DSTATE_VF_STATISTICS_length 0x00000001
5365 #define GEN8_3DSTATE_VF_STATISTICS_length_bias 0x00000001
5366 #define GEN8_3DSTATE_VF_STATISTICS_header \
5368 .CommandSubType = 1, \
5369 ._3DCommandOpcode = 0, \
5370 ._3DCommandSubOpcode = 11
5372 struct GEN8_3DSTATE_VF_STATISTICS
{
5373 uint32_t CommandType
;
5374 uint32_t CommandSubType
;
5375 uint32_t _3DCommandOpcode
;
5376 uint32_t _3DCommandSubOpcode
;
5377 uint32_t StatisticsEnable
;
5381 GEN8_3DSTATE_VF_STATISTICS_pack(__gen_user_data
*data
, void * restrict dst
,
5382 const struct GEN8_3DSTATE_VF_STATISTICS
* restrict values
)
5384 uint32_t *dw
= (uint32_t * restrict
) dst
;
5387 __gen_field(values
->CommandType
, 29, 31) |
5388 __gen_field(values
->CommandSubType
, 27, 28) |
5389 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5390 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5391 __gen_field(values
->StatisticsEnable
, 0, 0) |
5396 #define GEN8_3DSTATE_VF_TOPOLOGY_length 0x00000002
5397 #define GEN8_3DSTATE_VF_TOPOLOGY_length_bias 0x00000002
5398 #define GEN8_3DSTATE_VF_TOPOLOGY_header \
5400 .CommandSubType = 3, \
5401 ._3DCommandOpcode = 0, \
5402 ._3DCommandSubOpcode = 75, \
5405 struct GEN8_3DSTATE_VF_TOPOLOGY
{
5406 uint32_t CommandType
;
5407 uint32_t CommandSubType
;
5408 uint32_t _3DCommandOpcode
;
5409 uint32_t _3DCommandSubOpcode
;
5410 uint32_t DwordLength
;
5411 uint32_t PrimitiveTopologyType
;
5415 GEN8_3DSTATE_VF_TOPOLOGY_pack(__gen_user_data
*data
, void * restrict dst
,
5416 const struct GEN8_3DSTATE_VF_TOPOLOGY
* restrict values
)
5418 uint32_t *dw
= (uint32_t * restrict
) dst
;
5421 __gen_field(values
->CommandType
, 29, 31) |
5422 __gen_field(values
->CommandSubType
, 27, 28) |
5423 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5424 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5425 __gen_field(values
->DwordLength
, 0, 7) |
5429 __gen_field(values
->PrimitiveTopologyType
, 0, 5) |
5434 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length 0x00000002
5435 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_length_bias 0x00000002
5436 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_header\
5438 .CommandSubType = 3, \
5439 ._3DCommandOpcode = 0, \
5440 ._3DCommandSubOpcode = 35, \
5443 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
{
5444 uint32_t CommandType
;
5445 uint32_t CommandSubType
;
5446 uint32_t _3DCommandOpcode
;
5447 uint32_t _3DCommandSubOpcode
;
5448 uint32_t DwordLength
;
5449 uint32_t CCViewportPointer
;
5453 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC_pack(__gen_user_data
*data
, void * restrict dst
,
5454 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_CC
* restrict values
)
5456 uint32_t *dw
= (uint32_t * restrict
) dst
;
5459 __gen_field(values
->CommandType
, 29, 31) |
5460 __gen_field(values
->CommandSubType
, 27, 28) |
5461 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5462 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5463 __gen_field(values
->DwordLength
, 0, 7) |
5467 __gen_offset(values
->CCViewportPointer
, 5, 31) |
5472 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length 0x00000002
5473 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_length_bias 0x00000002
5474 #define GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_header\
5476 .CommandSubType = 3, \
5477 ._3DCommandOpcode = 0, \
5478 ._3DCommandSubOpcode = 33, \
5481 struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
{
5482 uint32_t CommandType
;
5483 uint32_t CommandSubType
;
5484 uint32_t _3DCommandOpcode
;
5485 uint32_t _3DCommandSubOpcode
;
5486 uint32_t DwordLength
;
5487 uint32_t SFClipViewportPointer
;
5491 GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP_pack(__gen_user_data
*data
, void * restrict dst
,
5492 const struct GEN8_3DSTATE_VIEWPORT_STATE_POINTERS_SF_CLIP
* restrict values
)
5494 uint32_t *dw
= (uint32_t * restrict
) dst
;
5497 __gen_field(values
->CommandType
, 29, 31) |
5498 __gen_field(values
->CommandSubType
, 27, 28) |
5499 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5500 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5501 __gen_field(values
->DwordLength
, 0, 7) |
5505 __gen_offset(values
->SFClipViewportPointer
, 6, 31) |
5510 #define GEN8_3DSTATE_WM_length 0x00000002
5511 #define GEN8_3DSTATE_WM_length_bias 0x00000002
5512 #define GEN8_3DSTATE_WM_header \
5514 .CommandSubType = 3, \
5515 ._3DCommandOpcode = 0, \
5516 ._3DCommandSubOpcode = 20, \
5519 struct GEN8_3DSTATE_WM
{
5520 uint32_t CommandType
;
5521 uint32_t CommandSubType
;
5522 uint32_t _3DCommandOpcode
;
5523 uint32_t _3DCommandSubOpcode
;
5524 uint32_t DwordLength
;
5525 uint32_t StatisticsEnable
;
5526 uint32_t LegacyDepthBufferClearEnable
;
5527 uint32_t LegacyDepthBufferResolveEnable
;
5528 uint32_t LegacyHierarchicalDepthBufferResolveEnable
;
5529 uint32_t LegacyDiamondLineRasterization
;
5533 uint32_t EarlyDepthStencilControl
;
5537 uint32_t ForceThreadDispatchEnable
;
5538 #define INTERP_PIXEL 0
5539 #define INTERP_CENTROID 2
5540 #define INTERP_SAMPLE 3
5541 uint32_t PositionZWInterpolationMode
;
5542 uint32_t BarycentricInterpolationMode
;
5547 uint32_t LineEndCapAntialiasingRegionWidth
;
5552 uint32_t LineAntialiasingRegionWidth
;
5553 uint32_t PolygonStippleEnable
;
5554 uint32_t LineStippleEnable
;
5555 #define RASTRULE_UPPER_LEFT 0
5556 #define RASTRULE_UPPER_RIGHT 1
5557 uint32_t PointRasterizationRule
;
5561 uint32_t ForceKillPixelEnable
;
5565 GEN8_3DSTATE_WM_pack(__gen_user_data
*data
, void * restrict dst
,
5566 const struct GEN8_3DSTATE_WM
* restrict values
)
5568 uint32_t *dw
= (uint32_t * restrict
) dst
;
5571 __gen_field(values
->CommandType
, 29, 31) |
5572 __gen_field(values
->CommandSubType
, 27, 28) |
5573 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5574 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5575 __gen_field(values
->DwordLength
, 0, 7) |
5579 __gen_field(values
->StatisticsEnable
, 31, 31) |
5580 __gen_field(values
->LegacyDepthBufferClearEnable
, 30, 30) |
5581 __gen_field(values
->LegacyDepthBufferResolveEnable
, 28, 28) |
5582 __gen_field(values
->LegacyHierarchicalDepthBufferResolveEnable
, 27, 27) |
5583 __gen_field(values
->LegacyDiamondLineRasterization
, 26, 26) |
5584 __gen_field(values
->EarlyDepthStencilControl
, 21, 22) |
5585 __gen_field(values
->ForceThreadDispatchEnable
, 19, 20) |
5586 __gen_field(values
->PositionZWInterpolationMode
, 17, 18) |
5587 __gen_field(values
->BarycentricInterpolationMode
, 11, 16) |
5588 __gen_field(values
->LineEndCapAntialiasingRegionWidth
, 8, 9) |
5589 __gen_field(values
->LineAntialiasingRegionWidth
, 6, 7) |
5590 __gen_field(values
->PolygonStippleEnable
, 4, 4) |
5591 __gen_field(values
->LineStippleEnable
, 3, 3) |
5592 __gen_field(values
->PointRasterizationRule
, 2, 2) |
5593 __gen_field(values
->ForceKillPixelEnable
, 0, 1) |
5598 #define GEN8_3DSTATE_WM_CHROMAKEY_length 0x00000002
5599 #define GEN8_3DSTATE_WM_CHROMAKEY_length_bias 0x00000002
5600 #define GEN8_3DSTATE_WM_CHROMAKEY_header \
5602 .CommandSubType = 3, \
5603 ._3DCommandOpcode = 0, \
5604 ._3DCommandSubOpcode = 76, \
5607 struct GEN8_3DSTATE_WM_CHROMAKEY
{
5608 uint32_t CommandType
;
5609 uint32_t CommandSubType
;
5610 uint32_t _3DCommandOpcode
;
5611 uint32_t _3DCommandSubOpcode
;
5612 uint32_t DwordLength
;
5613 uint32_t ChromaKeyKillEnable
;
5617 GEN8_3DSTATE_WM_CHROMAKEY_pack(__gen_user_data
*data
, void * restrict dst
,
5618 const struct GEN8_3DSTATE_WM_CHROMAKEY
* restrict values
)
5620 uint32_t *dw
= (uint32_t * restrict
) dst
;
5623 __gen_field(values
->CommandType
, 29, 31) |
5624 __gen_field(values
->CommandSubType
, 27, 28) |
5625 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5626 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5627 __gen_field(values
->DwordLength
, 0, 7) |
5631 __gen_field(values
->ChromaKeyKillEnable
, 31, 31) |
5636 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length 0x00000003
5637 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_length_bias 0x00000002
5638 #define GEN8_3DSTATE_WM_DEPTH_STENCIL_header \
5640 .CommandSubType = 3, \
5641 ._3DCommandOpcode = 0, \
5642 ._3DCommandSubOpcode = 78, \
5645 struct GEN8_3DSTATE_WM_DEPTH_STENCIL
{
5646 uint32_t CommandType
;
5647 uint32_t CommandSubType
;
5648 uint32_t _3DCommandOpcode
;
5649 uint32_t _3DCommandSubOpcode
;
5650 uint32_t DwordLength
;
5651 uint32_t StencilFailOp
;
5652 uint32_t StencilPassDepthFailOp
;
5653 uint32_t StencilPassDepthPassOp
;
5654 uint32_t BackfaceStencilTestFunction
;
5655 uint32_t BackfaceStencilFailOp
;
5656 uint32_t BackfaceStencilPassDepthFailOp
;
5657 uint32_t BackfaceStencilPassDepthPassOp
;
5658 uint32_t StencilTestFunction
;
5659 uint32_t DepthTestFunction
;
5662 uint32_t DoubleSidedStencilEnable
;
5663 uint32_t StencilTestEnable
;
5664 uint32_t StencilBufferWriteEnable
;
5665 uint32_t DepthTestEnable
;
5666 uint32_t DepthBufferWriteEnable
;
5667 uint32_t StencilTestMask
;
5668 uint32_t StencilWriteMask
;
5669 uint32_t BackfaceStencilTestMask
;
5670 uint32_t BackfaceStencilWriteMask
;
5674 GEN8_3DSTATE_WM_DEPTH_STENCIL_pack(__gen_user_data
*data
, void * restrict dst
,
5675 const struct GEN8_3DSTATE_WM_DEPTH_STENCIL
* restrict values
)
5677 uint32_t *dw
= (uint32_t * restrict
) dst
;
5680 __gen_field(values
->CommandType
, 29, 31) |
5681 __gen_field(values
->CommandSubType
, 27, 28) |
5682 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5683 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5684 __gen_field(values
->DwordLength
, 0, 7) |
5688 __gen_field(values
->StencilFailOp
, 29, 31) |
5689 __gen_field(values
->StencilPassDepthFailOp
, 26, 28) |
5690 __gen_field(values
->StencilPassDepthPassOp
, 23, 25) |
5691 __gen_field(values
->BackfaceStencilTestFunction
, 20, 22) |
5692 __gen_field(values
->BackfaceStencilFailOp
, 17, 19) |
5693 __gen_field(values
->BackfaceStencilPassDepthFailOp
, 14, 16) |
5694 __gen_field(values
->BackfaceStencilPassDepthPassOp
, 11, 13) |
5695 __gen_field(values
->StencilTestFunction
, 8, 10) |
5696 __gen_field(values
->DepthTestFunction
, 5, 7) |
5697 __gen_field(values
->DoubleSidedStencilEnable
, 4, 4) |
5698 __gen_field(values
->StencilTestEnable
, 3, 3) |
5699 __gen_field(values
->StencilBufferWriteEnable
, 2, 2) |
5700 __gen_field(values
->DepthTestEnable
, 1, 1) |
5701 __gen_field(values
->DepthBufferWriteEnable
, 0, 0) |
5705 __gen_field(values
->StencilTestMask
, 24, 31) |
5706 __gen_field(values
->StencilWriteMask
, 16, 23) |
5707 __gen_field(values
->BackfaceStencilTestMask
, 8, 15) |
5708 __gen_field(values
->BackfaceStencilWriteMask
, 0, 7) |
5713 #define GEN8_3DSTATE_WM_HZ_OP_length 0x00000005
5714 #define GEN8_3DSTATE_WM_HZ_OP_length_bias 0x00000002
5715 #define GEN8_3DSTATE_WM_HZ_OP_header \
5717 .CommandSubType = 3, \
5718 ._3DCommandOpcode = 0, \
5719 ._3DCommandSubOpcode = 82, \
5722 struct GEN8_3DSTATE_WM_HZ_OP
{
5723 uint32_t CommandType
;
5724 uint32_t CommandSubType
;
5725 uint32_t _3DCommandOpcode
;
5726 uint32_t _3DCommandSubOpcode
;
5727 uint32_t DwordLength
;
5728 uint32_t StencilBufferClearEnable
;
5729 uint32_t DepthBufferClearEnable
;
5730 uint32_t ScissorRectangleEnable
;
5731 uint32_t DepthBufferResolveEnable
;
5732 uint32_t HierarchicalDepthBufferResolveEnable
;
5733 uint32_t PixelPositionOffsetEnable
;
5734 uint32_t FullSurfaceDepthClear
;
5735 uint32_t StencilClearValue
;
5736 uint32_t NumberofMultisamples
;
5737 uint32_t ClearRectangleYMin
;
5738 uint32_t ClearRectangleXMin
;
5739 uint32_t ClearRectangleYMax
;
5740 uint32_t ClearRectangleXMax
;
5741 uint32_t SampleMask
;
5745 GEN8_3DSTATE_WM_HZ_OP_pack(__gen_user_data
*data
, void * restrict dst
,
5746 const struct GEN8_3DSTATE_WM_HZ_OP
* restrict values
)
5748 uint32_t *dw
= (uint32_t * restrict
) dst
;
5751 __gen_field(values
->CommandType
, 29, 31) |
5752 __gen_field(values
->CommandSubType
, 27, 28) |
5753 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
5754 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
5755 __gen_field(values
->DwordLength
, 0, 7) |
5759 __gen_field(values
->StencilBufferClearEnable
, 31, 31) |
5760 __gen_field(values
->DepthBufferClearEnable
, 30, 30) |
5761 __gen_field(values
->ScissorRectangleEnable
, 29, 29) |
5762 __gen_field(values
->DepthBufferResolveEnable
, 28, 28) |
5763 __gen_field(values
->HierarchicalDepthBufferResolveEnable
, 27, 27) |
5764 __gen_field(values
->PixelPositionOffsetEnable
, 26, 26) |
5765 __gen_field(values
->FullSurfaceDepthClear
, 25, 25) |
5766 __gen_field(values
->StencilClearValue
, 16, 23) |
5767 __gen_field(values
->NumberofMultisamples
, 13, 15) |
5771 __gen_field(values
->ClearRectangleYMin
, 16, 31) |
5772 __gen_field(values
->ClearRectangleXMin
, 0, 15) |
5776 __gen_field(values
->ClearRectangleYMax
, 16, 31) |
5777 __gen_field(values
->ClearRectangleXMax
, 0, 15) |
5781 __gen_field(values
->SampleMask
, 0, 15) |
5786 #define GEN8_GPGPU_WALKER_length 0x0000000f
5787 #define GEN8_GPGPU_WALKER_length_bias 0x00000002
5788 #define GEN8_GPGPU_WALKER_header \
5791 .MediaCommandOpcode = 1, \
5795 struct GEN8_GPGPU_WALKER
{
5796 uint32_t CommandType
;
5798 uint32_t MediaCommandOpcode
;
5800 uint32_t IndirectParameterEnable
;
5801 uint32_t PredicateEnable
;
5802 uint32_t DwordLength
;
5803 uint32_t InterfaceDescriptorOffset
;
5804 uint32_t IndirectDataLength
;
5805 uint32_t IndirectDataStartAddress
;
5810 uint32_t ThreadDepthCounterMaximum
;
5811 uint32_t ThreadHeightCounterMaximum
;
5812 uint32_t ThreadWidthCounterMaximum
;
5813 uint32_t ThreadGroupIDStartingX
;
5814 uint32_t ThreadGroupIDXDimension
;
5815 uint32_t ThreadGroupIDStartingY
;
5816 uint32_t ThreadGroupIDYDimension
;
5817 uint32_t ThreadGroupIDStartingResumeZ
;
5818 uint32_t ThreadGroupIDZDimension
;
5819 uint32_t RightExecutionMask
;
5820 uint32_t BottomExecutionMask
;
5824 GEN8_GPGPU_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
5825 const struct GEN8_GPGPU_WALKER
* restrict values
)
5827 uint32_t *dw
= (uint32_t * restrict
) dst
;
5830 __gen_field(values
->CommandType
, 29, 31) |
5831 __gen_field(values
->Pipeline
, 27, 28) |
5832 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5833 __gen_field(values
->SubOpcode
, 16, 23) |
5834 __gen_field(values
->IndirectParameterEnable
, 10, 10) |
5835 __gen_field(values
->PredicateEnable
, 8, 8) |
5836 __gen_field(values
->DwordLength
, 0, 7) |
5840 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
5844 __gen_field(values
->IndirectDataLength
, 0, 16) |
5848 __gen_offset(values
->IndirectDataStartAddress
, 6, 31) |
5852 __gen_field(values
->SIMDSize
, 30, 31) |
5853 __gen_field(values
->ThreadDepthCounterMaximum
, 16, 21) |
5854 __gen_field(values
->ThreadHeightCounterMaximum
, 8, 13) |
5855 __gen_field(values
->ThreadWidthCounterMaximum
, 0, 5) |
5859 __gen_field(values
->ThreadGroupIDStartingX
, 0, 31) |
5866 __gen_field(values
->ThreadGroupIDXDimension
, 0, 31) |
5870 __gen_field(values
->ThreadGroupIDStartingY
, 0, 31) |
5877 __gen_field(values
->ThreadGroupIDYDimension
, 0, 31) |
5881 __gen_field(values
->ThreadGroupIDStartingResumeZ
, 0, 31) |
5885 __gen_field(values
->ThreadGroupIDZDimension
, 0, 31) |
5889 __gen_field(values
->RightExecutionMask
, 0, 31) |
5893 __gen_field(values
->BottomExecutionMask
, 0, 31) |
5898 #define GEN8_MEDIA_CURBE_LOAD_length 0x00000004
5899 #define GEN8_MEDIA_CURBE_LOAD_length_bias 0x00000002
5900 #define GEN8_MEDIA_CURBE_LOAD_header \
5903 .MediaCommandOpcode = 0, \
5907 struct GEN8_MEDIA_CURBE_LOAD
{
5908 uint32_t CommandType
;
5910 uint32_t MediaCommandOpcode
;
5912 uint32_t DwordLength
;
5913 uint32_t CURBETotalDataLength
;
5914 uint32_t CURBEDataStartAddress
;
5918 GEN8_MEDIA_CURBE_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
5919 const struct GEN8_MEDIA_CURBE_LOAD
* restrict values
)
5921 uint32_t *dw
= (uint32_t * restrict
) dst
;
5924 __gen_field(values
->CommandType
, 29, 31) |
5925 __gen_field(values
->Pipeline
, 27, 28) |
5926 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5927 __gen_field(values
->SubOpcode
, 16, 23) |
5928 __gen_field(values
->DwordLength
, 0, 15) |
5935 __gen_field(values
->CURBETotalDataLength
, 0, 16) |
5939 __gen_field(values
->CURBEDataStartAddress
, 0, 31) |
5944 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length 0x00000004
5945 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_length_bias 0x00000002
5946 #define GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_header\
5949 .MediaCommandOpcode = 0, \
5953 struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
{
5954 uint32_t CommandType
;
5956 uint32_t MediaCommandOpcode
;
5958 uint32_t DwordLength
;
5959 uint32_t InterfaceDescriptorTotalLength
;
5960 uint32_t InterfaceDescriptorDataStartAddress
;
5964 GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD_pack(__gen_user_data
*data
, void * restrict dst
,
5965 const struct GEN8_MEDIA_INTERFACE_DESCRIPTOR_LOAD
* restrict values
)
5967 uint32_t *dw
= (uint32_t * restrict
) dst
;
5970 __gen_field(values
->CommandType
, 29, 31) |
5971 __gen_field(values
->Pipeline
, 27, 28) |
5972 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
5973 __gen_field(values
->SubOpcode
, 16, 23) |
5974 __gen_field(values
->DwordLength
, 0, 15) |
5981 __gen_field(values
->InterfaceDescriptorTotalLength
, 0, 16) |
5985 __gen_offset(values
->InterfaceDescriptorDataStartAddress
, 0, 31) |
5990 #define GEN8_MEDIA_OBJECT_length_bias 0x00000002
5991 #define GEN8_MEDIA_OBJECT_header \
5993 .MediaCommandPipeline = 2, \
5994 .MediaCommandOpcode = 1, \
5995 .MediaCommandSubOpcode = 0
5997 struct GEN8_MEDIA_OBJECT
{
5998 uint32_t CommandType
;
5999 uint32_t MediaCommandPipeline
;
6000 uint32_t MediaCommandOpcode
;
6001 uint32_t MediaCommandSubOpcode
;
6002 uint32_t DwordLength
;
6003 uint32_t InterfaceDescriptorOffset
;
6004 uint32_t ChildrenPresent
;
6005 #define Nothreadsynchronization 0
6006 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
6007 uint32_t ThreadSynchronization
;
6008 uint32_t ForceDestination
;
6009 #define Notusingscoreboard 0
6010 #define Usingscoreboard 1
6011 uint32_t UseScoreboard
;
6015 uint32_t SliceDestinationSelect
;
6019 uint32_t SubSliceDestinationSelect
;
6020 uint32_t IndirectDataLength
;
6021 __gen_address_type IndirectDataStartAddress
;
6022 uint32_t ScoredboardY
;
6023 uint32_t ScoreboardX
;
6024 uint32_t ScoreboardColor
;
6025 uint32_t ScoreboardMask
;
6026 /* variable length fields follow */
6030 GEN8_MEDIA_OBJECT_pack(__gen_user_data
*data
, void * restrict dst
,
6031 const struct GEN8_MEDIA_OBJECT
* restrict values
)
6033 uint32_t *dw
= (uint32_t * restrict
) dst
;
6036 __gen_field(values
->CommandType
, 29, 31) |
6037 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6038 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6039 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6040 __gen_field(values
->DwordLength
, 0, 15) |
6044 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6048 __gen_field(values
->ChildrenPresent
, 31, 31) |
6049 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6050 __gen_field(values
->ForceDestination
, 22, 22) |
6051 __gen_field(values
->UseScoreboard
, 21, 21) |
6052 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6053 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6054 __gen_field(values
->IndirectDataLength
, 0, 16) |
6061 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6064 __gen_field(values
->ScoredboardY
, 16, 24) |
6065 __gen_field(values
->ScoreboardX
, 0, 8) |
6069 __gen_field(values
->ScoreboardColor
, 16, 19) |
6070 __gen_field(values
->ScoreboardMask
, 0, 7) |
6073 /* variable length fields follow */
6076 #define GEN8_MEDIA_OBJECT_GRPID_length_bias 0x00000002
6077 #define GEN8_MEDIA_OBJECT_GRPID_header \
6079 .MediaCommandPipeline = 2, \
6080 .MediaCommandOpcode = 1, \
6081 .MediaCommandSubOpcode = 6
6083 struct GEN8_MEDIA_OBJECT_GRPID
{
6084 uint32_t CommandType
;
6085 uint32_t MediaCommandPipeline
;
6086 uint32_t MediaCommandOpcode
;
6087 uint32_t MediaCommandSubOpcode
;
6088 uint32_t DwordLength
;
6089 uint32_t InterfaceDescriptorOffset
;
6090 uint32_t EndofThreadGroup
;
6091 uint32_t ForceDestination
;
6092 #define Notusingscoreboard 0
6093 #define Usingscoreboard 1
6094 uint32_t UseScoreboard
;
6098 uint32_t SliceDestinationSelect
;
6102 uint32_t SubSliceDestinationSelect
;
6103 uint32_t IndirectDataLength
;
6104 __gen_address_type IndirectDataStartAddress
;
6105 uint32_t ScoredboardY
;
6106 uint32_t ScoreboardX
;
6107 uint32_t ScoreboardColor
;
6108 uint32_t ScoreboardMask
;
6110 /* variable length fields follow */
6114 GEN8_MEDIA_OBJECT_GRPID_pack(__gen_user_data
*data
, void * restrict dst
,
6115 const struct GEN8_MEDIA_OBJECT_GRPID
* restrict values
)
6117 uint32_t *dw
= (uint32_t * restrict
) dst
;
6120 __gen_field(values
->CommandType
, 29, 31) |
6121 __gen_field(values
->MediaCommandPipeline
, 27, 28) |
6122 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6123 __gen_field(values
->MediaCommandSubOpcode
, 16, 23) |
6124 __gen_field(values
->DwordLength
, 0, 15) |
6128 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6132 __gen_field(values
->EndofThreadGroup
, 23, 23) |
6133 __gen_field(values
->ForceDestination
, 22, 22) |
6134 __gen_field(values
->UseScoreboard
, 21, 21) |
6135 __gen_field(values
->SliceDestinationSelect
, 19, 20) |
6136 __gen_field(values
->SubSliceDestinationSelect
, 17, 18) |
6137 __gen_field(values
->IndirectDataLength
, 0, 16) |
6144 __gen_combine_address(data
, &dw
[3], values
->IndirectDataStartAddress
, dw3
);
6147 __gen_field(values
->ScoredboardY
, 16, 24) |
6148 __gen_field(values
->ScoreboardX
, 0, 8) |
6152 __gen_field(values
->ScoreboardColor
, 16, 19) |
6153 __gen_field(values
->ScoreboardMask
, 0, 7) |
6157 __gen_field(values
->GroupID
, 0, 31) |
6160 /* variable length fields follow */
6163 #define GEN8_MEDIA_OBJECT_PRT_length 0x00000010
6164 #define GEN8_MEDIA_OBJECT_PRT_length_bias 0x00000002
6165 #define GEN8_MEDIA_OBJECT_PRT_header \
6168 .MediaCommandOpcode = 1, \
6172 struct GEN8_MEDIA_OBJECT_PRT
{
6173 uint32_t CommandType
;
6175 uint32_t MediaCommandOpcode
;
6177 uint32_t DwordLength
;
6178 uint32_t InterfaceDescriptorOffset
;
6179 uint32_t ChildrenPresent
;
6180 uint32_t PRT_FenceNeeded
;
6181 #define Rootthreadqueue 0
6182 #define VFEstateflush 1
6183 uint32_t PRT_FenceType
;
6184 uint32_t InlineData
;
6188 GEN8_MEDIA_OBJECT_PRT_pack(__gen_user_data
*data
, void * restrict dst
,
6189 const struct GEN8_MEDIA_OBJECT_PRT
* restrict values
)
6191 uint32_t *dw
= (uint32_t * restrict
) dst
;
6194 __gen_field(values
->CommandType
, 29, 31) |
6195 __gen_field(values
->Pipeline
, 27, 28) |
6196 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6197 __gen_field(values
->SubOpcode
, 16, 23) |
6198 __gen_field(values
->DwordLength
, 0, 15) |
6202 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6206 __gen_field(values
->ChildrenPresent
, 31, 31) |
6207 __gen_field(values
->PRT_FenceNeeded
, 23, 23) |
6208 __gen_field(values
->PRT_FenceType
, 22, 22) |
6215 __gen_field(values
->InlineData
, 0, 31) |
6220 #define GEN8_MEDIA_OBJECT_WALKER_length_bias 0x00000002
6221 #define GEN8_MEDIA_OBJECT_WALKER_header \
6224 .MediaCommandOpcode = 1, \
6227 struct GEN8_MEDIA_OBJECT_WALKER
{
6228 uint32_t CommandType
;
6230 uint32_t MediaCommandOpcode
;
6232 uint32_t DwordLength
;
6233 uint32_t InterfaceDescriptorOffset
;
6234 uint32_t ChildrenPresent
;
6235 #define Nothreadsynchronization 0
6236 #define Threaddispatchissynchronizedbythespawnrootthreadmessage 1
6237 uint32_t ThreadSynchronization
;
6238 #define Notusingscoreboard 0
6239 #define Usingscoreboard 1
6240 uint32_t UseScoreboard
;
6241 uint32_t IndirectDataLength
;
6242 uint32_t IndirectDataStartAddress
;
6243 uint32_t GroupIDLoopSelect
;
6244 uint32_t ScoreboardMask
;
6245 uint32_t ColorCountMinusOne
;
6246 uint32_t MiddleLoopExtraSteps
;
6247 uint32_t LocalMidLoopUnitY
;
6248 uint32_t MidLoopUnitX
;
6249 uint32_t GlobalLoopExecCount
;
6250 uint32_t LocalLoopExecCount
;
6251 uint32_t BlockResolutionY
;
6252 uint32_t BlockResolutionX
;
6253 uint32_t LocalStartY
;
6254 uint32_t LocalStartX
;
6255 uint32_t LocalOuterLoopStrideY
;
6256 uint32_t LocalOuterLoopStrideX
;
6257 uint32_t LocalInnerLoopUnitY
;
6258 uint32_t LocalInnerLoopUnitX
;
6259 uint32_t GlobalResolutionY
;
6260 uint32_t GlobalResolutionX
;
6261 uint32_t GlobalStartY
;
6262 uint32_t GlobalStartX
;
6263 uint32_t GlobalOuterLoopStrideY
;
6264 uint32_t GlobalOuterLoopStrideX
;
6265 uint32_t GlobalInnerLoopUnitY
;
6266 uint32_t GlobalInnerLoopUnitX
;
6267 /* variable length fields follow */
6271 GEN8_MEDIA_OBJECT_WALKER_pack(__gen_user_data
*data
, void * restrict dst
,
6272 const struct GEN8_MEDIA_OBJECT_WALKER
* restrict values
)
6274 uint32_t *dw
= (uint32_t * restrict
) dst
;
6277 __gen_field(values
->CommandType
, 29, 31) |
6278 __gen_field(values
->Pipeline
, 27, 28) |
6279 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6280 __gen_field(values
->SubOpcode
, 16, 23) |
6281 __gen_field(values
->DwordLength
, 0, 15) |
6285 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6289 __gen_field(values
->ChildrenPresent
, 31, 31) |
6290 __gen_field(values
->ThreadSynchronization
, 24, 24) |
6291 __gen_field(values
->UseScoreboard
, 21, 21) |
6292 __gen_field(values
->IndirectDataLength
, 0, 16) |
6296 __gen_offset(values
->IndirectDataStartAddress
, 0, 31) |
6303 __gen_field(values
->GroupIDLoopSelect
, 8, 31) |
6304 __gen_field(values
->ScoreboardMask
, 0, 7) |
6308 __gen_field(values
->ColorCountMinusOne
, 24, 27) |
6309 __gen_field(values
->MiddleLoopExtraSteps
, 16, 20) |
6310 __gen_field(values
->LocalMidLoopUnitY
, 12, 13) |
6311 __gen_field(values
->MidLoopUnitX
, 8, 9) |
6315 __gen_field(values
->GlobalLoopExecCount
, 16, 25) |
6316 __gen_field(values
->LocalLoopExecCount
, 0, 9) |
6320 __gen_field(values
->BlockResolutionY
, 16, 24) |
6321 __gen_field(values
->BlockResolutionX
, 0, 8) |
6325 __gen_field(values
->LocalStartY
, 16, 24) |
6326 __gen_field(values
->LocalStartX
, 0, 8) |
6333 __gen_field(values
->LocalOuterLoopStrideY
, 16, 25) |
6334 __gen_field(values
->LocalOuterLoopStrideX
, 0, 9) |
6338 __gen_field(values
->LocalInnerLoopUnitY
, 16, 25) |
6339 __gen_field(values
->LocalInnerLoopUnitX
, 0, 9) |
6343 __gen_field(values
->GlobalResolutionY
, 16, 24) |
6344 __gen_field(values
->GlobalResolutionX
, 0, 8) |
6348 __gen_field(values
->GlobalStartY
, 16, 25) |
6349 __gen_field(values
->GlobalStartX
, 0, 9) |
6353 __gen_field(values
->GlobalOuterLoopStrideY
, 16, 25) |
6354 __gen_field(values
->GlobalOuterLoopStrideX
, 0, 9) |
6358 __gen_field(values
->GlobalInnerLoopUnitY
, 16, 25) |
6359 __gen_field(values
->GlobalInnerLoopUnitX
, 0, 9) |
6362 /* variable length fields follow */
6365 #define GEN8_MEDIA_STATE_FLUSH_length 0x00000002
6366 #define GEN8_MEDIA_STATE_FLUSH_length_bias 0x00000002
6367 #define GEN8_MEDIA_STATE_FLUSH_header \
6370 .MediaCommandOpcode = 0, \
6374 struct GEN8_MEDIA_STATE_FLUSH
{
6375 uint32_t CommandType
;
6377 uint32_t MediaCommandOpcode
;
6379 uint32_t DwordLength
;
6381 uint32_t WatermarkRequired
;
6382 uint32_t InterfaceDescriptorOffset
;
6386 GEN8_MEDIA_STATE_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6387 const struct GEN8_MEDIA_STATE_FLUSH
* restrict values
)
6389 uint32_t *dw
= (uint32_t * restrict
) dst
;
6392 __gen_field(values
->CommandType
, 29, 31) |
6393 __gen_field(values
->Pipeline
, 27, 28) |
6394 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6395 __gen_field(values
->SubOpcode
, 16, 23) |
6396 __gen_field(values
->DwordLength
, 0, 15) |
6400 __gen_field(values
->FlushtoGO
, 7, 7) |
6401 __gen_field(values
->WatermarkRequired
, 6, 6) |
6402 __gen_field(values
->InterfaceDescriptorOffset
, 0, 5) |
6407 #define GEN8_MEDIA_VFE_STATE_length 0x00000009
6408 #define GEN8_MEDIA_VFE_STATE_length_bias 0x00000002
6409 #define GEN8_MEDIA_VFE_STATE_header \
6412 .MediaCommandOpcode = 0, \
6416 struct GEN8_MEDIA_VFE_STATE
{
6417 uint32_t CommandType
;
6419 uint32_t MediaCommandOpcode
;
6421 uint32_t DwordLength
;
6422 __gen_address_type ScratchSpaceBasePointer
;
6424 uint32_t PerThreadScratchSpace
;
6425 __gen_address_type ScratchSpaceBasePointerHigh
;
6426 uint32_t MaximumNumberofThreads
;
6427 uint32_t NumberofURBEntries
;
6428 #define Maintainingtheexistingtimestampstate 0
6429 #define Resettingrelativetimerandlatchingtheglobaltimestamp 1
6430 uint32_t ResetGatewayTimer
;
6431 #define MaintainingOpenGatewayForwardMsgCloseGatewayprotocollegacymode 0
6432 #define BypassingOpenGatewayCloseGatewayprotocol 1
6433 uint32_t BypassGatewayControl
;
6434 uint32_t SliceDisable
;
6435 uint32_t URBEntryAllocationSize
;
6436 uint32_t CURBEAllocationSize
;
6437 #define Scoreboarddisabled 0
6438 #define Scoreboardenabled 1
6439 uint32_t ScoreboardEnable
;
6440 #define StallingScoreboard 0
6441 #define NonStallingScoreboard 1
6442 uint32_t ScoreboardType
;
6443 uint32_t ScoreboardMask
;
6444 uint32_t Scoreboard3DeltaY
;
6445 uint32_t Scoreboard3DeltaX
;
6446 uint32_t Scoreboard2DeltaY
;
6447 uint32_t Scoreboard2DeltaX
;
6448 uint32_t Scoreboard1DeltaY
;
6449 uint32_t Scoreboard1DeltaX
;
6450 uint32_t Scoreboard0DeltaY
;
6451 uint32_t Scoreboard0DeltaX
;
6452 uint32_t Scoreboard7DeltaY
;
6453 uint32_t Scoreboard7DeltaX
;
6454 uint32_t Scoreboard6DeltaY
;
6455 uint32_t Scoreboard6DeltaX
;
6456 uint32_t Scoreboard5DeltaY
;
6457 uint32_t Scoreboard5DeltaX
;
6458 uint32_t Scoreboard4DeltaY
;
6459 uint32_t Scoreboard4DeltaX
;
6463 GEN8_MEDIA_VFE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
6464 const struct GEN8_MEDIA_VFE_STATE
* restrict values
)
6466 uint32_t *dw
= (uint32_t * restrict
) dst
;
6469 __gen_field(values
->CommandType
, 29, 31) |
6470 __gen_field(values
->Pipeline
, 27, 28) |
6471 __gen_field(values
->MediaCommandOpcode
, 24, 26) |
6472 __gen_field(values
->SubOpcode
, 16, 23) |
6473 __gen_field(values
->DwordLength
, 0, 15) |
6477 __gen_offset(values
->ScratchSpaceBasePointer
, 10, 31) |
6478 __gen_field(values
->StackSize
, 4, 7) |
6479 __gen_field(values
->PerThreadScratchSpace
, 0, 3) |
6483 __gen_combine_address(data
, &dw
[1], values
->ScratchSpaceBasePointer
, dw1
);
6486 __gen_offset(values
->ScratchSpaceBasePointerHigh
, 0, 15) |
6490 __gen_combine_address(data
, &dw
[2], values
->ScratchSpaceBasePointerHigh
, dw2
);
6493 __gen_field(values
->MaximumNumberofThreads
, 16, 31) |
6494 __gen_field(values
->NumberofURBEntries
, 8, 15) |
6495 __gen_field(values
->ResetGatewayTimer
, 7, 7) |
6496 __gen_field(values
->BypassGatewayControl
, 6, 6) |
6500 __gen_field(values
->SliceDisable
, 0, 1) |
6504 __gen_field(values
->URBEntryAllocationSize
, 16, 31) |
6505 __gen_field(values
->CURBEAllocationSize
, 0, 15) |
6509 __gen_field(values
->ScoreboardEnable
, 31, 31) |
6510 __gen_field(values
->ScoreboardType
, 30, 30) |
6511 __gen_field(values
->ScoreboardMask
, 0, 7) |
6515 __gen_field(values
->Scoreboard3DeltaY
, 28, 31) |
6516 __gen_field(values
->Scoreboard3DeltaX
, 24, 27) |
6517 __gen_field(values
->Scoreboard2DeltaY
, 20, 23) |
6518 __gen_field(values
->Scoreboard2DeltaX
, 16, 19) |
6519 __gen_field(values
->Scoreboard1DeltaY
, 12, 15) |
6520 __gen_field(values
->Scoreboard1DeltaX
, 8, 11) |
6521 __gen_field(values
->Scoreboard0DeltaY
, 4, 7) |
6522 __gen_field(values
->Scoreboard0DeltaX
, 0, 3) |
6526 __gen_field(values
->Scoreboard7DeltaY
, 28, 31) |
6527 __gen_field(values
->Scoreboard7DeltaX
, 24, 27) |
6528 __gen_field(values
->Scoreboard6DeltaY
, 20, 23) |
6529 __gen_field(values
->Scoreboard6DeltaX
, 16, 19) |
6530 __gen_field(values
->Scoreboard5DeltaY
, 12, 15) |
6531 __gen_field(values
->Scoreboard5DeltaX
, 8, 11) |
6532 __gen_field(values
->Scoreboard4DeltaY
, 4, 7) |
6533 __gen_field(values
->Scoreboard4DeltaX
, 0, 3) |
6538 #define GEN8_MI_ARB_CHECK_length 0x00000001
6539 #define GEN8_MI_ARB_CHECK_length_bias 0x00000001
6540 #define GEN8_MI_ARB_CHECK_header \
6542 .MICommandOpcode = 5
6544 struct GEN8_MI_ARB_CHECK
{
6545 uint32_t CommandType
;
6546 uint32_t MICommandOpcode
;
6550 GEN8_MI_ARB_CHECK_pack(__gen_user_data
*data
, void * restrict dst
,
6551 const struct GEN8_MI_ARB_CHECK
* restrict values
)
6553 uint32_t *dw
= (uint32_t * restrict
) dst
;
6556 __gen_field(values
->CommandType
, 29, 31) |
6557 __gen_field(values
->MICommandOpcode
, 23, 28) |
6562 #define GEN8_MI_BATCH_BUFFER_END_length 0x00000001
6563 #define GEN8_MI_BATCH_BUFFER_END_length_bias 0x00000001
6564 #define GEN8_MI_BATCH_BUFFER_END_header \
6566 .MICommandOpcode = 10
6568 struct GEN8_MI_BATCH_BUFFER_END
{
6569 uint32_t CommandType
;
6570 uint32_t MICommandOpcode
;
6574 GEN8_MI_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6575 const struct GEN8_MI_BATCH_BUFFER_END
* restrict values
)
6577 uint32_t *dw
= (uint32_t * restrict
) dst
;
6580 __gen_field(values
->CommandType
, 29, 31) |
6581 __gen_field(values
->MICommandOpcode
, 23, 28) |
6586 #define GEN8_MI_BATCH_BUFFER_START_length 0x00000003
6587 #define GEN8_MI_BATCH_BUFFER_START_length_bias 0x00000002
6588 #define GEN8_MI_BATCH_BUFFER_START_header \
6590 .MICommandOpcode = 49, \
6593 struct GEN8_MI_BATCH_BUFFER_START
{
6594 uint32_t CommandType
;
6595 uint32_t MICommandOpcode
;
6596 #define _1stlevelbatch 0
6597 #define _2ndlevelbatch 1
6598 uint32_t _2ndLevelBatchBuffer
;
6599 uint32_t AddOffsetEnable
;
6600 uint32_t PredicationEnable
;
6601 uint32_t ResourceStreamerEnable
;
6604 uint32_t AddressSpaceIndicator
;
6605 uint32_t DwordLength
;
6606 __gen_address_type BatchBufferStartAddress
;
6607 __gen_address_type BatchBufferStartAddressHigh
;
6611 GEN8_MI_BATCH_BUFFER_START_pack(__gen_user_data
*data
, void * restrict dst
,
6612 const struct GEN8_MI_BATCH_BUFFER_START
* restrict values
)
6614 uint32_t *dw
= (uint32_t * restrict
) dst
;
6617 __gen_field(values
->CommandType
, 29, 31) |
6618 __gen_field(values
->MICommandOpcode
, 23, 28) |
6619 __gen_field(values
->_2ndLevelBatchBuffer
, 22, 22) |
6620 __gen_field(values
->AddOffsetEnable
, 16, 16) |
6621 __gen_field(values
->PredicationEnable
, 15, 15) |
6622 __gen_field(values
->ResourceStreamerEnable
, 10, 10) |
6623 __gen_field(values
->AddressSpaceIndicator
, 8, 8) |
6624 __gen_field(values
->DwordLength
, 0, 7) |
6631 __gen_combine_address(data
, &dw
[1], values
->BatchBufferStartAddress
, dw1
);
6637 __gen_combine_address(data
, &dw
[2], values
->BatchBufferStartAddressHigh
, dw2
);
6641 #define GEN8_MI_CLFLUSH_length_bias 0x00000002
6642 #define GEN8_MI_CLFLUSH_header \
6644 .MICommandOpcode = 39
6646 struct GEN8_MI_CLFLUSH
{
6647 uint32_t CommandType
;
6648 uint32_t MICommandOpcode
;
6649 #define PerProcessGraphicsAddress 0
6650 #define GlobalGraphicsAddress 1
6651 uint32_t UseGlobalGTT
;
6652 uint32_t DwordLength
;
6653 __gen_address_type PageBaseAddress
;
6654 uint32_t StartingCachelineOffset
;
6655 __gen_address_type PageBaseAddressHigh
;
6656 /* variable length fields follow */
6660 GEN8_MI_CLFLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
6661 const struct GEN8_MI_CLFLUSH
* restrict values
)
6663 uint32_t *dw
= (uint32_t * restrict
) dst
;
6666 __gen_field(values
->CommandType
, 29, 31) |
6667 __gen_field(values
->MICommandOpcode
, 23, 28) |
6668 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6669 __gen_field(values
->DwordLength
, 0, 9) |
6673 __gen_field(values
->StartingCachelineOffset
, 6, 11) |
6677 __gen_combine_address(data
, &dw
[1], values
->PageBaseAddress
, dw1
);
6683 __gen_combine_address(data
, &dw
[2], values
->PageBaseAddressHigh
, dw2
);
6685 /* variable length fields follow */
6688 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length 0x00000003
6689 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_length_bias 0x00000002
6690 #define GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_header\
6692 .MICommandOpcode = 54, \
6693 .UseGlobalGTT = 0, \
6694 .CompareSemaphore = 0, \
6697 struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
{
6698 uint32_t CommandType
;
6699 uint32_t MICommandOpcode
;
6700 uint32_t UseGlobalGTT
;
6701 uint32_t CompareSemaphore
;
6702 uint32_t DwordLength
;
6703 uint32_t CompareDataDword
;
6704 __gen_address_type CompareAddress
;
6705 __gen_address_type CompareAddressHigh
;
6709 GEN8_MI_CONDITIONAL_BATCH_BUFFER_END_pack(__gen_user_data
*data
, void * restrict dst
,
6710 const struct GEN8_MI_CONDITIONAL_BATCH_BUFFER_END
* restrict values
)
6712 uint32_t *dw
= (uint32_t * restrict
) dst
;
6715 __gen_field(values
->CommandType
, 29, 31) |
6716 __gen_field(values
->MICommandOpcode
, 23, 28) |
6717 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6718 __gen_field(values
->CompareSemaphore
, 21, 21) |
6719 __gen_field(values
->DwordLength
, 0, 7) |
6723 __gen_field(values
->CompareDataDword
, 0, 31) |
6730 __gen_combine_address(data
, &dw
[2], values
->CompareAddress
, dw2
);
6736 __gen_combine_address(data
, &dw
[3], values
->CompareAddressHigh
, dw3
);
6740 #define GEN8_MI_COPY_MEM_MEM_length 0x00000005
6741 #define GEN8_MI_COPY_MEM_MEM_length_bias 0x00000002
6742 #define GEN8_MI_COPY_MEM_MEM_header \
6744 .MICommandOpcode = 46, \
6747 struct GEN8_MI_COPY_MEM_MEM
{
6748 uint32_t CommandType
;
6749 uint32_t MICommandOpcode
;
6750 #define PerProcessGraphicsAddress 0
6751 #define GlobalGraphicsAddress 1
6752 uint32_t UseGlobalGTTSource
;
6753 #define PerProcessGraphicsAddress 0
6754 #define GlobalGraphicsAddress 1
6755 uint32_t UseGlobalGTTDestination
;
6756 uint32_t DwordLength
;
6757 __gen_address_type DestinationMemoryAddress
;
6758 __gen_address_type SourceMemoryAddress
;
6762 GEN8_MI_COPY_MEM_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6763 const struct GEN8_MI_COPY_MEM_MEM
* restrict values
)
6765 uint32_t *dw
= (uint32_t * restrict
) dst
;
6768 __gen_field(values
->CommandType
, 29, 31) |
6769 __gen_field(values
->MICommandOpcode
, 23, 28) |
6770 __gen_field(values
->UseGlobalGTTSource
, 22, 22) |
6771 __gen_field(values
->UseGlobalGTTDestination
, 21, 21) |
6772 __gen_field(values
->DwordLength
, 0, 7) |
6779 __gen_combine_address(data
, &dw
[1], values
->DestinationMemoryAddress
, dw1
);
6788 __gen_combine_address(data
, &dw
[3], values
->SourceMemoryAddress
, dw3
);
6795 #define GEN8_MI_LOAD_REGISTER_IMM_length 0x00000003
6796 #define GEN8_MI_LOAD_REGISTER_IMM_length_bias 0x00000002
6797 #define GEN8_MI_LOAD_REGISTER_IMM_header \
6799 .MICommandOpcode = 34, \
6802 struct GEN8_MI_LOAD_REGISTER_IMM
{
6803 uint32_t CommandType
;
6804 uint32_t MICommandOpcode
;
6805 uint32_t ByteWriteDisables
;
6806 uint32_t DwordLength
;
6807 uint32_t RegisterOffset
;
6812 GEN8_MI_LOAD_REGISTER_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
6813 const struct GEN8_MI_LOAD_REGISTER_IMM
* restrict values
)
6815 uint32_t *dw
= (uint32_t * restrict
) dst
;
6818 __gen_field(values
->CommandType
, 29, 31) |
6819 __gen_field(values
->MICommandOpcode
, 23, 28) |
6820 __gen_field(values
->ByteWriteDisables
, 8, 11) |
6821 __gen_field(values
->DwordLength
, 0, 7) |
6825 __gen_offset(values
->RegisterOffset
, 2, 22) |
6829 __gen_field(values
->DataDWord
, 0, 31) |
6834 #define GEN8_MI_LOAD_REGISTER_MEM_length 0x00000004
6835 #define GEN8_MI_LOAD_REGISTER_MEM_length_bias 0x00000002
6836 #define GEN8_MI_LOAD_REGISTER_MEM_header \
6838 .MICommandOpcode = 41, \
6841 struct GEN8_MI_LOAD_REGISTER_MEM
{
6842 uint32_t CommandType
;
6843 uint32_t MICommandOpcode
;
6844 uint32_t UseGlobalGTT
;
6845 uint32_t AsyncModeEnable
;
6846 uint32_t DwordLength
;
6847 uint32_t RegisterAddress
;
6848 __gen_address_type MemoryAddress
;
6852 GEN8_MI_LOAD_REGISTER_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6853 const struct GEN8_MI_LOAD_REGISTER_MEM
* restrict values
)
6855 uint32_t *dw
= (uint32_t * restrict
) dst
;
6858 __gen_field(values
->CommandType
, 29, 31) |
6859 __gen_field(values
->MICommandOpcode
, 23, 28) |
6860 __gen_field(values
->UseGlobalGTT
, 22, 22) |
6861 __gen_field(values
->AsyncModeEnable
, 21, 21) |
6862 __gen_field(values
->DwordLength
, 0, 7) |
6866 __gen_offset(values
->RegisterAddress
, 2, 22) |
6873 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
6880 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length 0x00000002
6881 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_length_bias 0x00000002
6882 #define GEN8_MI_LOAD_SCAN_LINES_EXCL_header \
6884 .MICommandOpcode = 19, \
6887 struct GEN8_MI_LOAD_SCAN_LINES_EXCL
{
6888 uint32_t CommandType
;
6889 uint32_t MICommandOpcode
;
6890 #define DisplayPlaneA 0
6891 #define DisplayPlaneB 1
6892 #define DisplayPlaneC 4
6893 uint32_t DisplayPlaneSelect
;
6894 uint32_t DwordLength
;
6895 uint32_t StartScanLineNumber
;
6896 uint32_t EndScanLineNumber
;
6900 GEN8_MI_LOAD_SCAN_LINES_EXCL_pack(__gen_user_data
*data
, void * restrict dst
,
6901 const struct GEN8_MI_LOAD_SCAN_LINES_EXCL
* restrict values
)
6903 uint32_t *dw
= (uint32_t * restrict
) dst
;
6906 __gen_field(values
->CommandType
, 29, 31) |
6907 __gen_field(values
->MICommandOpcode
, 23, 28) |
6908 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
6909 __gen_field(values
->DwordLength
, 0, 5) |
6913 __gen_field(values
->StartScanLineNumber
, 16, 28) |
6914 __gen_field(values
->EndScanLineNumber
, 0, 12) |
6919 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length 0x00000002
6920 #define GEN8_MI_LOAD_SCAN_LINES_INCL_length_bias 0x00000002
6921 #define GEN8_MI_LOAD_SCAN_LINES_INCL_header \
6923 .MICommandOpcode = 18, \
6926 struct GEN8_MI_LOAD_SCAN_LINES_INCL
{
6927 uint32_t CommandType
;
6928 uint32_t MICommandOpcode
;
6929 #define DisplayPlaneA 0
6930 #define DisplayPlaneB 1
6931 #define DisplayPlaneC 4
6932 uint32_t DisplayPlaneSelect
;
6933 #define NeverForward 0
6934 #define AlwaysForward 1
6935 #define ConditionallyForward 2
6936 uint32_t ScanLineEventDoneForward
;
6937 uint32_t DwordLength
;
6938 uint32_t StartScanLineNumber
;
6939 uint32_t EndScanLineNumber
;
6943 GEN8_MI_LOAD_SCAN_LINES_INCL_pack(__gen_user_data
*data
, void * restrict dst
,
6944 const struct GEN8_MI_LOAD_SCAN_LINES_INCL
* restrict values
)
6946 uint32_t *dw
= (uint32_t * restrict
) dst
;
6949 __gen_field(values
->CommandType
, 29, 31) |
6950 __gen_field(values
->MICommandOpcode
, 23, 28) |
6951 __gen_field(values
->DisplayPlaneSelect
, 19, 21) |
6952 __gen_field(values
->ScanLineEventDoneForward
, 17, 18) |
6953 __gen_field(values
->DwordLength
, 0, 5) |
6957 __gen_field(values
->StartScanLineNumber
, 16, 28) |
6958 __gen_field(values
->EndScanLineNumber
, 0, 12) |
6963 #define GEN8_MI_LOAD_URB_MEM_length 0x00000004
6964 #define GEN8_MI_LOAD_URB_MEM_length_bias 0x00000002
6965 #define GEN8_MI_LOAD_URB_MEM_header \
6967 .MICommandOpcode = 44, \
6970 struct GEN8_MI_LOAD_URB_MEM
{
6971 uint32_t CommandType
;
6972 uint32_t MICommandOpcode
;
6973 uint32_t DwordLength
;
6974 uint32_t URBAddress
;
6975 __gen_address_type MemoryAddress
;
6979 GEN8_MI_LOAD_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
6980 const struct GEN8_MI_LOAD_URB_MEM
* restrict values
)
6982 uint32_t *dw
= (uint32_t * restrict
) dst
;
6985 __gen_field(values
->CommandType
, 29, 31) |
6986 __gen_field(values
->MICommandOpcode
, 23, 28) |
6987 __gen_field(values
->DwordLength
, 0, 7) |
6991 __gen_field(values
->URBAddress
, 2, 14) |
6998 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7005 #define GEN8_MI_MATH_length_bias 0x00000002
7006 #define GEN8_MI_MATH_header \
7008 .MICommandOpcode = 26
7010 struct GEN8_MI_MATH
{
7011 uint32_t CommandType
;
7012 uint32_t MICommandOpcode
;
7013 uint32_t DwordLength
;
7014 uint32_t ALUINSTRUCTION1
;
7015 uint32_t ALUINSTRUCTION2
;
7016 /* variable length fields follow */
7020 GEN8_MI_MATH_pack(__gen_user_data
*data
, void * restrict dst
,
7021 const struct GEN8_MI_MATH
* restrict values
)
7023 uint32_t *dw
= (uint32_t * restrict
) dst
;
7026 __gen_field(values
->CommandType
, 29, 31) |
7027 __gen_field(values
->MICommandOpcode
, 23, 28) |
7028 __gen_field(values
->DwordLength
, 0, 5) |
7032 __gen_field(values
->ALUINSTRUCTION1
, 0, 31) |
7036 __gen_field(values
->ALUINSTRUCTION2
, 0, 31) |
7039 /* variable length fields follow */
7042 #define GEN8_MI_NOOP_length 0x00000001
7043 #define GEN8_MI_NOOP_length_bias 0x00000001
7044 #define GEN8_MI_NOOP_header \
7046 .MICommandOpcode = 0
7048 struct GEN8_MI_NOOP
{
7049 uint32_t CommandType
;
7050 uint32_t MICommandOpcode
;
7051 uint32_t IdentificationNumberRegisterWriteEnable
;
7052 uint32_t IdentificationNumber
;
7056 GEN8_MI_NOOP_pack(__gen_user_data
*data
, void * restrict dst
,
7057 const struct GEN8_MI_NOOP
* restrict values
)
7059 uint32_t *dw
= (uint32_t * restrict
) dst
;
7062 __gen_field(values
->CommandType
, 29, 31) |
7063 __gen_field(values
->MICommandOpcode
, 23, 28) |
7064 __gen_field(values
->IdentificationNumberRegisterWriteEnable
, 22, 22) |
7065 __gen_field(values
->IdentificationNumber
, 0, 21) |
7070 #define GEN8_MI_PREDICATE_length 0x00000001
7071 #define GEN8_MI_PREDICATE_length_bias 0x00000001
7072 #define GEN8_MI_PREDICATE_header \
7074 .MICommandOpcode = 12
7076 struct GEN8_MI_PREDICATE
{
7077 uint32_t CommandType
;
7078 uint32_t MICommandOpcode
;
7082 uint32_t LoadOperation
;
7083 #define COMBINE_SET 0
7084 #define COMBINE_AND 1
7085 #define COMBINE_OR 2
7086 #define COMBINE_XOR 3
7087 uint32_t CombineOperation
;
7088 #define COMPARE_SRCS_EQUAL 2
7089 #define COMPARE_DELTAS_EQUAL 3
7090 uint32_t CompareOperation
;
7094 GEN8_MI_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7095 const struct GEN8_MI_PREDICATE
* restrict values
)
7097 uint32_t *dw
= (uint32_t * restrict
) dst
;
7100 __gen_field(values
->CommandType
, 29, 31) |
7101 __gen_field(values
->MICommandOpcode
, 23, 28) |
7102 __gen_field(values
->LoadOperation
, 6, 7) |
7103 __gen_field(values
->CombineOperation
, 3, 4) |
7104 __gen_field(values
->CompareOperation
, 0, 1) |
7109 #define GEN8_MI_REPORT_HEAD_length 0x00000001
7110 #define GEN8_MI_REPORT_HEAD_length_bias 0x00000001
7111 #define GEN8_MI_REPORT_HEAD_header \
7113 .MICommandOpcode = 7
7115 struct GEN8_MI_REPORT_HEAD
{
7116 uint32_t CommandType
;
7117 uint32_t MICommandOpcode
;
7121 GEN8_MI_REPORT_HEAD_pack(__gen_user_data
*data
, void * restrict dst
,
7122 const struct GEN8_MI_REPORT_HEAD
* restrict values
)
7124 uint32_t *dw
= (uint32_t * restrict
) dst
;
7127 __gen_field(values
->CommandType
, 29, 31) |
7128 __gen_field(values
->MICommandOpcode
, 23, 28) |
7133 #define GEN8_MI_RS_CONTEXT_length 0x00000001
7134 #define GEN8_MI_RS_CONTEXT_length_bias 0x00000001
7135 #define GEN8_MI_RS_CONTEXT_header \
7137 .MICommandOpcode = 15
7139 struct GEN8_MI_RS_CONTEXT
{
7140 uint32_t CommandType
;
7141 uint32_t MICommandOpcode
;
7144 uint32_t ResourceStreamerSave
;
7148 GEN8_MI_RS_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7149 const struct GEN8_MI_RS_CONTEXT
* restrict values
)
7151 uint32_t *dw
= (uint32_t * restrict
) dst
;
7154 __gen_field(values
->CommandType
, 29, 31) |
7155 __gen_field(values
->MICommandOpcode
, 23, 28) |
7156 __gen_field(values
->ResourceStreamerSave
, 0, 0) |
7161 #define GEN8_MI_RS_CONTROL_length 0x00000001
7162 #define GEN8_MI_RS_CONTROL_length_bias 0x00000001
7163 #define GEN8_MI_RS_CONTROL_header \
7165 .MICommandOpcode = 6
7167 struct GEN8_MI_RS_CONTROL
{
7168 uint32_t CommandType
;
7169 uint32_t MICommandOpcode
;
7172 uint32_t ResourceStreamerControl
;
7176 GEN8_MI_RS_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7177 const struct GEN8_MI_RS_CONTROL
* restrict values
)
7179 uint32_t *dw
= (uint32_t * restrict
) dst
;
7182 __gen_field(values
->CommandType
, 29, 31) |
7183 __gen_field(values
->MICommandOpcode
, 23, 28) |
7184 __gen_field(values
->ResourceStreamerControl
, 0, 0) |
7189 #define GEN8_MI_RS_STORE_DATA_IMM_length 0x00000004
7190 #define GEN8_MI_RS_STORE_DATA_IMM_length_bias 0x00000002
7191 #define GEN8_MI_RS_STORE_DATA_IMM_header \
7193 .MICommandOpcode = 43, \
7196 struct GEN8_MI_RS_STORE_DATA_IMM
{
7197 uint32_t CommandType
;
7198 uint32_t MICommandOpcode
;
7199 uint32_t DwordLength
;
7200 __gen_address_type DestinationAddress
;
7201 uint32_t CoreModeEnable
;
7202 uint32_t DataDWord0
;
7206 GEN8_MI_RS_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7207 const struct GEN8_MI_RS_STORE_DATA_IMM
* restrict values
)
7209 uint32_t *dw
= (uint32_t * restrict
) dst
;
7212 __gen_field(values
->CommandType
, 29, 31) |
7213 __gen_field(values
->MICommandOpcode
, 23, 28) |
7214 __gen_field(values
->DwordLength
, 0, 7) |
7218 __gen_field(values
->CoreModeEnable
, 0, 0) |
7222 __gen_combine_address(data
, &dw
[1], values
->DestinationAddress
, dw1
);
7228 __gen_field(values
->DataDWord0
, 0, 31) |
7233 #define GEN8_MI_SET_CONTEXT_length 0x00000002
7234 #define GEN8_MI_SET_CONTEXT_length_bias 0x00000002
7235 #define GEN8_MI_SET_CONTEXT_header \
7237 .MICommandOpcode = 24, \
7240 struct GEN8_MI_SET_CONTEXT
{
7241 uint32_t CommandType
;
7242 uint32_t MICommandOpcode
;
7243 uint32_t DwordLength
;
7244 __gen_address_type LogicalContextAddress
;
7245 uint32_t ReservedMustbe1
;
7246 uint32_t CoreModeEnable
;
7247 uint32_t ResourceStreamerStateSaveEnable
;
7248 uint32_t ResourceStreamerStateRestoreEnable
;
7249 uint32_t ForceRestore
;
7250 uint32_t RestoreInhibit
;
7254 GEN8_MI_SET_CONTEXT_pack(__gen_user_data
*data
, void * restrict dst
,
7255 const struct GEN8_MI_SET_CONTEXT
* restrict values
)
7257 uint32_t *dw
= (uint32_t * restrict
) dst
;
7260 __gen_field(values
->CommandType
, 29, 31) |
7261 __gen_field(values
->MICommandOpcode
, 23, 28) |
7262 __gen_field(values
->DwordLength
, 0, 7) |
7266 __gen_field(values
->ReservedMustbe1
, 8, 8) |
7267 __gen_field(values
->CoreModeEnable
, 4, 4) |
7268 __gen_field(values
->ResourceStreamerStateSaveEnable
, 3, 3) |
7269 __gen_field(values
->ResourceStreamerStateRestoreEnable
, 2, 2) |
7270 __gen_field(values
->ForceRestore
, 1, 1) |
7271 __gen_field(values
->RestoreInhibit
, 0, 0) |
7275 __gen_combine_address(data
, &dw
[1], values
->LogicalContextAddress
, dw1
);
7279 #define GEN8_MI_SET_PREDICATE_length 0x00000001
7280 #define GEN8_MI_SET_PREDICATE_length_bias 0x00000001
7281 #define GEN8_MI_SET_PREDICATE_header \
7283 .MICommandOpcode = 1
7285 struct GEN8_MI_SET_PREDICATE
{
7286 uint32_t CommandType
;
7287 uint32_t MICommandOpcode
;
7289 #define NOOPonResult2clear 1
7290 #define NOOPonResult2set 2
7291 #define NOOPonResultclear 3
7292 #define NOOPonResultset 4
7293 #define Executewhenonesliceenabled 5
7294 #define Executewhentwoslicesareenabled 6
7295 #define Executewhenthreeslicesareenabled 7
7296 #define NOOPAlways 15
7297 uint32_t PREDICATEENABLE
;
7301 GEN8_MI_SET_PREDICATE_pack(__gen_user_data
*data
, void * restrict dst
,
7302 const struct GEN8_MI_SET_PREDICATE
* restrict values
)
7304 uint32_t *dw
= (uint32_t * restrict
) dst
;
7307 __gen_field(values
->CommandType
, 29, 31) |
7308 __gen_field(values
->MICommandOpcode
, 23, 28) |
7309 __gen_field(values
->PREDICATEENABLE
, 0, 3) |
7314 #define GEN8_MI_STORE_DATA_IMM_length 0x00000004
7315 #define GEN8_MI_STORE_DATA_IMM_length_bias 0x00000002
7316 #define GEN8_MI_STORE_DATA_IMM_header \
7318 .MICommandOpcode = 32, \
7321 struct GEN8_MI_STORE_DATA_IMM
{
7322 uint32_t CommandType
;
7323 uint32_t MICommandOpcode
;
7324 uint32_t UseGlobalGTT
;
7325 uint32_t StoreQword
;
7326 uint32_t DwordLength
;
7327 __gen_address_type Address
;
7328 uint32_t CoreModeEnable
;
7329 uint32_t DataDWord0
;
7330 uint32_t DataDWord1
;
7334 GEN8_MI_STORE_DATA_IMM_pack(__gen_user_data
*data
, void * restrict dst
,
7335 const struct GEN8_MI_STORE_DATA_IMM
* restrict values
)
7337 uint32_t *dw
= (uint32_t * restrict
) dst
;
7340 __gen_field(values
->CommandType
, 29, 31) |
7341 __gen_field(values
->MICommandOpcode
, 23, 28) |
7342 __gen_field(values
->UseGlobalGTT
, 22, 22) |
7343 __gen_field(values
->StoreQword
, 21, 21) |
7344 __gen_field(values
->DwordLength
, 0, 9) |
7348 __gen_field(values
->CoreModeEnable
, 0, 0) |
7352 __gen_combine_address(data
, &dw
[1], values
->Address
, dw1
);
7358 __gen_field(values
->DataDWord0
, 0, 31) |
7362 __gen_field(values
->DataDWord1
, 0, 31) |
7367 #define GEN8_MI_STORE_DATA_INDEX_length 0x00000003
7368 #define GEN8_MI_STORE_DATA_INDEX_length_bias 0x00000002
7369 #define GEN8_MI_STORE_DATA_INDEX_header \
7371 .MICommandOpcode = 33, \
7374 struct GEN8_MI_STORE_DATA_INDEX
{
7375 uint32_t CommandType
;
7376 uint32_t MICommandOpcode
;
7377 uint32_t UsePerProcessHardwareStatusPage
;
7378 uint32_t DwordLength
;
7380 uint32_t DataDWord0
;
7381 uint32_t DataDWord1
;
7385 GEN8_MI_STORE_DATA_INDEX_pack(__gen_user_data
*data
, void * restrict dst
,
7386 const struct GEN8_MI_STORE_DATA_INDEX
* restrict values
)
7388 uint32_t *dw
= (uint32_t * restrict
) dst
;
7391 __gen_field(values
->CommandType
, 29, 31) |
7392 __gen_field(values
->MICommandOpcode
, 23, 28) |
7393 __gen_field(values
->UsePerProcessHardwareStatusPage
, 21, 21) |
7394 __gen_field(values
->DwordLength
, 0, 7) |
7398 __gen_field(values
->Offset
, 2, 11) |
7402 __gen_field(values
->DataDWord0
, 0, 31) |
7406 __gen_field(values
->DataDWord1
, 0, 31) |
7411 #define GEN8_MI_STORE_URB_MEM_length 0x00000004
7412 #define GEN8_MI_STORE_URB_MEM_length_bias 0x00000002
7413 #define GEN8_MI_STORE_URB_MEM_header \
7415 .MICommandOpcode = 45, \
7418 struct GEN8_MI_STORE_URB_MEM
{
7419 uint32_t CommandType
;
7420 uint32_t MICommandOpcode
;
7421 uint32_t DwordLength
;
7422 uint32_t URBAddress
;
7423 __gen_address_type MemoryAddress
;
7427 GEN8_MI_STORE_URB_MEM_pack(__gen_user_data
*data
, void * restrict dst
,
7428 const struct GEN8_MI_STORE_URB_MEM
* restrict values
)
7430 uint32_t *dw
= (uint32_t * restrict
) dst
;
7433 __gen_field(values
->CommandType
, 29, 31) |
7434 __gen_field(values
->MICommandOpcode
, 23, 28) |
7435 __gen_field(values
->DwordLength
, 0, 7) |
7439 __gen_field(values
->URBAddress
, 2, 14) |
7446 __gen_combine_address(data
, &dw
[2], values
->MemoryAddress
, dw2
);
7453 #define GEN8_MI_SUSPEND_FLUSH_length 0x00000001
7454 #define GEN8_MI_SUSPEND_FLUSH_length_bias 0x00000001
7455 #define GEN8_MI_SUSPEND_FLUSH_header \
7457 .MICommandOpcode = 11
7459 struct GEN8_MI_SUSPEND_FLUSH
{
7460 uint32_t CommandType
;
7461 uint32_t MICommandOpcode
;
7462 uint32_t SuspendFlush
;
7466 GEN8_MI_SUSPEND_FLUSH_pack(__gen_user_data
*data
, void * restrict dst
,
7467 const struct GEN8_MI_SUSPEND_FLUSH
* restrict values
)
7469 uint32_t *dw
= (uint32_t * restrict
) dst
;
7472 __gen_field(values
->CommandType
, 29, 31) |
7473 __gen_field(values
->MICommandOpcode
, 23, 28) |
7474 __gen_field(values
->SuspendFlush
, 0, 0) |
7479 #define GEN8_MI_TOPOLOGY_FILTER_length 0x00000001
7480 #define GEN8_MI_TOPOLOGY_FILTER_length_bias 0x00000001
7481 #define GEN8_MI_TOPOLOGY_FILTER_header \
7483 .MICommandOpcode = 13
7485 struct GEN8_MI_TOPOLOGY_FILTER
{
7486 uint32_t CommandType
;
7487 uint32_t MICommandOpcode
;
7488 uint32_t TopologyFilterValue
;
7492 GEN8_MI_TOPOLOGY_FILTER_pack(__gen_user_data
*data
, void * restrict dst
,
7493 const struct GEN8_MI_TOPOLOGY_FILTER
* restrict values
)
7495 uint32_t *dw
= (uint32_t * restrict
) dst
;
7498 __gen_field(values
->CommandType
, 29, 31) |
7499 __gen_field(values
->MICommandOpcode
, 23, 28) |
7500 __gen_field(values
->TopologyFilterValue
, 0, 5) |
7505 #define GEN8_MI_UPDATE_GTT_length_bias 0x00000002
7506 #define GEN8_MI_UPDATE_GTT_header \
7508 .MICommandOpcode = 35
7510 struct GEN8_MI_UPDATE_GTT
{
7511 uint32_t CommandType
;
7512 uint32_t MICommandOpcode
;
7513 uint32_t DwordLength
;
7514 __gen_address_type EntryAddress
;
7515 /* variable length fields follow */
7519 GEN8_MI_UPDATE_GTT_pack(__gen_user_data
*data
, void * restrict dst
,
7520 const struct GEN8_MI_UPDATE_GTT
* restrict values
)
7522 uint32_t *dw
= (uint32_t * restrict
) dst
;
7525 __gen_field(values
->CommandType
, 29, 31) |
7526 __gen_field(values
->MICommandOpcode
, 23, 28) |
7527 __gen_field(values
->DwordLength
, 0, 9) |
7534 __gen_combine_address(data
, &dw
[1], values
->EntryAddress
, dw1
);
7536 /* variable length fields follow */
7539 #define GEN8_MI_URB_ATOMIC_ALLOC_length 0x00000001
7540 #define GEN8_MI_URB_ATOMIC_ALLOC_length_bias 0x00000001
7541 #define GEN8_MI_URB_ATOMIC_ALLOC_header \
7543 .MICommandOpcode = 9
7545 struct GEN8_MI_URB_ATOMIC_ALLOC
{
7546 uint32_t CommandType
;
7547 uint32_t MICommandOpcode
;
7548 uint32_t URBAtomicStorageOffset
;
7549 uint32_t URBAtomicStorageSize
;
7553 GEN8_MI_URB_ATOMIC_ALLOC_pack(__gen_user_data
*data
, void * restrict dst
,
7554 const struct GEN8_MI_URB_ATOMIC_ALLOC
* restrict values
)
7556 uint32_t *dw
= (uint32_t * restrict
) dst
;
7559 __gen_field(values
->CommandType
, 29, 31) |
7560 __gen_field(values
->MICommandOpcode
, 23, 28) |
7561 __gen_field(values
->URBAtomicStorageOffset
, 12, 19) |
7562 __gen_field(values
->URBAtomicStorageSize
, 0, 8) |
7567 #define GEN8_MI_URB_CLEAR_length 0x00000002
7568 #define GEN8_MI_URB_CLEAR_length_bias 0x00000002
7569 #define GEN8_MI_URB_CLEAR_header \
7571 .MICommandOpcode = 25, \
7574 struct GEN8_MI_URB_CLEAR
{
7575 uint32_t CommandType
;
7576 uint32_t MICommandOpcode
;
7577 uint32_t DwordLength
;
7578 uint32_t URBClearLength
;
7579 uint32_t URBAddress
;
7583 GEN8_MI_URB_CLEAR_pack(__gen_user_data
*data
, void * restrict dst
,
7584 const struct GEN8_MI_URB_CLEAR
* restrict values
)
7586 uint32_t *dw
= (uint32_t * restrict
) dst
;
7589 __gen_field(values
->CommandType
, 29, 31) |
7590 __gen_field(values
->MICommandOpcode
, 23, 28) |
7591 __gen_field(values
->DwordLength
, 0, 7) |
7595 __gen_field(values
->URBClearLength
, 16, 29) |
7596 __gen_offset(values
->URBAddress
, 0, 14) |
7601 #define GEN8_MI_USER_INTERRUPT_length 0x00000001
7602 #define GEN8_MI_USER_INTERRUPT_length_bias 0x00000001
7603 #define GEN8_MI_USER_INTERRUPT_header \
7605 .MICommandOpcode = 2
7607 struct GEN8_MI_USER_INTERRUPT
{
7608 uint32_t CommandType
;
7609 uint32_t MICommandOpcode
;
7613 GEN8_MI_USER_INTERRUPT_pack(__gen_user_data
*data
, void * restrict dst
,
7614 const struct GEN8_MI_USER_INTERRUPT
* restrict values
)
7616 uint32_t *dw
= (uint32_t * restrict
) dst
;
7619 __gen_field(values
->CommandType
, 29, 31) |
7620 __gen_field(values
->MICommandOpcode
, 23, 28) |
7625 #define GEN8_MI_WAIT_FOR_EVENT_length 0x00000001
7626 #define GEN8_MI_WAIT_FOR_EVENT_length_bias 0x00000001
7627 #define GEN8_MI_WAIT_FOR_EVENT_header \
7629 .MICommandOpcode = 3
7631 struct GEN8_MI_WAIT_FOR_EVENT
{
7632 uint32_t CommandType
;
7633 uint32_t MICommandOpcode
;
7634 uint32_t DisplayPipeCVerticalBlankWaitEnable
;
7635 uint32_t DisplaySpriteCFlipPendingWaitEnable
;
7636 uint32_t DisplayPlaneCFlipPendingWaitEnable
;
7637 uint32_t DisplayPipeCScanLineWaitEnable
;
7638 uint32_t DisplayPipeBVerticalBlankWaitEnable
;
7639 uint32_t DisplaySpriteBFlipPendingWaitEnable
;
7640 uint32_t DisplayPlaneBFlipPendingWaitEnable
;
7641 uint32_t DisplayPipeBScanLineWaitEnable
;
7642 uint32_t DisplayPipeAVerticalBlankWaitEnable
;
7643 uint32_t DisplaySpriteAFlipPendingWaitEnable
;
7644 uint32_t DisplayPlaneAFlipPendingWaitEnable
;
7645 uint32_t DisplayPipeAScanLineWaitEnable
;
7649 GEN8_MI_WAIT_FOR_EVENT_pack(__gen_user_data
*data
, void * restrict dst
,
7650 const struct GEN8_MI_WAIT_FOR_EVENT
* restrict values
)
7652 uint32_t *dw
= (uint32_t * restrict
) dst
;
7655 __gen_field(values
->CommandType
, 29, 31) |
7656 __gen_field(values
->MICommandOpcode
, 23, 28) |
7657 __gen_field(values
->DisplayPipeCVerticalBlankWaitEnable
, 21, 21) |
7658 __gen_field(values
->DisplaySpriteCFlipPendingWaitEnable
, 20, 20) |
7659 __gen_field(values
->DisplayPlaneCFlipPendingWaitEnable
, 15, 15) |
7660 __gen_field(values
->DisplayPipeCScanLineWaitEnable
, 14, 14) |
7661 __gen_field(values
->DisplayPipeBVerticalBlankWaitEnable
, 11, 11) |
7662 __gen_field(values
->DisplaySpriteBFlipPendingWaitEnable
, 10, 10) |
7663 __gen_field(values
->DisplayPlaneBFlipPendingWaitEnable
, 9, 9) |
7664 __gen_field(values
->DisplayPipeBScanLineWaitEnable
, 8, 8) |
7665 __gen_field(values
->DisplayPipeAVerticalBlankWaitEnable
, 3, 3) |
7666 __gen_field(values
->DisplaySpriteAFlipPendingWaitEnable
, 2, 2) |
7667 __gen_field(values
->DisplayPlaneAFlipPendingWaitEnable
, 1, 1) |
7668 __gen_field(values
->DisplayPipeAScanLineWaitEnable
, 0, 0) |
7673 #define GEN8_PIPE_CONTROL_length 0x00000006
7674 #define GEN8_PIPE_CONTROL_length_bias 0x00000002
7675 #define GEN8_PIPE_CONTROL_header \
7677 .CommandSubType = 3, \
7678 ._3DCommandOpcode = 2, \
7679 ._3DCommandSubOpcode = 0, \
7682 struct GEN8_PIPE_CONTROL
{
7683 uint32_t CommandType
;
7684 uint32_t CommandSubType
;
7685 uint32_t _3DCommandOpcode
;
7686 uint32_t _3DCommandSubOpcode
;
7687 uint32_t DwordLength
;
7690 uint32_t DestinationAddressType
;
7691 #define NoLRIOperation 0
7692 #define MMIOWriteImmediateData 1
7693 uint32_t LRIPostSyncOperation
;
7694 uint32_t StoreDataIndex
;
7695 uint32_t CommandStreamerStallEnable
;
7698 uint32_t GlobalSnapshotCountReset
;
7699 uint32_t TLBInvalidate
;
7700 uint32_t GenericMediaStateClear
;
7702 #define WriteImmediateData 1
7703 #define WritePSDepthCount 2
7704 #define WriteTimestamp 3
7705 uint32_t PostSyncOperation
;
7706 uint32_t DepthStallEnable
;
7707 #define DisableFlush 0
7708 #define EnableFlush 1
7709 uint32_t RenderTargetCacheFlushEnable
;
7710 uint32_t InstructionCacheInvalidateEnable
;
7711 uint32_t TextureCacheInvalidationEnable
;
7712 uint32_t IndirectStatePointersDisable
;
7713 uint32_t NotifyEnable
;
7714 uint32_t PipeControlFlushEnable
;
7715 uint32_t DCFlushEnable
;
7716 uint32_t VFCacheInvalidationEnable
;
7717 uint32_t ConstantCacheInvalidationEnable
;
7718 uint32_t StateCacheInvalidationEnable
;
7719 uint32_t StallAtPixelScoreboard
;
7720 #define FlushDisabled 0
7721 #define FlushEnabled 1
7722 uint32_t DepthCacheFlushEnable
;
7723 __gen_address_type Address
;
7724 __gen_address_type AddressHigh
;
7725 uint64_t ImmediateData
;
7729 GEN8_PIPE_CONTROL_pack(__gen_user_data
*data
, void * restrict dst
,
7730 const struct GEN8_PIPE_CONTROL
* restrict values
)
7732 uint32_t *dw
= (uint32_t * restrict
) dst
;
7735 __gen_field(values
->CommandType
, 29, 31) |
7736 __gen_field(values
->CommandSubType
, 27, 28) |
7737 __gen_field(values
->_3DCommandOpcode
, 24, 26) |
7738 __gen_field(values
->_3DCommandSubOpcode
, 16, 23) |
7739 __gen_field(values
->DwordLength
, 0, 7) |
7743 __gen_field(values
->DestinationAddressType
, 24, 24) |
7744 __gen_field(values
->LRIPostSyncOperation
, 23, 23) |
7745 __gen_field(values
->StoreDataIndex
, 21, 21) |
7746 __gen_field(values
->CommandStreamerStallEnable
, 20, 20) |
7747 __gen_field(values
->GlobalSnapshotCountReset
, 19, 19) |
7748 __gen_field(values
->TLBInvalidate
, 18, 18) |
7749 __gen_field(values
->GenericMediaStateClear
, 16, 16) |
7750 __gen_field(values
->PostSyncOperation
, 14, 15) |
7751 __gen_field(values
->DepthStallEnable
, 13, 13) |
7752 __gen_field(values
->RenderTargetCacheFlushEnable
, 12, 12) |
7753 __gen_field(values
->InstructionCacheInvalidateEnable
, 11, 11) |
7754 __gen_field(values
->TextureCacheInvalidationEnable
, 10, 10) |
7755 __gen_field(values
->IndirectStatePointersDisable
, 9, 9) |
7756 __gen_field(values
->NotifyEnable
, 8, 8) |
7757 __gen_field(values
->PipeControlFlushEnable
, 7, 7) |
7758 __gen_field(values
->DCFlushEnable
, 5, 5) |
7759 __gen_field(values
->VFCacheInvalidationEnable
, 4, 4) |
7760 __gen_field(values
->ConstantCacheInvalidationEnable
, 3, 3) |
7761 __gen_field(values
->StateCacheInvalidationEnable
, 2, 2) |
7762 __gen_field(values
->StallAtPixelScoreboard
, 1, 1) |
7763 __gen_field(values
->DepthCacheFlushEnable
, 0, 0) |
7770 __gen_combine_address(data
, &dw
[2], values
->Address
, dw2
);
7776 __gen_combine_address(data
, &dw
[3], values
->AddressHigh
, dw3
);
7779 __gen_field(values
->ImmediateData
, 0, 63) |
7787 #define GEN8_3DSTATE_CONSTANT_BODY_length 0x0000000a
7789 #define GEN8_BINDING_TABLE_EDIT_ENTRY_length 0x00000001
7791 #define GEN8_GATHER_CONSTANT_ENTRY_length 0x00000001
7793 #define GEN8_VERTEX_BUFFER_STATE_length 0x00000004
7795 #define GEN8_VERTEX_ELEMENT_STATE_length 0x00000002
7797 #define GEN8_SO_DECL_ENTRY_length 0x00000002
7799 #define GEN8_SO_DECL_length 0x00000001
7801 #define GEN8_SF_OUTPUT_ATTRIBUTE_DETAIL_length 0x00000001
7803 #define GEN8_SCISSOR_RECT_length 0x00000002
7805 struct GEN8_SCISSOR_RECT
{
7806 uint32_t ScissorRectangleYMin
;
7807 uint32_t ScissorRectangleXMin
;
7808 uint32_t ScissorRectangleYMax
;
7809 uint32_t ScissorRectangleXMax
;
7813 GEN8_SCISSOR_RECT_pack(__gen_user_data
*data
, void * restrict dst
,
7814 const struct GEN8_SCISSOR_RECT
* restrict values
)
7816 uint32_t *dw
= (uint32_t * restrict
) dst
;
7819 __gen_field(values
->ScissorRectangleYMin
, 16, 31) |
7820 __gen_field(values
->ScissorRectangleXMin
, 0, 15) |
7824 __gen_field(values
->ScissorRectangleYMax
, 16, 31) |
7825 __gen_field(values
->ScissorRectangleXMax
, 0, 15) |
7830 #define GEN8_SF_CLIP_VIEWPORT_length 0x00000010
7832 struct GEN8_SF_CLIP_VIEWPORT
{
7833 float ViewportMatrixElementm00
;
7834 float ViewportMatrixElementm11
;
7835 float ViewportMatrixElementm22
;
7836 float ViewportMatrixElementm30
;
7837 float ViewportMatrixElementm31
;
7838 float ViewportMatrixElementm32
;
7839 float XMinClipGuardband
;
7840 float XMaxClipGuardband
;
7841 float YMinClipGuardband
;
7842 float YMaxClipGuardband
;
7850 GEN8_SF_CLIP_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
7851 const struct GEN8_SF_CLIP_VIEWPORT
* restrict values
)
7853 uint32_t *dw
= (uint32_t * restrict
) dst
;
7856 __gen_float(values
->ViewportMatrixElementm00
) |
7860 __gen_float(values
->ViewportMatrixElementm11
) |
7864 __gen_float(values
->ViewportMatrixElementm22
) |
7868 __gen_float(values
->ViewportMatrixElementm30
) |
7872 __gen_float(values
->ViewportMatrixElementm31
) |
7876 __gen_float(values
->ViewportMatrixElementm32
) |
7886 __gen_float(values
->XMinClipGuardband
) |
7890 __gen_float(values
->XMaxClipGuardband
) |
7894 __gen_float(values
->YMinClipGuardband
) |
7898 __gen_float(values
->YMaxClipGuardband
) |
7902 __gen_float(values
->XMinViewPort
) |
7906 __gen_float(values
->XMaxViewPort
) |
7910 __gen_float(values
->YMinViewPort
) |
7914 __gen_float(values
->YMaxViewPort
) |
7919 #define GEN8_BLEND_STATE_length 0x00000011
7921 struct GEN8_BLEND_STATE_ENTRY
{
7922 uint32_t LogicOpEnable
;
7923 uint32_t LogicOpFunction
;
7924 uint32_t PreBlendSourceOnlyClampEnable
;
7925 #define COLORCLAMP_UNORM 0
7926 #define COLORCLAMP_SNORM 1
7927 #define COLORCLAMP_RTFORMAT 2
7928 uint32_t ColorClampRange
;
7929 uint32_t PreBlendColorClampEnable
;
7930 uint32_t PostBlendColorClampEnable
;
7931 uint32_t ColorBufferBlendEnable
;
7932 uint32_t SourceBlendFactor
;
7933 uint32_t DestinationBlendFactor
;
7934 uint32_t ColorBlendFunction
;
7935 uint32_t SourceAlphaBlendFactor
;
7936 uint32_t DestinationAlphaBlendFactor
;
7937 uint32_t AlphaBlendFunction
;
7938 uint32_t WriteDisableAlpha
;
7939 uint32_t WriteDisableRed
;
7940 uint32_t WriteDisableGreen
;
7941 uint32_t WriteDisableBlue
;
7945 GEN8_BLEND_STATE_ENTRY_pack(__gen_user_data
*data
, void * restrict dst
,
7946 const struct GEN8_BLEND_STATE_ENTRY
* restrict values
)
7948 uint32_t *dw
= (uint32_t * restrict
) dst
;
7951 __gen_field(values
->LogicOpEnable
, 63, 63) |
7952 __gen_field(values
->LogicOpFunction
, 59, 62) |
7953 __gen_field(values
->PreBlendSourceOnlyClampEnable
, 36, 36) |
7954 __gen_field(values
->ColorClampRange
, 34, 35) |
7955 __gen_field(values
->PreBlendColorClampEnable
, 33, 33) |
7956 __gen_field(values
->PostBlendColorClampEnable
, 32, 32) |
7957 __gen_field(values
->ColorBufferBlendEnable
, 31, 31) |
7958 __gen_field(values
->SourceBlendFactor
, 26, 30) |
7959 __gen_field(values
->DestinationBlendFactor
, 21, 25) |
7960 __gen_field(values
->ColorBlendFunction
, 18, 20) |
7961 __gen_field(values
->SourceAlphaBlendFactor
, 13, 17) |
7962 __gen_field(values
->DestinationAlphaBlendFactor
, 8, 12) |
7963 __gen_field(values
->AlphaBlendFunction
, 5, 7) |
7964 __gen_field(values
->WriteDisableAlpha
, 3, 3) |
7965 __gen_field(values
->WriteDisableRed
, 2, 2) |
7966 __gen_field(values
->WriteDisableGreen
, 1, 1) |
7967 __gen_field(values
->WriteDisableBlue
, 0, 0) |
7972 struct GEN8_BLEND_STATE
{
7973 uint32_t AlphaToCoverageEnable
;
7974 uint32_t IndependentAlphaBlendEnable
;
7975 uint32_t AlphaToOneEnable
;
7976 uint32_t AlphaToCoverageDitherEnable
;
7977 uint32_t AlphaTestEnable
;
7978 uint32_t AlphaTestFunction
;
7979 uint32_t ColorDitherEnable
;
7980 uint32_t XDitherOffset
;
7981 uint32_t YDitherOffset
;
7982 struct GEN8_BLEND_STATE_ENTRY Entry
;
7986 GEN8_BLEND_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
7987 const struct GEN8_BLEND_STATE
* restrict values
)
7989 uint32_t *dw
= (uint32_t * restrict
) dst
;
7992 __gen_field(values
->AlphaToCoverageEnable
, 31, 31) |
7993 __gen_field(values
->IndependentAlphaBlendEnable
, 30, 30) |
7994 __gen_field(values
->AlphaToOneEnable
, 29, 29) |
7995 __gen_field(values
->AlphaToCoverageDitherEnable
, 28, 28) |
7996 __gen_field(values
->AlphaTestEnable
, 27, 27) |
7997 __gen_field(values
->AlphaTestFunction
, 24, 26) |
7998 __gen_field(values
->ColorDitherEnable
, 23, 23) |
7999 __gen_field(values
->XDitherOffset
, 21, 22) |
8000 __gen_field(values
->YDitherOffset
, 19, 20) |
8003 GEN8_BLEND_STATE_ENTRY_pack(data
, &dw
[1], &values
->Entry
);
8006 #define GEN8_BLEND_STATE_ENTRY_length 0x00000001
8008 #define GEN8_CC_VIEWPORT_length 0x00000002
8010 struct GEN8_CC_VIEWPORT
{
8016 GEN8_CC_VIEWPORT_pack(__gen_user_data
*data
, void * restrict dst
,
8017 const struct GEN8_CC_VIEWPORT
* restrict values
)
8019 uint32_t *dw
= (uint32_t * restrict
) dst
;
8022 __gen_float(values
->MinimumDepth
) |
8026 __gen_float(values
->MaximumDepth
) |
8031 #define GEN8_COLOR_CALC_STATE_length 0x00000006
8033 struct GEN8_COLOR_CALC_STATE
{
8034 uint32_t StencilReferenceValue
;
8035 uint32_t BackFaceStencilReferenceValue
;
8037 #define NotCancelled 1
8038 uint32_t RoundDisableFunctionDisable
;
8039 #define ALPHATEST_UNORM8 0
8040 #define ALPHATEST_FLOAT32 1
8041 uint32_t AlphaTestFormat
;
8042 uint32_t AlphaReferenceValueAsUNORM8
;
8043 float AlphaReferenceValueAsFLOAT32
;
8044 float BlendConstantColorRed
;
8045 float BlendConstantColorGreen
;
8046 float BlendConstantColorBlue
;
8047 float BlendConstantColorAlpha
;
8051 GEN8_COLOR_CALC_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8052 const struct GEN8_COLOR_CALC_STATE
* restrict values
)
8054 uint32_t *dw
= (uint32_t * restrict
) dst
;
8057 __gen_field(values
->StencilReferenceValue
, 24, 31) |
8058 __gen_field(values
->BackFaceStencilReferenceValue
, 16, 23) |
8059 __gen_field(values
->RoundDisableFunctionDisable
, 15, 15) |
8060 __gen_field(values
->AlphaTestFormat
, 0, 0) |
8064 __gen_field(values
->AlphaReferenceValueAsUNORM8
, 0, 31) |
8065 __gen_float(values
->AlphaReferenceValueAsFLOAT32
) |
8069 __gen_float(values
->BlendConstantColorRed
) |
8073 __gen_float(values
->BlendConstantColorGreen
) |
8077 __gen_float(values
->BlendConstantColorBlue
) |
8081 __gen_float(values
->BlendConstantColorAlpha
) |
8086 #define GEN8_MEMORY_OBJECT_CONTROL_STATE_length 0x00000001
8088 #define GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_length 0x00000001
8090 struct GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS
{
8091 #define UseCacheabilityControlsfrompagetableUCwithFenceifcoherentcycle 0
8092 #define UncacheableUCnoncacheable 1
8093 #define WritethroughWT 2
8094 #define WritebackWB 3
8095 uint32_t MemoryTypeLLCeLLCCacheabilityControlLeLLCCC
;
8098 #define LLCeLLCAllowed 2
8099 #define L3LLCeLLCAllowed 3
8100 uint32_t TargetCacheTC
;
8101 uint32_t EncryptedData
;
8102 #define PoorChance 3
8103 #define NormalChance 2
8104 #define BetterChance 1
8105 #define BestChance 0
8106 uint32_t AgeforQUADLRUAGE
;
8110 GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS_pack(__gen_user_data
*data
, void * restrict dst
,
8111 const struct GEN8_VEB_DI_IECP_COMMAND_SURFACE_CONTROL_BITS
* restrict values
)
8113 uint32_t *dw
= (uint32_t * restrict
) dst
;
8116 __gen_field(values
->MemoryTypeLLCeLLCCacheabilityControlLeLLCCC
, 5, 6) |
8117 __gen_field(values
->TargetCacheTC
, 3, 4) |
8118 __gen_field(values
->EncryptedData
, 2, 2) |
8119 __gen_field(values
->AgeforQUADLRUAGE
, 0, 1) |
8124 #define GEN8_INTERFACE_DESCRIPTOR_DATA_length 0x00000008
8126 struct GEN8_INTERFACE_DESCRIPTOR_DATA
{
8127 uint32_t KernelStartPointer
;
8128 uint32_t KernelStartPointerHigh
;
8130 #define SetByKernel 1
8131 uint32_t DenormMode
;
8134 uint32_t SingleProgramFlow
;
8135 #define NormalPriority 0
8136 #define HighPriority 1
8137 uint32_t ThreadPriority
;
8140 uint32_t FloatingPointMode
;
8141 uint32_t IllegalOpcodeExceptionEnable
;
8142 uint32_t MaskStackExceptionEnable
;
8143 uint32_t SoftwareExceptionEnable
;
8144 uint32_t SamplerStatePointer
;
8145 #define Nosamplersused 0
8146 #define Between1and4samplersused 1
8147 #define Between5and8samplersused 2
8148 #define Between9and12samplersused 3
8149 #define Between13and16samplersused 4
8150 uint32_t SamplerCount
;
8151 uint32_t BindingTablePointer
;
8152 uint32_t BindingTableEntryCount
;
8153 uint32_t ConstantIndirectURBEntryReadLength
;
8154 uint32_t ConstantURBEntryReadOffset
;
8159 uint32_t RoundingMode
;
8160 uint32_t BarrierEnable
;
8164 #define Encodes16k 4
8165 #define Encodes32k 8
8166 #define Encodes64k 16
8167 uint32_t SharedLocalMemorySize
;
8168 uint32_t NumberofThreadsinGPGPUThreadGroup
;
8169 uint32_t CrossThreadConstantDataReadLength
;
8173 GEN8_INTERFACE_DESCRIPTOR_DATA_pack(__gen_user_data
*data
, void * restrict dst
,
8174 const struct GEN8_INTERFACE_DESCRIPTOR_DATA
* restrict values
)
8176 uint32_t *dw
= (uint32_t * restrict
) dst
;
8179 __gen_offset(values
->KernelStartPointer
, 6, 31) |
8183 __gen_offset(values
->KernelStartPointerHigh
, 0, 15) |
8187 __gen_field(values
->DenormMode
, 19, 19) |
8188 __gen_field(values
->SingleProgramFlow
, 18, 18) |
8189 __gen_field(values
->ThreadPriority
, 17, 17) |
8190 __gen_field(values
->FloatingPointMode
, 16, 16) |
8191 __gen_field(values
->IllegalOpcodeExceptionEnable
, 13, 13) |
8192 __gen_field(values
->MaskStackExceptionEnable
, 11, 11) |
8193 __gen_field(values
->SoftwareExceptionEnable
, 7, 7) |
8197 __gen_offset(values
->SamplerStatePointer
, 5, 31) |
8198 __gen_field(values
->SamplerCount
, 2, 4) |
8202 __gen_offset(values
->BindingTablePointer
, 5, 15) |
8203 __gen_field(values
->BindingTableEntryCount
, 0, 4) |
8207 __gen_field(values
->ConstantIndirectURBEntryReadLength
, 16, 31) |
8208 __gen_field(values
->ConstantURBEntryReadOffset
, 0, 15) |
8212 __gen_field(values
->RoundingMode
, 22, 23) |
8213 __gen_field(values
->BarrierEnable
, 21, 21) |
8214 __gen_field(values
->SharedLocalMemorySize
, 16, 20) |
8215 __gen_field(values
->NumberofThreadsinGPGPUThreadGroup
, 0, 9) |
8219 __gen_field(values
->CrossThreadConstantDataReadLength
, 0, 7) |
8224 #define GEN8_PALETTE_ENTRY_length 0x00000001
8226 #define GEN8_BINDING_TABLE_STATE_length 0x00000001
8228 struct GEN8_BINDING_TABLE_STATE
{
8229 uint32_t SurfaceStatePointer
;
8233 GEN8_BINDING_TABLE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8234 const struct GEN8_BINDING_TABLE_STATE
* restrict values
)
8236 uint32_t *dw
= (uint32_t * restrict
) dst
;
8239 __gen_offset(values
->SurfaceStatePointer
, 6, 31) |
8244 #define GEN8_RENDER_SURFACE_STATE_length 0x00000010
8246 struct GEN8_RENDER_SURFACE_STATE
{
8247 #define SURFTYPE_1D 0
8248 #define SURFTYPE_2D 1
8249 #define SURFTYPE_3D 2
8250 #define SURFTYPE_CUBE 3
8251 #define SURFTYPE_BUFFER 4
8252 #define SURFTYPE_STRBUF 5
8253 #define SURFTYPE_NULL 7
8254 uint32_t SurfaceType
;
8255 uint32_t SurfaceArray
;
8256 uint32_t SurfaceFormat
;
8260 uint32_t SurfaceVerticalAlignment
;
8264 uint32_t SurfaceHorizontalAlignment
;
8270 uint32_t VerticalLineStride
;
8271 uint32_t VerticalLineStrideOffset
;
8272 uint32_t SamplerL2BypassModeDisable
;
8273 #define WriteOnlyCache 0
8274 #define ReadWriteCache 1
8275 uint32_t RenderCacheReadWriteMode
;
8276 #define NORMAL_MODE 0
8277 #define PROGRESSIVE_FRAME 2
8278 #define INTERLACED_FRAME 3
8279 uint32_t MediaBoundaryPixelMode
;
8280 uint32_t CubeFaceEnablePositiveZ
;
8281 uint32_t CubeFaceEnableNegativeZ
;
8282 uint32_t CubeFaceEnablePositiveY
;
8283 uint32_t CubeFaceEnableNegativeY
;
8284 uint32_t CubeFaceEnablePositiveX
;
8285 uint32_t CubeFaceEnableNegativeX
;
8286 struct GEN8_MEMORY_OBJECT_CONTROL_STATE MemoryObjectControlState
;
8288 uint32_t SurfaceQPitch
;
8292 uint32_t SurfacePitch
;
8296 uint32_t RenderTargetAndSampleUnormRotation
;
8297 uint32_t MinimumArrayElement
;
8298 uint32_t RenderTargetViewExtent
;
8300 #define DEPTH_STENCIL 1
8301 uint32_t MultisampledSurfaceStorageFormat
;
8302 #define MULTISAMPLECOUNT_1 0
8303 #define MULTISAMPLECOUNT_2 1
8304 #define MULTISAMPLECOUNT_4 2
8305 #define MULTISAMPLECOUNT_8 3
8306 uint32_t NumberofMultisamples
;
8307 uint32_t MultisamplePositionPaletteIndex
;
8310 uint32_t EWADisableForCube
;
8311 #define GPUcoherent 0
8312 #define IAcoherent 1
8313 uint32_t CoherencyType
;
8314 uint32_t SurfaceMinLOD
;
8315 uint32_t MIPCountLOD
;
8316 uint32_t AuxiliarySurfaceQPitch
;
8317 uint32_t AuxiliarySurfacePitch
;
8320 #define AUX_APPEND 2
8322 uint32_t AuxiliarySurfaceMode
;
8323 uint32_t SeparateUVPlaneEnable
;
8324 uint32_t XOffsetforUorUVPlane
;
8325 uint32_t YOffsetforUorUVPlane
;
8326 uint32_t RedClearColor
;
8327 uint32_t GreenClearColor
;
8328 uint32_t BlueClearColor
;
8329 uint32_t AlphaClearColor
;
8330 uint32_t ShaderChannelSelectRed
;
8331 uint32_t ShaderChannelSelectGreen
;
8332 uint32_t ShaderChannelSelectBlue
;
8333 uint32_t ShaderChannelSelectAlpha
;
8334 float ResourceMinLOD
;
8335 __gen_address_type SurfaceBaseAddress
;
8336 uint32_t XOffsetforVPlane
;
8337 uint32_t YOffsetforVPlane
;
8338 uint32_t AuxiliaryTableIndexforMediaCompressedSurface
;
8339 __gen_address_type AuxiliarySurfaceBaseAddress
;
8343 GEN8_RENDER_SURFACE_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8344 const struct GEN8_RENDER_SURFACE_STATE
* restrict values
)
8346 uint32_t *dw
= (uint32_t * restrict
) dst
;
8349 __gen_field(values
->SurfaceType
, 29, 31) |
8350 __gen_field(values
->SurfaceArray
, 28, 28) |
8351 __gen_field(values
->SurfaceFormat
, 18, 26) |
8352 __gen_field(values
->SurfaceVerticalAlignment
, 16, 17) |
8353 __gen_field(values
->SurfaceHorizontalAlignment
, 14, 15) |
8354 __gen_field(values
->TileMode
, 12, 13) |
8355 __gen_field(values
->VerticalLineStride
, 11, 11) |
8356 __gen_field(values
->VerticalLineStrideOffset
, 10, 10) |
8357 __gen_field(values
->SamplerL2BypassModeDisable
, 9, 9) |
8358 __gen_field(values
->RenderCacheReadWriteMode
, 8, 8) |
8359 __gen_field(values
->MediaBoundaryPixelMode
, 6, 7) |
8360 __gen_field(values
->CubeFaceEnablePositiveZ
, 0, 0) |
8361 __gen_field(values
->CubeFaceEnableNegativeZ
, 1, 1) |
8362 __gen_field(values
->CubeFaceEnablePositiveY
, 2, 2) |
8363 __gen_field(values
->CubeFaceEnableNegativeY
, 3, 3) |
8364 __gen_field(values
->CubeFaceEnablePositiveX
, 4, 4) |
8365 __gen_field(values
->CubeFaceEnableNegativeX
, 5, 5) |
8368 uint32_t dw_MemoryObjectControlState
;
8369 GEN8_MEMORY_OBJECT_CONTROL_STATE_pack(data
, &dw_MemoryObjectControlState
, &values
->MemoryObjectControlState
);
8371 __gen_field(dw_MemoryObjectControlState
, 24, 30) |
8372 __gen_field(values
->BaseMipLevel
* (1 << 1), 19, 23) |
8373 __gen_field(values
->SurfaceQPitch
, 0, 14) |
8377 __gen_field(values
->Height
, 16, 29) |
8378 __gen_field(values
->Width
, 0, 13) |
8382 __gen_field(values
->Depth
, 21, 31) |
8383 __gen_field(values
->SurfacePitch
, 0, 17) |
8387 __gen_field(values
->RenderTargetAndSampleUnormRotation
, 29, 30) |
8388 __gen_field(values
->MinimumArrayElement
, 18, 28) |
8389 __gen_field(values
->RenderTargetViewExtent
, 7, 17) |
8390 __gen_field(values
->MultisampledSurfaceStorageFormat
, 6, 6) |
8391 __gen_field(values
->NumberofMultisamples
, 3, 5) |
8392 __gen_field(values
->MultisamplePositionPaletteIndex
, 0, 2) |
8396 __gen_offset(values
->XOffset
, 25, 31) |
8397 __gen_offset(values
->YOffset
, 21, 23) |
8398 __gen_field(values
->EWADisableForCube
, 20, 20) |
8399 __gen_field(values
->CoherencyType
, 14, 14) |
8400 __gen_field(values
->SurfaceMinLOD
, 4, 7) |
8401 __gen_field(values
->MIPCountLOD
, 0, 3) |
8405 __gen_field(values
->AuxiliarySurfaceQPitch
, 16, 30) |
8406 __gen_field(values
->AuxiliarySurfacePitch
, 3, 11) |
8407 __gen_field(values
->AuxiliarySurfaceMode
, 0, 2) |
8408 __gen_field(values
->SeparateUVPlaneEnable
, 31, 31) |
8409 __gen_field(values
->XOffsetforUorUVPlane
, 16, 29) |
8410 __gen_field(values
->YOffsetforUorUVPlane
, 0, 13) |
8414 __gen_field(values
->RedClearColor
, 31, 31) |
8415 __gen_field(values
->GreenClearColor
, 30, 30) |
8416 __gen_field(values
->BlueClearColor
, 29, 29) |
8417 __gen_field(values
->AlphaClearColor
, 28, 28) |
8418 __gen_field(values
->ShaderChannelSelectRed
, 25, 27) |
8419 __gen_field(values
->ShaderChannelSelectGreen
, 22, 24) |
8420 __gen_field(values
->ShaderChannelSelectBlue
, 19, 21) |
8421 __gen_field(values
->ShaderChannelSelectAlpha
, 16, 18) |
8422 __gen_field(values
->ResourceMinLOD
* (1 << 8), 0, 11) |
8429 __gen_combine_address(data
, &dw
[8], values
->SurfaceBaseAddress
, dw8
);
8435 __gen_field(values
->XOffsetforVPlane
, 48, 61) |
8436 __gen_field(values
->YOffsetforVPlane
, 32, 45) |
8437 __gen_field(values
->AuxiliaryTableIndexforMediaCompressedSurface
, 21, 31) |
8441 __gen_combine_address(data
, &dw
[10], values
->AuxiliarySurfaceBaseAddress
, dw10
);
8444 dw
[11] = qw10
>> 32;
8460 #define GEN8_SAMPLER_STATE_length 0x00000004
8462 struct GEN8_SAMPLER_STATE
{
8463 uint32_t SamplerDisable
;
8466 uint32_t TextureBorderColorMode
;
8467 #define CLAMP_NONE 0
8469 uint32_t LODPreClampMode
;
8471 #define MIPFILTER_NONE 0
8472 #define MIPFILTER_NEAREST 1
8473 #define MIPFILTER_LINEAR 3
8474 uint32_t MipModeFilter
;
8475 #define MAPFILTER_NEAREST 0
8476 #define MAPFILTER_LINEAR 1
8477 #define MAPFILTER_ANISOTROPIC 2
8478 #define MAPFILTER_MONO 6
8479 uint32_t MagModeFilter
;
8480 #define MAPFILTER_NEAREST 0
8481 #define MAPFILTER_LINEAR 1
8482 #define MAPFILTER_ANISOTROPIC 2
8483 #define MAPFILTER_MONO 6
8484 uint32_t MinModeFilter
;
8485 uint32_t TextureLODBias
;
8487 #define EWAApproximation 1
8488 uint32_t AnisotropicAlgorithm
;
8491 uint32_t ChromaKeyEnable
;
8492 uint32_t ChromaKeyIndex
;
8493 #define KEYFILTER_KILL_ON_ANY_MATCH 0
8494 #define KEYFILTER_REPLACE_BLACK 1
8495 uint32_t ChromaKeyMode
;
8496 #define PREFILTEROPALWAYS 0
8497 #define PREFILTEROPNEVER 1
8498 #define PREFILTEROPLESS 2
8499 #define PREFILTEROPEQUAL 3
8500 #define PREFILTEROPLEQUAL 4
8501 #define PREFILTEROPGREATER 5
8502 #define PREFILTEROPNOTEQUAL 6
8503 #define PREFILTEROPGEQUAL 7
8504 uint32_t ShadowFunction
;
8505 #define PROGRAMMED 0
8507 uint32_t CubeSurfaceControlMode
;
8508 uint32_t IndirectStatePointer
;
8511 uint32_t LODClampMagnificationMode
;
8520 uint32_t MaximumAnisotropy
;
8521 uint32_t RAddressMinFilterRoundingEnable
;
8522 uint32_t RAddressMagFilterRoundingEnable
;
8523 uint32_t VAddressMinFilterRoundingEnable
;
8524 uint32_t VAddressMagFilterRoundingEnable
;
8525 uint32_t UAddressMinFilterRoundingEnable
;
8526 uint32_t UAddressMagFilterRoundingEnable
;
8531 uint32_t TrilinearFilterQuality
;
8532 uint32_t NonnormalizedCoordinateEnable
;
8533 uint32_t TCXAddressControlMode
;
8534 uint32_t TCYAddressControlMode
;
8535 uint32_t TCZAddressControlMode
;
8539 GEN8_SAMPLER_STATE_pack(__gen_user_data
*data
, void * restrict dst
,
8540 const struct GEN8_SAMPLER_STATE
* restrict values
)
8542 uint32_t *dw
= (uint32_t * restrict
) dst
;
8545 __gen_field(values
->SamplerDisable
, 31, 31) |
8546 __gen_field(values
->TextureBorderColorMode
, 29, 29) |
8547 __gen_field(values
->LODPreClampMode
, 27, 28) |
8548 __gen_field(values
->BaseMipLevel
* (1 << 1), 22, 26) |
8549 __gen_field(values
->MipModeFilter
, 20, 21) |
8550 __gen_field(values
->MagModeFilter
, 17, 19) |
8551 __gen_field(values
->MinModeFilter
, 14, 16) |
8552 __gen_field(values
->TextureLODBias
, 1, 13) |
8553 __gen_field(values
->AnisotropicAlgorithm
, 0, 0) |
8557 __gen_field(values
->MinLOD
* (1 << 8), 20, 31) |
8558 __gen_field(values
->MaxLOD
* (1 << 8), 8, 19) |
8559 __gen_field(values
->ChromaKeyEnable
, 7, 7) |
8560 __gen_field(values
->ChromaKeyIndex
, 5, 6) |
8561 __gen_field(values
->ChromaKeyMode
, 4, 4) |
8562 __gen_field(values
->ShadowFunction
, 1, 3) |
8563 __gen_field(values
->CubeSurfaceControlMode
, 0, 0) |
8567 __gen_field(values
->IndirectStatePointer
, 6, 23) |
8568 __gen_field(values
->LODClampMagnificationMode
, 0, 0) |
8572 __gen_field(values
->MaximumAnisotropy
, 19, 21) |
8573 __gen_field(values
->RAddressMinFilterRoundingEnable
, 13, 13) |
8574 __gen_field(values
->RAddressMagFilterRoundingEnable
, 14, 14) |
8575 __gen_field(values
->VAddressMinFilterRoundingEnable
, 15, 15) |
8576 __gen_field(values
->VAddressMagFilterRoundingEnable
, 16, 16) |
8577 __gen_field(values
->UAddressMinFilterRoundingEnable
, 17, 17) |
8578 __gen_field(values
->UAddressMagFilterRoundingEnable
, 18, 18) |
8579 __gen_field(values
->TrilinearFilterQuality
, 11, 12) |
8580 __gen_field(values
->NonnormalizedCoordinateEnable
, 10, 10) |
8581 __gen_field(values
->TCXAddressControlMode
, 6, 8) |
8582 __gen_field(values
->TCYAddressControlMode
, 3, 5) |
8583 __gen_field(values
->TCZAddressControlMode
, 0, 2) |
8588 /* Enum 3D_Prim_Topo_Type */
8589 #define _3DPRIM_POINTLIST 1
8590 #define _3DPRIM_LINELIST 2
8591 #define _3DPRIM_LINESTRIP 3
8592 #define _3DPRIM_TRILIST 4
8593 #define _3DPRIM_TRISTRIP 5
8594 #define _3DPRIM_TRIFAN 6
8595 #define _3DPRIM_QUADLIST 7
8596 #define _3DPRIM_QUADSTRIP 8
8597 #define _3DPRIM_LINELIST_ADJ 9
8598 #define _3DPRIM_LISTSTRIP_ADJ 10
8599 #define _3DPRIM_TRILIST_ADJ 11
8600 #define _3DPRIM_TRISTRIP_ADJ 12
8601 #define _3DPRIM_TRISTRIP_REVERSE 13
8602 #define _3DPRIM_POLYGON 14
8603 #define _3DPRIM_RECTLIST 15
8604 #define _3DPRIM_LINELOOP 16
8605 #define _3DPRIM_POINTLIST_BF 17
8606 #define _3DPRIM_LINESTRIP_CONT 18
8607 #define _3DPRIM_LINESTRIP_BF 19
8608 #define _3DPRIM_LINESTRIP_CONT_BF 20
8609 #define _3DPRIM_TRIFAN_NOSTIPPLE 22
8610 #define _3DPRIM_PATCHLIST_1 32
8611 #define _3DPRIM_PATCHLIST_2 33
8612 #define _3DPRIM_PATCHLIST_3 34
8613 #define _3DPRIM_PATCHLIST_4 35
8614 #define _3DPRIM_PATCHLIST_5 36
8615 #define _3DPRIM_PATCHLIST_6 37
8616 #define _3DPRIM_PATCHLIST_7 38
8617 #define _3DPRIM_PATCHLIST_8 39
8618 #define _3DPRIM_PATCHLIST_9 40
8619 #define _3DPRIM_PATCHLIST_10 41
8620 #define _3DPRIM_PATCHLIST_11 42
8621 #define _3DPRIM_PATCHLIST_12 43
8622 #define _3DPRIM_PATCHLIST_13 44
8623 #define _3DPRIM_PATCHLIST_14 45
8624 #define _3DPRIM_PATCHLIST_15 46
8625 #define _3DPRIM_PATCHLIST_16 47
8626 #define _3DPRIM_PATCHLIST_17 48
8627 #define _3DPRIM_PATCHLIST_18 49
8628 #define _3DPRIM_PATCHLIST_19 50
8629 #define _3DPRIM_PATCHLIST_20 51
8630 #define _3DPRIM_PATCHLIST_21 52
8631 #define _3DPRIM_PATCHLIST_22 53
8632 #define _3DPRIM_PATCHLIST_23 54
8633 #define _3DPRIM_PATCHLIST_24 55
8634 #define _3DPRIM_PATCHLIST_25 56
8635 #define _3DPRIM_PATCHLIST_26 57
8636 #define _3DPRIM_PATCHLIST_27 58
8637 #define _3DPRIM_PATCHLIST_28 59
8638 #define _3DPRIM_PATCHLIST_29 60
8639 #define _3DPRIM_PATCHLIST_30 61
8640 #define _3DPRIM_PATCHLIST_31 62
8641 #define _3DPRIM_PATCHLIST_32 63
8643 /* Enum 3D_Vertex_Component_Control */
8644 #define VFCOMP_NOSTORE 0
8645 #define VFCOMP_STORE_SRC 1
8646 #define VFCOMP_STORE_0 2
8647 #define VFCOMP_STORE_1_FP 3
8648 #define VFCOMP_STORE_1_INT 4
8649 #define VFCOMP_STORE_PID 7
8651 /* Enum WRAP_SHORTEST_ENABLE */
8668 /* Enum 3D_Stencil_Operation */
8669 #define STENCILOP_KEEP 0
8670 #define STENCILOP_ZERO 1
8671 #define STENCILOP_REPLACE 2
8672 #define STENCILOP_INCRSAT 3
8673 #define STENCILOP_DECRSAT 4
8674 #define STENCILOP_INCR 5
8675 #define STENCILOP_DECR 6
8676 #define STENCILOP_INVERT 7
8678 /* Enum 3D_Color_Buffer_Blend_Factor */
8679 #define BLENDFACTOR_ONE 1
8680 #define BLENDFACTOR_SRC_COLOR 2
8681 #define BLENDFACTOR_SRC_ALPHA 3
8682 #define BLENDFACTOR_DST_ALPHA 4
8683 #define BLENDFACTOR_DST_COLOR 5
8684 #define BLENDFACTOR_SRC_ALPHA_SATURATE 6
8685 #define BLENDFACTOR_CONST_COLOR 7
8686 #define BLENDFACTOR_CONST_ALPHA 8
8687 #define BLENDFACTOR_SRC1_COLOR 9
8688 #define BLENDFACTOR_SRC1_ALPHA 10
8689 #define BLENDFACTOR_ZERO 17
8690 #define BLENDFACTOR_INV_SRC_COLOR 18
8691 #define BLENDFACTOR_INV_SRC_ALPHA 19
8692 #define BLENDFACTOR_INV_DST_ALPHA 20
8693 #define BLENDFACTOR_INV_DST_COLOR 21
8694 #define BLENDFACTOR_INV_CONST_COLOR 23
8695 #define BLENDFACTOR_INV_CONST_ALPHA 24
8696 #define BLENDFACTOR_INV_SRC1_COLOR 25
8697 #define BLENDFACTOR_INV_SRC1_ALPHA 26
8699 /* Enum 3D_Color_Buffer_Blend_Function */
8700 #define BLENDFUNCTION_ADD 0
8701 #define BLENDFUNCTION_SUBTRACT 1
8702 #define BLENDFUNCTION_REVERSE_SUBTRACT 2
8703 #define BLENDFUNCTION_MIN 3
8704 #define BLENDFUNCTION_MAX 4
8706 /* Enum 3D_Compare_Function */
8707 #define COMPAREFUNCTION_ALWAYS 0
8708 #define COMPAREFUNCTION_NEVER 1
8709 #define COMPAREFUNCTION_LESS 2
8710 #define COMPAREFUNCTION_EQUAL 3
8711 #define COMPAREFUNCTION_LEQUAL 4
8712 #define COMPAREFUNCTION_GREATER 5
8713 #define COMPAREFUNCTION_NOTEQUAL 6
8714 #define COMPAREFUNCTION_GEQUAL 7
8716 /* Enum 3D_Logic_Op_Function */
8717 #define LOGICOP_CLEAR 0
8718 #define LOGICOP_NOR 1
8719 #define LOGICOP_AND_INVERTED 2
8720 #define LOGICOP_COPY_INVERTED 3
8721 #define LOGICOP_AND_REVERSE 4
8722 #define LOGICOP_INVERT 5
8723 #define LOGICOP_XOR 6
8724 #define LOGICOP_NAND 7
8725 #define LOGICOP_AND 8
8726 #define LOGICOP_EQUIV 9
8727 #define LOGICOP_NOOP 10
8728 #define LOGICOP_OR_INVERTED 11
8729 #define LOGICOP_COPY 12
8730 #define LOGICOP_OR_REVERSE 13
8731 #define LOGICOP_OR 14
8732 #define LOGICOP_SET 15
8734 /* Enum SURFACE_FORMAT */
8735 #define R32G32B32A32_FLOAT 0
8736 #define R32G32B32A32_SINT 1
8737 #define R32G32B32A32_UINT 2
8738 #define R32G32B32A32_UNORM 3
8739 #define R32G32B32A32_SNORM 4
8740 #define R64G64_FLOAT 5
8741 #define R32G32B32X32_FLOAT 6
8742 #define R32G32B32A32_SSCALED 7
8743 #define R32G32B32A32_USCALED 8
8744 #define R32G32B32A32_SFIXED 32
8745 #define R64G64_PASSTHRU 33
8746 #define R32G32B32_FLOAT 64
8747 #define R32G32B32_SINT 65
8748 #define R32G32B32_UINT 66
8749 #define R32G32B32_UNORM 67
8750 #define R32G32B32_SNORM 68
8751 #define R32G32B32_SSCALED 69
8752 #define R32G32B32_USCALED 70
8753 #define R32G32B32_SFIXED 80
8754 #define R16G16B16A16_UNORM 128
8755 #define R16G16B16A16_SNORM 129
8756 #define R16G16B16A16_SINT 130
8757 #define R16G16B16A16_UINT 131
8758 #define R16G16B16A16_FLOAT 132
8759 #define R32G32_FLOAT 133
8760 #define R32G32_SINT 134
8761 #define R32G32_UINT 135
8762 #define R32_FLOAT_X8X24_TYPELESS 136
8763 #define X32_TYPELESS_G8X24_UINT 137
8764 #define L32A32_FLOAT 138
8765 #define R32G32_UNORM 139
8766 #define R32G32_SNORM 140
8767 #define R64_FLOAT 141
8768 #define R16G16B16X16_UNORM 142
8769 #define R16G16B16X16_FLOAT 143
8770 #define A32X32_FLOAT 144
8771 #define L32X32_FLOAT 145
8772 #define I32X32_FLOAT 146
8773 #define R16G16B16A16_SSCALED 147
8774 #define R16G16B16A16_USCALED 148
8775 #define R32G32_SSCALED 149
8776 #define R32G32_USCALED 150
8777 #define R32G32_SFIXED 160
8778 #define R64_PASSTHRU 161
8779 #define B8G8R8A8_UNORM 192
8780 #define B8G8R8A8_UNORM_SRGB 193
8781 #define R10G10B10A2_UNORM 194
8782 #define R10G10B10A2_UNORM_SRGB 195
8783 #define R10G10B10A2_UINT 196
8784 #define R10G10B10_SNORM_A2_UNORM 197
8785 #define R8G8B8A8_UNORM 199
8786 #define R8G8B8A8_UNORM_SRGB 200
8787 #define R8G8B8A8_SNORM 201
8788 #define R8G8B8A8_SINT 202
8789 #define R8G8B8A8_UINT 203
8790 #define R16G16_UNORM 204
8791 #define R16G16_SNORM 205
8792 #define R16G16_SINT 206
8793 #define R16G16_UINT 207
8794 #define R16G16_FLOAT 208
8795 #define B10G10R10A2_UNORM 209
8796 #define B10G10R10A2_UNORM_SRGB 210
8797 #define R11G11B10_FLOAT 211
8798 #define R32_SINT 214
8799 #define R32_UINT 215
8800 #define R32_FLOAT 216
8801 #define R24_UNORM_X8_TYPELESS 217
8802 #define X24_TYPELESS_G8_UINT 218
8803 #define L32_UNORM 221
8804 #define A32_UNORM 222
8805 #define L16A16_UNORM 223
8806 #define I24X8_UNORM 224
8807 #define L24X8_UNORM 225
8808 #define A24X8_UNORM 226
8809 #define I32_FLOAT 227
8810 #define L32_FLOAT 228
8811 #define A32_FLOAT 229
8812 #define X8B8_UNORM_G8R8_SNORM 230
8813 #define A8X8_UNORM_G8R8_SNORM 231
8814 #define B8X8_UNORM_G8R8_SNORM 232
8815 #define B8G8R8X8_UNORM 233
8816 #define B8G8R8X8_UNORM_SRGB 234
8817 #define R8G8B8X8_UNORM 235
8818 #define R8G8B8X8_UNORM_SRGB 236
8819 #define R9G9B9E5_SHAREDEXP 237
8820 #define B10G10R10X2_UNORM 238
8821 #define L16A16_FLOAT 240
8822 #define R32_UNORM 241
8823 #define R32_SNORM 242
8824 #define R10G10B10X2_USCALED 243
8825 #define R8G8B8A8_SSCALED 244
8826 #define R8G8B8A8_USCALED 245
8827 #define R16G16_SSCALED 246
8828 #define R16G16_USCALED 247
8829 #define R32_SSCALED 248
8830 #define R32_USCALED 249
8831 #define B5G6R5_UNORM 256
8832 #define B5G6R5_UNORM_SRGB 257
8833 #define B5G5R5A1_UNORM 258
8834 #define B5G5R5A1_UNORM_SRGB 259
8835 #define B4G4R4A4_UNORM 260
8836 #define B4G4R4A4_UNORM_SRGB 261
8837 #define R8G8_UNORM 262
8838 #define R8G8_SNORM 263
8839 #define R8G8_SINT 264
8840 #define R8G8_UINT 265
8841 #define R16_UNORM 266
8842 #define R16_SNORM 267
8843 #define R16_SINT 268
8844 #define R16_UINT 269
8845 #define R16_FLOAT 270
8846 #define A8P8_UNORM_PALETTE0 271
8847 #define A8P8_UNORM_PALETTE1 272
8848 #define I16_UNORM 273
8849 #define L16_UNORM 274
8850 #define A16_UNORM 275
8851 #define L8A8_UNORM 276
8852 #define I16_FLOAT 277
8853 #define L16_FLOAT 278
8854 #define A16_FLOAT 279
8855 #define L8A8_UNORM_SRGB 280
8856 #define R5G5_SNORM_B6_UNORM 281
8857 #define B5G5R5X1_UNORM 282
8858 #define B5G5R5X1_UNORM_SRGB 283
8859 #define R8G8_SSCALED 284
8860 #define R8G8_USCALED 285
8861 #define R16_SSCALED 286
8862 #define R16_USCALED 287
8863 #define P8A8_UNORM_PALETTE0 290
8864 #define P8A8_UNORM_PALETTE1 291
8865 #define A1B5G5R5_UNORM 292
8866 #define A4B4G4R4_UNORM 293
8867 #define L8A8_UINT 294
8868 #define L8A8_SINT 295
8869 #define R8_UNORM 320
8870 #define R8_SNORM 321
8873 #define A8_UNORM 324
8874 #define I8_UNORM 325
8875 #define L8_UNORM 326
8876 #define P4A4_UNORM_PALETTE0 327
8877 #define A4P4_UNORM_PALETTE0 328
8878 #define R8_SSCALED 329
8879 #define R8_USCALED 330
8880 #define P8_UNORM_PALETTE0 331
8881 #define L8_UNORM_SRGB 332
8882 #define P8_UNORM_PALETTE1 333
8883 #define P4A4_UNORM_PALETTE1 334
8884 #define A4P4_UNORM_PALETTE1 335
8885 #define Y8_UNORM 336
8890 #define DXT1_RGB_SRGB 384
8891 #define R1_UNORM 385
8892 #define YCRCB_NORMAL 386
8893 #define YCRCB_SWAPUVY 387
8894 #define P2_UNORM_PALETTE0 388
8895 #define P2_UNORM_PALETTE1 389
8896 #define BC1_UNORM 390
8897 #define BC2_UNORM 391
8898 #define BC3_UNORM 392
8899 #define BC4_UNORM 393
8900 #define BC5_UNORM 394
8901 #define BC1_UNORM_SRGB 395
8902 #define BC2_UNORM_SRGB 396
8903 #define BC3_UNORM_SRGB 397
8905 #define YCRCB_SWAPUV 399
8906 #define YCRCB_SWAPY 400
8907 #define DXT1_RGB 401
8909 #define R8G8B8_UNORM 403
8910 #define R8G8B8_SNORM 404
8911 #define R8G8B8_SSCALED 405
8912 #define R8G8B8_USCALED 406
8913 #define R64G64B64A64_FLOAT 407
8914 #define R64G64B64_FLOAT 408
8915 #define BC4_SNORM 409
8916 #define BC5_SNORM 410
8917 #define R16G16B16_FLOAT 411
8918 #define R16G16B16_UNORM 412
8919 #define R16G16B16_SNORM 413
8920 #define R16G16B16_SSCALED 414
8921 #define R16G16B16_USCALED 415
8922 #define BC6H_SF16 417
8923 #define BC7_UNORM 418
8924 #define BC7_UNORM_SRGB 419
8925 #define BC6H_UF16 420
8926 #define PLANAR_420_8 421
8927 #define R8G8B8_UNORM_SRGB 424
8928 #define ETC1_RGB8 425
8929 #define ETC2_RGB8 426
8931 #define EAC_RG11 428
8932 #define EAC_SIGNED_R11 429
8933 #define EAC_SIGNED_RG11 430
8934 #define ETC2_SRGB8 431
8935 #define R16G16B16_UINT 432
8936 #define R16G16B16_SINT 433
8937 #define R32_SFIXED 434
8938 #define R10G10B10A2_SNORM 435
8939 #define R10G10B10A2_USCALED 436
8940 #define R10G10B10A2_SSCALED 437
8941 #define R10G10B10A2_SINT 438
8942 #define B10G10R10A2_SNORM 439
8943 #define B10G10R10A2_USCALED 440
8944 #define B10G10R10A2_SSCALED 441
8945 #define B10G10R10A2_UINT 442
8946 #define B10G10R10A2_SINT 443
8947 #define R64G64B64A64_PASSTHRU 444
8948 #define R64G64B64_PASSTHRU 445
8949 #define ETC2_RGB8_PTA 448
8950 #define ETC2_SRGB8_PTA 449
8951 #define ETC2_EAC_RGBA8 450
8952 #define ETC2_EAC_SRGB8_A8 451
8953 #define R8G8B8_UINT 456
8954 #define R8G8B8_SINT 457
8957 /* Enum Shader Channel Select */
8965 /* Enum Clear Color */
8969 /* Enum Texture Coordinate Mode */
8971 #define TCM_MIRROR 1
8974 #define TCM_CLAMP_BORDER 4
8975 #define TCM_MIRROR_ONCE 5
8976 #define TCM_HALF_BORDER 6