mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-02 02:26:52 +07:00
drm/vmwgfx: Update device includes for DX device functionality
Add DX includes and move all device includes to a separate directory. Co-authored with Thomas Hellstrom, Charmaine Lee and above all, the VMware device team. Signed-off-by: Sinclair Yeh <syeh@vmware.com> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Charmaine Lee <charmainel@vmware.com>
This commit is contained in:
parent
5101020c78
commit
8ce75f8ab9
3
drivers/gpu/drm/vmwgfx/device_include/includeCheck.h
Normal file
3
drivers/gpu/drm/vmwgfx/device_include/includeCheck.h
Normal file
@ -0,0 +1,3 @@
|
||||
/*
|
||||
* Intentionally empty file.
|
||||
*/
|
110
drivers/gpu/drm/vmwgfx/device_include/svga3d_caps.h
Normal file
110
drivers/gpu/drm/vmwgfx/device_include/svga3d_caps.h
Normal file
@ -0,0 +1,110 @@
|
||||
/**********************************************************
|
||||
* Copyright 2007-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_caps.h --
|
||||
*
|
||||
* Definitions for SVGA3D hardware capabilities. Capabilities
|
||||
* are used to query for optional rendering features during
|
||||
* driver initialization. The capability data is stored as very
|
||||
* basic key/value dictionary within the "FIFO register" memory
|
||||
* area at the beginning of BAR2.
|
||||
*
|
||||
* Note that these definitions are only for 3D capabilities.
|
||||
* The SVGA device also has "device capabilities" and "FIFO
|
||||
* capabilities", which are non-3D-specific and are stored as
|
||||
* bitfields rather than key/value pairs.
|
||||
*/
|
||||
|
||||
#ifndef _SVGA3D_CAPS_H_
|
||||
#define _SVGA3D_CAPS_H_
|
||||
|
||||
#define INCLUDE_ALLOW_MODULE
|
||||
#define INCLUDE_ALLOW_USERLEVEL
|
||||
|
||||
#include "includeCheck.h"
|
||||
|
||||
#include "svga_reg.h"
|
||||
|
||||
#define SVGA_FIFO_3D_CAPS_SIZE (SVGA_FIFO_3D_CAPS_LAST - \
|
||||
SVGA_FIFO_3D_CAPS + 1)
|
||||
|
||||
|
||||
/*
|
||||
* SVGA3dCapsRecordType
|
||||
*
|
||||
* Record types that can be found in the caps block.
|
||||
* Related record types are grouped together numerically so that
|
||||
* SVGA3dCaps_FindRecord() can be applied on a range of record
|
||||
* types.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
SVGA3DCAPS_RECORD_UNKNOWN = 0,
|
||||
SVGA3DCAPS_RECORD_DEVCAPS_MIN = 0x100,
|
||||
SVGA3DCAPS_RECORD_DEVCAPS = 0x100,
|
||||
SVGA3DCAPS_RECORD_DEVCAPS_MAX = 0x1ff,
|
||||
} SVGA3dCapsRecordType;
|
||||
|
||||
|
||||
/*
|
||||
* SVGA3dCapsRecordHeader
|
||||
*
|
||||
* Header field leading each caps block record. Contains the offset (in
|
||||
* register words, NOT bytes) to the next caps block record (or the end
|
||||
* of caps block records which will be a zero word) and the record type
|
||||
* as defined above.
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCapsRecordHeader {
|
||||
uint32 length;
|
||||
SVGA3dCapsRecordType type;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCapsRecordHeader;
|
||||
|
||||
|
||||
/*
|
||||
* SVGA3dCapsRecord
|
||||
*
|
||||
* Caps block record; "data" is a placeholder for the actual data structure
|
||||
* contained within the record;
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGA3dCapsRecord {
|
||||
SVGA3dCapsRecordHeader header;
|
||||
uint32 data[1];
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGA3dCapsRecord;
|
||||
|
||||
|
||||
typedef uint32 SVGA3dCapPair[2];
|
||||
|
||||
#endif
|
2071
drivers/gpu/drm/vmwgfx/device_include/svga3d_cmd.h
Normal file
2071
drivers/gpu/drm/vmwgfx/device_include/svga3d_cmd.h
Normal file
File diff suppressed because it is too large
Load Diff
457
drivers/gpu/drm/vmwgfx/device_include/svga3d_devcaps.h
Normal file
457
drivers/gpu/drm/vmwgfx/device_include/svga3d_devcaps.h
Normal file
@ -0,0 +1,457 @@
|
||||
/**********************************************************
|
||||
* Copyright 1998-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_devcaps.h --
|
||||
*
|
||||
* SVGA 3d caps definitions
|
||||
*/
|
||||
|
||||
#ifndef _SVGA3D_DEVCAPS_H_
|
||||
#define _SVGA3D_DEVCAPS_H_
|
||||
|
||||
#define INCLUDE_ALLOW_MODULE
|
||||
#define INCLUDE_ALLOW_USERLEVEL
|
||||
#define INCLUDE_ALLOW_VMCORE
|
||||
|
||||
#include "includeCheck.h"
|
||||
|
||||
/*
|
||||
* 3D Hardware Version
|
||||
*
|
||||
* The hardware version is stored in the SVGA_FIFO_3D_HWVERSION fifo
|
||||
* register. Is set by the host and read by the guest. This lets
|
||||
* us make new guest drivers which are backwards-compatible with old
|
||||
* SVGA hardware revisions. It does not let us support old guest
|
||||
* drivers. Good enough for now.
|
||||
*
|
||||
*/
|
||||
|
||||
#define SVGA3D_MAKE_HWVERSION(major, minor) (((major) << 16) | ((minor) & 0xFF))
|
||||
#define SVGA3D_MAJOR_HWVERSION(version) ((version) >> 16)
|
||||
#define SVGA3D_MINOR_HWVERSION(version) ((version) & 0xFF)
|
||||
|
||||
typedef enum {
|
||||
SVGA3D_HWVERSION_WS5_RC1 = SVGA3D_MAKE_HWVERSION(0, 1),
|
||||
SVGA3D_HWVERSION_WS5_RC2 = SVGA3D_MAKE_HWVERSION(0, 2),
|
||||
SVGA3D_HWVERSION_WS51_RC1 = SVGA3D_MAKE_HWVERSION(0, 3),
|
||||
SVGA3D_HWVERSION_WS6_B1 = SVGA3D_MAKE_HWVERSION(1, 1),
|
||||
SVGA3D_HWVERSION_FUSION_11 = SVGA3D_MAKE_HWVERSION(1, 4),
|
||||
SVGA3D_HWVERSION_WS65_B1 = SVGA3D_MAKE_HWVERSION(2, 0),
|
||||
SVGA3D_HWVERSION_WS8_B1 = SVGA3D_MAKE_HWVERSION(2, 1),
|
||||
SVGA3D_HWVERSION_CURRENT = SVGA3D_HWVERSION_WS8_B1,
|
||||
} SVGA3dHardwareVersion;
|
||||
|
||||
/*
|
||||
* DevCap indexes.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
SVGA3D_DEVCAP_INVALID = ((uint32)-1),
|
||||
SVGA3D_DEVCAP_3D = 0,
|
||||
SVGA3D_DEVCAP_MAX_LIGHTS = 1,
|
||||
|
||||
/*
|
||||
* SVGA3D_DEVCAP_MAX_TEXTURES reflects the maximum number of
|
||||
* fixed-function texture units available. Each of these units
|
||||
* work in both FFP and Shader modes, and they support texture
|
||||
* transforms and texture coordinates. The host may have additional
|
||||
* texture image units that are only usable with shaders.
|
||||
*/
|
||||
SVGA3D_DEVCAP_MAX_TEXTURES = 2,
|
||||
SVGA3D_DEVCAP_MAX_CLIP_PLANES = 3,
|
||||
SVGA3D_DEVCAP_VERTEX_SHADER_VERSION = 4,
|
||||
SVGA3D_DEVCAP_VERTEX_SHADER = 5,
|
||||
SVGA3D_DEVCAP_FRAGMENT_SHADER_VERSION = 6,
|
||||
SVGA3D_DEVCAP_FRAGMENT_SHADER = 7,
|
||||
SVGA3D_DEVCAP_MAX_RENDER_TARGETS = 8,
|
||||
SVGA3D_DEVCAP_S23E8_TEXTURES = 9,
|
||||
SVGA3D_DEVCAP_S10E5_TEXTURES = 10,
|
||||
SVGA3D_DEVCAP_MAX_FIXED_VERTEXBLEND = 11,
|
||||
SVGA3D_DEVCAP_D16_BUFFER_FORMAT = 12,
|
||||
SVGA3D_DEVCAP_D24S8_BUFFER_FORMAT = 13,
|
||||
SVGA3D_DEVCAP_D24X8_BUFFER_FORMAT = 14,
|
||||
SVGA3D_DEVCAP_QUERY_TYPES = 15,
|
||||
SVGA3D_DEVCAP_TEXTURE_GRADIENT_SAMPLING = 16,
|
||||
SVGA3D_DEVCAP_MAX_POINT_SIZE = 17,
|
||||
SVGA3D_DEVCAP_MAX_SHADER_TEXTURES = 18,
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_WIDTH = 19,
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_HEIGHT = 20,
|
||||
SVGA3D_DEVCAP_MAX_VOLUME_EXTENT = 21,
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_REPEAT = 22,
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_ASPECT_RATIO = 23,
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_ANISOTROPY = 24,
|
||||
SVGA3D_DEVCAP_MAX_PRIMITIVE_COUNT = 25,
|
||||
SVGA3D_DEVCAP_MAX_VERTEX_INDEX = 26,
|
||||
SVGA3D_DEVCAP_MAX_VERTEX_SHADER_INSTRUCTIONS = 27,
|
||||
SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_INSTRUCTIONS = 28,
|
||||
SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEMPS = 29,
|
||||
SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_TEMPS = 30,
|
||||
SVGA3D_DEVCAP_TEXTURE_OPS = 31,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_X8R8G8B8 = 32,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_A8R8G8B8 = 33,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_A2R10G10B10 = 34,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_X1R5G5B5 = 35,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_A1R5G5B5 = 36,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_A4R4G4B4 = 37,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_R5G6B5 = 38,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE16 = 39,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8_ALPHA8 = 40,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_ALPHA8 = 41,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8 = 42,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Z_D16 = 43,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8 = 44,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Z_D24X8 = 45,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_DXT1 = 46,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_DXT2 = 47,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_DXT3 = 48,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_DXT4 = 49,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_DXT5 = 50,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_BUMPX8L8V8U8 = 51,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_A2W10V10U10 = 52,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_BUMPU8V8 = 53,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Q8W8V8U8 = 54,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_CxV8U8 = 55,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_R_S10E5 = 56,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_R_S23E8 = 57,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_RG_S10E5 = 58,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_RG_S23E8 = 59,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_ARGB_S10E5 = 60,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_ARGB_S23E8 = 61,
|
||||
|
||||
/*
|
||||
* There is a hole in our devcap definitions for
|
||||
* historical reasons.
|
||||
*
|
||||
* Define a constant just for completeness.
|
||||
*/
|
||||
SVGA3D_DEVCAP_MISSING62 = 62,
|
||||
|
||||
SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEXTURES = 63,
|
||||
|
||||
/*
|
||||
* Note that MAX_SIMULTANEOUS_RENDER_TARGETS is a maximum count of color
|
||||
* render targets. This does not include the depth or stencil targets.
|
||||
*/
|
||||
SVGA3D_DEVCAP_MAX_SIMULTANEOUS_RENDER_TARGETS = 64,
|
||||
|
||||
SVGA3D_DEVCAP_SURFACEFMT_V16U16 = 65,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_G16R16 = 66,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_A16B16G16R16 = 67,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_UYVY = 68,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_YUY2 = 69,
|
||||
SVGA3D_DEVCAP_MULTISAMPLE_NONMASKABLESAMPLES = 70,
|
||||
SVGA3D_DEVCAP_MULTISAMPLE_MASKABLESAMPLES = 71,
|
||||
SVGA3D_DEVCAP_ALPHATOCOVERAGE = 72,
|
||||
SVGA3D_DEVCAP_SUPERSAMPLE = 73,
|
||||
SVGA3D_DEVCAP_AUTOGENMIPMAPS = 74,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_NV12 = 75,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_AYUV = 76,
|
||||
|
||||
/*
|
||||
* This is the maximum number of SVGA context IDs that the guest
|
||||
* can define using SVGA_3D_CMD_CONTEXT_DEFINE.
|
||||
*/
|
||||
SVGA3D_DEVCAP_MAX_CONTEXT_IDS = 77,
|
||||
|
||||
/*
|
||||
* This is the maximum number of SVGA surface IDs that the guest
|
||||
* can define using SVGA_3D_CMD_SURFACE_DEFINE*.
|
||||
*/
|
||||
SVGA3D_DEVCAP_MAX_SURFACE_IDS = 78,
|
||||
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Z_DF16 = 79,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Z_DF24 = 80,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT = 81,
|
||||
|
||||
SVGA3D_DEVCAP_SURFACEFMT_ATI1 = 82,
|
||||
SVGA3D_DEVCAP_SURFACEFMT_ATI2 = 83,
|
||||
|
||||
/*
|
||||
* Deprecated.
|
||||
*/
|
||||
SVGA3D_DEVCAP_DEAD1 = 84,
|
||||
|
||||
/*
|
||||
* This contains several SVGA_3D_CAPS_VIDEO_DECODE elements
|
||||
* ored together, one for every type of video decoding supported.
|
||||
*/
|
||||
SVGA3D_DEVCAP_VIDEO_DECODE = 85,
|
||||
|
||||
/*
|
||||
* This contains several SVGA_3D_CAPS_VIDEO_PROCESS elements
|
||||
* ored together, one for every type of video processing supported.
|
||||
*/
|
||||
SVGA3D_DEVCAP_VIDEO_PROCESS = 86,
|
||||
|
||||
SVGA3D_DEVCAP_LINE_AA = 87, /* boolean */
|
||||
SVGA3D_DEVCAP_LINE_STIPPLE = 88, /* boolean */
|
||||
SVGA3D_DEVCAP_MAX_LINE_WIDTH = 89, /* float */
|
||||
SVGA3D_DEVCAP_MAX_AA_LINE_WIDTH = 90, /* float */
|
||||
|
||||
SVGA3D_DEVCAP_SURFACEFMT_YV12 = 91,
|
||||
|
||||
/*
|
||||
* Does the host support the SVGA logic ops commands?
|
||||
*/
|
||||
SVGA3D_DEVCAP_LOGICOPS = 92,
|
||||
|
||||
/*
|
||||
* Are TS_CONSTANT, TS_COLOR_KEY, and TS_COLOR_KEY_ENABLE supported?
|
||||
*/
|
||||
SVGA3D_DEVCAP_TS_COLOR_KEY = 93, /* boolean */
|
||||
|
||||
/*
|
||||
* Deprecated.
|
||||
*/
|
||||
SVGA3D_DEVCAP_DEAD2 = 94,
|
||||
|
||||
/*
|
||||
* Does the device support the DX commands?
|
||||
*/
|
||||
SVGA3D_DEVCAP_DX = 95,
|
||||
|
||||
/*
|
||||
* What is the maximum size of a texture array?
|
||||
*
|
||||
* (Even if this cap is zero, cubemaps are still allowed.)
|
||||
*/
|
||||
SVGA3D_DEVCAP_MAX_TEXTURE_ARRAY_SIZE = 96,
|
||||
|
||||
/*
|
||||
* What is the maximum number of vertex buffers that can
|
||||
* be used in the DXContext inputAssembly?
|
||||
*/
|
||||
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?
|
||||
*/
|
||||
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.
|
||||
*/
|
||||
SVGA3D_DEVCAP_DX_PROVOKING_VERTEX = 99,
|
||||
|
||||
SVGA3D_DEVCAP_DXFMT_X8R8G8B8 = 100,
|
||||
SVGA3D_DEVCAP_DXFMT_A8R8G8B8 = 101,
|
||||
SVGA3D_DEVCAP_DXFMT_R5G6B5 = 102,
|
||||
SVGA3D_DEVCAP_DXFMT_X1R5G5B5 = 103,
|
||||
SVGA3D_DEVCAP_DXFMT_A1R5G5B5 = 104,
|
||||
SVGA3D_DEVCAP_DXFMT_A4R4G4B4 = 105,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_D32 = 106,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_D16 = 107,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_D24S8 = 108,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_D15S1 = 109,
|
||||
SVGA3D_DEVCAP_DXFMT_LUMINANCE8 = 110,
|
||||
SVGA3D_DEVCAP_DXFMT_LUMINANCE4_ALPHA4 = 111,
|
||||
SVGA3D_DEVCAP_DXFMT_LUMINANCE16 = 112,
|
||||
SVGA3D_DEVCAP_DXFMT_LUMINANCE8_ALPHA8 = 113,
|
||||
SVGA3D_DEVCAP_DXFMT_DXT1 = 114,
|
||||
SVGA3D_DEVCAP_DXFMT_DXT2 = 115,
|
||||
SVGA3D_DEVCAP_DXFMT_DXT3 = 116,
|
||||
SVGA3D_DEVCAP_DXFMT_DXT4 = 117,
|
||||
SVGA3D_DEVCAP_DXFMT_DXT5 = 118,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPU8V8 = 119,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPL6V5U5 = 120,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPX8L8V8U8 = 121,
|
||||
SVGA3D_DEVCAP_DXFMT_BUMPL8V8U8 = 122,
|
||||
SVGA3D_DEVCAP_DXFMT_ARGB_S10E5 = 123,
|
||||
SVGA3D_DEVCAP_DXFMT_ARGB_S23E8 = 124,
|
||||
SVGA3D_DEVCAP_DXFMT_A2R10G10B10 = 125,
|
||||
SVGA3D_DEVCAP_DXFMT_V8U8 = 126,
|
||||
SVGA3D_DEVCAP_DXFMT_Q8W8V8U8 = 127,
|
||||
SVGA3D_DEVCAP_DXFMT_CxV8U8 = 128,
|
||||
SVGA3D_DEVCAP_DXFMT_X8L8V8U8 = 129,
|
||||
SVGA3D_DEVCAP_DXFMT_A2W10V10U10 = 130,
|
||||
SVGA3D_DEVCAP_DXFMT_ALPHA8 = 131,
|
||||
SVGA3D_DEVCAP_DXFMT_R_S10E5 = 132,
|
||||
SVGA3D_DEVCAP_DXFMT_R_S23E8 = 133,
|
||||
SVGA3D_DEVCAP_DXFMT_RG_S10E5 = 134,
|
||||
SVGA3D_DEVCAP_DXFMT_RG_S23E8 = 135,
|
||||
SVGA3D_DEVCAP_DXFMT_BUFFER = 136,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_D24X8 = 137,
|
||||
SVGA3D_DEVCAP_DXFMT_V16U16 = 138,
|
||||
SVGA3D_DEVCAP_DXFMT_G16R16 = 139,
|
||||
SVGA3D_DEVCAP_DXFMT_A16B16G16R16 = 140,
|
||||
SVGA3D_DEVCAP_DXFMT_UYVY = 141,
|
||||
SVGA3D_DEVCAP_DXFMT_YUY2 = 142,
|
||||
SVGA3D_DEVCAP_DXFMT_NV12 = 143,
|
||||
SVGA3D_DEVCAP_DXFMT_AYUV = 144,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32A32_TYPELESS = 145,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32A32_UINT = 146,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32A32_SINT = 147,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32_TYPELESS = 148,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32_FLOAT = 149,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32_UINT = 150,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32_SINT = 151,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16B16A16_TYPELESS = 152,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UINT = 153,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SNORM = 154,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SINT = 155,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32_TYPELESS = 156,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32_UINT = 157,
|
||||
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_R10G10B10A2_TYPELESS = 163,
|
||||
SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT = 164,
|
||||
SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT = 165,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8B8A8_TYPELESS = 166,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM = 167,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM_SRGB = 168,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UINT = 169,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SINT = 170,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16_TYPELESS = 171,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16_UINT = 172,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16_SINT = 173,
|
||||
SVGA3D_DEVCAP_DXFMT_R32_TYPELESS = 174,
|
||||
SVGA3D_DEVCAP_DXFMT_D32_FLOAT = 175,
|
||||
SVGA3D_DEVCAP_DXFMT_R32_UINT = 176,
|
||||
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_R8G8_TYPELESS = 182,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_UNORM = 183,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_UINT = 184,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_SINT = 185,
|
||||
SVGA3D_DEVCAP_DXFMT_R16_TYPELESS = 186,
|
||||
SVGA3D_DEVCAP_DXFMT_R16_UNORM = 187,
|
||||
SVGA3D_DEVCAP_DXFMT_R16_UINT = 188,
|
||||
SVGA3D_DEVCAP_DXFMT_R16_SNORM = 189,
|
||||
SVGA3D_DEVCAP_DXFMT_R16_SINT = 190,
|
||||
SVGA3D_DEVCAP_DXFMT_R8_TYPELESS = 191,
|
||||
SVGA3D_DEVCAP_DXFMT_R8_UNORM = 192,
|
||||
SVGA3D_DEVCAP_DXFMT_R8_UINT = 193,
|
||||
SVGA3D_DEVCAP_DXFMT_R8_SNORM = 194,
|
||||
SVGA3D_DEVCAP_DXFMT_R8_SINT = 195,
|
||||
SVGA3D_DEVCAP_DXFMT_P8 = 196,
|
||||
SVGA3D_DEVCAP_DXFMT_R9G9B9E5_SHAREDEXP = 197,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_B8G8_UNORM = 198,
|
||||
SVGA3D_DEVCAP_DXFMT_G8R8_G8B8_UNORM = 199,
|
||||
SVGA3D_DEVCAP_DXFMT_BC1_TYPELESS = 200,
|
||||
SVGA3D_DEVCAP_DXFMT_BC1_UNORM_SRGB = 201,
|
||||
SVGA3D_DEVCAP_DXFMT_BC2_TYPELESS = 202,
|
||||
SVGA3D_DEVCAP_DXFMT_BC2_UNORM_SRGB = 203,
|
||||
SVGA3D_DEVCAP_DXFMT_BC3_TYPELESS = 204,
|
||||
SVGA3D_DEVCAP_DXFMT_BC3_UNORM_SRGB = 205,
|
||||
SVGA3D_DEVCAP_DXFMT_BC4_TYPELESS = 206,
|
||||
SVGA3D_DEVCAP_DXFMT_ATI1 = 207,
|
||||
SVGA3D_DEVCAP_DXFMT_BC4_SNORM = 208,
|
||||
SVGA3D_DEVCAP_DXFMT_BC5_TYPELESS = 209,
|
||||
SVGA3D_DEVCAP_DXFMT_ATI2 = 210,
|
||||
SVGA3D_DEVCAP_DXFMT_BC5_SNORM = 211,
|
||||
SVGA3D_DEVCAP_DXFMT_R10G10B10_XR_BIAS_A2_UNORM = 212,
|
||||
SVGA3D_DEVCAP_DXFMT_B8G8R8A8_TYPELESS = 213,
|
||||
SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM_SRGB = 214,
|
||||
SVGA3D_DEVCAP_DXFMT_B8G8R8X8_TYPELESS = 215,
|
||||
SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM_SRGB = 216,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_DF16 = 217,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_DF24 = 218,
|
||||
SVGA3D_DEVCAP_DXFMT_Z_D24S8_INT = 219,
|
||||
SVGA3D_DEVCAP_DXFMT_YV12 = 220,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32B32A32_FLOAT = 221,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16B16A16_FLOAT = 222,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UNORM = 223,
|
||||
SVGA3D_DEVCAP_DXFMT_R32G32_FLOAT = 224,
|
||||
SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UNORM = 225,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SNORM = 226,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16_FLOAT = 227,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16_UNORM = 228,
|
||||
SVGA3D_DEVCAP_DXFMT_R16G16_SNORM = 229,
|
||||
SVGA3D_DEVCAP_DXFMT_R32_FLOAT = 230,
|
||||
SVGA3D_DEVCAP_DXFMT_R8G8_SNORM = 231,
|
||||
SVGA3D_DEVCAP_DXFMT_R16_FLOAT = 232,
|
||||
SVGA3D_DEVCAP_DXFMT_D16_UNORM = 233,
|
||||
SVGA3D_DEVCAP_DXFMT_A8_UNORM = 234,
|
||||
SVGA3D_DEVCAP_DXFMT_BC1_UNORM = 235,
|
||||
SVGA3D_DEVCAP_DXFMT_BC2_UNORM = 236,
|
||||
SVGA3D_DEVCAP_DXFMT_BC3_UNORM = 237,
|
||||
SVGA3D_DEVCAP_DXFMT_B5G6R5_UNORM = 238,
|
||||
SVGA3D_DEVCAP_DXFMT_B5G5R5A1_UNORM = 239,
|
||||
SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM = 240,
|
||||
SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM = 241,
|
||||
SVGA3D_DEVCAP_DXFMT_BC4_UNORM = 242,
|
||||
SVGA3D_DEVCAP_DXFMT_BC5_UNORM = 243,
|
||||
|
||||
SVGA3D_DEVCAP_MAX /* This must be the last index. */
|
||||
} SVGA3dDevCapIndex;
|
||||
|
||||
/*
|
||||
* Bit definitions for DXFMT devcaps
|
||||
*
|
||||
*
|
||||
* SUPPORTED: Can the format be defined?
|
||||
* SHADER_SAMPLE: Can the format be sampled from a shader?
|
||||
* COLOR_RENDERTARGET: Can the format be a color render target?
|
||||
* DEPTH_RENDERTARGET: Can the format be a depth render target?
|
||||
* BLENDABLE: Is the format blendable?
|
||||
* 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?
|
||||
*/
|
||||
#define SVGA3D_DXFMT_SUPPORTED (1 << 0)
|
||||
#define SVGA3D_DXFMT_SHADER_SAMPLE (1 << 1)
|
||||
#define SVGA3D_DXFMT_COLOR_RENDERTARGET (1 << 2)
|
||||
#define SVGA3D_DXFMT_DEPTH_RENDERTARGET (1 << 3)
|
||||
#define SVGA3D_DXFMT_BLENDABLE (1 << 4)
|
||||
#define SVGA3D_DXFMT_MIPS (1 << 5)
|
||||
#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 )
|
||||
|
||||
typedef union {
|
||||
Bool b;
|
||||
uint32 u;
|
||||
int32 i;
|
||||
float f;
|
||||
} SVGA3dDevCapResult;
|
||||
|
||||
#endif /* _SVGA3D_DEVCAPS_H_ */
|
1487
drivers/gpu/drm/vmwgfx/device_include/svga3d_dx.h
Normal file
1487
drivers/gpu/drm/vmwgfx/device_include/svga3d_dx.h
Normal file
File diff suppressed because it is too large
Load Diff
99
drivers/gpu/drm/vmwgfx/device_include/svga3d_limits.h
Normal file
99
drivers/gpu/drm/vmwgfx/device_include/svga3d_limits.h
Normal file
@ -0,0 +1,99 @@
|
||||
/**********************************************************
|
||||
* Copyright 2007-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_limits.h --
|
||||
*
|
||||
* SVGA 3d hardware limits
|
||||
*/
|
||||
|
||||
#ifndef _SVGA3D_LIMITS_H_
|
||||
#define _SVGA3D_LIMITS_H_
|
||||
|
||||
#define INCLUDE_ALLOW_MODULE
|
||||
#define INCLUDE_ALLOW_USERLEVEL
|
||||
#define INCLUDE_ALLOW_VMCORE
|
||||
|
||||
#include "includeCheck.h"
|
||||
|
||||
#define SVGA3D_NUM_CLIPPLANES 6
|
||||
#define SVGA3D_MAX_RENDER_TARGETS 8
|
||||
#define SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS (SVGA3D_MAX_RENDER_TARGETS)
|
||||
#define SVGA3D_MAX_UAVIEWS 8
|
||||
#define SVGA3D_MAX_CONTEXT_IDS 256
|
||||
#define SVGA3D_MAX_SURFACE_IDS (32 * 1024)
|
||||
|
||||
/*
|
||||
* Maximum ID a shader can be assigned on a given context.
|
||||
*/
|
||||
#define SVGA3D_MAX_SHADERIDS 5000
|
||||
/*
|
||||
* Maximum number of shaders of a given type that can be defined
|
||||
* (including all contexts).
|
||||
*/
|
||||
#define SVGA3D_MAX_SIMULTANEOUS_SHADERS 20000
|
||||
|
||||
#define SVGA3D_NUM_TEXTURE_UNITS 32
|
||||
#define SVGA3D_NUM_LIGHTS 8
|
||||
|
||||
/*
|
||||
* 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_CLIP_PLANES 6
|
||||
|
||||
/*
|
||||
* This is the limit to the number of fixed-function texture
|
||||
* transforms and texture coordinates we can support. It does *not*
|
||||
* correspond to the number of texture image units (samplers) we
|
||||
* support!
|
||||
*/
|
||||
#define SVGA3D_MAX_TEXTURE_COORDS 8
|
||||
|
||||
/*
|
||||
* Number of faces in a cubemap.
|
||||
*/
|
||||
#define SVGA3D_MAX_SURFACE_FACES 6
|
||||
|
||||
/*
|
||||
* Maximum number of array indexes in a GB surface (with DX enabled).
|
||||
*/
|
||||
#define SVGA3D_MAX_SURFACE_ARRAYSIZE 512
|
||||
|
||||
/*
|
||||
* The maximum number of vertex arrays we're guaranteed to support in
|
||||
* SVGA_3D_CMD_DRAWPRIMITIVES.
|
||||
*/
|
||||
#define SVGA3D_MAX_VERTEX_ARRAYS 32
|
||||
|
||||
/*
|
||||
* The maximum number of primitive ranges we're guaranteed to support
|
||||
* in SVGA_3D_CMD_DRAWPRIMITIVES.
|
||||
*/
|
||||
#define SVGA3D_MAX_DRAW_PRIMITIVE_RANGES 32
|
||||
|
||||
#endif /* _SVGA3D_LIMITS_H_ */
|
50
drivers/gpu/drm/vmwgfx/device_include/svga3d_reg.h
Normal file
50
drivers/gpu/drm/vmwgfx/device_include/svga3d_reg.h
Normal file
@ -0,0 +1,50 @@
|
||||
/**********************************************************
|
||||
* Copyright 1998-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_reg.h --
|
||||
*
|
||||
* SVGA 3d hardware definitions
|
||||
*/
|
||||
|
||||
#ifndef _SVGA3D_REG_H_
|
||||
#define _SVGA3D_REG_H_
|
||||
|
||||
#define INCLUDE_ALLOW_MODULE
|
||||
#define INCLUDE_ALLOW_USERLEVEL
|
||||
#define INCLUDE_ALLOW_VMCORE
|
||||
|
||||
#include "includeCheck.h"
|
||||
|
||||
#include "svga_reg.h"
|
||||
|
||||
#include "svga3d_types.h"
|
||||
#include "svga3d_limits.h"
|
||||
#include "svga3d_cmd.h"
|
||||
#include "svga3d_dx.h"
|
||||
#include "svga3d_devcaps.h"
|
||||
|
||||
|
||||
#endif /* _SVGA3D_REG_H_ */
|
1204
drivers/gpu/drm/vmwgfx/device_include/svga3d_surfacedefs.h
Normal file
1204
drivers/gpu/drm/vmwgfx/device_include/svga3d_surfacedefs.h
Normal file
File diff suppressed because it is too large
Load Diff
1633
drivers/gpu/drm/vmwgfx/device_include/svga3d_types.h
Normal file
1633
drivers/gpu/drm/vmwgfx/device_include/svga3d_types.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/**********************************************************
|
||||
* Copyright 2007-2009 VMware, Inc. All rights reserved.
|
||||
* Copyright 2007-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
|
@ -1,5 +1,5 @@
|
||||
/**********************************************************
|
||||
* Copyright 2007-2009 VMware, Inc. All rights reserved.
|
||||
* Copyright 2007-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
|
||||
@ -152,19 +152,17 @@ VMwareVideoGetAttributes(const SVGAOverlayFormat format, /* IN */
|
||||
switch (format) {
|
||||
case VMWARE_FOURCC_YV12:
|
||||
*height = (*height + 1) & ~1;
|
||||
*size = (*width + 3) & ~3;
|
||||
*size = (*width) * (*height);
|
||||
|
||||
if (pitches) {
|
||||
pitches[0] = *size;
|
||||
pitches[0] = *width;
|
||||
}
|
||||
|
||||
*size *= *height;
|
||||
|
||||
if (offsets) {
|
||||
offsets[1] = *size;
|
||||
}
|
||||
|
||||
tmp = ((*width >> 1) + 3) & ~3;
|
||||
tmp = *width >> 1;
|
||||
|
||||
if (pitches) {
|
||||
pitches[1] = pitches[2] = tmp;
|
@ -1,5 +1,5 @@
|
||||
/**********************************************************
|
||||
* Copyright 1998-2009 VMware, Inc. All rights reserved.
|
||||
* Copyright 1998-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
|
||||
@ -31,20 +31,38 @@
|
||||
|
||||
#ifndef _SVGA_REG_H_
|
||||
#define _SVGA_REG_H_
|
||||
#include <linux/pci_ids.h>
|
||||
|
||||
/*
|
||||
* PCI device IDs.
|
||||
*/
|
||||
#define PCI_DEVICE_ID_VMWARE_SVGA2 0x0405
|
||||
#define INCLUDE_ALLOW_MODULE
|
||||
#define INCLUDE_ALLOW_USERLEVEL
|
||||
|
||||
#define INCLUDE_ALLOW_VMCORE
|
||||
#include "includeCheck.h"
|
||||
|
||||
#include "svga_types.h"
|
||||
|
||||
/*
|
||||
* SVGA_REG_ENABLE bit definitions.
|
||||
*/
|
||||
#define SVGA_REG_ENABLE_DISABLE 0
|
||||
#define SVGA_REG_ENABLE_ENABLE 1
|
||||
#define SVGA_REG_ENABLE_HIDE 2
|
||||
#define SVGA_REG_ENABLE_ENABLE_HIDE (SVGA_REG_ENABLE_ENABLE |\
|
||||
SVGA_REG_ENABLE_HIDE)
|
||||
typedef enum {
|
||||
SVGA_REG_ENABLE_DISABLE = 0,
|
||||
SVGA_REG_ENABLE_ENABLE = (1 << 0),
|
||||
SVGA_REG_ENABLE_HIDE = (1 << 1),
|
||||
} SvgaRegEnable;
|
||||
|
||||
typedef uint32 SVGAMobId;
|
||||
|
||||
/*
|
||||
* Arbitrary and meaningless limits. Please ignore these when writing
|
||||
* new drivers.
|
||||
*/
|
||||
#define SVGA_MAX_WIDTH 2560
|
||||
#define SVGA_MAX_HEIGHT 1600
|
||||
|
||||
|
||||
#define SVGA_MAX_BITS_PER_PIXEL 32
|
||||
#define SVGA_MAX_DEPTH 24
|
||||
#define SVGA_MAX_DISPLAYS 10
|
||||
|
||||
/*
|
||||
* Legal values for the SVGA_REG_CURSOR_ON register in old-fashioned
|
||||
@ -57,14 +75,9 @@
|
||||
#define SVGA_CURSOR_ON_RESTORE_TO_FB 0x3 /* Put the cursor back in the framebuffer so the user can see it */
|
||||
|
||||
/*
|
||||
* The maximum framebuffer size that can traced for e.g. guests in VESA mode.
|
||||
* The changeMap in the monitor is proportional to this number. Therefore, we'd
|
||||
* like to keep it as small as possible to reduce monitor overhead (using
|
||||
* SVGA_VRAM_MAX_SIZE for this increases the size of the shared area by over
|
||||
* 4k!).
|
||||
*
|
||||
* NB: For compatibility reasons, this value must be greater than 0xff0000.
|
||||
* See bug 335072.
|
||||
* The maximum framebuffer size that can traced for guests unless the
|
||||
* SVGA_CAP_GBOBJECTS is set in SVGA_REG_CAPABILITIES. In that case
|
||||
* the full framebuffer can be traced independent of this limit.
|
||||
*/
|
||||
#define SVGA_FB_MAX_TRACEABLE_SIZE 0x1000000
|
||||
|
||||
@ -133,6 +146,7 @@ enum {
|
||||
SVGA_REG_FB_SIZE = 16,
|
||||
|
||||
/* ID 0 implementation only had the above registers, then the palette */
|
||||
SVGA_REG_ID_0_TOP = 17,
|
||||
|
||||
SVGA_REG_CAPABILITIES = 17,
|
||||
SVGA_REG_MEM_START = 18, /* (Deprecated) */
|
||||
@ -173,7 +187,7 @@ enum {
|
||||
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 */
|
||||
SVGA_REG_SUGGESTED_GBOBJECT_MEM_SIZE_KB = 51, /* Suggested limit on mob mem */
|
||||
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,
|
||||
SVGA_REG_CMD_PREPEND_HIGH = 54,
|
||||
@ -184,7 +198,6 @@ enum {
|
||||
|
||||
SVGA_PALETTE_BASE = 1024, /* Base of SVGA color map */
|
||||
/* Next 768 (== 256*3) registers exist for colormap */
|
||||
|
||||
SVGA_SCRATCH_BASE = SVGA_PALETTE_BASE + SVGA_NUM_PALETTE_REGS
|
||||
/* Base of scratch registers */
|
||||
/* Next reg[SVGA_REG_SCRATCH_SIZE] registers exist for scratch usage:
|
||||
@ -192,7 +205,6 @@ enum {
|
||||
the use of the current SVGA driver. */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Guest memory regions (GMRs):
|
||||
*
|
||||
@ -290,16 +302,22 @@ enum {
|
||||
#define SVGA_GMR_FRAMEBUFFER ((uint32) -2) /* Guest Framebuffer (GFB) */
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGAGuestMemDescriptor {
|
||||
uint32 ppn;
|
||||
uint32 numPages;
|
||||
} SVGAGuestMemDescriptor;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAGuestMemDescriptor;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGAGuestPtr {
|
||||
uint32 gmrId;
|
||||
uint32 offset;
|
||||
} SVGAGuestPtr;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAGuestPtr;
|
||||
|
||||
/*
|
||||
* Register based command buffers --
|
||||
@ -356,9 +374,9 @@ struct SVGAGuestPtr {
|
||||
* what it will set to.
|
||||
*/
|
||||
|
||||
#define SVGA_CB_MAX_SIZE (512 * 1024) // 512 KB
|
||||
#define SVGA_CB_MAX_SIZE (512 * 1024) /* 512 KB */
|
||||
#define SVGA_CB_MAX_QUEUED_PER_CONTEXT 32
|
||||
#define SVGA_CB_MAX_COMMAND_SIZE (32 * 1024) // 32 KB
|
||||
#define SVGA_CB_MAX_COMMAND_SIZE (32 * 1024) /* 32 KB */
|
||||
|
||||
#define SVGA_CB_CONTEXT_MASK 0x3f
|
||||
typedef enum {
|
||||
@ -431,9 +449,10 @@ typedef enum {
|
||||
} SVGACBFlags;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
volatile SVGACBStatus status; /* Modified by device. */
|
||||
volatile uint32 errorOffset; /* Modified by device. */
|
||||
volatile SVGACBStatus status;
|
||||
volatile uint32 errorOffset;
|
||||
uint64 id;
|
||||
SVGACBFlags flags;
|
||||
uint32 length;
|
||||
@ -444,13 +463,11 @@ struct {
|
||||
uint32 mobOffset;
|
||||
} mob;
|
||||
} ptr;
|
||||
uint32 offset; /* Valid if CMD_BUFFERS_2 cap set, must be zero otherwise,
|
||||
* modified by device.
|
||||
*/
|
||||
uint32 offset; /* Valid if CMD_BUFFERS_2 cap set, must be zero otherwise */
|
||||
uint32 dxContext; /* Valid if DX_CONTEXT flag set, must be zero otherwise */
|
||||
uint32 mustBeZero[6];
|
||||
}
|
||||
__attribute__((__packed__))
|
||||
#include "vmware_pack_end.h"
|
||||
SVGACBHeader;
|
||||
|
||||
typedef enum {
|
||||
@ -458,9 +475,9 @@ typedef enum {
|
||||
SVGA_DC_CMD_START_STOP_CONTEXT = 1,
|
||||
SVGA_DC_CMD_PREEMPT = 2,
|
||||
SVGA_DC_CMD_MAX = 3,
|
||||
SVGA_DC_CMD_FORCE_UINT = MAX_UINT32,
|
||||
} SVGADeviceContextCmdId;
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint32 enable;
|
||||
SVGACBContext context;
|
||||
@ -485,7 +502,6 @@ typedef struct {
|
||||
uint32 ignoreIDZero;
|
||||
} SVGADCCmdPreempt;
|
||||
|
||||
|
||||
/*
|
||||
* SVGAGMRImageFormat --
|
||||
*
|
||||
@ -506,13 +522,12 @@ typedef struct {
|
||||
*
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAGMRImageFormat {
|
||||
typedef struct SVGAGMRImageFormat {
|
||||
union {
|
||||
struct {
|
||||
uint32 bitsPerPixel : 8;
|
||||
uint32 colorDepth : 8;
|
||||
uint32 reserved : 16; /* Must be zero */
|
||||
uint32 reserved : 16; /* Must be zero */
|
||||
};
|
||||
|
||||
uint32 value;
|
||||
@ -520,6 +535,7 @@ struct SVGAGMRImageFormat {
|
||||
} SVGAGMRImageFormat;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGAGuestImage {
|
||||
SVGAGuestPtr ptr;
|
||||
|
||||
@ -539,7 +555,9 @@ struct SVGAGuestImage {
|
||||
* assuming each row of blocks is tightly packed.
|
||||
*/
|
||||
uint32 pitch;
|
||||
} SVGAGuestImage;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAGuestImage;
|
||||
|
||||
/*
|
||||
* SVGAColorBGRX --
|
||||
@ -549,14 +567,13 @@ struct SVGAGuestImage {
|
||||
* GMRFB state.
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAColorBGRX {
|
||||
typedef struct SVGAColorBGRX {
|
||||
union {
|
||||
struct {
|
||||
uint32 b : 8;
|
||||
uint32 g : 8;
|
||||
uint32 r : 8;
|
||||
uint32 x : 8; /* Unused */
|
||||
uint32 x : 8; /* Unused */
|
||||
};
|
||||
|
||||
uint32 value;
|
||||
@ -578,26 +595,49 @@ struct SVGAColorBGRX {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGASignedRect {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
int32 left;
|
||||
int32 top;
|
||||
int32 right;
|
||||
int32 bottom;
|
||||
} SVGASignedRect;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGASignedRect;
|
||||
|
||||
typedef
|
||||
struct SVGASignedPoint {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
int32 x;
|
||||
int32 y;
|
||||
} SVGASignedPoint;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGASignedPoint;
|
||||
|
||||
|
||||
/*
|
||||
* Capabilities
|
||||
* SVGA Device Capabilities
|
||||
*
|
||||
* Note the holes in the bitfield. Missing bits have been deprecated,
|
||||
* and must not be reused. Those capabilities will never be reported
|
||||
* by new versions of the SVGA device.
|
||||
* Note the holes in the bitfield. Missing bits have been deprecated,
|
||||
* and must not be reused. Those capabilities will never be reported
|
||||
* by new versions of the SVGA device.
|
||||
*
|
||||
* XXX: Add longer descriptions for each capability, including a list
|
||||
* of the new features that each capability provides.
|
||||
*
|
||||
* SVGA_CAP_IRQMASK --
|
||||
* Provides device interrupts. Adds device register SVGA_REG_IRQMASK
|
||||
* to set interrupt mask and direct I/O port SVGA_IRQSTATUS_PORT to
|
||||
* set/clear pending interrupts.
|
||||
*
|
||||
* SVGA_CAP_GMR --
|
||||
* Provides synchronous mapping of guest memory regions (GMR).
|
||||
* Adds device registers SVGA_REG_GMR_ID, SVGA_REG_GMR_DESCRIPTOR,
|
||||
* SVGA_REG_GMR_MAX_IDS, and SVGA_REG_GMR_MAX_DESCRIPTOR_LENGTH.
|
||||
*
|
||||
* SVGA_CAP_TRACES --
|
||||
* Allows framebuffer trace-based updates even when FIFO is enabled.
|
||||
* Adds device register SVGA_REG_TRACES.
|
||||
*
|
||||
* SVGA_CAP_GMR2 --
|
||||
* Provides asynchronous commands to define and remap guest memory
|
||||
@ -607,21 +647,39 @@ struct SVGASignedPoint {
|
||||
* SVGA_CAP_SCREEN_OBJECT_2 --
|
||||
* Allow screen object support, and require backing stores from the
|
||||
* guest for each screen object.
|
||||
*
|
||||
* SVGA_CAP_COMMAND_BUFFERS --
|
||||
* Enable register based command buffer submission.
|
||||
*
|
||||
* SVGA_CAP_DEAD1 --
|
||||
* This cap was incorrectly used by old drivers and should not be
|
||||
* reused.
|
||||
*
|
||||
* SVGA_CAP_CMD_BUFFERS_2 --
|
||||
* Enable support for the prepend command buffer submision
|
||||
* registers. SVGA_REG_CMD_PREPEND_LOW and
|
||||
* SVGA_REG_CMD_PREPEND_HIGH.
|
||||
*
|
||||
* SVGA_CAP_GBOBJECTS --
|
||||
* Enable guest-backed objects and surfaces.
|
||||
*
|
||||
* SVGA_CAP_CMD_BUFFERS_3 --
|
||||
* Enable support for command buffers in a mob.
|
||||
*/
|
||||
|
||||
#define SVGA_CAP_NONE 0x00000000
|
||||
#define SVGA_CAP_RECT_COPY 0x00000002
|
||||
#define SVGA_CAP_CURSOR 0x00000020
|
||||
#define SVGA_CAP_CURSOR_BYPASS 0x00000040 /* Legacy (Use Cursor Bypass 3 instead) */
|
||||
#define SVGA_CAP_CURSOR_BYPASS_2 0x00000080 /* Legacy (Use Cursor Bypass 3 instead) */
|
||||
#define SVGA_CAP_CURSOR_BYPASS 0x00000040
|
||||
#define SVGA_CAP_CURSOR_BYPASS_2 0x00000080
|
||||
#define SVGA_CAP_8BIT_EMULATION 0x00000100
|
||||
#define SVGA_CAP_ALPHA_CURSOR 0x00000200
|
||||
#define SVGA_CAP_3D 0x00004000
|
||||
#define SVGA_CAP_EXTENDED_FIFO 0x00008000
|
||||
#define SVGA_CAP_MULTIMON 0x00010000 /* Legacy multi-monitor support */
|
||||
#define SVGA_CAP_MULTIMON 0x00010000
|
||||
#define SVGA_CAP_PITCHLOCK 0x00020000
|
||||
#define SVGA_CAP_IRQMASK 0x00040000
|
||||
#define SVGA_CAP_DISPLAY_TOPOLOGY 0x00080000 /* Legacy multi-monitor support */
|
||||
#define SVGA_CAP_DISPLAY_TOPOLOGY 0x00080000
|
||||
#define SVGA_CAP_GMR 0x00100000
|
||||
#define SVGA_CAP_TRACES 0x00200000
|
||||
#define SVGA_CAP_GMR2 0x00400000
|
||||
@ -630,7 +688,33 @@ struct SVGASignedPoint {
|
||||
#define SVGA_CAP_DEAD1 0x02000000
|
||||
#define SVGA_CAP_CMD_BUFFERS_2 0x04000000
|
||||
#define SVGA_CAP_GBOBJECTS 0x08000000
|
||||
#define SVGA_CAP_CMD_BUFFERS_3 0x10000000
|
||||
#define SVGA_CAP_DX 0x10000000
|
||||
|
||||
#define SVGA_CAP_CMD_RESERVED 0x80000000
|
||||
|
||||
|
||||
/*
|
||||
* The Guest can optionally read some SVGA device capabilities through
|
||||
* the backdoor with command BDOOR_CMD_GET_SVGA_CAPABILITIES before
|
||||
* the SVGA device is initialized. The type of capability the guest
|
||||
* is requesting from the SVGABackdoorCapType enum should be placed in
|
||||
* the upper 16 bits of the backdoor command id (ECX). On success the
|
||||
* the value of EBX will be set to BDOOR_MAGIC and EAX will be set to
|
||||
* the requested capability. If the command is not supported then EBX
|
||||
* will be left unchanged and EAX will be set to -1. Because it is
|
||||
* possible that -1 is the value of the requested cap the correct way
|
||||
* to check if the command was successful is to check if EBX was changed
|
||||
* to BDOOR_MAGIC making sure to initialize the register to something
|
||||
* else first.
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
SVGABackdoorCapDeviceCaps = 0,
|
||||
SVGABackdoorCapFifoCaps = 1,
|
||||
SVGABackdoorCap3dHWVersion = 2,
|
||||
SVGABackdoorCapMax = 3,
|
||||
} SVGABackdoorCapType;
|
||||
|
||||
|
||||
/*
|
||||
* FIFO register indices.
|
||||
@ -1070,7 +1154,8 @@ enum {
|
||||
SVGA_VIDEO_PITCH_2,
|
||||
SVGA_VIDEO_PITCH_3,
|
||||
SVGA_VIDEO_DATA_GMRID, /* Optional, defaults to SVGA_GMR_FRAMEBUFFER */
|
||||
SVGA_VIDEO_DST_SCREEN_ID, /* Optional, defaults to virtual coords (SVGA_ID_INVALID) */
|
||||
SVGA_VIDEO_DST_SCREEN_ID, /* Optional, defaults to virtual coords */
|
||||
/* (SVGA_ID_INVALID) */
|
||||
SVGA_VIDEO_NUM_REGS
|
||||
};
|
||||
|
||||
@ -1083,7 +1168,9 @@ enum {
|
||||
* video frame to be displayed.
|
||||
*/
|
||||
|
||||
typedef struct SVGAOverlayUnit {
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct SVGAOverlayUnit {
|
||||
uint32 enabled;
|
||||
uint32 flags;
|
||||
uint32 dataOffset;
|
||||
@ -1103,7 +1190,27 @@ typedef struct SVGAOverlayUnit {
|
||||
uint32 pitches[3];
|
||||
uint32 dataGMRId;
|
||||
uint32 dstScreenId;
|
||||
} SVGAOverlayUnit;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAOverlayUnit;
|
||||
|
||||
|
||||
/*
|
||||
* Guest display topology
|
||||
*
|
||||
* XXX: This structure is not part of the SVGA device's interface, and
|
||||
* doesn't really belong here.
|
||||
*/
|
||||
#define SVGA_INVALID_DISPLAY_ID ((uint32)-1)
|
||||
|
||||
typedef struct SVGADisplayTopology {
|
||||
uint16 displayId;
|
||||
uint16 isPrimary;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
uint32 positionX;
|
||||
uint32 positionY;
|
||||
} SVGADisplayTopology;
|
||||
|
||||
|
||||
/*
|
||||
@ -1138,10 +1245,10 @@ typedef struct SVGAOverlayUnit {
|
||||
* value of zero means no cloning should happen.
|
||||
*/
|
||||
|
||||
#define SVGA_SCREEN_MUST_BE_SET (1 << 0) /* Must be set or results undefined */
|
||||
#define SVGA_SCREEN_MUST_BE_SET (1 << 0)
|
||||
#define SVGA_SCREEN_HAS_ROOT SVGA_SCREEN_MUST_BE_SET /* Deprecated */
|
||||
#define SVGA_SCREEN_IS_PRIMARY (1 << 1) /* Guest considers this screen to be 'primary' */
|
||||
#define SVGA_SCREEN_FULLSCREEN_HINT (1 << 2) /* Guest is running a fullscreen app here */
|
||||
#define SVGA_SCREEN_IS_PRIMARY (1 << 1)
|
||||
#define SVGA_SCREEN_FULLSCREEN_HINT (1 << 2)
|
||||
|
||||
/*
|
||||
* Added with SVGA_FIFO_CAP_SCREEN_OBJECT_2. When the screen is
|
||||
@ -1164,7 +1271,8 @@ typedef struct SVGAOverlayUnit {
|
||||
#define SVGA_SCREEN_BLANKING (1 << 4)
|
||||
|
||||
typedef
|
||||
struct SVGAScreenObject {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 structSize; /* sizeof(SVGAScreenObject) */
|
||||
uint32 id;
|
||||
uint32 flags;
|
||||
@ -1182,8 +1290,17 @@ struct SVGAScreenObject {
|
||||
* with SVGA_FIFO_CAP_SCREEN_OBJECT.
|
||||
*/
|
||||
SVGAGuestImage backingStore;
|
||||
|
||||
/*
|
||||
* The cloneCount field is treated as a hint from the guest that
|
||||
* the user wants this display to be cloned, cloneCount times.
|
||||
*
|
||||
* A value of zero means no cloning should happen.
|
||||
*/
|
||||
uint32 cloneCount;
|
||||
} SVGAScreenObject;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAScreenObject;
|
||||
|
||||
|
||||
/*
|
||||
@ -1196,7 +1313,7 @@ struct SVGAScreenObject {
|
||||
* Note the holes in the command ID numbers: These commands have been
|
||||
* deprecated, and the old IDs must not be reused.
|
||||
*
|
||||
* Command IDs from 1000 to 1999 are reserved for use by the SVGA3D
|
||||
* Command IDs from 1000 to 2999 are reserved for use by the SVGA3D
|
||||
* protocol.
|
||||
*
|
||||
* Each command's parameters are described by the comments and
|
||||
@ -1207,6 +1324,7 @@ typedef enum {
|
||||
SVGA_CMD_INVALID_CMD = 0,
|
||||
SVGA_CMD_UPDATE = 1,
|
||||
SVGA_CMD_RECT_COPY = 3,
|
||||
SVGA_CMD_RECT_ROP_COPY = 14,
|
||||
SVGA_CMD_DEFINE_CURSOR = 19,
|
||||
SVGA_CMD_DEFINE_ALPHA_CURSOR = 22,
|
||||
SVGA_CMD_UPDATE_VERBOSE = 25,
|
||||
@ -1222,9 +1340,14 @@ typedef enum {
|
||||
SVGA_CMD_ANNOTATION_COPY = 40,
|
||||
SVGA_CMD_DEFINE_GMR2 = 41,
|
||||
SVGA_CMD_REMAP_GMR2 = 42,
|
||||
SVGA_CMD_DEAD = 43,
|
||||
SVGA_CMD_DEAD_2 = 44,
|
||||
SVGA_CMD_NOP = 45,
|
||||
SVGA_CMD_NOP_ERROR = 46,
|
||||
SVGA_CMD_MAX
|
||||
} SVGAFifoCmdId;
|
||||
|
||||
#define SVGA_CMD_MAX_DATASIZE (256 * 1024)
|
||||
#define SVGA_CMD_MAX_ARGS 64
|
||||
|
||||
|
||||
@ -1257,12 +1380,15 @@ typedef enum {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdUpdate {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 x;
|
||||
uint32 y;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
} SVGAFifoCmdUpdate;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdUpdate;
|
||||
|
||||
|
||||
/*
|
||||
@ -1276,14 +1402,44 @@ struct SVGAFifoCmdUpdate {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdRectCopy {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 srcX;
|
||||
uint32 srcY;
|
||||
uint32 destX;
|
||||
uint32 destY;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
} SVGAFifoCmdRectCopy;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdRectCopy;
|
||||
|
||||
|
||||
/*
|
||||
* SVGA_CMD_RECT_ROP_COPY --
|
||||
*
|
||||
* Perform a rectangular DMA transfer from one area of the GFB to
|
||||
* another, and copy the result to any screens which intersect it.
|
||||
* The value of ROP may only be SVGA_ROP_COPY, and this command is
|
||||
* only supported for backwards compatibility reasons.
|
||||
*
|
||||
* Availability:
|
||||
* SVGA_CAP_RECT_COPY
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 srcX;
|
||||
uint32 srcY;
|
||||
uint32 destX;
|
||||
uint32 destY;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
uint32 rop;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdRectRopCopy;
|
||||
|
||||
|
||||
/*
|
||||
@ -1300,7 +1456,8 @@ struct SVGAFifoCmdRectCopy {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdDefineCursor {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 id; /* Reserved, must be zero. */
|
||||
uint32 hotspotX;
|
||||
uint32 hotspotY;
|
||||
@ -1312,7 +1469,9 @@ struct SVGAFifoCmdDefineCursor {
|
||||
* Followed by scanline data for AND mask, then XOR mask.
|
||||
* Each scanline is padded to a 32-bit boundary.
|
||||
*/
|
||||
} SVGAFifoCmdDefineCursor;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdDefineCursor;
|
||||
|
||||
|
||||
/*
|
||||
@ -1329,14 +1488,17 @@ struct SVGAFifoCmdDefineCursor {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdDefineAlphaCursor {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 id; /* Reserved, must be zero. */
|
||||
uint32 hotspotX;
|
||||
uint32 hotspotY;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
/* Followed by scanline data */
|
||||
} SVGAFifoCmdDefineAlphaCursor;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdDefineAlphaCursor;
|
||||
|
||||
|
||||
/*
|
||||
@ -1352,13 +1514,16 @@ struct SVGAFifoCmdDefineAlphaCursor {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdUpdateVerbose {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 x;
|
||||
uint32 y;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
uint32 reason;
|
||||
} SVGAFifoCmdUpdateVerbose;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdUpdateVerbose;
|
||||
|
||||
|
||||
/*
|
||||
@ -1377,14 +1542,17 @@ struct SVGAFifoCmdUpdateVerbose {
|
||||
#define SVGA_ROP_COPY 0x03
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdFrontRopFill {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 color; /* In the same format as the GFB */
|
||||
uint32 x;
|
||||
uint32 y;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
uint32 rop; /* Must be SVGA_ROP_COPY */
|
||||
} SVGAFifoCmdFrontRopFill;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdFrontRopFill;
|
||||
|
||||
|
||||
/*
|
||||
@ -1403,9 +1571,12 @@ struct SVGAFifoCmdFrontRopFill {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 fence;
|
||||
} SVGAFifoCmdFence;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdFence;
|
||||
|
||||
|
||||
/*
|
||||
@ -1420,11 +1591,14 @@ struct {
|
||||
*/
|
||||
|
||||
typedef
|
||||
struct SVGAFifoCmdEscape {
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 nsid;
|
||||
uint32 size;
|
||||
/* followed by 'size' bytes of data */
|
||||
} SVGAFifoCmdEscape;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdEscape;
|
||||
|
||||
|
||||
/*
|
||||
@ -1454,9 +1628,12 @@ struct SVGAFifoCmdEscape {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGAScreenObject screen; /* Variable-length according to version */
|
||||
} SVGAFifoCmdDefineScreen;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdDefineScreen;
|
||||
|
||||
|
||||
/*
|
||||
@ -1470,9 +1647,12 @@ struct {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 screenId;
|
||||
} SVGAFifoCmdDestroyScreen;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdDestroyScreen;
|
||||
|
||||
|
||||
/*
|
||||
@ -1523,11 +1703,14 @@ struct {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGAGuestPtr ptr;
|
||||
uint32 bytesPerLine;
|
||||
SVGAGMRImageFormat format;
|
||||
} SVGAFifoCmdDefineGMRFB;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdDefineGMRFB;
|
||||
|
||||
|
||||
/*
|
||||
@ -1535,19 +1718,10 @@ struct {
|
||||
*
|
||||
* This is a guest-to-host blit. It performs a DMA operation to
|
||||
* copy a rectangular region of pixels from the current GMRFB to
|
||||
* one or more Screen Objects.
|
||||
* a ScreenObject.
|
||||
*
|
||||
* The destination coordinate may be specified relative to a
|
||||
* screen's origin (if a screen ID is specified) or relative to the
|
||||
* virtual coordinate system's origin (if the screen ID is
|
||||
* SVGA_ID_INVALID). The actual destination may span zero or more
|
||||
* screens, in the case of a virtual destination rect or a rect
|
||||
* which extends off the edge of the specified screen.
|
||||
*
|
||||
* This command writes to the screen's "base layer": the underlying
|
||||
* framebuffer which exists below any cursor or video overlays. No
|
||||
* action is necessary to explicitly hide or update any overlays
|
||||
* which exist on top of the updated region.
|
||||
* screen's origin. The provided screen ID must be valid.
|
||||
*
|
||||
* The SVGA device is guaranteed to finish reading from the GMRFB
|
||||
* by the time any subsequent FENCE commands are reached.
|
||||
@ -1560,46 +1734,27 @@ struct {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGASignedPoint srcOrigin;
|
||||
SVGASignedRect destRect;
|
||||
uint32 destScreenId;
|
||||
} SVGAFifoCmdBlitGMRFBToScreen;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdBlitGMRFBToScreen;
|
||||
|
||||
|
||||
/*
|
||||
* SVGA_CMD_BLIT_SCREEN_TO_GMRFB --
|
||||
*
|
||||
* This is a host-to-guest blit. It performs a DMA operation to
|
||||
* copy a rectangular region of pixels from a single Screen Object
|
||||
* copy a rectangular region of pixels from a single ScreenObject
|
||||
* back to the current GMRFB.
|
||||
*
|
||||
* Usage note: This command should be used rarely. It will
|
||||
* typically be inefficient, but it is necessary for some types of
|
||||
* synchronization between 3D (GPU) and 2D (CPU) rendering into
|
||||
* overlapping areas of a screen.
|
||||
*
|
||||
* The source coordinate is specified relative to a screen's
|
||||
* origin. The provided screen ID must be valid. If any parameters
|
||||
* origin. The provided screen ID must be valid. If any parameters
|
||||
* are invalid, the resulting pixel values are undefined.
|
||||
*
|
||||
* This command reads the screen's "base layer". Overlays like
|
||||
* video and cursor are not included, but any data which was sent
|
||||
* using a blit-to-screen primitive will be available, no matter
|
||||
* whether the data's original source was the GMRFB or the 3D
|
||||
* acceleration hardware.
|
||||
*
|
||||
* Note that our guest-to-host blits and host-to-guest blits aren't
|
||||
* symmetric in their current implementation. While the parameters
|
||||
* are identical, host-to-guest blits are a lot less featureful.
|
||||
* They do not support clipping: If the source parameters don't
|
||||
* fully fit within a screen, the blit fails. They must originate
|
||||
* from exactly one screen. Virtual coordinates are not directly
|
||||
* supported.
|
||||
*
|
||||
* Host-to-guest blits do support the same set of GMRFB formats
|
||||
* offered by guest-to-host blits.
|
||||
*
|
||||
* The SVGA device is guaranteed to finish writing to the GMRFB by
|
||||
* the time any subsequent FENCE commands are reached.
|
||||
*
|
||||
@ -1608,77 +1763,57 @@ struct {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGASignedPoint destOrigin;
|
||||
SVGASignedRect srcRect;
|
||||
uint32 srcScreenId;
|
||||
} SVGAFifoCmdBlitScreenToGMRFB;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdBlitScreenToGMRFB;
|
||||
|
||||
|
||||
/*
|
||||
* SVGA_CMD_ANNOTATION_FILL --
|
||||
*
|
||||
* This is a blit annotation. This command stores a small piece of
|
||||
* device state which is consumed by the next blit-to-screen
|
||||
* command. The state is only cleared by commands which are
|
||||
* specifically documented as consuming an annotation. Other
|
||||
* commands (such as ESCAPEs for debugging) may intervene between
|
||||
* the annotation and its associated blit.
|
||||
*
|
||||
* This annotation is a promise about the contents of the next
|
||||
* blit: The video driver is guaranteeing that all pixels in that
|
||||
* blit will have the same value, specified here as a color in
|
||||
* SVGAColorBGRX format.
|
||||
*
|
||||
* The SVGA device can still render the blit correctly even if it
|
||||
* ignores this annotation, but the annotation may allow it to
|
||||
* perform the blit more efficiently, for example by ignoring the
|
||||
* source data and performing a fill in hardware.
|
||||
*
|
||||
* This annotation is most important for performance when the
|
||||
* user's display is being remoted over a network connection.
|
||||
* The annotation commands have been deprecated, should not be used
|
||||
* by new drivers. They used to provide performance hints to the SVGA
|
||||
* device about the content of screen updates, but newer SVGA devices
|
||||
* ignore these.
|
||||
*
|
||||
* Availability:
|
||||
* SVGA_FIFO_CAP_SCREEN_OBJECT or SVGA_FIFO_CAP_SCREEN_OBJECT_2
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGAColorBGRX color;
|
||||
} SVGAFifoCmdAnnotationFill;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdAnnotationFill;
|
||||
|
||||
|
||||
/*
|
||||
* SVGA_CMD_ANNOTATION_COPY --
|
||||
*
|
||||
* This is a blit annotation. See SVGA_CMD_ANNOTATION_FILL for more
|
||||
* information about annotations.
|
||||
*
|
||||
* This annotation is a promise about the contents of the next
|
||||
* blit: The video driver is guaranteeing that all pixels in that
|
||||
* blit will have the same value as those which already exist at an
|
||||
* identically-sized region on the same or a different screen.
|
||||
*
|
||||
* Note that the source pixels for the COPY in this annotation are
|
||||
* sampled before applying the anqnotation's associated blit. They
|
||||
* are allowed to overlap with the blit's destination pixels.
|
||||
*
|
||||
* The copy source rectangle is specified the same way as the blit
|
||||
* destination: it can be a rectangle which spans zero or more
|
||||
* screens, specified relative to either a screen or to the virtual
|
||||
* coordinate system's origin. If the source rectangle includes
|
||||
* pixels which are not from exactly one screen, the results are
|
||||
* undefined.
|
||||
* The annotation commands have been deprecated, should not be used
|
||||
* by new drivers. They used to provide performance hints to the SVGA
|
||||
* device about the content of screen updates, but newer SVGA devices
|
||||
* ignore these.
|
||||
*
|
||||
* Availability:
|
||||
* SVGA_FIFO_CAP_SCREEN_OBJECT or SVGA_FIFO_CAP_SCREEN_OBJECT_2
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
SVGASignedPoint srcOrigin;
|
||||
uint32 srcScreenId;
|
||||
} SVGAFifoCmdAnnotationCopy;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdAnnotationCopy;
|
||||
|
||||
|
||||
/*
|
||||
@ -1691,10 +1826,13 @@ struct {
|
||||
*/
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 gmrId;
|
||||
uint32 numPages;
|
||||
} SVGAFifoCmdDefineGMR2;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdDefineGMR2;
|
||||
|
||||
|
||||
/*
|
||||
@ -1733,6 +1871,7 @@ typedef enum {
|
||||
} SVGARemapGMR2Flags;
|
||||
|
||||
typedef
|
||||
#include "vmware_pack_begin.h"
|
||||
struct {
|
||||
uint32 gmrId;
|
||||
SVGARemapGMR2Flags flags;
|
||||
@ -1746,6 +1885,52 @@ struct {
|
||||
* (according to flag SVGA_REMAP_GMR2_PPN64) follows. If flag
|
||||
* SVGA_REMAP_GMR2_SINGLE_PPN is set, array contains a single entry.
|
||||
*/
|
||||
} SVGAFifoCmdRemapGMR2;
|
||||
}
|
||||
#include "vmware_pack_end.h"
|
||||
SVGAFifoCmdRemapGMR2;
|
||||
|
||||
|
||||
/*
|
||||
* Size of SVGA device memory such as frame buffer and FIFO.
|
||||
*/
|
||||
#define SVGA_VRAM_MIN_SIZE (4 * 640 * 480) /* bytes */
|
||||
#define SVGA_VRAM_MIN_SIZE_3D (16 * 1024 * 1024)
|
||||
#define SVGA_VRAM_MAX_SIZE (128 * 1024 * 1024)
|
||||
#define SVGA_MEMORY_SIZE_MAX (1024 * 1024 * 1024)
|
||||
#define SVGA_FIFO_SIZE_MAX (2 * 1024 * 1024)
|
||||
#define SVGA_GRAPHICS_MEMORY_KB_MIN (32 * 1024)
|
||||
#define SVGA_GRAPHICS_MEMORY_KB_MAX (2 * 1024 * 1024)
|
||||
#define SVGA_GRAPHICS_MEMORY_KB_DEFAULT (256 * 1024)
|
||||
|
||||
#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)
|
||||
#define SVGA_FIFO_SIZE (256 * 1024)
|
||||
#define SVGA_FIFO_SIZE_3D (516 * 1024)
|
||||
#define SVGA_MEMORY_SIZE_DEFAULT (160 * 1024 * 1024)
|
||||
#define SVGA_AUTODETECT_DEFAULT FALSE
|
||||
#else
|
||||
#define SVGA_VRAM_SIZE (16 * 1024 * 1024)
|
||||
#define SVGA_VRAM_SIZE_3D SVGA_VRAM_MAX_SIZE
|
||||
#define SVGA_FIFO_SIZE (2 * 1024 * 1024)
|
||||
#define SVGA_FIFO_SIZE_3D SVGA_FIFO_SIZE
|
||||
#define SVGA_MEMORY_SIZE_DEFAULT (768 * 1024 * 1024)
|
||||
#define SVGA_AUTODETECT_DEFAULT TRUE
|
||||
#endif
|
||||
|
||||
#define SVGA_FIFO_SIZE_GBOBJECTS (256 * 1024)
|
||||
#define SVGA_VRAM_SIZE_GBOBJECTS (4 * 1024 * 1024)
|
||||
|
||||
#endif
|
46
drivers/gpu/drm/vmwgfx/device_include/svga_types.h
Normal file
46
drivers/gpu/drm/vmwgfx/device_include/svga_types.h
Normal file
@ -0,0 +1,46 @@
|
||||
/**********************************************************
|
||||
* Copyright 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.
|
||||
*
|
||||
**********************************************************/
|
||||
#ifndef _VM_BASIC_TYPES_H_
|
||||
#define _VM_BASIC_TYPES_H_
|
||||
#include <linux/kernel.h>
|
||||
|
||||
typedef u32 uint32;
|
||||
typedef s32 int32;
|
||||
typedef u64 uint64;
|
||||
typedef u16 uint16;
|
||||
typedef s16 int16;
|
||||
typedef u8 uint8;
|
||||
typedef s8 int8;
|
||||
|
||||
typedef uint64 PA;
|
||||
typedef uint32 PPN;
|
||||
typedef uint64 PPN64;
|
||||
|
||||
typedef bool Bool;
|
||||
|
||||
#define MAX_UINT32 U32_MAX
|
||||
#define MAX_UINT16 U16_MAX
|
||||
|
||||
#endif
|
21
drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h
Normal file
21
drivers/gpu/drm/vmwgfx/device_include/vm_basic_types.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef _VM_BASIC_TYPES_H_
|
||||
#define _VM_BASIC_TYPES_H_
|
||||
#include <linux/kernel.h>
|
||||
|
||||
typedef u32 uint32;
|
||||
typedef s32 int32;
|
||||
typedef u64 uint64;
|
||||
typedef u16 uint16;
|
||||
typedef s16 int16;
|
||||
typedef u8 uint8;
|
||||
typedef s8 int8;
|
||||
|
||||
typedef uint64 PA;
|
||||
typedef uint32 PPN;
|
||||
typedef uint64 PPN64;
|
||||
|
||||
typedef bool Bool;
|
||||
|
||||
#define MAX_UINT32 U32_MAX
|
||||
|
||||
#endif
|
25
drivers/gpu/drm/vmwgfx/device_include/vmware_pack_begin.h
Normal file
25
drivers/gpu/drm/vmwgfx/device_include/vmware_pack_begin.h
Normal file
@ -0,0 +1,25 @@
|
||||
/**********************************************************
|
||||
* Copyright 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.
|
||||
*
|
||||
**********************************************************/
|
||||
#include <linux/compiler.h>
|
25
drivers/gpu/drm/vmwgfx/device_include/vmware_pack_end.h
Normal file
25
drivers/gpu/drm/vmwgfx/device_include/vmware_pack_end.h
Normal file
@ -0,0 +1,25 @@
|
||||
/**********************************************************
|
||||
* Copyright 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.
|
||||
*
|
||||
**********************************************************/
|
||||
__packed
|
File diff suppressed because it is too large
Load Diff
@ -1,973 +0,0 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright © 2008-2012 VMware, Inc., Palo Alto, CA., USA
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <drm/vmwgfx_drm.h>
|
||||
#define surf_size_struct struct drm_vmw_size
|
||||
|
||||
#else /* __KERNEL__ */
|
||||
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(_A) (sizeof(_A) / sizeof((_A)[0]))
|
||||
#endif /* ARRAY_SIZE */
|
||||
|
||||
#define DIV_ROUND_UP(x, y) (((x) + (y) - 1) / (y))
|
||||
#define max_t(type, x, y) ((x) > (y) ? (x) : (y))
|
||||
#define min_t(type, x, y) ((x) < (y) ? (x) : (y))
|
||||
#define surf_size_struct SVGA3dSize
|
||||
#define u32 uint32
|
||||
#define u64 uint64_t
|
||||
#define U32_MAX ((u32)~0U)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#include "svga3d_reg.h"
|
||||
|
||||
/*
|
||||
* enum svga3d_block_desc describes the active data channels in a block.
|
||||
*
|
||||
* There can be at-most four active channels in a block:
|
||||
* 1. Red, bump W, luminance and depth are stored in the first channel.
|
||||
* 2. Green, bump V and stencil are stored in the second channel.
|
||||
* 3. Blue and bump U are stored in the third channel.
|
||||
* 4. Alpha and bump Q are stored in the fourth channel.
|
||||
*
|
||||
* Block channels can be used to store compressed and buffer data:
|
||||
* 1. For compressed formats, only the data channel is used and its size
|
||||
* is equal to that of a singular block in the compression scheme.
|
||||
* 2. For buffer formats, only the data channel is used and its size is
|
||||
* exactly one byte in length.
|
||||
* 3. In each case the bit depth represent the size of a singular block.
|
||||
*
|
||||
* Note: Compressed and IEEE formats do not use the bitMask structure.
|
||||
*/
|
||||
|
||||
enum svga3d_block_desc {
|
||||
SVGA3DBLOCKDESC_NONE = 0, /* No channels are active */
|
||||
SVGA3DBLOCKDESC_BLUE = 1 << 0, /* Block with red channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_U = 1 << 0, /* Block with bump U channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_UV_VIDEO = 1 << 7, /* Block with alternating video
|
||||
U and V */
|
||||
SVGA3DBLOCKDESC_GREEN = 1 << 1, /* Block with green channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_V = 1 << 1, /* Block with bump V channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_STENCIL = 1 << 1, /* Block with a stencil
|
||||
channel */
|
||||
SVGA3DBLOCKDESC_RED = 1 << 2, /* Block with blue channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_W = 1 << 2, /* Block with bump W channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_LUMINANCE = 1 << 2, /* Block with luminance channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_Y = 1 << 2, /* Block with video luminance
|
||||
data */
|
||||
SVGA3DBLOCKDESC_DEPTH = 1 << 2, /* Block with depth channel */
|
||||
SVGA3DBLOCKDESC_ALPHA = 1 << 3, /* Block with an alpha
|
||||
channel */
|
||||
SVGA3DBLOCKDESC_Q = 1 << 3, /* Block with bump Q channel
|
||||
data */
|
||||
SVGA3DBLOCKDESC_BUFFER = 1 << 4, /* Block stores 1 byte of
|
||||
data */
|
||||
SVGA3DBLOCKDESC_COMPRESSED = 1 << 5, /* Block stores n bytes of
|
||||
data depending on the
|
||||
compression method used */
|
||||
SVGA3DBLOCKDESC_IEEE_FP = 1 << 6, /* Block stores data in an IEEE
|
||||
floating point
|
||||
representation in
|
||||
all channels */
|
||||
SVGA3DBLOCKDESC_PLANAR_YUV = 1 << 8, /* Three separate blocks store
|
||||
data. */
|
||||
SVGA3DBLOCKDESC_U_VIDEO = 1 << 9, /* Block with U video data */
|
||||
SVGA3DBLOCKDESC_V_VIDEO = 1 << 10, /* Block with V video data */
|
||||
SVGA3DBLOCKDESC_EXP = 1 << 11, /* Shared exponent */
|
||||
SVGA3DBLOCKDESC_SRGB = 1 << 12, /* Data is in sRGB format */
|
||||
SVGA3DBLOCKDESC_2PLANAR_YUV = 1 << 13, /* 2 planes of Y, UV,
|
||||
e.g., NV12. */
|
||||
SVGA3DBLOCKDESC_3PLANAR_YUV = 1 << 14, /* 3 planes of separate
|
||||
Y, U, V, e.g., YV12. */
|
||||
|
||||
SVGA3DBLOCKDESC_RG = SVGA3DBLOCKDESC_RED |
|
||||
SVGA3DBLOCKDESC_GREEN,
|
||||
SVGA3DBLOCKDESC_RGB = SVGA3DBLOCKDESC_RG |
|
||||
SVGA3DBLOCKDESC_BLUE,
|
||||
SVGA3DBLOCKDESC_RGB_SRGB = SVGA3DBLOCKDESC_RGB |
|
||||
SVGA3DBLOCKDESC_SRGB,
|
||||
SVGA3DBLOCKDESC_RGBA = SVGA3DBLOCKDESC_RGB |
|
||||
SVGA3DBLOCKDESC_ALPHA,
|
||||
SVGA3DBLOCKDESC_RGBA_SRGB = SVGA3DBLOCKDESC_RGBA |
|
||||
SVGA3DBLOCKDESC_SRGB,
|
||||
SVGA3DBLOCKDESC_UV = SVGA3DBLOCKDESC_U |
|
||||
SVGA3DBLOCKDESC_V,
|
||||
SVGA3DBLOCKDESC_UVL = SVGA3DBLOCKDESC_UV |
|
||||
SVGA3DBLOCKDESC_LUMINANCE,
|
||||
SVGA3DBLOCKDESC_UVW = SVGA3DBLOCKDESC_UV |
|
||||
SVGA3DBLOCKDESC_W,
|
||||
SVGA3DBLOCKDESC_UVWA = SVGA3DBLOCKDESC_UVW |
|
||||
SVGA3DBLOCKDESC_ALPHA,
|
||||
SVGA3DBLOCKDESC_UVWQ = SVGA3DBLOCKDESC_U |
|
||||
SVGA3DBLOCKDESC_V |
|
||||
SVGA3DBLOCKDESC_W |
|
||||
SVGA3DBLOCKDESC_Q,
|
||||
SVGA3DBLOCKDESC_LA = SVGA3DBLOCKDESC_LUMINANCE |
|
||||
SVGA3DBLOCKDESC_ALPHA,
|
||||
SVGA3DBLOCKDESC_R_FP = SVGA3DBLOCKDESC_RED |
|
||||
SVGA3DBLOCKDESC_IEEE_FP,
|
||||
SVGA3DBLOCKDESC_RG_FP = SVGA3DBLOCKDESC_R_FP |
|
||||
SVGA3DBLOCKDESC_GREEN,
|
||||
SVGA3DBLOCKDESC_RGB_FP = SVGA3DBLOCKDESC_RG_FP |
|
||||
SVGA3DBLOCKDESC_BLUE,
|
||||
SVGA3DBLOCKDESC_RGBA_FP = SVGA3DBLOCKDESC_RGB_FP |
|
||||
SVGA3DBLOCKDESC_ALPHA,
|
||||
SVGA3DBLOCKDESC_DS = SVGA3DBLOCKDESC_DEPTH |
|
||||
SVGA3DBLOCKDESC_STENCIL,
|
||||
SVGA3DBLOCKDESC_YUV = SVGA3DBLOCKDESC_UV_VIDEO |
|
||||
SVGA3DBLOCKDESC_Y,
|
||||
SVGA3DBLOCKDESC_AYUV = SVGA3DBLOCKDESC_ALPHA |
|
||||
SVGA3DBLOCKDESC_Y |
|
||||
SVGA3DBLOCKDESC_U_VIDEO |
|
||||
SVGA3DBLOCKDESC_V_VIDEO,
|
||||
SVGA3DBLOCKDESC_RGBE = SVGA3DBLOCKDESC_RGB |
|
||||
SVGA3DBLOCKDESC_EXP,
|
||||
SVGA3DBLOCKDESC_COMPRESSED_SRGB = SVGA3DBLOCKDESC_COMPRESSED |
|
||||
SVGA3DBLOCKDESC_SRGB,
|
||||
SVGA3DBLOCKDESC_NV12 = SVGA3DBLOCKDESC_PLANAR_YUV |
|
||||
SVGA3DBLOCKDESC_2PLANAR_YUV,
|
||||
SVGA3DBLOCKDESC_YV12 = SVGA3DBLOCKDESC_PLANAR_YUV |
|
||||
SVGA3DBLOCKDESC_3PLANAR_YUV,
|
||||
};
|
||||
|
||||
/*
|
||||
* SVGA3dSurfaceDesc describes the actual pixel data.
|
||||
*
|
||||
* This structure provides the following information:
|
||||
* 1. Block description.
|
||||
* 2. Dimensions of a block in the surface.
|
||||
* 3. Size of block in bytes.
|
||||
* 4. Bit depth of the pixel data.
|
||||
* 5. Channel bit depths and masks (if applicable).
|
||||
*/
|
||||
#define SVGA3D_CHANNEL_DEF(type) \
|
||||
struct { \
|
||||
union { \
|
||||
type blue; \
|
||||
type u; \
|
||||
type uv_video; \
|
||||
type u_video; \
|
||||
}; \
|
||||
union { \
|
||||
type green; \
|
||||
type v; \
|
||||
type stencil; \
|
||||
type v_video; \
|
||||
}; \
|
||||
union { \
|
||||
type red; \
|
||||
type w; \
|
||||
type luminance; \
|
||||
type y; \
|
||||
type depth; \
|
||||
type data; \
|
||||
}; \
|
||||
union { \
|
||||
type alpha; \
|
||||
type q; \
|
||||
type exp; \
|
||||
}; \
|
||||
}
|
||||
|
||||
struct svga3d_surface_desc {
|
||||
enum svga3d_block_desc block_desc;
|
||||
surf_size_struct block_size;
|
||||
u32 bytes_per_block;
|
||||
u32 pitch_bytes_per_block;
|
||||
|
||||
struct {
|
||||
u32 total;
|
||||
SVGA3D_CHANNEL_DEF(uint8);
|
||||
} bit_depth;
|
||||
|
||||
struct {
|
||||
SVGA3D_CHANNEL_DEF(uint8);
|
||||
} bit_offset;
|
||||
};
|
||||
|
||||
static const struct svga3d_surface_desc svga3d_surface_descs[] = {
|
||||
{SVGA3DBLOCKDESC_NONE,
|
||||
{1, 1, 1}, 0, 0, {0, {{0}, {0}, {0}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_FORMAT_INVALID */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB,
|
||||
{1, 1, 1}, 4, 4, {24, {{8}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_X8R8G8B8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_A8R8G8B8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB,
|
||||
{1, 1, 1}, 2, 2, {16, {{5}, {6}, {5}, {0} } },
|
||||
{{{0}, {5}, {11}, {0} } } }, /* SVGA3D_R5G6B5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB,
|
||||
{1, 1, 1}, 2, 2, {15, {{5}, {5}, {5}, {0} } },
|
||||
{{{0}, {5}, {10}, {0} } } }, /* SVGA3D_X1R5G5B5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 2, 2, {16, {{5}, {5}, {5}, {1} } },
|
||||
{{{0}, {5}, {10}, {15} } } }, /* SVGA3D_A1R5G5B5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 2, 2, {16, {{4}, {4}, {4}, {4} } },
|
||||
{{{0}, {4}, {8}, {12} } } }, /* SVGA3D_A4R4G4B4 */
|
||||
|
||||
{SVGA3DBLOCKDESC_DEPTH,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_Z_D32 */
|
||||
|
||||
{SVGA3DBLOCKDESC_DEPTH,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_Z_D16 */
|
||||
|
||||
{SVGA3DBLOCKDESC_DS,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {8}, {24}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_Z_D24S8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_DS,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {1}, {15}, {0} } },
|
||||
{{{0}, {15}, {0}, {0} } } }, /* SVGA3D_Z_D15S1 */
|
||||
|
||||
{SVGA3DBLOCKDESC_LUMINANCE,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_LUMINANCE8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_LA,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {4}, {4} } },
|
||||
{{{0}, {0}, {0}, {4} } } }, /* SVGA3D_LUMINANCE4_ALPHA4 */
|
||||
|
||||
{SVGA3DBLOCKDESC_LUMINANCE,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_LUMINANCE16 */
|
||||
|
||||
{SVGA3DBLOCKDESC_LA,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {8}, {8} } },
|
||||
{{{0}, {0}, {0}, {8} } } }, /* SVGA3D_LUMINANCE8_ALPHA8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 8, 8, {64, {{0}, {0}, {64}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_DXT1 */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_DXT2 */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_DXT3 */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_DXT4 */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_DXT5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {8}, {8} } },
|
||||
{{{0}, {0}, {0}, {8} } } }, /* SVGA3D_BUMPU8V8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVL,
|
||||
{1, 1, 1}, 2, 2, {16, {{5}, {5}, {6}, {0} } },
|
||||
{{{11}, {6}, {0}, {0} } } }, /* SVGA3D_BUMPL6V5U5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVL,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {0} } },
|
||||
{{{16}, {8}, {0}, {0} } } }, /* SVGA3D_BUMPX8L8V8U8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVL,
|
||||
{1, 1, 1}, 3, 3, {24, {{8}, {8}, {8}, {0} } },
|
||||
{{{16}, {8}, {0}, {0} } } }, /* SVGA3D_BUMPL8V8U8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA_FP,
|
||||
{1, 1, 1}, 8, 8, {64, {{16}, {16}, {16}, {16} } },
|
||||
{{{32}, {16}, {0}, {48} } } }, /* SVGA3D_ARGB_S10E5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA_FP,
|
||||
{1, 1, 1}, 16, 16, {128, {{32}, {32}, {32}, {32} } },
|
||||
{{{64}, {32}, {0}, {96} } } }, /* SVGA3D_ARGB_S23E8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{10}, {10}, {10}, {2} } },
|
||||
{{{0}, {10}, {20}, {30} } } }, /* SVGA3D_A2R10G10B10 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 2, 2, {16, {{8}, {8}, {0}, {0} } },
|
||||
{{{8}, {0}, {0}, {0} } } }, /* SVGA3D_V8U8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVWQ,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{24}, {16}, {8}, {0} } } }, /* SVGA3D_Q8W8V8U8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 2, 2, {16, {{8}, {8}, {0}, {0} } },
|
||||
{{{8}, {0}, {0}, {0} } } }, /* SVGA3D_CxV8U8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVL,
|
||||
{1, 1, 1}, 4, 4, {24, {{8}, {8}, {8}, {0} } },
|
||||
{{{16}, {8}, {0}, {0} } } }, /* SVGA3D_X8L8V8U8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVWA,
|
||||
{1, 1, 1}, 4, 4, {32, {{10}, {10}, {10}, {2} } },
|
||||
{{{0}, {10}, {20}, {30} } } }, /* SVGA3D_A2W10V10U10 */
|
||||
|
||||
{SVGA3DBLOCKDESC_ALPHA,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {0}, {8} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_ALPHA8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_R_FP,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R_S10E5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_R_FP,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R_S23E8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG_FP,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {16}, {16}, {0} } },
|
||||
{{{0}, {16}, {0}, {0} } } }, /* SVGA3D_RG_S10E5 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG_FP,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {32}, {32}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_RG_S23E8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_BUFFER,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BUFFER */
|
||||
|
||||
{SVGA3DBLOCKDESC_DEPTH,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {24}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_Z_D24X8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 4, 4, {32, {{16}, {16}, {0}, {0} } },
|
||||
{{{16}, {0}, {0}, {0} } } }, /* SVGA3D_V16U16 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {16}, {16}, {0} } },
|
||||
{{{0}, {0}, {16}, {0} } } }, /* SVGA3D_G16R16 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 8, 8, {64, {{16}, {16}, {16}, {16} } },
|
||||
{{{32}, {16}, {0}, {48} } } }, /* SVGA3D_A16B16G16R16 */
|
||||
|
||||
{SVGA3DBLOCKDESC_YUV,
|
||||
{1, 1, 1}, 2, 2, {16, {{8}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {8}, {0} } } }, /* SVGA3D_UYVY */
|
||||
|
||||
{SVGA3DBLOCKDESC_YUV,
|
||||
{1, 1, 1}, 2, 2, {16, {{8}, {0}, {8}, {0} } },
|
||||
{{{8}, {0}, {0}, {0} } } }, /* SVGA3D_YUY2 */
|
||||
|
||||
{SVGA3DBLOCKDESC_NV12,
|
||||
{2, 2, 1}, 6, 2, {48, {{0}, {0}, {48}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_NV12 */
|
||||
|
||||
{SVGA3DBLOCKDESC_AYUV,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_AYUV */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 16, 16, {128, {{32}, {32}, {32}, {32} } },
|
||||
{{{64}, {32}, {0}, {96} } } }, /* SVGA3D_R32G32B32A32_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 16, 16, {128, {{32}, {32}, {32}, {32} } },
|
||||
{{{64}, {32}, {0}, {96} } } }, /* SVGA3D_R32G32B32A32_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVWQ,
|
||||
{1, 1, 1}, 16, 16, {128, {{32}, {32}, {32}, {32} } },
|
||||
{{{64}, {32}, {0}, {96} } } }, /* SVGA3D_R32G32B32A32_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB,
|
||||
{1, 1, 1}, 12, 12, {96, {{32}, {32}, {32}, {0} } },
|
||||
{{{64}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32B32_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB_FP,
|
||||
{1, 1, 1}, 12, 12, {96, {{32}, {32}, {32}, {0} } },
|
||||
{{{64}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32B32_FLOAT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB,
|
||||
{1, 1, 1}, 12, 12, {96, {{32}, {32}, {32}, {0} } },
|
||||
{{{64}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32B32_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVW,
|
||||
{1, 1, 1}, 12, 12, {96, {{32}, {32}, {32}, {0} } },
|
||||
{{{64}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32B32_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 8, 8, {64, {{16}, {16}, {16}, {16} } },
|
||||
{{{32}, {16}, {0}, {48} } } }, /* SVGA3D_R16G16B16A16_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 8, 8, {64, {{16}, {16}, {16}, {16} } },
|
||||
{{{32}, {16}, {0}, {48} } } }, /* SVGA3D_R16G16B16A16_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVWQ,
|
||||
{1, 1, 1}, 8, 8, {64, {{16}, {16}, {16}, {16} } },
|
||||
{{{32}, {16}, {0}, {48} } } }, /* SVGA3D_R16G16B16A16_SNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_UVWQ,
|
||||
{1, 1, 1}, 8, 8, {64, {{16}, {16}, {16}, {16} } },
|
||||
{{{32}, {16}, {0}, {48} } } }, /* SVGA3D_R16G16B16A16_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {32}, {32}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {32}, {32}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {32}, {32}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_R32G32_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {8}, {32}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_R32G8X24_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_DS,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {8}, {32}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_D32_FLOAT_S8X24_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_R_FP,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R32_FLOAT_X8_X24_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_GREEN,
|
||||
{1, 1, 1}, 8, 8, {64, {{0}, {8}, {0}, {0} } },
|
||||
{{{0}, {32}, {0}, {0} } } }, /* SVGA3D_X32_TYPELESS_G8X24_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{10}, {10}, {10}, {2} } },
|
||||
{{{0}, {10}, {20}, {30} } } }, /* SVGA3D_R10G10B10A2_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{10}, {10}, {10}, {2} } },
|
||||
{{{0}, {10}, {20}, {30} } } }, /* SVGA3D_R10G10B10A2_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB_FP,
|
||||
{1, 1, 1}, 4, 4, {32, {{10}, {11}, {11}, {0} } },
|
||||
{{{0}, {10}, {21}, {0} } } }, /* SVGA3D_R11G11B10_FLOAT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{16}, {8}, {0}, {24} } } }, /* SVGA3D_R8G8B8A8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{16}, {8}, {0}, {24} } } }, /* SVGA3D_R8G8B8A8_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA_SRGB,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{16}, {8}, {0}, {24} } } }, /* SVGA3D_R8G8B8A8_UNORM_SRGB */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{16}, {8}, {0}, {24} } } }, /* SVGA3D_R8G8B8A8_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{16}, {8}, {0}, {24} } } }, /* SVGA3D_R8G8B8A8_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {16}, {16}, {0} } },
|
||||
{{{0}, {16}, {0}, {0} } } }, /* SVGA3D_R16G16_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG_FP,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {16}, {16}, {0} } },
|
||||
{{{0}, {16}, {0}, {0} } } }, /* SVGA3D_R16G16_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {16}, {16}, {0} } },
|
||||
{{{0}, {16}, {0}, {0} } } }, /* SVGA3D_R16G16_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R32_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_DEPTH,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_D32_FLOAT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R32_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {32}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R32_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {8}, {24}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_R24G8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_DS,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {8}, {24}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_D24_UNORM_S8_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {0}, {24}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R24_UNORM_X8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_GREEN,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {8}, {0}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_X24_TYPELESS_G8_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {0}, {0} } } }, /* SVGA3D_R8G8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {0}, {0} } } }, /* SVGA3D_R8G8_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {0}, {0} } } }, /* SVGA3D_R8G8_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_UV,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {0}, {0} } } }, /* SVGA3D_R8G8_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R16_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R16_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R16_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_U,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R16_SNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_U,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R16_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R8_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RED,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R8_UINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_U,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R8_SNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_U,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_R8_SINT */
|
||||
|
||||
{SVGA3DBLOCKDESC_NONE,
|
||||
{1, 1, 1}, 1, 1, {8, {{0}, {0}, {8}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_P8 */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBE,
|
||||
{1, 1, 1}, 4, 4, {32, {{9}, {9}, {9}, {5} } },
|
||||
{{{18}, {9}, {0}, {27} } } }, /* SVGA3D_R9G9B9E5_SHAREDEXP */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {0}, {0} } } }, /* SVGA3D_R8G8_B8G8_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RG,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {0}, {0} } } }, /* SVGA3D_G8R8_G8B8_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 8, 8, {64, {{0}, {0}, {64}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC1_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED_SRGB,
|
||||
{4, 4, 1}, 8, 8, {64, {{0}, {0}, {64}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC1_UNORM_SRGB */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC2_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED_SRGB,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC2_UNORM_SRGB */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC3_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED_SRGB,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC3_UNORM_SRGB */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 8, 8, {64, {{0}, {0}, {64}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC4_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 8, 8, {64, {{0}, {0}, {64}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC4_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 8, 8, {64, {{0}, {0}, {64}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC4_SNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC5_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC5_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_COMPRESSED,
|
||||
{4, 4, 1}, 16, 16, {128, {{0}, {0}, {128}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_BC5_SNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{10}, {10}, {10}, {2} } },
|
||||
{{{0}, {10}, {20}, {30} } } }, /* SVGA3D_R10G10B10_XR_BIAS_A2_UNORM */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_B8G8R8A8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGBA_SRGB,
|
||||
{1, 1, 1}, 4, 4, {32, {{8}, {8}, {8}, {8} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_B8G8R8A8_UNORM_SRGB */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB,
|
||||
{1, 1, 1}, 4, 4, {24, {{8}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_B8G8R8X8_TYPELESS */
|
||||
|
||||
{SVGA3DBLOCKDESC_RGB_SRGB,
|
||||
{1, 1, 1}, 4, 4, {24, {{8}, {8}, {8}, {0} } },
|
||||
{{{0}, {8}, {16}, {24} } } }, /* SVGA3D_B8G8R8X8_UNORM_SRGB */
|
||||
|
||||
{SVGA3DBLOCKDESC_DEPTH,
|
||||
{1, 1, 1}, 2, 2, {16, {{0}, {0}, {16}, {0} } },
|
||||
{{{0}, {0}, {0}, {0} } } }, /* SVGA3D_Z_DF16 */
|
||||
|
||||
{SVGA3DBLOCKDESC_DS,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {8}, {24}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_Z_DF24 */
|
||||
|
||||
{SVGA3DBLOCKDESC_DS,
|
||||
{1, 1, 1}, 4, 4, {32, {{0}, {8}, {24}, {0} } },
|
||||
{{{0}, {24}, {0}, {0} } } }, /* SVGA3D_Z_D24S8_INT */
|
||||
};
|
||||
|
||||
static inline u32 clamped_umul32(u32 a, u32 b)
|
||||
{
|
||||
u64 tmp = (u64) a*b;
|
||||
return (tmp > (u64) U32_MAX) ? U32_MAX : tmp;
|
||||
}
|
||||
|
||||
static inline const struct svga3d_surface_desc *
|
||||
svga3dsurface_get_desc(SVGA3dSurfaceFormat format)
|
||||
{
|
||||
if (format < ARRAY_SIZE(svga3d_surface_descs))
|
||||
return &svga3d_surface_descs[format];
|
||||
|
||||
return &svga3d_surface_descs[SVGA3D_FORMAT_INVALID];
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* svga3dsurface_get_mip_size --
|
||||
*
|
||||
* Given a base level size and the mip level, compute the size of
|
||||
* the mip level.
|
||||
*
|
||||
* Results:
|
||||
* See above.
|
||||
*
|
||||
* Side effects:
|
||||
* None.
|
||||
*
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static inline surf_size_struct
|
||||
svga3dsurface_get_mip_size(surf_size_struct base_level, u32 mip_level)
|
||||
{
|
||||
surf_size_struct size;
|
||||
|
||||
size.width = max_t(u32, base_level.width >> mip_level, 1);
|
||||
size.height = max_t(u32, base_level.height >> mip_level, 1);
|
||||
size.depth = max_t(u32, base_level.depth >> mip_level, 1);
|
||||
return size;
|
||||
}
|
||||
|
||||
static inline void
|
||||
svga3dsurface_get_size_in_blocks(const struct svga3d_surface_desc *desc,
|
||||
const surf_size_struct *pixel_size,
|
||||
surf_size_struct *block_size)
|
||||
{
|
||||
block_size->width = DIV_ROUND_UP(pixel_size->width,
|
||||
desc->block_size.width);
|
||||
block_size->height = DIV_ROUND_UP(pixel_size->height,
|
||||
desc->block_size.height);
|
||||
block_size->depth = DIV_ROUND_UP(pixel_size->depth,
|
||||
desc->block_size.depth);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
svga3dsurface_is_planar_surface(const struct svga3d_surface_desc *desc)
|
||||
{
|
||||
return (desc->block_desc & SVGA3DBLOCKDESC_PLANAR_YUV) != 0;
|
||||
}
|
||||
|
||||
static inline u32
|
||||
svga3dsurface_calculate_pitch(const struct svga3d_surface_desc *desc,
|
||||
const surf_size_struct *size)
|
||||
{
|
||||
u32 pitch;
|
||||
surf_size_struct blocks;
|
||||
|
||||
svga3dsurface_get_size_in_blocks(desc, size, &blocks);
|
||||
|
||||
pitch = blocks.width * desc->pitch_bytes_per_block;
|
||||
|
||||
return pitch;
|
||||
}
|
||||
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
* svga3dsurface_get_image_buffer_size --
|
||||
*
|
||||
* Return the number of bytes of buffer space required to store
|
||||
* one image of a surface, optionally using the specified pitch.
|
||||
*
|
||||
* If pitch is zero, it is assumed that rows are tightly packed.
|
||||
*
|
||||
* This function is overflow-safe. If the result would have
|
||||
* overflowed, instead we return MAX_UINT32.
|
||||
*
|
||||
* Results:
|
||||
* Byte count.
|
||||
*
|
||||
* Side effects:
|
||||
* None.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static inline u32
|
||||
svga3dsurface_get_image_buffer_size(const struct svga3d_surface_desc *desc,
|
||||
const surf_size_struct *size,
|
||||
u32 pitch)
|
||||
{
|
||||
surf_size_struct image_blocks;
|
||||
u32 slice_size, total_size;
|
||||
|
||||
svga3dsurface_get_size_in_blocks(desc, size, &image_blocks);
|
||||
|
||||
if (svga3dsurface_is_planar_surface(desc)) {
|
||||
total_size = clamped_umul32(image_blocks.width,
|
||||
image_blocks.height);
|
||||
total_size = clamped_umul32(total_size, image_blocks.depth);
|
||||
total_size = clamped_umul32(total_size, desc->bytes_per_block);
|
||||
return total_size;
|
||||
}
|
||||
|
||||
if (pitch == 0)
|
||||
pitch = svga3dsurface_calculate_pitch(desc, size);
|
||||
|
||||
slice_size = clamped_umul32(image_blocks.height, pitch);
|
||||
total_size = clamped_umul32(slice_size, image_blocks.depth);
|
||||
|
||||
return total_size;
|
||||
}
|
||||
|
||||
static inline u32
|
||||
svga3dsurface_get_serialized_size(SVGA3dSurfaceFormat format,
|
||||
surf_size_struct base_level_size,
|
||||
u32 num_mip_levels,
|
||||
bool cubemap)
|
||||
{
|
||||
const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format);
|
||||
u64 total_size = 0;
|
||||
u32 mip;
|
||||
|
||||
for (mip = 0; mip < num_mip_levels; mip++) {
|
||||
surf_size_struct size =
|
||||
svga3dsurface_get_mip_size(base_level_size, mip);
|
||||
total_size += svga3dsurface_get_image_buffer_size(desc,
|
||||
&size, 0);
|
||||
}
|
||||
|
||||
if (cubemap)
|
||||
total_size *= SVGA3D_MAX_SURFACE_FACES;
|
||||
|
||||
return (u32) min_t(u64, total_size, (u64) U32_MAX);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* svga3dsurface_get_pixel_offset - Compute the offset (in bytes) to a pixel
|
||||
* in an image (or volume).
|
||||
*
|
||||
* @width: The image width in pixels.
|
||||
* @height: The image height in pixels
|
||||
*/
|
||||
static inline u32
|
||||
svga3dsurface_get_pixel_offset(SVGA3dSurfaceFormat format,
|
||||
u32 width, u32 height,
|
||||
u32 x, u32 y, u32 z)
|
||||
{
|
||||
const struct svga3d_surface_desc *desc = svga3dsurface_get_desc(format);
|
||||
const u32 bw = desc->block_size.width, bh = desc->block_size.height;
|
||||
const u32 bd = desc->block_size.depth;
|
||||
const u32 rowstride = DIV_ROUND_UP(width, bw) * desc->bytes_per_block;
|
||||
const u32 imgstride = DIV_ROUND_UP(height, bh) * rowstride;
|
||||
const u32 offset = (z / bd * imgstride +
|
||||
y / bh * rowstride +
|
||||
x / bw * desc->bytes_per_block);
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
static inline u32
|
||||
svga3dsurface_get_image_offset(SVGA3dSurfaceFormat format,
|
||||
surf_size_struct baseLevelSize,
|
||||
u32 numMipLevels,
|
||||
u32 face,
|
||||
u32 mip)
|
||||
|
||||
{
|
||||
u32 offset;
|
||||
u32 mipChainBytes;
|
||||
u32 mipChainBytesToLevel;
|
||||
u32 i;
|
||||
const struct svga3d_surface_desc *desc;
|
||||
surf_size_struct mipSize;
|
||||
u32 bytes;
|
||||
|
||||
desc = svga3dsurface_get_desc(format);
|
||||
|
||||
mipChainBytes = 0;
|
||||
mipChainBytesToLevel = 0;
|
||||
for (i = 0; i < numMipLevels; i++) {
|
||||
mipSize = svga3dsurface_get_mip_size(baseLevelSize, i);
|
||||
bytes = svga3dsurface_get_image_buffer_size(desc, &mipSize, 0);
|
||||
mipChainBytes += bytes;
|
||||
if (i < mip)
|
||||
mipChainBytesToLevel += bytes;
|
||||
}
|
||||
|
||||
offset = mipChainBytes * face + mipChainBytesToLevel;
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* svga3dsurface_is_gb_screen_target_format - Is the specified format usable as
|
||||
* a ScreenTarget?
|
||||
* (with just the GBObjects cap-bit
|
||||
* set)
|
||||
* @format: format to queried
|
||||
*
|
||||
* RETURNS:
|
||||
* true if queried format is valid for screen targets
|
||||
*/
|
||||
static inline bool
|
||||
svga3dsurface_is_gb_screen_target_format(SVGA3dSurfaceFormat format)
|
||||
{
|
||||
return (format == SVGA3D_X8R8G8B8 ||
|
||||
format == SVGA3D_A8R8G8B8 ||
|
||||
format == SVGA3D_R5G6B5 ||
|
||||
format == SVGA3D_X1R5G5B5 ||
|
||||
format == SVGA3D_A1R5G5B5 ||
|
||||
format == SVGA3D_P8);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* svga3dsurface_is_dx_screen_target_format - Is the specified format usable as
|
||||
* a ScreenTarget?
|
||||
* (with DX10 enabled)
|
||||
*
|
||||
* @format: format to queried
|
||||
*
|
||||
* Results:
|
||||
* true if queried format is valid for screen targets
|
||||
*/
|
||||
static inline bool
|
||||
svga3dsurface_is_dx_screen_target_format(SVGA3dSurfaceFormat format)
|
||||
{
|
||||
return (format == SVGA3D_R8G8B8A8_UNORM ||
|
||||
format == SVGA3D_B8G8R8A8_UNORM ||
|
||||
format == SVGA3D_B8G8R8X8_UNORM);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* svga3dsurface_is_screen_target_format - Is the specified format usable as a
|
||||
* ScreenTarget?
|
||||
* (for some combination of caps)
|
||||
*
|
||||
* @format: format to queried
|
||||
*
|
||||
* Results:
|
||||
* true if queried format is valid for screen targets
|
||||
*/
|
||||
static inline bool
|
||||
svga3dsurface_is_screen_target_format(SVGA3dSurfaceFormat format)
|
||||
{
|
||||
if (svga3dsurface_is_gb_screen_target_format(format)) {
|
||||
return true;
|
||||
}
|
||||
return svga3dsurface_is_dx_screen_target_format(format);
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright © 2009 VMware, Inc., Palo Alto, CA., USA
|
||||
* 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, sub license, 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 (including the
|
||||
* next paragraph) 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 NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS 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.
|
||||
*
|
||||
**************************************************************************/
|
||||
|
||||
/**
|
||||
* Silly typedefs for the svga headers. Currently the headers are shared
|
||||
* between all components that talk to svga. And as such the headers are
|
||||
* are in a completely different style and use weird defines.
|
||||
*
|
||||
* This file lets all the ugly be prefixed with svga*.
|
||||
*/
|
||||
|
||||
#ifndef _SVGA_TYPES_H_
|
||||
#define _SVGA_TYPES_H_
|
||||
|
||||
typedef uint16_t uint16;
|
||||
typedef uint32_t uint32;
|
||||
typedef uint8_t uint8;
|
||||
typedef int32_t int32;
|
||||
typedef uint64_t uint64;
|
||||
typedef bool Bool;
|
||||
typedef uint64 PA;
|
||||
typedef uint32 SVGAMobId;
|
||||
|
||||
#endif
|
@ -1139,7 +1139,7 @@ int vmw_cmdbuf_set_pool_size(struct vmw_cmdbuf_man *man,
|
||||
* actually call into the already enabled manager, when
|
||||
* binding the MOB.
|
||||
*/
|
||||
if (!(dev_priv->capabilities & SVGA_CAP_CMD_BUFFERS_3))
|
||||
if (!(dev_priv->capabilities & SVGA_CAP_DX))
|
||||
return -ENOMEM;
|
||||
|
||||
ret = ttm_bo_create(&dev_priv->bdev, size, ttm_bo_type_device,
|
||||
|
@ -696,7 +696,7 @@ int vmw_context_binding_add(struct vmw_ctx_binding_state *cbs,
|
||||
break;
|
||||
case vmw_ctx_binding_shader:
|
||||
if (unlikely((unsigned)bi->i1.shader_type >=
|
||||
SVGA3D_SHADERTYPE_MAX)) {
|
||||
SVGA3D_SHADERTYPE_PREDX_MAX)) {
|
||||
DRM_ERROR("Illegal shader type %u.\n",
|
||||
(unsigned) bi->i1.shader_type);
|
||||
return -EINVAL;
|
||||
|
@ -278,8 +278,8 @@ static void vmw_print_capabilities(uint32_t capabilities)
|
||||
DRM_INFO(" Command Buffers 2.\n");
|
||||
if (capabilities & SVGA_CAP_GBOBJECTS)
|
||||
DRM_INFO(" Guest Backed Resources.\n");
|
||||
if (capabilities & SVGA_CAP_CMD_BUFFERS_3)
|
||||
DRM_INFO(" Command Buffers 3.\n");
|
||||
if (capabilities & SVGA_CAP_DX)
|
||||
DRM_INFO(" DX Features.\n");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1264,7 +1264,8 @@ static void __vmw_svga_disable(struct vmw_private *dev_priv)
|
||||
if (dev_priv->bdev.man[TTM_PL_VRAM].use_type) {
|
||||
dev_priv->bdev.man[TTM_PL_VRAM].use_type = false;
|
||||
vmw_write(dev_priv, SVGA_REG_ENABLE,
|
||||
SVGA_REG_ENABLE_ENABLE_HIDE);
|
||||
SVGA_REG_ENABLE_HIDE |
|
||||
SVGA_REG_ENABLE_ENABLE);
|
||||
}
|
||||
spin_unlock(&dev_priv->svga_lock);
|
||||
}
|
||||
@ -1282,11 +1283,12 @@ void vmw_svga_disable(struct vmw_private *dev_priv)
|
||||
spin_lock(&dev_priv->svga_lock);
|
||||
if (dev_priv->bdev.man[TTM_PL_VRAM].use_type) {
|
||||
dev_priv->bdev.man[TTM_PL_VRAM].use_type = false;
|
||||
vmw_write(dev_priv, SVGA_REG_ENABLE,
|
||||
SVGA_REG_ENABLE_ENABLE_HIDE);
|
||||
spin_unlock(&dev_priv->svga_lock);
|
||||
if (ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM))
|
||||
DRM_ERROR("Failed evicting VRAM buffers.\n");
|
||||
vmw_write(dev_priv, SVGA_REG_ENABLE,
|
||||
SVGA_REG_ENABLE_HIDE |
|
||||
SVGA_REG_ENABLE_ENABLE);
|
||||
} else
|
||||
spin_unlock(&dev_priv->svga_lock);
|
||||
ttm_write_unlock(&dev_priv->reservation_sem);
|
||||
|
@ -328,7 +328,7 @@ struct vmw_ctx_binding_state {
|
||||
struct list_head list;
|
||||
struct vmw_ctx_binding render_targets[SVGA3D_RT_MAX];
|
||||
struct vmw_ctx_binding texture_units[SVGA3D_NUM_TEXTURE_UNITS];
|
||||
struct vmw_ctx_binding shaders[SVGA3D_SHADERTYPE_MAX];
|
||||
struct vmw_ctx_binding shaders[SVGA3D_SHADERTYPE_PREDX_MAX];
|
||||
};
|
||||
|
||||
|
||||
|
@ -1981,8 +1981,6 @@ static const struct vmw_cmd_entry vmw_cmd_entries[SVGA_3D_CMD_MAX] = {
|
||||
false, false, true),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_DESTROY_GB_MOB, &vmw_cmd_invalid,
|
||||
false, false, true),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_REDEFINE_GB_MOB, &vmw_cmd_invalid,
|
||||
false, false, true),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_UPDATE_GB_MOB_MAPPING, &vmw_cmd_invalid,
|
||||
false, false, true),
|
||||
VMW_CMD_DEF(SVGA_3D_CMD_DEFINE_GB_SURFACE, &vmw_cmd_invalid,
|
||||
|
@ -119,7 +119,8 @@ int vmw_fifo_init(struct vmw_private *dev_priv, struct vmw_fifo_state *fifo)
|
||||
dev_priv->config_done_state = vmw_read(dev_priv, SVGA_REG_CONFIG_DONE);
|
||||
dev_priv->traces_state = vmw_read(dev_priv, SVGA_REG_TRACES);
|
||||
|
||||
vmw_write(dev_priv, SVGA_REG_ENABLE, SVGA_REG_ENABLE_ENABLE_HIDE);
|
||||
vmw_write(dev_priv, SVGA_REG_ENABLE, SVGA_REG_ENABLE_ENABLE |
|
||||
SVGA_REG_ENABLE_HIDE);
|
||||
vmw_write(dev_priv, SVGA_REG_TRACES, 0);
|
||||
|
||||
min = 4;
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "vmwgfx_drv.h"
|
||||
#include <drm/vmwgfx_drm.h>
|
||||
#include "vmwgfx_kms.h"
|
||||
#include "device_include/svga3d_caps.h"
|
||||
|
||||
struct svga_3d_compat_cap {
|
||||
SVGA3dCapsRecordHeader header;
|
||||
|
@ -253,7 +253,7 @@ int vmw_otables_setup(struct vmw_private *dev_priv)
|
||||
VMWGFX_NUM_GB_CONTEXT * SVGA3D_OTABLE_CONTEXT_ENTRY_SIZE;
|
||||
otables[SVGA_OTABLE_SHADER].size =
|
||||
VMWGFX_NUM_GB_SHADER * SVGA3D_OTABLE_SHADER_ENTRY_SIZE;
|
||||
otables[SVGA_OTABLE_SCREEN_TARGET].size =
|
||||
otables[SVGA_OTABLE_SCREENTARGET].size =
|
||||
VMWGFX_NUM_GB_SCREEN_TARGET *
|
||||
SVGA3D_OTABLE_SCREEN_TARGET_ENTRY_SIZE;
|
||||
|
||||
|
@ -31,8 +31,8 @@
|
||||
|
||||
#include <drm/ttm/ttm_placement.h>
|
||||
|
||||
#include "svga_overlay.h"
|
||||
#include "svga_escape.h"
|
||||
#include "device_include/svga_overlay.h"
|
||||
#include "device_include/svga_escape.h"
|
||||
|
||||
#define VMW_MAX_NUM_STREAMS 1
|
||||
#define VMW_OVERLAY_CAP_MASK (SVGA_FIFO_CAP_VIDEO | SVGA_FIFO_CAP_ESCAPE)
|
||||
|
@ -50,8 +50,6 @@ struct svga_fifo_cmd_fence {
|
||||
#define SVGA_SYNC_GENERIC 1
|
||||
#define SVGA_SYNC_FIFOFULL 2
|
||||
|
||||
#include "svga_types.h"
|
||||
|
||||
#include "svga3d_reg.h"
|
||||
#include "device_include/svga3d_reg.h"
|
||||
|
||||
#endif
|
||||
|
@ -26,7 +26,7 @@
|
||||
******************************************************************************/
|
||||
|
||||
#include "vmwgfx_kms.h"
|
||||
#include "svga3d_surfacedefs.h"
|
||||
#include "device_include/svga3d_surfacedefs.h"
|
||||
#include <drm/drm_plane_helper.h>
|
||||
|
||||
#define vmw_crtc_to_stdu(x) \
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "vmwgfx_drv.h"
|
||||
#include "vmwgfx_resource_priv.h"
|
||||
#include <ttm/ttm_placement.h>
|
||||
#include "svga3d_surfacedefs.h"
|
||||
#include "device_include/svga3d_surfacedefs.h"
|
||||
|
||||
/**
|
||||
* struct vmw_user_surface - User-space visible surface resource
|
||||
|
Loading…
Reference in New Issue
Block a user