1 /**********************************************************
2 * Copyright 2007-2017 VMware, Inc. All rights reserved.
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:
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
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
24 **********************************************************/
29 * SVGA 3d hardware definitions for DX10 support.
35 #define INCLUDE_ALLOW_MODULE
36 #define INCLUDE_ALLOW_USERLEVEL
37 #define INCLUDE_ALLOW_VMCORE
38 #include "includeCheck.h"
40 #include "svga3d_limits.h"
42 /* Matches D3D10_DDI_INPUT_CLASSIFICATION and D3D10_INPUT_CLASSIFICATION */
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
47 typedef uint32 SVGA3dInputClassification
;
49 /* Matches D3D10DDIRESOURCE_TYPE */
50 #define SVGA3D_RESOURCE_TYPE_MIN 1
51 #define SVGA3D_RESOURCE_BUFFER 1
52 #define SVGA3D_RESOURCE_TEXTURE1D 2
53 #define SVGA3D_RESOURCE_TEXTURE2D 3
54 #define SVGA3D_RESOURCE_TEXTURE3D 4
55 #define SVGA3D_RESOURCE_TEXTURECUBE 5
56 #define SVGA3D_RESOURCE_TYPE_DX10_MAX 6
57 #define SVGA3D_RESOURCE_BUFFEREX 6
58 #define SVGA3D_RESOURCE_TYPE_MAX 7
59 typedef uint32 SVGA3dResourceType
;
61 /* Matches D3D10_DDI_COLOR_WRITE_ENABLE and D3D10_COLOR_WRITE_ENABLE */
62 #define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0)
63 #define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1)
64 #define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2)
65 #define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3)
66 #define SVGA3D_COLOR_WRITE_ENABLE_ALL (SVGA3D_COLOR_WRITE_ENABLE_RED | \
67 SVGA3D_COLOR_WRITE_ENABLE_GREEN | \
68 SVGA3D_COLOR_WRITE_ENABLE_BLUE | \
69 SVGA3D_COLOR_WRITE_ENABLE_ALPHA)
70 typedef uint8 SVGA3dColorWriteEnable
;
72 /* Matches D3D10_DDI_DEPTH_WRITE_MASK and D3D10_DEPTH_WRITE_MASK */
73 #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0
74 #define SVGA3D_DEPTH_WRITE_MASK_ALL 1
75 typedef uint8 SVGA3dDepthWriteMask
;
77 /* Matches D3D10_DDI_FILTER and D3D10_FILTER */
78 #define SVGA3D_FILTER_MIP_LINEAR (1 << 0)
79 #define SVGA3D_FILTER_MAG_LINEAR (1 << 2)
80 #define SVGA3D_FILTER_MIN_LINEAR (1 << 4)
81 #define SVGA3D_FILTER_ANISOTROPIC (1 << 6)
82 #define SVGA3D_FILTER_COMPARE (1 << 7)
83 typedef uint32 SVGA3dFilter
;
85 /* Matches D3D10_DDI_CULL_MODE */
86 #define SVGA3D_CULL_INVALID 0
87 #define SVGA3D_CULL_MIN 1
88 #define SVGA3D_CULL_NONE 1
89 #define SVGA3D_CULL_FRONT 2
90 #define SVGA3D_CULL_BACK 3
91 #define SVGA3D_CULL_MAX 4
92 typedef uint8 SVGA3dCullMode
;
94 /* Matches D3D10_DDI_COMPARISON_FUNC */
95 #define SVGA3D_COMPARISON_INVALID 0
96 #define SVGA3D_COMPARISON_MIN 1
97 #define SVGA3D_COMPARISON_NEVER 1
98 #define SVGA3D_COMPARISON_LESS 2
99 #define SVGA3D_COMPARISON_EQUAL 3
100 #define SVGA3D_COMPARISON_LESS_EQUAL 4
101 #define SVGA3D_COMPARISON_GREATER 5
102 #define SVGA3D_COMPARISON_NOT_EQUAL 6
103 #define SVGA3D_COMPARISON_GREATER_EQUAL 7
104 #define SVGA3D_COMPARISON_ALWAYS 8
105 #define SVGA3D_COMPARISON_MAX 9
106 typedef uint8 SVGA3dComparisonFunc
;
109 * SVGA3D_MULTISAMPLE_DISABLE disables MSAA for all primitives.
110 * SVGA3D_MULTISAMPLE_DISABLE_LINE, which is supported in DX10.1,
111 * disables MSAA for lines only.
113 #define SVGA3D_MULTISAMPLE_DISABLE 0
114 #define SVGA3D_MULTISAMPLE_ENABLE 1
115 #define SVGA3D_MULTISAMPLE_DX_MAX 1
116 #define SVGA3D_MULTISAMPLE_DISABLE_LINE 2
117 #define SVGA3D_MULTISAMPLE_MAX 2
118 typedef uint8 SVGA3dMultisampleEnable
;
120 #define SVGA3D_DX_MAX_VERTEXBUFFERS 32
121 #define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16
122 #define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 32
123 #define SVGA3D_DX_MAX_SOTARGETS 4
124 #define SVGA3D_DX_MAX_SRVIEWS 128
125 #define SVGA3D_DX_MAX_CONSTBUFFERS 16
126 #define SVGA3D_DX_MAX_SAMPLERS 16
128 #define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32))
130 typedef uint32 SVGA3dShaderResourceViewId
;
131 typedef uint32 SVGA3dRenderTargetViewId
;
132 typedef uint32 SVGA3dDepthStencilViewId
;
134 typedef uint32 SVGA3dShaderId
;
135 typedef uint32 SVGA3dElementLayoutId
;
136 typedef uint32 SVGA3dSamplerId
;
137 typedef uint32 SVGA3dBlendStateId
;
138 typedef uint32 SVGA3dDepthStencilStateId
;
139 typedef uint32 SVGA3dRasterizerStateId
;
140 typedef uint32 SVGA3dQueryId
;
141 typedef uint32 SVGA3dStreamOutputId
;
155 #include "vmware_pack_begin.h"
160 #include "vmware_pack_end.h"
161 SVGAOTableDXContextEntry
;
164 #include "vmware_pack_begin.h"
165 struct SVGA3dCmdDXDefineContext
{
168 #include "vmware_pack_end.h"
169 SVGA3dCmdDXDefineContext
; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */
172 #include "vmware_pack_begin.h"
173 struct SVGA3dCmdDXDestroyContext
{
176 #include "vmware_pack_end.h"
177 SVGA3dCmdDXDestroyContext
; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */
182 * validContents should be set to 0 for new contexts,
183 * and 1 if this is an old context which is getting paged
184 * back on to the device.
186 * For new contexts, it is recommended that the driver
187 * issue commands to initialize all interesting state
188 * prior to rendering.
191 #include "vmware_pack_begin.h"
192 struct SVGA3dCmdDXBindContext
{
195 uint32 validContents
;
197 #include "vmware_pack_end.h"
198 SVGA3dCmdDXBindContext
; /* SVGA_3D_CMD_DX_BIND_CONTEXT */
201 * Readback a DX context.
202 * (Request that the device flush the contents back into guest memory.)
205 #include "vmware_pack_begin.h"
206 struct SVGA3dCmdDXReadbackContext
{
209 #include "vmware_pack_end.h"
210 SVGA3dCmdDXReadbackContext
; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */
213 * Invalidate a guest-backed context.
216 #include "vmware_pack_begin.h"
217 struct SVGA3dCmdDXInvalidateContext
{
220 #include "vmware_pack_end.h"
221 SVGA3dCmdDXInvalidateContext
; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */
224 #include "vmware_pack_begin.h"
225 struct SVGA3dCmdDXSetSingleConstantBuffer
{
227 SVGA3dShaderType type
;
229 uint32 offsetInBytes
;
232 #include "vmware_pack_end.h"
233 SVGA3dCmdDXSetSingleConstantBuffer
;
234 /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */
237 #include "vmware_pack_begin.h"
238 struct SVGA3dCmdDXSetShaderResources
{
240 SVGA3dShaderType type
;
243 * Followed by a variable number of SVGA3dShaderResourceViewId's.
246 #include "vmware_pack_end.h"
247 SVGA3dCmdDXSetShaderResources
; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */
250 #include "vmware_pack_begin.h"
251 struct SVGA3dCmdDXSetShader
{
252 SVGA3dShaderId shaderId
;
253 SVGA3dShaderType type
;
255 #include "vmware_pack_end.h"
256 SVGA3dCmdDXSetShader
; /* SVGA_3D_CMD_DX_SET_SHADER */
259 #include "vmware_pack_begin.h"
260 struct SVGA3dCmdDXSetSamplers
{
262 SVGA3dShaderType type
;
265 * Followed by a variable number of SVGA3dSamplerId's.
268 #include "vmware_pack_end.h"
269 SVGA3dCmdDXSetSamplers
; /* SVGA_3D_CMD_DX_SET_SAMPLERS */
272 #include "vmware_pack_begin.h"
273 struct SVGA3dCmdDXDraw
{
275 uint32 startVertexLocation
;
277 #include "vmware_pack_end.h"
278 SVGA3dCmdDXDraw
; /* SVGA_3D_CMD_DX_DRAW */
281 #include "vmware_pack_begin.h"
282 struct SVGA3dCmdDXDrawIndexed
{
284 uint32 startIndexLocation
;
285 int32 baseVertexLocation
;
287 #include "vmware_pack_end.h"
288 SVGA3dCmdDXDrawIndexed
; /* SVGA_3D_CMD_DX_DRAW_INDEXED */
291 #include "vmware_pack_begin.h"
292 struct SVGA3dCmdDXDrawInstanced
{
293 uint32 vertexCountPerInstance
;
294 uint32 instanceCount
;
295 uint32 startVertexLocation
;
296 uint32 startInstanceLocation
;
298 #include "vmware_pack_end.h"
299 SVGA3dCmdDXDrawInstanced
; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */
302 #include "vmware_pack_begin.h"
303 struct SVGA3dCmdDXDrawIndexedInstanced
{
304 uint32 indexCountPerInstance
;
305 uint32 instanceCount
;
306 uint32 startIndexLocation
;
307 int32 baseVertexLocation
;
308 uint32 startInstanceLocation
;
310 #include "vmware_pack_end.h"
311 SVGA3dCmdDXDrawIndexedInstanced
; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */
314 #include "vmware_pack_begin.h"
315 struct SVGA3dCmdDXDrawIndexedInstancedIndirect
{
316 SVGA3dSurfaceId argsBufferSid
;
317 uint32 byteOffsetForArgs
;
319 #include "vmware_pack_end.h"
320 SVGA3dCmdDXDrawIndexedInstancedIndirect
;
321 /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED_INDIRECT */
324 #include "vmware_pack_begin.h"
325 struct SVGA3dCmdDXDrawInstancedIndirect
{
326 SVGA3dSurfaceId argsBufferSid
;
327 uint32 byteOffsetForArgs
;
329 #include "vmware_pack_end.h"
330 SVGA3dCmdDXDrawInstancedIndirect
;
331 /* SVGA_3D_CMD_DX_DRAW_INSTANCED_INDIRECT */
334 #include "vmware_pack_begin.h"
335 struct SVGA3dCmdDXDrawAuto
{
338 #include "vmware_pack_end.h"
339 SVGA3dCmdDXDrawAuto
; /* SVGA_3D_CMD_DX_DRAW_AUTO */
342 #include "vmware_pack_begin.h"
343 struct SVGA3dCmdDXDispatch
{
344 uint32 threadGroupCountX
;
345 uint32 threadGroupCountY
;
346 uint32 threadGroupCountZ
;
348 #include "vmware_pack_end.h"
350 /* SVGA_3D_CMD_DX_DISPATCH */
353 #include "vmware_pack_begin.h"
354 struct SVGA3dCmdDXDispatchIndirect
{
355 SVGA3dSurfaceId argsBufferSid
;
356 uint32 byteOffsetForArgs
;
358 #include "vmware_pack_end.h"
359 SVGA3dCmdDXDispatchIndirect
;
360 /* SVGA_3D_CMD_DX_DISPATCH_INDIRECT */
363 #include "vmware_pack_begin.h"
364 struct SVGA3dCmdDXSetInputLayout
{
365 SVGA3dElementLayoutId elementLayoutId
;
367 #include "vmware_pack_end.h"
368 SVGA3dCmdDXSetInputLayout
; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */
371 #include "vmware_pack_begin.h"
372 struct SVGA3dVertexBuffer
{
377 #include "vmware_pack_end.h"
381 #include "vmware_pack_begin.h"
382 struct SVGA3dCmdDXSetVertexBuffers
{
384 /* Followed by a variable number of SVGA3dVertexBuffer's. */
386 #include "vmware_pack_end.h"
387 SVGA3dCmdDXSetVertexBuffers
; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */
390 #include "vmware_pack_begin.h"
391 struct SVGA3dCmdDXSetIndexBuffer
{
393 SVGA3dSurfaceFormat format
;
396 #include "vmware_pack_end.h"
397 SVGA3dCmdDXSetIndexBuffer
; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */
400 #include "vmware_pack_begin.h"
401 struct SVGA3dCmdDXSetTopology
{
402 SVGA3dPrimitiveType topology
;
404 #include "vmware_pack_end.h"
405 SVGA3dCmdDXSetTopology
; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */
408 #include "vmware_pack_begin.h"
409 struct SVGA3dCmdDXSetRenderTargets
{
410 SVGA3dDepthStencilViewId depthStencilViewId
;
411 /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
413 #include "vmware_pack_end.h"
414 SVGA3dCmdDXSetRenderTargets
; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */
417 #include "vmware_pack_begin.h"
418 struct SVGA3dCmdDXSetBlendState
{
419 SVGA3dBlendStateId blendId
;
420 float blendFactor
[4];
423 #include "vmware_pack_end.h"
424 SVGA3dCmdDXSetBlendState
; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */
427 #include "vmware_pack_begin.h"
428 struct SVGA3dCmdDXSetDepthStencilState
{
429 SVGA3dDepthStencilStateId depthStencilId
;
432 #include "vmware_pack_end.h"
433 SVGA3dCmdDXSetDepthStencilState
; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */
436 #include "vmware_pack_begin.h"
437 struct SVGA3dCmdDXSetRasterizerState
{
438 SVGA3dRasterizerStateId rasterizerId
;
440 #include "vmware_pack_end.h"
441 SVGA3dCmdDXSetRasterizerState
; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */
443 /* Matches D3D10DDI_QUERY_MISCFLAG and D3D10_QUERY_MISC_FLAG */
444 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
445 typedef uint32 SVGA3dDXQueryFlags
;
448 * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device
449 * to track query state transitions, but are not intended to be used by the
452 #define SVGADX_QDSTATE_INVALID ((uint8)-1) /* Query has no state */
453 #define SVGADX_QDSTATE_MIN 0
454 #define SVGADX_QDSTATE_IDLE 0 /* Query hasn't started yet */
455 #define SVGADX_QDSTATE_ACTIVE 1 /* Query is actively gathering data */
456 #define SVGADX_QDSTATE_PENDING 2 /* Query is waiting for results */
457 #define SVGADX_QDSTATE_FINISHED 3 /* Query has completed */
458 #define SVGADX_QDSTATE_MAX 4
459 typedef uint8 SVGADXQueryDeviceState
;
462 #include "vmware_pack_begin.h"
464 SVGA3dQueryTypeUint8 type
;
466 SVGADXQueryDeviceState state
;
467 SVGA3dDXQueryFlags flags
;
471 #include "vmware_pack_end.h"
472 SVGACOTableDXQueryEntry
;
475 #include "vmware_pack_begin.h"
476 struct SVGA3dCmdDXDefineQuery
{
477 SVGA3dQueryId queryId
;
478 SVGA3dQueryType type
;
479 SVGA3dDXQueryFlags flags
;
481 #include "vmware_pack_end.h"
482 SVGA3dCmdDXDefineQuery
; /* SVGA_3D_CMD_DX_DEFINE_QUERY */
485 #include "vmware_pack_begin.h"
486 struct SVGA3dCmdDXDestroyQuery
{
487 SVGA3dQueryId queryId
;
489 #include "vmware_pack_end.h"
490 SVGA3dCmdDXDestroyQuery
; /* SVGA_3D_CMD_DX_DESTROY_QUERY */
493 #include "vmware_pack_begin.h"
494 struct SVGA3dCmdDXBindQuery
{
495 SVGA3dQueryId queryId
;
498 #include "vmware_pack_end.h"
499 SVGA3dCmdDXBindQuery
; /* SVGA_3D_CMD_DX_BIND_QUERY */
502 #include "vmware_pack_begin.h"
503 struct SVGA3dCmdDXSetQueryOffset
{
504 SVGA3dQueryId queryId
;
507 #include "vmware_pack_end.h"
508 SVGA3dCmdDXSetQueryOffset
; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */
511 #include "vmware_pack_begin.h"
512 struct SVGA3dCmdDXBeginQuery
{
513 SVGA3dQueryId queryId
;
515 #include "vmware_pack_end.h"
516 SVGA3dCmdDXBeginQuery
; /* SVGA_3D_CMD_DX_QUERY_BEGIN */
519 #include "vmware_pack_begin.h"
520 struct SVGA3dCmdDXEndQuery
{
521 SVGA3dQueryId queryId
;
523 #include "vmware_pack_end.h"
524 SVGA3dCmdDXEndQuery
; /* SVGA_3D_CMD_DX_QUERY_END */
527 #include "vmware_pack_begin.h"
528 struct SVGA3dCmdDXReadbackQuery
{
529 SVGA3dQueryId queryId
;
531 #include "vmware_pack_end.h"
532 SVGA3dCmdDXReadbackQuery
; /* SVGA_3D_CMD_DX_READBACK_QUERY */
535 #include "vmware_pack_begin.h"
536 struct SVGA3dCmdDXMoveQuery
{
537 SVGA3dQueryId queryId
;
541 #include "vmware_pack_end.h"
542 SVGA3dCmdDXMoveQuery
; /* SVGA_3D_CMD_DX_MOVE_QUERY */
545 #include "vmware_pack_begin.h"
546 struct SVGA3dCmdDXBindAllQuery
{
550 #include "vmware_pack_end.h"
551 SVGA3dCmdDXBindAllQuery
; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */
554 #include "vmware_pack_begin.h"
555 struct SVGA3dCmdDXReadbackAllQuery
{
558 #include "vmware_pack_end.h"
559 SVGA3dCmdDXReadbackAllQuery
; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */
562 #include "vmware_pack_begin.h"
563 struct SVGA3dCmdDXSetPredication
{
564 SVGA3dQueryId queryId
;
565 uint32 predicateValue
;
567 #include "vmware_pack_end.h"
568 SVGA3dCmdDXSetPredication
; /* SVGA_3D_CMD_DX_SET_PREDICATION */
571 #include "vmware_pack_begin.h"
572 struct MKS3dDXSOState
{
573 uint32 offset
; /* Starting offset */
574 uint32 intOffset
; /* Internal offset */
575 uint32 vertexCount
; /* vertices written */
576 uint32 sizeInBytes
; /* max bytes to write */
578 #include "vmware_pack_end.h"
581 /* Set the offset field to this value to append SO values to the buffer */
582 #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)
585 #include "vmware_pack_begin.h"
586 struct SVGA3dSoTarget
{
591 #include "vmware_pack_end.h"
595 #include "vmware_pack_begin.h"
596 struct SVGA3dCmdDXSetSOTargets
{
598 /* Followed by a variable number of SVGA3dSOTarget's. */
600 #include "vmware_pack_end.h"
601 SVGA3dCmdDXSetSOTargets
; /* SVGA_3D_CMD_DX_SET_SOTARGETS */
604 #include "vmware_pack_begin.h"
605 struct SVGA3dViewport
614 #include "vmware_pack_end.h"
618 #include "vmware_pack_begin.h"
619 struct SVGA3dCmdDXSetViewports
{
621 /* Followed by a variable number of SVGA3dViewport's. */
623 #include "vmware_pack_end.h"
624 SVGA3dCmdDXSetViewports
; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */
626 #define SVGA3D_DX_MAX_VIEWPORTS 16
629 #include "vmware_pack_begin.h"
630 struct SVGA3dCmdDXSetScissorRects
{
632 /* Followed by a variable number of SVGASignedRect's. */
634 #include "vmware_pack_end.h"
635 SVGA3dCmdDXSetScissorRects
; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */
637 #define SVGA3D_DX_MAX_SCISSORRECTS 16
640 #include "vmware_pack_begin.h"
641 struct SVGA3dCmdDXClearRenderTargetView
{
642 SVGA3dRenderTargetViewId renderTargetViewId
;
643 SVGA3dRGBAFloat rgba
;
645 #include "vmware_pack_end.h"
646 SVGA3dCmdDXClearRenderTargetView
; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */
649 #include "vmware_pack_begin.h"
650 struct SVGA3dCmdDXClearDepthStencilView
{
653 SVGA3dDepthStencilViewId depthStencilViewId
;
656 #include "vmware_pack_end.h"
657 SVGA3dCmdDXClearDepthStencilView
; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */
660 #include "vmware_pack_begin.h"
661 struct SVGA3dCmdDXPredCopyRegion
{
662 SVGA3dSurfaceId dstSid
;
663 uint32 dstSubResource
;
664 SVGA3dSurfaceId srcSid
;
665 uint32 srcSubResource
;
668 #include "vmware_pack_end.h"
669 SVGA3dCmdDXPredCopyRegion
;
670 /* SVGA_3D_CMD_DX_PRED_COPY_REGION */
673 #include "vmware_pack_begin.h"
674 struct SVGA3dCmdDXPredCopy
{
675 SVGA3dSurfaceId dstSid
;
676 SVGA3dSurfaceId srcSid
;
678 #include "vmware_pack_end.h"
679 SVGA3dCmdDXPredCopy
; /* SVGA_3D_CMD_DX_PRED_COPY */
682 #include "vmware_pack_begin.h"
683 struct SVGA3dCmdDXPredConvertRegion
{
684 SVGA3dSurfaceId dstSid
;
685 uint32 dstSubResource
;
686 SVGA3dSurfaceId srcSid
;
687 uint32 srcSubResource
;
690 #include "vmware_pack_end.h"
691 SVGA3dCmdDXPredConvertRegion
; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */
694 #include "vmware_pack_begin.h"
695 struct SVGA3dCmdDXPredConvert
{
696 SVGA3dSurfaceId dstSid
;
697 SVGA3dSurfaceId srcSid
;
699 #include "vmware_pack_end.h"
700 SVGA3dCmdDXPredConvert
; /* SVGA_3D_CMD_DX_PRED_CONVERT */
703 #include "vmware_pack_begin.h"
704 struct SVGA3dCmdDXBufferCopy
{
705 SVGA3dSurfaceId dest
;
711 #include "vmware_pack_end.h"
712 SVGA3dCmdDXBufferCopy
;
713 /* SVGA_3D_CMD_DX_BUFFER_COPY */
716 * Perform a surface copy between a multisample, and a non-multisampled
720 #include "vmware_pack_begin.h"
722 SVGA3dSurfaceId dstSid
;
723 uint32 dstSubResource
;
724 SVGA3dSurfaceId srcSid
;
725 uint32 srcSubResource
;
726 SVGA3dSurfaceFormat copyFormat
;
728 #include "vmware_pack_end.h"
729 SVGA3dCmdDXResolveCopy
; /* SVGA_3D_CMD_DX_RESOLVE_COPY */
732 * Perform a predicated surface copy between a multisample, and a
733 * non-multisampled surface.
736 #include "vmware_pack_begin.h"
738 SVGA3dSurfaceId dstSid
;
739 uint32 dstSubResource
;
740 SVGA3dSurfaceId srcSid
;
741 uint32 srcSubResource
;
742 SVGA3dSurfaceFormat copyFormat
;
744 #include "vmware_pack_end.h"
745 SVGA3dCmdDXPredResolveCopy
; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */
747 typedef uint32 SVGA3dDXStretchBltMode
;
748 #define SVGADX_STRETCHBLT_LINEAR (1 << 0)
749 #define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)
750 #define SVGADX_STRETCHBLT_MODE_MAX (1 << 2)
753 #include "vmware_pack_begin.h"
754 struct SVGA3dCmdDXStretchBlt
{
755 SVGA3dSurfaceId srcSid
;
756 uint32 srcSubResource
;
757 SVGA3dSurfaceId dstSid
;
758 uint32 destSubResource
;
761 SVGA3dDXStretchBltMode mode
;
763 #include "vmware_pack_end.h"
764 SVGA3dCmdDXStretchBlt
; /* SVGA_3D_CMD_DX_STRETCHBLT */
767 #include "vmware_pack_begin.h"
768 struct SVGA3dCmdDXGenMips
{
769 SVGA3dShaderResourceViewId shaderResourceViewId
;
771 #include "vmware_pack_end.h"
772 SVGA3dCmdDXGenMips
; /* SVGA_3D_CMD_DX_GENMIPS */
775 * Update a sub-resource in a guest-backed resource.
776 * (Inform the device that the guest-contents have been updated.)
779 #include "vmware_pack_begin.h"
780 struct SVGA3dCmdDXUpdateSubResource
{
785 #include "vmware_pack_end.h"
786 SVGA3dCmdDXUpdateSubResource
; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */
789 * Readback a subresource in a guest-backed resource.
790 * (Request the device to flush the dirty contents into the guest.)
793 #include "vmware_pack_begin.h"
794 struct SVGA3dCmdDXReadbackSubResource
{
798 #include "vmware_pack_end.h"
799 SVGA3dCmdDXReadbackSubResource
; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */
802 * Invalidate an image in a guest-backed surface.
803 * (Notify the device that the contents can be lost.)
806 #include "vmware_pack_begin.h"
807 struct SVGA3dCmdDXInvalidateSubResource
{
811 #include "vmware_pack_end.h"
812 SVGA3dCmdDXInvalidateSubResource
; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */
816 * Raw byte wise transfer from a buffer surface into another surface
817 * of the requested box. Supported if 3d is enabled and SVGA_CAP_DX
818 * is set. This command does not take a context.
821 #include "vmware_pack_begin.h"
822 struct SVGA3dCmdDXTransferFromBuffer
{
823 SVGA3dSurfaceId srcSid
;
826 uint32 srcSlicePitch
;
827 SVGA3dSurfaceId destSid
;
828 uint32 destSubResource
;
831 #include "vmware_pack_end.h"
832 SVGA3dCmdDXTransferFromBuffer
; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */
836 * Raw byte wise transfer from a buffer surface into another surface
837 * of the requested box. Supported if SVGA3D_DEVCAP_DXCONTEXT is set.
838 * The context is implied from the command buffer header.
841 #include "vmware_pack_begin.h"
842 struct SVGA3dCmdDXPredTransferFromBuffer
{
843 SVGA3dSurfaceId srcSid
;
846 uint32 srcSlicePitch
;
847 SVGA3dSurfaceId destSid
;
848 uint32 destSubResource
;
851 #include "vmware_pack_end.h"
852 SVGA3dCmdDXPredTransferFromBuffer
;
853 /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */
857 #include "vmware_pack_begin.h"
858 struct SVGA3dCmdDXSurfaceCopyAndReadback
{
859 SVGA3dSurfaceId srcSid
;
860 SVGA3dSurfaceId destSid
;
863 #include "vmware_pack_end.h"
864 SVGA3dCmdDXSurfaceCopyAndReadback
;
865 /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */
868 * SVGA_DX_HINT_NONE: Does nothing.
870 * SVGA_DX_HINT_PREFETCH_OBJECT:
871 * SVGA_DX_HINT_PREEVICT_OBJECT:
872 * Consumes a SVGAObjectRef, and hints that the host should consider
873 * fetching/evicting the specified object.
875 * An id of SVGA3D_INVALID_ID can be used if the guest isn't sure
876 * what object was affected. (For instance, if the guest knows that
877 * it is about to evict a DXShader, but doesn't know precisely which one,
878 * the device can still use this to help limit it's search, or track
879 * how many page-outs have happened.)
881 * SVGA_DX_HINT_PREFETCH_COBJECT:
882 * SVGA_DX_HINT_PREEVICT_COBJECT:
883 * Same as the above, except they consume an SVGACObjectRef.
885 typedef uint32 SVGADXHintId
;
886 #define SVGA_DX_HINT_NONE 0
887 #define SVGA_DX_HINT_PREFETCH_OBJECT 1
888 #define SVGA_DX_HINT_PREEVICT_OBJECT 2
889 #define SVGA_DX_HINT_PREFETCH_COBJECT 3
890 #define SVGA_DX_HINT_PREEVICT_COBJECT 4
891 #define SVGA_DX_HINT_MAX 5
894 #include "vmware_pack_begin.h"
895 struct SVGAObjectRef
{
899 #include "vmware_pack_end.h"
903 #include "vmware_pack_begin.h"
904 struct SVGACObjectRef
{
905 SVGACOTableType type
;
909 #include "vmware_pack_end.h"
913 #include "vmware_pack_begin.h"
914 struct SVGA3dCmdDXHint
{
918 * Followed by variable sized data depending on the hintId.
921 #include "vmware_pack_end.h"
923 /* SVGA_3D_CMD_DX_HINT */
926 #include "vmware_pack_begin.h"
927 struct SVGA3dCmdDXBufferUpdate
{
932 #include "vmware_pack_end.h"
933 SVGA3dCmdDXBufferUpdate
;
934 /* SVGA_3D_CMD_DX_BUFFER_UPDATE */
937 #include "vmware_pack_begin.h"
938 struct SVGA3dCmdDXSetConstantBufferOffset
{
940 uint32 offsetInBytes
;
942 #include "vmware_pack_end.h"
943 SVGA3dCmdDXSetConstantBufferOffset
;
945 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset
;
946 /* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */
948 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset
;
949 /* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */
951 typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset
;
952 /* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */
956 #include "vmware_pack_begin.h"
966 uint32 mostDetailedMip
;
967 uint32 firstArraySlice
;
972 uint32 firstElement
; // D3D11DDIARG_BUFFEREX_SHADERRESOURCEVIEW
979 #include "vmware_pack_end.h"
980 SVGA3dShaderResourceViewDesc
;
983 #include "vmware_pack_begin.h"
986 SVGA3dSurfaceFormat format
;
987 SVGA3dResourceType resourceDimension
;
988 SVGA3dShaderResourceViewDesc desc
;
991 #include "vmware_pack_end.h"
992 SVGACOTableDXSRViewEntry
;
995 #include "vmware_pack_begin.h"
996 struct SVGA3dCmdDXDefineShaderResourceView
{
997 SVGA3dShaderResourceViewId shaderResourceViewId
;
1000 SVGA3dSurfaceFormat format
;
1001 SVGA3dResourceType resourceDimension
;
1003 SVGA3dShaderResourceViewDesc desc
;
1005 #include "vmware_pack_end.h"
1006 SVGA3dCmdDXDefineShaderResourceView
;
1007 /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */
1010 #include "vmware_pack_begin.h"
1011 struct SVGA3dCmdDXDestroyShaderResourceView
{
1012 SVGA3dShaderResourceViewId shaderResourceViewId
;
1014 #include "vmware_pack_end.h"
1015 SVGA3dCmdDXDestroyShaderResourceView
;
1016 /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */
1019 #include "vmware_pack_begin.h"
1020 struct SVGA3dRenderTargetViewDesc
{
1023 uint32 firstElement
;
1028 uint32 firstArraySlice
;
1030 } tex
; /* 1d, 2d, cube */
1038 #include "vmware_pack_end.h"
1039 SVGA3dRenderTargetViewDesc
;
1042 #include "vmware_pack_begin.h"
1044 SVGA3dSurfaceId sid
;
1045 SVGA3dSurfaceFormat format
;
1046 SVGA3dResourceType resourceDimension
;
1047 SVGA3dRenderTargetViewDesc desc
;
1050 #include "vmware_pack_end.h"
1051 SVGACOTableDXRTViewEntry
;
1054 #include "vmware_pack_begin.h"
1055 struct SVGA3dCmdDXDefineRenderTargetView
{
1056 SVGA3dRenderTargetViewId renderTargetViewId
;
1058 SVGA3dSurfaceId sid
;
1059 SVGA3dSurfaceFormat format
;
1060 SVGA3dResourceType resourceDimension
;
1062 SVGA3dRenderTargetViewDesc desc
;
1064 #include "vmware_pack_end.h"
1065 SVGA3dCmdDXDefineRenderTargetView
;
1066 /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */
1069 #include "vmware_pack_begin.h"
1070 struct SVGA3dCmdDXDestroyRenderTargetView
{
1071 SVGA3dRenderTargetViewId renderTargetViewId
;
1073 #include "vmware_pack_end.h"
1074 SVGA3dCmdDXDestroyRenderTargetView
;
1075 /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */
1078 * Create Depth-stencil view flags
1079 * http://msdn.microsoft.com/en-us/library/windows/hardware/ff542167(v=vs.85).aspx
1081 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH 0x01
1082 #define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02
1083 #define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK 0x03
1084 typedef uint8 SVGA3DCreateDSViewFlags
;
1087 #include "vmware_pack_begin.h"
1089 SVGA3dSurfaceId sid
;
1090 SVGA3dSurfaceFormat format
;
1091 SVGA3dResourceType resourceDimension
;
1093 uint32 firstArraySlice
;
1095 SVGA3DCreateDSViewFlags flags
;
1100 #include "vmware_pack_end.h"
1101 SVGACOTableDXDSViewEntry
;
1104 #include "vmware_pack_begin.h"
1105 struct SVGA3dCmdDXDefineDepthStencilView
{
1106 SVGA3dDepthStencilViewId depthStencilViewId
;
1108 SVGA3dSurfaceId sid
;
1109 SVGA3dSurfaceFormat format
;
1110 SVGA3dResourceType resourceDimension
;
1112 uint32 firstArraySlice
;
1114 SVGA3DCreateDSViewFlags flags
; /* D3D11DDIARG_CREATEDEPTHSTENCILVIEW */
1118 #include "vmware_pack_end.h"
1119 SVGA3dCmdDXDefineDepthStencilView
;
1120 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
1123 #include "vmware_pack_begin.h"
1124 struct SVGA3dCmdDXDestroyDepthStencilView
{
1125 SVGA3dDepthStencilViewId depthStencilViewId
;
1127 #include "vmware_pack_end.h"
1128 SVGA3dCmdDXDestroyDepthStencilView
;
1129 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
1132 #include "vmware_pack_begin.h"
1133 struct SVGA3dInputElementDesc
{
1135 uint32 alignedByteOffset
;
1136 SVGA3dSurfaceFormat format
;
1137 SVGA3dInputClassification inputSlotClass
;
1138 uint32 instanceDataStepRate
;
1139 uint32 inputRegister
;
1141 #include "vmware_pack_end.h"
1142 SVGA3dInputElementDesc
;
1145 #include "vmware_pack_begin.h"
1149 SVGA3dInputElementDesc descs
[32];
1152 #include "vmware_pack_end.h"
1153 SVGACOTableDXElementLayoutEntry
;
1156 #include "vmware_pack_begin.h"
1157 struct SVGA3dCmdDXDefineElementLayout
{
1158 SVGA3dElementLayoutId elementLayoutId
;
1159 /* Followed by a variable number of SVGA3dInputElementDesc's. */
1161 #include "vmware_pack_end.h"
1162 SVGA3dCmdDXDefineElementLayout
;
1163 /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */
1166 #include "vmware_pack_begin.h"
1167 struct SVGA3dCmdDXDestroyElementLayout
{
1168 SVGA3dElementLayoutId elementLayoutId
;
1170 #include "vmware_pack_end.h"
1171 SVGA3dCmdDXDestroyElementLayout
;
1172 /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */
1175 #define SVGA3D_DX_MAX_RENDER_TARGETS 8
1178 #include "vmware_pack_begin.h"
1179 struct SVGA3dDXBlendStatePerRT
{
1184 uint8 srcBlendAlpha
;
1185 uint8 destBlendAlpha
;
1187 SVGA3dColorWriteEnable renderTargetWriteMask
;
1188 uint8 logicOpEnable
;
1192 #include "vmware_pack_end.h"
1193 SVGA3dDXBlendStatePerRT
;
1196 #include "vmware_pack_begin.h"
1198 uint8 alphaToCoverageEnable
;
1199 uint8 independentBlendEnable
;
1201 SVGA3dDXBlendStatePerRT perRT
[SVGA3D_MAX_RENDER_TARGETS
];
1204 #include "vmware_pack_end.h"
1205 SVGACOTableDXBlendStateEntry
;
1208 * XXX - DX10 style (not 10.1 at this point)
1209 * XXX - For more information see
1210 * http://msdn.microsoft.com/en-us/library/ff541919%28v=VS.85%29.aspx
1213 #include "vmware_pack_begin.h"
1214 struct SVGA3dCmdDXDefineBlendState
{
1215 SVGA3dBlendStateId blendId
;
1216 uint8 alphaToCoverageEnable
;
1217 uint8 independentBlendEnable
;
1219 SVGA3dDXBlendStatePerRT perRT
[SVGA3D_MAX_RENDER_TARGETS
];
1221 #include "vmware_pack_end.h"
1222 SVGA3dCmdDXDefineBlendState
; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */
1225 #include "vmware_pack_begin.h"
1226 struct SVGA3dCmdDXDestroyBlendState
{
1227 SVGA3dBlendStateId blendId
;
1229 #include "vmware_pack_end.h"
1230 SVGA3dCmdDXDestroyBlendState
; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */
1233 #include "vmware_pack_begin.h"
1236 SVGA3dDepthWriteMask depthWriteMask
;
1237 SVGA3dComparisonFunc depthFunc
;
1238 uint8 stencilEnable
;
1241 uint8 stencilReadMask
;
1242 uint8 stencilWriteMask
;
1244 uint8 frontStencilFailOp
;
1245 uint8 frontStencilDepthFailOp
;
1246 uint8 frontStencilPassOp
;
1247 SVGA3dComparisonFunc frontStencilFunc
;
1249 uint8 backStencilFailOp
;
1250 uint8 backStencilDepthFailOp
;
1251 uint8 backStencilPassOp
;
1252 SVGA3dComparisonFunc backStencilFunc
;
1254 #include "vmware_pack_end.h"
1255 SVGACOTableDXDepthStencilEntry
;
1258 * XXX - For more information see
1259 * http://msdn.microsoft.com/en-us/library/ff541944%28v=VS.85%29.aspx
1262 #include "vmware_pack_begin.h"
1263 struct SVGA3dCmdDXDefineDepthStencilState
{
1264 SVGA3dDepthStencilStateId depthStencilId
;
1267 SVGA3dDepthWriteMask depthWriteMask
;
1268 SVGA3dComparisonFunc depthFunc
;
1269 uint8 stencilEnable
;
1272 uint8 stencilReadMask
;
1273 uint8 stencilWriteMask
;
1275 uint8 frontStencilFailOp
;
1276 uint8 frontStencilDepthFailOp
;
1277 uint8 frontStencilPassOp
;
1278 SVGA3dComparisonFunc frontStencilFunc
;
1280 uint8 backStencilFailOp
;
1281 uint8 backStencilDepthFailOp
;
1282 uint8 backStencilPassOp
;
1283 SVGA3dComparisonFunc backStencilFunc
;
1285 #include "vmware_pack_end.h"
1286 SVGA3dCmdDXDefineDepthStencilState
;
1287 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */
1290 #include "vmware_pack_begin.h"
1291 struct SVGA3dCmdDXDestroyDepthStencilState
{
1292 SVGA3dDepthStencilStateId depthStencilId
;
1294 #include "vmware_pack_end.h"
1295 SVGA3dCmdDXDestroyDepthStencilState
;
1296 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */
1299 #include "vmware_pack_begin.h"
1302 SVGA3dCullMode cullMode
;
1303 uint8 frontCounterClockwise
;
1304 uint8 provokingVertexLast
;
1306 float depthBiasClamp
;
1307 float slopeScaledDepthBias
;
1308 uint8 depthClipEnable
;
1309 uint8 scissorEnable
;
1310 SVGA3dMultisampleEnable multisampleEnable
;
1311 uint8 antialiasedLineEnable
;
1313 uint8 lineStippleEnable
;
1314 uint8 lineStippleFactor
;
1315 uint16 lineStipplePattern
;
1316 uint32 forcedSampleCount
;
1318 #include "vmware_pack_end.h"
1319 SVGACOTableDXRasterizerStateEntry
;
1322 * XXX - For more information see
1323 * http://msdn.microsoft.com/en-us/library/ff541988%28v=VS.85%29.aspx
1326 #include "vmware_pack_begin.h"
1327 struct SVGA3dCmdDXDefineRasterizerState
{
1328 SVGA3dRasterizerStateId rasterizerId
;
1331 SVGA3dCullMode cullMode
;
1332 uint8 frontCounterClockwise
;
1333 uint8 provokingVertexLast
;
1335 float depthBiasClamp
;
1336 float slopeScaledDepthBias
;
1337 uint8 depthClipEnable
;
1338 uint8 scissorEnable
;
1339 SVGA3dMultisampleEnable multisampleEnable
;
1340 uint8 antialiasedLineEnable
;
1342 uint8 lineStippleEnable
;
1343 uint8 lineStippleFactor
;
1344 uint16 lineStipplePattern
;
1346 #include "vmware_pack_end.h"
1347 SVGA3dCmdDXDefineRasterizerState
;
1348 /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */
1351 #include "vmware_pack_begin.h"
1352 struct SVGA3dCmdDXDestroyRasterizerState
{
1353 SVGA3dRasterizerStateId rasterizerId
;
1355 #include "vmware_pack_end.h"
1356 SVGA3dCmdDXDestroyRasterizerState
;
1357 /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */
1360 #include "vmware_pack_begin.h"
1362 SVGA3dFilter filter
;
1368 uint8 maxAnisotropy
;
1369 SVGA3dComparisonFunc comparisonFunc
;
1371 SVGA3dRGBAFloat borderColor
;
1376 #include "vmware_pack_end.h"
1377 SVGACOTableDXSamplerEntry
;
1380 * XXX - For more information see
1381 * http://msdn.microsoft.com/en-us/library/ff542011%28v=VS.85%29.aspx
1384 #include "vmware_pack_begin.h"
1385 struct SVGA3dCmdDXDefineSamplerState
{
1386 SVGA3dSamplerId samplerId
;
1387 SVGA3dFilter filter
;
1393 uint8 maxAnisotropy
;
1394 SVGA3dComparisonFunc comparisonFunc
;
1396 SVGA3dRGBAFloat borderColor
;
1400 #include "vmware_pack_end.h"
1401 SVGA3dCmdDXDefineSamplerState
; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */
1404 #include "vmware_pack_begin.h"
1405 struct SVGA3dCmdDXDestroySamplerState
{
1406 SVGA3dSamplerId samplerId
;
1408 #include "vmware_pack_end.h"
1409 SVGA3dCmdDXDestroySamplerState
; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
1412 #define SVGADX_SIGNATURE_SEMANTIC_NAME_UNDEFINED 0
1413 #define SVGADX_SIGNATURE_SEMANTIC_NAME_POSITION 1
1414 #define SVGADX_SIGNATURE_SEMANTIC_NAME_CLIP_DISTANCE 2
1415 #define SVGADX_SIGNATURE_SEMANTIC_NAME_CULL_DISTANCE 3
1416 #define SVGADX_SIGNATURE_SEMANTIC_NAME_RENDER_TARGET_ARRAY_INDEX 4
1417 #define SVGADX_SIGNATURE_SEMANTIC_NAME_VIEWPORT_ARRAY_INDEX 5
1418 #define SVGADX_SIGNATURE_SEMANTIC_NAME_VERTEX_ID 6
1419 #define SVGADX_SIGNATURE_SEMANTIC_NAME_PRIMITIVE_ID 7
1420 #define SVGADX_SIGNATURE_SEMANTIC_NAME_INSTANCE_ID 8
1421 #define SVGADX_SIGNATURE_SEMANTIC_NAME_IS_FRONT_FACE 9
1422 #define SVGADX_SIGNATURE_SEMANTIC_NAME_SAMPLE_INDEX 10
1423 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_0_EDGE_TESSFACTOR 11
1424 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_0_EDGE_TESSFACTOR 12
1425 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_EQ_1_EDGE_TESSFACTOR 13
1426 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_EQ_1_EDGE_TESSFACTOR 14
1427 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_U_INSIDE_TESSFACTOR 15
1428 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_QUAD_V_INSIDE_TESSFACTOR 16
1429 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_U_EQ_0_EDGE_TESSFACTOR 17
1430 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_V_EQ_0_EDGE_TESSFACTOR 18
1431 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_W_EQ_0_EDGE_TESSFACTOR 19
1432 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_TRI_INSIDE_TESSFACTOR 20
1433 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DETAIL_TESSFACTOR 21
1434 #define SVGADX_SIGNATURE_SEMANTIC_NAME_FINAL_LINE_DENSITY_TESSFACTOR 22
1435 #define SVGADX_SIGNATURE_SEMANTIC_NAME_MAX 23
1436 typedef uint32 SVGA3dDXSignatureSemanticName
;
1438 #define SVGADX_SIGNATURE_REGISTER_COMPONENT_UNKNOWN 0
1439 typedef uint32 SVGA3dDXSignatureRegisterComponentType
;
1441 #define SVGADX_SIGNATURE_MIN_PRECISION_DEFAULT 0
1442 typedef uint32 SVGA3dDXSignatureMinPrecision
;
1445 #include "vmware_pack_begin.h"
1446 struct SVGA3dDXSignatureEntry
{
1447 uint32 registerIndex
;
1448 SVGA3dDXSignatureSemanticName semanticName
;
1449 uint32 mask
; /* Lower 4 bits represent X, Y, Z, W channels */
1450 SVGA3dDXSignatureRegisterComponentType componentType
;
1451 SVGA3dDXSignatureMinPrecision minPrecision
;
1453 #include "vmware_pack_end.h"
1454 SVGA3dDXShaderSignatureEntry
;
1456 #define SVGADX_SIGNATURE_HEADER_VERSION_0 0x08a92d12
1459 * The SVGA3dDXSignatureHeader structure is added after the shader
1460 * body in the mob that is bound to the shader. It is followed by the
1461 * specified number of SVGA3dDXSignatureEntry structures for each of
1462 * the three types of signatures in the order (input, output, patch
1466 #include "vmware_pack_begin.h"
1467 struct SVGA3dDXSignatureHeader
{
1468 uint32 headerVersion
;
1469 uint32 numInputSignatures
;
1470 uint32 numOutputSignatures
;
1471 uint32 numPatchConstantSignatures
;
1473 #include "vmware_pack_end.h"
1474 SVGA3dDXShaderSignatureHeader
;
1478 #include "vmware_pack_begin.h"
1479 struct SVGA3dCmdDXDefineShader
{
1480 SVGA3dShaderId shaderId
;
1481 SVGA3dShaderType type
;
1482 uint32 sizeInBytes
; /* Number of bytes of shader text. */
1484 #include "vmware_pack_end.h"
1485 SVGA3dCmdDXDefineShader
; /* SVGA_3D_CMD_DX_DEFINE_SHADER */
1488 #include "vmware_pack_begin.h"
1489 struct SVGACOTableDXShaderEntry
{
1490 SVGA3dShaderType type
;
1492 uint32 offsetInBytes
;
1496 #include "vmware_pack_end.h"
1497 SVGACOTableDXShaderEntry
;
1500 #include "vmware_pack_begin.h"
1501 struct SVGA3dCmdDXDestroyShader
{
1502 SVGA3dShaderId shaderId
;
1504 #include "vmware_pack_end.h"
1505 SVGA3dCmdDXDestroyShader
; /* SVGA_3D_CMD_DX_DESTROY_SHADER */
1508 #include "vmware_pack_begin.h"
1509 struct SVGA3dCmdDXBindShader
{
1513 uint32 offsetInBytes
;
1515 #include "vmware_pack_end.h"
1516 SVGA3dCmdDXBindShader
; /* SVGA_3D_CMD_DX_BIND_SHADER */
1519 #include "vmware_pack_begin.h"
1520 struct SVGA3dCmdDXBindAllShader
{
1524 #include "vmware_pack_end.h"
1525 SVGA3dCmdDXBindAllShader
; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */
1528 #include "vmware_pack_begin.h"
1529 struct SVGA3dCmdDXCondBindAllShader
{
1531 SVGAMobId testMobid
;
1534 #include "vmware_pack_end.h"
1535 SVGA3dCmdDXCondBindAllShader
; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */
1538 * The maximum number of streamout decl's in each streamout entry.
1540 #define SVGA3D_MAX_DX10_STREAMOUT_DECLS 64
1541 #define SVGA3D_MAX_STREAMOUT_DECLS 512
1544 #include "vmware_pack_begin.h"
1545 struct SVGA3dStreamOutputDeclarationEntry
{
1547 uint32 registerIndex
;
1553 #include "vmware_pack_end.h"
1554 SVGA3dStreamOutputDeclarationEntry
;
1557 #include "vmware_pack_begin.h"
1558 struct SVGAOTableStreamOutputEntry
{
1559 uint32 numOutputStreamEntries
;
1560 SVGA3dStreamOutputDeclarationEntry decl
[SVGA3D_MAX_DX10_STREAMOUT_DECLS
];
1561 uint32 streamOutputStrideInBytes
[SVGA3D_DX_MAX_SOTARGETS
];
1562 uint32 rasterizedStream
;
1563 uint32 numOutputStreamStrides
;
1565 uint32 offsetInBytes
;
1571 #include "vmware_pack_end.h"
1572 SVGACOTableDXStreamOutputEntry
;
1575 #include "vmware_pack_begin.h"
1576 struct SVGA3dCmdDXDefineStreamOutput
{
1577 SVGA3dStreamOutputId soid
;
1578 uint32 numOutputStreamEntries
;
1579 SVGA3dStreamOutputDeclarationEntry decl
[SVGA3D_MAX_DX10_STREAMOUT_DECLS
];
1580 uint32 streamOutputStrideInBytes
[SVGA3D_DX_MAX_SOTARGETS
];
1581 uint32 rasterizedStream
;
1583 #include "vmware_pack_end.h"
1584 SVGA3dCmdDXDefineStreamOutput
; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
1587 * Version 2 needed in order to start validating and using the
1588 * rasterizedStream field. Unfortunately the device wasn't validating
1589 * or using this field and the driver wasn't initializing it in shipped
1590 * code, so a new version of the command is needed to allow that code
1591 * to continue to work. Also added new numOutputStreamStrides field.
1594 #define SVGA3D_DX_SO_NO_RASTERIZED_STREAM 0xFFFFFFFF
1597 #include "vmware_pack_begin.h"
1598 struct SVGA3dCmdDXDefineStreamOutputWithMob
{
1599 SVGA3dStreamOutputId soid
;
1600 uint32 numOutputStreamEntries
;
1601 uint32 numOutputStreamStrides
;
1602 uint32 streamOutputStrideInBytes
[SVGA3D_DX_MAX_SOTARGETS
];
1603 uint32 rasterizedStream
;
1605 #include "vmware_pack_end.h"
1606 SVGA3dCmdDXDefineStreamOutputWithMob
;
1607 /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT_WITH_MOB */
1610 #include "vmware_pack_begin.h"
1611 struct SVGA3dCmdDXBindStreamOutput
{
1612 SVGA3dStreamOutputId soid
;
1614 uint32 offsetInBytes
;
1617 #include "vmware_pack_end.h"
1618 SVGA3dCmdDXBindStreamOutput
; /* SVGA_3D_CMD_DX_BIND_STREAMOUTPUT */
1621 #include "vmware_pack_begin.h"
1622 struct SVGA3dCmdDXDestroyStreamOutput
{
1623 SVGA3dStreamOutputId soid
;
1625 #include "vmware_pack_end.h"
1626 SVGA3dCmdDXDestroyStreamOutput
; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */
1629 #include "vmware_pack_begin.h"
1630 struct SVGA3dCmdDXSetStreamOutput
{
1631 SVGA3dStreamOutputId soid
;
1633 #include "vmware_pack_end.h"
1634 SVGA3dCmdDXSetStreamOutput
; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
1637 #include "vmware_pack_begin.h"
1638 struct SVGA3dCmdDXSetMinLOD
{
1639 SVGA3dSurfaceId sid
;
1642 #include "vmware_pack_end.h"
1643 SVGA3dCmdDXSetMinLOD
; /* SVGA_3D_CMD_DX_SET_MIN_LOD */
1646 #include "vmware_pack_begin.h"
1652 #include "vmware_pack_end.h"
1653 SVGA3dCmdDXMobFence64
; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */
1656 * SVGA3dCmdSetCOTable --
1658 * This command allows the guest to bind a mob to a context-object table.
1661 #include "vmware_pack_begin.h"
1662 struct SVGA3dCmdDXSetCOTable
{
1665 SVGACOTableType type
;
1666 uint32 validSizeInBytes
;
1668 #include "vmware_pack_end.h"
1669 SVGA3dCmdDXSetCOTable
; /* SVGA_3D_CMD_DX_SET_COTABLE */
1672 * Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that
1673 * the new COTable contains the same contents as the old one, except possibly
1674 * for some new invalid entries at the end.
1676 * If there is an old cotable mob bound, it also has to still be valid.
1678 * (Otherwise, guests should use the DXSetCOTableBase command.)
1681 #include "vmware_pack_begin.h"
1682 struct SVGA3dCmdDXGrowCOTable
{
1685 SVGACOTableType type
;
1686 uint32 validSizeInBytes
;
1688 #include "vmware_pack_end.h"
1689 SVGA3dCmdDXGrowCOTable
; /* SVGA_3D_CMD_DX_GROW_COTABLE */
1692 #include "vmware_pack_begin.h"
1693 struct SVGA3dCmdDXReadbackCOTable
{
1695 SVGACOTableType type
;
1697 #include "vmware_pack_end.h"
1698 SVGA3dCmdDXReadbackCOTable
; /* SVGA_3D_CMD_DX_READBACK_COTABLE */
1701 #include "vmware_pack_begin.h"
1702 struct SVGA3dCOTableData
{
1705 #include "vmware_pack_end.h"
1709 #include "vmware_pack_begin.h"
1710 struct SVGA3dBufferBinding
{
1715 #include "vmware_pack_end.h"
1716 SVGA3dBufferBinding
;
1719 #include "vmware_pack_begin.h"
1720 struct SVGA3dConstantBufferBinding
{
1722 uint32 offsetInBytes
;
1725 #include "vmware_pack_end.h"
1726 SVGA3dConstantBufferBinding
;
1729 #include "vmware_pack_begin.h"
1730 struct SVGADXInputAssemblyMobFormat
{
1732 SVGA3dBufferBinding vertexBuffers
[SVGA3D_DX_MAX_VERTEXBUFFERS
];
1733 uint32 indexBufferSid
;
1735 uint32 indexBufferOffset
;
1736 uint32 indexBufferFormat
;
1739 #include "vmware_pack_end.h"
1740 SVGADXInputAssemblyMobFormat
;
1743 #include "vmware_pack_begin.h"
1744 struct SVGADXContextMobFormat
{
1745 SVGADXInputAssemblyMobFormat inputAssembly
;
1748 uint32 blendStateId
;
1749 uint32 blendFactor
[4];
1751 uint32 depthStencilStateId
;
1753 uint32 rasterizerStateId
;
1754 uint32 depthStencilViewId
;
1755 uint32 renderTargetViewIds
[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS
];
1756 uint32 unorderedAccessViewIds
[SVGA3D_MAX_UAVIEWS
];
1760 uint32 targets
[SVGA3D_DX_MAX_SOTARGETS
];
1766 uint8 numScissorRects
;
1771 SVGA3dViewport viewports
[SVGA3D_DX_MAX_VIEWPORTS
];
1774 SVGASignedRect scissorRects
[SVGA3D_DX_MAX_SCISSORRECTS
];
1785 SVGA3dConstantBufferBinding constantBuffers
[SVGA3D_DX_MAX_CONSTBUFFERS
];
1786 uint32 shaderResources
[SVGA3D_DX_MAX_SRVIEWS
];
1787 uint32 samplers
[SVGA3D_DX_MAX_SAMPLERS
];
1788 } shaderState
[SVGA3D_NUM_SHADERTYPE
];
1791 SVGA3dQueryId queryID
[SVGA3D_MAX_QUERY
];
1793 SVGA3dCOTableData cotables
[SVGA_COTABLE_MAX
];
1796 #include "vmware_pack_end.h"
1797 SVGADXContextMobFormat
;
1799 #endif // _SVGA3D_DX_H_