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