Commit dc75e733 authored by Deepak Rawat's avatar Deepak Rawat Committed by Thomas Hellstrom

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: default avatarDeepak Rawat <drawat@vmware.com>
Reviewed-by: default avatarSinclair Yeh <syeh@vmware.com>
Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
parent 812a954b
...@@ -229,9 +229,9 @@ typedef enum { ...@@ -229,9 +229,9 @@ typedef enum {
SVGA3D_DEVCAP_DEAD2 = 94, 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? * What is the maximum size of a texture array?
...@@ -241,21 +241,47 @@ typedef enum { ...@@ -241,21 +241,47 @@ typedef enum {
SVGA3D_DEVCAP_MAX_TEXTURE_ARRAY_SIZE = 96, SVGA3D_DEVCAP_MAX_TEXTURE_ARRAY_SIZE = 96,
/* /*
* What is the maximum number of vertex buffers that can * What is the maximum number of vertex buffers or vertex input registers
* be used in the DXContext inputAssembly? * 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, SVGA3D_DEVCAP_DX_MAX_VERTEXBUFFERS = 97,
/* /*
* What is the maximum number of constant buffers * What is the maximum number of constant buffers that can be expected to
* that can be expected to work correctly with a * work correctly with a DX context?
* 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, SVGA3D_DEVCAP_DX_MAX_CONSTANT_BUFFERS = 98,
/* /*
* Does the device support provoking vertex control? * 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, SVGA3D_DEVCAP_DX_PROVOKING_VERTEX = 99,
...@@ -281,7 +307,7 @@ typedef enum { ...@@ -281,7 +307,7 @@ typedef enum {
SVGA3D_DEVCAP_DXFMT_BUMPU8V8 = 119, SVGA3D_DEVCAP_DXFMT_BUMPU8V8 = 119,
SVGA3D_DEVCAP_DXFMT_BUMPL6V5U5 = 120, SVGA3D_DEVCAP_DXFMT_BUMPL6V5U5 = 120,
SVGA3D_DEVCAP_DXFMT_BUMPX8L8V8U8 = 121, 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_S10E5 = 123,
SVGA3D_DEVCAP_DXFMT_ARGB_S23E8 = 124, SVGA3D_DEVCAP_DXFMT_ARGB_S23E8 = 124,
SVGA3D_DEVCAP_DXFMT_A2R10G10B10 = 125, SVGA3D_DEVCAP_DXFMT_A2R10G10B10 = 125,
...@@ -320,8 +346,8 @@ typedef enum { ...@@ -320,8 +346,8 @@ typedef enum {
SVGA3D_DEVCAP_DXFMT_R32G32_SINT = 158, SVGA3D_DEVCAP_DXFMT_R32G32_SINT = 158,
SVGA3D_DEVCAP_DXFMT_R32G8X24_TYPELESS = 159, SVGA3D_DEVCAP_DXFMT_R32G8X24_TYPELESS = 159,
SVGA3D_DEVCAP_DXFMT_D32_FLOAT_S8X24_UINT = 160, SVGA3D_DEVCAP_DXFMT_D32_FLOAT_S8X24_UINT = 160,
SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24_TYPELESS = 161, SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24 = 161,
SVGA3D_DEVCAP_DXFMT_X32_TYPELESS_G8X24_UINT = 162, SVGA3D_DEVCAP_DXFMT_X32_G8X24_UINT = 162,
SVGA3D_DEVCAP_DXFMT_R10G10B10A2_TYPELESS = 163, SVGA3D_DEVCAP_DXFMT_R10G10B10A2_TYPELESS = 163,
SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT = 164, SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT = 164,
SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT = 165, SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT = 165,
...@@ -339,8 +365,8 @@ typedef enum { ...@@ -339,8 +365,8 @@ typedef enum {
SVGA3D_DEVCAP_DXFMT_R32_SINT = 177, SVGA3D_DEVCAP_DXFMT_R32_SINT = 177,
SVGA3D_DEVCAP_DXFMT_R24G8_TYPELESS = 178, SVGA3D_DEVCAP_DXFMT_R24G8_TYPELESS = 178,
SVGA3D_DEVCAP_DXFMT_D24_UNORM_S8_UINT = 179, SVGA3D_DEVCAP_DXFMT_D24_UNORM_S8_UINT = 179,
SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8_TYPELESS = 180, SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8 = 180,
SVGA3D_DEVCAP_DXFMT_X24_TYPELESS_G8_UINT = 181, SVGA3D_DEVCAP_DXFMT_X24_G8_UINT = 181,
SVGA3D_DEVCAP_DXFMT_R8G8_TYPELESS = 182, SVGA3D_DEVCAP_DXFMT_R8G8_TYPELESS = 182,
SVGA3D_DEVCAP_DXFMT_R8G8_UNORM = 183, SVGA3D_DEVCAP_DXFMT_R8G8_UNORM = 183,
SVGA3D_DEVCAP_DXFMT_R8G8_UINT = 184, SVGA3D_DEVCAP_DXFMT_R8G8_UINT = 184,
...@@ -404,6 +430,17 @@ typedef enum { ...@@ -404,6 +430,17 @@ typedef enum {
SVGA3D_DEVCAP_DXFMT_BC4_UNORM = 242, SVGA3D_DEVCAP_DXFMT_BC4_UNORM = 242,
SVGA3D_DEVCAP_DXFMT_BC5_UNORM = 243, 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. */ SVGA3D_DEVCAP_MAX /* This must be the last index. */
} SVGA3dDevCapIndex; } SVGA3dDevCapIndex;
...@@ -419,9 +456,7 @@ typedef enum { ...@@ -419,9 +456,7 @@ typedef enum {
* MIPS: Does the format support mip levels? * MIPS: Does the format support mip levels?
* ARRAY: Does the format support texture arrays? * ARRAY: Does the format support texture arrays?
* VOLUME: Does the format support having volume? * VOLUME: Does the format support having volume?
* MULTISAMPLE_2: Does the format support 2x multisample? * MULTISAMPLE: Does the format support multisample?
* MULTISAMPLE_4: Does the format support 4x multisample?
* MULTISAMPLE_8: Does the format support 8x multisample?
*/ */
#define SVGA3D_DXFMT_SUPPORTED (1 << 0) #define SVGA3D_DXFMT_SUPPORTED (1 << 0)
#define SVGA3D_DXFMT_SHADER_SAMPLE (1 << 1) #define SVGA3D_DXFMT_SHADER_SAMPLE (1 << 1)
...@@ -432,20 +467,8 @@ typedef enum { ...@@ -432,20 +467,8 @@ typedef enum {
#define SVGA3D_DXFMT_ARRAY (1 << 6) #define SVGA3D_DXFMT_ARRAY (1 << 6)
#define SVGA3D_DXFMT_VOLUME (1 << 7) #define SVGA3D_DXFMT_VOLUME (1 << 7)
#define SVGA3D_DXFMT_DX_VERTEX_BUFFER (1 << 8) #define SVGA3D_DXFMT_DX_VERTEX_BUFFER (1 << 8)
#define SVGADX_DXFMT_MULTISAMPLE_2 (1 << 9) #define SVGA3D_DXFMT_MULTISAMPLE (1 << 9)
#define SVGADX_DXFMT_MULTISAMPLE_4 (1 << 10) #define SVGA3D_DXFMT_MAX (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 )
typedef union { typedef union {
Bool b; Bool b;
......
...@@ -62,7 +62,9 @@ ...@@ -62,7 +62,9 @@
* Maximum size in dwords of shader text the SVGA device will allow. * Maximum size in dwords of shader text the SVGA device will allow.
* Currently 8 MB. * 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 #define SVGA3D_MAX_CLIP_PLANES 6
......
...@@ -40,7 +40,10 @@ typedef uint64 PPN64; ...@@ -40,7 +40,10 @@ typedef uint64 PPN64;
typedef bool Bool; typedef bool Bool;
#define MAX_UINT64 U64_MAX
#define MAX_UINT32 U32_MAX #define MAX_UINT32 U32_MAX
#define MAX_UINT16 U16_MAX #define MAX_UINT16 U16_MAX
#define CONST64U(x) x##ULL
#endif #endif
...@@ -884,7 +884,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset) ...@@ -884,7 +884,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
if (dev_priv->has_mob) { if (dev_priv->has_mob) {
spin_lock(&dev_priv->cap_lock); 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); dev_priv->has_dx = !!vmw_read(dev_priv, SVGA_REG_DEV_CAP);
spin_unlock(&dev_priv->cap_lock); spin_unlock(&dev_priv->cap_lock);
} }
......
...@@ -3230,9 +3230,9 @@ static const struct vmw_cmd_entry vmw_cmd_entries[SVGA_3D_CMD_MAX] = { ...@@ -3230,9 +3230,9 @@ static const struct vmw_cmd_entry vmw_cmd_entries[SVGA_3D_CMD_MAX] = {
false, false, false), false, false, false),
VMW_CMD_DEF(SVGA_3D_CMD_SCREEN_DMA, &vmw_cmd_invalid, VMW_CMD_DEF(SVGA_3D_CMD_SCREEN_DMA, &vmw_cmd_invalid,
false, false, false), 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), 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), false, false, false),
VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_BITBLT, &vmw_cmd_invalid, VMW_CMD_DEF(SVGA_3D_CMD_LOGICOPS_BITBLT, &vmw_cmd_invalid,
false, false, false), false, false, false),
......
...@@ -122,15 +122,12 @@ int vmw_getparam_ioctl(struct drm_device *dev, void *data, ...@@ -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) 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); * A version of user-space exists which use MULTISAMPLE_MASKABLESAMPLES
* to check the sample count supported by virtual device. Since there
if (cap >= SVGA3D_DEVCAP_DXFMT_X8R8G8B8 && * never was support for multisample count for backing MOB return 0.
cap <= SVGA3D_DEVCAP_DXFMT_BC5_UNORM) */
fmt_value &= ~(SVGADX_DXFMT_MULTISAMPLE_2 | if (cap == SVGA3D_DEVCAP_MULTISAMPLE_MASKABLESAMPLES)
SVGADX_DXFMT_MULTISAMPLE_4 |
SVGADX_DXFMT_MULTISAMPLE_8);
else if (cap == SVGA3D_DEVCAP_MULTISAMPLE_MASKABLESAMPLES)
return 0; return 0;
return fmt_value; return fmt_value;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment