1 /* SPDX-License-Identifier: GPL-2.0 OR MIT */
2 /*
3  * Copyright 2012-2022 VMware, Inc.
4  *
5  * Permission is hereby granted, free of charge, to any person
6  * obtaining a copy of this software and associated documentation
7  * files (the "Software"), to deal in the Software without
8  * restriction, including without limitation the rights to use, copy,
9  * modify, merge, publish, distribute, sublicense, and/or sell copies
10  * of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
20  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
21  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24  *
25  */
26 
27 /*
28  * svga3d_dx.h --
29  *
30  *    SVGA 3d hardware definitions for DX10 support.
31  */
32 
33 
34 
35 
36 
37 #ifndef _SVGA3D_DX_H_
38 #define _SVGA3D_DX_H_
39 
40 
41 
42 
43 
44 
45 #include "svga_reg.h"
46 #include "svga3d_limits.h"
47 #include "svga3d_types.h"
48 
49 
50 #define SVGA3D_INPUT_MIN               0
51 #define SVGA3D_INPUT_PER_VERTEX_DATA   0
52 #define SVGA3D_INPUT_PER_INSTANCE_DATA 1
53 #define SVGA3D_INPUT_MAX               2
54 typedef uint32 SVGA3dInputClassification;
55 
56 
57 #define SVGA3D_RESOURCE_TYPE_MIN      1
58 #define SVGA3D_RESOURCE_BUFFER        1
59 #define SVGA3D_RESOURCE_TEXTURE1D     2
60 #define SVGA3D_RESOURCE_TEXTURE2D     3
61 #define SVGA3D_RESOURCE_TEXTURE3D     4
62 #define SVGA3D_RESOURCE_TEXTURECUBE   5
63 #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6
64 #define SVGA3D_RESOURCE_BUFFEREX      6
65 #define SVGA3D_RESOURCE_TYPE_MAX      7
66 typedef uint32 SVGA3dResourceType;
67 
68 
69 #define SVGA3D_COLOR_WRITE_ENABLE_RED     (1 << 0)
70 #define SVGA3D_COLOR_WRITE_ENABLE_GREEN   (1 << 1)
71 #define SVGA3D_COLOR_WRITE_ENABLE_BLUE    (1 << 2)
72 #define SVGA3D_COLOR_WRITE_ENABLE_ALPHA   (1 << 3)
73 #define SVGA3D_COLOR_WRITE_ENABLE_ALL     (SVGA3D_COLOR_WRITE_ENABLE_RED |   \
74                                            SVGA3D_COLOR_WRITE_ENABLE_GREEN | \
75                                            SVGA3D_COLOR_WRITE_ENABLE_BLUE |  \
76                                            SVGA3D_COLOR_WRITE_ENABLE_ALPHA)
77 typedef uint8 SVGA3dColorWriteEnable;
78 
79 
80 #define SVGA3D_DEPTH_WRITE_MASK_ZERO   0
81 #define SVGA3D_DEPTH_WRITE_MASK_ALL    1
82 typedef uint8 SVGA3dDepthWriteMask;
83 
84 
85 #define SVGA3D_FILTER_MIP_LINEAR  (1 << 0)
86 #define SVGA3D_FILTER_MAG_LINEAR  (1 << 2)
87 #define SVGA3D_FILTER_MIN_LINEAR  (1 << 4)
88 #define SVGA3D_FILTER_ANISOTROPIC (1 << 6)
89 #define SVGA3D_FILTER_COMPARE     (1 << 7)
90 typedef uint32 SVGA3dFilter;
91 
92 
93 #define SVGA3D_CULL_INVALID 0
94 #define SVGA3D_CULL_MIN     1
95 #define SVGA3D_CULL_NONE    1
96 #define SVGA3D_CULL_FRONT   2
97 #define SVGA3D_CULL_BACK    3
98 #define SVGA3D_CULL_MAX     4
99 typedef uint8 SVGA3dCullMode;
100 
101 
102 #define SVGA3D_COMPARISON_INVALID         0
103 #define SVGA3D_COMPARISON_MIN             1
104 #define SVGA3D_COMPARISON_NEVER           1
105 #define SVGA3D_COMPARISON_LESS            2
106 #define SVGA3D_COMPARISON_EQUAL           3
107 #define SVGA3D_COMPARISON_LESS_EQUAL      4
108 #define SVGA3D_COMPARISON_GREATER         5
109 #define SVGA3D_COMPARISON_NOT_EQUAL       6
110 #define SVGA3D_COMPARISON_GREATER_EQUAL   7
111 #define SVGA3D_COMPARISON_ALWAYS          8
112 #define SVGA3D_COMPARISON_MAX             9
113 typedef uint8 SVGA3dComparisonFunc;
114 
115 
116 #define SVGA3D_MULTISAMPLE_RAST_DISABLE        0
117 #define SVGA3D_MULTISAMPLE_RAST_ENABLE         1
118 #define SVGA3D_MULTISAMPLE_RAST_DX_MAX         1
119 #define SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE   2
120 #define SVGA3D_MULTISAMPLE_RAST_MAX            2
121 typedef uint8 SVGA3dMultisampleRastEnable;
122 
123 #define SVGA3D_DX_MAX_VERTEXBUFFERS 32
124 #define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16
125 #define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32
126 #define SVGA3D_DX_MAX_SOTARGETS 4
127 #define SVGA3D_DX_MAX_SRVIEWS 128
128 #define SVGA3D_DX_MAX_CONSTBUFFERS 16
129 #define SVGA3D_DX_MAX_SAMPLERS 16
130 #define SVGA3D_DX_MAX_CLASS_INSTANCES 253
131 
132 #define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32))
133 
134 typedef uint32 SVGA3dShaderResourceViewId;
135 typedef uint32 SVGA3dRenderTargetViewId;
136 typedef uint32 SVGA3dDepthStencilViewId;
137 typedef uint32 SVGA3dUAViewId;
138 
139 typedef uint32 SVGA3dShaderId;
140 typedef uint32 SVGA3dElementLayoutId;
141 typedef uint32 SVGA3dSamplerId;
142 typedef uint32 SVGA3dBlendStateId;
143 typedef uint32 SVGA3dDepthStencilStateId;
144 typedef uint32 SVGA3dRasterizerStateId;
145 typedef uint32 SVGA3dQueryId;
146 typedef uint32 SVGA3dStreamOutputId;
147 
148 typedef union {
149    struct {
150       float r;
151       float g;
152       float b;
153       float a;
154    };
155 
156    float value[4];
157 } SVGA3dRGBAFloat;
158 
159 typedef union {
160    struct {
161       uint32 r;
162       uint32 g;
163       uint32 b;
164       uint32 a;
165    };
166 
167    uint32 value[4];
168 } SVGA3dRGBAUint32;
169 
170 typedef
171 #include "vmware_pack_begin.h"
172 struct {
173    uint32 cid;
174    SVGAMobId mobid;
175 }
176 #include "vmware_pack_end.h"
177 SVGAOTableDXContextEntry;
178 
179 typedef
180 #include "vmware_pack_begin.h"
181 struct SVGA3dCmdDXDefineContext {
182    uint32 cid;
183 }
184 #include "vmware_pack_end.h"
185 SVGA3dCmdDXDefineContext;
186 
187 typedef
188 #include "vmware_pack_begin.h"
189 struct SVGA3dCmdDXDestroyContext {
190    uint32 cid;
191 }
192 #include "vmware_pack_end.h"
193 SVGA3dCmdDXDestroyContext;
194 
195 
196 typedef
197 #include "vmware_pack_begin.h"
198 struct SVGA3dCmdDXBindContext {
199    uint32 cid;
200    SVGAMobId mobid;
201    uint32 validContents;
202 }
203 #include "vmware_pack_end.h"
204 SVGA3dCmdDXBindContext;
205 
206 
207 typedef
208 #include "vmware_pack_begin.h"
209 struct SVGA3dCmdDXReadbackContext {
210    uint32 cid;
211 }
212 #include "vmware_pack_end.h"
213 SVGA3dCmdDXReadbackContext;
214 
215 
216 typedef
217 #include "vmware_pack_begin.h"
218 struct SVGA3dCmdDXInvalidateContext {
219    uint32 cid;
220 }
221 #include "vmware_pack_end.h"
222 SVGA3dCmdDXInvalidateContext;
223 
224 typedef
225 #include "vmware_pack_begin.h"
226 struct SVGA3dCmdDXSetSingleConstantBuffer {
227    uint32 slot;
228    SVGA3dShaderType type;
229    SVGA3dSurfaceId sid;
230    uint32 offsetInBytes;
231    uint32 sizeInBytes;
232 }
233 #include "vmware_pack_end.h"
234 SVGA3dCmdDXSetSingleConstantBuffer;
235 
236 
237 typedef
238 #include "vmware_pack_begin.h"
239 struct SVGA3dCmdDXSetShaderResources {
240    uint32 startView;
241    SVGA3dShaderType type;
242 
243 
244 }
245 #include "vmware_pack_end.h"
246 SVGA3dCmdDXSetShaderResources;
247 
248 typedef
249 #include "vmware_pack_begin.h"
250 struct SVGA3dCmdDXSetShader {
251    SVGA3dShaderId shaderId;
252    SVGA3dShaderType type;
253 }
254 #include "vmware_pack_end.h"
255 SVGA3dCmdDXSetShader;
256 
257 
258 typedef union {
259    struct {
260       uint32 cbOffset : 12;
261       uint32 cbId     : 4;
262       uint32 baseSamp : 4;
263       uint32 baseTex  : 7;
264       uint32 reserved : 5;
265    };
266    uint32 value;
267 } SVGA3dIfaceData;
268 
269 typedef
270 #include "vmware_pack_begin.h"
271 struct SVGA3dCmdDXSetShaderIface {
272    SVGA3dShaderType type;
273    uint32 numClassInstances;
274    uint32 index;
275    uint32 iface;
276    SVGA3dIfaceData data;
277 }
278 #include "vmware_pack_end.h"
279 SVGA3dCmdDXSetShaderIface;
280 
281 typedef
282 #include "vmware_pack_begin.h"
283 struct SVGA3dCmdDXBindShaderIface {
284    uint32 cid;
285    SVGAMobId mobid;
286    uint32 offsetInBytes;
287 }
288 #include "vmware_pack_end.h"
289 SVGA3dCmdDXBindShaderIface;
290 
291 typedef
292 #include "vmware_pack_begin.h"
293 struct SVGA3dCmdDXSetSamplers {
294    uint32 startSampler;
295    SVGA3dShaderType type;
296 
297 
298 }
299 #include "vmware_pack_end.h"
300 SVGA3dCmdDXSetSamplers;
301 
302 typedef
303 #include "vmware_pack_begin.h"
304 struct SVGA3dCmdDXDraw {
305    uint32 vertexCount;
306    uint32 startVertexLocation;
307 }
308 #include "vmware_pack_end.h"
309 SVGA3dCmdDXDraw;
310 
311 typedef
312 #include "vmware_pack_begin.h"
313 struct SVGA3dCmdDXDrawIndexed {
314    uint32 indexCount;
315    uint32 startIndexLocation;
316    int32  baseVertexLocation;
317 }
318 #include "vmware_pack_end.h"
319 SVGA3dCmdDXDrawIndexed;
320 
321 typedef
322 #include "vmware_pack_begin.h"
323 struct SVGA3dCmdDXDrawInstanced {
324    uint32 vertexCountPerInstance;
325    uint32 instanceCount;
326    uint32 startVertexLocation;
327    uint32 startInstanceLocation;
328 }
329 #include "vmware_pack_end.h"
330 SVGA3dCmdDXDrawInstanced;
331 
332 typedef
333 #include "vmware_pack_begin.h"
334 struct SVGA3dCmdDXDrawIndexedInstanced {
335    uint32 indexCountPerInstance;
336    uint32 instanceCount;
337    uint32 startIndexLocation;
338    int32  baseVertexLocation;
339    uint32 startInstanceLocation;
340 }
341 #include "vmware_pack_end.h"
342 SVGA3dCmdDXDrawIndexedInstanced;
343 
344 typedef
345 #include "vmware_pack_begin.h"
346 struct SVGA3dCmdDXDrawIndexedInstancedIndirect {
347    SVGA3dSurfaceId argsBufferSid;
348    uint32 byteOffsetForArgs;
349 }
350 #include "vmware_pack_end.h"
351 SVGA3dCmdDXDrawIndexedInstancedIndirect;
352 
353 
354 typedef
355 #include "vmware_pack_begin.h"
356 struct SVGA3dCmdDXDrawInstancedIndirect {
357    SVGA3dSurfaceId argsBufferSid;
358    uint32 byteOffsetForArgs;
359 }
360 #include "vmware_pack_end.h"
361 SVGA3dCmdDXDrawInstancedIndirect;
362 
363 
364 typedef
365 #include "vmware_pack_begin.h"
366 struct SVGA3dCmdDXDrawAuto {
367    uint32 pad0;
368 }
369 #include "vmware_pack_end.h"
370 SVGA3dCmdDXDrawAuto;
371 
372 typedef
373 #include "vmware_pack_begin.h"
374 struct SVGA3dCmdDXDispatch {
375    uint32 threadGroupCountX;
376    uint32 threadGroupCountY;
377    uint32 threadGroupCountZ;
378 }
379 #include "vmware_pack_end.h"
380 SVGA3dCmdDXDispatch;
381 
382 
383 typedef
384 #include "vmware_pack_begin.h"
385 struct SVGA3dCmdDXDispatchIndirect {
386    SVGA3dSurfaceId argsBufferSid;
387    uint32 byteOffsetForArgs;
388 }
389 #include "vmware_pack_end.h"
390 SVGA3dCmdDXDispatchIndirect;
391 
392 
393 typedef
394 #include "vmware_pack_begin.h"
395 struct SVGA3dCmdDXSetInputLayout {
396    SVGA3dElementLayoutId elementLayoutId;
397 }
398 #include "vmware_pack_end.h"
399 SVGA3dCmdDXSetInputLayout;
400 
401 typedef
402 #include "vmware_pack_begin.h"
403 struct SVGA3dVertexBuffer {
404    SVGA3dSurfaceId sid;
405    uint32 stride;
406    uint32 offset;
407 }
408 #include "vmware_pack_end.h"
409 SVGA3dVertexBuffer;
410 
411 typedef
412 #include "vmware_pack_begin.h"
413 struct SVGA3dCmdDXSetVertexBuffers {
414    uint32 startBuffer;
415 
416 }
417 #include "vmware_pack_end.h"
418 SVGA3dCmdDXSetVertexBuffers;
419 
420 typedef
421 #include "vmware_pack_begin.h"
422 struct SVGA3dVertexBuffer_v2 {
423    SVGA3dSurfaceId sid;
424    uint32 stride;
425    uint32 offset;
426    uint32 sizeInBytes;
427 }
428 #include "vmware_pack_end.h"
429 SVGA3dVertexBuffer_v2;
430 
431 typedef
432 #include "vmware_pack_begin.h"
433 struct SVGA3dCmdDXSetVertexBuffers_v2 {
434    uint32 startBuffer;
435 
436 }
437 #include "vmware_pack_end.h"
438 SVGA3dCmdDXSetVertexBuffers_v2;
439 
440 typedef
441 #include "vmware_pack_begin.h"
442 struct SVGA3dVertexBufferOffsetAndSize {
443    uint32 stride;
444    uint32 offset;
445    uint32 sizeInBytes;
446 }
447 #include "vmware_pack_end.h"
448 SVGA3dVertexBufferOffsetAndSize;
449 
450 typedef
451 #include "vmware_pack_begin.h"
452 struct SVGA3dCmdDXSetVertexBuffersOffsetAndSize {
453    uint32 startBuffer;
454 
455 }
456 #include "vmware_pack_end.h"
457 SVGA3dCmdDXSetVertexBuffersOffsetAndSize;
458 
459 
460 typedef
461 #include "vmware_pack_begin.h"
462 struct SVGA3dCmdDXSetIndexBuffer {
463    SVGA3dSurfaceId sid;
464    SVGA3dSurfaceFormat format;
465    uint32 offset;
466 }
467 #include "vmware_pack_end.h"
468 SVGA3dCmdDXSetIndexBuffer;
469 
470 typedef
471 #include "vmware_pack_begin.h"
472 struct SVGA3dCmdDXSetIndexBuffer_v2 {
473    SVGA3dSurfaceId sid;
474    SVGA3dSurfaceFormat format;
475    uint32 offset;
476    uint32 sizeInBytes;
477 }
478 #include "vmware_pack_end.h"
479 SVGA3dCmdDXSetIndexBuffer_v2;
480 
481 typedef
482 #include "vmware_pack_begin.h"
483 struct SVGA3dCmdDXSetIndexBufferOffsetAndSize {
484    SVGA3dSurfaceFormat format;
485    uint32 offset;
486    uint32 sizeInBytes;
487 }
488 #include "vmware_pack_end.h"
489 SVGA3dCmdDXSetIndexBufferOffsetAndSize;
490 
491 
492 typedef
493 #include "vmware_pack_begin.h"
494 struct SVGA3dCmdDXSetTopology {
495    SVGA3dPrimitiveType topology;
496 }
497 #include "vmware_pack_end.h"
498 SVGA3dCmdDXSetTopology;
499 
500 typedef
501 #include "vmware_pack_begin.h"
502 struct SVGA3dCmdDXSetRenderTargets {
503    SVGA3dDepthStencilViewId depthStencilViewId;
504 
505 }
506 #include "vmware_pack_end.h"
507 SVGA3dCmdDXSetRenderTargets;
508 
509 typedef
510 #include "vmware_pack_begin.h"
511 struct SVGA3dCmdDXSetBlendState {
512    SVGA3dBlendStateId blendId;
513    float blendFactor[4];
514    uint32 sampleMask;
515 }
516 #include "vmware_pack_end.h"
517 SVGA3dCmdDXSetBlendState;
518 
519 typedef
520 #include "vmware_pack_begin.h"
521 struct SVGA3dCmdDXSetDepthStencilState {
522    SVGA3dDepthStencilStateId depthStencilId;
523    uint32 stencilRef;
524 }
525 #include "vmware_pack_end.h"
526 SVGA3dCmdDXSetDepthStencilState;
527 
528 typedef
529 #include "vmware_pack_begin.h"
530 struct SVGA3dCmdDXSetRasterizerState {
531    SVGA3dRasterizerStateId rasterizerId;
532 }
533 #include "vmware_pack_end.h"
534 SVGA3dCmdDXSetRasterizerState;
535 
536 
537 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
538 typedef uint32 SVGA3dDXQueryFlags;
539 
540 
541 #define SVGADX_QDSTATE_INVALID   ((uint8)-1)
542 #define SVGADX_QDSTATE_MIN       0
543 #define SVGADX_QDSTATE_IDLE      0
544 #define SVGADX_QDSTATE_ACTIVE    1
545 #define SVGADX_QDSTATE_PENDING   2
546 #define SVGADX_QDSTATE_FINISHED  3
547 #define SVGADX_QDSTATE_MAX       4
548 typedef uint8 SVGADXQueryDeviceState;
549 
550 typedef
551 #include "vmware_pack_begin.h"
552 struct {
553    SVGA3dQueryTypeUint8 type;
554    uint16 pad0;
555    SVGADXQueryDeviceState state;
556    SVGA3dDXQueryFlags flags;
557    SVGAMobId mobid;
558    uint32 offset;
559 }
560 #include "vmware_pack_end.h"
561 SVGACOTableDXQueryEntry;
562 
563 typedef
564 #include "vmware_pack_begin.h"
565 struct SVGA3dCmdDXDefineQuery {
566    SVGA3dQueryId queryId;
567    SVGA3dQueryType type;
568    SVGA3dDXQueryFlags flags;
569 }
570 #include "vmware_pack_end.h"
571 SVGA3dCmdDXDefineQuery;
572 
573 typedef
574 #include "vmware_pack_begin.h"
575 struct SVGA3dCmdDXDestroyQuery {
576    SVGA3dQueryId queryId;
577 }
578 #include "vmware_pack_end.h"
579 SVGA3dCmdDXDestroyQuery;
580 
581 typedef
582 #include "vmware_pack_begin.h"
583 struct SVGA3dCmdDXBindQuery {
584    SVGA3dQueryId queryId;
585    SVGAMobId mobid;
586 }
587 #include "vmware_pack_end.h"
588 SVGA3dCmdDXBindQuery;
589 
590 typedef
591 #include "vmware_pack_begin.h"
592 struct SVGA3dCmdDXSetQueryOffset {
593    SVGA3dQueryId queryId;
594    uint32 mobOffset;
595 }
596 #include "vmware_pack_end.h"
597 SVGA3dCmdDXSetQueryOffset;
598 
599 typedef
600 #include "vmware_pack_begin.h"
601 struct SVGA3dCmdDXBeginQuery {
602    SVGA3dQueryId queryId;
603 }
604 #include "vmware_pack_end.h"
605 SVGA3dCmdDXBeginQuery;
606 
607 typedef
608 #include "vmware_pack_begin.h"
609 struct SVGA3dCmdDXEndQuery {
610    SVGA3dQueryId queryId;
611 }
612 #include "vmware_pack_end.h"
613 SVGA3dCmdDXEndQuery;
614 
615 typedef
616 #include "vmware_pack_begin.h"
617 struct SVGA3dCmdDXReadbackQuery {
618    SVGA3dQueryId queryId;
619 }
620 #include "vmware_pack_end.h"
621 SVGA3dCmdDXReadbackQuery;
622 
623 typedef
624 #include "vmware_pack_begin.h"
625 struct SVGA3dCmdDXMoveQuery {
626    SVGA3dQueryId queryId;
627    SVGAMobId mobid;
628    uint32 mobOffset;
629 }
630 #include "vmware_pack_end.h"
631 SVGA3dCmdDXMoveQuery;
632 
633 typedef
634 #include "vmware_pack_begin.h"
635 struct SVGA3dCmdDXBindAllQuery {
636    uint32 cid;
637    SVGAMobId mobid;
638 }
639 #include "vmware_pack_end.h"
640 SVGA3dCmdDXBindAllQuery;
641 
642 typedef
643 #include "vmware_pack_begin.h"
644 struct SVGA3dCmdDXReadbackAllQuery {
645    uint32 cid;
646 }
647 #include "vmware_pack_end.h"
648 SVGA3dCmdDXReadbackAllQuery;
649 
650 typedef
651 #include "vmware_pack_begin.h"
652 struct SVGA3dCmdDXSetPredication {
653    SVGA3dQueryId queryId;
654    uint32 predicateValue;
655 }
656 #include "vmware_pack_end.h"
657 SVGA3dCmdDXSetPredication;
658 
659 typedef
660 #include "vmware_pack_begin.h"
661 struct MKS3dDXSOState {
662    uint32 offset;
663    uint32 intOffset;
664    uint32 vertexCount;
665    uint32 dead;
666 }
667 #include "vmware_pack_end.h"
668 SVGA3dDXSOState;
669 
670 
671 #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)
672 
673 typedef
674 #include "vmware_pack_begin.h"
675 struct SVGA3dSoTarget {
676    SVGA3dSurfaceId sid;
677    uint32 offset;
678    uint32 sizeInBytes;
679 }
680 #include "vmware_pack_end.h"
681 SVGA3dSoTarget;
682 
683 typedef
684 #include "vmware_pack_begin.h"
685 struct SVGA3dCmdDXSetSOTargets {
686    uint32 pad0;
687 
688 }
689 #include "vmware_pack_end.h"
690 SVGA3dCmdDXSetSOTargets;
691 
692 typedef
693 #include "vmware_pack_begin.h"
694 struct SVGA3dViewport
695 {
696    float x;
697    float y;
698    float width;
699    float height;
700    float minDepth;
701    float maxDepth;
702 }
703 #include "vmware_pack_end.h"
704 SVGA3dViewport;
705 
706 typedef
707 #include "vmware_pack_begin.h"
708 struct SVGA3dCmdDXSetViewports {
709    uint32 pad0;
710 
711 }
712 #include "vmware_pack_end.h"
713 SVGA3dCmdDXSetViewports;
714 
715 #define SVGA3D_DX_MAX_VIEWPORTS  16
716 
717 typedef
718 #include "vmware_pack_begin.h"
719 struct SVGA3dCmdDXSetScissorRects {
720    uint32 pad0;
721 
722 }
723 #include "vmware_pack_end.h"
724 SVGA3dCmdDXSetScissorRects;
725 
726 #define SVGA3D_DX_MAX_SCISSORRECTS  16
727 
728 typedef
729 #include "vmware_pack_begin.h"
730 struct SVGA3dCmdDXClearRenderTargetView {
731    SVGA3dRenderTargetViewId renderTargetViewId;
732    SVGA3dRGBAFloat rgba;
733 }
734 #include "vmware_pack_end.h"
735 SVGA3dCmdDXClearRenderTargetView;
736 
737 
738 
739 typedef
740 #include "vmware_pack_begin.h"
741 struct SVGA3dCmdDXClearDepthStencilView {
742    uint16 flags;
743    uint16 stencil;
744    SVGA3dDepthStencilViewId depthStencilViewId;
745    float depth;
746 }
747 #include "vmware_pack_end.h"
748 SVGA3dCmdDXClearDepthStencilView;
749 
750 typedef
751 #include "vmware_pack_begin.h"
752 struct SVGA3dCmdDXPredCopyRegion {
753    SVGA3dSurfaceId dstSid;
754    uint32 dstSubResource;
755    SVGA3dSurfaceId srcSid;
756    uint32 srcSubResource;
757    SVGA3dCopyBox box;
758 }
759 #include "vmware_pack_end.h"
760 SVGA3dCmdDXPredCopyRegion;
761 
762 
763 typedef
764 #include "vmware_pack_begin.h"
765 struct SVGA3dCmdDXPredStagingCopyRegion {
766    SVGA3dSurfaceId dstSid;
767    uint32 dstSubResource;
768    SVGA3dSurfaceId srcSid;
769    uint32 srcSubResource;
770    SVGA3dCopyBox box;
771    uint8 readback;
772    uint8 unsynchronized;
773    uint8 mustBeZero[2];
774 }
775 #include "vmware_pack_end.h"
776 SVGA3dCmdDXPredStagingCopyRegion;
777 
778 
779 typedef
780 #include "vmware_pack_begin.h"
781 struct SVGA3dCmdDXPredCopy {
782    SVGA3dSurfaceId dstSid;
783    SVGA3dSurfaceId srcSid;
784 }
785 #include "vmware_pack_end.h"
786 SVGA3dCmdDXPredCopy;
787 
788 typedef
789 #include "vmware_pack_begin.h"
790 struct SVGA3dCmdDXPredConvertRegion {
791    SVGA3dSurfaceId dstSid;
792    uint32 dstSubResource;
793    SVGA3dBox destBox;
794    SVGA3dSurfaceId srcSid;
795    uint32 srcSubResource;
796    SVGA3dBox srcBox;
797 }
798 #include "vmware_pack_end.h"
799 SVGA3dCmdDXPredConvertRegion;
800 
801 typedef
802 #include "vmware_pack_begin.h"
803 struct SVGA3dCmdDXPredStagingConvertRegion {
804    SVGA3dSurfaceId dstSid;
805    uint32 dstSubResource;
806    SVGA3dBox destBox;
807    SVGA3dSurfaceId srcSid;
808    uint32 srcSubResource;
809    SVGA3dBox srcBox;
810    uint8 readback;
811    uint8 unsynchronized;
812    uint8 mustBeZero[2];
813 }
814 #include "vmware_pack_end.h"
815 SVGA3dCmdDXPredStagingConvertRegion;
816 
817 
818 typedef
819 #include "vmware_pack_begin.h"
820 struct SVGA3dCmdDXPredConvert {
821    SVGA3dSurfaceId dstSid;
822    SVGA3dSurfaceId srcSid;
823 }
824 #include "vmware_pack_end.h"
825 SVGA3dCmdDXPredConvert;
826 
827 typedef
828 #include "vmware_pack_begin.h"
829 struct SVGA3dCmdDXPredStagingConvert {
830    SVGA3dSurfaceId dstSid;
831    SVGA3dSurfaceId srcSid;
832    uint8 readback;
833    uint8 unsynchronized;
834    uint8 mustBeZero[2];
835 }
836 #include "vmware_pack_end.h"
837 SVGA3dCmdDXPredStagingConvert;
838 
839 typedef
840 #include "vmware_pack_begin.h"
841 struct SVGA3dCmdDXBufferCopy {
842    SVGA3dSurfaceId dest;
843    SVGA3dSurfaceId src;
844    uint32 destX;
845    uint32 srcX;
846    uint32 width;
847 }
848 #include "vmware_pack_end.h"
849 SVGA3dCmdDXBufferCopy;
850 
851 
852 typedef
853 #include "vmware_pack_begin.h"
854 struct SVGA3dCmdDXStagingBufferCopy {
855    SVGA3dSurfaceId dest;
856    SVGA3dSurfaceId src;
857    uint32 destX;
858    uint32 srcX;
859    uint32 width;
860    uint8 readback;
861    uint8 unsynchronized;
862    uint8 mustBeZero[2];
863 }
864 #include "vmware_pack_end.h"
865 SVGA3dCmdDXStagingBufferCopy;
866 
867 
868 
869 typedef
870 #include "vmware_pack_begin.h"
871 struct {
872    SVGA3dSurfaceId dstSid;
873    uint32 dstSubResource;
874    SVGA3dSurfaceId srcSid;
875    uint32 srcSubResource;
876    SVGA3dSurfaceFormat copyFormat;
877 }
878 #include "vmware_pack_end.h"
879 SVGA3dCmdDXResolveCopy;
880 
881 
882 typedef
883 #include "vmware_pack_begin.h"
884 struct {
885    SVGA3dSurfaceId dstSid;
886    uint32 dstSubResource;
887    SVGA3dSurfaceId srcSid;
888    uint32 srcSubResource;
889    SVGA3dSurfaceFormat copyFormat;
890 }
891 #include "vmware_pack_end.h"
892 SVGA3dCmdDXPredResolveCopy;
893 
894 typedef uint32 SVGA3dDXPresentBltMode;
895 #define SVGADX_PRESENTBLT_LINEAR           (1 << 0)
896 #define SVGADX_PRESENTBLT_FORCE_SRC_SRGB   (1 << 1)
897 #define SVGADX_PRESENTBLT_FORCE_SRC_XRBIAS (1 << 2)
898 #define SVGADX_PRESENTBLT_MODE_MAX         (1 << 3)
899 
900 typedef
901 #include "vmware_pack_begin.h"
902 struct SVGA3dCmdDXPresentBlt {
903    SVGA3dSurfaceId srcSid;
904    uint32 srcSubResource;
905    SVGA3dSurfaceId dstSid;
906    uint32 destSubResource;
907    SVGA3dBox boxSrc;
908    SVGA3dBox boxDest;
909    SVGA3dDXPresentBltMode mode;
910 }
911 #include "vmware_pack_end.h"
912 SVGA3dCmdDXPresentBlt;
913 
914 typedef
915 #include "vmware_pack_begin.h"
916 struct SVGA3dCmdDXGenMips {
917    SVGA3dShaderResourceViewId shaderResourceViewId;
918 }
919 #include "vmware_pack_end.h"
920 SVGA3dCmdDXGenMips;
921 
922 
923 typedef
924 #include "vmware_pack_begin.h"
925 struct SVGA3dCmdDXUpdateSubResource {
926    SVGA3dSurfaceId sid;
927    uint32 subResource;
928    SVGA3dBox box;
929 }
930 #include "vmware_pack_end.h"
931 SVGA3dCmdDXUpdateSubResource;
932 
933 
934 typedef
935 #include "vmware_pack_begin.h"
936 struct SVGA3dCmdDXReadbackSubResource {
937    SVGA3dSurfaceId sid;
938    uint32 subResource;
939 }
940 #include "vmware_pack_end.h"
941 SVGA3dCmdDXReadbackSubResource;
942 
943 
944 typedef
945 #include "vmware_pack_begin.h"
946 struct SVGA3dCmdDXInvalidateSubResource {
947    SVGA3dSurfaceId sid;
948    uint32 subResource;
949 }
950 #include "vmware_pack_end.h"
951 SVGA3dCmdDXInvalidateSubResource;
952 
953 
954 
955 typedef
956 #include "vmware_pack_begin.h"
957 struct SVGA3dCmdDXTransferFromBuffer {
958    SVGA3dSurfaceId srcSid;
959    uint32 srcOffset;
960    uint32 srcPitch;
961    uint32 srcSlicePitch;
962    SVGA3dSurfaceId destSid;
963    uint32 destSubResource;
964    SVGA3dBox destBox;
965 }
966 #include "vmware_pack_end.h"
967 SVGA3dCmdDXTransferFromBuffer;
968 
969 
970 #define SVGA3D_TRANSFER_TO_BUFFER_READBACK   (1 << 0)
971 #define SVGA3D_TRANSFER_TO_BUFFER_FLAGS_MASK (1 << 0)
972 typedef uint32 SVGA3dTransferToBufferFlags;
973 
974 
975 typedef
976 #include "vmware_pack_begin.h"
977 struct SVGA3dCmdDXTransferToBuffer {
978    SVGA3dSurfaceId srcSid;
979    uint32 srcSubResource;
980    SVGA3dBox srcBox;
981    SVGA3dSurfaceId destSid;
982    uint32 destOffset;
983    uint32 destPitch;
984    uint32 destSlicePitch;
985    SVGA3dTransferToBufferFlags flags;
986 }
987 #include "vmware_pack_end.h"
988 SVGA3dCmdDXTransferToBuffer;
989 
990 
991 
992 typedef
993 #include "vmware_pack_begin.h"
994 struct SVGA3dCmdDXPredTransferFromBuffer {
995    SVGA3dSurfaceId srcSid;
996    uint32 srcOffset;
997    uint32 srcPitch;
998    uint32 srcSlicePitch;
999    SVGA3dSurfaceId destSid;
1000    uint32 destSubResource;
1001    SVGA3dBox destBox;
1002 }
1003 #include "vmware_pack_end.h"
1004 SVGA3dCmdDXPredTransferFromBuffer;
1005 
1006 
1007 
1008 typedef
1009 #include "vmware_pack_begin.h"
1010 struct SVGA3dCmdDXSurfaceCopyAndReadback {
1011    SVGA3dSurfaceId srcSid;
1012    SVGA3dSurfaceId destSid;
1013    SVGA3dCopyBox box;
1014 }
1015 #include "vmware_pack_end.h"
1016 SVGA3dCmdDXSurfaceCopyAndReadback;
1017 
1018 
1019 
1020 typedef uint32 SVGADXHintId;
1021 #define SVGA_DX_HINT_NONE              0
1022 #define SVGA_DX_HINT_PREFETCH_OBJECT   1
1023 #define SVGA_DX_HINT_PREEVICT_OBJECT   2
1024 #define SVGA_DX_HINT_PREFETCH_COBJECT  3
1025 #define SVGA_DX_HINT_PREEVICT_COBJECT  4
1026 #define SVGA_DX_HINT_MAX               5
1027 
1028 typedef
1029 #include "vmware_pack_begin.h"
1030 struct SVGAObjectRef {
1031    SVGAOTableType type;
1032    uint32 id;
1033 }
1034 #include "vmware_pack_end.h"
1035 SVGAObjectRef;
1036 
1037 typedef
1038 #include "vmware_pack_begin.h"
1039 struct SVGACObjectRef {
1040    SVGACOTableType type;
1041    uint32 cid;
1042    uint32 id;
1043 }
1044 #include "vmware_pack_end.h"
1045 SVGACObjectRef;
1046 
1047 typedef
1048 #include "vmware_pack_begin.h"
1049 struct SVGA3dCmdDXHint {
1050    SVGADXHintId hintId;
1051 
1052 
1053 }
1054 #include "vmware_pack_end.h"
1055 SVGA3dCmdDXHint;
1056 
1057 
1058 typedef
1059 #include "vmware_pack_begin.h"
1060 struct SVGA3dCmdDXBufferUpdate {
1061    SVGA3dSurfaceId sid;
1062    uint32 x;
1063    uint32 width;
1064 }
1065 #include "vmware_pack_end.h"
1066 SVGA3dCmdDXBufferUpdate;
1067 
1068 
1069 typedef
1070 #include "vmware_pack_begin.h"
1071 struct SVGA3dCmdDXSetConstantBufferOffset {
1072    uint32 slot;
1073    uint32 offsetInBytes;
1074 }
1075 #include "vmware_pack_end.h"
1076 SVGA3dCmdDXSetConstantBufferOffset;
1077 
1078 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset;
1079 
1080 
1081 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset;
1082 
1083 
1084 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;
1085 
1086 
1087 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetHSConstantBufferOffset;
1088 
1089 
1090 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetDSConstantBufferOffset;
1091 
1092 
1093 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetCSConstantBufferOffset;
1094 
1095 
1096 
1097 #define SVGA3D_BUFFEREX_SRV_RAW        (1 << 0)
1098 #define SVGA3D_BUFFEREX_SRV_FLAGS_MAX  (1 << 1)
1099 #define SVGA3D_BUFFEREX_SRV_FLAGS_MASK (SVGA3D_BUFFEREX_SRV_FLAGS_MAX - 1)
1100 typedef uint32 SVGA3dBufferExFlags;
1101 
1102 typedef
1103 #include "vmware_pack_begin.h"
1104 struct {
1105    union {
1106       struct {
1107          uint32 firstElement;
1108          uint32 numElements;
1109          uint32 pad0;
1110          uint32 pad1;
1111       } buffer;
1112       struct {
1113          uint32 mostDetailedMip;
1114          uint32 firstArraySlice;
1115          uint32 mipLevels;
1116          uint32 arraySize;
1117       } tex;
1118       struct {
1119          uint32 firstElement;
1120          uint32 numElements;
1121          SVGA3dBufferExFlags flags;
1122          uint32 pad0;
1123       } bufferex;
1124    };
1125 }
1126 #include "vmware_pack_end.h"
1127 SVGA3dShaderResourceViewDesc;
1128 
1129 typedef
1130 #include "vmware_pack_begin.h"
1131 struct {
1132    SVGA3dSurfaceId sid;
1133    SVGA3dSurfaceFormat format;
1134    SVGA3dResourceType resourceDimension;
1135    SVGA3dShaderResourceViewDesc desc;
1136    uint32 pad;
1137 }
1138 #include "vmware_pack_end.h"
1139 SVGACOTableDXSRViewEntry;
1140 
1141 typedef
1142 #include "vmware_pack_begin.h"
1143 struct SVGA3dCmdDXDefineShaderResourceView {
1144    SVGA3dShaderResourceViewId shaderResourceViewId;
1145 
1146    SVGA3dSurfaceId sid;
1147    SVGA3dSurfaceFormat format;
1148    SVGA3dResourceType resourceDimension;
1149 
1150    SVGA3dShaderResourceViewDesc desc;
1151 }
1152 #include "vmware_pack_end.h"
1153 SVGA3dCmdDXDefineShaderResourceView;
1154 
1155 
1156 typedef
1157 #include "vmware_pack_begin.h"
1158 struct SVGA3dCmdDXDestroyShaderResourceView {
1159    SVGA3dShaderResourceViewId shaderResourceViewId;
1160 }
1161 #include "vmware_pack_end.h"
1162 SVGA3dCmdDXDestroyShaderResourceView;
1163 
1164 
1165 typedef
1166 #include "vmware_pack_begin.h"
1167 struct SVGA3dRenderTargetViewDesc {
1168    union {
1169       struct {
1170          uint32 firstElement;
1171          uint32 numElements;
1172          uint32 padding0;
1173       } buffer;
1174       struct {
1175          uint32 mipSlice;
1176          uint32 firstArraySlice;
1177          uint32 arraySize;
1178       } tex;
1179       struct {
1180          uint32 mipSlice;
1181          uint32 firstW;
1182          uint32 wSize;
1183       } tex3D;
1184    };
1185 }
1186 #include "vmware_pack_end.h"
1187 SVGA3dRenderTargetViewDesc;
1188 
1189 typedef
1190 #include "vmware_pack_begin.h"
1191 struct {
1192    SVGA3dSurfaceId sid;
1193    SVGA3dSurfaceFormat format;
1194    SVGA3dResourceType resourceDimension;
1195    SVGA3dRenderTargetViewDesc desc;
1196    uint32 pad[2];
1197 }
1198 #include "vmware_pack_end.h"
1199 SVGACOTableDXRTViewEntry;
1200 
1201 typedef
1202 #include "vmware_pack_begin.h"
1203 struct SVGA3dCmdDXDefineRenderTargetView {
1204    SVGA3dRenderTargetViewId renderTargetViewId;
1205 
1206    SVGA3dSurfaceId sid;
1207    SVGA3dSurfaceFormat format;
1208    SVGA3dResourceType resourceDimension;
1209 
1210    SVGA3dRenderTargetViewDesc desc;
1211 }
1212 #include "vmware_pack_end.h"
1213 SVGA3dCmdDXDefineRenderTargetView;
1214 
1215 
1216 typedef
1217 #include "vmware_pack_begin.h"
1218 struct SVGA3dCmdDXDestroyRenderTargetView {
1219    SVGA3dRenderTargetViewId renderTargetViewId;
1220 }
1221 #include "vmware_pack_end.h"
1222 SVGA3dCmdDXDestroyRenderTargetView;
1223 
1224 
1225 
1226 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH   0x01
1227 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02
1228 #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK         0x03
1229 typedef uint8 SVGA3DCreateDSViewFlags;
1230 
1231 typedef
1232 #include "vmware_pack_begin.h"
1233 struct {
1234    SVGA3dSurfaceId sid;
1235    SVGA3dSurfaceFormat format;
1236    SVGA3dResourceType resourceDimension;
1237    uint32 mipSlice;
1238    uint32 firstArraySlice;
1239    uint32 arraySize;
1240    SVGA3DCreateDSViewFlags flags;
1241    uint8 pad0;
1242    uint16 pad1;
1243    uint32 pad2;
1244 }
1245 #include "vmware_pack_end.h"
1246 SVGACOTableDXDSViewEntry;
1247 
1248 typedef
1249 #include "vmware_pack_begin.h"
1250 struct SVGA3dCmdDXDefineDepthStencilView {
1251    SVGA3dDepthStencilViewId depthStencilViewId;
1252 
1253    SVGA3dSurfaceId sid;
1254    SVGA3dSurfaceFormat format;
1255    SVGA3dResourceType resourceDimension;
1256    uint32 mipSlice;
1257    uint32 firstArraySlice;
1258    uint32 arraySize;
1259    SVGA3DCreateDSViewFlags flags;
1260    uint8 pad0;
1261    uint16 pad1;
1262 }
1263 #include "vmware_pack_end.h"
1264 SVGA3dCmdDXDefineDepthStencilView;
1265 
1266 
1267 
1268 typedef
1269 #include "vmware_pack_begin.h"
1270 struct SVGA3dCmdDXDefineDepthStencilView_v2 {
1271    SVGA3dDepthStencilViewId depthStencilViewId;
1272 
1273    SVGA3dSurfaceId sid;
1274    SVGA3dSurfaceFormat format;
1275    SVGA3dResourceType resourceDimension;
1276    uint32 mipSlice;
1277    uint32 firstArraySlice;
1278    uint32 arraySize;
1279    SVGA3DCreateDSViewFlags flags;
1280    uint8 pad0;
1281    uint16 pad1;
1282 }
1283 #include "vmware_pack_end.h"
1284 SVGA3dCmdDXDefineDepthStencilView_v2;
1285 
1286 
1287 typedef
1288 #include "vmware_pack_begin.h"
1289 struct SVGA3dCmdDXDestroyDepthStencilView {
1290    SVGA3dDepthStencilViewId depthStencilViewId;
1291 }
1292 #include "vmware_pack_end.h"
1293 SVGA3dCmdDXDestroyDepthStencilView;
1294 
1295 
1296 
1297 #define SVGA3D_UABUFFER_RAW     (1 << 0)
1298 #define SVGA3D_UABUFFER_APPEND  (1 << 1)
1299 #define SVGA3D_UABUFFER_COUNTER (1 << 2)
1300 typedef uint32 SVGA3dUABufferFlags;
1301 
1302 typedef
1303 #include "vmware_pack_begin.h"
1304 struct {
1305    union {
1306       struct {
1307          uint32 firstElement;
1308          uint32 numElements;
1309          SVGA3dUABufferFlags flags;
1310          uint32 padding0;
1311          uint32 padding1;
1312       } buffer;
1313       struct {
1314          uint32 mipSlice;
1315          uint32 firstArraySlice;
1316          uint32 arraySize;
1317          uint32 padding0;
1318          uint32 padding1;
1319       } tex;
1320       struct {
1321          uint32 mipSlice;
1322          uint32 firstW;
1323          uint32 wSize;
1324          uint32 padding0;
1325          uint32 padding1;
1326       } tex3D;
1327    };
1328 }
1329 #include "vmware_pack_end.h"
1330 SVGA3dUAViewDesc;
1331 
1332 typedef
1333 #include "vmware_pack_begin.h"
1334 struct {
1335    SVGA3dSurfaceId sid;
1336    SVGA3dSurfaceFormat format;
1337    SVGA3dResourceType resourceDimension;
1338    SVGA3dUAViewDesc desc;
1339    uint32 structureCount;
1340    uint32 pad[7];
1341 }
1342 #include "vmware_pack_end.h"
1343 SVGACOTableDXUAViewEntry;
1344 
1345 typedef
1346 #include "vmware_pack_begin.h"
1347 struct SVGA3dCmdDXDefineUAView {
1348    SVGA3dUAViewId uaViewId;
1349 
1350    SVGA3dSurfaceId sid;
1351    SVGA3dSurfaceFormat format;
1352    SVGA3dResourceType resourceDimension;
1353 
1354    SVGA3dUAViewDesc desc;
1355 }
1356 #include "vmware_pack_end.h"
1357 SVGA3dCmdDXDefineUAView;
1358 
1359 
1360 typedef
1361 #include "vmware_pack_begin.h"
1362 struct SVGA3dCmdDXDestroyUAView {
1363    SVGA3dUAViewId uaViewId;
1364 }
1365 #include "vmware_pack_end.h"
1366 SVGA3dCmdDXDestroyUAView;
1367 
1368 
1369 typedef
1370 #include "vmware_pack_begin.h"
1371 struct SVGA3dCmdDXClearUAViewUint {
1372    SVGA3dUAViewId uaViewId;
1373    SVGA3dRGBAUint32 value;
1374 }
1375 #include "vmware_pack_end.h"
1376 SVGA3dCmdDXClearUAViewUint;
1377 
1378 
1379 typedef
1380 #include "vmware_pack_begin.h"
1381 struct SVGA3dCmdDXClearUAViewFloat {
1382    SVGA3dUAViewId uaViewId;
1383    SVGA3dRGBAFloat value;
1384 }
1385 #include "vmware_pack_end.h"
1386 SVGA3dCmdDXClearUAViewFloat;
1387 
1388 
1389 
1390 
1391 typedef
1392 #include "vmware_pack_begin.h"
1393 struct SVGA3dCmdDXCopyStructureCount {
1394    SVGA3dUAViewId srcUAViewId;
1395    SVGA3dSurfaceId destSid;
1396    uint32 destByteOffset;
1397 }
1398 #include "vmware_pack_end.h"
1399 SVGA3dCmdDXCopyStructureCount;
1400 
1401 
1402 typedef
1403 #include "vmware_pack_begin.h"
1404 struct SVGA3dCmdDXSetStructureCount {
1405    SVGA3dUAViewId uaViewId;
1406    uint32 structureCount;
1407 }
1408 #include "vmware_pack_end.h"
1409 SVGA3dCmdDXSetStructureCount;
1410 
1411 
1412 typedef
1413 #include "vmware_pack_begin.h"
1414 struct SVGA3dCmdDXSetUAViews {
1415    uint32 uavSpliceIndex;
1416 
1417 }
1418 #include "vmware_pack_end.h"
1419 SVGA3dCmdDXSetUAViews;
1420 
1421 typedef
1422 #include "vmware_pack_begin.h"
1423 struct SVGA3dCmdDXSetCSUAViews {
1424    uint32 startIndex;
1425 
1426 }
1427 #include "vmware_pack_end.h"
1428 SVGA3dCmdDXSetCSUAViews;
1429 
1430 typedef
1431 #include "vmware_pack_begin.h"
1432 struct SVGA3dInputElementDesc {
1433    uint32 inputSlot;
1434    uint32 alignedByteOffset;
1435    SVGA3dSurfaceFormat format;
1436    SVGA3dInputClassification inputSlotClass;
1437    uint32 instanceDataStepRate;
1438    uint32 inputRegister;
1439 }
1440 #include "vmware_pack_end.h"
1441 SVGA3dInputElementDesc;
1442 
1443 typedef
1444 #include "vmware_pack_begin.h"
1445 struct {
1446    uint32 elid;
1447    uint32 numDescs;
1448    SVGA3dInputElementDesc descs[32];
1449    uint32 pad[62];
1450 }
1451 #include "vmware_pack_end.h"
1452 SVGACOTableDXElementLayoutEntry;
1453 
1454 typedef
1455 #include "vmware_pack_begin.h"
1456 struct SVGA3dCmdDXDefineElementLayout {
1457    SVGA3dElementLayoutId elementLayoutId;
1458 
1459 }
1460 #include "vmware_pack_end.h"
1461 SVGA3dCmdDXDefineElementLayout;
1462 
1463 
1464 typedef
1465 #include "vmware_pack_begin.h"
1466 struct SVGA3dCmdDXDestroyElementLayout {
1467    SVGA3dElementLayoutId elementLayoutId;
1468 }
1469 #include "vmware_pack_end.h"
1470 SVGA3dCmdDXDestroyElementLayout;
1471 
1472 
1473 
1474 #define SVGA3D_DX_MAX_RENDER_TARGETS 8
1475 
1476 typedef
1477 #include "vmware_pack_begin.h"
1478 struct SVGA3dDXBlendStatePerRT {
1479       uint8 blendEnable;
1480       uint8 srcBlend;
1481       uint8 destBlend;
1482       uint8 blendOp;
1483       uint8 srcBlendAlpha;
1484       uint8 destBlendAlpha;
1485       uint8 blendOpAlpha;
1486       SVGA3dColorWriteEnable renderTargetWriteMask;
1487       uint8 logicOpEnable;
1488       uint8 logicOp;
1489       uint16 pad0;
1490 }
1491 #include "vmware_pack_end.h"
1492 SVGA3dDXBlendStatePerRT;
1493 
1494 typedef
1495 #include "vmware_pack_begin.h"
1496 struct {
1497    uint8 alphaToCoverageEnable;
1498    uint8 independentBlendEnable;
1499    uint16 pad0;
1500    SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
1501    uint32 pad1[7];
1502 }
1503 #include "vmware_pack_end.h"
1504 SVGACOTableDXBlendStateEntry;
1505 
1506 
1507 typedef
1508 #include "vmware_pack_begin.h"
1509 struct SVGA3dCmdDXDefineBlendState {
1510    SVGA3dBlendStateId blendId;
1511    uint8 alphaToCoverageEnable;
1512    uint8 independentBlendEnable;
1513    uint16 pad0;
1514    SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
1515 }
1516 #include "vmware_pack_end.h"
1517 SVGA3dCmdDXDefineBlendState;
1518 
1519 typedef
1520 #include "vmware_pack_begin.h"
1521 struct SVGA3dCmdDXDestroyBlendState {
1522    SVGA3dBlendStateId blendId;
1523 }
1524 #include "vmware_pack_end.h"
1525 SVGA3dCmdDXDestroyBlendState;
1526 
1527 typedef
1528 #include "vmware_pack_begin.h"
1529 struct {
1530    uint8 depthEnable;
1531    SVGA3dDepthWriteMask depthWriteMask;
1532    SVGA3dComparisonFunc depthFunc;
1533    uint8 stencilEnable;
1534    uint8 frontEnable;
1535    uint8 backEnable;
1536    uint8 stencilReadMask;
1537    uint8 stencilWriteMask;
1538 
1539    uint8 frontStencilFailOp;
1540    uint8 frontStencilDepthFailOp;
1541    uint8 frontStencilPassOp;
1542    SVGA3dComparisonFunc frontStencilFunc;
1543 
1544    uint8 backStencilFailOp;
1545    uint8 backStencilDepthFailOp;
1546    uint8 backStencilPassOp;
1547    SVGA3dComparisonFunc backStencilFunc;
1548 }
1549 #include "vmware_pack_end.h"
1550 SVGACOTableDXDepthStencilEntry;
1551 
1552 
1553 typedef
1554 #include "vmware_pack_begin.h"
1555 struct SVGA3dCmdDXDefineDepthStencilState {
1556    SVGA3dDepthStencilStateId depthStencilId;
1557 
1558    uint8 depthEnable;
1559    SVGA3dDepthWriteMask depthWriteMask;
1560    SVGA3dComparisonFunc depthFunc;
1561    uint8 stencilEnable;
1562    uint8 frontEnable;
1563    uint8 backEnable;
1564    uint8 stencilReadMask;
1565    uint8 stencilWriteMask;
1566 
1567    uint8 frontStencilFailOp;
1568    uint8 frontStencilDepthFailOp;
1569    uint8 frontStencilPassOp;
1570    SVGA3dComparisonFunc frontStencilFunc;
1571 
1572    uint8 backStencilFailOp;
1573    uint8 backStencilDepthFailOp;
1574    uint8 backStencilPassOp;
1575    SVGA3dComparisonFunc backStencilFunc;
1576 }
1577 #include "vmware_pack_end.h"
1578 SVGA3dCmdDXDefineDepthStencilState;
1579 
1580 
1581 typedef
1582 #include "vmware_pack_begin.h"
1583 struct SVGA3dCmdDXDestroyDepthStencilState {
1584    SVGA3dDepthStencilStateId depthStencilId;
1585 }
1586 #include "vmware_pack_end.h"
1587 SVGA3dCmdDXDestroyDepthStencilState;
1588 
1589 
1590 typedef
1591 #include "vmware_pack_begin.h"
1592 struct {
1593    uint8 fillMode;
1594    SVGA3dCullMode cullMode;
1595    uint8 frontCounterClockwise;
1596    uint8 provokingVertexLast;
1597    int32 depthBias;
1598    float depthBiasClamp;
1599    float slopeScaledDepthBias;
1600    uint8 depthClipEnable;
1601    uint8 scissorEnable;
1602    SVGA3dMultisampleRastEnable multisampleEnable;
1603    uint8 antialiasedLineEnable;
1604    float lineWidth;
1605    uint8 lineStippleEnable;
1606    uint8 lineStippleFactor;
1607    uint16 lineStipplePattern;
1608    uint8 forcedSampleCount;
1609    uint8 mustBeZero[3];
1610 }
1611 #include "vmware_pack_end.h"
1612 SVGACOTableDXRasterizerStateEntry;
1613 
1614 
1615 typedef
1616 #include "vmware_pack_begin.h"
1617 struct SVGA3dCmdDXDefineRasterizerState {
1618    SVGA3dRasterizerStateId rasterizerId;
1619 
1620    uint8 fillMode;
1621    SVGA3dCullMode cullMode;
1622    uint8 frontCounterClockwise;
1623    uint8 provokingVertexLast;
1624    int32 depthBias;
1625    float depthBiasClamp;
1626    float slopeScaledDepthBias;
1627    uint8 depthClipEnable;
1628    uint8 scissorEnable;
1629    SVGA3dMultisampleRastEnable multisampleEnable;
1630    uint8 antialiasedLineEnable;
1631    float lineWidth;
1632    uint8 lineStippleEnable;
1633    uint8 lineStippleFactor;
1634    uint16 lineStipplePattern;
1635 }
1636 #include "vmware_pack_end.h"
1637 SVGA3dCmdDXDefineRasterizerState;
1638 
1639 
1640 
1641 typedef
1642 #include "vmware_pack_begin.h"
1643 struct SVGA3dCmdDXDefineRasterizerState_v2 {
1644    SVGA3dRasterizerStateId rasterizerId;
1645 
1646    uint8 fillMode;
1647    SVGA3dCullMode cullMode;
1648    uint8 frontCounterClockwise;
1649    uint8 provokingVertexLast;
1650    int32 depthBias;
1651    float depthBiasClamp;
1652    float slopeScaledDepthBias;
1653    uint8 depthClipEnable;
1654    uint8 scissorEnable;
1655    SVGA3dMultisampleRastEnable multisampleEnable;
1656    uint8 antialiasedLineEnable;
1657    float lineWidth;
1658    uint8 lineStippleEnable;
1659    uint8 lineStippleFactor;
1660    uint16 lineStipplePattern;
1661    uint32 forcedSampleCount;
1662 }
1663 #include "vmware_pack_end.h"
1664 SVGA3dCmdDXDefineRasterizerState_v2;
1665 
1666 
1667 typedef
1668 #include "vmware_pack_begin.h"
1669 struct SVGA3dCmdDXDestroyRasterizerState {
1670    SVGA3dRasterizerStateId rasterizerId;
1671 }
1672 #include "vmware_pack_end.h"
1673 SVGA3dCmdDXDestroyRasterizerState;
1674 
1675 
1676 typedef
1677 #include "vmware_pack_begin.h"
1678 struct {
1679    SVGA3dFilter filter;
1680    uint8 addressU;
1681    uint8 addressV;
1682    uint8 addressW;
1683    uint8 pad0;
1684    float mipLODBias;
1685    uint8 maxAnisotropy;
1686    SVGA3dComparisonFunc comparisonFunc;
1687    uint16 pad1;
1688    SVGA3dRGBAFloat borderColor;
1689    float minLOD;
1690    float maxLOD;
1691    uint32 pad2[6];
1692 }
1693 #include "vmware_pack_end.h"
1694 SVGACOTableDXSamplerEntry;
1695 
1696 
1697 typedef
1698 #include "vmware_pack_begin.h"
1699 struct SVGA3dCmdDXDefineSamplerState {
1700    SVGA3dSamplerId samplerId;
1701    SVGA3dFilter filter;
1702    uint8 addressU;
1703    uint8 addressV;
1704    uint8 addressW;
1705    uint8 pad0;
1706    float mipLODBias;
1707    uint8 maxAnisotropy;
1708    SVGA3dComparisonFunc comparisonFunc;
1709    uint16 pad1;
1710    SVGA3dRGBAFloat borderColor;
1711    float minLOD;
1712    float maxLOD;
1713 }
1714 #include "vmware_pack_end.h"
1715 SVGA3dCmdDXDefineSamplerState;
1716 
1717 typedef
1718 #include "vmware_pack_begin.h"
1719 struct SVGA3dCmdDXDestroySamplerState {
1720    SVGA3dSamplerId samplerId;
1721 }
1722 #include "vmware_pack_end.h"
1723 SVGA3dCmdDXDestroySamplerState;
1724 
1725 
1726 #define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED                          0
1727 #define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION                           1
1728 #define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE                      2
1729 #define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE                      3
1730 #define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX          4
1731 #define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX               5
1732 #define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID                          6
1733 #define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID                       7
1734 #define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID                        8
1735 #define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE                      9
1736 #define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX                       10
1737 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR  11
1738 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR  12
1739 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR  13
1740 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR  14
1741 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR     15
1742 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR     16
1743 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR   17
1744 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR   18
1745 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR   19
1746 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR        20
1747 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR       21
1748 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR      22
1749 #define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX                                23
1750 typedef uint32 SVGA3dDXSignatureSemanticName;
1751 
1752 #define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 0
1753 typedef uint32 SVGA3dDXSignatureRegisterComponentType;
1754 
1755 #define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 0
1756 typedef uint32 SVGA3dDXSignatureMinPrecision;
1757 
1758 typedef
1759 #include "vmware_pack_begin.h"
1760 struct SVGA3dDXSignatureEntry {
1761    uint32 registerIndex;
1762    SVGA3dDXSignatureSemanticName semanticName;
1763    uint32 mask;
1764    SVGA3dDXSignatureRegisterComponentType componentType;
1765    SVGA3dDXSignatureMinPrecision minPrecision;
1766 }
1767 #include "vmware_pack_end.h"
1768 SVGA3dDXShaderSignatureEntry;
1769 
1770 #define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d12
1771 
1772 
1773 typedef
1774 #include "vmware_pack_begin.h"
1775 struct SVGA3dDXSignatureHeader {
1776    uint32 headerVersion;
1777    uint32 numInputSignatures;
1778    uint32 numOutputSignatures;
1779    uint32 numPatchConstantSignatures;
1780 }
1781 #include "vmware_pack_end.h"
1782 SVGA3dDXShaderSignatureHeader;
1783 
1784 typedef
1785 #include "vmware_pack_begin.h"
1786 struct SVGA3dCmdDXDefineShader {
1787    SVGA3dShaderId shaderId;
1788    SVGA3dShaderType type;
1789    uint32 sizeInBytes;
1790 }
1791 #include "vmware_pack_end.h"
1792 SVGA3dCmdDXDefineShader;
1793 
1794 typedef
1795 #include "vmware_pack_begin.h"
1796 struct SVGACOTableDXShaderEntry {
1797    SVGA3dShaderType type;
1798    uint32 sizeInBytes;
1799    uint32 offsetInBytes;
1800    SVGAMobId mobid;
1801    uint32 pad[4];
1802 }
1803 #include "vmware_pack_end.h"
1804 SVGACOTableDXShaderEntry;
1805 
1806 typedef
1807 #include "vmware_pack_begin.h"
1808 struct SVGA3dCmdDXDestroyShader {
1809    SVGA3dShaderId shaderId;
1810 }
1811 #include "vmware_pack_end.h"
1812 SVGA3dCmdDXDestroyShader;
1813 
1814 typedef
1815 #include "vmware_pack_begin.h"
1816 struct SVGA3dCmdDXBindShader {
1817    uint32 cid;
1818    uint32 shid;
1819    SVGAMobId mobid;
1820    uint32 offsetInBytes;
1821 }
1822 #include "vmware_pack_end.h"
1823 SVGA3dCmdDXBindShader;
1824 
1825 typedef
1826 #include "vmware_pack_begin.h"
1827 struct SVGA3dCmdDXBindAllShader {
1828    uint32 cid;
1829    SVGAMobId mobid;
1830 }
1831 #include "vmware_pack_end.h"
1832 SVGA3dCmdDXBindAllShader;
1833 
1834 typedef
1835 #include "vmware_pack_begin.h"
1836 struct SVGA3dCmdDXCondBindAllShader {
1837    uint32 cid;
1838    SVGAMobId testMobid;
1839    SVGAMobId mobid;
1840 }
1841 #include "vmware_pack_end.h"
1842 SVGA3dCmdDXCondBindAllShader;
1843 
1844 
1845 #define SVGA3D_MAX_DX10_STREAMOUT_DECLS 64
1846 #define SVGA3D_MAX_STREAMOUT_DECLS 512
1847 
1848 typedef
1849 #include "vmware_pack_begin.h"
1850 struct SVGA3dStreamOutputDeclarationEntry {
1851    uint32 outputSlot;
1852    uint32 registerIndex;
1853    uint8  registerMask;
1854    uint8  pad0;
1855    uint16 pad1;
1856    uint32 stream;
1857 }
1858 #include "vmware_pack_end.h"
1859 SVGA3dStreamOutputDeclarationEntry;
1860 
1861 typedef
1862 #include "vmware_pack_begin.h"
1863 struct SVGAOTableStreamOutputEntry {
1864    uint32 numOutputStreamEntries;
1865    SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS];
1866    uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
1867    uint32 rasterizedStream;
1868    uint32 numOutputStreamStrides;
1869    uint32 mobid;
1870    uint32 offsetInBytes;
1871    uint8 usesMob;
1872    uint8 pad0;
1873    uint16 pad1;
1874    uint32 pad2[246];
1875 }
1876 #include "vmware_pack_end.h"
1877 SVGACOTableDXStreamOutputEntry;
1878 
1879 typedef
1880 #include "vmware_pack_begin.h"
1881 struct SVGA3dCmdDXDefineStreamOutput {
1882    SVGA3dStreamOutputId soid;
1883    uint32 numOutputStreamEntries;
1884    SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_DX10_STREAMOUT_DECLS];
1885    uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
1886    uint32 rasterizedStream;
1887 }
1888 #include "vmware_pack_end.h"
1889 SVGA3dCmdDXDefineStreamOutput;
1890 
1891 
1892 
1893 #define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF
1894 
1895 typedef
1896 #include "vmware_pack_begin.h"
1897 struct SVGA3dCmdDXDefineStreamOutputWithMob {
1898    SVGA3dStreamOutputId soid;
1899    uint32 numOutputStreamEntries;
1900    uint32 numOutputStreamStrides;
1901    uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
1902    uint32 rasterizedStream;
1903 }
1904 #include "vmware_pack_end.h"
1905 SVGA3dCmdDXDefineStreamOutputWithMob;
1906 
1907 
1908 typedef
1909 #include "vmware_pack_begin.h"
1910 struct SVGA3dCmdDXBindStreamOutput {
1911    SVGA3dStreamOutputId soid;
1912    uint32 mobid;
1913    uint32 offsetInBytes;
1914    uint32 sizeInBytes;
1915 }
1916 #include "vmware_pack_end.h"
1917 SVGA3dCmdDXBindStreamOutput;
1918 
1919 typedef
1920 #include "vmware_pack_begin.h"
1921 struct SVGA3dCmdDXDestroyStreamOutput {
1922    SVGA3dStreamOutputId soid;
1923 }
1924 #include "vmware_pack_end.h"
1925 SVGA3dCmdDXDestroyStreamOutput;
1926 
1927 typedef
1928 #include "vmware_pack_begin.h"
1929 struct SVGA3dCmdDXSetStreamOutput {
1930    SVGA3dStreamOutputId soid;
1931 }
1932 #include "vmware_pack_end.h"
1933 SVGA3dCmdDXSetStreamOutput;
1934 
1935 typedef
1936 #include "vmware_pack_begin.h"
1937 struct SVGA3dCmdDXSetMinLOD {
1938    SVGA3dSurfaceId sid;
1939    float minLOD;
1940 }
1941 #include "vmware_pack_end.h"
1942 SVGA3dCmdDXSetMinLOD;
1943 
1944 typedef
1945 #include "vmware_pack_begin.h"
1946 struct {
1947    uint64 value;
1948    uint32 mobId;
1949    uint32 mobOffset;
1950 }
1951 #include "vmware_pack_end.h"
1952 SVGA3dCmdDXMobFence64;
1953 
1954 
1955 typedef
1956 #include "vmware_pack_begin.h"
1957 struct SVGA3dCmdDXSetCOTable {
1958    uint32 cid;
1959    uint32 mobid;
1960    SVGACOTableType type;
1961    uint32 validSizeInBytes;
1962 }
1963 #include "vmware_pack_end.h"
1964 SVGA3dCmdDXSetCOTable;
1965 
1966 
1967 typedef
1968 #include "vmware_pack_begin.h"
1969 struct SVGA3dCmdDXGrowCOTable {
1970    uint32 cid;
1971    uint32 mobid;
1972    SVGACOTableType type;
1973    uint32 validSizeInBytes;
1974 }
1975 #include "vmware_pack_end.h"
1976 SVGA3dCmdDXGrowCOTable;
1977 
1978 typedef
1979 #include "vmware_pack_begin.h"
1980 struct SVGA3dCmdDXReadbackCOTable {
1981    uint32 cid;
1982    SVGACOTableType type;
1983 }
1984 #include "vmware_pack_end.h"
1985 SVGA3dCmdDXReadbackCOTable;
1986 
1987 
1988 
1989 typedef
1990 #include "vmware_pack_begin.h"
1991 struct SVGA3dCmdDXPredStagingCopy {
1992    SVGA3dSurfaceId dstSid;
1993    SVGA3dSurfaceId srcSid;
1994    uint8 readback;
1995    uint8 unsynchronized;
1996    uint8 mustBeZero[2];
1997 
1998 }
1999 #include "vmware_pack_end.h"
2000 SVGA3dCmdDXPredStagingCopy;
2001 
2002 typedef
2003 #include "vmware_pack_begin.h"
2004 struct SVGA3dCmdDXStagingCopy {
2005    SVGA3dSurfaceId dstSid;
2006    SVGA3dSurfaceId srcSid;
2007    uint8 readback;
2008    uint8 unsynchronized;
2009    uint8 mustBeZero[2];
2010 
2011 }
2012 #include "vmware_pack_end.h"
2013 SVGA3dCmdDXStagingCopy;
2014 
2015 typedef
2016 #include "vmware_pack_begin.h"
2017 struct SVGA3dCOTableData {
2018    uint32 mobid;
2019 }
2020 #include "vmware_pack_end.h"
2021 SVGA3dCOTableData;
2022 
2023 typedef
2024 #include "vmware_pack_begin.h"
2025 struct SVGA3dBufferBinding {
2026    uint32 bufferId;
2027    uint32 stride;
2028    uint32 offset;
2029 }
2030 #include "vmware_pack_end.h"
2031 SVGA3dBufferBinding;
2032 
2033 typedef
2034 #include "vmware_pack_begin.h"
2035 struct SVGA3dConstantBufferBinding {
2036    uint32 sid;
2037    uint32 offsetInBytes;
2038    uint32 sizeInBytes;
2039 }
2040 #include "vmware_pack_end.h"
2041 SVGA3dConstantBufferBinding;
2042 
2043 typedef
2044 #include "vmware_pack_begin.h"
2045 struct SVGADXInputAssemblyMobFormat {
2046    uint32 layoutId;
2047    SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS];
2048    uint32 indexBufferSid;
2049    uint32 pad;
2050    uint32 indexBufferOffset;
2051    uint32 indexBufferFormat;
2052    uint32 topology;
2053 }
2054 #include "vmware_pack_end.h"
2055 SVGADXInputAssemblyMobFormat;
2056 
2057 typedef
2058 #include "vmware_pack_begin.h"
2059 struct SVGADXContextMobFormat {
2060    SVGADXInputAssemblyMobFormat inputAssembly;
2061 
2062    struct {
2063       uint32 blendStateId;
2064       uint32 blendFactor[4];
2065       uint32 sampleMask;
2066       uint32 depthStencilStateId;
2067       uint32 stencilRef;
2068       uint32 rasterizerStateId;
2069       uint32 depthStencilViewId;
2070       uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];
2071    } renderState;
2072 
2073    uint32 pad0[8];
2074 
2075    struct {
2076       uint32 targets[SVGA3D_DX_MAX_SOTARGETS];
2077       uint32 soid;
2078    } streamOut;
2079 
2080    uint32 pad1[10];
2081 
2082    uint32 uavSpliceIndex;
2083 
2084    uint8 numViewports;
2085    uint8 numScissorRects;
2086    uint16 pad2[1];
2087 
2088    uint32 pad3[3];
2089 
2090    SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];
2091    uint32 pad4[32];
2092 
2093    SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];
2094    uint32 pad5[64];
2095 
2096    struct {
2097       uint32 queryID;
2098       uint32 value;
2099    } predication;
2100 
2101    SVGAMobId shaderIfaceMobid;
2102    uint32 shaderIfaceOffset;
2103    struct {
2104       uint32 shaderId;
2105       SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];
2106       uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS];
2107       uint32 samplers[SVGA3D_DX_MAX_SAMPLERS];
2108    } shaderState[SVGA3D_NUM_SHADERTYPE];
2109    uint32 pad6[26];
2110 
2111    SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];
2112 
2113    SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
2114 
2115    uint32 pad7[64];
2116 
2117    uint32 uaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS];
2118    uint32 csuaViewIds[SVGA3D_DX11_1_MAX_UAVIEWS];
2119 
2120    uint32 pad8[188];
2121 }
2122 #include "vmware_pack_end.h"
2123 SVGADXContextMobFormat;
2124 
2125 
2126 #define SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED 256
2127 
2128 typedef
2129 #include "vmware_pack_begin.h"
2130 struct SVGADXShaderIfaceMobFormat {
2131    struct {
2132       uint32 numClassInstances;
2133       uint32 iface[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED];
2134       SVGA3dIfaceData data[SVGA3D_DX_MAX_CLASS_INSTANCES_PADDED];
2135    } shaderIfaceState[SVGA3D_NUM_SHADERTYPE];
2136 
2137    uint32 pad0[1018];
2138 }
2139 #include "vmware_pack_end.h"
2140 SVGADXShaderIfaceMobFormat;
2141 
2142 #endif
2143