VirtualBox

source: vbox/trunk/src/VBox/Devices/Graphics/vmsvga_include/svga3d_dx.h

Last change on this file was 105575, checked in by vboxsync, 2 months ago

Devices/Graphics,WDDM: Implemented DEFINE_RASTERIZER_STATE_V2

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette