radeonsi: expose MRT-draw-calls to HUD
[mesa.git] / src / gallium / drivers / svga / include / svga3d_dx.h
1 /**********************************************************
2 * Copyright 2007-2015 VMware, Inc. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person
5 * obtaining a copy of this software and associated documentation
6 * files (the "Software"), to deal in the Software without
7 * restriction, including without limitation the rights to use, copy,
8 * modify, merge, publish, distribute, sublicense, and/or sell copies
9 * of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 *
24 **********************************************************/
25
26 /*
27 * svga3d_dx.h --
28 *
29 * SVGA 3d hardware definitions for DX10 support.
30 */
31
32 #ifndef _SVGA3D_DX_H_
33 #define _SVGA3D_DX_H_
34
35 #define INCLUDE_ALLOW_MODULE
36 #define INCLUDE_ALLOW_USERLEVEL
37 #define INCLUDE_ALLOW_VMCORE
38 #include "includeCheck.h"
39
40 #include "svga3d_limits.h"
41
42 #define SVGA3D_INPUT_MIN 0
43 #define SVGA3D_INPUT_PER_VERTEX_DATA 0
44 #define SVGA3D_INPUT_PER_INSTANCE_DATA 1
45 #define SVGA3D_INPUT_MAX 2
46 typedef uint32 SVGA3dInputClassification;
47
48 #define SVGA3D_RESOURCE_TYPE_MIN 1
49 #define SVGA3D_RESOURCE_BUFFER 1
50 #define SVGA3D_RESOURCE_TEXTURE1D 2
51 #define SVGA3D_RESOURCE_TEXTURE2D 3
52 #define SVGA3D_RESOURCE_TEXTURE3D 4
53 #define SVGA3D_RESOURCE_TEXTURECUBE 5
54 #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6
55 #define SVGA3D_RESOURCE_BUFFEREX 6
56 #define SVGA3D_RESOURCE_TYPE_MAX 7
57 typedef uint32 SVGA3dResourceType;
58
59 #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0
60 #define SVGA3D_DEPTH_WRITE_MASK_ALL 1
61 typedef uint8 SVGA3dDepthWriteMask;
62
63 #define SVGA3D_FILTER_MIP_LINEAR (1 << 0)
64 #define SVGA3D_FILTER_MAG_LINEAR (1 << 2)
65 #define SVGA3D_FILTER_MIN_LINEAR (1 << 4)
66 #define SVGA3D_FILTER_ANISOTROPIC (1 << 6)
67 #define SVGA3D_FILTER_COMPARE (1 << 7)
68 typedef uint32 SVGA3dFilter;
69
70 #define SVGA3D_CULL_INVALID 0
71 #define SVGA3D_CULL_MIN 1
72 #define SVGA3D_CULL_NONE 1
73 #define SVGA3D_CULL_FRONT 2
74 #define SVGA3D_CULL_BACK 3
75 #define SVGA3D_CULL_MAX 4
76 typedef uint8 SVGA3dCullMode;
77
78 #define SVGA3D_COMPARISON_INVALID 0
79 #define SVGA3D_COMPARISON_MIN 1
80 #define SVGA3D_COMPARISON_NEVER 1
81 #define SVGA3D_COMPARISON_LESS 2
82 #define SVGA3D_COMPARISON_EQUAL 3
83 #define SVGA3D_COMPARISON_LESS_EQUAL 4
84 #define SVGA3D_COMPARISON_GREATER 5
85 #define SVGA3D_COMPARISON_NOT_EQUAL 6
86 #define SVGA3D_COMPARISON_GREATER_EQUAL 7
87 #define SVGA3D_COMPARISON_ALWAYS 8
88 #define SVGA3D_COMPARISON_MAX 9
89 typedef uint8 SVGA3dComparisonFunc;
90
91 #define SVGA3D_DX_MAX_VERTEXBUFFERS 32
92 #define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16
93 #define SVGA3D_DX_MAX_SOTARGETS 4
94 #define SVGA3D_DX_MAX_SRVIEWS 128
95 #define SVGA3D_DX_MAX_CONSTBUFFERS 16
96 #define SVGA3D_DX_MAX_SAMPLERS 16
97
98 /* Id limits */
99 static const uint32 SVGA3dBlendObjectCountPerContext = 4096;
100 static const uint32 SVGA3dDepthStencilObjectCountPerContext = 4096;
101
102 typedef uint32 SVGA3dSurfaceId;
103 typedef uint32 SVGA3dShaderResourceViewId;
104 typedef uint32 SVGA3dRenderTargetViewId;
105 typedef uint32 SVGA3dDepthStencilViewId;
106
107 typedef uint32 SVGA3dShaderId;
108 typedef uint32 SVGA3dElementLayoutId;
109 typedef uint32 SVGA3dSamplerId;
110 typedef uint32 SVGA3dBlendStateId;
111 typedef uint32 SVGA3dDepthStencilStateId;
112 typedef uint32 SVGA3dRasterizerStateId;
113 typedef uint32 SVGA3dQueryId;
114 typedef uint32 SVGA3dStreamOutputId;
115
116 typedef union {
117 struct {
118 float r;
119 float g;
120 float b;
121 float a;
122 };
123
124 float value[4];
125 } SVGA3dRGBAFloat;
126
127 typedef
128 #include "vmware_pack_begin.h"
129 struct {
130 uint32 cid;
131 SVGAMobId mobid;
132 }
133 #include "vmware_pack_end.h"
134 SVGAOTableDXContextEntry;
135
136 typedef
137 #include "vmware_pack_begin.h"
138 struct SVGA3dCmdDXDefineContext {
139 uint32 cid;
140 }
141 #include "vmware_pack_end.h"
142 SVGA3dCmdDXDefineContext; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */
143
144 typedef
145 #include "vmware_pack_begin.h"
146 struct SVGA3dCmdDXDestroyContext {
147 uint32 cid;
148 }
149 #include "vmware_pack_end.h"
150 SVGA3dCmdDXDestroyContext; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */
151
152 /*
153 * Bind a DX context.
154 *
155 * validContents should be set to 0 for new contexts,
156 * and 1 if this is an old context which is getting paged
157 * back on to the device.
158 *
159 * For new contexts, it is recommended that the driver
160 * issue commands to initialize all interesting state
161 * prior to rendering.
162 */
163 typedef
164 #include "vmware_pack_begin.h"
165 struct SVGA3dCmdDXBindContext {
166 uint32 cid;
167 SVGAMobId mobid;
168 uint32 validContents;
169 }
170 #include "vmware_pack_end.h"
171 SVGA3dCmdDXBindContext; /* SVGA_3D_CMD_DX_BIND_CONTEXT */
172
173 /*
174 * Readback a DX context.
175 * (Request that the device flush the contents back into guest memory.)
176 */
177 typedef
178 #include "vmware_pack_begin.h"
179 struct SVGA3dCmdDXReadbackContext {
180 uint32 cid;
181 }
182 #include "vmware_pack_end.h"
183 SVGA3dCmdDXReadbackContext; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */
184
185 /*
186 * Invalidate a guest-backed context.
187 */
188 typedef
189 #include "vmware_pack_begin.h"
190 struct SVGA3dCmdDXInvalidateContext {
191 uint32 cid;
192 }
193 #include "vmware_pack_end.h"
194 SVGA3dCmdDXInvalidateContext; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */
195
196 typedef
197 #include "vmware_pack_begin.h"
198 struct SVGA3dReplyFormatData {
199 uint32 formatSupport;
200 uint32 msaa2xQualityLevels:5;
201 uint32 msaa4xQualityLevels:5;
202 uint32 msaa8xQualityLevels:5;
203 uint32 msaa16xQualityLevels:5;
204 uint32 msaa32xQualityLevels:5;
205 uint32 pad:7;
206 }
207 #include "vmware_pack_end.h"
208 SVGA3dReplyFormatData;
209
210 typedef
211 #include "vmware_pack_begin.h"
212 struct SVGA3dCmdDXSetSingleConstantBuffer {
213 uint32 slot;
214 SVGA3dShaderType type;
215 SVGA3dSurfaceId sid;
216 uint32 offsetInBytes;
217 uint32 sizeInBytes;
218 }
219 #include "vmware_pack_end.h"
220 SVGA3dCmdDXSetSingleConstantBuffer;
221 /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */
222
223 typedef
224 #include "vmware_pack_begin.h"
225 struct SVGA3dCmdDXSetShaderResources {
226 uint32 startView;
227 SVGA3dShaderType type;
228
229 /*
230 * Followed by a variable number of SVGA3dShaderResourceViewId's.
231 */
232 }
233 #include "vmware_pack_end.h"
234 SVGA3dCmdDXSetShaderResources; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */
235
236 typedef
237 #include "vmware_pack_begin.h"
238 struct SVGA3dCmdDXSetShader {
239 SVGA3dShaderId shaderId;
240 SVGA3dShaderType type;
241 }
242 #include "vmware_pack_end.h"
243 SVGA3dCmdDXSetShader; /* SVGA_3D_CMD_DX_SET_SHADER */
244
245 typedef
246 #include "vmware_pack_begin.h"
247 struct SVGA3dCmdDXSetSamplers {
248 uint32 startSampler;
249 SVGA3dShaderType type;
250
251 /*
252 * Followed by a variable number of SVGA3dSamplerId's.
253 */
254 }
255 #include "vmware_pack_end.h"
256 SVGA3dCmdDXSetSamplers; /* SVGA_3D_CMD_DX_SET_SAMPLERS */
257
258 typedef
259 #include "vmware_pack_begin.h"
260 struct SVGA3dCmdDXDraw {
261 uint32 vertexCount;
262 uint32 startVertexLocation;
263 }
264 #include "vmware_pack_end.h"
265 SVGA3dCmdDXDraw; /* SVGA_3D_CMD_DX_DRAW */
266
267 typedef
268 #include "vmware_pack_begin.h"
269 struct SVGA3dCmdDXDrawIndexed {
270 uint32 indexCount;
271 uint32 startIndexLocation;
272 int32 baseVertexLocation;
273 }
274 #include "vmware_pack_end.h"
275 SVGA3dCmdDXDrawIndexed; /* SVGA_3D_CMD_DX_DRAW_INDEXED */
276
277 typedef
278 #include "vmware_pack_begin.h"
279 struct SVGA3dCmdDXDrawInstanced {
280 uint32 vertexCountPerInstance;
281 uint32 instanceCount;
282 uint32 startVertexLocation;
283 uint32 startInstanceLocation;
284 }
285 #include "vmware_pack_end.h"
286 SVGA3dCmdDXDrawInstanced; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */
287
288 typedef
289 #include "vmware_pack_begin.h"
290 struct SVGA3dCmdDXDrawIndexedInstanced {
291 uint32 indexCountPerInstance;
292 uint32 instanceCount;
293 uint32 startIndexLocation;
294 int32 baseVertexLocation;
295 uint32 startInstanceLocation;
296 }
297 #include "vmware_pack_end.h"
298 SVGA3dCmdDXDrawIndexedInstanced; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */
299
300 typedef
301 #include "vmware_pack_begin.h"
302 struct SVGA3dCmdDXDrawAuto {
303 uint32 pad0;
304 }
305 #include "vmware_pack_end.h"
306 SVGA3dCmdDXDrawAuto; /* SVGA_3D_CMD_DX_DRAW_AUTO */
307
308 typedef
309 #include "vmware_pack_begin.h"
310 struct SVGA3dCmdDXSetInputLayout {
311 SVGA3dElementLayoutId elementLayoutId;
312 }
313 #include "vmware_pack_end.h"
314 SVGA3dCmdDXSetInputLayout; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */
315
316 typedef
317 #include "vmware_pack_begin.h"
318 struct SVGA3dVertexBuffer {
319 SVGA3dSurfaceId sid;
320 uint32 stride;
321 uint32 offset;
322 }
323 #include "vmware_pack_end.h"
324 SVGA3dVertexBuffer;
325
326 typedef
327 #include "vmware_pack_begin.h"
328 struct SVGA3dCmdDXSetVertexBuffers {
329 uint32 startBuffer;
330 /* Followed by a variable number of SVGA3dVertexBuffer's. */
331 }
332 #include "vmware_pack_end.h"
333 SVGA3dCmdDXSetVertexBuffers; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */
334
335 typedef
336 #include "vmware_pack_begin.h"
337 struct SVGA3dCmdDXSetIndexBuffer {
338 SVGA3dSurfaceId sid;
339 SVGA3dSurfaceFormat format;
340 uint32 offset;
341 }
342 #include "vmware_pack_end.h"
343 SVGA3dCmdDXSetIndexBuffer; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */
344
345 typedef
346 #include "vmware_pack_begin.h"
347 struct SVGA3dCmdDXSetTopology {
348 SVGA3dPrimitiveType topology;
349 }
350 #include "vmware_pack_end.h"
351 SVGA3dCmdDXSetTopology; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */
352
353 typedef
354 #include "vmware_pack_begin.h"
355 struct SVGA3dCmdDXSetRenderTargets {
356 SVGA3dDepthStencilViewId depthStencilViewId;
357 /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
358 }
359 #include "vmware_pack_end.h"
360 SVGA3dCmdDXSetRenderTargets; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */
361
362 typedef
363 #include "vmware_pack_begin.h"
364 struct SVGA3dCmdDXSetBlendState {
365 SVGA3dBlendStateId blendId;
366 float blendFactor[4];
367 uint32 sampleMask;
368 }
369 #include "vmware_pack_end.h"
370 SVGA3dCmdDXSetBlendState; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */
371
372 typedef
373 #include "vmware_pack_begin.h"
374 struct SVGA3dCmdDXSetDepthStencilState {
375 SVGA3dDepthStencilStateId depthStencilId;
376 uint32 stencilRef;
377 }
378 #include "vmware_pack_end.h"
379 SVGA3dCmdDXSetDepthStencilState; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */
380
381 typedef
382 #include "vmware_pack_begin.h"
383 struct SVGA3dCmdDXSetRasterizerState {
384 SVGA3dRasterizerStateId rasterizerId;
385 }
386 #include "vmware_pack_end.h"
387 SVGA3dCmdDXSetRasterizerState; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */
388
389 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
390 typedef uint32 SVGA3dDXQueryFlags;
391
392 /*
393 * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device
394 * to track query state transitions, but are not intended to be used by the
395 * driver.
396 */
397 #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */
398 #define SVGADX_QDSTATE_MIN 0
399 #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */
400 #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */
401 #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */
402 #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */
403 #define SVGADX_QDSTATE_MAX 4
404 typedef uint8 SVGADXQueryDeviceState;
405
406 typedef
407 #include "vmware_pack_begin.h"
408 struct {
409 SVGA3dQueryTypeUint8 type;
410 uint16 pad0;
411 SVGADXQueryDeviceState state;
412 SVGA3dDXQueryFlags flags;
413 SVGAMobId mobid;
414 uint32 offset;
415 }
416 #include "vmware_pack_end.h"
417 SVGACOTableDXQueryEntry;
418
419 typedef
420 #include "vmware_pack_begin.h"
421 struct SVGA3dCmdDXDefineQuery {
422 SVGA3dQueryId queryId;
423 SVGA3dQueryType type;
424 SVGA3dDXQueryFlags flags;
425 }
426 #include "vmware_pack_end.h"
427 SVGA3dCmdDXDefineQuery; /* SVGA_3D_CMD_DX_DEFINE_QUERY */
428
429 typedef
430 #include "vmware_pack_begin.h"
431 struct SVGA3dCmdDXDestroyQuery {
432 SVGA3dQueryId queryId;
433 }
434 #include "vmware_pack_end.h"
435 SVGA3dCmdDXDestroyQuery; /* SVGA_3D_CMD_DX_DESTROY_QUERY */
436
437 typedef
438 #include "vmware_pack_begin.h"
439 struct SVGA3dCmdDXBindQuery {
440 SVGA3dQueryId queryId;
441 SVGAMobId mobid;
442 }
443 #include "vmware_pack_end.h"
444 SVGA3dCmdDXBindQuery; /* SVGA_3D_CMD_DX_BIND_QUERY */
445
446 typedef
447 #include "vmware_pack_begin.h"
448 struct SVGA3dCmdDXSetQueryOffset {
449 SVGA3dQueryId queryId;
450 uint32 mobOffset;
451 }
452 #include "vmware_pack_end.h"
453 SVGA3dCmdDXSetQueryOffset; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */
454
455 typedef
456 #include "vmware_pack_begin.h"
457 struct SVGA3dCmdDXBeginQuery {
458 SVGA3dQueryId queryId;
459 }
460 #include "vmware_pack_end.h"
461 SVGA3dCmdDXBeginQuery; /* SVGA_3D_CMD_DX_QUERY_BEGIN */
462
463 typedef
464 #include "vmware_pack_begin.h"
465 struct SVGA3dCmdDXEndQuery {
466 SVGA3dQueryId queryId;
467 }
468 #include "vmware_pack_end.h"
469 SVGA3dCmdDXEndQuery; /* SVGA_3D_CMD_DX_QUERY_END */
470
471 typedef
472 #include "vmware_pack_begin.h"
473 struct SVGA3dCmdDXReadbackQuery {
474 SVGA3dQueryId queryId;
475 }
476 #include "vmware_pack_end.h"
477 SVGA3dCmdDXReadbackQuery; /* SVGA_3D_CMD_DX_READBACK_QUERY */
478
479 typedef
480 #include "vmware_pack_begin.h"
481 struct SVGA3dCmdDXMoveQuery {
482 SVGA3dQueryId queryId;
483 SVGAMobId mobid;
484 uint32 mobOffset;
485 }
486 #include "vmware_pack_end.h"
487 SVGA3dCmdDXMoveQuery; /* SVGA_3D_CMD_DX_MOVE_QUERY */
488
489 typedef
490 #include "vmware_pack_begin.h"
491 struct SVGA3dCmdDXBindAllQuery {
492 uint32 cid;
493 SVGAMobId mobid;
494 }
495 #include "vmware_pack_end.h"
496 SVGA3dCmdDXBindAllQuery; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */
497
498 typedef
499 #include "vmware_pack_begin.h"
500 struct SVGA3dCmdDXReadbackAllQuery {
501 uint32 cid;
502 }
503 #include "vmware_pack_end.h"
504 SVGA3dCmdDXReadbackAllQuery; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */
505
506 typedef
507 #include "vmware_pack_begin.h"
508 struct SVGA3dCmdDXSetPredication {
509 SVGA3dQueryId queryId;
510 uint32 predicateValue;
511 }
512 #include "vmware_pack_end.h"
513 SVGA3dCmdDXSetPredication; /* SVGA_3D_CMD_DX_SET_PREDICATION */
514
515 typedef
516 #include "vmware_pack_begin.h"
517 struct MKS3dDXSOState {
518 uint32 offset; /* Starting offset */
519 uint32 intOffset; /* Internal offset */
520 uint32 vertexCount; /* vertices written */
521 uint32 sizeInBytes; /* max bytes to write */
522 }
523 #include "vmware_pack_end.h"
524 SVGA3dDXSOState;
525
526 /* Set the offset field to this value to append SO values to the buffer */
527 #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)
528
529 typedef
530 #include "vmware_pack_begin.h"
531 struct SVGA3dSoTarget {
532 SVGA3dSurfaceId sid;
533 uint32 offset;
534 uint32 sizeInBytes;
535 }
536 #include "vmware_pack_end.h"
537 SVGA3dSoTarget;
538
539 typedef
540 #include "vmware_pack_begin.h"
541 struct SVGA3dCmdDXSetSOTargets {
542 uint32 pad0;
543 /* Followed by a variable number of SVGA3dSOTarget's. */
544 }
545 #include "vmware_pack_end.h"
546 SVGA3dCmdDXSetSOTargets; /* SVGA_3D_CMD_DX_SET_SOTARGETS */
547
548 typedef
549 #include "vmware_pack_begin.h"
550 struct SVGA3dViewport
551 {
552 float x;
553 float y;
554 float width;
555 float height;
556 float minDepth;
557 float maxDepth;
558 }
559 #include "vmware_pack_end.h"
560 SVGA3dViewport;
561
562 typedef
563 #include "vmware_pack_begin.h"
564 struct SVGA3dCmdDXSetViewports {
565 uint32 pad0;
566 /* Followed by a variable number of SVGA3dViewport's. */
567 }
568 #include "vmware_pack_end.h"
569 SVGA3dCmdDXSetViewports; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */
570
571 #define SVGA3D_DX_MAX_VIEWPORTS 16
572
573 typedef
574 #include "vmware_pack_begin.h"
575 struct SVGA3dCmdDXSetScissorRects {
576 uint32 pad0;
577 /* Followed by a variable number of SVGASignedRect's. */
578 }
579 #include "vmware_pack_end.h"
580 SVGA3dCmdDXSetScissorRects; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */
581
582 #define SVGA3D_DX_MAX_SCISSORRECTS 16
583
584 typedef
585 #include "vmware_pack_begin.h"
586 struct SVGA3dCmdDXClearRenderTargetView {
587 SVGA3dRenderTargetViewId renderTargetViewId;
588 SVGA3dRGBAFloat rgba;
589 }
590 #include "vmware_pack_end.h"
591 SVGA3dCmdDXClearRenderTargetView; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */
592
593 typedef
594 #include "vmware_pack_begin.h"
595 struct SVGA3dCmdDXClearDepthStencilView {
596 uint16 flags;
597 uint16 stencil;
598 SVGA3dDepthStencilViewId depthStencilViewId;
599 float depth;
600 }
601 #include "vmware_pack_end.h"
602 SVGA3dCmdDXClearDepthStencilView; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */
603
604 typedef
605 #include "vmware_pack_begin.h"
606 struct SVGA3dCmdDXPredCopyRegion {
607 SVGA3dSurfaceId dstSid;
608 uint32 dstSubResource;
609 SVGA3dSurfaceId srcSid;
610 uint32 srcSubResource;
611 SVGA3dCopyBox box;
612 }
613 #include "vmware_pack_end.h"
614 SVGA3dCmdDXPredCopyRegion;
615 /* SVGA_3D_CMD_DX_PRED_COPY_REGION */
616
617 typedef
618 #include "vmware_pack_begin.h"
619 struct SVGA3dCmdDXPredCopy {
620 SVGA3dSurfaceId dstSid;
621 SVGA3dSurfaceId srcSid;
622 }
623 #include "vmware_pack_end.h"
624 SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */
625
626 typedef
627 #include "vmware_pack_begin.h"
628 struct SVGA3dCmdDXBufferCopy {
629 SVGA3dSurfaceId dest;
630 SVGA3dSurfaceId src;
631 uint32 destX;
632 uint32 srcX;
633 uint32 width;
634 }
635 #include "vmware_pack_end.h"
636 SVGA3dCmdDXBufferCopy;
637 /* SVGA_3D_CMD_DX_BUFFER_COPY */
638
639 typedef uint32 SVGA3dDXStretchBltMode;
640 #define SVGADX_STRETCHBLT_LINEAR (1 << 0)
641 #define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)
642
643 typedef
644 #include "vmware_pack_begin.h"
645 struct SVGA3dCmdDXStretchBlt {
646 SVGA3dSurfaceId srcSid;
647 uint32 srcSubResource;
648 SVGA3dSurfaceId dstSid;
649 uint32 destSubResource;
650 SVGA3dBox boxSrc;
651 SVGA3dBox boxDest;
652 SVGA3dDXStretchBltMode mode;
653 }
654 #include "vmware_pack_end.h"
655 SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */
656
657 typedef
658 #include "vmware_pack_begin.h"
659 struct SVGA3dCmdDXGenMips {
660 SVGA3dShaderResourceViewId shaderResourceViewId;
661 }
662 #include "vmware_pack_end.h"
663 SVGA3dCmdDXGenMips; /* SVGA_3D_CMD_DX_GENMIPS */
664
665 /*
666 * Defines a resource/DX surface. Resources share the surfaceId namespace.
667 *
668 */
669 typedef
670 #include "vmware_pack_begin.h"
671 struct SVGA3dCmdDefineGBSurface_v2 {
672 uint32 sid;
673 SVGA3dSurfaceFlags surfaceFlags;
674 SVGA3dSurfaceFormat format;
675 uint32 numMipLevels;
676 uint32 multisampleCount;
677 SVGA3dTextureFilter autogenFilter;
678 SVGA3dSize size;
679 uint32 arraySize;
680 uint32 pad;
681 }
682 #include "vmware_pack_end.h"
683 SVGA3dCmdDefineGBSurface_v2; /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 */
684
685 /*
686 * Update a sub-resource in a guest-backed resource.
687 * (Inform the device that the guest-contents have been updated.)
688 */
689 typedef
690 #include "vmware_pack_begin.h"
691 struct SVGA3dCmdDXUpdateSubResource {
692 SVGA3dSurfaceId sid;
693 uint32 subResource;
694 SVGA3dBox box;
695 }
696 #include "vmware_pack_end.h"
697 SVGA3dCmdDXUpdateSubResource; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */
698
699 /*
700 * Readback a subresource in a guest-backed resource.
701 * (Request the device to flush the dirty contents into the guest.)
702 */
703 typedef
704 #include "vmware_pack_begin.h"
705 struct SVGA3dCmdDXReadbackSubResource {
706 SVGA3dSurfaceId sid;
707 uint32 subResource;
708 }
709 #include "vmware_pack_end.h"
710 SVGA3dCmdDXReadbackSubResource; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */
711
712 /*
713 * Invalidate an image in a guest-backed surface.
714 * (Notify the device that the contents can be lost.)
715 */
716 typedef
717 #include "vmware_pack_begin.h"
718 struct SVGA3dCmdDXInvalidateSubResource {
719 SVGA3dSurfaceId sid;
720 uint32 subResource;
721 }
722 #include "vmware_pack_end.h"
723 SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */
724
725
726 /*
727 * Raw byte wise transfer from a buffer surface into another surface
728 * of the requested box.
729 */
730 typedef
731 #include "vmware_pack_begin.h"
732 struct SVGA3dCmdDXTransferFromBuffer {
733 SVGA3dSurfaceId srcSid;
734 uint32 srcOffset;
735 uint32 srcPitch;
736 uint32 srcSlicePitch;
737 SVGA3dSurfaceId destSid;
738 uint32 destSubResource;
739 SVGA3dBox destBox;
740 }
741 #include "vmware_pack_end.h"
742 SVGA3dCmdDXTransferFromBuffer; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */
743
744
745 /*
746 * Raw byte wise transfer from a buffer surface into another surface
747 * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set.
748 * The context is implied from the command buffer header.
749 */
750 typedef
751 #include "vmware_pack_begin.h"
752 struct SVGA3dCmdDXPredTransferFromBuffer {
753 SVGA3dSurfaceId srcSid;
754 uint32 srcOffset;
755 uint32 srcPitch;
756 uint32 srcSlicePitch;
757 SVGA3dSurfaceId destSid;
758 uint32 destSubResource;
759 SVGA3dBox destBox;
760 }
761 #include "vmware_pack_end.h"
762 SVGA3dCmdDXPredTransferFromBuffer;
763 /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */
764
765
766 typedef
767 #include "vmware_pack_begin.h"
768 struct SVGA3dCmdDXSurfaceCopyAndReadback {
769 SVGA3dSurfaceId srcSid;
770 SVGA3dSurfaceId destSid;
771 SVGA3dCopyBox box;
772 }
773 #include "vmware_pack_end.h"
774 SVGA3dCmdDXSurfaceCopyAndReadback;
775 /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */
776
777 typedef
778 #include "vmware_pack_begin.h"
779 struct SVGA3dCmdDXHint {
780 uint32 hintId;
781
782 /*
783 * Followed by variable sized data depending on the hintId.
784 */
785 }
786 #include "vmware_pack_end.h"
787 SVGA3dCmdDXHint;
788 /* SVGA_3D_CMD_DX_HINT */
789
790 typedef
791 #include "vmware_pack_begin.h"
792 struct SVGA3dCmdDXBufferUpdate {
793 SVGA3dSurfaceId sid;
794 uint32 x;
795 uint32 width;
796 }
797 #include "vmware_pack_end.h"
798 SVGA3dCmdDXBufferUpdate;
799 /* SVGA_3D_CMD_DX_BUFFER_UPDATE */
800
801 typedef
802 #include "vmware_pack_begin.h"
803 struct SVGA3dCmdDXSetConstantBufferOffset {
804 uint32 slot;
805 uint32 offsetInBytes;
806 }
807 #include "vmware_pack_end.h"
808 SVGA3dCmdDXSetConstantBufferOffset;
809
810 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset;
811 /* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */
812
813 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset;
814 /* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */
815
816 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;
817 /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */
818
819
820 typedef
821 #include "vmware_pack_begin.h"
822 struct {
823 union {
824 struct {
825 uint32 firstElement;
826 uint32 numElements;
827 uint32 pad0;
828 uint32 pad1;
829 } buffer;
830 struct {
831 uint32 mostDetailedMip;
832 uint32 firstArraySlice;
833 uint32 mipLevels;
834 uint32 arraySize;
835 } tex;
836 struct {
837 uint32 firstElement;
838 uint32 numElements;
839 uint32 flags;
840 uint32 pad0;
841 } bufferex;
842 };
843 }
844 #include "vmware_pack_end.h"
845 SVGA3dShaderResourceViewDesc;
846
847 typedef
848 #include "vmware_pack_begin.h"
849 struct {
850 SVGA3dSurfaceId sid;
851 SVGA3dSurfaceFormat format;
852 SVGA3dResourceType resourceDimension;
853 SVGA3dShaderResourceViewDesc desc;
854 uint32 pad;
855 }
856 #include "vmware_pack_end.h"
857 SVGACOTableDXSRViewEntry;
858
859 typedef
860 #include "vmware_pack_begin.h"
861 struct SVGA3dCmdDXDefineShaderResourceView {
862 SVGA3dShaderResourceViewId shaderResourceViewId;
863
864 SVGA3dSurfaceId sid;
865 SVGA3dSurfaceFormat format;
866 SVGA3dResourceType resourceDimension;
867
868 SVGA3dShaderResourceViewDesc desc;
869 }
870 #include "vmware_pack_end.h"
871 SVGA3dCmdDXDefineShaderResourceView;
872 /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */
873
874 typedef
875 #include "vmware_pack_begin.h"
876 struct SVGA3dCmdDXDestroyShaderResourceView {
877 SVGA3dShaderResourceViewId shaderResourceViewId;
878 }
879 #include "vmware_pack_end.h"
880 SVGA3dCmdDXDestroyShaderResourceView;
881 /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */
882
883 typedef
884 #include "vmware_pack_begin.h"
885 struct SVGA3dRenderTargetViewDesc {
886 union {
887 struct {
888 uint32 firstElement;
889 uint32 numElements;
890 } buffer;
891 struct {
892 uint32 mipSlice;
893 uint32 firstArraySlice;
894 uint32 arraySize;
895 } tex; /* 1d, 2d, cube */
896 struct {
897 uint32 mipSlice;
898 uint32 firstW;
899 uint32 wSize;
900 } tex3D;
901 };
902 }
903 #include "vmware_pack_end.h"
904 SVGA3dRenderTargetViewDesc;
905
906 typedef
907 #include "vmware_pack_begin.h"
908 struct {
909 SVGA3dSurfaceId sid;
910 SVGA3dSurfaceFormat format;
911 SVGA3dResourceType resourceDimension;
912 SVGA3dRenderTargetViewDesc desc;
913 uint32 pad[2];
914 }
915 #include "vmware_pack_end.h"
916 SVGACOTableDXRTViewEntry;
917
918 typedef
919 #include "vmware_pack_begin.h"
920 struct SVGA3dCmdDXDefineRenderTargetView {
921 SVGA3dRenderTargetViewId renderTargetViewId;
922
923 SVGA3dSurfaceId sid;
924 SVGA3dSurfaceFormat format;
925 SVGA3dResourceType resourceDimension;
926
927 SVGA3dRenderTargetViewDesc desc;
928 }
929 #include "vmware_pack_end.h"
930 SVGA3dCmdDXDefineRenderTargetView;
931 /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */
932
933 typedef
934 #include "vmware_pack_begin.h"
935 struct SVGA3dCmdDXDestroyRenderTargetView {
936 SVGA3dRenderTargetViewId renderTargetViewId;
937 }
938 #include "vmware_pack_end.h"
939 SVGA3dCmdDXDestroyRenderTargetView;
940 /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */
941
942 /*
943 */
944 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01
945 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02
946 #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03
947 typedef uint8 SVGA3DCreateDSViewFlags;
948
949 typedef
950 #include "vmware_pack_begin.h"
951 struct {
952 SVGA3dSurfaceId sid;
953 SVGA3dSurfaceFormat format;
954 SVGA3dResourceType resourceDimension;
955 uint32 mipSlice;
956 uint32 firstArraySlice;
957 uint32 arraySize;
958 SVGA3DCreateDSViewFlags flags;
959 uint8 pad0;
960 uint16 pad1;
961 uint32 pad2;
962 }
963 #include "vmware_pack_end.h"
964 SVGACOTableDXDSViewEntry;
965
966 typedef
967 #include "vmware_pack_begin.h"
968 struct SVGA3dCmdDXDefineDepthStencilView {
969 SVGA3dDepthStencilViewId depthStencilViewId;
970
971 SVGA3dSurfaceId sid;
972 SVGA3dSurfaceFormat format;
973 SVGA3dResourceType resourceDimension;
974 uint32 mipSlice;
975 uint32 firstArraySlice;
976 uint32 arraySize;
977 SVGA3DCreateDSViewFlags flags;
978 uint8 pad0;
979 uint16 pad1;
980 }
981 #include "vmware_pack_end.h"
982 SVGA3dCmdDXDefineDepthStencilView;
983 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
984
985 typedef
986 #include "vmware_pack_begin.h"
987 struct SVGA3dCmdDXDestroyDepthStencilView {
988 SVGA3dDepthStencilViewId depthStencilViewId;
989 }
990 #include "vmware_pack_end.h"
991 SVGA3dCmdDXDestroyDepthStencilView;
992 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
993
994 typedef
995 #include "vmware_pack_begin.h"
996 struct SVGA3dInputElementDesc {
997 uint32 inputSlot;
998 uint32 alignedByteOffset;
999 SVGA3dSurfaceFormat format;
1000 SVGA3dInputClassification inputSlotClass;
1001 uint32 instanceDataStepRate;
1002 uint32 inputRegister;
1003 }
1004 #include "vmware_pack_end.h"
1005 SVGA3dInputElementDesc;
1006
1007 typedef
1008 #include "vmware_pack_begin.h"
1009 struct {
1010 /*
1011 * XXX: How many of these can there be?
1012 */
1013 uint32 elid;
1014 uint32 numDescs;
1015 SVGA3dInputElementDesc desc[32];
1016 uint32 pad[62];
1017 }
1018 #include "vmware_pack_end.h"
1019 SVGACOTableDXElementLayoutEntry;
1020
1021 typedef
1022 #include "vmware_pack_begin.h"
1023 struct SVGA3dCmdDXDefineElementLayout {
1024 SVGA3dElementLayoutId elementLayoutId;
1025 /* Followed by a variable number of SVGA3dInputElementDesc's. */
1026 }
1027 #include "vmware_pack_end.h"
1028 SVGA3dCmdDXDefineElementLayout;
1029 /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */
1030
1031 typedef
1032 #include "vmware_pack_begin.h"
1033 struct SVGA3dCmdDXDestroyElementLayout {
1034 SVGA3dElementLayoutId elementLayoutId;
1035 }
1036 #include "vmware_pack_end.h"
1037 SVGA3dCmdDXDestroyElementLayout;
1038 /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */
1039
1040
1041 #define SVGA3D_DX_MAX_RENDER_TARGETS 8
1042
1043 typedef
1044 #include "vmware_pack_begin.h"
1045 struct SVGA3dDXBlendStatePerRT {
1046 uint8 blendEnable;
1047 uint8 srcBlend;
1048 uint8 destBlend;
1049 uint8 blendOp;
1050 uint8 srcBlendAlpha;
1051 uint8 destBlendAlpha;
1052 uint8 blendOpAlpha;
1053 uint8 renderTargetWriteMask;
1054 uint8 logicOpEnable;
1055 uint8 logicOp;
1056 uint16 pad0;
1057 }
1058 #include "vmware_pack_end.h"
1059 SVGA3dDXBlendStatePerRT;
1060
1061 typedef
1062 #include "vmware_pack_begin.h"
1063 struct {
1064 uint8 alphaToCoverageEnable;
1065 uint8 independentBlendEnable;
1066 uint16 pad0;
1067 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
1068 uint32 pad1[7];
1069 }
1070 #include "vmware_pack_end.h"
1071 SVGACOTableDXBlendStateEntry;
1072
1073 /*
1074 */
1075 typedef
1076 #include "vmware_pack_begin.h"
1077 struct SVGA3dCmdDXDefineBlendState {
1078 SVGA3dBlendStateId blendId;
1079 uint8 alphaToCoverageEnable;
1080 uint8 independentBlendEnable;
1081 uint16 pad0;
1082 SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
1083 }
1084 #include "vmware_pack_end.h"
1085 SVGA3dCmdDXDefineBlendState; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */
1086
1087 typedef
1088 #include "vmware_pack_begin.h"
1089 struct SVGA3dCmdDXDestroyBlendState {
1090 SVGA3dBlendStateId blendId;
1091 }
1092 #include "vmware_pack_end.h"
1093 SVGA3dCmdDXDestroyBlendState; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */
1094
1095 typedef
1096 #include "vmware_pack_begin.h"
1097 struct {
1098 uint8 depthEnable;
1099 SVGA3dDepthWriteMask depthWriteMask;
1100 SVGA3dComparisonFunc depthFunc;
1101 uint8 stencilEnable;
1102 uint8 frontEnable;
1103 uint8 backEnable;
1104 uint8 stencilReadMask;
1105 uint8 stencilWriteMask;
1106
1107 uint8 frontStencilFailOp;
1108 uint8 frontStencilDepthFailOp;
1109 uint8 frontStencilPassOp;
1110 SVGA3dComparisonFunc frontStencilFunc;
1111
1112 uint8 backStencilFailOp;
1113 uint8 backStencilDepthFailOp;
1114 uint8 backStencilPassOp;
1115 SVGA3dComparisonFunc backStencilFunc;
1116 }
1117 #include "vmware_pack_end.h"
1118 SVGACOTableDXDepthStencilEntry;
1119
1120 /*
1121 */
1122 typedef
1123 #include "vmware_pack_begin.h"
1124 struct SVGA3dCmdDXDefineDepthStencilState {
1125 SVGA3dDepthStencilStateId depthStencilId;
1126
1127 uint8 depthEnable;
1128 SVGA3dDepthWriteMask depthWriteMask;
1129 SVGA3dComparisonFunc depthFunc;
1130 uint8 stencilEnable;
1131 uint8 frontEnable;
1132 uint8 backEnable;
1133 uint8 stencilReadMask;
1134 uint8 stencilWriteMask;
1135
1136 uint8 frontStencilFailOp;
1137 uint8 frontStencilDepthFailOp;
1138 uint8 frontStencilPassOp;
1139 SVGA3dComparisonFunc frontStencilFunc;
1140
1141 uint8 backStencilFailOp;
1142 uint8 backStencilDepthFailOp;
1143 uint8 backStencilPassOp;
1144 SVGA3dComparisonFunc backStencilFunc;
1145 }
1146 #include "vmware_pack_end.h"
1147 SVGA3dCmdDXDefineDepthStencilState;
1148 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */
1149
1150 typedef
1151 #include "vmware_pack_begin.h"
1152 struct SVGA3dCmdDXDestroyDepthStencilState {
1153 SVGA3dDepthStencilStateId depthStencilId;
1154 }
1155 #include "vmware_pack_end.h"
1156 SVGA3dCmdDXDestroyDepthStencilState;
1157 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */
1158
1159 typedef
1160 #include "vmware_pack_begin.h"
1161 struct {
1162 uint8 fillMode;
1163 SVGA3dCullMode cullMode;
1164 uint8 frontCounterClockwise;
1165 uint8 provokingVertexLast;
1166 int32 depthBias;
1167 float depthBiasClamp;
1168 float slopeScaledDepthBias;
1169 uint8 depthClipEnable;
1170 uint8 scissorEnable;
1171 uint8 multisampleEnable;
1172 uint8 antialiasedLineEnable;
1173 float lineWidth;
1174 uint8 lineStippleEnable;
1175 uint8 lineStippleFactor;
1176 uint16 lineStipplePattern;
1177 uint32 forcedSampleCount;
1178 }
1179 #include "vmware_pack_end.h"
1180 SVGACOTableDXRasterizerStateEntry;
1181
1182 /*
1183 */
1184 typedef
1185 #include "vmware_pack_begin.h"
1186 struct SVGA3dCmdDXDefineRasterizerState {
1187 SVGA3dRasterizerStateId rasterizerId;
1188
1189 uint8 fillMode;
1190 SVGA3dCullMode cullMode;
1191 uint8 frontCounterClockwise;
1192 uint8 provokingVertexLast;
1193 int32 depthBias;
1194 float depthBiasClamp;
1195 float slopeScaledDepthBias;
1196 uint8 depthClipEnable;
1197 uint8 scissorEnable;
1198 uint8 multisampleEnable;
1199 uint8 antialiasedLineEnable;
1200 float lineWidth;
1201 uint8 lineStippleEnable;
1202 uint8 lineStippleFactor;
1203 uint16 lineStipplePattern;
1204 }
1205 #include "vmware_pack_end.h"
1206 SVGA3dCmdDXDefineRasterizerState;
1207 /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */
1208
1209 typedef
1210 #include "vmware_pack_begin.h"
1211 struct SVGA3dCmdDXDestroyRasterizerState {
1212 SVGA3dRasterizerStateId rasterizerId;
1213 }
1214 #include "vmware_pack_end.h"
1215 SVGA3dCmdDXDestroyRasterizerState;
1216 /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */
1217
1218 typedef
1219 #include "vmware_pack_begin.h"
1220 struct {
1221 SVGA3dFilter filter;
1222 uint8 addressU;
1223 uint8 addressV;
1224 uint8 addressW;
1225 uint8 pad0;
1226 float mipLODBias;
1227 uint8 maxAnisotropy;
1228 SVGA3dComparisonFunc comparisonFunc;
1229 uint16 pad1;
1230 SVGA3dRGBAFloat borderColor;
1231 float minLOD;
1232 float maxLOD;
1233 uint32 pad2[6];
1234 }
1235 #include "vmware_pack_end.h"
1236 SVGACOTableDXSamplerEntry;
1237
1238 /*
1239 */
1240 typedef
1241 #include "vmware_pack_begin.h"
1242 struct SVGA3dCmdDXDefineSamplerState {
1243 SVGA3dSamplerId samplerId;
1244 SVGA3dFilter filter;
1245 uint8 addressU;
1246 uint8 addressV;
1247 uint8 addressW;
1248 uint8 pad0;
1249 float mipLODBias;
1250 uint8 maxAnisotropy;
1251 SVGA3dComparisonFunc comparisonFunc;
1252 uint16 pad1;
1253 SVGA3dRGBAFloat borderColor;
1254 float minLOD;
1255 float maxLOD;
1256 }
1257 #include "vmware_pack_end.h"
1258 SVGA3dCmdDXDefineSamplerState; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */
1259
1260 typedef
1261 #include "vmware_pack_begin.h"
1262 struct SVGA3dCmdDXDestroySamplerState {
1263 SVGA3dSamplerId samplerId;
1264 }
1265 #include "vmware_pack_end.h"
1266 SVGA3dCmdDXDestroySamplerState; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
1267
1268 typedef
1269 #include "vmware_pack_begin.h"
1270 struct SVGA3dCmdDXDefineShader {
1271 SVGA3dShaderId shaderId;
1272 SVGA3dShaderType type;
1273 uint32 sizeInBytes; /* Number of bytes of shader text. */
1274 }
1275 #include "vmware_pack_end.h"
1276 SVGA3dCmdDXDefineShader; /* SVGA_3D_CMD_DX_DEFINE_SHADER */
1277
1278 typedef
1279 #include "vmware_pack_begin.h"
1280 struct SVGACOTableDXShaderEntry {
1281 SVGA3dShaderType type;
1282 uint32 sizeInBytes;
1283 uint32 offsetInBytes;
1284 SVGAMobId mobid;
1285 uint32 pad[4];
1286 }
1287 #include "vmware_pack_end.h"
1288 SVGACOTableDXShaderEntry;
1289
1290 typedef
1291 #include "vmware_pack_begin.h"
1292 struct SVGA3dCmdDXDestroyShader {
1293 SVGA3dShaderId shaderId;
1294 }
1295 #include "vmware_pack_end.h"
1296 SVGA3dCmdDXDestroyShader; /* SVGA_3D_CMD_DX_DESTROY_SHADER */
1297
1298 typedef
1299 #include "vmware_pack_begin.h"
1300 struct SVGA3dCmdDXBindShader {
1301 uint32 cid;
1302 uint32 shid;
1303 SVGAMobId mobid;
1304 uint32 offsetInBytes;
1305 }
1306 #include "vmware_pack_end.h"
1307 SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */
1308
1309 typedef
1310 #include "vmware_pack_begin.h"
1311 struct SVGA3dCmdDXBindAllShader {
1312 uint32 cid;
1313 SVGAMobId mobid;
1314 }
1315 #include "vmware_pack_end.h"
1316 SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */
1317
1318 typedef
1319 #include "vmware_pack_begin.h"
1320 struct SVGA3dCmdDXCondBindAllShader {
1321 uint32 cid;
1322 SVGAMobId testMobid;
1323 SVGAMobId mobid;
1324 }
1325 #include "vmware_pack_end.h"
1326 SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */
1327
1328 /*
1329 * The maximum number of streamout decl's in each streamout entry.
1330 */
1331 #define SVGA3D_MAX_STREAMOUT_DECLS 64
1332
1333 typedef
1334 #include "vmware_pack_begin.h"
1335 struct SVGA3dStreamOutputDeclarationEntry {
1336 uint32 outputSlot;
1337 uint32 registerIndex;
1338 uint8 registerMask;
1339 uint8 pad0;
1340 uint16 pad1;
1341 uint32 stream;
1342 }
1343 #include "vmware_pack_end.h"
1344 SVGA3dStreamOutputDeclarationEntry;
1345
1346 typedef
1347 #include "vmware_pack_begin.h"
1348 struct SVGAOTableStreamOutputEntry {
1349 uint32 numOutputStreamEntries;
1350 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
1351 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
1352 uint32 rasterizedStream;
1353 uint32 pad[250];
1354 }
1355 #include "vmware_pack_end.h"
1356 SVGACOTableDXStreamOutputEntry;
1357
1358 typedef
1359 #include "vmware_pack_begin.h"
1360 struct SVGA3dCmdDXDefineStreamOutput {
1361 SVGA3dStreamOutputId soid;
1362 uint32 numOutputStreamEntries;
1363 SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
1364 uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
1365 uint32 rasterizedStream;
1366 }
1367 #include "vmware_pack_end.h"
1368 SVGA3dCmdDXDefineStreamOutput; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
1369
1370 typedef
1371 #include "vmware_pack_begin.h"
1372 struct SVGA3dCmdDXDestroyStreamOutput {
1373 SVGA3dStreamOutputId soid;
1374 }
1375 #include "vmware_pack_end.h"
1376 SVGA3dCmdDXDestroyStreamOutput; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */
1377
1378 typedef
1379 #include "vmware_pack_begin.h"
1380 struct SVGA3dCmdDXSetStreamOutput {
1381 SVGA3dStreamOutputId soid;
1382 }
1383 #include "vmware_pack_end.h"
1384 SVGA3dCmdDXSetStreamOutput; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
1385
1386 typedef
1387 #include "vmware_pack_begin.h"
1388 struct {
1389 uint64 value;
1390 uint32 mobId;
1391 uint32 mobOffset;
1392 }
1393 #include "vmware_pack_end.h"
1394 SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */
1395
1396 /*
1397 * SVGA3dCmdSetCOTable --
1398 *
1399 * This command allows the guest to bind a mob to a context-object table.
1400 */
1401
1402 typedef
1403 #include "vmware_pack_begin.h"
1404 struct SVGA3dCmdDXSetCOTable {
1405 uint32 cid;
1406 uint32 mobid;
1407 SVGACOTableType type;
1408 uint32 validSizeInBytes;
1409 }
1410 #include "vmware_pack_end.h"
1411 SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */
1412
1413 typedef
1414 #include "vmware_pack_begin.h"
1415 struct SVGA3dCmdDXReadbackCOTable {
1416 uint32 cid;
1417 SVGACOTableType type;
1418 }
1419 #include "vmware_pack_end.h"
1420 SVGA3dCmdDXReadbackCOTable; /* SVGA_3D_CMD_DX_READBACK_COTABLE */
1421
1422 typedef
1423 #include "vmware_pack_begin.h"
1424 struct SVGA3dCOTableData {
1425 uint32 mobid;
1426 }
1427 #include "vmware_pack_end.h"
1428 SVGA3dCOTableData;
1429
1430 typedef
1431 #include "vmware_pack_begin.h"
1432 struct SVGA3dBufferBinding {
1433 uint32 bufferId;
1434 uint32 stride;
1435 uint32 offset;
1436 }
1437 #include "vmware_pack_end.h"
1438 SVGA3dBufferBinding;
1439
1440 typedef
1441 #include "vmware_pack_begin.h"
1442 struct SVGA3dConstantBufferBinding {
1443 uint32 sid;
1444 uint32 offsetInBytes;
1445 uint32 sizeInBytes;
1446 }
1447 #include "vmware_pack_end.h"
1448 SVGA3dConstantBufferBinding;
1449
1450 typedef
1451 #include "vmware_pack_begin.h"
1452 struct SVGADXInputAssemblyMobFormat {
1453 uint32 layoutId;
1454 SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS];
1455 uint32 indexBufferSid;
1456 uint32 pad;
1457 uint32 indexBufferOffset;
1458 uint32 indexBufferFormat;
1459 uint32 topology;
1460 }
1461 #include "vmware_pack_end.h"
1462 SVGADXInputAssemblyMobFormat;
1463
1464 typedef
1465 #include "vmware_pack_begin.h"
1466 struct SVGADXContextMobFormat {
1467 SVGADXInputAssemblyMobFormat inputAssembly;
1468
1469 struct {
1470 uint32 blendStateId;
1471 uint32 blendFactor[4];
1472 uint32 sampleMask;
1473 uint32 depthStencilStateId;
1474 uint32 stencilRef;
1475 uint32 rasterizerStateId;
1476 uint32 depthStencilViewId;
1477 uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];
1478 uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS];
1479 } renderState;
1480
1481 struct {
1482 uint32 targets[SVGA3D_DX_MAX_SOTARGETS];
1483 uint32 soid;
1484 } streamOut;
1485 uint32 pad0[11];
1486
1487 uint8 numViewports;
1488 uint8 numScissorRects;
1489 uint16 pad1[1];
1490
1491 uint32 pad2[3];
1492
1493 SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];
1494 uint32 pad3[32];
1495
1496 SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];
1497 uint32 pad4[64];
1498
1499 struct {
1500 uint32 queryID;
1501 uint32 value;
1502 } predication;
1503 uint32 pad5[2];
1504
1505 struct {
1506 uint32 shaderId;
1507 SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];
1508 uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS];
1509 uint32 samplers[SVGA3D_DX_MAX_SAMPLERS];
1510 } shaderState[SVGA3D_NUM_SHADERTYPE];
1511 uint32 pad6[26];
1512
1513 SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];
1514
1515 SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
1516 uint32 pad7[380];
1517 }
1518 #include "vmware_pack_end.h"
1519 SVGADXContextMobFormat;
1520
1521 #endif /* _SVGA3D_DX_H_ */