cregit-Linux how code gets into the kernel

Release 4.12 drivers/gpu/drm/vmwgfx/device_include/svga3d_dx.h

/**********************************************************
 * Copyright 2012-2015 VMware, Inc.  All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 **********************************************************/

/*
 * svga3d_dx.h --
 *
 *       SVGA 3d hardware definitions for DX10 support.
 */

#ifndef _SVGA3D_DX_H_

#define _SVGA3D_DX_H_


#define INCLUDE_ALLOW_MODULE

#define INCLUDE_ALLOW_USERLEVEL

#define INCLUDE_ALLOW_VMCORE
#include "includeCheck.h"

#include "svga3d_limits.h"


#define SVGA3D_INPUT_MIN               0

#define SVGA3D_INPUT_PER_VERTEX_DATA   0

#define SVGA3D_INPUT_PER_INSTANCE_DATA 1

#define SVGA3D_INPUT_MAX               2

typedef uint32 SVGA3dInputClassification;


#define SVGA3D_RESOURCE_TYPE_MIN      1

#define SVGA3D_RESOURCE_BUFFER        1

#define SVGA3D_RESOURCE_TEXTURE1D     2

#define SVGA3D_RESOURCE_TEXTURE2D     3

#define SVGA3D_RESOURCE_TEXTURE3D     4

#define SVGA3D_RESOURCE_TEXTURECUBE   5

#define SVGA3D_RESOURCE_TYPE_DX10_MAX 6

#define SVGA3D_RESOURCE_BUFFEREX      6

#define SVGA3D_RESOURCE_TYPE_MAX      7

typedef uint32 SVGA3dResourceType;


#define SVGA3D_DEPTH_WRITE_MASK_ZERO   0

#define SVGA3D_DEPTH_WRITE_MASK_ALL    1

typedef uint8 SVGA3dDepthWriteMask;


#define SVGA3D_FILTER_MIP_LINEAR  (1 << 0)

#define SVGA3D_FILTER_MAG_LINEAR  (1 << 2)

#define SVGA3D_FILTER_MIN_LINEAR  (1 << 4)

#define SVGA3D_FILTER_ANISOTROPIC (1 << 6)

#define SVGA3D_FILTER_COMPARE     (1 << 7)

typedef uint32 SVGA3dFilter;


#define SVGA3D_CULL_INVALID 0

#define SVGA3D_CULL_MIN     1

#define SVGA3D_CULL_NONE    1

#define SVGA3D_CULL_FRONT   2

#define SVGA3D_CULL_BACK    3

#define SVGA3D_CULL_MAX     4

typedef uint8 SVGA3dCullMode;


#define SVGA3D_COMPARISON_INVALID         0

#define SVGA3D_COMPARISON_MIN             1

#define SVGA3D_COMPARISON_NEVER           1

#define SVGA3D_COMPARISON_LESS            2

#define SVGA3D_COMPARISON_EQUAL           3

#define SVGA3D_COMPARISON_LESS_EQUAL      4

#define SVGA3D_COMPARISON_GREATER         5

#define SVGA3D_COMPARISON_NOT_EQUAL       6

#define SVGA3D_COMPARISON_GREATER_EQUAL   7

#define SVGA3D_COMPARISON_ALWAYS          8

#define SVGA3D_COMPARISON_MAX             9

typedef uint8 SVGA3dComparisonFunc;


#define SVGA3D_DX_MAX_VERTEXBUFFERS 32

#define SVGA3D_DX_MAX_SOTARGETS 4

#define SVGA3D_DX_MAX_SRVIEWS 128

#define SVGA3D_DX_MAX_CONSTBUFFERS 16

#define SVGA3D_DX_MAX_SAMPLERS 16

/* Id limits */

static const uint32 SVGA3dBlendObjectCountPerContext = 4096;

static const uint32 SVGA3dDepthStencilObjectCountPerContext = 4096;


typedef uint32 SVGA3dSurfaceId;

typedef uint32 SVGA3dShaderResourceViewId;

typedef uint32 SVGA3dRenderTargetViewId;

typedef uint32 SVGA3dDepthStencilViewId;


typedef uint32 SVGA3dShaderId;

typedef uint32 SVGA3dElementLayoutId;

typedef uint32 SVGA3dSamplerId;

typedef uint32 SVGA3dBlendStateId;

typedef uint32 SVGA3dDepthStencilStateId;

typedef uint32 SVGA3dRasterizerStateId;

typedef uint32 SVGA3dQueryId;

typedef uint32 SVGA3dStreamOutputId;

typedef union {
   struct {
      
float r;
      
float g;
      
float b;
      
float a;
   };

   
float value[4];

} SVGA3dRGBAFloat;

typedef
#include "vmware_pack_begin.h"
struct {
   
uint32 cid;
   
SVGAMobId mobid;
}
#include "vmware_pack_end.h"

SVGAOTableDXContextEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineContext {
   
uint32 cid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineContext;   
/* SVGA_3D_CMD_DX_DEFINE_CONTEXT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyContext {
   
uint32 cid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyContext;   
/* SVGA_3D_CMD_DX_DESTROY_CONTEXT */

/*
 * Bind a DX context.
 *
 * validContents should be set to 0 for new contexts,
 * and 1 if this is an old context which is getting paged
 * back on to the device.
 *
 * For new contexts, it is recommended that the driver
 * issue commands to initialize all interesting state
 * prior to rendering.
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXBindContext {
   
uint32 cid;
   
SVGAMobId mobid;
   
uint32 validContents;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXBindContext;   
/* SVGA_3D_CMD_DX_BIND_CONTEXT */

/*
 * Readback a DX context.
 * (Request that the device flush the contents back into guest memory.)
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXReadbackContext {
   
uint32 cid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXReadbackContext;   
/* SVGA_3D_CMD_DX_READBACK_CONTEXT */

/*
 * Invalidate a guest-backed context.
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXInvalidateContext {
   
uint32 cid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXInvalidateContext;   
/* SVGA_3D_CMD_DX_INVALIDATE_CONTEXT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dReplyFormatData {
   
uint32 formatSupport;
   
uint32 msaa2xQualityLevels:5;
   
uint32 msaa4xQualityLevels:5;
   
uint32 msaa8xQualityLevels:5;
   
uint32 msaa16xQualityLevels:5;
   
uint32 msaa32xQualityLevels:5;
   
uint32 pad:7;
}
#include "vmware_pack_end.h"

SVGA3dReplyFormatData;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetSingleConstantBuffer {
   
uint32 slot;
   
SVGA3dShaderType type;
   
SVGA3dSurfaceId sid;
   
uint32 offsetInBytes;
   
uint32 sizeInBytes;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetSingleConstantBuffer;
/* SVGA_3D_CMD_DX_SET_SINGLE_CONSTANT_BUFFER */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetShaderResources {
   
uint32 startView;
   
SVGA3dShaderType type;

   /*
    * Followed by a variable number of SVGA3dShaderResourceViewId's.
    */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetShaderResources; 
/* SVGA_3D_CMD_DX_SET_SHADER_RESOURCES */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetShader {
   
SVGA3dShaderId shaderId;
   
SVGA3dShaderType type;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetShader; 
/* SVGA_3D_CMD_DX_SET_SHADER */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetSamplers {
   
uint32 startSampler;
   
SVGA3dShaderType type;

   /*
    * Followed by a variable number of SVGA3dSamplerId's.
    */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetSamplers; 
/* SVGA_3D_CMD_DX_SET_SAMPLERS */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDraw {
   
uint32 vertexCount;
   
uint32 startVertexLocation;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDraw; 
/* SVGA_3D_CMD_DX_DRAW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDrawIndexed {
   
uint32 indexCount;
   
uint32 startIndexLocation;
   
int32  baseVertexLocation;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDrawIndexed; 
/* SVGA_3D_CMD_DX_DRAW_INDEXED */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDrawInstanced {
   
uint32 vertexCountPerInstance;
   
uint32 instanceCount;
   
uint32 startVertexLocation;
   
uint32 startInstanceLocation;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDrawInstanced; 
/* SVGA_3D_CMD_DX_DRAW_INSTANCED */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDrawIndexedInstanced {
   
uint32 indexCountPerInstance;
   
uint32 instanceCount;
   
uint32 startIndexLocation;
   
int32  baseVertexLocation;
   
uint32 startInstanceLocation;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDrawIndexedInstanced; 
/* SVGA_3D_CMD_DX_DRAW_INDEXED_INSTANCED */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDrawAuto {
   
uint32 pad0;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDrawAuto; 
/* SVGA_3D_CMD_DX_DRAW_AUTO */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetInputLayout {
   
SVGA3dElementLayoutId elementLayoutId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetInputLayout; 
/* SVGA_3D_CMD_DX_SET_INPUT_LAYOUT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dVertexBuffer {
   
SVGA3dSurfaceId sid;
   
uint32 stride;
   
uint32 offset;
}
#include "vmware_pack_end.h"

SVGA3dVertexBuffer;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetVertexBuffers {
   
uint32 startBuffer;
   /* Followed by a variable number of SVGA3dVertexBuffer's. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetVertexBuffers; 
/* SVGA_3D_CMD_DX_SET_VERTEX_BUFFERS */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetIndexBuffer {
   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
uint32 offset;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetIndexBuffer; 
/* SVGA_3D_CMD_DX_SET_INDEX_BUFFER */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetTopology {
   
SVGA3dPrimitiveType topology;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetTopology; 
/* SVGA_3D_CMD_DX_SET_TOPOLOGY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetRenderTargets {
   
SVGA3dDepthStencilViewId depthStencilViewId;
   /* Followed by a variable number of SVGA3dRenderTargetViewId's. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetRenderTargets; 
/* SVGA_3D_CMD_DX_SET_RENDERTARGETS */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetBlendState {
   
SVGA3dBlendStateId blendId;
   
float blendFactor[4];
   
uint32 sampleMask;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetBlendState; 
/* SVGA_3D_CMD_DX_SET_BLEND_STATE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetDepthStencilState {
   
SVGA3dDepthStencilStateId depthStencilId;
   
uint32 stencilRef;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetDepthStencilState; 
/* SVGA_3D_CMD_DX_SET_DEPTHSTENCIL_STATE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetRasterizerState {
   
SVGA3dRasterizerStateId rasterizerId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetRasterizerState; 
/* SVGA_3D_CMD_DX_SET_RASTERIZER_STATE */


#define SVGA3D_DXQUERY_FLAG_PREDICATEHINT (1 << 0)

typedef uint32 SVGA3dDXQueryFlags;

/*
 * The SVGADXQueryDeviceState and SVGADXQueryDeviceBits are used by the device
 * to track query state transitions, but are not intended to be used by the
 * driver.
 */

#define SVGADX_QDSTATE_INVALID   ((uint8)-1) 
/* Query has no state */

#define SVGADX_QDSTATE_MIN       0

#define SVGADX_QDSTATE_IDLE      0   
/* Query hasn't started yet */

#define SVGADX_QDSTATE_ACTIVE    1   
/* Query is actively gathering data */

#define SVGADX_QDSTATE_PENDING   2   
/* Query is waiting for results */

#define SVGADX_QDSTATE_FINISHED  3   
/* Query has completed */

#define SVGADX_QDSTATE_MAX       4

typedef uint8 SVGADXQueryDeviceState;

typedef
#include "vmware_pack_begin.h"
struct {
   
SVGA3dQueryTypeUint8 type;
   
uint16 pad0;
   
SVGADXQueryDeviceState state;
   
SVGA3dDXQueryFlags flags;
   
SVGAMobId mobid;
   
uint32 offset;
}
#include "vmware_pack_end.h"

SVGACOTableDXQueryEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineQuery {
   
SVGA3dQueryId queryId;
   
SVGA3dQueryType type;
   
SVGA3dDXQueryFlags flags;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineQuery; 
/* SVGA_3D_CMD_DX_DEFINE_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyQuery {
   
SVGA3dQueryId queryId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyQuery; 
/* SVGA_3D_CMD_DX_DESTROY_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXBindQuery {
   
SVGA3dQueryId queryId;
   
SVGAMobId mobid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXBindQuery; 
/* SVGA_3D_CMD_DX_BIND_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetQueryOffset {
   
SVGA3dQueryId queryId;
   
uint32 mobOffset;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetQueryOffset; 
/* SVGA_3D_CMD_DX_SET_QUERY_OFFSET */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXBeginQuery {
   
SVGA3dQueryId queryId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXBeginQuery; 
/* SVGA_3D_CMD_DX_QUERY_BEGIN */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXEndQuery {
   
SVGA3dQueryId queryId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXEndQuery; 
/* SVGA_3D_CMD_DX_QUERY_END */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXReadbackQuery {
   
SVGA3dQueryId queryId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXReadbackQuery; 
/* SVGA_3D_CMD_DX_READBACK_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXMoveQuery {
   
SVGA3dQueryId queryId;
   
SVGAMobId mobid;
   
uint32 mobOffset;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXMoveQuery; 
/* SVGA_3D_CMD_DX_MOVE_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXBindAllQuery {
   
uint32 cid;
   
SVGAMobId mobid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXBindAllQuery; 
/* SVGA_3D_CMD_DX_BIND_ALL_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXReadbackAllQuery {
   
uint32 cid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXReadbackAllQuery; 
/* SVGA_3D_CMD_DX_READBACK_ALL_QUERY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetPredication {
   
SVGA3dQueryId queryId;
   
uint32 predicateValue;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetPredication; 
/* SVGA_3D_CMD_DX_SET_PREDICATION */

typedef
#include "vmware_pack_begin.h"

struct MKS3dDXSOState {
   
uint32 offset;       /* Starting offset */
   
uint32 intOffset;    /* Internal offset */
   
uint32 vertexCount;  /* vertices written */
   
uint32 sizeInBytes;  /* max bytes to write */
}
#include "vmware_pack_end.h"

SVGA3dDXSOState;

/* Set the offset field to this value to append SO values to the buffer */

#define SVGA3D_DX_SO_OFFSET_APPEND ((uint32) ~0u)

typedef
#include "vmware_pack_begin.h"

struct SVGA3dSoTarget {
   
SVGA3dSurfaceId sid;
   
uint32 offset;
   
uint32 sizeInBytes;
}
#include "vmware_pack_end.h"

SVGA3dSoTarget;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetSOTargets {
   
uint32 pad0;
   /* Followed by a variable number of SVGA3dSOTarget's. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetSOTargets; 
/* SVGA_3D_CMD_DX_SET_SOTARGETS */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dViewport
{
   
float x;
   
float y;
   
float width;
   
float height;
   
float minDepth;
   
float maxDepth;
}
#include "vmware_pack_end.h"

SVGA3dViewport;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetViewports {
   
uint32 pad0;
   /* Followed by a variable number of SVGA3dViewport's. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetViewports; 
/* SVGA_3D_CMD_DX_SET_VIEWPORTS */


#define SVGA3D_DX_MAX_VIEWPORTS  16

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetScissorRects {
   
uint32 pad0;
   /* Followed by a variable number of SVGASignedRect's. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetScissorRects; 
/* SVGA_3D_CMD_DX_SET_SCISSORRECTS */


#define SVGA3D_DX_MAX_SCISSORRECTS  16

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXClearRenderTargetView {
   
SVGA3dRenderTargetViewId renderTargetViewId;
   
SVGA3dRGBAFloat rgba;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXClearRenderTargetView; 
/* SVGA_3D_CMD_DX_CLEAR_RENDERTARGET_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXClearDepthStencilView {
   
uint16 flags;
   
uint16 stencil;
   
SVGA3dDepthStencilViewId depthStencilViewId;
   
float depth;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXClearDepthStencilView; 
/* SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXPredCopyRegion {
   
SVGA3dSurfaceId dstSid;
   
uint32 dstSubResource;
   
SVGA3dSurfaceId srcSid;
   
uint32 srcSubResource;
   
SVGA3dCopyBox box;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXPredCopyRegion;
/* SVGA_3D_CMD_DX_PRED_COPY_REGION */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXPredCopy {
   
SVGA3dSurfaceId dstSid;
   
SVGA3dSurfaceId srcSid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXPredCopy; 
/* SVGA_3D_CMD_DX_PRED_COPY */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXBufferCopy {
   
SVGA3dSurfaceId dest;
   
SVGA3dSurfaceId src;
   
uint32 destX;
   
uint32 srcX;
   
uint32 width;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXBufferCopy;
/* SVGA_3D_CMD_DX_BUFFER_COPY */


typedef uint32 SVGA3dDXStretchBltMode;

#define SVGADX_STRETCHBLT_LINEAR         (1 << 0)

#define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXStretchBlt {
   
SVGA3dSurfaceId srcSid;
   
uint32 srcSubResource;
   
SVGA3dSurfaceId dstSid;
   
uint32 destSubResource;
   
SVGA3dBox boxSrc;
   
SVGA3dBox boxDest;
   
SVGA3dDXStretchBltMode mode;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXStretchBlt; 
/* SVGA_3D_CMD_DX_STRETCHBLT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXGenMips {
   
SVGA3dShaderResourceViewId shaderResourceViewId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXGenMips; 
/* SVGA_3D_CMD_DX_GENMIPS */

/*
 * Defines a resource/DX surface.  Resources share the surfaceId namespace.
 *
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDefineGBSurface_v2 {
   
uint32 sid;
   
SVGA3dSurfaceFlags surfaceFlags;
   
SVGA3dSurfaceFormat format;
   
uint32 numMipLevels;
   
uint32 multisampleCount;
   
SVGA3dTextureFilter autogenFilter;
   
SVGA3dSize size;
   
uint32 arraySize;
   
uint32 pad;
}
#include "vmware_pack_end.h"

SVGA3dCmdDefineGBSurface_v2;   
/* SVGA_3D_CMD_DEFINE_GB_SURFACE_V2 */

/*
 * Update a sub-resource in a guest-backed resource.
 * (Inform the device that the guest-contents have been updated.)
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXUpdateSubResource {
   
SVGA3dSurfaceId sid;
   
uint32 subResource;
   
SVGA3dBox box;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXUpdateSubResource;   
/* SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE */

/*
 * Readback a subresource in a guest-backed resource.
 * (Request the device to flush the dirty contents into the guest.)
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXReadbackSubResource {
   
SVGA3dSurfaceId sid;
   
uint32 subResource;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXReadbackSubResource;   
/* SVGA_3D_CMD_DX_READBACK_SUBRESOURCE */

/*
 * Invalidate an image in a guest-backed surface.
 * (Notify the device that the contents can be lost.)
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXInvalidateSubResource {
   
SVGA3dSurfaceId sid;
   
uint32 subResource;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXInvalidateSubResource;   
/* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */


/*
 * Raw byte wise transfer from a buffer surface into another surface
 * of the requested box.
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXTransferFromBuffer {
   
SVGA3dSurfaceId srcSid;
   
uint32 srcOffset;
   
uint32 srcPitch;
   
uint32 srcSlicePitch;
   
SVGA3dSurfaceId destSid;
   
uint32 destSubResource;
   
SVGA3dBox destBox;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXTransferFromBuffer;   
/* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER */


/*
 * Raw byte wise transfer from a buffer surface into another surface
 * of the requested box.  Supported if SVGA3D_DEVCAP_DXCONTEXT is set.
 * The context is implied from the command buffer header.
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXPredTransferFromBuffer {
   
SVGA3dSurfaceId srcSid;
   
uint32 srcOffset;
   
uint32 srcPitch;
   
uint32 srcSlicePitch;
   
SVGA3dSurfaceId destSid;
   
uint32 destSubResource;
   
SVGA3dBox destBox;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXPredTransferFromBuffer;
/* SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER */


typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSurfaceCopyAndReadback {
   
SVGA3dSurfaceId srcSid;
   
SVGA3dSurfaceId destSid;
   
SVGA3dCopyBox box;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSurfaceCopyAndReadback;
/* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */


typedef
#include "vmware_pack_begin.h"
struct {
   union {
      struct {
         
uint32 firstElement;
         
uint32 numElements;
         
uint32 pad0;
         
uint32 pad1;
      
} buffer;
      struct {
         
uint32 mostDetailedMip;
         
uint32 firstArraySlice;
         
uint32 mipLevels;
         
uint32 arraySize;
      
} tex;
      struct {
         
uint32 firstElement;
         
uint32 numElements;
         
uint32 flags;
         
uint32 pad0;
      
} bufferex;
   };
}
#include "vmware_pack_end.h"

SVGA3dShaderResourceViewDesc;

typedef
#include "vmware_pack_begin.h"
struct {
   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
SVGA3dResourceType resourceDimension;
   
SVGA3dShaderResourceViewDesc desc;
   
uint32 pad;
}
#include "vmware_pack_end.h"

SVGACOTableDXSRViewEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineShaderResourceView {
   
SVGA3dShaderResourceViewId shaderResourceViewId;

   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
SVGA3dResourceType resourceDimension;

   
SVGA3dShaderResourceViewDesc desc;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineShaderResourceView;
/* SVGA_3D_CMD_DX_DEFINE_SHADERRESOURCE_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyShaderResourceView {
   
SVGA3dShaderResourceViewId shaderResourceViewId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyShaderResourceView;
/* SVGA_3D_CMD_DX_DESTROY_SHADERRESOURCE_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dRenderTargetViewDesc {
   union {
      struct {
         
uint32 firstElement;
         
uint32 numElements;
      
} buffer;
      struct {
         
uint32 mipSlice;
         
uint32 firstArraySlice;
         
uint32 arraySize;
      
} tex;                    /* 1d, 2d, cube */
      struct {
         
uint32 mipSlice;
         
uint32 firstW;
         
uint32 wSize;
      
} tex3D;
   };
}
#include "vmware_pack_end.h"

SVGA3dRenderTargetViewDesc;

typedef
#include "vmware_pack_begin.h"
struct {
   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
SVGA3dResourceType resourceDimension;
   
SVGA3dRenderTargetViewDesc desc;
   
uint32 pad[2];
}
#include "vmware_pack_end.h"

SVGACOTableDXRTViewEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineRenderTargetView {
   
SVGA3dRenderTargetViewId renderTargetViewId;

   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
SVGA3dResourceType resourceDimension;

   
SVGA3dRenderTargetViewDesc desc;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineRenderTargetView;
/* SVGA_3D_CMD_DX_DEFINE_RENDERTARGET_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyRenderTargetView {
   
SVGA3dRenderTargetViewId renderTargetViewId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyRenderTargetView;
/* SVGA_3D_CMD_DX_DESTROY_RENDERTARGET_VIEW */

/*
 */

#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_DEPTH   0x01

#define SVGA3D_DXDSVIEW_CREATE_READ_ONLY_STENCIL 0x02

#define SVGA3D_DXDSVIEW_CREATE_FLAG_MASK         0x03

typedef uint8 SVGA3DCreateDSViewFlags;

typedef
#include "vmware_pack_begin.h"
struct {
   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
SVGA3dResourceType resourceDimension;
   
uint32 mipSlice;
   
uint32 firstArraySlice;
   
uint32 arraySize;
   
SVGA3DCreateDSViewFlags flags;
   
uint8 pad0;
   
uint16 pad1;
   
uint32 pad2;
}
#include "vmware_pack_end.h"

SVGACOTableDXDSViewEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineDepthStencilView {
   
SVGA3dDepthStencilViewId depthStencilViewId;

   
SVGA3dSurfaceId sid;
   
SVGA3dSurfaceFormat format;
   
SVGA3dResourceType resourceDimension;
   
uint32 mipSlice;
   
uint32 firstArraySlice;
   
uint32 arraySize;
   
SVGA3DCreateDSViewFlags flags;
   
uint8 pad0;
   
uint16 pad1;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineDepthStencilView;
/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyDepthStencilView {
   
SVGA3dDepthStencilViewId depthStencilViewId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyDepthStencilView;
/* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_VIEW */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dInputElementDesc {
   
uint32 inputSlot;
   
uint32 alignedByteOffset;
   
SVGA3dSurfaceFormat format;
   
SVGA3dInputClassification inputSlotClass;
   
uint32 instanceDataStepRate;
   
uint32 inputRegister;
}
#include "vmware_pack_end.h"

SVGA3dInputElementDesc;

typedef
#include "vmware_pack_begin.h"
struct {
   /*
    * XXX: How many of these can there be?
    */
   
uint32 elid;
   
uint32 numDescs;
   
SVGA3dInputElementDesc desc[32];
   
uint32 pad[62];
}
#include "vmware_pack_end.h"

SVGACOTableDXElementLayoutEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineElementLayout {
   
SVGA3dElementLayoutId elementLayoutId;
   /* Followed by a variable number of SVGA3dInputElementDesc's. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineElementLayout;
/* SVGA_3D_CMD_DX_DEFINE_ELEMENTLAYOUT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyElementLayout {
   
SVGA3dElementLayoutId elementLayoutId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyElementLayout;
/* SVGA_3D_CMD_DX_DESTROY_ELEMENTLAYOUT */



#define SVGA3D_DX_MAX_RENDER_TARGETS 8

typedef
#include "vmware_pack_begin.h"

struct SVGA3dDXBlendStatePerRT {
      
uint8 blendEnable;
      
uint8 srcBlend;
      
uint8 destBlend;
      
uint8 blendOp;
      
uint8 srcBlendAlpha;
      
uint8 destBlendAlpha;
      
uint8 blendOpAlpha;
      
uint8 renderTargetWriteMask;
      
uint8 logicOpEnable;
      
uint8 logicOp;
      
uint16 pad0;
}
#include "vmware_pack_end.h"

SVGA3dDXBlendStatePerRT;

typedef
#include "vmware_pack_begin.h"
struct {
   
uint8 alphaToCoverageEnable;
   
uint8 independentBlendEnable;
   
uint16 pad0;
   
SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
   
uint32 pad1[7];
}
#include "vmware_pack_end.h"

SVGACOTableDXBlendStateEntry;

/*
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineBlendState {
   
SVGA3dBlendStateId blendId;
   
uint8 alphaToCoverageEnable;
   
uint8 independentBlendEnable;
   
uint16 pad0;
   
SVGA3dDXBlendStatePerRT perRT[SVGA3D_MAX_RENDER_TARGETS];
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineBlendState; 
/* SVGA_3D_CMD_DX_DEFINE_BLEND_STATE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyBlendState {
   
SVGA3dBlendStateId blendId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyBlendState; 
/* SVGA_3D_CMD_DX_DESTROY_BLEND_STATE */

typedef
#include "vmware_pack_begin.h"
struct {
   
uint8 depthEnable;
   
SVGA3dDepthWriteMask depthWriteMask;
   
SVGA3dComparisonFunc depthFunc;
   
uint8 stencilEnable;
   
uint8 frontEnable;
   
uint8 backEnable;
   
uint8 stencilReadMask;
   
uint8 stencilWriteMask;

   
uint8 frontStencilFailOp;
   
uint8 frontStencilDepthFailOp;
   
uint8 frontStencilPassOp;
   
SVGA3dComparisonFunc frontStencilFunc;

   
uint8 backStencilFailOp;
   
uint8 backStencilDepthFailOp;
   
uint8 backStencilPassOp;
   
SVGA3dComparisonFunc backStencilFunc;
}
#include "vmware_pack_end.h"

SVGACOTableDXDepthStencilEntry;

/*
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineDepthStencilState {
   
SVGA3dDepthStencilStateId depthStencilId;

   
uint8 depthEnable;
   
SVGA3dDepthWriteMask depthWriteMask;
   
SVGA3dComparisonFunc depthFunc;
   
uint8 stencilEnable;
   
uint8 frontEnable;
   
uint8 backEnable;
   
uint8 stencilReadMask;
   
uint8 stencilWriteMask;

   
uint8 frontStencilFailOp;
   
uint8 frontStencilDepthFailOp;
   
uint8 frontStencilPassOp;
   
SVGA3dComparisonFunc frontStencilFunc;

   
uint8 backStencilFailOp;
   
uint8 backStencilDepthFailOp;
   
uint8 backStencilPassOp;
   
SVGA3dComparisonFunc backStencilFunc;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineDepthStencilState;
/* SVGA_3D_CMD_DX_DEFINE_DEPTHSTENCIL_STATE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyDepthStencilState {
   
SVGA3dDepthStencilStateId depthStencilId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyDepthStencilState;
/* SVGA_3D_CMD_DX_DESTROY_DEPTHSTENCIL_STATE */

typedef
#include "vmware_pack_begin.h"
struct {
   
uint8 fillMode;
   
SVGA3dCullMode cullMode;
   
uint8 frontCounterClockwise;
   
uint8 provokingVertexLast;
   
int32 depthBias;
   
float depthBiasClamp;
   
float slopeScaledDepthBias;
   
uint8 depthClipEnable;
   
uint8 scissorEnable;
   
uint8 multisampleEnable;
   
uint8 antialiasedLineEnable;
   
float lineWidth;
   
uint8 lineStippleEnable;
   
uint8 lineStippleFactor;
   
uint16 lineStipplePattern;
   
uint32 forcedSampleCount;
}
#include "vmware_pack_end.h"

SVGACOTableDXRasterizerStateEntry;

/*
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineRasterizerState {
   
SVGA3dRasterizerStateId rasterizerId;

   
uint8 fillMode;
   
SVGA3dCullMode cullMode;
   
uint8 frontCounterClockwise;
   
uint8 provokingVertexLast;
   
int32 depthBias;
   
float depthBiasClamp;
   
float slopeScaledDepthBias;
   
uint8 depthClipEnable;
   
uint8 scissorEnable;
   
uint8 multisampleEnable;
   
uint8 antialiasedLineEnable;
   
float lineWidth;
   
uint8 lineStippleEnable;
   
uint8 lineStippleFactor;
   
uint16 lineStipplePattern;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineRasterizerState;
/* SVGA_3D_CMD_DX_DEFINE_RASTERIZER_STATE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyRasterizerState {
   
SVGA3dRasterizerStateId rasterizerId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyRasterizerState;
/* SVGA_3D_CMD_DX_DESTROY_RASTERIZER_STATE */

typedef
#include "vmware_pack_begin.h"
struct {
   
SVGA3dFilter filter;
   
uint8 addressU;
   
uint8 addressV;
   
uint8 addressW;
   
uint8 pad0;
   
float mipLODBias;
   
uint8 maxAnisotropy;
   
SVGA3dComparisonFunc comparisonFunc;
   
uint16 pad1;
   
SVGA3dRGBAFloat borderColor;
   
float minLOD;
   
float maxLOD;
   
uint32 pad2[6];
}
#include "vmware_pack_end.h"

SVGACOTableDXSamplerEntry;

/*
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineSamplerState {
   
SVGA3dSamplerId samplerId;
   
SVGA3dFilter filter;
   
uint8 addressU;
   
uint8 addressV;
   
uint8 addressW;
   
uint8 pad0;
   
float mipLODBias;
   
uint8 maxAnisotropy;
   
SVGA3dComparisonFunc comparisonFunc;
   
uint16 pad1;
   
SVGA3dRGBAFloat borderColor;
   
float minLOD;
   
float maxLOD;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineSamplerState; 
/* SVGA_3D_CMD_DX_DEFINE_SAMPLER_STATE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroySamplerState {
   
SVGA3dSamplerId samplerId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroySamplerState; 
/* SVGA_3D_CMD_DX_DESTROY_SAMPLER_STATE */

/*
 */
typedef
#include "vmware_pack_begin.h"

struct SVGA3dSignatureEntry {
   
uint8 systemValue;
   
uint8 reg;                 /* register is a reserved word */
   
uint16 mask;
   
uint8 registerComponentType;
   
uint8 minPrecision;
   
uint16 pad0;
}
#include "vmware_pack_end.h"

SVGA3dSignatureEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineShader {
   
SVGA3dShaderId shaderId;
   
SVGA3dShaderType type;
   
uint32 sizeInBytes; /* Number of bytes of shader text. */
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineShader; 
/* SVGA_3D_CMD_DX_DEFINE_SHADER */

typedef
#include "vmware_pack_begin.h"

struct SVGACOTableDXShaderEntry {
   
SVGA3dShaderType type;
   
uint32 sizeInBytes;
   
uint32 offsetInBytes;
   
SVGAMobId mobid;
   
uint32 numInputSignatureEntries;
   
uint32 numOutputSignatureEntries;

   
uint32 numPatchConstantSignatureEntries;

   
uint32 pad;
}
#include "vmware_pack_end.h"

SVGACOTableDXShaderEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyShader {
   
SVGA3dShaderId shaderId;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyShader; 
/* SVGA_3D_CMD_DX_DESTROY_SHADER */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXBindShader {
   
uint32 cid;
   
uint32 shid;
   
SVGAMobId mobid;
   
uint32 offsetInBytes;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXBindShader;   
/* SVGA_3D_CMD_DX_BIND_SHADER */

/*
 * The maximum number of streamout decl's in each streamout entry.
 */

#define SVGA3D_MAX_STREAMOUT_DECLS 64

typedef
#include "vmware_pack_begin.h"

struct SVGA3dStreamOutputDeclarationEntry {
   
uint32 outputSlot;
   
uint32 registerIndex;
   
uint8  registerMask;
   
uint8  pad0;
   
uint16 pad1;
   
uint32 stream;
}
#include "vmware_pack_end.h"

SVGA3dStreamOutputDeclarationEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGAOTableStreamOutputEntry {
   
uint32 numOutputStreamEntries;
   
SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
   
uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
   
uint32 rasterizedStream;
   
uint32 pad[250];
}
#include "vmware_pack_end.h"

SVGACOTableDXStreamOutputEntry;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDefineStreamOutput {
   
SVGA3dStreamOutputId soid;
   
uint32 numOutputStreamEntries;
   
SVGA3dStreamOutputDeclarationEntry decl[SVGA3D_MAX_STREAMOUT_DECLS];
   
uint32 streamOutputStrideInBytes[SVGA3D_DX_MAX_SOTARGETS];
   
uint32 rasterizedStream;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDefineStreamOutput; 
/* SVGA_3D_CMD_DX_DEFINE_STREAMOUTPUT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXDestroyStreamOutput {
   
SVGA3dStreamOutputId soid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXDestroyStreamOutput; 
/* SVGA_3D_CMD_DX_DESTROY_STREAMOUTPUT */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetStreamOutput {
   
SVGA3dStreamOutputId soid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetStreamOutput; 
/* SVGA_3D_CMD_DX_SET_STREAMOUTPUT */

typedef
#include "vmware_pack_begin.h"
struct {
   
uint64 value;
   
uint32 mobId;
   
uint32 mobOffset;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXMobFence64;  
/* SVGA_3D_CMD_DX_MOB_FENCE_64 */

/*
 * SVGA3dCmdSetCOTable --
 *
 * This command allows the guest to bind a mob to a context-object table.
 */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXSetCOTable {
   
uint32 cid;
   
uint32 mobid;
   
SVGACOTableType type;
   
uint32 validSizeInBytes;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXSetCOTable; 
/* SVGA_3D_CMD_DX_SET_COTABLE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXReadbackCOTable {
   
uint32 cid;
   
SVGACOTableType type;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXReadbackCOTable; 
/* SVGA_3D_CMD_DX_READBACK_COTABLE */

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCOTableData {
   
uint32 mobid;
}
#include "vmware_pack_end.h"

SVGA3dCOTableData;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dBufferBinding {
   
uint32 bufferId;
   
uint32 stride;
   
uint32 offset;
}
#include "vmware_pack_end.h"

SVGA3dBufferBinding;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dConstantBufferBinding {
   
uint32 sid;
   
uint32 offsetInBytes;
   
uint32 sizeInBytes;
}
#include "vmware_pack_end.h"

SVGA3dConstantBufferBinding;

typedef
#include "vmware_pack_begin.h"

struct SVGADXInputAssemblyMobFormat {
   
uint32 layoutId;
   
SVGA3dBufferBinding vertexBuffers[SVGA3D_DX_MAX_VERTEXBUFFERS];
   
uint32 indexBufferSid;
   
uint32 pad;
   
uint32 indexBufferOffset;
   
uint32 indexBufferFormat;
   
uint32 topology;
}
#include "vmware_pack_end.h"

SVGADXInputAssemblyMobFormat;

typedef
#include "vmware_pack_begin.h"

struct SVGADXContextMobFormat {
   
SVGADXInputAssemblyMobFormat inputAssembly;

   struct {
      
uint32 blendStateId;
      
uint32 blendFactor[4];
      
uint32 sampleMask;
      
uint32 depthStencilStateId;
      
uint32 stencilRef;
      
uint32 rasterizerStateId;
      
uint32 depthStencilViewId;
      
uint32 renderTargetViewIds[SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS];
      
uint32 unorderedAccessViewIds[SVGA3D_MAX_UAVIEWS];
   
} renderState;

   struct {
      
uint32 targets[SVGA3D_DX_MAX_SOTARGETS];
      
uint32 soid;
   
} streamOut;
   
uint32 pad0[11];

   
uint8 numViewports;
   
uint8 numScissorRects;
   
uint16 pad1[1];

   
uint32 pad2[3];

   
SVGA3dViewport viewports[SVGA3D_DX_MAX_VIEWPORTS];
   
uint32 pad3[32];

   
SVGASignedRect scissorRects[SVGA3D_DX_MAX_SCISSORRECTS];
   
uint32 pad4[64];

   struct {
      
uint32 queryID;
      
uint32 value;
   
} predication;
   
uint32 pad5[2];

   struct {
      
uint32 shaderId;
      
SVGA3dConstantBufferBinding constantBuffers[SVGA3D_DX_MAX_CONSTBUFFERS];
      
uint32 shaderResources[SVGA3D_DX_MAX_SRVIEWS];
      
uint32 samplers[SVGA3D_DX_MAX_SAMPLERS];
   
} shaderState[SVGA3D_NUM_SHADERTYPE];
   
uint32 pad6[26];

   
SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];

   
SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
   
uint32 pad7[381];
}
#include "vmware_pack_end.h"

SVGADXContextMobFormat;

typedef
#include "vmware_pack_begin.h"

struct SVGA3dCmdDXTempSetContext {
   
uint32 dxcid;
}
#include "vmware_pack_end.h"

SVGA3dCmdDXTempSetContext; 
/* SVGA_3D_CMD_DX_TEMP_SET_CONTEXT */

#endif /* _SVGA3D_DX_H_ */

Overall Contributors

PersonTokensPropCommitsCommitProp
Sinclair Yeh3360100.00%1100.00%
Total3360100.00%1100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.