forked from Minki/linux
drm/vmwgfx: Update the device headers
This change updates the device headers to the latest device version. Where renaming affects the existing code, it's updated accordingly. Signed-off-by: Deepak Rawat <drawat@vmware.com> Reviewed-by: Sinclair Yeh <syeh@vmware.com> Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
This commit is contained in:
parent
812a954b78
commit
dc75e73330
@ -46,10 +46,10 @@
|
||||
* the SVGA3D protocol and remain reserved; they should not be used in the
|
||||
* future.
|
||||
*
|
||||
* IDs between 1040 and 1999 (inclusive) are available for use by the
|
||||
* IDs between 1040 and 2999 (inclusive) are available for use by the
|
||||
* current SVGA3D protocol.
|
||||
*
|
||||
* FIFO clients other than SVGA3D should stay below 1000, or at 2000
|
||||
* FIFO clients other than SVGA3D should stay below 1000, or at 3000
|
||||
* and up.
|
||||
*/
|
||||
|
||||
@ -89,19 +89,19 @@ typedef enum {
|
||||
SVGA_3D_CMD_BLIT_SURFACE_TO_SCREEN = 1069,
|
||||
SVGA_3D_CMD_SURFACE_DEFINE_V2 = 1070,
|
||||
SVGA_3D_CMD_GENERATE_MIPMAPS = 1071,
|
||||
SVGA_3D_CMD_VIDEO_CREATE_DECODER = 1072,
|
||||
SVGA_3D_CMD_VIDEO_DESTROY_DECODER = 1073,
|
||||
SVGA_3D_CMD_VIDEO_CREATE_PROCESSOR = 1074,
|
||||
SVGA_3D_CMD_VIDEO_DESTROY_PROCESSOR = 1075,
|
||||
SVGA_3D_CMD_VIDEO_DECODE_START_FRAME = 1076,
|
||||
SVGA_3D_CMD_VIDEO_DECODE_RENDER = 1077,
|
||||
SVGA_3D_CMD_VIDEO_DECODE_END_FRAME = 1078,
|
||||
SVGA_3D_CMD_VIDEO_PROCESS_FRAME = 1079,
|
||||
SVGA_3D_CMD_DEAD4 = 1072,
|
||||
SVGA_3D_CMD_DEAD5 = 1073,
|
||||
SVGA_3D_CMD_DEAD6 = 1074,
|
||||
SVGA_3D_CMD_DEAD7 = 1075,
|
||||
SVGA_3D_CMD_DEAD8 = 1076,
|
||||
SVGA_3D_CMD_DEAD9 = 1077,
|
||||
SVGA_3D_CMD_DEAD10 = 1078,
|
||||
SVGA_3D_CMD_DEAD11 = 1079,
|
||||
SVGA_3D_CMD_ACTIVATE_SURFACE = 1080,
|
||||
SVGA_3D_CMD_DEACTIVATE_SURFACE = 1081,
|
||||
SVGA_3D_CMD_SCREEN_DMA = 1082,
|
||||
SVGA_3D_CMD_SET_UNITY_SURFACE_COOKIE = 1083,
|
||||
SVGA_3D_CMD_OPEN_CONTEXT_SURFACE = 1084,
|
||||
SVGA_3D_CMD_DEAD1 = 1083,
|
||||
SVGA_3D_CMD_DEAD2 = 1084,
|
||||
|
||||
SVGA_3D_CMD_LOGICOPS_BITBLT = 1085,
|
||||
SVGA_3D_CMD_LOGICOPS_TRANSBLT = 1086,
|
||||
@ -217,7 +217,7 @@ typedef enum {
|
||||
SVGA_3D_CMD_DX_CLEAR_DEPTHSTENCIL_VIEW = 1177,
|
||||
SVGA_3D_CMD_DX_PRED_COPY_REGION = 1178,
|
||||
SVGA_3D_CMD_DX_PRED_COPY = 1179,
|
||||
SVGA_3D_CMD_DX_STRETCHBLT = 1180,
|
||||
SVGA_3D_CMD_DX_PRESENTBLT = 1180,
|
||||
SVGA_3D_CMD_DX_GENMIPS = 1181,
|
||||
SVGA_3D_CMD_DX_UPDATE_SUBRESOURCE = 1182,
|
||||
SVGA_3D_CMD_DX_READBACK_SUBRESOURCE = 1183,
|
||||
@ -254,7 +254,7 @@ typedef enum {
|
||||
SVGA_3D_CMD_DX_READBACK_ALL_QUERY = 1214,
|
||||
SVGA_3D_CMD_DX_PRED_TRANSFER_FROM_BUFFER = 1215,
|
||||
SVGA_3D_CMD_DX_MOB_FENCE_64 = 1216,
|
||||
SVGA_3D_CMD_DX_BIND_SHADER_ON_CONTEXT = 1217,
|
||||
SVGA_3D_CMD_DX_BIND_ALL_SHADER = 1217,
|
||||
SVGA_3D_CMD_DX_HINT = 1218,
|
||||
SVGA_3D_CMD_DX_BUFFER_UPDATE = 1219,
|
||||
SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET = 1220,
|
||||
@ -262,17 +262,47 @@ typedef enum {
|
||||
SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET = 1222,
|
||||
|
||||
/*
|
||||
* Reserve some IDs to be used for the DX11 shader types.
|
||||
* Reserve some IDs to be used for the SM5 shader types.
|
||||
*/
|
||||
SVGA_3D_CMD_DX_RESERVED1 = 1223,
|
||||
SVGA_3D_CMD_DX_RESERVED2 = 1224,
|
||||
SVGA_3D_CMD_DX_RESERVED3 = 1225,
|
||||
|
||||
SVGA_3D_CMD_DX_MAX = 1226,
|
||||
SVGA_3D_CMD_MAX = 1226,
|
||||
SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER = 1226,
|
||||
SVGA_3D_CMD_DX_MAX = 1227,
|
||||
|
||||
SVGA_3D_CMD_SCREEN_COPY = 1227,
|
||||
|
||||
/*
|
||||
* Reserve some IDs to be used for video.
|
||||
*/
|
||||
SVGA_3D_CMD_VIDEO_RESERVED1 = 1228,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED2 = 1229,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED3 = 1230,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED4 = 1231,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED5 = 1232,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED6 = 1233,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED7 = 1234,
|
||||
SVGA_3D_CMD_VIDEO_RESERVED8 = 1235,
|
||||
|
||||
SVGA_3D_CMD_GROW_OTABLE = 1236,
|
||||
SVGA_3D_CMD_DX_GROW_COTABLE = 1237,
|
||||
SVGA_3D_CMD_INTRA_SURFACE_COPY = 1238,
|
||||
|
||||
SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 = 1239,
|
||||
|
||||
SVGA_3D_CMD_DX_RESOLVE_COPY = 1240,
|
||||
SVGA_3D_CMD_DX_PRED_RESOLVE_COPY = 1241,
|
||||
SVGA_3D_CMD_DX_PRED_CONVERT_REGION = 1242,
|
||||
SVGA_3D_CMD_DX_PRED_CONVERT = 1243,
|
||||
SVGA_3D_CMD_WHOLE_SURFACE_COPY = 1244,
|
||||
|
||||
SVGA_3D_CMD_MAX = 1245,
|
||||
SVGA_3D_CMD_FUTURE_MAX = 3000
|
||||
} SVGAFifo3dCmdId;
|
||||
|
||||
#define SVGA_NUM_3D_CMD (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE)
|
||||
|
||||
/*
|
||||
* FIFO command format definitions:
|
||||
*/
|
||||
@ -301,7 +331,7 @@ typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 sid;
|
||||
SVGA3dSurfaceFlags surfaceFlags;
|
||||
SVGA3dSurface1Flags surfaceFlags;
|
||||
SVGA3dSurfaceFormat format;
|
||||
/*
|
||||
* If surfaceFlags has SVGA3D_SURFACE_CUBEMAP bit set, all SVGA3dSurfaceFace
|
||||
@ -327,7 +357,7 @@ typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 sid;
|
||||
SVGA3dSurfaceFlags surfaceFlags;
|
||||
SVGA3dSurface1Flags surfaceFlags;
|
||||
SVGA3dSurfaceFormat format;
|
||||
/*
|
||||
* If surfaceFlags has SVGA3D_SURFACE_CUBEMAP bit set, all SVGA3dSurfaceFace
|
||||
@ -459,6 +489,28 @@ struct {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdSurfaceCopy; /* SVGA_3D_CMD_SURFACE_COPY */
|
||||
|
||||
/*
|
||||
* Perform a surface copy within the same image.
|
||||
* The src/dest boxes are allowed to overlap.
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGA3dSurfaceImageId surface;
|
||||
SVGA3dCopyBox box;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdIntraSurfaceCopy; /* SVGA_3D_CMD_INTRA_SURFACE_COPY */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 srcSid;
|
||||
uint32 destSid;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdWholeSurfaceCopy; /* SVGA_3D_CMD_WHOLE_SURFACE_COPY */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
@ -772,6 +824,17 @@ struct {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dVertexElement;
|
||||
|
||||
/*
|
||||
* Should the vertex element respect the stream value? The high bit of the
|
||||
* stream should be set to indicate that the stream should be respected. If
|
||||
* the high bit is not set, the stream will be ignored and replaced by the index
|
||||
* of the position of the currently considered vertex element.
|
||||
*
|
||||
* All guests should set this bit and correctly specify the stream going
|
||||
* forward.
|
||||
*/
|
||||
#define SVGA3D_VERTEX_ELEMENT_RESPECT_STREAM (1 << 7)
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
@ -1102,8 +1165,6 @@ struct {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdGenerateMipmaps; /* SVGA_3D_CMD_GENERATE_MIPMAPS */
|
||||
|
||||
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
@ -1146,38 +1207,6 @@ struct SVGA3dCmdScreenDMA {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdScreenDMA; /* SVGA_3D_CMD_SCREEN_DMA */
|
||||
|
||||
/*
|
||||
* Set Unity Surface Cookie
|
||||
*
|
||||
* Associates the supplied cookie with the surface id for use with
|
||||
* Unity. This cookie is a hint from guest to host, there is no way
|
||||
* for the guest to readback the cookie and the host is free to drop
|
||||
* the cookie association at will. The default value for the cookie
|
||||
* on all surfaces is 0.
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdSetUnitySurfaceCookie {
|
||||
uint32 sid;
|
||||
uint64 cookie;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdSetUnitySurfaceCookie; /* SVGA_3D_CMD_SET_UNITY_SURFACE_COOKIE */
|
||||
|
||||
/*
|
||||
* Open a context-specific surface in a non-context-specific manner.
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdOpenContextSurface {
|
||||
uint32 sid;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdOpenContextSurface; /* SVGA_3D_CMD_OPEN_CONTEXT_SURFACE */
|
||||
|
||||
|
||||
/*
|
||||
* Logic ops
|
||||
*/
|
||||
@ -1324,7 +1353,7 @@ typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGA3dSurfaceFormat format;
|
||||
SVGA3dSurfaceFlags surfaceFlags;
|
||||
SVGA3dSurface1Flags surface1Flags;
|
||||
uint32 numMipLevels;
|
||||
uint32 multisampleCount;
|
||||
SVGA3dTextureFilter autogenFilter;
|
||||
@ -1332,7 +1361,11 @@ struct {
|
||||
SVGAMobId mobid;
|
||||
uint32 arraySize;
|
||||
uint32 mobPitch;
|
||||
uint32 pad[5];
|
||||
SVGA3dSurface2Flags surface2Flags;
|
||||
uint8 multisamplePattern;
|
||||
uint8 qualityLevel;
|
||||
uint8 pad0[2];
|
||||
uint32 pad1[3];
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAOTableSurfaceEntry;
|
||||
@ -1360,7 +1393,8 @@ struct {
|
||||
SVGAOTableShaderEntry;
|
||||
#define SVGA3D_OTABLE_SHADER_ENTRY_SIZE (sizeof(SVGAOTableShaderEntry))
|
||||
|
||||
#define SVGA_STFLAG_PRIMARY (1 << 0)
|
||||
#define SVGA_STFLAG_PRIMARY (1 << 0)
|
||||
#define SVGA_STFLAG_RESERVED (1 << 1) /* Added with cap SVGA_CAP_HP_CMD_QUEUE */
|
||||
typedef uint32 SVGAScreenTargetFlags;
|
||||
|
||||
typedef
|
||||
@ -1528,6 +1562,25 @@ struct {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdSetOTableBase64; /* SVGA_3D_CMD_SET_OTABLE_BASE64 */
|
||||
|
||||
/*
|
||||
* Guests using SVGA_3D_CMD_GROW_OTABLE are promising that
|
||||
* the new OTable contains the same contents as the old one, except possibly
|
||||
* for some new invalid entries at the end.
|
||||
*
|
||||
* (Otherwise, guests should use one of the SetOTableBase commands.)
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGAOTableType type;
|
||||
PPN64 baseAddress;
|
||||
uint32 sizeInBytes;
|
||||
uint32 validSizeInBytes;
|
||||
SVGAMobFormat ptDepth;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdGrowOTable; /* SVGA_3D_CMD_GROW_OTABLE */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
@ -1615,7 +1668,7 @@ typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDefineGBSurface {
|
||||
uint32 sid;
|
||||
SVGA3dSurfaceFlags surfaceFlags;
|
||||
SVGA3dSurface1Flags surfaceFlags;
|
||||
SVGA3dSurfaceFormat format;
|
||||
uint32 numMipLevels;
|
||||
uint32 multisampleCount;
|
||||
@ -1625,6 +1678,45 @@ struct SVGA3dCmdDefineGBSurface {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDefineGBSurface; /* SVGA_3D_CMD_DEFINE_GB_SURFACE */
|
||||
|
||||
/*
|
||||
* Defines a guest-backed surface, adding the arraySize field.
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDefineGBSurface_v2 {
|
||||
uint32 sid;
|
||||
SVGA3dSurface1Flags 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 */
|
||||
|
||||
/*
|
||||
* Defines a guest-backed surface, adding the larger flags.
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDefineGBSurface_v3 {
|
||||
uint32 sid;
|
||||
SVGA3dSurfaceAllFlags surfaceFlags;
|
||||
SVGA3dSurfaceFormat format;
|
||||
uint32 numMipLevels;
|
||||
uint32 multisampleCount;
|
||||
SVGA3dMSPattern multisamplePattern;
|
||||
SVGA3dMSQualityLevel qualityLevel;
|
||||
SVGA3dTextureFilter autogenFilter;
|
||||
SVGA3dSize size;
|
||||
uint32 arraySize;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDefineGBSurface_v3; /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 */
|
||||
|
||||
/*
|
||||
* Destroy a guest-backed surface.
|
||||
*/
|
||||
@ -1672,7 +1764,7 @@ SVGA3dCmdBindGBSurfaceWithPitch; /* SVGA_3D_CMD_BIND_GB_SURFACE_WITH_PITCH */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct{
|
||||
struct SVGA3dCmdCondBindGBSurface {
|
||||
uint32 sid;
|
||||
SVGAMobId testMobid;
|
||||
SVGAMobId mobid;
|
||||
@ -2066,6 +2158,26 @@ struct {
|
||||
uint32 mobOffset;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdGBMobFence; /* SVGA_3D_CMD_GB_MOB_FENCE*/
|
||||
SVGA3dCmdGBMobFence; /* SVGA_3D_CMD_GB_MOB_FENCE */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 stid;
|
||||
SVGA3dSurfaceImageId dest;
|
||||
|
||||
uint32 statusMobId;
|
||||
uint32 statusMobOffset;
|
||||
|
||||
/* Reserved fields */
|
||||
uint32 mustBeInvalidId;
|
||||
uint32 mustBeZero;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdScreenCopy; /* SVGA_3D_CMD_SCREEN_COPY */
|
||||
|
||||
#define SVGA_SCREEN_COPY_STATUS_FAILURE 0x00
|
||||
#define SVGA_SCREEN_COPY_STATUS_SUCCESS 0x01
|
||||
#define SVGA_SCREEN_COPY_STATUS_INVALID 0xFFFFFFFF
|
||||
|
||||
#endif /* _SVGA3D_CMD_H_ */
|
||||
|
@ -229,9 +229,9 @@ typedef enum {
|
||||
SVGA3D_DEVCAP_DEAD2 = 94,
|
||||
|
||||
/*
|
||||
* Does the device support the DX commands?
|
||||
* Does the device support DXContexts?
|
||||
*/
|
||||
SVGA3D_DEVCAP_DX = 95,
|
||||
SVGA3D_DEVCAP_DXCONTEXT = 95,
|
||||
|
||||
/*
|
||||
* What is the maximum size of a texture array?
|
||||
@ -241,21 +241,47 @@ typedef enum {
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_ARRAY_SIZE = 96,
|
||||
|
||||
/*
|
||||
* What is the maximum number of vertex buffers that can
|
||||
* be used in the DXContext inputAssembly?
|
||||
* What is the maximum number of vertex buffers or vertex input registers
|
||||
* that can be expected to work correctly with a DXContext?
|
||||
*
|
||||
* The guest is allowed to set up to SVGA3D_DX_MAX_VERTEXBUFFERS, but
|
||||
* anything in excess of this cap is not guaranteed to render correctly.
|
||||
*
|
||||
* Similarly, the guest can set up to SVGA3D_DX_MAX_VERTEXINPUTREGISTERS
|
||||
* input registers without the SVGA3D_DEVCAP_SM4_1 cap, or
|
||||
* SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS with the SVGA3D_DEVCAP_SM4_1,
|
||||
* but only the registers up to this cap value are guaranteed to render
|
||||
* correctly.
|
||||
*
|
||||
* If guest-drivers are able to expose a lower-limit, it's recommended
|
||||
* that they clamp to this value. Otherwise, the host will make a
|
||||
* best-effort on case-by-case basis if guests exceed this.
|
||||
*/
|
||||
SVGA3D_DEVCAP_DX_MAX_VERTEXBUFFERS = 97,
|
||||
|
||||
/*
|
||||
* What is the maximum number of constant buffers
|
||||
* that can be expected to work correctly with a
|
||||
* DX context?
|
||||
* What is the maximum number of constant buffers that can be expected to
|
||||
* work correctly with a DX context?
|
||||
*
|
||||
* The guest is allowed to set up to SVGA3D_DX_MAX_CONSTBUFFERS, but
|
||||
* anything in excess of this cap is not guaranteed to render correctly.
|
||||
*
|
||||
* If guest-drivers are able to expose a lower-limit, it's recommended
|
||||
* that they clamp to this value. Otherwise, the host will make a
|
||||
* best-effort on case-by-case basis if guests exceed this.
|
||||
*/
|
||||
SVGA3D_DEVCAP_DX_MAX_CONSTANT_BUFFERS = 98,
|
||||
|
||||
/*
|
||||
* Does the device support provoking vertex control?
|
||||
* If zero, the first vertex will always be the provoking vertex.
|
||||
*
|
||||
* If this cap is present, the provokingVertexLast field in the
|
||||
* rasterizer state is enabled. (Guests can then set it to FALSE,
|
||||
* meaning that the first vertex is the provoking vertex, or TRUE,
|
||||
* meaning that the last verteix is the provoking vertex.)
|
||||
*
|
||||
* If this cap is FALSE, then guests should set the provokingVertexLast
|
||||
* to FALSE, otherwise rendering behavior is undefined.
|
||||
*/
|
||||
SVGA3D_DEVCAP_DX_PROVOKING_VERTEX = 99,
|
||||
|
||||
@ -281,7 +307,7 @@ typedef enum {
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPU8V8 = 119,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPL6V5U5 = 120,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPX8L8V8U8 = 121,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPL8V8U8 = 122,
|
||||
SVGA3D_DEVCAP_DXFMT_FORMAT_DEAD1 = 122,
|
||||
SVGA3D_DEVCAP_DXFMT_ARGB_S10E5 = 123,
|
||||
SVGA3D_DEVCAP_DXFMT_ARGB_S23E8 = 124,
|
||||
SVGA3D_DEVCAP_DXFMT_A2R10G10B10 = 125,
|
||||
@ -320,8 +346,8 @@ typedef enum {
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32_SINT = 158,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G8X24_TYPELESS = 159,
|
||||
SVGA3D_DEVCAP_DXFMT_D32_FLOAT_S8X24_UINT = 160,
|
||||
SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24_TYPELESS = 161,
|
||||
SVGA3D_DEVCAP_DXFMT_X32_TYPELESS_G8X24_UINT = 162,
|
||||
SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24 = 161,
|
||||
SVGA3D_DEVCAP_DXFMT_X32_G8X24_UINT = 162,
|
||||
SVGA3D_DEVCAP_DXFMT_R10G10B10A2_TYPELESS = 163,
|
||||
SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT = 164,
|
||||
SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT = 165,
|
||||
@ -339,8 +365,8 @@ typedef enum {
|
||||
SVGA3D_DEVCAP_DXFMT_R32_SINT = 177,
|
||||
SVGA3D_DEVCAP_DXFMT_R24G8_TYPELESS = 178,
|
||||
SVGA3D_DEVCAP_DXFMT_D24_UNORM_S8_UINT = 179,
|
||||
SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8_TYPELESS = 180,
|
||||
SVGA3D_DEVCAP_DXFMT_X24_TYPELESS_G8_UINT = 181,
|
||||
SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8 = 180,
|
||||
SVGA3D_DEVCAP_DXFMT_X24_G8_UINT = 181,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_TYPELESS = 182,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_UNORM = 183,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_UINT = 184,
|
||||
@ -404,6 +430,17 @@ typedef enum {
|
||||
SVGA3D_DEVCAP_DXFMT_BC4_UNORM = 242,
|
||||
SVGA3D_DEVCAP_DXFMT_BC5_UNORM = 243,
|
||||
|
||||
/*
|
||||
* Advertises shaderModel 4.1 support, independent blend-states,
|
||||
* cube-map arrays, and a higher vertex input registers limit.
|
||||
*
|
||||
* (See documentation on SVGA3D_DEVCAP_DX_MAX_VERTEXBUFFERS.)
|
||||
*/
|
||||
SVGA3D_DEVCAP_SM41 = 244,
|
||||
|
||||
SVGA3D_DEVCAP_MULTISAMPLE_2X = 245,
|
||||
SVGA3D_DEVCAP_MULTISAMPLE_4X = 246,
|
||||
|
||||
SVGA3D_DEVCAP_MAX /* This must be the last index. */
|
||||
} SVGA3dDevCapIndex;
|
||||
|
||||
@ -419,9 +456,7 @@ typedef enum {
|
||||
* MIPS: Does the format support mip levels?
|
||||
* ARRAY: Does the format support texture arrays?
|
||||
* VOLUME: Does the format support having volume?
|
||||
* MULTISAMPLE_2: Does the format support 2x multisample?
|
||||
* MULTISAMPLE_4: Does the format support 4x multisample?
|
||||
* MULTISAMPLE_8: Does the format support 8x multisample?
|
||||
* MULTISAMPLE: Does the format support multisample?
|
||||
*/
|
||||
#define SVGA3D_DXFMT_SUPPORTED (1 << 0)
|
||||
#define SVGA3D_DXFMT_SHADER_SAMPLE (1 << 1)
|
||||
@ -432,20 +467,8 @@ typedef enum {
|
||||
#define SVGA3D_DXFMT_ARRAY (1 << 6)
|
||||
#define SVGA3D_DXFMT_VOLUME (1 << 7)
|
||||
#define SVGA3D_DXFMT_DX_VERTEX_BUFFER (1 << 8)
|
||||
#define SVGADX_DXFMT_MULTISAMPLE_2 (1 << 9)
|
||||
#define SVGADX_DXFMT_MULTISAMPLE_4 (1 << 10)
|
||||
#define SVGADX_DXFMT_MULTISAMPLE_8 (1 << 11)
|
||||
#define SVGADX_DXFMT_MAX (1 << 12)
|
||||
|
||||
/*
|
||||
* Convenience mask for any multisample capability.
|
||||
*
|
||||
* The multisample bits imply both load and render capability.
|
||||
*/
|
||||
#define SVGA3D_DXFMT_MULTISAMPLE ( \
|
||||
SVGADX_DXFMT_MULTISAMPLE_2 | \
|
||||
SVGADX_DXFMT_MULTISAMPLE_4 | \
|
||||
SVGADX_DXFMT_MULTISAMPLE_8 )
|
||||
#define SVGA3D_DXFMT_MULTISAMPLE (1 << 9)
|
||||
#define SVGA3D_DXFMT_MAX (1 << 10)
|
||||
|
||||
typedef union {
|
||||
Bool b;
|
||||
|
@ -56,6 +56,16 @@ typedef uint32 SVGA3dInputClassification;
|
||||
#define SVGA3D_RESOURCE_TYPE_MAX 7
|
||||
typedef uint32 SVGA3dResourceType;
|
||||
|
||||
#define SVGA3D_COLOR_WRITE_ENABLE_RED (1 << 0)
|
||||
#define SVGA3D_COLOR_WRITE_ENABLE_GREEN (1 << 1)
|
||||
#define SVGA3D_COLOR_WRITE_ENABLE_BLUE (1 << 2)
|
||||
#define SVGA3D_COLOR_WRITE_ENABLE_ALPHA (1 << 3)
|
||||
#define SVGA3D_COLOR_WRITE_ENABLE_ALL (SVGA3D_COLOR_WRITE_ENABLE_RED | \
|
||||
SVGA3D_COLOR_WRITE_ENABLE_GREEN | \
|
||||
SVGA3D_COLOR_WRITE_ENABLE_BLUE | \
|
||||
SVGA3D_COLOR_WRITE_ENABLE_ALPHA)
|
||||
typedef uint8 SVGA3dColorWriteEnable;
|
||||
|
||||
#define SVGA3D_DEPTH_WRITE_MASK_ZERO 0
|
||||
#define SVGA3D_DEPTH_WRITE_MASK_ALL 1
|
||||
typedef uint8 SVGA3dDepthWriteMask;
|
||||
@ -88,17 +98,28 @@ typedef uint8 SVGA3dCullMode;
|
||||
#define SVGA3D_COMPARISON_MAX 9
|
||||
typedef uint8 SVGA3dComparisonFunc;
|
||||
|
||||
/*
|
||||
* SVGA3D_MULTISAMPLE_RAST_DISABLE disables MSAA for all primitives.
|
||||
* SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE, which is supported in SM41,
|
||||
* disables MSAA for lines only.
|
||||
*/
|
||||
#define SVGA3D_MULTISAMPLE_RAST_DISABLE 0
|
||||
#define SVGA3D_MULTISAMPLE_RAST_ENABLE 1
|
||||
#define SVGA3D_MULTISAMPLE_RAST_DX_MAX 1
|
||||
#define SVGA3D_MULTISAMPLE_RAST_DISABLE_LINE 2
|
||||
#define SVGA3D_MULTISAMPLE_RAST_MAX 2
|
||||
typedef uint8 SVGA3dMultisampleRastEnable;
|
||||
|
||||
#define SVGA3D_DX_MAX_VERTEXBUFFERS 32
|
||||
#define SVGA3D_DX_MAX_VERTEXINPUTREGISTERS 16
|
||||
#define SVGA3D_DX_SM41_MAX_VERTEXINPUTREGISTERS 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;
|
||||
#define SVGA3D_DX_MAX_CONSTBUF_BINDING_SIZE (4096 * 4 * (uint32)sizeof(uint32))
|
||||
|
||||
typedef uint32 SVGA3dSurfaceId;
|
||||
typedef uint32 SVGA3dShaderResourceViewId;
|
||||
typedef uint32 SVGA3dRenderTargetViewId;
|
||||
typedef uint32 SVGA3dDepthStencilViewId;
|
||||
@ -192,20 +213,6 @@ struct SVGA3dCmdDXInvalidateContext {
|
||||
#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 {
|
||||
@ -622,6 +629,28 @@ struct SVGA3dCmdDXPredCopy {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXPredCopy; /* SVGA_3D_CMD_DX_PRED_COPY */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXPredConvertRegion {
|
||||
SVGA3dSurfaceId dstSid;
|
||||
uint32 dstSubResource;
|
||||
SVGA3dBox destBox;
|
||||
SVGA3dSurfaceId srcSid;
|
||||
uint32 srcSubResource;
|
||||
SVGA3dBox srcBox;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXPredConvertRegion; /* SVGA_3D_CMD_DX_PRED_CONVERT_REGION */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXPredConvert {
|
||||
SVGA3dSurfaceId dstSid;
|
||||
SVGA3dSurfaceId srcSid;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXPredConvert; /* SVGA_3D_CMD_DX_PRED_CONVERT */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXBufferCopy {
|
||||
@ -635,23 +664,57 @@ struct SVGA3dCmdDXBufferCopy {
|
||||
SVGA3dCmdDXBufferCopy;
|
||||
/* SVGA_3D_CMD_DX_BUFFER_COPY */
|
||||
|
||||
typedef uint32 SVGA3dDXStretchBltMode;
|
||||
#define SVGADX_STRETCHBLT_LINEAR (1 << 0)
|
||||
#define SVGADX_STRETCHBLT_FORCE_SRC_SRGB (1 << 1)
|
||||
/*
|
||||
* Perform a surface copy between a multisample, and a non-multisampled
|
||||
* surface.
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGA3dSurfaceId dstSid;
|
||||
uint32 dstSubResource;
|
||||
SVGA3dSurfaceId srcSid;
|
||||
uint32 srcSubResource;
|
||||
SVGA3dSurfaceFormat copyFormat;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXResolveCopy; /* SVGA_3D_CMD_DX_RESOLVE_COPY */
|
||||
|
||||
/*
|
||||
* Perform a predicated surface copy between a multisample, and a
|
||||
* non-multisampled surface.
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGA3dSurfaceId dstSid;
|
||||
uint32 dstSubResource;
|
||||
SVGA3dSurfaceId srcSid;
|
||||
uint32 srcSubResource;
|
||||
SVGA3dSurfaceFormat copyFormat;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXPredResolveCopy; /* SVGA_3D_CMD_DX_PRED_RESOLVE_COPY */
|
||||
|
||||
typedef uint32 SVGA3dDXPresentBltMode;
|
||||
#define SVGADX_PRESENTBLT_LINEAR (1 << 0)
|
||||
#define SVGADX_PRESENTBLT_FORCE_SRC_SRGB (1 << 1)
|
||||
#define SVGADX_PRESENTBLT_FORCE_SRC_XRBIAS (1 << 2)
|
||||
#define SVGADX_PRESENTBLT_MODE_MAX (1 << 3)
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXStretchBlt {
|
||||
struct SVGA3dCmdDXPresentBlt {
|
||||
SVGA3dSurfaceId srcSid;
|
||||
uint32 srcSubResource;
|
||||
SVGA3dSurfaceId dstSid;
|
||||
uint32 destSubResource;
|
||||
SVGA3dBox boxSrc;
|
||||
SVGA3dBox boxDest;
|
||||
SVGA3dDXStretchBltMode mode;
|
||||
SVGA3dDXPresentBltMode mode;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXStretchBlt; /* SVGA_3D_CMD_DX_STRETCHBLT */
|
||||
SVGA3dCmdDXPresentBlt; /* SVGA_3D_CMD_DX_PRESENTBLT*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
@ -661,26 +724,6 @@ struct SVGA3dCmdDXGenMips {
|
||||
#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.)
|
||||
@ -724,7 +767,8 @@ SVGA3dCmdDXInvalidateSubResource; /* SVGA_3D_CMD_DX_INVALIDATE_SUBRESOURCE */
|
||||
|
||||
/*
|
||||
* Raw byte wise transfer from a buffer surface into another surface
|
||||
* of the requested box.
|
||||
* of the requested box. Supported if 3d is enabled and SVGA_CAP_DX
|
||||
* is set. This command does not take a context.
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
@ -773,6 +817,93 @@ struct SVGA3dCmdDXSurfaceCopyAndReadback {
|
||||
SVGA3dCmdDXSurfaceCopyAndReadback;
|
||||
/* SVGA_3D_CMD_DX_SURFACE_COPY_AND_READBACK */
|
||||
|
||||
/*
|
||||
* SVGA_DX_HINT_NONE: Does nothing.
|
||||
*
|
||||
* SVGA_DX_HINT_PREFETCH_OBJECT:
|
||||
* SVGA_DX_HINT_PREEVICT_OBJECT:
|
||||
* Consumes a SVGAObjectRef, and hints that the host should consider
|
||||
* fetching/evicting the specified object.
|
||||
*
|
||||
* An id of SVGA3D_INVALID_ID can be used if the guest isn't sure
|
||||
* what object was affected. (For instance, if the guest knows that
|
||||
* it is about to evict a DXShader, but doesn't know precisely which one,
|
||||
* the device can still use this to help limit it's search, or track
|
||||
* how many page-outs have happened.)
|
||||
*
|
||||
* SVGA_DX_HINT_PREFETCH_COBJECT:
|
||||
* SVGA_DX_HINT_PREEVICT_COBJECT:
|
||||
* Same as the above, except they consume an SVGACObjectRef.
|
||||
*/
|
||||
typedef uint32 SVGADXHintId;
|
||||
#define SVGA_DX_HINT_NONE 0
|
||||
#define SVGA_DX_HINT_PREFETCH_OBJECT 1
|
||||
#define SVGA_DX_HINT_PREEVICT_OBJECT 2
|
||||
#define SVGA_DX_HINT_PREFETCH_COBJECT 3
|
||||
#define SVGA_DX_HINT_PREEVICT_COBJECT 4
|
||||
#define SVGA_DX_HINT_MAX 5
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGAObjectRef {
|
||||
SVGAOTableType type;
|
||||
uint32 id;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAObjectRef;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGACObjectRef {
|
||||
SVGACOTableType type;
|
||||
uint32 cid;
|
||||
uint32 id;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGACObjectRef;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXHint {
|
||||
SVGADXHintId hintId;
|
||||
|
||||
/*
|
||||
* Followed by variable sized data depending on the hintId.
|
||||
*/
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXHint;
|
||||
/* SVGA_3D_CMD_DX_HINT */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXBufferUpdate {
|
||||
SVGA3dSurfaceId sid;
|
||||
uint32 x;
|
||||
uint32 width;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXBufferUpdate;
|
||||
/* SVGA_3D_CMD_DX_BUFFER_UPDATE */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXSetConstantBufferOffset {
|
||||
uint32 slot;
|
||||
uint32 offsetInBytes;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXSetConstantBufferOffset;
|
||||
|
||||
typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetVSConstantBufferOffset;
|
||||
/* SVGA_3D_CMD_DX_SET_VS_CONSTANT_BUFFER_OFFSET */
|
||||
|
||||
typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetPSConstantBufferOffset;
|
||||
/* SVGA_3D_CMD_DX_SET_PS_CONSTANT_BUFFER_OFFSET */
|
||||
|
||||
typedef SVGA3dCmdDXSetConstantBufferOffset SVGA3dCmdDXSetGSConstantBufferOffset;
|
||||
/* SVGA_3D_CMD_DX_SET_GS_CONSTANT_BUFFER_OFFSET */
|
||||
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
@ -789,7 +920,7 @@ struct {
|
||||
uint32 firstArraySlice;
|
||||
uint32 mipLevels;
|
||||
uint32 arraySize;
|
||||
} tex;
|
||||
} tex; /* 1d, 2d, 3d, cube */
|
||||
struct {
|
||||
uint32 firstElement;
|
||||
uint32 numElements;
|
||||
@ -844,6 +975,7 @@ struct SVGA3dRenderTargetViewDesc {
|
||||
struct {
|
||||
uint32 firstElement;
|
||||
uint32 numElements;
|
||||
uint32 padding0;
|
||||
} buffer;
|
||||
struct {
|
||||
uint32 mipSlice;
|
||||
@ -964,9 +1096,6 @@ SVGA3dInputElementDesc;
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
/*
|
||||
* XXX: How many of these can there be?
|
||||
*/
|
||||
uint32 elid;
|
||||
uint32 numDescs;
|
||||
SVGA3dInputElementDesc desc[32];
|
||||
@ -1007,7 +1136,7 @@ struct SVGA3dDXBlendStatePerRT {
|
||||
uint8 srcBlendAlpha;
|
||||
uint8 destBlendAlpha;
|
||||
uint8 blendOpAlpha;
|
||||
uint8 renderTargetWriteMask;
|
||||
SVGA3dColorWriteEnable renderTargetWriteMask;
|
||||
uint8 logicOpEnable;
|
||||
uint8 logicOp;
|
||||
uint16 pad0;
|
||||
@ -1125,7 +1254,7 @@ struct {
|
||||
float slopeScaledDepthBias;
|
||||
uint8 depthClipEnable;
|
||||
uint8 scissorEnable;
|
||||
uint8 multisampleEnable;
|
||||
SVGA3dMultisampleRastEnable multisampleEnable;
|
||||
uint8 antialiasedLineEnable;
|
||||
float lineWidth;
|
||||
uint8 lineStippleEnable;
|
||||
@ -1152,7 +1281,7 @@ struct SVGA3dCmdDXDefineRasterizerState {
|
||||
float slopeScaledDepthBias;
|
||||
uint8 depthClipEnable;
|
||||
uint8 scissorEnable;
|
||||
uint8 multisampleEnable;
|
||||
SVGA3dMultisampleRastEnable multisampleEnable;
|
||||
uint8 antialiasedLineEnable;
|
||||
float lineWidth;
|
||||
uint8 lineStippleEnable;
|
||||
@ -1222,21 +1351,6 @@ struct SVGA3dCmdDXDestroySamplerState {
|
||||
#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 {
|
||||
@ -1254,12 +1368,7 @@ struct SVGACOTableDXShaderEntry {
|
||||
uint32 sizeInBytes;
|
||||
uint32 offsetInBytes;
|
||||
SVGAMobId mobid;
|
||||
uint32 numInputSignatureEntries;
|
||||
uint32 numOutputSignatureEntries;
|
||||
|
||||
uint32 numPatchConstantSignatureEntries;
|
||||
|
||||
uint32 pad;
|
||||
uint32 pad[4];
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGACOTableDXShaderEntry;
|
||||
@ -1283,6 +1392,25 @@ struct SVGA3dCmdDXBindShader {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXBindShader; /* SVGA_3D_CMD_DX_BIND_SHADER */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXBindAllShader {
|
||||
uint32 cid;
|
||||
SVGAMobId mobid;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXBindAllShader; /* SVGA_3D_CMD_DX_BIND_ALL_SHADER */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXCondBindAllShader {
|
||||
uint32 cid;
|
||||
SVGAMobId testMobid;
|
||||
SVGAMobId mobid;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXCondBindAllShader; /* SVGA_3D_CMD_DX_COND_BIND_ALL_SHADER */
|
||||
|
||||
/*
|
||||
* The maximum number of streamout decl's in each streamout entry.
|
||||
*/
|
||||
@ -1356,7 +1484,6 @@ SVGA3dCmdDXMobFence64; /* SVGA_3D_CMD_DX_MOB_FENCE_64 */
|
||||
*
|
||||
* This command allows the guest to bind a mob to a context-object table.
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXSetCOTable {
|
||||
@ -1368,6 +1495,26 @@ struct SVGA3dCmdDXSetCOTable {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXSetCOTable; /* SVGA_3D_CMD_DX_SET_COTABLE */
|
||||
|
||||
/*
|
||||
* Guests using SVGA_3D_CMD_DX_GROW_COTABLE are promising that
|
||||
* the new COTable contains the same contents as the old one, except possibly
|
||||
* for some new invalid entries at the end.
|
||||
*
|
||||
* If there is an old cotable mob bound, it also has to still be valid.
|
||||
*
|
||||
* (Otherwise, guests should use the DXSetCOTableBase command.)
|
||||
*/
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXGrowCOTable {
|
||||
uint32 cid;
|
||||
uint32 mobid;
|
||||
SVGACOTableType type;
|
||||
uint32 validSizeInBytes;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCmdDXGrowCOTable; /* SVGA_3D_CMD_DX_GROW_COTABLE */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCmdDXReadbackCOTable {
|
||||
@ -1471,7 +1618,7 @@ struct SVGADXContextMobFormat {
|
||||
SVGA3dQueryId queryID[SVGA3D_MAX_QUERY];
|
||||
|
||||
SVGA3dCOTableData cotables[SVGA_COTABLE_MAX];
|
||||
uint32 pad7[381];
|
||||
uint32 pad7[380];
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGADXContextMobFormat;
|
||||
|
@ -62,7 +62,9 @@
|
||||
* Maximum size in dwords of shader text the SVGA device will allow.
|
||||
* Currently 8 MB.
|
||||
*/
|
||||
#define SVGA3D_MAX_SHADER_MEMORY (8 * 1024 * 1024 / sizeof(uint32))
|
||||
#define SVGA3D_MAX_SHADER_MEMORY_BYTES (8 * 1024 * 1024)
|
||||
#define SVGA3D_MAX_SHADER_MEMORY (SVGA3D_MAX_SHADER_MEMORY_BYTES / \
|
||||
sizeof(uint32))
|
||||
|
||||
#define SVGA3D_MAX_CLIP_PLANES 6
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -44,9 +44,21 @@
|
||||
|
||||
#define SVGA3D_INVALID_ID ((uint32)-1)
|
||||
|
||||
typedef uint8 SVGABool8; /* 8-bit Bool definition */
|
||||
typedef uint32 SVGA3dBool; /* 32-bit Bool definition */
|
||||
typedef uint32 SVGA3dColor; /* a, r, g, b */
|
||||
|
||||
typedef uint32 SVGA3dSurfaceId;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 numerator;
|
||||
uint32 denominator;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dFraction64;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCopyRect {
|
||||
@ -145,7 +157,7 @@ typedef enum SVGA3dSurfaceFormat {
|
||||
SVGA3D_BUMPU8V8 = 20,
|
||||
SVGA3D_BUMPL6V5U5 = 21,
|
||||
SVGA3D_BUMPX8L8V8U8 = 22,
|
||||
SVGA3D_BUMPL8V8U8 = 23,
|
||||
SVGA3D_FORMAT_DEAD1 = 23,
|
||||
|
||||
SVGA3D_ARGB_S10E5 = 24, /* 16-bit floating-point ARGB */
|
||||
SVGA3D_ARGB_S23E8 = 25, /* 32-bit floating-point ARGB */
|
||||
@ -204,8 +216,8 @@ typedef enum SVGA3dSurfaceFormat {
|
||||
SVGA3D_R32G32_SINT = 59,
|
||||
SVGA3D_R32G8X24_TYPELESS = 60,
|
||||
SVGA3D_D32_FLOAT_S8X24_UINT = 61,
|
||||
SVGA3D_R32_FLOAT_X8X24_TYPELESS = 62,
|
||||
SVGA3D_X32_TYPELESS_G8X24_UINT = 63,
|
||||
SVGA3D_R32_FLOAT_X8X24 = 62,
|
||||
SVGA3D_X32_G8X24_UINT = 63,
|
||||
SVGA3D_R10G10B10A2_TYPELESS = 64,
|
||||
SVGA3D_R10G10B10A2_UINT = 65,
|
||||
SVGA3D_R11G11B10_FLOAT = 66,
|
||||
@ -223,8 +235,8 @@ typedef enum SVGA3dSurfaceFormat {
|
||||
SVGA3D_R32_SINT = 78,
|
||||
SVGA3D_R24G8_TYPELESS = 79,
|
||||
SVGA3D_D24_UNORM_S8_UINT = 80,
|
||||
SVGA3D_R24_UNORM_X8_TYPELESS = 81,
|
||||
SVGA3D_X24_TYPELESS_G8_UINT = 82,
|
||||
SVGA3D_R24_UNORM_X8 = 81,
|
||||
SVGA3D_X24_G8_UINT = 82,
|
||||
SVGA3D_R8G8_TYPELESS = 83,
|
||||
SVGA3D_R8G8_UNORM = 84,
|
||||
SVGA3D_R8G8_UINT = 85,
|
||||
@ -296,92 +308,114 @@ typedef enum SVGA3dSurfaceFormat {
|
||||
SVGA3D_FORMAT_MAX
|
||||
} SVGA3dSurfaceFormat;
|
||||
|
||||
typedef enum SVGA3dSurfaceFlags {
|
||||
SVGA3D_SURFACE_CUBEMAP = (1 << 0),
|
||||
/*
|
||||
* SVGA3d Surface Flags --
|
||||
*/
|
||||
#define SVGA3D_SURFACE_CUBEMAP (1 << 0)
|
||||
|
||||
/*
|
||||
* HINT flags are not enforced by the device but are useful for
|
||||
* performance.
|
||||
*/
|
||||
SVGA3D_SURFACE_HINT_STATIC = (1 << 1),
|
||||
SVGA3D_SURFACE_HINT_DYNAMIC = (1 << 2),
|
||||
SVGA3D_SURFACE_HINT_INDEXBUFFER = (1 << 3),
|
||||
SVGA3D_SURFACE_HINT_VERTEXBUFFER = (1 << 4),
|
||||
SVGA3D_SURFACE_HINT_TEXTURE = (1 << 5),
|
||||
SVGA3D_SURFACE_HINT_RENDERTARGET = (1 << 6),
|
||||
SVGA3D_SURFACE_HINT_DEPTHSTENCIL = (1 << 7),
|
||||
SVGA3D_SURFACE_HINT_WRITEONLY = (1 << 8),
|
||||
SVGA3D_SURFACE_MASKABLE_ANTIALIAS = (1 << 9),
|
||||
SVGA3D_SURFACE_AUTOGENMIPMAPS = (1 << 10),
|
||||
SVGA3D_SURFACE_DECODE_RENDERTARGET = (1 << 11),
|
||||
/*
|
||||
* HINT flags are not enforced by the device but are useful for
|
||||
* performance.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_HINT_STATIC (CONST64U(1) << 1)
|
||||
#define SVGA3D_SURFACE_HINT_DYNAMIC (CONST64U(1) << 2)
|
||||
#define SVGA3D_SURFACE_HINT_INDEXBUFFER (CONST64U(1) << 3)
|
||||
#define SVGA3D_SURFACE_HINT_VERTEXBUFFER (CONST64U(1) << 4)
|
||||
#define SVGA3D_SURFACE_HINT_TEXTURE (CONST64U(1) << 5)
|
||||
#define SVGA3D_SURFACE_HINT_RENDERTARGET (CONST64U(1) << 6)
|
||||
#define SVGA3D_SURFACE_HINT_DEPTHSTENCIL (CONST64U(1) << 7)
|
||||
#define SVGA3D_SURFACE_HINT_WRITEONLY (CONST64U(1) << 8)
|
||||
#define SVGA3D_SURFACE_MASKABLE_ANTIALIAS (CONST64U(1) << 9)
|
||||
#define SVGA3D_SURFACE_AUTOGENMIPMAPS (CONST64U(1) << 10)
|
||||
|
||||
/*
|
||||
* Is this surface using a base-level pitch for it's mob backing?
|
||||
*
|
||||
* This flag is not intended to be set by guest-drivers, but is instead
|
||||
* set by the device when the surface is bound to a mob with a specified
|
||||
* pitch.
|
||||
*/
|
||||
SVGA3D_SURFACE_MOB_PITCH = (1 << 12),
|
||||
#define SVGA3D_SURFACE_DECODE_RENDERTARGET (CONST64U(1) << 11)
|
||||
|
||||
SVGA3D_SURFACE_INACTIVE = (1 << 13),
|
||||
SVGA3D_SURFACE_HINT_RT_LOCKABLE = (1 << 14),
|
||||
SVGA3D_SURFACE_VOLUME = (1 << 15),
|
||||
/*
|
||||
* Is this surface using a base-level pitch for it's mob backing?
|
||||
*
|
||||
* This flag is not intended to be set by guest-drivers, but is instead
|
||||
* set by the device when the surface is bound to a mob with a specified
|
||||
* pitch.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_MOB_PITCH (CONST64U(1) << 12)
|
||||
|
||||
/*
|
||||
* Required to be set on a surface to bind it to a screen target.
|
||||
*/
|
||||
SVGA3D_SURFACE_SCREENTARGET = (1 << 16),
|
||||
#define SVGA3D_SURFACE_INACTIVE (CONST64U(1) << 13)
|
||||
#define SVGA3D_SURFACE_HINT_RT_LOCKABLE (CONST64U(1) << 14)
|
||||
#define SVGA3D_SURFACE_VOLUME (CONST64U(1) << 15)
|
||||
|
||||
/*
|
||||
* Align images in the guest-backing mob to 16-bytes.
|
||||
*/
|
||||
SVGA3D_SURFACE_ALIGN16 = (1 << 17),
|
||||
/*
|
||||
* Required to be set on a surface to bind it to a screen target.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_SCREENTARGET (CONST64U(1) << 16)
|
||||
|
||||
SVGA3D_SURFACE_1D = (1 << 18),
|
||||
SVGA3D_SURFACE_ARRAY = (1 << 19),
|
||||
/*
|
||||
* Align images in the guest-backing mob to 16-bytes.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_ALIGN16 (CONST64U(1) << 17)
|
||||
|
||||
/*
|
||||
* Bind flags.
|
||||
* These are enforced for any surface defined with DefineGBSurface_v2.
|
||||
*/
|
||||
SVGA3D_SURFACE_BIND_VERTEX_BUFFER = (1 << 20),
|
||||
SVGA3D_SURFACE_BIND_INDEX_BUFFER = (1 << 21),
|
||||
SVGA3D_SURFACE_BIND_CONSTANT_BUFFER = (1 << 22),
|
||||
SVGA3D_SURFACE_BIND_SHADER_RESOURCE = (1 << 23),
|
||||
SVGA3D_SURFACE_BIND_RENDER_TARGET = (1 << 24),
|
||||
SVGA3D_SURFACE_BIND_DEPTH_STENCIL = (1 << 25),
|
||||
SVGA3D_SURFACE_BIND_STREAM_OUTPUT = (1 << 26),
|
||||
#define SVGA3D_SURFACE_1D (CONST64U(1) << 18)
|
||||
#define SVGA3D_SURFACE_ARRAY (CONST64U(1) << 19)
|
||||
|
||||
/*
|
||||
* A note on staging flags:
|
||||
*
|
||||
* The STAGING flags notes that the surface will not be used directly by the
|
||||
* drawing pipeline, i.e. that it will not be bound to any bind point.
|
||||
* Staging surfaces may be used by copy operations to move data in and out
|
||||
* of other surfaces.
|
||||
*
|
||||
* The HINT_INDIRECT_UPDATE flag suggests that the surface will receive
|
||||
* updates indirectly, i.e. the surface will not be updated directly, but
|
||||
* will receive copies from staging surfaces.
|
||||
*/
|
||||
SVGA3D_SURFACE_STAGING_UPLOAD = (1 << 27),
|
||||
SVGA3D_SURFACE_STAGING_DOWNLOAD = (1 << 28),
|
||||
SVGA3D_SURFACE_HINT_INDIRECT_UPDATE = (1 << 29),
|
||||
/*
|
||||
* Bind flags.
|
||||
* These are enforced for any surface defined with DefineGBSurface_v2.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_BIND_VERTEX_BUFFER (CONST64U(1) << 20)
|
||||
#define SVGA3D_SURFACE_BIND_INDEX_BUFFER (CONST64U(1) << 21)
|
||||
#define SVGA3D_SURFACE_BIND_CONSTANT_BUFFER (CONST64U(1) << 22)
|
||||
#define SVGA3D_SURFACE_BIND_SHADER_RESOURCE (CONST64U(1) << 23)
|
||||
#define SVGA3D_SURFACE_BIND_RENDER_TARGET (CONST64U(1) << 24)
|
||||
#define SVGA3D_SURFACE_BIND_DEPTH_STENCIL (CONST64U(1) << 25)
|
||||
#define SVGA3D_SURFACE_BIND_STREAM_OUTPUT (CONST64U(1) << 26)
|
||||
|
||||
/*
|
||||
* Setting this flag allow this surface to be used with the
|
||||
* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER command. It is only valid for
|
||||
* buffer surfaces, an no bind flags are allowed to be set on surfaces
|
||||
* with this flag.
|
||||
*/
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER = (1 << 30),
|
||||
/*
|
||||
* The STAGING flags notes that the surface will not be used directly by the
|
||||
* drawing pipeline, i.e. that it will not be bound to any bind point.
|
||||
* Staging surfaces may be used by copy operations to move data in and out
|
||||
* of other surfaces. No bind flags may be set on surfaces with this flag.
|
||||
*
|
||||
* The HINT_INDIRECT_UPDATE flag suggests that the surface will receive
|
||||
* updates indirectly, i.e. the surface will not be updated directly, but
|
||||
* will receive copies from staging surfaces.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_STAGING_UPLOAD (CONST64U(1) << 27)
|
||||
#define SVGA3D_SURFACE_STAGING_DOWNLOAD (CONST64U(1) << 28)
|
||||
#define SVGA3D_SURFACE_HINT_INDIRECT_UPDATE (CONST64U(1) << 29)
|
||||
|
||||
/*
|
||||
* Marker for the last defined bit.
|
||||
*/
|
||||
SVGA3D_SURFACE_FLAG_MAX = (1 << 31),
|
||||
} SVGA3dSurfaceFlags;
|
||||
/*
|
||||
* Setting this flag allow this surface to be used with the
|
||||
* SVGA_3D_CMD_DX_TRANSFER_FROM_BUFFER command. It is only valid for
|
||||
* buffer surfaces, and no bind flags are allowed to be set on surfaces
|
||||
* with this flag.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_TRANSFER_FROM_BUFFER (CONST64U(1) << 30)
|
||||
|
||||
/*
|
||||
* Reserved for video operations.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_RESERVED1 (CONST64U(1) << 31)
|
||||
|
||||
/*
|
||||
* Specifies that a surface is multisample, and therefore requires the full
|
||||
* mob-backing to store all the samples.
|
||||
*/
|
||||
#define SVGA3D_SURFACE_MULTISAMPLE (CONST64U(1) << 32)
|
||||
|
||||
#define SVGA3D_SURFACE_FLAG_MAX (CONST64U(1) << 33)
|
||||
|
||||
/*
|
||||
* Surface flags types:
|
||||
*
|
||||
* SVGA3dSurface1Flags: Lower 32-bits of flags.
|
||||
* SVGA3dSurface2Flags: Upper 32-bits of flags.
|
||||
* SVGA3dSurfaceAllFlags: Full 64-bits of flags.
|
||||
*/
|
||||
typedef uint32 SVGA3dSurface1Flags;
|
||||
typedef uint32 SVGA3dSurface2Flags;
|
||||
typedef uint64 SVGA3dSurfaceAllFlags;
|
||||
|
||||
#define SVGA3D_SURFACE_FLAGS1_MASK ((uint64_t)MAX_UINT32)
|
||||
#define SVGA3D_SURFACE_FLAGS2_MASK (MAX_UINT64 & ~SVGA3D_SURFACE_FLAGS1_MASK)
|
||||
|
||||
#define SVGA3D_SURFACE_HB_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_MOB_PITCH | \
|
||||
@ -392,29 +426,41 @@ typedef enum SVGA3dSurfaceFlags {
|
||||
SVGA3D_SURFACE_STAGING_UPLOAD | \
|
||||
SVGA3D_SURFACE_STAGING_DOWNLOAD | \
|
||||
SVGA3D_SURFACE_HINT_INDIRECT_UPDATE | \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | \
|
||||
SVGA3D_SURFACE_MULTISAMPLE \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_HB_PRESENT_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_1D | \
|
||||
SVGA3D_SURFACE_MULTISAMPLE \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_2D_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_CUBEMAP | \
|
||||
SVGA3D_SURFACE_MASKABLE_ANTIALIAS | \
|
||||
SVGA3D_SURFACE_AUTOGENMIPMAPS | \
|
||||
SVGA3D_SURFACE_DECODE_RENDERTARGET | \
|
||||
SVGA3D_SURFACE_VOLUME | \
|
||||
SVGA3D_SURFACE_1D | \
|
||||
SVGA3D_SURFACE_ARRAY | \
|
||||
SVGA3D_SURFACE_BIND_VERTEX_BUFFER | \
|
||||
SVGA3D_SURFACE_BIND_INDEX_BUFFER | \
|
||||
SVGA3D_SURFACE_BIND_CONSTANT_BUFFER | \
|
||||
SVGA3D_SURFACE_BIND_DEPTH_STENCIL | \
|
||||
SVGA3D_SURFACE_BIND_STREAM_OUTPUT | \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | \
|
||||
SVGA3D_SURFACE_MULTISAMPLE \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_BASICOPS_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_CUBEMAP | \
|
||||
SVGA3D_SURFACE_AUTOGENMIPMAPS | \
|
||||
SVGA3D_SURFACE_VOLUME | \
|
||||
SVGA3D_SURFACE_1D | \
|
||||
SVGA3D_SURFACE_MULTISAMPLE \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_SCREENTARGET_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_CUBEMAP | \
|
||||
SVGA3D_SURFACE_AUTOGENMIPMAPS | \
|
||||
SVGA3D_SURFACE_DECODE_RENDERTARGET | \
|
||||
SVGA3D_SURFACE_VOLUME | \
|
||||
SVGA3D_SURFACE_1D | \
|
||||
SVGA3D_SURFACE_BIND_VERTEX_BUFFER | \
|
||||
@ -426,12 +472,36 @@ typedef enum SVGA3dSurfaceFlags {
|
||||
SVGA3D_SURFACE_STAGING_UPLOAD | \
|
||||
SVGA3D_SURFACE_STAGING_DOWNLOAD | \
|
||||
SVGA3D_SURFACE_HINT_INDIRECT_UPDATE | \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER | \
|
||||
SVGA3D_SURFACE_MULTISAMPLE \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_BUFFER_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_CUBEMAP | \
|
||||
SVGA3D_SURFACE_AUTOGENMIPMAPS | \
|
||||
SVGA3D_SURFACE_VOLUME | \
|
||||
SVGA3D_SURFACE_1D | \
|
||||
SVGA3D_SURFACE_MASKABLE_ANTIALIAS | \
|
||||
SVGA3D_SURFACE_ARRAY | \
|
||||
SVGA3D_SURFACE_MULTISAMPLE | \
|
||||
SVGA3D_SURFACE_MOB_PITCH \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_MULTISAMPLE_DISALLOWED_MASK \
|
||||
( SVGA3D_SURFACE_CUBEMAP | \
|
||||
SVGA3D_SURFACE_AUTOGENMIPMAPS | \
|
||||
SVGA3D_SURFACE_VOLUME | \
|
||||
SVGA3D_SURFACE_1D | \
|
||||
SVGA3D_SURFACE_SCREENTARGET | \
|
||||
SVGA3D_SURFACE_MOB_PITCH \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_DX_ONLY_MASK \
|
||||
( SVGA3D_SURFACE_BIND_STREAM_OUTPUT | \
|
||||
SVGA3D_SURFACE_STAGING_UPLOAD | \
|
||||
SVGA3D_SURFACE_STAGING_DOWNLOAD | \
|
||||
SVGA3D_SURFACE_TRANSFER_FROM_BUFFER \
|
||||
)
|
||||
|
||||
#define SVGA3D_SURFACE_STAGING_MASK \
|
||||
( SVGA3D_SURFACE_STAGING_UPLOAD | \
|
||||
@ -487,7 +557,7 @@ typedef enum {
|
||||
|
||||
/*
|
||||
* Indicates that this format can be converted to any RGB format for which
|
||||
* SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB is specified
|
||||
* SVGA3DFORMAT_OP_MEMBEROFGROUP_ARGB is specified.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_CONVERT_TO_ARGB = 0x00002000,
|
||||
|
||||
@ -498,22 +568,22 @@ typedef enum {
|
||||
|
||||
/*
|
||||
* Indicated that this format can be read as an SRGB texture (meaning that the
|
||||
* sampler will linearize the looked up data)
|
||||
* sampler will linearize the looked up data).
|
||||
*/
|
||||
SVGA3DFORMAT_OP_SRGBREAD = 0x00008000,
|
||||
|
||||
/*
|
||||
* Indicates that this format can be used in the bumpmap instructions
|
||||
* Indicates that this format can be used in the bumpmap instructions.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_BUMPMAP = 0x00010000,
|
||||
|
||||
/*
|
||||
* Indicates that this format can be sampled by the displacement map sampler
|
||||
* Indicates that this format can be sampled by the displacement map sampler.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_DMAP = 0x00020000,
|
||||
|
||||
/*
|
||||
* Indicates that this format cannot be used with texture filtering
|
||||
* Indicates that this format cannot be used with texture filtering.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_NOFILTER = 0x00040000,
|
||||
|
||||
@ -530,18 +600,18 @@ typedef enum {
|
||||
SVGA3DFORMAT_OP_SRGBWRITE = 0x00100000,
|
||||
|
||||
/*
|
||||
* Indicates that this format cannot be used with alpha blending
|
||||
* Indicates that this format cannot be used with alpha blending.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_NOALPHABLEND = 0x00200000,
|
||||
|
||||
/*
|
||||
* Indicates that the device can auto-generated sublevels for resources
|
||||
* of this format
|
||||
* of this format.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_AUTOGENMIPMAP = 0x00400000,
|
||||
|
||||
/*
|
||||
* Indicates that this format can be used by vertex texture sampler
|
||||
* Indicates that this format can be used by vertex texture sampler.
|
||||
*/
|
||||
SVGA3DFORMAT_OP_VERTEXTEXTURE = 0x00800000,
|
||||
|
||||
@ -1501,7 +1571,6 @@ union SVGADXQueryResultUnion {
|
||||
#include "vmware_pack_end.h"
|
||||
SVGADXQueryResultUnion;
|
||||
|
||||
|
||||
typedef enum {
|
||||
SVGA3D_QUERYSTATE_PENDING = 0, /* Query is not finished yet */
|
||||
SVGA3D_QUERYSTATE_SUCCEEDED = 1, /* Completed successfully */
|
||||
@ -1533,9 +1602,9 @@ typedef
|
||||
struct {
|
||||
union {
|
||||
struct {
|
||||
uint16 function; /* SVGA3dFogFunction */
|
||||
uint8 type; /* SVGA3dFogType */
|
||||
uint8 base; /* SVGA3dFogBase */
|
||||
uint16 function; /* SVGA3dFogFunction */
|
||||
uint8 type; /* SVGA3dFogType */
|
||||
uint8 base; /* SVGA3dFogBase */
|
||||
};
|
||||
uint32 uintValue;
|
||||
};
|
||||
@ -1547,17 +1616,25 @@ SVGA3dFogMode;
|
||||
* Uniquely identify one image (a 1D/2D/3D array) from a surface. This
|
||||
* is a surface ID as well as face/mipmap indices.
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dSurfaceImageId {
|
||||
uint32 sid;
|
||||
uint32 face;
|
||||
uint32 mipmap;
|
||||
uint32 sid;
|
||||
uint32 face;
|
||||
uint32 mipmap;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dSurfaceImageId;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dSubSurfaceId {
|
||||
uint32 sid;
|
||||
uint32 subResourceId;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dSubSurfaceId;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
@ -1582,13 +1659,18 @@ typedef enum {
|
||||
SVGA_OTABLE_DX9_MAX = 5,
|
||||
|
||||
SVGA_OTABLE_DXCONTEXT = 5,
|
||||
SVGA_OTABLE_MAX = 6
|
||||
} SVGAOTableType;
|
||||
SVGA_OTABLE_DX_MAX = 6,
|
||||
|
||||
/*
|
||||
* Deprecated.
|
||||
*/
|
||||
#define SVGA_OTABLE_COUNT 4
|
||||
SVGA_OTABLE_RESERVED1 = 6,
|
||||
SVGA_OTABLE_RESERVED2 = 7,
|
||||
|
||||
/*
|
||||
* Additions to this table need to be tied to HW-version features and
|
||||
* checkpointed accordingly.
|
||||
*/
|
||||
SVGA_OTABLE_DEVEL_MAX = 8,
|
||||
SVGA_OTABLE_MAX = 8
|
||||
} SVGAOTableType;
|
||||
|
||||
typedef enum {
|
||||
SVGA_COTABLE_MIN = 0,
|
||||
@ -1605,7 +1687,7 @@ typedef enum {
|
||||
SVGA_COTABLE_DXSHADER = 10,
|
||||
SVGA_COTABLE_DX10_MAX = 11,
|
||||
SVGA_COTABLE_UAVIEW = 11,
|
||||
SVGA_COTABLE_MAX
|
||||
SVGA_COTABLE_MAX = 12,
|
||||
} SVGACOTableType;
|
||||
|
||||
/*
|
||||
@ -1626,8 +1708,37 @@ typedef enum SVGAMobFormat {
|
||||
SVGA3D_MOBFMT_PREDX_MAX = 7,
|
||||
SVGA3D_MOBFMT_EMPTY = 7,
|
||||
SVGA3D_MOBFMT_MAX,
|
||||
|
||||
/*
|
||||
* This isn't actually used by the guest, but is a mob-format used
|
||||
* internally by the SVGA device (and is therefore not binary compatible).
|
||||
*/
|
||||
SVGA3D_MOBFMT_HB,
|
||||
} SVGAMobFormat;
|
||||
|
||||
#define SVGA3D_MOB_EMPTY_BASE 1
|
||||
|
||||
/*
|
||||
* Multisample pattern types.
|
||||
*/
|
||||
|
||||
typedef enum SVGA3dMSPattern {
|
||||
SVGA3D_MS_PATTERN_NONE = 0,
|
||||
SVGA3D_MS_PATTERN_MIN = 0,
|
||||
SVGA3D_MS_PATTERN_STANDARD = 1,
|
||||
SVGA3D_MS_PATTERN_CENTER = 2,
|
||||
SVGA3D_MS_PATTERN_MAX = 3,
|
||||
} SVGA3dMSPattern;
|
||||
|
||||
/*
|
||||
* Precision settings for each sample.
|
||||
*/
|
||||
|
||||
typedef enum SVGA3dMSQualityLevel {
|
||||
SVGA3D_MS_QUALITY_NONE = 0,
|
||||
SVGA3D_MS_QUALITY_MIN = 0,
|
||||
SVGA3D_MS_QUALITY_FULL = 1,
|
||||
SVGA3D_MS_QUALITY_MAX = 2,
|
||||
} SVGA3dMSQualityLevel;
|
||||
|
||||
#endif /* _SVGA3D_TYPES_H_ */
|
||||
|
@ -63,16 +63,26 @@ typedef uint32 SVGAMobId;
|
||||
#define SVGA_MAX_BITS_PER_PIXEL 32
|
||||
#define SVGA_MAX_DEPTH 24
|
||||
#define SVGA_MAX_DISPLAYS 10
|
||||
#define SVGA_MAX_SCREEN_SIZE 8192
|
||||
#define SVGA_SCREEN_ROOT_LIMIT (SVGA_MAX_SCREEN_SIZE * SVGA_MAX_DISPLAYS)
|
||||
|
||||
|
||||
/*
|
||||
* Legal values for the SVGA_REG_CURSOR_ON register in old-fashioned
|
||||
* cursor bypass mode. This is still supported, but no new guest
|
||||
* drivers should use it.
|
||||
*/
|
||||
#define SVGA_CURSOR_ON_HIDE 0x0 /* Must be 0 to maintain backward compatibility */
|
||||
#define SVGA_CURSOR_ON_SHOW 0x1 /* Must be 1 to maintain backward compatibility */
|
||||
#define SVGA_CURSOR_ON_REMOVE_FROM_FB 0x2 /* Remove the cursor from the framebuffer because we need to see what's under it */
|
||||
#define SVGA_CURSOR_ON_RESTORE_TO_FB 0x3 /* Put the cursor back in the framebuffer so the user can see it */
|
||||
#define SVGA_CURSOR_ON_HIDE 0x0
|
||||
#define SVGA_CURSOR_ON_SHOW 0x1
|
||||
|
||||
/*
|
||||
* Remove the cursor from the framebuffer
|
||||
* because we need to see what's under it
|
||||
*/
|
||||
#define SVGA_CURSOR_ON_REMOVE_FROM_FB 0x2
|
||||
|
||||
/* Put the cursor back in the framebuffer so the user can see it */
|
||||
#define SVGA_CURSOR_ON_RESTORE_TO_FB 0x3
|
||||
|
||||
/*
|
||||
* The maximum framebuffer size that can traced for guests unless the
|
||||
@ -101,7 +111,10 @@ typedef uint32 SVGAMobId;
|
||||
#define SVGA_VERSION_0 0
|
||||
#define SVGA_ID_0 SVGA_MAKE_ID(SVGA_VERSION_0)
|
||||
|
||||
/* "Invalid" value for all SVGA IDs. (Version ID, screen object ID, surface ID...) */
|
||||
/*
|
||||
* "Invalid" value for all SVGA IDs.
|
||||
* (Version ID, screen object ID, surface ID...)
|
||||
*/
|
||||
#define SVGA_ID_INVALID 0xFFFFFFFF
|
||||
|
||||
/* Port offsets, relative to BAR0 */
|
||||
@ -154,7 +167,7 @@ enum {
|
||||
SVGA_REG_CONFIG_DONE = 20, /* Set when memory area configured */
|
||||
SVGA_REG_SYNC = 21, /* See "FIFO Synchronization Registers" */
|
||||
SVGA_REG_BUSY = 22, /* See "FIFO Synchronization Registers" */
|
||||
SVGA_REG_GUEST_ID = 23, /* Set guest OS identifier */
|
||||
SVGA_REG_GUEST_ID = 23, /* (Deprecated) */
|
||||
SVGA_REG_CURSOR_ID = 24, /* (Deprecated) */
|
||||
SVGA_REG_CURSOR_X = 25, /* (Deprecated) */
|
||||
SVGA_REG_CURSOR_Y = 26, /* (Deprecated) */
|
||||
@ -186,7 +199,14 @@ enum {
|
||||
SVGA_REG_MEMORY_SIZE = 47, /* Total dedicated device memory excluding FIFO */
|
||||
SVGA_REG_COMMAND_LOW = 48, /* Lower 32 bits and submits commands */
|
||||
SVGA_REG_COMMAND_HIGH = 49, /* Upper 32 bits of command buffer PA */
|
||||
SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM = 50, /* Max primary memory */
|
||||
|
||||
/*
|
||||
* Max primary memory.
|
||||
* See SVGA_CAP_NO_BB_RESTRICTION.
|
||||
*/
|
||||
SVGA_REG_MAX_PRIMARY_MEM = 50,
|
||||
SVGA_REG_MAX_PRIMARY_BOUNDING_BOX_MEM = 50,
|
||||
|
||||
SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB = 51, /* Sugested limit on mob mem */
|
||||
SVGA_REG_DEV_CAP = 52, /* Write dev cap index, read value */
|
||||
SVGA_REG_CMD_PREPEND_LOW = 53,
|
||||
@ -194,7 +214,10 @@ enum {
|
||||
SVGA_REG_SCREENTARGET_MAX_WIDTH = 55,
|
||||
SVGA_REG_SCREENTARGET_MAX_HEIGHT = 56,
|
||||
SVGA_REG_MOB_MAX_SIZE = 57,
|
||||
SVGA_REG_TOP = 58, /* Must be 1 more than the last register */
|
||||
SVGA_REG_BLANK_SCREEN_TARGETS = 58,
|
||||
SVGA_REG_CAP2 = 59,
|
||||
SVGA_REG_DEVEL_CAP = 60,
|
||||
SVGA_REG_TOP = 61, /* Must be 1 more than the last register */
|
||||
|
||||
SVGA_PALETTE_BASE = 1024, /* Base of SVGA color map */
|
||||
/* Next 768 (== 256*3) registers exist for colormap */
|
||||
@ -392,6 +415,7 @@ typedef enum {
|
||||
SVGA_CB_CONTEXT_0 = 0x0,
|
||||
SVGA_CB_CONTEXT_1 = 0x1, /* Supported with SVGA_CAP_HP_CMD_QUEUE */
|
||||
SVGA_CB_CONTEXT_MAX = 0x2,
|
||||
SVGA_CB_CONTEXT_HP_MAX = 0x2,
|
||||
} SVGACBContext;
|
||||
|
||||
|
||||
@ -448,6 +472,18 @@ typedef enum {
|
||||
* due to an error. No IRQ is raised.
|
||||
*/
|
||||
SVGA_CB_STATUS_SUBMISSION_ERROR = 6,
|
||||
|
||||
/*
|
||||
* Written by the host when the host finished a
|
||||
* SVGA_DC_CMD_ASYNC_STOP_QUEUE request for this command buffer
|
||||
* queue. The offset of the first byte not processed is stored in
|
||||
* the errorOffset field of the command buffer header. All guest
|
||||
* visible side effects of commands till that point are guaranteed
|
||||
* to be finished before this is written. The
|
||||
* SVGA_IRQFLAG_COMMAND_BUFFER IRQ is raised as long as the
|
||||
* SVGA_CB_FLAG_NO_IRQ is not set.
|
||||
*/
|
||||
SVGA_CB_STATUS_PARTIAL_COMPLETE = 7,
|
||||
} SVGACBStatus;
|
||||
|
||||
typedef enum {
|
||||
@ -460,8 +496,8 @@ typedef enum {
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
volatile SVGACBStatus status;
|
||||
volatile uint32 errorOffset;
|
||||
volatile SVGACBStatus status; /* Modified by device. */
|
||||
volatile uint32 errorOffset; /* Modified by device. */
|
||||
uint64 id;
|
||||
SVGACBFlags flags;
|
||||
uint32 length;
|
||||
@ -472,7 +508,9 @@ struct {
|
||||
uint32 mobOffset;
|
||||
} mob;
|
||||
} ptr;
|
||||
uint32 offset; /* Valid if CMD_BUFFERS_2 cap set, must be zero otherwise */
|
||||
uint32 offset; /* Valid if CMD_BUFFERS_2 cap set, must be zero otherwise,
|
||||
* modified by device.
|
||||
*/
|
||||
uint32 dxContext; /* Valid if DX_CONTEXT flag set, must be zero otherwise */
|
||||
uint32 mustBeZero[6];
|
||||
}
|
||||
@ -483,20 +521,26 @@ typedef enum {
|
||||
SVGA_DC_CMD_NOP = 0,
|
||||
SVGA_DC_CMD_START_STOP_CONTEXT = 1,
|
||||
SVGA_DC_CMD_PREEMPT = 2,
|
||||
SVGA_DC_CMD_MAX = 3,
|
||||
SVGA_DC_CMD_FORCE_UINT = MAX_UINT32,
|
||||
SVGA_DC_CMD_START_QUEUE = 3, /* Requires SVGA_CAP_HP_CMD_QUEUE */
|
||||
SVGA_DC_CMD_ASYNC_STOP_QUEUE = 4, /* Requires SVGA_CAP_HP_CMD_QUEUE */
|
||||
SVGA_DC_CMD_EMPTY_CONTEXT_QUEUE = 5, /* Requires SVGA_CAP_HP_CMD_QUEUE */
|
||||
SVGA_DC_CMD_MAX = 6,
|
||||
} SVGADeviceContextCmdId;
|
||||
|
||||
typedef struct {
|
||||
/*
|
||||
* Starts or stops both SVGA_CB_CONTEXT_0 and SVGA_CB_CONTEXT_1.
|
||||
*/
|
||||
|
||||
typedef struct SVGADCCmdStartStop {
|
||||
uint32 enable;
|
||||
SVGACBContext context;
|
||||
SVGACBContext context; /* Must be zero */
|
||||
} SVGADCCmdStartStop;
|
||||
|
||||
/*
|
||||
* SVGADCCmdPreempt --
|
||||
*
|
||||
* This command allows the guest to request that all command buffers
|
||||
* on the specified context be preempted that can be. After execution
|
||||
* on SVGA_CB_CONTEXT_0 be preempted that can be. After execution
|
||||
* of this command all command buffers that were preempted will
|
||||
* already have SVGA_CB_STATUS_PREEMPTED written into the status
|
||||
* field. The device might still be processing a command buffer,
|
||||
@ -506,11 +550,68 @@ typedef struct {
|
||||
* command buffer header set to zero.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
SVGACBContext context;
|
||||
typedef struct SVGADCCmdPreempt {
|
||||
SVGACBContext context; /* Must be zero */
|
||||
uint32 ignoreIDZero;
|
||||
} SVGADCCmdPreempt;
|
||||
|
||||
/*
|
||||
* Starts the requested command buffer processing queue. Valid only
|
||||
* if the SVGA_CAP_HP_CMD_QUEUE cap is set.
|
||||
*
|
||||
* For a command queue to be considered runnable it must be enabled
|
||||
* and any corresponding higher priority queues must also be enabled.
|
||||
* For example in order for command buffers to be processed on
|
||||
* SVGA_CB_CONTEXT_0 both SVGA_CB_CONTEXT_0 and SVGA_CB_CONTEXT_1 must
|
||||
* be enabled. But for commands to be runnable on SVGA_CB_CONTEXT_1
|
||||
* only that queue must be enabled.
|
||||
*/
|
||||
|
||||
typedef struct SVGADCCmdStartQueue {
|
||||
SVGACBContext context;
|
||||
} SVGADCCmdStartQueue;
|
||||
|
||||
/*
|
||||
* Requests the SVGA device to stop processing the requested command
|
||||
* buffer queue as soon as possible. The guest knows the stop has
|
||||
* completed when one of the following happens.
|
||||
*
|
||||
* 1) A command buffer status of SVGA_CB_STATUS_PARTIAL_COMPLETE is returned
|
||||
* 2) A command buffer error is encountered with would stop the queue
|
||||
* regardless of the async stop request.
|
||||
* 3) All command buffers that have been submitted complete successfully.
|
||||
* 4) The stop completes synchronously if no command buffers are
|
||||
* active on the queue when it is issued.
|
||||
*
|
||||
* If the command queue is not in a runnable state there is no
|
||||
* guarentee this async stop will finish. For instance if the high
|
||||
* priority queue is not enabled and a stop is requested on the low
|
||||
* priority queue, the high priority queue must be reenabled to
|
||||
* guarantee that the async stop will finish.
|
||||
*
|
||||
* This command along with SVGA_DC_CMD_EMPTY_CONTEXT_QUEUE can be used
|
||||
* to implement mid command buffer preemption.
|
||||
*
|
||||
* Valid only if the SVGA_CAP_HP_CMD_QUEUE cap is set.
|
||||
*/
|
||||
|
||||
typedef struct SVGADCCmdAsyncStopQueue {
|
||||
SVGACBContext context;
|
||||
} SVGADCCmdAsyncStopQueue;
|
||||
|
||||
/*
|
||||
* Requests the SVGA device to throw away any full command buffers on
|
||||
* the requested command queue that have not been started. For a
|
||||
* driver to know which command buffers were thrown away a driver
|
||||
* should only issue this command when the queue is stopped, for
|
||||
* whatever reason.
|
||||
*/
|
||||
|
||||
typedef struct SVGADCCmdEmptyQueue {
|
||||
SVGACBContext context;
|
||||
} SVGADCCmdEmptyQueue;
|
||||
|
||||
|
||||
/*
|
||||
* SVGAGMRImageFormat --
|
||||
*
|
||||
@ -536,7 +637,7 @@ typedef struct SVGAGMRImageFormat {
|
||||
struct {
|
||||
uint32 bitsPerPixel : 8;
|
||||
uint32 colorDepth : 8;
|
||||
uint32 reserved : 16; /* Must be zero */
|
||||
uint32 reserved : 16; /* Must be zero */
|
||||
};
|
||||
|
||||
uint32 value;
|
||||
@ -700,6 +801,8 @@ SVGASignedPoint;
|
||||
* large enough to express any possible topology without holes between
|
||||
* monitors.)
|
||||
*
|
||||
* SVGA_CAP_CAP2_REGISTER --
|
||||
* If this cap is present, the SVGA_REG_CAP2 register is supported.
|
||||
*/
|
||||
|
||||
#define SVGA_CAP_NONE 0x00000000
|
||||
@ -726,8 +829,29 @@ SVGASignedPoint;
|
||||
#define SVGA_CAP_DX 0x10000000
|
||||
#define SVGA_CAP_HP_CMD_QUEUE 0x20000000
|
||||
#define SVGA_CAP_NO_BB_RESTRICTION 0x40000000
|
||||
#define SVGA_CAP_CAP2_REGISTER 0x80000000
|
||||
|
||||
#define SVGA_CAP_CMD_RESERVED 0x80000000
|
||||
/*
|
||||
* The SVGA_REG_CAP2 register is an additional set of SVGA capability bits.
|
||||
*
|
||||
* SVGA_CAP2_GROW_OTABLE --
|
||||
* Allow the GrowOTable/DXGrowCOTable commands.
|
||||
*
|
||||
* SVGA_CAP2_INTRA_SURFACE_COPY --
|
||||
* Allow the IntraSurfaceCopy command.
|
||||
*
|
||||
* SVGA_CAP2_DX2 --
|
||||
* Allow the DefineGBSurface_v3, WholeSurfaceCopy.
|
||||
*
|
||||
* SVGA_CAP2_RESERVED --
|
||||
* Reserve the last bit for extending the SVGA capabilities to some
|
||||
* future mechanisms.
|
||||
*/
|
||||
#define SVGA_CAP2_NONE 0x00000000
|
||||
#define SVGA_CAP2_GROW_OTABLE 0x00000001
|
||||
#define SVGA_CAP2_INTRA_SURFACE_COPY 0x00000002
|
||||
#define SVGA_CAP2_DX2 0x00000004
|
||||
#define SVGA_CAP2_RESERVED 0x80000000
|
||||
|
||||
|
||||
/*
|
||||
@ -749,7 +873,8 @@ typedef enum {
|
||||
SVGABackdoorCapDeviceCaps = 0,
|
||||
SVGABackdoorCapFifoCaps = 1,
|
||||
SVGABackdoorCap3dHWVersion = 2,
|
||||
SVGABackdoorCapMax = 3,
|
||||
SVGABackdoorCapDeviceCaps2 = 3,
|
||||
SVGABackdoorCapMax = 4,
|
||||
} SVGABackdoorCapType;
|
||||
|
||||
|
||||
@ -1941,16 +2066,6 @@ SVGAFifoCmdRemapGMR2;
|
||||
|
||||
#define SVGA_VRAM_SIZE_W2K (64 * 1024 * 1024) /* 64 MB */
|
||||
|
||||
/*
|
||||
* To simplify autoDetect display configuration, support a minimum of
|
||||
* two 1920x1200 monitors, 32bpp, side-by-side, optionally rotated:
|
||||
* numDisplays = 2
|
||||
* maxWidth = numDisplay * 1920 = 3840
|
||||
* maxHeight = rotated width of single monitor = 1920
|
||||
* vramSize = maxWidth * maxHeight * 4 = 29491200
|
||||
*/
|
||||
#define SVGA_VRAM_SIZE_AUTODETECT (32 * 1024 * 1024)
|
||||
|
||||
#if defined(VMX86_SERVER)
|
||||
#define SVGA_VRAM_SIZE (4 * 1024 * 1024)
|
||||
#define SVGA_VRAM_SIZE_3D (64 * 1024 * 1024)
|
||||
|
@ -40,7 +40,10 @@ typedef uint64 PPN64;
|
||||
|
||||
typedef bool Bool;
|
||||
|
||||
#define MAX_UINT64 U64_MAX
|
||||
#define MAX_UINT32 U32_MAX
|
||||
#define MAX_UINT16 U16_MAX
|
||||
|
||||
#define CONST64U(x) x##ULL
|
||||
|
||||
#endif
|
||||
|
@ -884,7 +884,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
|
||||
|
||||
if (dev_priv->has_mob) {
|
||||
spin_lock(&dev_priv->cap_lock);
|
||||
vmw_write(dev_priv, SVGA_REG_DEV_CAP, SVGA3D_DEVCAP_DX);
|
||||
vmw_write(dev_priv, SVGA_REG_DEV_CAP, SVGA3D_DEVCAP_DXCONTEXT);
|
||||
dev_priv->has_dx = !!vmw_read(dev_priv, SVGA_REG_DEV_CAP);
|
||||
spin_unlock(&dev_priv->cap_lock);
|
||||
}
|
||||
|
@ -3230,9 +3230,9 @@ static const struct vmw_cmd_entry vmw_cmd_entries[SVGA_3D_CMD_MAX] = {
|
||||
false, false, false),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_SCREEN_DMA, &vmw_cmd_invalid,
|
||||
false, false, false),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_SET_UNITY_SURFACE_COOKIE, &vmw_cmd_invalid,
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_DEAD1, &vmw_cmd_invalid,
|
||||
false, false, false),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_OPEN_CONTEXT_SURFACE, &vmw_cmd_invalid,
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_DEAD2, &vmw_cmd_invalid,
|
||||
false, false, false),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_BITBLT, &vmw_cmd_invalid,
|
||||
false, false, false),
|
||||
|
@ -122,15 +122,12 @@ int vmw_getparam_ioctl(struct drm_device *dev, void *data,
|
||||
|
||||
static u32 vmw_mask_multisample(unsigned int cap, u32 fmt_value)
|
||||
{
|
||||
/* If the header is updated, update the format test as well! */
|
||||
BUILD_BUG_ON(SVGA3D_DEVCAP_DXFMT_BC5_UNORM + 1 != SVGA3D_DEVCAP_MAX);
|
||||
|
||||
if (cap >= SVGA3D_DEVCAP_DXFMT_X8R8G8B8 &&
|
||||
cap <= SVGA3D_DEVCAP_DXFMT_BC5_UNORM)
|
||||
fmt_value &= ~(SVGADX_DXFMT_MULTISAMPLE_2 |
|
||||
SVGADX_DXFMT_MULTISAMPLE_4 |
|
||||
SVGADX_DXFMT_MULTISAMPLE_8);
|
||||
else if (cap == SVGA3D_DEVCAP_MULTISAMPLE_MASKABLESAMPLES)
|
||||
/*
|
||||
* A version of user-space exists which use MULTISAMPLE_MASKABLESAMPLES
|
||||
* to check the sample count supported by virtual device. Since there
|
||||
* never was support for multisample count for backing MOB return 0.
|
||||
*/
|
||||
if (cap == SVGA3D_DEVCAP_MULTISAMPLE_MASKABLESAMPLES)
|
||||
return 0;
|
||||
|
||||
return fmt_value;
|
||||
|
Loading…
Reference in New Issue
Block a user