svga: handle P016 format as well
[mesa.git] / src / gallium / drivers / svga / svga_format.c
1 /**********************************************************
2 * Copyright 2011 VMware, Inc. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person
5 * obtaining a copy of this software and associated documentation
6 * files (the "Software"), to deal in the Software without
7 * restriction, including without limitation the rights to use, copy,
8 * modify, merge, publish, distribute, sublicense, and/or sell copies
9 * of the Software, and to permit persons to whom the Software is
10 * furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be
13 * included in all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 * SOFTWARE.
23 *
24 **********************************************************/
25
26
27 #include "pipe/p_format.h"
28 #include "util/u_debug.h"
29 #include "util/u_format.h"
30 #include "util/u_memory.h"
31
32 #include "svga_winsys.h"
33 #include "svga_screen.h"
34 #include "svga_format.h"
35
36
37 /** Describes mapping from gallium formats to SVGA vertex/pixel formats */
38 struct vgpu10_format_entry
39 {
40 enum pipe_format pformat;
41 SVGA3dSurfaceFormat vertex_format;
42 SVGA3dSurfaceFormat pixel_format;
43 unsigned flags;
44 };
45
46
47 static const struct vgpu10_format_entry format_conversion_table[] =
48 {
49 /* Gallium format SVGA3D vertex format SVGA3D pixel format Flags */
50 { PIPE_FORMAT_NONE, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
51 { PIPE_FORMAT_B8G8R8A8_UNORM, SVGA3D_B8G8R8A8_UNORM, SVGA3D_B8G8R8A8_UNORM, TF_GEN_MIPS },
52 { PIPE_FORMAT_B8G8R8X8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_B8G8R8X8_UNORM, TF_GEN_MIPS },
53 { PIPE_FORMAT_A8R8G8B8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
54 { PIPE_FORMAT_X8R8G8B8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
55 { PIPE_FORMAT_B5G5R5A1_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_B5G5R5A1_UNORM, TF_GEN_MIPS },
56 { PIPE_FORMAT_B4G4R4A4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
57 { PIPE_FORMAT_B5G6R5_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_B5G6R5_UNORM, TF_GEN_MIPS },
58 { PIPE_FORMAT_R10G10B10A2_UNORM, SVGA3D_R10G10B10A2_UNORM, SVGA3D_R10G10B10A2_UNORM, TF_GEN_MIPS },
59 { PIPE_FORMAT_L8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
60 { PIPE_FORMAT_A8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_A8_UNORM, TF_GEN_MIPS },
61 { PIPE_FORMAT_I8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
62 { PIPE_FORMAT_L8A8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
63 { PIPE_FORMAT_L16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
64 { PIPE_FORMAT_UYVY, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
65 { PIPE_FORMAT_YUYV, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
66 { PIPE_FORMAT_Z16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_D16_UNORM, 0 },
67 { PIPE_FORMAT_Z32_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
68 { PIPE_FORMAT_Z32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_D32_FLOAT, 0 },
69 { PIPE_FORMAT_Z24_UNORM_S8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_D24_UNORM_S8_UINT, 0 },
70 { PIPE_FORMAT_S8_UINT_Z24_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
71 { PIPE_FORMAT_Z24X8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_D24_UNORM_S8_UINT, 0 },
72 { PIPE_FORMAT_X8Z24_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
73 { PIPE_FORMAT_S8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
74 { PIPE_FORMAT_R64_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
75 { PIPE_FORMAT_R64G64_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
76 { PIPE_FORMAT_R64G64B64_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
77 { PIPE_FORMAT_R64G64B64A64_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
78 { PIPE_FORMAT_R32_FLOAT, SVGA3D_R32_FLOAT, SVGA3D_R32_FLOAT, TF_GEN_MIPS },
79 { PIPE_FORMAT_R32G32_FLOAT, SVGA3D_R32G32_FLOAT, SVGA3D_R32G32_FLOAT, TF_GEN_MIPS },
80 { PIPE_FORMAT_R32G32B32_FLOAT, SVGA3D_R32G32B32_FLOAT, SVGA3D_R32G32B32_FLOAT, TF_GEN_MIPS },
81 { PIPE_FORMAT_R32G32B32A32_FLOAT, SVGA3D_R32G32B32A32_FLOAT, SVGA3D_R32G32B32A32_FLOAT, TF_GEN_MIPS },
82 { PIPE_FORMAT_R32_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
83 { PIPE_FORMAT_R32G32_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
84 { PIPE_FORMAT_R32G32B32_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
85 { PIPE_FORMAT_R32G32B32A32_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
86 { PIPE_FORMAT_R32_USCALED, SVGA3D_R32_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
87 { PIPE_FORMAT_R32G32_USCALED, SVGA3D_R32G32_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
88 { PIPE_FORMAT_R32G32B32_USCALED, SVGA3D_R32G32B32_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
89 { PIPE_FORMAT_R32G32B32A32_USCALED, SVGA3D_R32G32B32A32_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
90 { PIPE_FORMAT_R32_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
91 { PIPE_FORMAT_R32G32_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
92 { PIPE_FORMAT_R32G32B32_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
93 { PIPE_FORMAT_R32G32B32A32_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
94 { PIPE_FORMAT_R32_SSCALED, SVGA3D_R32_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
95 { PIPE_FORMAT_R32G32_SSCALED, SVGA3D_R32G32_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
96 { PIPE_FORMAT_R32G32B32_SSCALED, SVGA3D_R32G32B32_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
97 { PIPE_FORMAT_R32G32B32A32_SSCALED, SVGA3D_R32G32B32A32_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
98 { PIPE_FORMAT_R16_UNORM, SVGA3D_R16_UNORM, SVGA3D_R16_UNORM, TF_GEN_MIPS },
99 { PIPE_FORMAT_R16G16_UNORM, SVGA3D_R16G16_UNORM, SVGA3D_R16G16_UNORM, TF_GEN_MIPS },
100 { PIPE_FORMAT_R16G16B16_UNORM, SVGA3D_R16G16B16A16_UNORM, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
101 { PIPE_FORMAT_R16G16B16A16_UNORM, SVGA3D_R16G16B16A16_UNORM, SVGA3D_R16G16B16A16_UNORM, TF_GEN_MIPS },
102 { PIPE_FORMAT_R16_USCALED, SVGA3D_R16_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
103 { PIPE_FORMAT_R16G16_USCALED, SVGA3D_R16G16_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
104 { PIPE_FORMAT_R16G16B16_USCALED, SVGA3D_R16G16B16A16_UINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 | VF_U_TO_F_CAST },
105 { PIPE_FORMAT_R16G16B16A16_USCALED, SVGA3D_R16G16B16A16_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
106 { PIPE_FORMAT_R16_SNORM, SVGA3D_R16_SNORM, SVGA3D_R16_SNORM, 0 },
107 { PIPE_FORMAT_R16G16_SNORM, SVGA3D_R16G16_SNORM, SVGA3D_R16G16_SNORM, 0 },
108 { PIPE_FORMAT_R16G16B16_SNORM, SVGA3D_R16G16B16A16_SNORM, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
109 { PIPE_FORMAT_R16G16B16A16_SNORM, SVGA3D_R16G16B16A16_SNORM, SVGA3D_R16G16B16A16_SNORM, 0 },
110 { PIPE_FORMAT_R16_SSCALED, SVGA3D_R16_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
111 { PIPE_FORMAT_R16G16_SSCALED, SVGA3D_R16G16_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
112 { PIPE_FORMAT_R16G16B16_SSCALED, SVGA3D_R16G16B16A16_SINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 | VF_I_TO_F_CAST },
113 { PIPE_FORMAT_R16G16B16A16_SSCALED, SVGA3D_R16G16B16A16_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
114 { PIPE_FORMAT_R8_UNORM, SVGA3D_R8_UNORM, SVGA3D_R8_UNORM, TF_GEN_MIPS },
115 { PIPE_FORMAT_R8G8_UNORM, SVGA3D_R8G8_UNORM, SVGA3D_R8G8_UNORM, TF_GEN_MIPS },
116 { PIPE_FORMAT_R8G8B8_UNORM, SVGA3D_R8G8B8A8_UNORM, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
117 { PIPE_FORMAT_R8G8B8A8_UNORM, SVGA3D_R8G8B8A8_UNORM, SVGA3D_R8G8B8A8_UNORM, TF_GEN_MIPS },
118 { PIPE_FORMAT_X8B8G8R8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
119 { PIPE_FORMAT_R8_USCALED, SVGA3D_R8_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
120 { PIPE_FORMAT_R8G8_USCALED, SVGA3D_R8G8_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
121 { PIPE_FORMAT_R8G8B8_USCALED, SVGA3D_R8G8B8A8_UINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 | VF_U_TO_F_CAST },
122 { PIPE_FORMAT_R8G8B8A8_USCALED, SVGA3D_R8G8B8A8_UINT, SVGA3D_FORMAT_INVALID, VF_U_TO_F_CAST },
123 { 73, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
124 { PIPE_FORMAT_R8_SNORM, SVGA3D_R8_SNORM, SVGA3D_R8_SNORM, 0 },
125 { PIPE_FORMAT_R8G8_SNORM, SVGA3D_R8G8_SNORM, SVGA3D_R8G8_SNORM, 0 },
126 { PIPE_FORMAT_R8G8B8_SNORM, SVGA3D_R8G8B8A8_SNORM, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
127 { PIPE_FORMAT_R8G8B8A8_SNORM, SVGA3D_R8G8B8A8_SNORM, SVGA3D_R8G8B8A8_SNORM, 0 },
128 { 78, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
129 { 79, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
130 { 80, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
131 { 81, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
132 { PIPE_FORMAT_R8_SSCALED, SVGA3D_R8_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
133 { PIPE_FORMAT_R8G8_SSCALED, SVGA3D_R8G8_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
134 { PIPE_FORMAT_R8G8B8_SSCALED, SVGA3D_R8G8B8A8_SINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 | VF_I_TO_F_CAST },
135 { PIPE_FORMAT_R8G8B8A8_SSCALED, SVGA3D_R8G8B8A8_SINT, SVGA3D_FORMAT_INVALID, VF_I_TO_F_CAST },
136 { 86, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
137 { PIPE_FORMAT_R32_FIXED, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
138 { PIPE_FORMAT_R32G32_FIXED, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
139 { PIPE_FORMAT_R32G32B32_FIXED, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
140 { PIPE_FORMAT_R32G32B32A32_FIXED, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
141 { PIPE_FORMAT_R16_FLOAT, SVGA3D_R16_FLOAT, SVGA3D_R16_FLOAT, TF_GEN_MIPS },
142 { PIPE_FORMAT_R16G16_FLOAT, SVGA3D_R16G16_FLOAT, SVGA3D_R16G16_FLOAT, TF_GEN_MIPS },
143 { PIPE_FORMAT_R16G16B16_FLOAT, SVGA3D_R16G16B16A16_FLOAT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
144 { PIPE_FORMAT_R16G16B16A16_FLOAT, SVGA3D_R16G16B16A16_FLOAT, SVGA3D_R16G16B16A16_FLOAT, TF_GEN_MIPS },
145 { PIPE_FORMAT_L8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
146 { PIPE_FORMAT_L8A8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
147 { PIPE_FORMAT_R8G8B8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
148 { PIPE_FORMAT_A8B8G8R8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
149 { PIPE_FORMAT_X8B8G8R8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
150 { PIPE_FORMAT_B8G8R8A8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_B8G8R8A8_UNORM_SRGB, TF_GEN_MIPS },
151 { PIPE_FORMAT_B8G8R8X8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_B8G8R8X8_UNORM_SRGB, TF_GEN_MIPS },
152 { PIPE_FORMAT_A8R8G8B8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
153 { PIPE_FORMAT_X8R8G8B8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
154 { PIPE_FORMAT_R8G8B8A8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_R8G8B8A8_UNORM_SRGB, TF_GEN_MIPS },
155 { PIPE_FORMAT_DXT1_RGB, SVGA3D_FORMAT_INVALID, SVGA3D_BC1_UNORM, 0 },
156 { PIPE_FORMAT_DXT1_RGBA, SVGA3D_FORMAT_INVALID, SVGA3D_BC1_UNORM, 0 },
157 { PIPE_FORMAT_DXT3_RGBA, SVGA3D_FORMAT_INVALID, SVGA3D_BC2_UNORM, 0 },
158 { PIPE_FORMAT_DXT5_RGBA, SVGA3D_FORMAT_INVALID, SVGA3D_BC3_UNORM, 0 },
159 { PIPE_FORMAT_DXT1_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_BC1_UNORM_SRGB, 0 },
160 { PIPE_FORMAT_DXT1_SRGBA, SVGA3D_FORMAT_INVALID, SVGA3D_BC1_UNORM_SRGB, 0 },
161 { PIPE_FORMAT_DXT3_SRGBA, SVGA3D_FORMAT_INVALID, SVGA3D_BC2_UNORM_SRGB, 0 },
162 { PIPE_FORMAT_DXT5_SRGBA, SVGA3D_FORMAT_INVALID, SVGA3D_BC3_UNORM_SRGB, 0 },
163 { PIPE_FORMAT_RGTC1_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_BC4_UNORM, 0 },
164 { PIPE_FORMAT_RGTC1_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_BC4_SNORM, 0 },
165 { PIPE_FORMAT_RGTC2_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_BC5_UNORM, 0 },
166 { PIPE_FORMAT_RGTC2_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_BC5_SNORM, 0 },
167 { PIPE_FORMAT_R8G8_B8G8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
168 { PIPE_FORMAT_G8R8_G8B8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
169 { PIPE_FORMAT_R8SG8SB8UX8U_NORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
170 { PIPE_FORMAT_R5SG5SB6U_NORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
171 { PIPE_FORMAT_A8B8G8R8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
172 { PIPE_FORMAT_B5G5R5X1_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
173 { PIPE_FORMAT_R10G10B10A2_USCALED, SVGA3D_R10G10B10A2_UNORM, SVGA3D_FORMAT_INVALID, VF_PUINT_TO_USCALED },
174 { PIPE_FORMAT_R11G11B10_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_R11G11B10_FLOAT, TF_GEN_MIPS },
175 { PIPE_FORMAT_R9G9B9E5_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_R9G9B9E5_SHAREDEXP, 0 },
176 { PIPE_FORMAT_Z32_FLOAT_S8X24_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_D32_FLOAT_S8X24_UINT, 0 },
177 { PIPE_FORMAT_R1_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
178 { PIPE_FORMAT_R10G10B10X2_USCALED, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
179 { PIPE_FORMAT_R10G10B10X2_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
180 { PIPE_FORMAT_L4A4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
181 { PIPE_FORMAT_B10G10R10A2_UNORM, SVGA3D_R10G10B10A2_UNORM, SVGA3D_FORMAT_INVALID, VF_BGRA },
182 { PIPE_FORMAT_R10SG10SB10SA2U_NORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
183 { PIPE_FORMAT_R8G8Bx_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
184 { PIPE_FORMAT_R8G8B8X8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
185 { PIPE_FORMAT_B4G4R4X4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
186 { PIPE_FORMAT_X24S8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
187 { PIPE_FORMAT_S8X24_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
188 { PIPE_FORMAT_X32_S8X24_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
189 { PIPE_FORMAT_B2G3R3_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
190 { PIPE_FORMAT_L16A16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
191 { PIPE_FORMAT_A16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
192 { PIPE_FORMAT_I16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
193 { PIPE_FORMAT_LATC1_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
194 { PIPE_FORMAT_LATC1_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
195 { PIPE_FORMAT_LATC2_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
196 { PIPE_FORMAT_LATC2_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
197 { PIPE_FORMAT_A8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
198 { PIPE_FORMAT_L8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
199 { PIPE_FORMAT_L8A8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
200 { PIPE_FORMAT_I8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
201 { PIPE_FORMAT_A16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
202 { PIPE_FORMAT_L16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
203 { PIPE_FORMAT_L16A16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
204 { PIPE_FORMAT_I16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
205 { PIPE_FORMAT_A16_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
206 { PIPE_FORMAT_L16_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
207 { PIPE_FORMAT_L16A16_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
208 { PIPE_FORMAT_I16_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
209 { PIPE_FORMAT_A32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
210 { PIPE_FORMAT_L32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
211 { PIPE_FORMAT_L32A32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
212 { PIPE_FORMAT_I32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
213 { PIPE_FORMAT_YV12, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
214 { PIPE_FORMAT_YV16, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
215 { PIPE_FORMAT_IYUV, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
216 { PIPE_FORMAT_NV12, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
217 { PIPE_FORMAT_NV21, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
218 { PIPE_FORMAT_A4R4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
219 { PIPE_FORMAT_R4A4_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
220 { PIPE_FORMAT_R8A8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
221 { PIPE_FORMAT_A8R8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
222 { PIPE_FORMAT_R10G10B10A2_SSCALED, SVGA3D_R32_UINT, SVGA3D_FORMAT_INVALID, VF_PUINT_TO_SSCALED },
223 { PIPE_FORMAT_R10G10B10A2_SNORM, SVGA3D_R10G10B10A2_UNORM, SVGA3D_FORMAT_INVALID, VF_PUINT_TO_SNORM },
224 { PIPE_FORMAT_B10G10R10A2_USCALED, SVGA3D_R10G10B10A2_UNORM, SVGA3D_FORMAT_INVALID, VF_BGRA | VF_PUINT_TO_USCALED },
225 { PIPE_FORMAT_B10G10R10A2_SSCALED, SVGA3D_R32_UINT, SVGA3D_FORMAT_INVALID, VF_BGRA | VF_PUINT_TO_SSCALED },
226 { PIPE_FORMAT_B10G10R10A2_SNORM, SVGA3D_R10G10B10A2_UNORM, SVGA3D_FORMAT_INVALID, VF_BGRA | VF_PUINT_TO_SNORM },
227 { PIPE_FORMAT_R8_UINT, SVGA3D_R8_UINT, SVGA3D_R8_UINT, 0 },
228 { PIPE_FORMAT_R8G8_UINT, SVGA3D_R8G8_UINT, SVGA3D_R8G8_UINT, 0 },
229 { PIPE_FORMAT_R8G8B8_UINT, SVGA3D_R8G8B8A8_UINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
230 { PIPE_FORMAT_R8G8B8A8_UINT, SVGA3D_R8G8B8A8_UINT, SVGA3D_R8G8B8A8_UINT, 0 },
231 { PIPE_FORMAT_R8_SINT, SVGA3D_R8_SINT, SVGA3D_R8_SINT, 0 },
232 { PIPE_FORMAT_R8G8_SINT, SVGA3D_R8G8_SINT, SVGA3D_R8G8_SINT, 0 },
233 { PIPE_FORMAT_R8G8B8_SINT, SVGA3D_R8G8B8A8_SINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
234 { PIPE_FORMAT_R8G8B8A8_SINT, SVGA3D_R8G8B8A8_SINT, SVGA3D_R8G8B8A8_SINT, 0 },
235 { PIPE_FORMAT_R16_UINT, SVGA3D_R16_UINT, SVGA3D_R16_UINT, 0 },
236 { PIPE_FORMAT_R16G16_UINT, SVGA3D_R16G16_UINT, SVGA3D_R16G16_UINT, 0 },
237 { PIPE_FORMAT_R16G16B16_UINT, SVGA3D_R16G16B16A16_UINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
238 { PIPE_FORMAT_R16G16B16A16_UINT, SVGA3D_R16G16B16A16_UINT, SVGA3D_R16G16B16A16_UINT, 0 },
239 { PIPE_FORMAT_R16_SINT, SVGA3D_R16_SINT, SVGA3D_R16_SINT, 0 },
240 { PIPE_FORMAT_R16G16_SINT, SVGA3D_R16G16_SINT, SVGA3D_R16G16_SINT, 0 },
241 { PIPE_FORMAT_R16G16B16_SINT, SVGA3D_R16G16B16A16_SINT, SVGA3D_FORMAT_INVALID, VF_W_TO_1 },
242 { PIPE_FORMAT_R16G16B16A16_SINT, SVGA3D_R16G16B16A16_SINT, SVGA3D_R16G16B16A16_SINT, 0 },
243 { PIPE_FORMAT_R32_UINT, SVGA3D_R32_UINT, SVGA3D_R32_UINT, 0 },
244 { PIPE_FORMAT_R32G32_UINT, SVGA3D_R32G32_UINT, SVGA3D_R32G32_UINT, 0 },
245 { PIPE_FORMAT_R32G32B32_UINT, SVGA3D_R32G32B32_UINT, SVGA3D_FORMAT_INVALID, 0 },
246 { PIPE_FORMAT_R32G32B32A32_UINT, SVGA3D_R32G32B32A32_UINT, SVGA3D_R32G32B32A32_UINT, 0 },
247 { PIPE_FORMAT_R32_SINT, SVGA3D_R32_SINT, SVGA3D_R32_SINT, 0 },
248 { PIPE_FORMAT_R32G32_SINT, SVGA3D_R32G32_SINT, SVGA3D_R32G32_SINT, 0 },
249 { PIPE_FORMAT_R32G32B32_SINT, SVGA3D_R32G32B32_SINT, SVGA3D_FORMAT_INVALID, 0 },
250 { PIPE_FORMAT_R32G32B32A32_SINT, SVGA3D_R32G32B32A32_SINT, SVGA3D_R32G32B32A32_SINT, 0 },
251 { PIPE_FORMAT_A8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
252 { PIPE_FORMAT_I8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
253 { PIPE_FORMAT_L8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
254 { PIPE_FORMAT_L8A8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
255 { PIPE_FORMAT_A8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
256 { PIPE_FORMAT_I8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
257 { PIPE_FORMAT_L8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
258 { PIPE_FORMAT_L8A8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
259 { PIPE_FORMAT_A16_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
260 { PIPE_FORMAT_I16_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
261 { PIPE_FORMAT_L16_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
262 { PIPE_FORMAT_L16A16_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
263 { PIPE_FORMAT_A16_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
264 { PIPE_FORMAT_I16_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
265 { PIPE_FORMAT_L16_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
266 { PIPE_FORMAT_L16A16_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
267 { PIPE_FORMAT_A32_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
268 { PIPE_FORMAT_I32_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
269 { PIPE_FORMAT_L32_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
270 { PIPE_FORMAT_L32A32_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
271 { PIPE_FORMAT_A32_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
272 { PIPE_FORMAT_I32_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
273 { PIPE_FORMAT_L32_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
274 { PIPE_FORMAT_L32A32_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
275 { PIPE_FORMAT_B10G10R10A2_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
276 { PIPE_FORMAT_ETC1_RGB8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
277 { PIPE_FORMAT_R8G8_R8B8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
278 { PIPE_FORMAT_G8R8_B8R8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
279 { PIPE_FORMAT_R8G8B8X8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
280 { PIPE_FORMAT_R8G8B8X8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
281 { PIPE_FORMAT_R8G8B8X8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
282 { PIPE_FORMAT_R8G8B8X8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
283 { PIPE_FORMAT_B10G10R10X2_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
284 { PIPE_FORMAT_R16G16B16X16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
285 { PIPE_FORMAT_R16G16B16X16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
286 { PIPE_FORMAT_R16G16B16X16_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
287 { PIPE_FORMAT_R16G16B16X16_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
288 { PIPE_FORMAT_R16G16B16X16_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
289 { PIPE_FORMAT_R32G32B32X32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
290 { PIPE_FORMAT_R32G32B32X32_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
291 { PIPE_FORMAT_R32G32B32X32_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
292 { PIPE_FORMAT_R8A8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
293 { PIPE_FORMAT_R16A16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
294 { PIPE_FORMAT_R16A16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
295 { PIPE_FORMAT_R16A16_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
296 { PIPE_FORMAT_R32A32_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
297 { PIPE_FORMAT_R8A8_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
298 { PIPE_FORMAT_R8A8_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
299 { PIPE_FORMAT_R16A16_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
300 { PIPE_FORMAT_R16A16_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
301 { PIPE_FORMAT_R32A32_UINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
302 { PIPE_FORMAT_R32A32_SINT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
303 { PIPE_FORMAT_R10G10B10A2_UINT, SVGA3D_R10G10B10A2_UINT, SVGA3D_R10G10B10A2_UINT, 0 },
304 { PIPE_FORMAT_B5G6R5_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
305 { PIPE_FORMAT_BPTC_RGBA_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
306 { PIPE_FORMAT_BPTC_SRGBA, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
307 { PIPE_FORMAT_BPTC_RGB_FLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
308 { PIPE_FORMAT_BPTC_RGB_UFLOAT, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
309 { PIPE_FORMAT_A8L8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
310 { PIPE_FORMAT_A8L8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
311 { PIPE_FORMAT_A8L8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
312 { PIPE_FORMAT_A16L16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
313 { PIPE_FORMAT_G8R8_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
314 { PIPE_FORMAT_G8R8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
315 { PIPE_FORMAT_G16R16_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
316 { PIPE_FORMAT_G16R16_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
317 { PIPE_FORMAT_A8B8G8R8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
318 { PIPE_FORMAT_X8B8G8R8_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
319 { PIPE_FORMAT_ETC2_RGB8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
320 { PIPE_FORMAT_ETC2_SRGB8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
321 { PIPE_FORMAT_ETC2_RGB8A1, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
322 { PIPE_FORMAT_ETC2_SRGB8A1, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
323 { PIPE_FORMAT_ETC2_RGBA8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
324 { PIPE_FORMAT_ETC2_SRGBA8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
325 { PIPE_FORMAT_ETC2_R11_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
326 { PIPE_FORMAT_ETC2_R11_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
327 { PIPE_FORMAT_ETC2_RG11_UNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
328 { PIPE_FORMAT_ETC2_RG11_SNORM, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
329 { PIPE_FORMAT_ASTC_4x4, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
330 { PIPE_FORMAT_ASTC_5x4, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
331 { PIPE_FORMAT_ASTC_5x5, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
332 { PIPE_FORMAT_ASTC_6x5, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
333 { PIPE_FORMAT_ASTC_6x6, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
334 { PIPE_FORMAT_ASTC_8x5, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
335 { PIPE_FORMAT_ASTC_8x6, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
336 { PIPE_FORMAT_ASTC_8x8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
337 { PIPE_FORMAT_ASTC_10x5, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
338 { PIPE_FORMAT_ASTC_10x6, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
339 { PIPE_FORMAT_ASTC_10x8, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
340 { PIPE_FORMAT_ASTC_10x10, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
341 { PIPE_FORMAT_ASTC_12x10, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
342 { PIPE_FORMAT_ASTC_12x12, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
343 { PIPE_FORMAT_ASTC_4x4_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
344 { PIPE_FORMAT_ASTC_5x4_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
345 { PIPE_FORMAT_ASTC_5x5_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
346 { PIPE_FORMAT_ASTC_6x5_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
347 { PIPE_FORMAT_ASTC_6x6_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
348 { PIPE_FORMAT_ASTC_8x5_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
349 { PIPE_FORMAT_ASTC_8x6_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
350 { PIPE_FORMAT_ASTC_8x8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
351 { PIPE_FORMAT_ASTC_10x5_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
352 { PIPE_FORMAT_ASTC_10x6_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
353 { PIPE_FORMAT_ASTC_10x8_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
354 { PIPE_FORMAT_ASTC_10x10_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
355 { PIPE_FORMAT_ASTC_12x10_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
356 { PIPE_FORMAT_ASTC_12x12_SRGB, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
357 { PIPE_FORMAT_P016, SVGA3D_FORMAT_INVALID, SVGA3D_FORMAT_INVALID, 0 },
358 };
359
360
361 /**
362 * Translate a gallium vertex format to a vgpu10 vertex format.
363 * Also, return any special vertex format flags.
364 */
365 void
366 svga_translate_vertex_format_vgpu10(enum pipe_format format,
367 SVGA3dSurfaceFormat *svga_format,
368 unsigned *vf_flags)
369 {
370 assert(format < ARRAY_SIZE(format_conversion_table));
371 if (format >= ARRAY_SIZE(format_conversion_table)) {
372 format = PIPE_FORMAT_NONE;
373 }
374 *svga_format = format_conversion_table[format].vertex_format;
375 *vf_flags = format_conversion_table[format].flags;
376 }
377
378
379 /*
380 * Translate from gallium format to SVGA3D format.
381 */
382 SVGA3dSurfaceFormat
383 svga_translate_format(const struct svga_screen *ss,
384 enum pipe_format format,
385 unsigned bind)
386 {
387 if (ss->sws->have_vgpu10) {
388 if (bind & (PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER)) {
389 return format_conversion_table[format].vertex_format;
390 }
391 else {
392 return format_conversion_table[format].pixel_format;
393 }
394 }
395
396 switch(format) {
397 case PIPE_FORMAT_B8G8R8A8_UNORM:
398 return SVGA3D_A8R8G8B8;
399 case PIPE_FORMAT_B8G8R8X8_UNORM:
400 return SVGA3D_X8R8G8B8;
401
402 /* sRGB required for GL2.1 */
403 case PIPE_FORMAT_B8G8R8A8_SRGB:
404 return SVGA3D_A8R8G8B8;
405 case PIPE_FORMAT_DXT1_SRGB:
406 case PIPE_FORMAT_DXT1_SRGBA:
407 return SVGA3D_DXT1;
408 case PIPE_FORMAT_DXT3_SRGBA:
409 return SVGA3D_DXT3;
410 case PIPE_FORMAT_DXT5_SRGBA:
411 return SVGA3D_DXT5;
412
413 case PIPE_FORMAT_B5G6R5_UNORM:
414 return SVGA3D_R5G6B5;
415 case PIPE_FORMAT_B5G5R5A1_UNORM:
416 return SVGA3D_A1R5G5B5;
417 case PIPE_FORMAT_B4G4R4A4_UNORM:
418 return SVGA3D_A4R4G4B4;
419
420 case PIPE_FORMAT_R16G16B16A16_UNORM:
421 return SVGA3D_A16B16G16R16;
422
423 case PIPE_FORMAT_Z16_UNORM:
424 assert(!ss->sws->have_vgpu10);
425 return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.z16 : SVGA3D_Z_D16;
426 case PIPE_FORMAT_S8_UINT_Z24_UNORM:
427 assert(!ss->sws->have_vgpu10);
428 return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.s8z24 : SVGA3D_Z_D24S8;
429 case PIPE_FORMAT_X8Z24_UNORM:
430 assert(!ss->sws->have_vgpu10);
431 return bind & PIPE_BIND_SAMPLER_VIEW ? ss->depth.x8z24 : SVGA3D_Z_D24X8;
432
433 case PIPE_FORMAT_A8_UNORM:
434 return SVGA3D_ALPHA8;
435 case PIPE_FORMAT_L8_UNORM:
436 return SVGA3D_LUMINANCE8;
437
438 case PIPE_FORMAT_DXT1_RGB:
439 case PIPE_FORMAT_DXT1_RGBA:
440 return SVGA3D_DXT1;
441 case PIPE_FORMAT_DXT3_RGBA:
442 return SVGA3D_DXT3;
443 case PIPE_FORMAT_DXT5_RGBA:
444 return SVGA3D_DXT5;
445
446 /* Float formats (only 1, 2 and 4-component formats supported) */
447 case PIPE_FORMAT_R32_FLOAT:
448 return SVGA3D_R_S23E8;
449 case PIPE_FORMAT_R32G32_FLOAT:
450 return SVGA3D_RG_S23E8;
451 case PIPE_FORMAT_R32G32B32A32_FLOAT:
452 return SVGA3D_ARGB_S23E8;
453 case PIPE_FORMAT_R16_FLOAT:
454 return SVGA3D_R_S10E5;
455 case PIPE_FORMAT_R16G16_FLOAT:
456 return SVGA3D_RG_S10E5;
457 case PIPE_FORMAT_R16G16B16A16_FLOAT:
458 return SVGA3D_ARGB_S10E5;
459
460 case PIPE_FORMAT_Z32_UNORM:
461 /* SVGA3D_Z_D32 is not yet unsupported */
462 /* fall-through */
463 default:
464 return SVGA3D_FORMAT_INVALID;
465 }
466 }
467
468
469 /*
470 * Format capability description entry.
471 */
472 struct format_cap {
473 const char *name;
474
475 SVGA3dSurfaceFormat format;
476
477 /*
478 * Capability index corresponding to the format.
479 */
480 SVGA3dDevCapIndex devcap;
481
482 /* size of each pixel/block */
483 unsigned block_width, block_height, block_bytes;
484
485 /*
486 * Mask of supported SVGA3dFormatOp operations, to be inferred when the
487 * capability is not explicitly present.
488 */
489 uint32 defaultOperations;
490 };
491
492
493 /*
494 * Format capability description table.
495 *
496 * Ordered by increasing SVGA3dSurfaceFormat value, but with gaps.
497 *
498 * Note: there are some special cases below where we set devcap=0 and
499 * avoid querying the host. In particular, depth/stencil formats which
500 * can be rendered to and sampled from. For example, the gallium format
501 * PIPE_FORMAT_Z24_UNORM_S8_UINT is converted to SVGA3D_D24_UNORM_S8_UINT
502 * for rendering but converted to SVGA3D_R24_UNORM_X8_TYPELESS for sampling.
503 * If we want to query if a format supports both rendering and sampling the
504 * host will tell us no for SVGA3D_D24_UNORM_S8_UINT, SVGA3D_D16_UNORM and
505 * SVGA3D_R24_UNORM_X8_TYPELESS. So we override the host query for those
506 * formats and report that both can do rendering and sampling.
507 */
508 static const struct format_cap format_cap_table[] = {
509 {
510 "SVGA3D_FORMAT_INVALID",
511 SVGA3D_FORMAT_INVALID, 0, 0, 0, 0, 0
512 },
513 {
514 "SVGA3D_X8R8G8B8",
515 SVGA3D_X8R8G8B8,
516 SVGA3D_DEVCAP_SURFACEFMT_X8R8G8B8,
517 1, 1, 4,
518 SVGA3DFORMAT_OP_TEXTURE |
519 SVGA3DFORMAT_OP_CUBETEXTURE |
520 SVGA3DFORMAT_OP_VOLUMETEXTURE |
521 SVGA3DFORMAT_OP_DISPLAYMODE |
522 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
523 },
524 {
525 "SVGA3D_A8R8G8B8",
526 SVGA3D_A8R8G8B8,
527 SVGA3D_DEVCAP_SURFACEFMT_A8R8G8B8,
528 1, 1, 4,
529 SVGA3DFORMAT_OP_TEXTURE |
530 SVGA3DFORMAT_OP_CUBETEXTURE |
531 SVGA3DFORMAT_OP_VOLUMETEXTURE |
532 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
533 },
534 {
535 "SVGA3D_R5G6B5",
536 SVGA3D_R5G6B5,
537 SVGA3D_DEVCAP_SURFACEFMT_R5G6B5,
538 1, 1, 2,
539 SVGA3DFORMAT_OP_TEXTURE |
540 SVGA3DFORMAT_OP_CUBETEXTURE |
541 SVGA3DFORMAT_OP_VOLUMETEXTURE |
542 SVGA3DFORMAT_OP_DISPLAYMODE |
543 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
544 },
545 {
546 "SVGA3D_X1R5G5B5",
547 SVGA3D_X1R5G5B5,
548 SVGA3D_DEVCAP_SURFACEFMT_X1R5G5B5,
549 1, 1, 2,
550 SVGA3DFORMAT_OP_TEXTURE |
551 SVGA3DFORMAT_OP_CUBETEXTURE |
552 SVGA3DFORMAT_OP_VOLUMETEXTURE |
553 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
554 },
555 {
556 "SVGA3D_A1R5G5B5",
557 SVGA3D_A1R5G5B5,
558 SVGA3D_DEVCAP_SURFACEFMT_A1R5G5B5,
559 1, 1, 2,
560 SVGA3DFORMAT_OP_TEXTURE |
561 SVGA3DFORMAT_OP_CUBETEXTURE |
562 SVGA3DFORMAT_OP_VOLUMETEXTURE |
563 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
564 },
565 {
566 "SVGA3D_A4R4G4B4",
567 SVGA3D_A4R4G4B4,
568 SVGA3D_DEVCAP_SURFACEFMT_A4R4G4B4,
569 1, 1, 2,
570 SVGA3DFORMAT_OP_TEXTURE |
571 SVGA3DFORMAT_OP_CUBETEXTURE |
572 SVGA3DFORMAT_OP_VOLUMETEXTURE |
573 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
574 },
575 {
576 /*
577 * SVGA3D_Z_D32 is not yet supported, and has no corresponding
578 * SVGA3D_DEVCAP_xxx.
579 */
580 "SVGA3D_Z_D32",
581 SVGA3D_Z_D32, 0, 0, 0, 0, 0
582 },
583 {
584 "SVGA3D_Z_D16",
585 SVGA3D_Z_D16,
586 SVGA3D_DEVCAP_SURFACEFMT_Z_D16,
587 1, 1, 2,
588 SVGA3DFORMAT_OP_ZSTENCIL
589 },
590 {
591 "SVGA3D_Z_D24S8",
592 SVGA3D_Z_D24S8,
593 SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8,
594 1, 1, 4,
595 SVGA3DFORMAT_OP_ZSTENCIL
596 },
597 {
598 "SVGA3D_Z_D15S1",
599 SVGA3D_Z_D15S1,
600 SVGA3D_DEVCAP_MAX,
601 1, 1, 2,
602 SVGA3DFORMAT_OP_ZSTENCIL
603 },
604 {
605 "SVGA3D_LUMINANCE8",
606 SVGA3D_LUMINANCE8,
607 SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8,
608 1, 1, 1,
609 SVGA3DFORMAT_OP_TEXTURE |
610 SVGA3DFORMAT_OP_CUBETEXTURE |
611 SVGA3DFORMAT_OP_VOLUMETEXTURE
612 },
613 {
614 /*
615 * SVGA3D_LUMINANCE4_ALPHA4 is not supported, and has no corresponding
616 * SVGA3D_DEVCAP_xxx.
617 */
618 "SVGA3D_LUMINANCE4_ALPHA4",
619 SVGA3D_LUMINANCE4_ALPHA4, 0, 0, 0, 0, 0
620 },
621 {
622 "SVGA3D_LUMINANCE16",
623 SVGA3D_LUMINANCE16,
624 SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE16,
625 1, 1, 2,
626 SVGA3DFORMAT_OP_TEXTURE |
627 SVGA3DFORMAT_OP_CUBETEXTURE |
628 SVGA3DFORMAT_OP_VOLUMETEXTURE
629 },
630 {
631 "SVGA3D_LUMINANCE8_ALPHA8",
632 SVGA3D_LUMINANCE8_ALPHA8,
633 SVGA3D_DEVCAP_SURFACEFMT_LUMINANCE8_ALPHA8,
634 1, 1, 2,
635 SVGA3DFORMAT_OP_TEXTURE |
636 SVGA3DFORMAT_OP_CUBETEXTURE |
637 SVGA3DFORMAT_OP_VOLUMETEXTURE
638 },
639 {
640 "SVGA3D_DXT1",
641 SVGA3D_DXT1,
642 SVGA3D_DEVCAP_SURFACEFMT_DXT1,
643 4, 4, 8,
644 SVGA3DFORMAT_OP_TEXTURE |
645 SVGA3DFORMAT_OP_CUBETEXTURE
646 },
647 {
648 "SVGA3D_DXT2",
649 SVGA3D_DXT2,
650 SVGA3D_DEVCAP_SURFACEFMT_DXT2,
651 4, 4, 8,
652 SVGA3DFORMAT_OP_TEXTURE |
653 SVGA3DFORMAT_OP_CUBETEXTURE
654 },
655 {
656 "SVGA3D_DXT3",
657 SVGA3D_DXT3,
658 SVGA3D_DEVCAP_SURFACEFMT_DXT3,
659 4, 4, 16,
660 SVGA3DFORMAT_OP_TEXTURE |
661 SVGA3DFORMAT_OP_CUBETEXTURE
662 },
663 {
664 "SVGA3D_DXT4",
665 SVGA3D_DXT4,
666 SVGA3D_DEVCAP_SURFACEFMT_DXT4,
667 4, 4, 16,
668 SVGA3DFORMAT_OP_TEXTURE |
669 SVGA3DFORMAT_OP_CUBETEXTURE
670 },
671 {
672 "SVGA3D_DXT5",
673 SVGA3D_DXT5,
674 SVGA3D_DEVCAP_SURFACEFMT_DXT5,
675 4, 4, 8,
676 SVGA3DFORMAT_OP_TEXTURE |
677 SVGA3DFORMAT_OP_CUBETEXTURE
678 },
679 {
680 "SVGA3D_BUMPU8V8",
681 SVGA3D_BUMPU8V8,
682 SVGA3D_DEVCAP_SURFACEFMT_BUMPU8V8,
683 1, 1, 2,
684 SVGA3DFORMAT_OP_TEXTURE |
685 SVGA3DFORMAT_OP_CUBETEXTURE |
686 SVGA3DFORMAT_OP_VOLUMETEXTURE
687 },
688 {
689 /*
690 * SVGA3D_BUMPL6V5U5 is unsupported; it has no corresponding
691 * SVGA3D_DEVCAP_xxx.
692 */
693 "SVGA3D_BUMPL6V5U5",
694 SVGA3D_BUMPL6V5U5, 0, 0, 0, 0, 0
695 },
696 {
697 "SVGA3D_BUMPX8L8V8U8",
698 SVGA3D_BUMPX8L8V8U8,
699 SVGA3D_DEVCAP_SURFACEFMT_BUMPX8L8V8U8,
700 1, 1, 4,
701 SVGA3DFORMAT_OP_TEXTURE |
702 SVGA3DFORMAT_OP_CUBETEXTURE
703 },
704 {
705 "SVGA3D_FORMAT_DEAD1",
706 SVGA3D_FORMAT_DEAD1, 0, 0, 0, 0, 0
707 },
708 {
709 "SVGA3D_ARGB_S10E5",
710 SVGA3D_ARGB_S10E5,
711 SVGA3D_DEVCAP_SURFACEFMT_ARGB_S10E5,
712 1, 1, 2,
713 SVGA3DFORMAT_OP_TEXTURE |
714 SVGA3DFORMAT_OP_CUBETEXTURE |
715 SVGA3DFORMAT_OP_VOLUMETEXTURE |
716 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
717 },
718 {
719 "SVGA3D_ARGB_S23E8",
720 SVGA3D_ARGB_S23E8,
721 SVGA3D_DEVCAP_SURFACEFMT_ARGB_S23E8,
722 1, 1, 4,
723 SVGA3DFORMAT_OP_TEXTURE |
724 SVGA3DFORMAT_OP_CUBETEXTURE |
725 SVGA3DFORMAT_OP_VOLUMETEXTURE |
726 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
727 },
728 {
729 "SVGA3D_A2R10G10B10",
730 SVGA3D_A2R10G10B10,
731 SVGA3D_DEVCAP_SURFACEFMT_A2R10G10B10,
732 1, 1, 4,
733 SVGA3DFORMAT_OP_TEXTURE |
734 SVGA3DFORMAT_OP_CUBETEXTURE |
735 SVGA3DFORMAT_OP_VOLUMETEXTURE |
736 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
737 },
738 {
739 /*
740 * SVGA3D_V8U8 is unsupported; it has no corresponding
741 * SVGA3D_DEVCAP_xxx. SVGA3D_BUMPU8V8 should be used instead.
742 */
743 "SVGA3D_V8U8",
744 SVGA3D_V8U8, 0, 0, 0, 0, 0
745 },
746 {
747 "SVGA3D_Q8W8V8U8",
748 SVGA3D_Q8W8V8U8,
749 SVGA3D_DEVCAP_SURFACEFMT_Q8W8V8U8,
750 1, 1, 4,
751 SVGA3DFORMAT_OP_TEXTURE |
752 SVGA3DFORMAT_OP_CUBETEXTURE
753 },
754 {
755 "SVGA3D_CxV8U8",
756 SVGA3D_CxV8U8,
757 SVGA3D_DEVCAP_SURFACEFMT_CxV8U8,
758 1, 1, 2,
759 SVGA3DFORMAT_OP_TEXTURE
760 },
761 {
762 /*
763 * SVGA3D_X8L8V8U8 is unsupported; it has no corresponding
764 * SVGA3D_DEVCAP_xxx. SVGA3D_BUMPX8L8V8U8 should be used instead.
765 */
766 "SVGA3D_X8L8V8U8",
767 SVGA3D_X8L8V8U8, 0, 0, 0, 0, 0
768 },
769 {
770 "SVGA3D_A2W10V10U10",
771 SVGA3D_A2W10V10U10,
772 SVGA3D_DEVCAP_SURFACEFMT_A2W10V10U10,
773 1, 1, 4,
774 SVGA3DFORMAT_OP_TEXTURE
775 },
776 {
777 "SVGA3D_ALPHA8",
778 SVGA3D_ALPHA8,
779 SVGA3D_DEVCAP_SURFACEFMT_ALPHA8,
780 1, 1, 1,
781 SVGA3DFORMAT_OP_TEXTURE |
782 SVGA3DFORMAT_OP_CUBETEXTURE |
783 SVGA3DFORMAT_OP_VOLUMETEXTURE
784 },
785 {
786 "SVGA3D_R_S10E5",
787 SVGA3D_R_S10E5,
788 SVGA3D_DEVCAP_SURFACEFMT_R_S10E5,
789 1, 1, 2,
790 SVGA3DFORMAT_OP_TEXTURE |
791 SVGA3DFORMAT_OP_VOLUMETEXTURE |
792 SVGA3DFORMAT_OP_CUBETEXTURE |
793 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
794 },
795 {
796 "SVGA3D_R_S23E8",
797 SVGA3D_R_S23E8,
798 SVGA3D_DEVCAP_SURFACEFMT_R_S23E8,
799 1, 1, 4,
800 SVGA3DFORMAT_OP_TEXTURE |
801 SVGA3DFORMAT_OP_VOLUMETEXTURE |
802 SVGA3DFORMAT_OP_CUBETEXTURE |
803 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
804 },
805 {
806 "SVGA3D_RG_S10E5",
807 SVGA3D_RG_S10E5,
808 SVGA3D_DEVCAP_SURFACEFMT_RG_S10E5,
809 1, 1, 2,
810 SVGA3DFORMAT_OP_TEXTURE |
811 SVGA3DFORMAT_OP_VOLUMETEXTURE |
812 SVGA3DFORMAT_OP_CUBETEXTURE |
813 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
814 },
815 {
816 "SVGA3D_RG_S23E8",
817 SVGA3D_RG_S23E8,
818 SVGA3D_DEVCAP_SURFACEFMT_RG_S23E8,
819 1, 1, 4,
820 SVGA3DFORMAT_OP_TEXTURE |
821 SVGA3DFORMAT_OP_VOLUMETEXTURE |
822 SVGA3DFORMAT_OP_CUBETEXTURE |
823 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
824 },
825 {
826 /*
827 * SVGA3D_BUFFER is a placeholder format for index/vertex buffers.
828 */
829 "SVGA3D_BUFFER",
830 SVGA3D_BUFFER, 0, 1, 1, 1, 0
831 },
832 {
833 "SVGA3D_Z_D24X8",
834 SVGA3D_Z_D24X8,
835 SVGA3D_DEVCAP_SURFACEFMT_Z_D24X8,
836 1, 1, 4,
837 SVGA3DFORMAT_OP_ZSTENCIL
838 },
839 {
840 "SVGA3D_V16U16",
841 SVGA3D_V16U16,
842 SVGA3D_DEVCAP_SURFACEFMT_V16U16,
843 1, 1, 4,
844 SVGA3DFORMAT_OP_TEXTURE |
845 SVGA3DFORMAT_OP_CUBETEXTURE |
846 SVGA3DFORMAT_OP_VOLUMETEXTURE
847 },
848 {
849 "SVGA3D_G16R16",
850 SVGA3D_G16R16,
851 SVGA3D_DEVCAP_SURFACEFMT_G16R16,
852 1, 1, 4,
853 SVGA3DFORMAT_OP_TEXTURE |
854 SVGA3DFORMAT_OP_CUBETEXTURE |
855 SVGA3DFORMAT_OP_VOLUMETEXTURE |
856 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
857 },
858 {
859 "SVGA3D_A16B16G16R16",
860 SVGA3D_A16B16G16R16,
861 SVGA3D_DEVCAP_SURFACEFMT_A16B16G16R16,
862 1, 1, 8,
863 SVGA3DFORMAT_OP_TEXTURE |
864 SVGA3DFORMAT_OP_CUBETEXTURE |
865 SVGA3DFORMAT_OP_VOLUMETEXTURE |
866 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
867 },
868 {
869 "SVGA3D_UYVY",
870 SVGA3D_UYVY,
871 SVGA3D_DEVCAP_SURFACEFMT_UYVY,
872 0, 0, 0,
873 0
874 },
875 {
876 "SVGA3D_YUY2",
877 SVGA3D_YUY2,
878 SVGA3D_DEVCAP_SURFACEFMT_YUY2,
879 0, 0, 0,
880 0
881 },
882 {
883 "SVGA3D_NV12",
884 SVGA3D_NV12,
885 SVGA3D_DEVCAP_SURFACEFMT_NV12,
886 0, 0, 0,
887 0
888 },
889 {
890 "SVGA3D_AYUV",
891 SVGA3D_AYUV,
892 SVGA3D_DEVCAP_SURFACEFMT_AYUV,
893 0, 0, 0,
894 0
895 },
896 {
897 "SVGA3D_R32G32B32A32_TYPELESS",
898 SVGA3D_R32G32B32A32_TYPELESS,
899 SVGA3D_DEVCAP_DXFMT_R32G32B32A32_TYPELESS,
900 1, 1, 16,
901 SVGA3DFORMAT_OP_TEXTURE |
902 SVGA3DFORMAT_OP_CUBETEXTURE |
903 SVGA3DFORMAT_OP_VOLUMETEXTURE |
904 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
905 },
906 {
907 "SVGA3D_R32G32B32A32_UINT",
908 SVGA3D_R32G32B32A32_UINT,
909 SVGA3D_DEVCAP_DXFMT_R32G32B32A32_UINT,
910 1, 1, 16,
911 SVGA3DFORMAT_OP_TEXTURE |
912 SVGA3DFORMAT_OP_CUBETEXTURE |
913 SVGA3DFORMAT_OP_VOLUMETEXTURE |
914 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
915 },
916 {
917 "SVGA3D_R32G32B32A32_SINT",
918 SVGA3D_R32G32B32A32_SINT,
919 SVGA3D_DEVCAP_DXFMT_R32G32B32A32_SINT,
920 1, 1, 16,
921 SVGA3DFORMAT_OP_TEXTURE |
922 SVGA3DFORMAT_OP_CUBETEXTURE |
923 SVGA3DFORMAT_OP_VOLUMETEXTURE |
924 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
925 },
926 {
927 "SVGA3D_R32G32B32_TYPELESS",
928 SVGA3D_R32G32B32_TYPELESS,
929 SVGA3D_DEVCAP_DXFMT_R32G32B32_TYPELESS,
930 1, 1, 12,
931 SVGA3DFORMAT_OP_TEXTURE |
932 SVGA3DFORMAT_OP_CUBETEXTURE |
933 SVGA3DFORMAT_OP_VOLUMETEXTURE |
934 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
935 },
936 {
937 "SVGA3D_R32G32B32_FLOAT",
938 SVGA3D_R32G32B32_FLOAT,
939 SVGA3D_DEVCAP_DXFMT_R32G32B32_FLOAT,
940 1, 1, 12,
941 SVGA3DFORMAT_OP_TEXTURE |
942 SVGA3DFORMAT_OP_CUBETEXTURE |
943 SVGA3DFORMAT_OP_VOLUMETEXTURE |
944 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
945 },
946 {
947 "SVGA3D_R32G32B32_UINT",
948 SVGA3D_R32G32B32_UINT,
949 SVGA3D_DEVCAP_DXFMT_R32G32B32_UINT,
950 1, 1, 12,
951 SVGA3DFORMAT_OP_TEXTURE |
952 SVGA3DFORMAT_OP_CUBETEXTURE |
953 SVGA3DFORMAT_OP_VOLUMETEXTURE |
954 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
955 },
956 {
957 "SVGA3D_R32G32B32_SINT",
958 SVGA3D_R32G32B32_SINT,
959 SVGA3D_DEVCAP_DXFMT_R32G32B32_SINT,
960 1, 1, 12,
961 SVGA3DFORMAT_OP_TEXTURE |
962 SVGA3DFORMAT_OP_CUBETEXTURE |
963 SVGA3DFORMAT_OP_VOLUMETEXTURE |
964 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
965 },
966 {
967 "SVGA3D_R16G16B16A16_TYPELESS",
968 SVGA3D_R16G16B16A16_TYPELESS,
969 SVGA3D_DEVCAP_DXFMT_R16G16B16A16_TYPELESS,
970 1, 1, 8,
971 SVGA3DFORMAT_OP_TEXTURE |
972 SVGA3DFORMAT_OP_CUBETEXTURE |
973 SVGA3DFORMAT_OP_VOLUMETEXTURE |
974 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
975 },
976 {
977 "SVGA3D_R16G16B16A16_UINT",
978 SVGA3D_R16G16B16A16_UINT,
979 SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UINT,
980 1, 1, 8,
981 SVGA3DFORMAT_OP_TEXTURE |
982 SVGA3DFORMAT_OP_CUBETEXTURE |
983 SVGA3DFORMAT_OP_VOLUMETEXTURE |
984 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
985 },
986 {
987 "SVGA3D_R16G16B16A16_SNORM",
988 SVGA3D_R16G16B16A16_SNORM,
989 SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SNORM,
990 1, 1, 8,
991 SVGA3DFORMAT_OP_TEXTURE |
992 SVGA3DFORMAT_OP_CUBETEXTURE |
993 SVGA3DFORMAT_OP_VOLUMETEXTURE |
994 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
995 },
996 {
997 "SVGA3D_R16G16B16A16_SINT",
998 SVGA3D_R16G16B16A16_SINT,
999 SVGA3D_DEVCAP_DXFMT_R16G16B16A16_SINT,
1000 1, 1, 8,
1001 SVGA3DFORMAT_OP_TEXTURE |
1002 SVGA3DFORMAT_OP_CUBETEXTURE |
1003 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1004 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1005 },
1006 {
1007 "SVGA3D_R32G32_TYPELESS",
1008 SVGA3D_R32G32_TYPELESS,
1009 SVGA3D_DEVCAP_DXFMT_R32G32_TYPELESS,
1010 1, 1, 8,
1011 SVGA3DFORMAT_OP_TEXTURE |
1012 SVGA3DFORMAT_OP_CUBETEXTURE |
1013 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1014 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1015 },
1016 {
1017 "SVGA3D_R32G32_UINT",
1018 SVGA3D_R32G32_UINT,
1019 SVGA3D_DEVCAP_DXFMT_R32G32_UINT,
1020 1, 1, 8,
1021 SVGA3DFORMAT_OP_TEXTURE |
1022 SVGA3DFORMAT_OP_CUBETEXTURE |
1023 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1024 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1025 },
1026 {
1027 "SVGA3D_R32G32_SINT",
1028 SVGA3D_R32G32_SINT,
1029 SVGA3D_DEVCAP_DXFMT_R32G32_SINT,
1030 1, 1, 8,
1031 SVGA3DFORMAT_OP_TEXTURE |
1032 SVGA3DFORMAT_OP_CUBETEXTURE |
1033 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1034 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1035 },
1036 {
1037 "SVGA3D_R32G8X24_TYPELESS",
1038 SVGA3D_R32G8X24_TYPELESS,
1039 SVGA3D_DEVCAP_DXFMT_R32G8X24_TYPELESS,
1040 1, 1, 8,
1041 SVGA3DFORMAT_OP_TEXTURE |
1042 SVGA3DFORMAT_OP_CUBETEXTURE |
1043 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1044 SVGA3DFORMAT_OP_ZSTENCIL
1045 },
1046 {
1047 /* Special case: no devcap / report sampler and depth/stencil ability
1048 */
1049 "SVGA3D_D32_FLOAT_S8X24_UINT",
1050 SVGA3D_D32_FLOAT_S8X24_UINT,
1051 0, /*SVGA3D_DEVCAP_DXFMT_D32_FLOAT_S8X24_UINT*/
1052 1, 1, 8,
1053 SVGA3DFORMAT_OP_TEXTURE |
1054 SVGA3DFORMAT_OP_CUBETEXTURE |
1055 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1056 SVGA3DFORMAT_OP_ZSTENCIL
1057 },
1058 {
1059 /* Special case: no devcap / report sampler and depth/stencil ability
1060 */
1061 "SVGA3D_R32_FLOAT_X8X24_TYPELESS",
1062 SVGA3D_R32_FLOAT_X8X24_TYPELESS,
1063 0, /*SVGA3D_DEVCAP_DXFMT_R32_FLOAT_X8X24_TYPELESS*/
1064 1, 1, 8,
1065 SVGA3DFORMAT_OP_TEXTURE |
1066 SVGA3DFORMAT_OP_CUBETEXTURE |
1067 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1068 SVGA3DFORMAT_OP_ZSTENCIL
1069 },
1070 {
1071 "SVGA3D_X32_TYPELESS_G8X24_UINT",
1072 SVGA3D_X32_TYPELESS_G8X24_UINT,
1073 SVGA3D_DEVCAP_DXFMT_X32_TYPELESS_G8X24_UINT,
1074 1, 1, 4,
1075 SVGA3DFORMAT_OP_TEXTURE |
1076 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1077 SVGA3DFORMAT_OP_CUBETEXTURE |
1078 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1079 },
1080 {
1081 "SVGA3D_R10G10B10A2_TYPELESS",
1082 SVGA3D_R10G10B10A2_TYPELESS,
1083 SVGA3D_DEVCAP_DXFMT_R10G10B10A2_TYPELESS,
1084 1, 1, 4,
1085 SVGA3DFORMAT_OP_TEXTURE |
1086 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1087 SVGA3DFORMAT_OP_CUBETEXTURE |
1088 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1089 },
1090 {
1091 "SVGA3D_R10G10B10A2_UINT",
1092 SVGA3D_R10G10B10A2_UINT,
1093 SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UINT,
1094 1, 1, 4,
1095 SVGA3DFORMAT_OP_TEXTURE |
1096 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1097 SVGA3DFORMAT_OP_CUBETEXTURE |
1098 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1099 },
1100 {
1101 "SVGA3D_R11G11B10_FLOAT",
1102 SVGA3D_R11G11B10_FLOAT,
1103 SVGA3D_DEVCAP_DXFMT_R11G11B10_FLOAT,
1104 1, 1, 4,
1105 SVGA3DFORMAT_OP_TEXTURE |
1106 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1107 SVGA3DFORMAT_OP_CUBETEXTURE |
1108 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1109 },
1110 {
1111 "SVGA3D_R8G8B8A8_TYPELESS",
1112 SVGA3D_R8G8B8A8_TYPELESS,
1113 SVGA3D_DEVCAP_DXFMT_R8G8B8A8_TYPELESS,
1114 1, 1, 4,
1115 SVGA3DFORMAT_OP_TEXTURE |
1116 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1117 SVGA3DFORMAT_OP_CUBETEXTURE |
1118 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1119 },
1120 {
1121 "SVGA3D_R8G8B8A8_UNORM",
1122 SVGA3D_R8G8B8A8_UNORM,
1123 SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM,
1124 1, 1, 4,
1125 SVGA3DFORMAT_OP_TEXTURE |
1126 SVGA3DFORMAT_OP_CUBETEXTURE |
1127 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1128 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1129 },
1130 {
1131 "SVGA3D_R8G8B8A8_UNORM_SRGB",
1132 SVGA3D_R8G8B8A8_UNORM_SRGB,
1133 SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UNORM_SRGB,
1134 1, 1, 4,
1135 SVGA3DFORMAT_OP_TEXTURE |
1136 SVGA3DFORMAT_OP_CUBETEXTURE |
1137 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1138 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1139 },
1140 {
1141 "SVGA3D_R8G8B8A8_UINT",
1142 SVGA3D_R8G8B8A8_UINT,
1143 SVGA3D_DEVCAP_DXFMT_R8G8B8A8_UINT,
1144 1, 1, 4,
1145 SVGA3DFORMAT_OP_TEXTURE |
1146 SVGA3DFORMAT_OP_CUBETEXTURE |
1147 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1148 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1149 },
1150 {
1151 "SVGA3D_R8G8B8A8_SINT",
1152 SVGA3D_R8G8B8A8_SINT,
1153 SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SINT,
1154 1, 1, 4,
1155 SVGA3DFORMAT_OP_TEXTURE |
1156 SVGA3DFORMAT_OP_CUBETEXTURE |
1157 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1158 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1159 },
1160 {
1161 "SVGA3D_R16G16_TYPELESS",
1162 SVGA3D_R16G16_TYPELESS,
1163 SVGA3D_DEVCAP_DXFMT_R16G16_TYPELESS,
1164 1, 1, 4,
1165 SVGA3DFORMAT_OP_TEXTURE |
1166 SVGA3DFORMAT_OP_CUBETEXTURE |
1167 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1168 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1169 },
1170 {
1171 "SVGA3D_R16G16_UINT",
1172 SVGA3D_R16G16_UINT,
1173 SVGA3D_DEVCAP_DXFMT_R16G16_UINT,
1174 1, 1, 4,
1175 SVGA3DFORMAT_OP_TEXTURE |
1176 SVGA3DFORMAT_OP_CUBETEXTURE |
1177 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1178 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1179 },
1180 {
1181 "SVGA3D_R16G16_SINT",
1182 SVGA3D_R16G16_SINT,
1183 SVGA3D_DEVCAP_DXFMT_R16G16_SINT,
1184 1, 1, 4,
1185 SVGA3DFORMAT_OP_TEXTURE |
1186 SVGA3DFORMAT_OP_CUBETEXTURE |
1187 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1188 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1189 },
1190 {
1191 "SVGA3D_R32_TYPELESS",
1192 SVGA3D_R32_TYPELESS,
1193 SVGA3D_DEVCAP_DXFMT_R32_TYPELESS,
1194 1, 1, 4,
1195 SVGA3DFORMAT_OP_TEXTURE |
1196 SVGA3DFORMAT_OP_CUBETEXTURE |
1197 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1198 SVGA3DFORMAT_OP_ZSTENCIL |
1199 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1200 },
1201 {
1202 /* Special case: no devcap / report sampler and depth/stencil ability
1203 */
1204 "SVGA3D_D32_FLOAT",
1205 SVGA3D_D32_FLOAT,
1206 0, /*SVGA3D_DEVCAP_DXFMT_D32_FLOAT*/
1207 1, 1, 4,
1208 SVGA3DFORMAT_OP_TEXTURE |
1209 SVGA3DFORMAT_OP_CUBETEXTURE |
1210 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1211 SVGA3DFORMAT_OP_ZSTENCIL
1212 },
1213 {
1214 "SVGA3D_R32_UINT",
1215 SVGA3D_R32_UINT,
1216 SVGA3D_DEVCAP_DXFMT_R32_UINT,
1217 1, 1, 4,
1218 SVGA3DFORMAT_OP_TEXTURE |
1219 SVGA3DFORMAT_OP_CUBETEXTURE |
1220 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1221 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1222 },
1223 {
1224 "SVGA3D_R32_SINT",
1225 SVGA3D_R32_SINT,
1226 SVGA3D_DEVCAP_DXFMT_R32_SINT,
1227 1, 1, 4,
1228 SVGA3DFORMAT_OP_TEXTURE |
1229 SVGA3DFORMAT_OP_CUBETEXTURE |
1230 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1231 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1232 },
1233 {
1234 "SVGA3D_R24G8_TYPELESS",
1235 SVGA3D_R24G8_TYPELESS,
1236 SVGA3D_DEVCAP_DXFMT_R24G8_TYPELESS,
1237 1, 1, 4,
1238 SVGA3DFORMAT_OP_TEXTURE |
1239 SVGA3DFORMAT_OP_CUBETEXTURE |
1240 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1241 SVGA3DFORMAT_OP_ZSTENCIL
1242 },
1243 {
1244 /* Special case: no devcap / report sampler and depth/stencil ability
1245 */
1246 "SVGA3D_D24_UNORM_S8_UINT",
1247 SVGA3D_D24_UNORM_S8_UINT,
1248 0, /*SVGA3D_DEVCAP_DXFMT_D24_UNORM_S8_UINT*/
1249 1, 1, 4,
1250 SVGA3DFORMAT_OP_TEXTURE |
1251 SVGA3DFORMAT_OP_CUBETEXTURE |
1252 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1253 SVGA3DFORMAT_OP_ZSTENCIL
1254 },
1255 {
1256 /* Special case: no devcap / report sampler and depth/stencil ability
1257 */
1258 "SVGA3D_R24_UNORM_X8_TYPELESS",
1259 SVGA3D_R24_UNORM_X8_TYPELESS,
1260 0, /*SVGA3D_DEVCAP_DXFMT_R24_UNORM_X8_TYPELESS*/
1261 1, 1, 4,
1262 SVGA3DFORMAT_OP_TEXTURE |
1263 SVGA3DFORMAT_OP_CUBETEXTURE |
1264 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1265 SVGA3DFORMAT_OP_ZSTENCIL
1266 },
1267 {
1268 "SVGA3D_X24_TYPELESS_G8_UINT",
1269 SVGA3D_X24_TYPELESS_G8_UINT,
1270 SVGA3D_DEVCAP_DXFMT_X24_TYPELESS_G8_UINT,
1271 1, 1, 4,
1272 SVGA3DFORMAT_OP_TEXTURE |
1273 SVGA3DFORMAT_OP_CUBETEXTURE |
1274 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1275 SVGA3DFORMAT_OP_ZSTENCIL
1276 },
1277 {
1278 "SVGA3D_R8G8_TYPELESS",
1279 SVGA3D_R8G8_TYPELESS,
1280 SVGA3D_DEVCAP_DXFMT_R8G8_TYPELESS,
1281 1, 1, 2,
1282 SVGA3DFORMAT_OP_TEXTURE |
1283 SVGA3DFORMAT_OP_CUBETEXTURE |
1284 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1285 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1286 },
1287 {
1288 "SVGA3D_R8G8_UNORM",
1289 SVGA3D_R8G8_UNORM,
1290 SVGA3D_DEVCAP_DXFMT_R8G8_UNORM,
1291 1, 1, 2,
1292 SVGA3DFORMAT_OP_TEXTURE |
1293 SVGA3DFORMAT_OP_CUBETEXTURE |
1294 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1295 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1296 },
1297 {
1298 "SVGA3D_R8G8_UINT",
1299 SVGA3D_R8G8_UINT,
1300 SVGA3D_DEVCAP_DXFMT_R8G8_UINT,
1301 1, 1, 2,
1302 SVGA3DFORMAT_OP_TEXTURE |
1303 SVGA3DFORMAT_OP_CUBETEXTURE |
1304 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1305 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1306 },
1307 {
1308 "SVGA3D_R8G8_SINT",
1309 SVGA3D_R8G8_SINT,
1310 SVGA3D_DEVCAP_DXFMT_R8G8_SINT,
1311 1, 1, 2,
1312 SVGA3DFORMAT_OP_TEXTURE |
1313 SVGA3DFORMAT_OP_CUBETEXTURE |
1314 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1315 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1316 },
1317 {
1318 "SVGA3D_R16_TYPELESS",
1319 SVGA3D_R16_TYPELESS,
1320 SVGA3D_DEVCAP_DXFMT_R16_TYPELESS,
1321 1, 1, 2,
1322 SVGA3DFORMAT_OP_ZSTENCIL |
1323 SVGA3DFORMAT_OP_TEXTURE |
1324 SVGA3DFORMAT_OP_CUBETEXTURE |
1325 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1326 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1327 },
1328 {
1329 "SVGA3D_R16_UNORM",
1330 SVGA3D_R16_UNORM,
1331 SVGA3D_DEVCAP_DXFMT_R16_UNORM,
1332 1, 1, 2,
1333 SVGA3DFORMAT_OP_TEXTURE |
1334 SVGA3DFORMAT_OP_CUBETEXTURE |
1335 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1336 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1337 },
1338 {
1339 "SVGA3D_R16_UINT",
1340 SVGA3D_R16_UINT,
1341 SVGA3D_DEVCAP_DXFMT_R16_UINT,
1342 1, 1, 2,
1343 SVGA3DFORMAT_OP_TEXTURE |
1344 SVGA3DFORMAT_OP_CUBETEXTURE |
1345 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1346 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1347 },
1348 {
1349 "SVGA3D_R16_SNORM",
1350 SVGA3D_R16_SNORM,
1351 SVGA3D_DEVCAP_DXFMT_R16_SNORM,
1352 1, 1, 2,
1353 SVGA3DFORMAT_OP_TEXTURE |
1354 SVGA3DFORMAT_OP_CUBETEXTURE |
1355 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1356 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1357 },
1358 {
1359 "SVGA3D_R16_SINT",
1360 SVGA3D_R16_SINT,
1361 SVGA3D_DEVCAP_DXFMT_R16_SINT,
1362 1, 1, 2,
1363 SVGA3DFORMAT_OP_TEXTURE |
1364 SVGA3DFORMAT_OP_CUBETEXTURE |
1365 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1366 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1367 },
1368 {
1369 "SVGA3D_R8_TYPELESS",
1370 SVGA3D_R8_TYPELESS,
1371 SVGA3D_DEVCAP_DXFMT_R8_TYPELESS,
1372 1, 1, 1,
1373 SVGA3DFORMAT_OP_TEXTURE |
1374 SVGA3DFORMAT_OP_CUBETEXTURE |
1375 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1376 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1377 },
1378 {
1379 "SVGA3D_R8_UNORM",
1380 SVGA3D_R8_UNORM,
1381 SVGA3D_DEVCAP_DXFMT_R8_UNORM,
1382 1, 1, 1,
1383 SVGA3DFORMAT_OP_TEXTURE |
1384 SVGA3DFORMAT_OP_CUBETEXTURE |
1385 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1386 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1387 },
1388 {
1389 "SVGA3D_R8_UINT",
1390 SVGA3D_R8_UINT,
1391 SVGA3D_DEVCAP_DXFMT_R8_UINT,
1392 1, 1, 1,
1393 SVGA3DFORMAT_OP_TEXTURE |
1394 SVGA3DFORMAT_OP_CUBETEXTURE |
1395 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1396 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1397 },
1398 {
1399 "SVGA3D_R8_SNORM",
1400 SVGA3D_R8_SNORM,
1401 SVGA3D_DEVCAP_DXFMT_R8_SNORM,
1402 1, 1, 1,
1403 SVGA3DFORMAT_OP_TEXTURE |
1404 SVGA3DFORMAT_OP_CUBETEXTURE |
1405 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1406 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1407 },
1408 {
1409 "SVGA3D_R8_SINT",
1410 SVGA3D_R8_SINT,
1411 SVGA3D_DEVCAP_DXFMT_R8_SINT,
1412 1, 1, 1,
1413 SVGA3DFORMAT_OP_TEXTURE |
1414 SVGA3DFORMAT_OP_CUBETEXTURE |
1415 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1416 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1417 },
1418 {
1419 "SVGA3D_P8",
1420 SVGA3D_P8, 0, 0, 0, 0, 0
1421 },
1422 {
1423 "SVGA3D_R9G9B9E5_SHAREDEXP",
1424 SVGA3D_R9G9B9E5_SHAREDEXP,
1425 SVGA3D_DEVCAP_DXFMT_R9G9B9E5_SHAREDEXP,
1426 1, 1, 4,
1427 SVGA3DFORMAT_OP_TEXTURE |
1428 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1429 SVGA3DFORMAT_OP_CUBETEXTURE |
1430 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1431 },
1432 {
1433 "SVGA3D_R8G8_B8G8_UNORM",
1434 SVGA3D_R8G8_B8G8_UNORM, 0, 0, 0, 0, 0
1435 },
1436 {
1437 "SVGA3D_G8R8_G8B8_UNORM",
1438 SVGA3D_G8R8_G8B8_UNORM, 0, 0, 0, 0, 0
1439 },
1440 {
1441 "SVGA3D_BC1_TYPELESS",
1442 SVGA3D_BC1_TYPELESS,
1443 SVGA3D_DEVCAP_DXFMT_BC1_TYPELESS,
1444 4, 4, 8,
1445 SVGA3DFORMAT_OP_TEXTURE |
1446 SVGA3DFORMAT_OP_CUBETEXTURE
1447 },
1448 {
1449 "SVGA3D_BC1_UNORM_SRGB",
1450 SVGA3D_BC1_UNORM_SRGB,
1451 SVGA3D_DEVCAP_DXFMT_BC1_UNORM_SRGB,
1452 4, 4, 8,
1453 SVGA3DFORMAT_OP_TEXTURE |
1454 SVGA3DFORMAT_OP_CUBETEXTURE
1455 },
1456 {
1457 "SVGA3D_BC2_TYPELESS",
1458 SVGA3D_BC2_TYPELESS,
1459 SVGA3D_DEVCAP_DXFMT_BC2_TYPELESS,
1460 4, 4, 16,
1461 SVGA3DFORMAT_OP_TEXTURE |
1462 SVGA3DFORMAT_OP_CUBETEXTURE
1463 },
1464 {
1465 "SVGA3D_BC2_UNORM_SRGB",
1466 SVGA3D_BC2_UNORM_SRGB,
1467 SVGA3D_DEVCAP_DXFMT_BC2_UNORM_SRGB,
1468 4, 4, 16,
1469 SVGA3DFORMAT_OP_TEXTURE |
1470 SVGA3DFORMAT_OP_CUBETEXTURE
1471 },
1472 {
1473 "SVGA3D_BC3_TYPELESS",
1474 SVGA3D_BC3_TYPELESS,
1475 SVGA3D_DEVCAP_DXFMT_BC3_TYPELESS,
1476 4, 4, 16,
1477 SVGA3DFORMAT_OP_TEXTURE |
1478 SVGA3DFORMAT_OP_CUBETEXTURE
1479 },
1480 {
1481 "SVGA3D_BC3_UNORM_SRGB",
1482 SVGA3D_BC3_UNORM_SRGB,
1483 4, 4, 16,
1484 SVGA3DFORMAT_OP_TEXTURE |
1485 SVGA3DFORMAT_OP_CUBETEXTURE
1486 },
1487 {
1488 "SVGA3D_BC4_TYPELESS",
1489 SVGA3D_BC4_TYPELESS,
1490 SVGA3D_DEVCAP_DXFMT_BC4_TYPELESS,
1491 4, 4, 8,
1492 SVGA3DFORMAT_OP_TEXTURE |
1493 SVGA3DFORMAT_OP_CUBETEXTURE
1494 },
1495 {
1496 "SVGA3D_ATI1",
1497 SVGA3D_ATI1, 0, 0, 0, 0, 0
1498 },
1499 {
1500 "SVGA3D_BC4_SNORM",
1501 SVGA3D_BC4_SNORM,
1502 SVGA3D_DEVCAP_DXFMT_BC4_SNORM,
1503 4, 4, 8,
1504 SVGA3DFORMAT_OP_TEXTURE |
1505 SVGA3DFORMAT_OP_CUBETEXTURE
1506 },
1507 {
1508 "SVGA3D_BC5_TYPELESS",
1509 SVGA3D_BC5_TYPELESS,
1510 SVGA3D_DEVCAP_DXFMT_BC5_TYPELESS,
1511 4, 4, 16,
1512 SVGA3DFORMAT_OP_TEXTURE |
1513 SVGA3DFORMAT_OP_CUBETEXTURE
1514 },
1515 {
1516 "SVGA3D_ATI2",
1517 SVGA3D_ATI2, 0, 0, 0, 0, 0
1518 },
1519 {
1520 "SVGA3D_BC5_SNORM",
1521 SVGA3D_BC5_SNORM,
1522 SVGA3D_DEVCAP_DXFMT_BC5_SNORM,
1523 4, 4, 16,
1524 SVGA3DFORMAT_OP_TEXTURE |
1525 SVGA3DFORMAT_OP_CUBETEXTURE
1526 },
1527 {
1528 "SVGA3D_R10G10B10_XR_BIAS_A2_UNORM",
1529 SVGA3D_R10G10B10_XR_BIAS_A2_UNORM, 0, 0, 0, 0, 0
1530 },
1531 {
1532 "SVGA3D_B8G8R8A8_TYPELESS",
1533 SVGA3D_B8G8R8A8_TYPELESS,
1534 SVGA3D_DEVCAP_DXFMT_B8G8R8A8_TYPELESS,
1535 1, 1, 4,
1536 SVGA3DFORMAT_OP_TEXTURE |
1537 SVGA3DFORMAT_OP_CUBETEXTURE |
1538 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1539 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1540 },
1541 {
1542 "SVGA3D_B8G8R8A8_UNORM_SRGB",
1543 SVGA3D_B8G8R8A8_UNORM_SRGB,
1544 SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM_SRGB,
1545 1, 1, 4,
1546 SVGA3DFORMAT_OP_TEXTURE |
1547 SVGA3DFORMAT_OP_CUBETEXTURE |
1548 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1549 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1550 },
1551 {
1552 "SVGA3D_B8G8R8X8_TYPELESS",
1553 SVGA3D_B8G8R8X8_TYPELESS,
1554 SVGA3D_DEVCAP_DXFMT_B8G8R8X8_TYPELESS,
1555 1, 1, 4,
1556 SVGA3DFORMAT_OP_TEXTURE |
1557 SVGA3DFORMAT_OP_CUBETEXTURE |
1558 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1559 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1560 },
1561 {
1562 "SVGA3D_B8G8R8X8_UNORM_SRGB",
1563 SVGA3D_B8G8R8X8_UNORM_SRGB,
1564 SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM_SRGB,
1565 1, 1, 4,
1566 SVGA3DFORMAT_OP_TEXTURE |
1567 SVGA3DFORMAT_OP_CUBETEXTURE |
1568 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1569 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1570 },
1571 {
1572 "SVGA3D_Z_DF16",
1573 SVGA3D_Z_DF16,
1574 SVGA3D_DEVCAP_SURFACEFMT_Z_DF16,
1575 1, 1, 2,
1576 0
1577 },
1578 {
1579 "SVGA3D_Z_DF24",
1580 SVGA3D_Z_DF24,
1581 SVGA3D_DEVCAP_SURFACEFMT_Z_DF24,
1582 1, 1, 4,
1583 0
1584 },
1585 {
1586 "SVGA3D_Z_D24S8_INT",
1587 SVGA3D_Z_D24S8_INT,
1588 SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT,
1589 1, 1, 4,
1590 SVGA3DFORMAT_OP_TEXTURE |
1591 SVGA3DFORMAT_OP_CUBETEXTURE |
1592 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1593 SVGA3DFORMAT_OP_ZSTENCIL
1594 },
1595 {
1596 "SVGA3D_YV12",
1597 SVGA3D_YV12, 0, 0, 0, 0, 0
1598 },
1599 {
1600 "SVGA3D_R32G32B32A32_FLOAT",
1601 SVGA3D_R32G32B32A32_FLOAT,
1602 SVGA3D_DEVCAP_DXFMT_R32G32B32A32_FLOAT,
1603 1, 1, 16,
1604 SVGA3DFORMAT_OP_TEXTURE |
1605 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1606 SVGA3DFORMAT_OP_CUBETEXTURE |
1607 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1608 },
1609 {
1610 "SVGA3D_R16G16B16A16_FLOAT",
1611 SVGA3D_R16G16B16A16_FLOAT,
1612 SVGA3D_DEVCAP_DXFMT_R16G16B16A16_FLOAT,
1613 1, 1, 8,
1614 SVGA3DFORMAT_OP_TEXTURE |
1615 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1616 SVGA3DFORMAT_OP_CUBETEXTURE |
1617 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1618 },
1619 {
1620 "SVGA3D_R16G16B16A16_UNORM",
1621 SVGA3D_R16G16B16A16_UNORM,
1622 SVGA3D_DEVCAP_DXFMT_R16G16B16A16_UNORM,
1623 1, 1, 8,
1624 SVGA3DFORMAT_OP_TEXTURE |
1625 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1626 SVGA3DFORMAT_OP_CUBETEXTURE |
1627 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1628 },
1629 {
1630 "SVGA3D_R32G32_FLOAT",
1631 SVGA3D_R32G32_FLOAT,
1632 SVGA3D_DEVCAP_DXFMT_R32G32_FLOAT,
1633 1, 1, 8,
1634 SVGA3DFORMAT_OP_TEXTURE |
1635 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1636 SVGA3DFORMAT_OP_CUBETEXTURE |
1637 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1638 },
1639 {
1640 "SVGA3D_R10G10B10A2_UNORM",
1641 SVGA3D_R10G10B10A2_UNORM,
1642 SVGA3D_DEVCAP_DXFMT_R10G10B10A2_UNORM,
1643 1, 1, 4,
1644 SVGA3DFORMAT_OP_TEXTURE |
1645 SVGA3DFORMAT_OP_CUBETEXTURE |
1646 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1647 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1648 },
1649 {
1650 "SVGA3D_R8G8B8A8_SNORM",
1651 SVGA3D_R8G8B8A8_SNORM,
1652 SVGA3D_DEVCAP_DXFMT_R8G8B8A8_SNORM,
1653 1, 1, 4,
1654 SVGA3DFORMAT_OP_TEXTURE |
1655 SVGA3DFORMAT_OP_CUBETEXTURE |
1656 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1657 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1658 },
1659 {
1660 "SVGA3D_R16G16_FLOAT",
1661 SVGA3D_R16G16_FLOAT,
1662 SVGA3D_DEVCAP_DXFMT_R16G16_FLOAT,
1663 1, 1, 4,
1664 SVGA3DFORMAT_OP_TEXTURE |
1665 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1666 SVGA3DFORMAT_OP_CUBETEXTURE |
1667 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1668 },
1669 {
1670 "SVGA3D_R16G16_UNORM",
1671 SVGA3D_R16G16_UNORM,
1672 SVGA3D_DEVCAP_DXFMT_R16G16_UNORM,
1673 1, 1, 4,
1674 SVGA3DFORMAT_OP_TEXTURE |
1675 SVGA3DFORMAT_OP_CUBETEXTURE |
1676 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1677 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1678 },
1679 {
1680 "SVGA3D_R16G16_SNORM",
1681 SVGA3D_R16G16_SNORM,
1682 SVGA3D_DEVCAP_DXFMT_R16G16_SNORM,
1683 1, 1, 4,
1684 SVGA3DFORMAT_OP_TEXTURE |
1685 SVGA3DFORMAT_OP_CUBETEXTURE |
1686 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1687 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1688 },
1689 {
1690 "SVGA3D_R32_FLOAT",
1691 SVGA3D_R32_FLOAT,
1692 SVGA3D_DEVCAP_DXFMT_R32_FLOAT,
1693 1, 1, 4,
1694 SVGA3DFORMAT_OP_TEXTURE |
1695 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1696 SVGA3DFORMAT_OP_CUBETEXTURE |
1697 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1698 },
1699 {
1700 "SVGA3D_R8G8_SNORM",
1701 SVGA3D_R8G8_SNORM,
1702 SVGA3D_DEVCAP_DXFMT_R8G8_SNORM,
1703 1, 1, 2,
1704 SVGA3DFORMAT_OP_TEXTURE |
1705 SVGA3DFORMAT_OP_CUBETEXTURE |
1706 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1707 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1708 },
1709 {
1710 "SVGA3D_R16_FLOAT",
1711 SVGA3D_R16_FLOAT,
1712 SVGA3D_DEVCAP_DXFMT_R16_FLOAT,
1713 1, 1, 2,
1714 SVGA3DFORMAT_OP_TEXTURE |
1715 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1716 SVGA3DFORMAT_OP_CUBETEXTURE |
1717 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1718 },
1719 {
1720 "SVGA3D_D16_UNORM",
1721 SVGA3D_D16_UNORM,
1722 0, /*SVGA3D_DEVCAP_DXFMT_D16_UNORM*/
1723 1, 1, 2,
1724 SVGA3DFORMAT_OP_TEXTURE |
1725 SVGA3DFORMAT_OP_CUBETEXTURE |
1726 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1727 SVGA3DFORMAT_OP_ZSTENCIL
1728 },
1729 {
1730 "SVGA3D_A8_UNORM",
1731 SVGA3D_A8_UNORM,
1732 SVGA3D_DEVCAP_DXFMT_A8_UNORM,
1733 1, 1, 1,
1734 SVGA3DFORMAT_OP_TEXTURE |
1735 SVGA3DFORMAT_OP_CUBETEXTURE |
1736 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1737 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1738 },
1739 {
1740 "SVGA3D_BC1_UNORM",
1741 SVGA3D_BC1_UNORM,
1742 SVGA3D_DEVCAP_DXFMT_BC1_UNORM,
1743 4, 4, 8,
1744 SVGA3DFORMAT_OP_TEXTURE |
1745 SVGA3DFORMAT_OP_CUBETEXTURE
1746 },
1747 {
1748 "SVGA3D_BC2_UNORM",
1749 SVGA3D_BC2_UNORM,
1750 SVGA3D_DEVCAP_DXFMT_BC2_UNORM,
1751 4, 4, 16,
1752 SVGA3DFORMAT_OP_TEXTURE |
1753 SVGA3DFORMAT_OP_CUBETEXTURE
1754 },
1755 {
1756 "SVGA3D_BC3_UNORM",
1757 SVGA3D_BC3_UNORM,
1758 SVGA3D_DEVCAP_DXFMT_BC3_UNORM,
1759 4, 4, 16,
1760 SVGA3DFORMAT_OP_TEXTURE |
1761 SVGA3DFORMAT_OP_CUBETEXTURE
1762 },
1763 {
1764 "SVGA3D_B5G6R5_UNORM",
1765 SVGA3D_B5G6R5_UNORM,
1766 SVGA3D_DEVCAP_DXFMT_B5G6R5_UNORM,
1767 1, 1, 2,
1768 SVGA3DFORMAT_OP_TEXTURE |
1769 SVGA3DFORMAT_OP_CUBETEXTURE |
1770 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1771 SVGA3DFORMAT_OP_DISPLAYMODE |
1772 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1773 },
1774 {
1775 "SVGA3D_B5G5R5A1_UNORM",
1776 SVGA3D_B5G5R5A1_UNORM,
1777 SVGA3D_DEVCAP_DXFMT_B5G5R5A1_UNORM,
1778 1, 1, 2,
1779 SVGA3DFORMAT_OP_TEXTURE |
1780 SVGA3DFORMAT_OP_CUBETEXTURE |
1781 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1782 SVGA3DFORMAT_OP_DISPLAYMODE |
1783 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1784 },
1785 {
1786 "SVGA3D_B8G8R8A8_UNORM",
1787 SVGA3D_B8G8R8A8_UNORM,
1788 SVGA3D_DEVCAP_DXFMT_B8G8R8A8_UNORM,
1789 1, 1, 4,
1790 SVGA3DFORMAT_OP_TEXTURE |
1791 SVGA3DFORMAT_OP_CUBETEXTURE |
1792 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1793 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1794 },
1795 {
1796 "SVGA3D_B8G8R8X8_UNORM",
1797 SVGA3D_B8G8R8X8_UNORM,
1798 SVGA3D_DEVCAP_DXFMT_B8G8R8X8_UNORM,
1799 1, 1, 4,
1800 SVGA3DFORMAT_OP_TEXTURE |
1801 SVGA3DFORMAT_OP_CUBETEXTURE |
1802 SVGA3DFORMAT_OP_VOLUMETEXTURE |
1803 SVGA3DFORMAT_OP_DISPLAYMODE |
1804 SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET
1805 },
1806 {
1807 "SVGA3D_BC4_UNORM",
1808 SVGA3D_BC4_UNORM,
1809 SVGA3D_DEVCAP_DXFMT_BC4_UNORM,
1810 4, 4, 8,
1811 SVGA3DFORMAT_OP_TEXTURE |
1812 SVGA3DFORMAT_OP_CUBETEXTURE
1813 },
1814 {
1815 "SVGA3D_BC5_UNORM",
1816 SVGA3D_BC5_UNORM,
1817 SVGA3D_DEVCAP_DXFMT_BC5_UNORM,
1818 4, 4, 16,
1819 SVGA3DFORMAT_OP_TEXTURE |
1820 SVGA3DFORMAT_OP_CUBETEXTURE
1821 }
1822 };
1823
1824
1825 /**
1826 * Debug only:
1827 * 1. check that format_cap_table[i] matches the i-th SVGA3D format.
1828 * 2. check that format_conversion_table[i].pformat == i.
1829 */
1830 static void
1831 check_format_tables(void)
1832 {
1833 static boolean first_call = TRUE;
1834
1835 if (first_call) {
1836 unsigned i;
1837
1838 STATIC_ASSERT(ARRAY_SIZE(format_cap_table) == SVGA3D_FORMAT_MAX);
1839 for (i = 0; i < ARRAY_SIZE(format_cap_table); i++) {
1840 assert(format_cap_table[i].format == i);
1841 }
1842
1843 STATIC_ASSERT(ARRAY_SIZE(format_conversion_table) == PIPE_FORMAT_COUNT);
1844 for (i = 0; i < ARRAY_SIZE(format_conversion_table); i++) {
1845 assert(format_conversion_table[i].pformat == i);
1846 }
1847
1848 first_call = FALSE;
1849 }
1850 }
1851
1852
1853 /*
1854 * Get format capabilities from the host. It takes in consideration
1855 * deprecated/unsupported formats, and formats which are implicitely assumed to
1856 * be supported when the host does not provide an explicit capability entry.
1857 */
1858 void
1859 svga_get_format_cap(struct svga_screen *ss,
1860 SVGA3dSurfaceFormat format,
1861 SVGA3dSurfaceFormatCaps *caps)
1862 {
1863 struct svga_winsys_screen *sws = ss->sws;
1864 SVGA3dDevCapResult result;
1865 const struct format_cap *entry;
1866
1867 #ifdef DEBUG
1868 check_format_tables();
1869 #else
1870 (void) check_format_tables;
1871 #endif
1872
1873 assert(format < ARRAY_SIZE(format_cap_table));
1874 entry = &format_cap_table[format];
1875 assert(entry->format == format);
1876
1877 if (entry->devcap && sws->get_cap(sws, entry->devcap, &result)) {
1878 /* Explicitly advertised format */
1879 if (entry->devcap > SVGA3D_DEVCAP_DX) {
1880 /* Translate DX/VGPU10 format cap to VGPU9 cap */
1881 caps->value = 0;
1882 if (result.u & SVGA3D_DXFMT_COLOR_RENDERTARGET)
1883 caps->value |= SVGA3DFORMAT_OP_OFFSCREEN_RENDERTARGET;
1884 if (!(result.u & SVGA3D_DXFMT_BLENDABLE))
1885 caps->value |= SVGA3DFORMAT_OP_NOALPHABLEND;
1886 if (result.u & SVGA3D_DXFMT_DEPTH_RENDERTARGET)
1887 caps->value |= SVGA3DFORMAT_OP_ZSTENCIL;
1888 if (result.u & SVGA3D_DXFMT_SHADER_SAMPLE)
1889 caps->value |= (SVGA3DFORMAT_OP_TEXTURE |
1890 SVGA3DFORMAT_OP_CUBETEXTURE);
1891 if (result.u & SVGA3D_DXFMT_VOLUME)
1892 caps->value |= SVGA3DFORMAT_OP_VOLUMETEXTURE;
1893 }
1894 else {
1895 /* Return VGPU9 format cap as-is */
1896 caps->value = result.u;
1897 }
1898
1899 } else {
1900 /* Implicitly advertised format -- use default caps */
1901 caps->value = entry->defaultOperations;
1902 }
1903 }
1904
1905
1906 void
1907 svga_format_size(SVGA3dSurfaceFormat format,
1908 unsigned *block_width,
1909 unsigned *block_height,
1910 unsigned *bytes_per_block)
1911 {
1912 assert(format < ARRAY_SIZE(format_cap_table));
1913 *block_width = format_cap_table[format].block_width;
1914 *block_height = format_cap_table[format].block_height;
1915 *bytes_per_block = format_cap_table[format].block_bytes;
1916 /* Make sure the table entry was valid */
1917 if (*block_width == 0)
1918 debug_printf("Bad table entry for %s\n", svga_format_name(format));
1919 assert(*block_width);
1920 assert(*block_height);
1921 assert(*bytes_per_block);
1922 }
1923
1924
1925 const char *
1926 svga_format_name(SVGA3dSurfaceFormat format)
1927 {
1928 assert(format < ARRAY_SIZE(format_cap_table));
1929 return format_cap_table[format].name;
1930 }
1931
1932
1933 /**
1934 * Is the given SVGA3dSurfaceFormat a signed or unsigned integer color format?
1935 */
1936 boolean
1937 svga_format_is_integer(SVGA3dSurfaceFormat format)
1938 {
1939 switch (format) {
1940 case SVGA3D_R32G32B32A32_SINT:
1941 case SVGA3D_R32G32B32_SINT:
1942 case SVGA3D_R32G32_SINT:
1943 case SVGA3D_R32_SINT:
1944 case SVGA3D_R16G16B16A16_SINT:
1945 case SVGA3D_R16G16_SINT:
1946 case SVGA3D_R16_SINT:
1947 case SVGA3D_R8G8B8A8_SINT:
1948 case SVGA3D_R8G8_SINT:
1949 case SVGA3D_R8_SINT:
1950 case SVGA3D_R32G32B32A32_UINT:
1951 case SVGA3D_R32G32B32_UINT:
1952 case SVGA3D_R32G32_UINT:
1953 case SVGA3D_R32_UINT:
1954 case SVGA3D_R16G16B16A16_UINT:
1955 case SVGA3D_R16G16_UINT:
1956 case SVGA3D_R16_UINT:
1957 case SVGA3D_R8G8B8A8_UINT:
1958 case SVGA3D_R8G8_UINT:
1959 case SVGA3D_R8_UINT:
1960 case SVGA3D_R10G10B10A2_UINT:
1961 return TRUE;
1962 default:
1963 return FALSE;
1964 }
1965 }
1966
1967 boolean
1968 svga_format_support_gen_mips(enum pipe_format format)
1969 {
1970 assert(format < ARRAY_SIZE(format_conversion_table));
1971 return ((format_conversion_table[format].flags & TF_GEN_MIPS) > 0);
1972 }
1973
1974
1975 /**
1976 * Given a texture format, return the expected data type returned from
1977 * the texture sampler. For example, UNORM8 formats return floating point
1978 * values while SINT formats returned signed integer values.
1979 * Note: this function could be moved into the gallum u_format.[ch] code
1980 * if it's useful to anyone else.
1981 */
1982 enum tgsi_return_type
1983 svga_get_texture_datatype(enum pipe_format format)
1984 {
1985 const struct util_format_description *desc = util_format_description(format);
1986 enum tgsi_return_type t;
1987
1988 if (desc->layout == UTIL_FORMAT_LAYOUT_PLAIN ) {
1989 if (util_format_is_depth_or_stencil(format)) {
1990 t = TGSI_RETURN_TYPE_FLOAT; /* XXX revisit this */
1991 }
1992 else if (desc->channel[0].type == UTIL_FORMAT_TYPE_FLOAT) {
1993 t = TGSI_RETURN_TYPE_FLOAT;
1994 }
1995 else if (desc->channel[0].type == UTIL_FORMAT_TYPE_UNSIGNED) {
1996 t = desc->channel[0].normalized ? TGSI_RETURN_TYPE_UNORM : TGSI_RETURN_TYPE_UINT;
1997 }
1998 else if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
1999 t = desc->channel[0].normalized ? TGSI_RETURN_TYPE_SNORM : TGSI_RETURN_TYPE_SINT;
2000 }
2001 else {
2002 assert(!"Unexpected channel type in svga_get_texture_datatype()");
2003 t = TGSI_RETURN_TYPE_FLOAT;
2004 }
2005 }
2006 else {
2007 /* compressed format, shared exponent format, etc. */
2008 switch (format) {
2009 case PIPE_FORMAT_DXT1_RGB:
2010 case PIPE_FORMAT_DXT1_RGBA:
2011 case PIPE_FORMAT_DXT3_RGBA:
2012 case PIPE_FORMAT_DXT5_RGBA:
2013 case PIPE_FORMAT_DXT1_SRGB:
2014 case PIPE_FORMAT_DXT1_SRGBA:
2015 case PIPE_FORMAT_DXT3_SRGBA:
2016 case PIPE_FORMAT_DXT5_SRGBA:
2017 case PIPE_FORMAT_RGTC1_UNORM:
2018 case PIPE_FORMAT_RGTC2_UNORM:
2019 case PIPE_FORMAT_LATC1_UNORM:
2020 case PIPE_FORMAT_LATC2_UNORM:
2021 case PIPE_FORMAT_ETC1_RGB8:
2022 t = TGSI_RETURN_TYPE_UNORM;
2023 break;
2024 case PIPE_FORMAT_RGTC1_SNORM:
2025 case PIPE_FORMAT_RGTC2_SNORM:
2026 case PIPE_FORMAT_LATC1_SNORM:
2027 case PIPE_FORMAT_LATC2_SNORM:
2028 case PIPE_FORMAT_R10G10B10X2_SNORM:
2029 t = TGSI_RETURN_TYPE_SNORM;
2030 break;
2031 case PIPE_FORMAT_R11G11B10_FLOAT:
2032 case PIPE_FORMAT_R9G9B9E5_FLOAT:
2033 t = TGSI_RETURN_TYPE_FLOAT;
2034 break;
2035 default:
2036 assert(!"Unexpected channel type in svga_get_texture_datatype()");
2037 t = TGSI_RETURN_TYPE_FLOAT;
2038 }
2039 }
2040
2041 return t;
2042 }
2043
2044
2045 /**
2046 * Given an svga context, return true iff there are currently any integer color
2047 * buffers attached to the framebuffer.
2048 */
2049 boolean
2050 svga_has_any_integer_cbufs(const struct svga_context *svga)
2051 {
2052 unsigned i;
2053 for (i = 0; i < PIPE_MAX_COLOR_BUFS; ++i) {
2054 struct pipe_surface *cbuf = svga->curr.framebuffer.cbufs[i];
2055
2056 if (cbuf && util_format_is_pure_integer(cbuf->format)) {
2057 return TRUE;
2058 }
2059 }
2060 return FALSE;
2061 }
2062
2063
2064 /**
2065 * Given an SVGA format, return the corresponding typeless format.
2066 * If there is no typeless format, return the format unchanged.
2067 */
2068 SVGA3dSurfaceFormat
2069 svga_typeless_format(SVGA3dSurfaceFormat format)
2070 {
2071 switch (format) {
2072 case SVGA3D_R32G32B32A32_UINT:
2073 case SVGA3D_R32G32B32A32_SINT:
2074 case SVGA3D_R32G32B32A32_FLOAT:
2075 return SVGA3D_R32G32B32A32_TYPELESS;
2076 case SVGA3D_R32G32B32_FLOAT:
2077 case SVGA3D_R32G32B32_UINT:
2078 case SVGA3D_R32G32B32_SINT:
2079 return SVGA3D_R32G32B32_TYPELESS;
2080 case SVGA3D_R16G16B16A16_UINT:
2081 case SVGA3D_R16G16B16A16_UNORM:
2082 case SVGA3D_R16G16B16A16_SNORM:
2083 case SVGA3D_R16G16B16A16_SINT:
2084 case SVGA3D_R16G16B16A16_FLOAT:
2085 return SVGA3D_R16G16B16A16_TYPELESS;
2086 case SVGA3D_R32G32_UINT:
2087 case SVGA3D_R32G32_SINT:
2088 case SVGA3D_R32G32_FLOAT:
2089 return SVGA3D_R32G32_TYPELESS;
2090 case SVGA3D_D32_FLOAT_S8X24_UINT:
2091 return SVGA3D_R32G8X24_TYPELESS;
2092 case SVGA3D_X32_TYPELESS_G8X24_UINT:
2093 return SVGA3D_R32_FLOAT_X8X24_TYPELESS;
2094 case SVGA3D_R10G10B10A2_UINT:
2095 case SVGA3D_R10G10B10A2_UNORM:
2096 return SVGA3D_R10G10B10A2_TYPELESS;
2097 case SVGA3D_R8G8B8A8_UNORM:
2098 case SVGA3D_R8G8B8A8_SNORM:
2099 case SVGA3D_R8G8B8A8_UNORM_SRGB:
2100 case SVGA3D_R8G8B8A8_UINT:
2101 case SVGA3D_R8G8B8A8_SINT:
2102 return SVGA3D_R8G8B8A8_TYPELESS;
2103 case SVGA3D_R16G16_UINT:
2104 case SVGA3D_R16G16_SINT:
2105 case SVGA3D_R16G16_UNORM:
2106 case SVGA3D_R16G16_SNORM:
2107 case SVGA3D_R16G16_FLOAT:
2108 return SVGA3D_R16G16_TYPELESS;
2109 case SVGA3D_D32_FLOAT:
2110 case SVGA3D_R32_FLOAT:
2111 case SVGA3D_R32_UINT:
2112 case SVGA3D_R32_SINT:
2113 return SVGA3D_R32_TYPELESS;
2114 case SVGA3D_D24_UNORM_S8_UINT:
2115 return SVGA3D_R24G8_TYPELESS;
2116 case SVGA3D_X24_TYPELESS_G8_UINT:
2117 return SVGA3D_R24_UNORM_X8_TYPELESS;
2118 case SVGA3D_R8G8_UNORM:
2119 case SVGA3D_R8G8_SNORM:
2120 case SVGA3D_R8G8_UINT:
2121 case SVGA3D_R8G8_SINT:
2122 return SVGA3D_R8G8_TYPELESS;
2123 case SVGA3D_D16_UNORM:
2124 case SVGA3D_R16_UNORM:
2125 case SVGA3D_R16_UINT:
2126 case SVGA3D_R16_SNORM:
2127 case SVGA3D_R16_SINT:
2128 case SVGA3D_R16_FLOAT:
2129 return SVGA3D_R16_TYPELESS;
2130 case SVGA3D_R8_UNORM:
2131 case SVGA3D_R8_UINT:
2132 case SVGA3D_R8_SNORM:
2133 case SVGA3D_R8_SINT:
2134 return SVGA3D_R8_TYPELESS;
2135 case SVGA3D_B8G8R8A8_UNORM_SRGB:
2136 case SVGA3D_B8G8R8A8_UNORM:
2137 return SVGA3D_B8G8R8A8_TYPELESS;
2138 case SVGA3D_B8G8R8X8_UNORM_SRGB:
2139 case SVGA3D_B8G8R8X8_UNORM:
2140 return SVGA3D_B8G8R8X8_TYPELESS;
2141 case SVGA3D_BC1_UNORM:
2142 case SVGA3D_BC1_UNORM_SRGB:
2143 return SVGA3D_BC1_TYPELESS;
2144 case SVGA3D_BC2_UNORM:
2145 case SVGA3D_BC2_UNORM_SRGB:
2146 return SVGA3D_BC2_TYPELESS;
2147 case SVGA3D_BC3_UNORM:
2148 case SVGA3D_BC3_UNORM_SRGB:
2149 return SVGA3D_BC3_TYPELESS;
2150 case SVGA3D_BC4_UNORM:
2151 case SVGA3D_BC4_SNORM:
2152 return SVGA3D_BC4_TYPELESS;
2153 case SVGA3D_BC5_UNORM:
2154 case SVGA3D_BC5_SNORM:
2155 return SVGA3D_BC5_TYPELESS;
2156
2157 /* Special cases (no corresponding _TYPELESS formats) */
2158 case SVGA3D_A8_UNORM:
2159 case SVGA3D_B5G5R5A1_UNORM:
2160 case SVGA3D_B5G6R5_UNORM:
2161 case SVGA3D_R11G11B10_FLOAT:
2162 case SVGA3D_R9G9B9E5_SHAREDEXP:
2163 return format;
2164 default:
2165 debug_printf("Unexpected format %s in %s\n",
2166 svga_format_name(format), __FUNCTION__);
2167 return format;
2168 }
2169 }
2170
2171
2172 /**
2173 * Given a surface format, return the corresponding format to use for
2174 * a texture sampler. In most cases, it's the format unchanged, but there
2175 * are some special cases.
2176 */
2177 SVGA3dSurfaceFormat
2178 svga_sampler_format(SVGA3dSurfaceFormat format)
2179 {
2180 switch (format) {
2181 case SVGA3D_D16_UNORM:
2182 return SVGA3D_R16_UNORM;
2183 case SVGA3D_D24_UNORM_S8_UINT:
2184 return SVGA3D_R24_UNORM_X8_TYPELESS;
2185 case SVGA3D_D32_FLOAT:
2186 return SVGA3D_R32_FLOAT;
2187 case SVGA3D_D32_FLOAT_S8X24_UINT:
2188 return SVGA3D_R32_FLOAT_X8X24_TYPELESS;
2189 default:
2190 return format;
2191 }
2192 }
2193
2194
2195 /**
2196 * Is the given format an uncompressed snorm format?
2197 */
2198 bool
2199 svga_format_is_uncompressed_snorm(SVGA3dSurfaceFormat format)
2200 {
2201 switch (format) {
2202 case SVGA3D_R8G8B8A8_SNORM:
2203 case SVGA3D_R8G8_SNORM:
2204 case SVGA3D_R8_SNORM:
2205 case SVGA3D_R16G16B16A16_SNORM:
2206 case SVGA3D_R16G16_SNORM:
2207 case SVGA3D_R16_SNORM:
2208 return true;
2209 default:
2210 return false;
2211 }
2212 }
2213
2214
2215 bool
2216 svga_format_is_typeless(SVGA3dSurfaceFormat format)
2217 {
2218 switch (format) {
2219 case SVGA3D_R32G32B32A32_TYPELESS:
2220 case SVGA3D_R32G32B32_TYPELESS:
2221 case SVGA3D_R16G16B16A16_TYPELESS:
2222 case SVGA3D_R32G32_TYPELESS:
2223 case SVGA3D_R32G8X24_TYPELESS:
2224 case SVGA3D_R10G10B10A2_TYPELESS:
2225 case SVGA3D_R8G8B8A8_TYPELESS:
2226 case SVGA3D_R16G16_TYPELESS:
2227 case SVGA3D_R32_TYPELESS:
2228 case SVGA3D_R24G8_TYPELESS:
2229 case SVGA3D_R8G8_TYPELESS:
2230 case SVGA3D_R16_TYPELESS:
2231 case SVGA3D_R8_TYPELESS:
2232 case SVGA3D_BC1_TYPELESS:
2233 case SVGA3D_BC2_TYPELESS:
2234 case SVGA3D_BC3_TYPELESS:
2235 case SVGA3D_BC4_TYPELESS:
2236 case SVGA3D_BC5_TYPELESS:
2237 case SVGA3D_B8G8R8A8_TYPELESS:
2238 case SVGA3D_B8G8R8X8_TYPELESS:
2239 return true;
2240 default:
2241 return false;
2242 }
2243 }