aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/vmwgfx/device_include/svga3d_limits.h
blob: f4375a41b3aaa152f508f93d335e97571f56bb74 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/**********************************************************
 * Copyright 2007-2019 VMware, Inc.
 *
 * 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_CONTEXT_IDS                  256
#define SVGA3D_MAX_SURFACE_IDS                  (32 * 1024)

/*
 * While there are separate bind-points for RenderTargetViews and
 * UnorderedAccessViews in a DXContext, there is in fact one shared
 * semantic space that the guest-driver can use on any given draw call.
 * So there are really only 8 slots that can be spilt up between them, with the
 * spliceIndex controlling where the UAV's sit in the collapsed array.
 */
#define SVGA3D_MAX_RENDER_TARGETS               8
#define SVGA3D_MAX_SIMULTANEOUS_RENDER_TARGETS  (SVGA3D_MAX_RENDER_TARGETS)
#define SVGA3D_MAX_UAVIEWS                      8
#define SVGA3D_DX11_1_MAX_UAVIEWS               64

/*
 * Maximum canonical size of a surface in host-backed mode (pre-GBObjects).
 */
#define SVGA3D_HB_MAX_SURFACE_SIZE MBYTES_2_BYTES(128)

/*
 * 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

#define SVGA3D_MAX_VIDEOPROCESSOR_SAMPLERS      32

/*
 * Maximum size in dwords of shader text the SVGA device will allow.
 * Currently 8 MB.
 */
#define SVGA3D_MAX_SHADER_MEMORY_BYTES (8 * 1024 * 1024)
#define SVGA3D_MAX_SHADER_MEMORY  (SVGA3D_MAX_SHADER_MEMORY_BYTES / \
                                   sizeof(uint32))

/*
 * The maximum value of threadGroupCount in each dimension
 */
#define SVGA3D_MAX_SHADER_THREAD_GROUPS 65535

#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_SM4_MAX_SURFACE_ARRAYSIZE 512
#define SVGA3D_SM5_MAX_SURFACE_ARRAYSIZE 2048
#define SVGA3D_MAX_SURFACE_ARRAYSIZE SVGA3D_SM5_MAX_SURFACE_ARRAYSIZE

/*
 * 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

/*
 * The maximum number of samples that can be contained in a surface.
 */
#define SVGA3D_MAX_SAMPLES 8

#endif /* _SVGA3D_LIMITS_H_ */