1 /**********************************************************
2 * Copyright 2012-2015 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 #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
;
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
;
59 #define SVGA3D_DEPTH_WRITE_MASK_ZERO 0
60 #define SVGA3D_DEPTH_WRITE_MASK_ALL 1
61 typedef uint8 SVGA3dDepthWriteMask
;
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
;
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
;
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
;
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
98 static const uint32 SVGA3dBlendObjectCountPerContext
= 4096;
99 static const uint32 SVGA3dDepthStencilObjectCountPerContext
= 4096;
101 typedef uint32 SVGA3dSurfaceId
;
102 typedef uint32 SVGA3dShaderResourceViewId
;
103 typedef uint32 SVGA3dRenderTargetViewId
;
104 typedef uint32 SVGA3dDepthStencilViewId
;
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
;
127 #include "vmware_pack_begin.h"
132 #include "vmware_pack_end.h"
133 SVGAOTableDXContextEntry
;
136 #include "vmware_pack_begin.h"
137 struct SVGA3dCmdDXDefineContext
{
140 #include "vmware_pack_end.h"
141 SVGA3dCmdDXDefineContext
; /* SVGA_3D_CMD_DX_DEFINE_CONTEXT */
144 #include "vmware_pack_begin.h"
145 struct SVGA3dCmdDXDestroyContext
{
148 #include "vmware_pack_end.h"
149 SVGA3dCmdDXDestroyContext
; /* SVGA_3D_CMD_DX_DESTROY_CONTEXT */
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.
158 * For new contexts, it is recommended that the driver
159 * issue commands to initialize all interesting state
160 * prior to rendering.
163 #include "vmware_pack_begin.h"
164 struct SVGA3dCmdDXBindContext
{
167 uint32 validContents
;
169 #include "vmware_pack_end.h"
170 SVGA3dCmdDXBindContext
; /* SVGA_3D_CMD_DX_BIND_CONTEXT */
173 * Readback a DX context.
174 * (Request that the device flush the contents back into guest memory.)
177 #include "vmware_pack_begin.h"
178 struct SVGA3dCmdDXReadbackContext
{
181 #include "vmware_pack_end.h"
182 SVGA3dCmdDXReadbackContext
; /* SVGA_3D_CMD_DX_READBACK_CONTEXT */
185 * Invalidate a guest-backed context.
188 #include "vmware_pack_begin.h"
189 struct SVGA3dCmdDXInvalidateContext
{
192 #include "vmware_pack_end.h"
193 SVGA3dCmdDXInvalidateContext
; /* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */
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;
206 #include "vmware_pack_end.h"
207 SVGA3dReplyFormatData
;
210 #include "vmware_pack_begin.h"
211 struct SVGA3dCmdDXSetSingleConstantBuffer
{
213 SVGA3dShaderType type
;
215 uint32 offsetInBytes
;
218 #include "vmware_pack_end.h"
219 SVGA3dCmdDXSetSingleConstantBuffer
;
220 /* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */
223 #include "vmware_pack_begin.h"
224 struct SVGA3dCmdDXSetShaderResources
{
226 SVGA3dShaderType type
;
229 * Followed by a variable number of SVGA3dShaderResourceViewId's.
232 #include "vmware_pack_end.h"
233 SVGA3dCmdDXSetShaderResources
; /* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */
236 #include "vmware_pack_begin.h"
237 struct SVGA3dCmdDXSetShader
{
238 SVGA3dShaderId shaderId
;
239 SVGA3dShaderType type
;
241 #include "vmware_pack_end.h"
242 SVGA3dCmdDXSetShader
; /* SVGA_3D_CMD_DX_SET_SHADER */
245 #include "vmware_pack_begin.h"
246 struct SVGA3dCmdDXSetSamplers
{
248 SVGA3dShaderType type
;
251 * Followed by a variable number of SVGA3dSamplerId's.
254 #include "vmware_pack_end.h"
255 SVGA3dCmdDXSetSamplers
; /* SVGA_3D_CMD_DX_SET_SAMPLERS */
258 #include "vmware_pack_begin.h"
259 struct SVGA3dCmdDXDraw
{
261 uint32 startVertexLocation
;
263 #include "vmware_pack_end.h"
264 SVGA3dCmdDXDraw
; /* SVGA_3D_CMD_DX_DRAW */
267 #include "vmware_pack_begin.h"
268 struct SVGA3dCmdDXDrawIndexed
{
270 uint32 startIndexLocation
;
271 int32 baseVertexLocation
;
273 #include "vmware_pack_end.h"
274 SVGA3dCmdDXDrawIndexed
; /* SVGA_3D_CMD_DX_DRAW_INDEXED */
277 #include "vmware_pack_begin.h"
278 struct SVGA3dCmdDXDrawInstanced
{
279 uint32 vertexCountPerInstance
;
280 uint32 instanceCount
;
281 uint32 startVertexLocation
;
282 uint32 startInstanceLocation
;
284 #include "vmware_pack_end.h"
285 SVGA3dCmdDXDrawInstanced
; /* SVGA_3D_CMD_DX_DRAW_INSTANCED */
288 #include "vmware_pack_begin.h"
289 struct SVGA3dCmdDXDrawIndexedInstanced
{
290 uint32 indexCountPerInstance
;
291 uint32 instanceCount
;
292 uint32 startIndexLocation
;
293 int32 baseVertexLocation
;
294 uint32 startInstanceLocation
;
296 #include "vmware_pack_end.h"
297 SVGA3dCmdDXDrawIndexedInstanced
; /* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */
300 #include "vmware_pack_begin.h"
301 struct SVGA3dCmdDXDrawAuto
{
304 #include "vmware_pack_end.h"
305 SVGA3dCmdDXDrawAuto
; /* SVGA_3D_CMD_DX_DRAW_AUTO */
308 #include "vmware_pack_begin.h"
309 struct SVGA3dCmdDXSetInputLayout
{
310 SVGA3dElementLayoutId elementLayoutId
;
312 #include "vmware_pack_end.h"
313 SVGA3dCmdDXSetInputLayout
; /* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */
316 #include "vmware_pack_begin.h"
317 struct SVGA3dVertexBuffer
{
322 #include "vmware_pack_end.h"
326 #include "vmware_pack_begin.h"
327 struct SVGA3dCmdDXSetVertexBuffers
{
329 /* Followed by a variable number of SVGA3dVertexBuffer's. */
331 #include "vmware_pack_end.h"
332 SVGA3dCmdDXSetVertexBuffers
; /* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */
335 #include "vmware_pack_begin.h"
336 struct SVGA3dCmdDXSetIndexBuffer
{
338 SVGA3dSurfaceFormat format
;
341 #include "vmware_pack_end.h"
342 SVGA3dCmdDXSetIndexBuffer
; /* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */
345 #include "vmware_pack_begin.h"
346 struct SVGA3dCmdDXSetTopology
{
347 SVGA3dPrimitiveType topology
;
349 #include "vmware_pack_end.h"
350 SVGA3dCmdDXSetTopology
; /* SVGA_3D_CMD_DX_SET_TOPOLOGY */
353 #include "vmware_pack_begin.h"
354 struct SVGA3dCmdDXSetRenderTargets
{
355 SVGA3dDepthStencilViewId depthStencilViewId
;
356 /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
358 #include "vmware_pack_end.h"
359 SVGA3dCmdDXSetRenderTargets
; /* SVGA_3D_CMD_DX_SET_RENDERTARGETS */
362 #include "vmware_pack_begin.h"
363 struct SVGA3dCmdDXSetBlendState
{
364 SVGA3dBlendStateId blendId
;
365 float blendFactor
[4];
368 #include "vmware_pack_end.h"
369 SVGA3dCmdDXSetBlendState
; /* SVGA_3D_CMD_DX_SET_BLEND_STATE */
372 #include "vmware_pack_begin.h"
373 struct SVGA3dCmdDXSetDepthStencilState
{
374 SVGA3dDepthStencilStateId depthStencilId
;
377 #include "vmware_pack_end.h"
378 SVGA3dCmdDXSetDepthStencilState
; /* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */
381 #include "vmware_pack_begin.h"
382 struct SVGA3dCmdDXSetRasterizerState
{
383 SVGA3dRasterizerStateId rasterizerId
;
385 #include "vmware_pack_end.h"
386 SVGA3dCmdDXSetRasterizerState
; /* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */
388 #define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)
389 typedef uint32 SVGA3dDXQueryFlags
;
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
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
;
406 #include "vmware_pack_begin.h"
408 SVGA3dQueryTypeUint8 type
;
410 SVGADXQueryDeviceState state
;
411 SVGA3dDXQueryFlags flags
;
415 #include "vmware_pack_end.h"
416 SVGACOTableDXQueryEntry
;
419 #include "vmware_pack_begin.h"
420 struct SVGA3dCmdDXDefineQuery
{
421 SVGA3dQueryId queryId
;
422 SVGA3dQueryType type
;
423 SVGA3dDXQueryFlags flags
;
425 #include "vmware_pack_end.h"
426 SVGA3dCmdDXDefineQuery
; /* SVGA_3D_CMD_DX_DEFINE_QUERY */
429 #include "vmware_pack_begin.h"
430 struct SVGA3dCmdDXDestroyQuery
{
431 SVGA3dQueryId queryId
;
433 #include "vmware_pack_end.h"
434 SVGA3dCmdDXDestroyQuery
; /* SVGA_3D_CMD_DX_DESTROY_QUERY */
437 #include "vmware_pack_begin.h"
438 struct SVGA3dCmdDXBindQuery
{
439 SVGA3dQueryId queryId
;
442 #include "vmware_pack_end.h"
443 SVGA3dCmdDXBindQuery
; /* SVGA_3D_CMD_DX_BIND_QUERY */
446 #include "vmware_pack_begin.h"
447 struct SVGA3dCmdDXSetQueryOffset
{
448 SVGA3dQueryId queryId
;
451 #include "vmware_pack_end.h"
452 SVGA3dCmdDXSetQueryOffset
; /* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */
455 #include "vmware_pack_begin.h"
456 struct SVGA3dCmdDXBeginQuery
{
457 SVGA3dQueryId queryId
;
459 #include "vmware_pack_end.h"
460 SVGA3dCmdDXBeginQuery
; /* SVGA_3D_CMD_DX_QUERY_BEGIN */
463 #include "vmware_pack_begin.h"
464 struct SVGA3dCmdDXEndQuery
{
465 SVGA3dQueryId queryId
;
467 #include "vmware_pack_end.h"
468 SVGA3dCmdDXEndQuery
; /* SVGA_3D_CMD_DX_QUERY_END */
471 #include "vmware_pack_begin.h"
472 struct SVGA3dCmdDXReadbackQuery
{
473 SVGA3dQueryId queryId
;
475 #include "vmware_pack_end.h"
476 SVGA3dCmdDXReadbackQuery
; /* SVGA_3D_CMD_DX_READBACK_QUERY */
479 #include "vmware_pack_begin.h"
480 struct SVGA3dCmdDXMoveQuery
{
481 SVGA3dQueryId queryId
;
485 #include "vmware_pack_end.h"
486 SVGA3dCmdDXMoveQuery
; /* SVGA_3D_CMD_DX_MOVE_QUERY */
489 #include "vmware_pack_begin.h"
490 struct SVGA3dCmdDXBindAllQuery
{
494 #include "vmware_pack_end.h"
495 SVGA3dCmdDXBindAllQuery
; /* SVGA_3D_CMD_DX_BIND_ALL_QUERY */
498 #include "vmware_pack_begin.h"
499 struct SVGA3dCmdDXReadbackAllQuery
{
502 #include "vmware_pack_end.h"
503 SVGA3dCmdDXReadbackAllQuery
; /* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */
506 #include "vmware_pack_begin.h"
507 struct SVGA3dCmdDXSetPredication
{
508 SVGA3dQueryId queryId
;
509 uint32 predicateValue
;
511 #include "vmware_pack_end.h"
512 SVGA3dCmdDXSetPredication
; /* SVGA_3D_CMD_DX_SET_PREDICATION */
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 */
522 #include "vmware_pack_end.h"
525 /* Set the offset field to this value to append SO values to the buffer */
526 #define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)
529 #include "vmware_pack_begin.h"
530 struct SVGA3dSoTarget
{
535 #include "vmware_pack_end.h"
539 #include "vmware_pack_begin.h"
540 struct SVGA3dCmdDXSetSOTargets
{
542 /* Followed by a variable number of SVGA3dSOTarget's. */
544 #include "vmware_pack_end.h"
545 SVGA3dCmdDXSetSOTargets
; /* SVGA_3D_CMD_DX_SET_SOTARGETS */
548 #include "vmware_pack_begin.h"
549 struct SVGA3dViewport
558 #include "vmware_pack_end.h"
562 #include "vmware_pack_begin.h"
563 struct SVGA3dCmdDXSetViewports
{
565 /* Followed by a variable number of SVGA3dViewport's. */
567 #include "vmware_pack_end.h"
568 SVGA3dCmdDXSetViewports
; /* SVGA_3D_CMD_DX_SET_VIEWPORTS */
570 #define SVGA3D_DX_MAX_VIEWPORTS 16
573 #include "vmware_pack_begin.h"
574 struct SVGA3dCmdDXSetScissorRects
{
576 /* Followed by a variable number of SVGASignedRect's. */
578 #include "vmware_pack_end.h"
579 SVGA3dCmdDXSetScissorRects
; /* SVGA_3D_CMD_DX_SET_SCISSORRECTS */
581 #define SVGA3D_DX_MAX_SCISSORRECTS 16
584 #include "vmware_pack_begin.h"
585 struct SVGA3dCmdDXClearRenderTargetView
{
586 SVGA3dRenderTargetViewId renderTargetViewId
;
587 SVGA3dRGBAFloat rgba
;
589 #include "vmware_pack_end.h"
590 SVGA3dCmdDXClearRenderTargetView
; /* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */
593 #include "vmware_pack_begin.h"
594 struct SVGA3dCmdDXClearDepthStencilView
{
597 SVGA3dDepthStencilViewId depthStencilViewId
;
600 #include "vmware_pack_end.h"
601 SVGA3dCmdDXClearDepthStencilView
; /* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */
604 #include "vmware_pack_begin.h"
605 struct SVGA3dCmdDXPredCopyRegion
{
606 SVGA3dSurfaceId dstSid
;
607 uint32 dstSubResource
;
608 SVGA3dSurfaceId srcSid
;
609 uint32 srcSubResource
;
612 #include "vmware_pack_end.h"
613 SVGA3dCmdDXPredCopyRegion
;
614 /* SVGA_3D_CMD_DX_PRED_COPY_REGION */
617 #include "vmware_pack_begin.h"
618 struct SVGA3dCmdDXPredCopy
{
619 SVGA3dSurfaceId dstSid
;
620 SVGA3dSurfaceId srcSid
;
622 #include "vmware_pack_end.h"
623 SVGA3dCmdDXPredCopy
; /* SVGA_3D_CMD_DX_PRED_COPY */
626 #include "vmware_pack_begin.h"
627 struct SVGA3dCmdDXBufferCopy
{
628 SVGA3dSurfaceId dest
;
634 #include "vmware_pack_end.h"
635 SVGA3dCmdDXBufferCopy
;
636 /* SVGA_3D_CMD_DX_BUFFER_COPY */
638 typedef uint32 SVGA3dDXStretchBltMode
;
639 #define SVGADX_STRETCHBLT_LINEAR (1 << 0)
640 #define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)
643 #include "vmware_pack_begin.h"
644 struct SVGA3dCmdDXStretchBlt
{
645 SVGA3dSurfaceId srcSid
;
646 uint32 srcSubResource
;
647 SVGA3dSurfaceId dstSid
;
648 uint32 destSubResource
;
651 SVGA3dDXStretchBltMode mode
;
653 #include "vmware_pack_end.h"
654 SVGA3dCmdDXStretchBlt
; /* SVGA_3D_CMD_DX_STRETCHBLT */
657 #include "vmware_pack_begin.h"
658 struct SVGA3dCmdDXGenMips
{
659 SVGA3dShaderResourceViewId shaderResourceViewId
;
661 #include "vmware_pack_end.h"
662 SVGA3dCmdDXGenMips
; /* SVGA_3D_CMD_DX_GENMIPS */
665 * Defines a resource/DX surface. Resources share the surfaceId namespace.
669 #include "vmware_pack_begin.h"
670 struct SVGA3dCmdDefineGBSurface_v2
{
672 SVGA3dSurfaceFlags surfaceFlags
;
673 SVGA3dSurfaceFormat format
;
675 uint32 multisampleCount
;
676 SVGA3dTextureFilter autogenFilter
;
681 #include "vmware_pack_end.h"
682 SVGA3dCmdDefineGBSurface_v2
; /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 */
685 * Update a sub-resource in a guest-backed resource.
686 * (Inform the device that the guest-contents have been updated.)
689 #include "vmware_pack_begin.h"
690 struct SVGA3dCmdDXUpdateSubResource
{
695 #include "vmware_pack_end.h"
696 SVGA3dCmdDXUpdateSubResource
; /* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */
699 * Readback a subresource in a guest-backed resource.
700 * (Request the device to flush the dirty contents into the guest.)
703 #include "vmware_pack_begin.h"
704 struct SVGA3dCmdDXReadbackSubResource
{
708 #include "vmware_pack_end.h"
709 SVGA3dCmdDXReadbackSubResource
; /* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */
712 * Invalidate an image in a guest-backed surface.
713 * (Notify the device that the contents can be lost.)
716 #include "vmware_pack_begin.h"
717 struct SVGA3dCmdDXInvalidateSubResource
{
721 #include "vmware_pack_end.h"
722 SVGA3dCmdDXInvalidateSubResource
; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */
726 * Raw byte wise transfer from a buffer surface into another surface
727 * of the requested box.
730 #include "vmware_pack_begin.h"
731 struct SVGA3dCmdDXTransferFromBuffer
{
732 SVGA3dSurfaceId srcSid
;
735 uint32 srcSlicePitch
;
736 SVGA3dSurfaceId destSid
;
737 uint32 destSubResource
;
740 #include "vmware_pack_end.h"
741 SVGA3dCmdDXTransferFromBuffer
; /* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */
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.
750 #include "vmware_pack_begin.h"
751 struct SVGA3dCmdDXPredTransferFromBuffer
{
752 SVGA3dSurfaceId srcSid
;
755 uint32 srcSlicePitch
;
756 SVGA3dSurfaceId destSid
;
757 uint32 destSubResource
;
760 #include "vmware_pack_end.h"
761 SVGA3dCmdDXPredTransferFromBuffer
;
762 /* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */
766 #include "vmware_pack_begin.h"
767 struct SVGA3dCmdDXSurfaceCopyAndReadback
{
768 SVGA3dSurfaceId srcSid
;
769 SVGA3dSurfaceId destSid
;
772 #include "vmware_pack_end.h"
773 SVGA3dCmdDXSurfaceCopyAndReadback
;
774 /* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */
778 #include "vmware_pack_begin.h"
788 uint32 mostDetailedMip
;
789 uint32 firstArraySlice
;
801 #include "vmware_pack_end.h"
802 SVGA3dShaderResourceViewDesc
;
805 #include "vmware_pack_begin.h"
808 SVGA3dSurfaceFormat format
;
809 SVGA3dResourceType resourceDimension
;
810 SVGA3dShaderResourceViewDesc desc
;
813 #include "vmware_pack_end.h"
814 SVGACOTableDXSRViewEntry
;
817 #include "vmware_pack_begin.h"
818 struct SVGA3dCmdDXDefineShaderResourceView
{
819 SVGA3dShaderResourceViewId shaderResourceViewId
;
822 SVGA3dSurfaceFormat format
;
823 SVGA3dResourceType resourceDimension
;
825 SVGA3dShaderResourceViewDesc desc
;
827 #include "vmware_pack_end.h"
828 SVGA3dCmdDXDefineShaderResourceView
;
829 /* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */
832 #include "vmware_pack_begin.h"
833 struct SVGA3dCmdDXDestroyShaderResourceView
{
834 SVGA3dShaderResourceViewId shaderResourceViewId
;
836 #include "vmware_pack_end.h"
837 SVGA3dCmdDXDestroyShaderResourceView
;
838 /* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */
841 #include "vmware_pack_begin.h"
842 struct SVGA3dRenderTargetViewDesc
{
850 uint32 firstArraySlice
;
852 } tex
; /* 1d, 2d, cube */
860 #include "vmware_pack_end.h"
861 SVGA3dRenderTargetViewDesc
;
864 #include "vmware_pack_begin.h"
867 SVGA3dSurfaceFormat format
;
868 SVGA3dResourceType resourceDimension
;
869 SVGA3dRenderTargetViewDesc desc
;
872 #include "vmware_pack_end.h"
873 SVGACOTableDXRTViewEntry
;
876 #include "vmware_pack_begin.h"
877 struct SVGA3dCmdDXDefineRenderTargetView
{
878 SVGA3dRenderTargetViewId renderTargetViewId
;
881 SVGA3dSurfaceFormat format
;
882 SVGA3dResourceType resourceDimension
;
884 SVGA3dRenderTargetViewDesc desc
;
886 #include "vmware_pack_end.h"
887 SVGA3dCmdDXDefineRenderTargetView
;
888 /* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */
891 #include "vmware_pack_begin.h"
892 struct SVGA3dCmdDXDestroyRenderTargetView
{
893 SVGA3dRenderTargetViewId renderTargetViewId
;
895 #include "vmware_pack_end.h"
896 SVGA3dCmdDXDestroyRenderTargetView
;
897 /* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */
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
;
907 #include "vmware_pack_begin.h"
910 SVGA3dSurfaceFormat format
;
911 SVGA3dResourceType resourceDimension
;
913 uint32 firstArraySlice
;
915 SVGA3DCreateDSViewFlags flags
;
920 #include "vmware_pack_end.h"
921 SVGACOTableDXDSViewEntry
;
924 #include "vmware_pack_begin.h"
925 struct SVGA3dCmdDXDefineDepthStencilView
{
926 SVGA3dDepthStencilViewId depthStencilViewId
;
929 SVGA3dSurfaceFormat format
;
930 SVGA3dResourceType resourceDimension
;
932 uint32 firstArraySlice
;
934 SVGA3DCreateDSViewFlags flags
;
938 #include "vmware_pack_end.h"
939 SVGA3dCmdDXDefineDepthStencilView
;
940 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */
943 #include "vmware_pack_begin.h"
944 struct SVGA3dCmdDXDestroyDepthStencilView
{
945 SVGA3dDepthStencilViewId depthStencilViewId
;
947 #include "vmware_pack_end.h"
948 SVGA3dCmdDXDestroyDepthStencilView
;
949 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */
952 #include "vmware_pack_begin.h"
953 struct SVGA3dInputElementDesc
{
955 uint32 alignedByteOffset
;
956 SVGA3dSurfaceFormat format
;
957 SVGA3dInputClassification inputSlotClass
;
958 uint32 instanceDataStepRate
;
959 uint32 inputRegister
;
961 #include "vmware_pack_end.h"
962 SVGA3dInputElementDesc
;
965 #include "vmware_pack_begin.h"
968 * XXX: How many of these can there be?
972 SVGA3dInputElementDesc desc
[32];
975 #include "vmware_pack_end.h"
976 SVGACOTableDXElementLayoutEntry
;
979 #include "vmware_pack_begin.h"
980 struct SVGA3dCmdDXDefineElementLayout
{
981 SVGA3dElementLayoutId elementLayoutId
;
982 /* Followed by a variable number of SVGA3dInputElementDesc's. */
984 #include "vmware_pack_end.h"
985 SVGA3dCmdDXDefineElementLayout
;
986 /* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */
989 #include "vmware_pack_begin.h"
990 struct SVGA3dCmdDXDestroyElementLayout
{
991 SVGA3dElementLayoutId elementLayoutId
;
993 #include "vmware_pack_end.h"
994 SVGA3dCmdDXDestroyElementLayout
;
995 /* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */
998 #define SVGA3D_DX_MAX_RENDER_TARGETS 8
1001 #include "vmware_pack_begin.h"
1002 struct SVGA3dDXBlendStatePerRT
{
1007 uint8 srcBlendAlpha
;
1008 uint8 destBlendAlpha
;
1010 uint8 renderTargetWriteMask
;
1011 uint8 logicOpEnable
;
1015 #include "vmware_pack_end.h"
1016 SVGA3dDXBlendStatePerRT
;
1019 #include "vmware_pack_begin.h"
1021 uint8 alphaToCoverageEnable
;
1022 uint8 independentBlendEnable
;
1024 SVGA3dDXBlendStatePerRT perRT
[SVGA3D_MAX_RENDER_TARGETS
];
1027 #include "vmware_pack_end.h"
1028 SVGACOTableDXBlendStateEntry
;
1033 #include "vmware_pack_begin.h"
1034 struct SVGA3dCmdDXDefineBlendState
{
1035 SVGA3dBlendStateId blendId
;
1036 uint8 alphaToCoverageEnable
;
1037 uint8 independentBlendEnable
;
1039 SVGA3dDXBlendStatePerRT perRT
[SVGA3D_MAX_RENDER_TARGETS
];
1041 #include "vmware_pack_end.h"
1042 SVGA3dCmdDXDefineBlendState
; /* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */
1045 #include "vmware_pack_begin.h"
1046 struct SVGA3dCmdDXDestroyBlendState
{
1047 SVGA3dBlendStateId blendId
;
1049 #include "vmware_pack_end.h"
1050 SVGA3dCmdDXDestroyBlendState
; /* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */
1053 #include "vmware_pack_begin.h"
1056 SVGA3dDepthWriteMask depthWriteMask
;
1057 SVGA3dComparisonFunc depthFunc
;
1058 uint8 stencilEnable
;
1061 uint8 stencilReadMask
;
1062 uint8 stencilWriteMask
;
1064 uint8 frontStencilFailOp
;
1065 uint8 frontStencilDepthFailOp
;
1066 uint8 frontStencilPassOp
;
1067 SVGA3dComparisonFunc frontStencilFunc
;
1069 uint8 backStencilFailOp
;
1070 uint8 backStencilDepthFailOp
;
1071 uint8 backStencilPassOp
;
1072 SVGA3dComparisonFunc backStencilFunc
;
1074 #include "vmware_pack_end.h"
1075 SVGACOTableDXDepthStencilEntry
;
1080 #include "vmware_pack_begin.h"
1081 struct SVGA3dCmdDXDefineDepthStencilState
{
1082 SVGA3dDepthStencilStateId depthStencilId
;
1085 SVGA3dDepthWriteMask depthWriteMask
;
1086 SVGA3dComparisonFunc depthFunc
;
1087 uint8 stencilEnable
;
1090 uint8 stencilReadMask
;
1091 uint8 stencilWriteMask
;
1093 uint8 frontStencilFailOp
;
1094 uint8 frontStencilDepthFailOp
;
1095 uint8 frontStencilPassOp
;
1096 SVGA3dComparisonFunc frontStencilFunc
;
1098 uint8 backStencilFailOp
;
1099 uint8 backStencilDepthFailOp
;
1100 uint8 backStencilPassOp
;
1101 SVGA3dComparisonFunc backStencilFunc
;
1103 #include "vmware_pack_end.h"
1104 SVGA3dCmdDXDefineDepthStencilState
;
1105 /* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */
1108 #include "vmware_pack_begin.h"
1109 struct SVGA3dCmdDXDestroyDepthStencilState
{
1110 SVGA3dDepthStencilStateId depthStencilId
;
1112 #include "vmware_pack_end.h"
1113 SVGA3dCmdDXDestroyDepthStencilState
;
1114 /* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */
1117 #include "vmware_pack_begin.h"
1120 SVGA3dCullMode cullMode
;
1121 uint8 frontCounterClockwise
;
1122 uint8 provokingVertexLast
;
1124 float depthBiasClamp
;
1125 float slopeScaledDepthBias
;
1126 uint8 depthClipEnable
;
1127 uint8 scissorEnable
;
1128 uint8 multisampleEnable
;
1129 uint8 antialiasedLineEnable
;
1131 uint8 lineStippleEnable
;
1132 uint8 lineStippleFactor
;
1133 uint16 lineStipplePattern
;
1134 uint32 forcedSampleCount
;
1136 #include "vmware_pack_end.h"
1137 SVGACOTableDXRasterizerStateEntry
;
1142 #include "vmware_pack_begin.h"
1143 struct SVGA3dCmdDXDefineRasterizerState
{
1144 SVGA3dRasterizerStateId rasterizerId
;
1147 SVGA3dCullMode cullMode
;
1148 uint8 frontCounterClockwise
;
1149 uint8 provokingVertexLast
;
1151 float depthBiasClamp
;
1152 float slopeScaledDepthBias
;
1153 uint8 depthClipEnable
;
1154 uint8 scissorEnable
;
1155 uint8 multisampleEnable
;
1156 uint8 antialiasedLineEnable
;
1158 uint8 lineStippleEnable
;
1159 uint8 lineStippleFactor
;
1160 uint16 lineStipplePattern
;
1162 #include "vmware_pack_end.h"
1163 SVGA3dCmdDXDefineRasterizerState
;
1164 /* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */
1167 #include "vmware_pack_begin.h"
1168 struct SVGA3dCmdDXDestroyRasterizerState
{
1169 SVGA3dRasterizerStateId rasterizerId
;
1171 #include "vmware_pack_end.h"
1172 SVGA3dCmdDXDestroyRasterizerState
;
1173 /* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */
1176 #include "vmware_pack_begin.h"
1178 SVGA3dFilter filter
;
1184 uint8 maxAnisotropy
;
1185 SVGA3dComparisonFunc comparisonFunc
;
1187 SVGA3dRGBAFloat borderColor
;
1192 #include "vmware_pack_end.h"
1193 SVGACOTableDXSamplerEntry
;
1198 #include "vmware_pack_begin.h"
1199 struct SVGA3dCmdDXDefineSamplerState
{
1200 SVGA3dSamplerId samplerId
;
1201 SVGA3dFilter filter
;
1207 uint8 maxAnisotropy
;
1208 SVGA3dComparisonFunc comparisonFunc
;
1210 SVGA3dRGBAFloat borderColor
;
1214 #include "vmware_pack_end.h"
1215 SVGA3dCmdDXDefineSamplerState
; /* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */
1218 #include "vmware_pack_begin.h"
1219 struct SVGA3dCmdDXDestroySamplerState
{
1220 SVGA3dSamplerId samplerId
;
1222 #include "vmware_pack_end.h"
1223 SVGA3dCmdDXDestroySamplerState
; /* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */
1228 #include "vmware_pack_begin.h"
1229 struct SVGA3dSignatureEntry
{
1231 uint8 reg
; /* register is a reserved word */
1233 uint8 registerComponentType
;
1237 #include "vmware_pack_end.h"
1238 SVGA3dSignatureEntry
;
1241 #include "vmware_pack_begin.h"
1242 struct SVGA3dCmdDXDefineShader
{
1243 SVGA3dShaderId shaderId
;
1244 SVGA3dShaderType type
;
1245 uint32 sizeInBytes
; /* Number of bytes of shader text. */
1247 #include "vmware_pack_end.h"
1248 SVGA3dCmdDXDefineShader
; /* SVGA_3D_CMD_DX_DEFINE_SHADER */
1251 #include "vmware_pack_begin.h"
1252 struct SVGACOTableDXShaderEntry
{
1253 SVGA3dShaderType type
;
1255 uint32 offsetInBytes
;
1257 uint32 numInputSignatureEntries
;
1258 uint32 numOutputSignatureEntries
;
1260 uint32 numPatchConstantSignatureEntries
;
1264 #include "vmware_pack_end.h"
1265 SVGACOTableDXShaderEntry
;
1268 #include "vmware_pack_begin.h"
1269 struct SVGA3dCmdDXDestroyShader
{
1270 SVGA3dShaderId shaderId
;
1272 #include "vmware_pack_end.h"
1273 SVGA3dCmdDXDestroyShader
; /* SVGA_3D_CMD_DX_DESTROY_SHADER */
1276 #include "vmware_pack_begin.h"
1277 struct SVGA3dCmdDXBindShader
{
1281 uint32 offsetInBytes
;
1283 #include "vmware_pack_end.h"
1284 SVGA3dCmdDXBindShader
; /* SVGA_3D_CMD_DX_BIND_SHADER */
1287 * The maximum number of streamout decl's in each streamout entry.
1289 #define SVGA3D_MAX_STREAMOUT_DECLS 64
1292 #include "vmware_pack_begin.h"
1293 struct SVGA3dStreamOutputDeclarationEntry
{
1295 uint32 registerIndex
;
1301 #include "vmware_pack_end.h"
1302 SVGA3dStreamOutputDeclarationEntry
;
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
;
1313 #include "vmware_pack_end.h"
1314 SVGACOTableDXStreamOutputEntry
;
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
;
1325 #include "vmware_pack_end.h"
1326 SVGA3dCmdDXDefineStreamOutput
; /* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */
1329 #include "vmware_pack_begin.h"
1330 struct SVGA3dCmdDXDestroyStreamOutput
{
1331 SVGA3dStreamOutputId soid
;
1333 #include "vmware_pack_end.h"
1334 SVGA3dCmdDXDestroyStreamOutput
; /* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */
1337 #include "vmware_pack_begin.h"
1338 struct SVGA3dCmdDXSetStreamOutput
{
1339 SVGA3dStreamOutputId soid
;
1341 #include "vmware_pack_end.h"
1342 SVGA3dCmdDXSetStreamOutput
; /* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */
1345 #include "vmware_pack_begin.h"
1351 #include "vmware_pack_end.h"
1352 SVGA3dCmdDXMobFence64
; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */
1355 * SVGA3dCmdSetCOTable --
1357 * This command allows the guest to bind a mob to a context-object table.
1361 #include "vmware_pack_begin.h"
1362 struct SVGA3dCmdDXSetCOTable
{
1365 SVGACOTableType type
;
1366 uint32 validSizeInBytes
;
1368 #include "vmware_pack_end.h"
1369 SVGA3dCmdDXSetCOTable
; /* SVGA_3D_CMD_DX_SET_COTABLE */
1372 #include "vmware_pack_begin.h"
1373 struct SVGA3dCmdDXReadbackCOTable
{
1375 SVGACOTableType type
;
1377 #include "vmware_pack_end.h"
1378 SVGA3dCmdDXReadbackCOTable
; /* SVGA_3D_CMD_DX_READBACK_COTABLE */
1381 #include "vmware_pack_begin.h"
1382 struct SVGA3dCOTableData
{
1385 #include "vmware_pack_end.h"
1389 #include "vmware_pack_begin.h"
1390 struct SVGA3dBufferBinding
{
1395 #include "vmware_pack_end.h"
1396 SVGA3dBufferBinding
;
1399 #include "vmware_pack_begin.h"
1400 struct SVGA3dConstantBufferBinding
{
1402 uint32 offsetInBytes
;
1405 #include "vmware_pack_end.h"
1406 SVGA3dConstantBufferBinding
;
1409 #include "vmware_pack_begin.h"
1410 struct SVGADXInputAssemblyMobFormat
{
1412 SVGA3dBufferBinding vertexBuffers
[SVGA3D_DX_MAX_VERTEXBUFFERS
];
1413 uint32 indexBufferSid
;
1415 uint32 indexBufferOffset
;
1416 uint32 indexBufferFormat
;
1419 #include "vmware_pack_end.h"
1420 SVGADXInputAssemblyMobFormat
;
1423 #include "vmware_pack_begin.h"
1424 struct SVGADXContextMobFormat
{
1425 SVGADXInputAssemblyMobFormat inputAssembly
;
1428 uint32 blendStateId
;
1429 uint32 blendFactor
[4];
1431 uint32 depthStencilStateId
;
1433 uint32 rasterizerStateId
;
1434 uint32 depthStencilViewId
;
1435 uint32 renderTargetViewIds
[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS
];
1436 uint32 unorderedAccessViewIds
[SVGA3D_MAX_UAVIEWS
];
1440 uint32 targets
[SVGA3D_DX_MAX_SOTARGETS
];
1446 uint8 numScissorRects
;
1451 SVGA3dViewport viewports
[SVGA3D_DX_MAX_VIEWPORTS
];
1454 SVGASignedRect scissorRects
[SVGA3D_DX_MAX_SCISSORRECTS
];
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
];
1471 SVGA3dQueryId queryID
[SVGA3D_MAX_QUERY
];
1473 SVGA3dCOTableData cotables
[SVGA_COTABLE_MAX
];
1476 #include "vmware_pack_end.h"
1477 SVGADXContextMobFormat
;
1480 #include "vmware_pack_begin.h"
1481 struct SVGA3dCmdDXTempSetContext
{
1484 #include "vmware_pack_end.h"
1485 SVGA3dCmdDXTempSetContext
; /* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */
1487 #endif /* _SVGA3D_DX_H_ */