Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/gallium/drivers/swr/rasterizer/common/formats.h
4574 views
1
/****************************************************************************
2
* Copyright (C) 2016 Intel Corporation. All Rights Reserved.
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a
5
* copy of this software and associated documentation files (the "Software"),
6
* to deal in the Software without restriction, including without limitation
7
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
* and/or sell copies of the Software, and to permit persons to whom the
9
* Software is furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice (including the next
12
* paragraph) shall be included in all copies or substantial portions of the
13
* Software.
14
*
15
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21
* IN THE SOFTWARE.
22
*
23
* @file formats.h
24
*
25
* @brief auto-generated file
26
*
27
* DO NOT EDIT
28
*
29
******************************************************************************/
30
31
#pragma once
32
33
#include "common/os.h"
34
35
//////////////////////////////////////////////////////////////////////////
36
/// SWR_TYPE - Format component type
37
//////////////////////////////////////////////////////////////////////////
38
enum SWR_TYPE
39
{
40
SWR_TYPE_UNKNOWN,
41
SWR_TYPE_UNUSED,
42
SWR_TYPE_UNORM,
43
SWR_TYPE_SNORM,
44
SWR_TYPE_UINT,
45
SWR_TYPE_SINT,
46
SWR_TYPE_FLOAT,
47
SWR_TYPE_SSCALED,
48
SWR_TYPE_USCALED,
49
SWR_TYPE_SFIXED,
50
};
51
52
//////////////////////////////////////////////////////////////////////////
53
/// SWR_FORMAT
54
//////////////////////////////////////////////////////////////////////////
55
enum SWR_FORMAT
56
{
57
R32G32B32A32_FLOAT = 0x0,
58
R32G32B32A32_SINT = 0x1,
59
R32G32B32A32_UINT = 0x2,
60
R64G64_FLOAT = 0x5,
61
R32G32B32X32_FLOAT = 0x6,
62
R32G32B32A32_SSCALED = 0x7,
63
R32G32B32A32_USCALED = 0x8,
64
R32G32B32A32_SFIXED = 0x20,
65
R32G32B32_FLOAT = 0x40,
66
R32G32B32_SINT = 0x41,
67
R32G32B32_UINT = 0x42,
68
R32G32B32_SSCALED = 0x45,
69
R32G32B32_USCALED = 0x46,
70
R32G32B32_SFIXED = 0x50,
71
R16G16B16A16_UNORM = 0x80,
72
R16G16B16A16_SNORM = 0x81,
73
R16G16B16A16_SINT = 0x82,
74
R16G16B16A16_UINT = 0x83,
75
R16G16B16A16_FLOAT = 0x84,
76
R32G32_FLOAT = 0x85,
77
R32G32_SINT = 0x86,
78
R32G32_UINT = 0x87,
79
R32_FLOAT_X8X24_TYPELESS = 0x88,
80
X32_TYPELESS_G8X24_UINT = 0x89,
81
L32A32_FLOAT = 0x8A,
82
R64_FLOAT = 0x8D,
83
R16G16B16X16_UNORM = 0x8E,
84
R16G16B16X16_FLOAT = 0x8F,
85
L32X32_FLOAT = 0x91,
86
I32X32_FLOAT = 0x92,
87
R16G16B16A16_SSCALED = 0x93,
88
R16G16B16A16_USCALED = 0x94,
89
R32G32_SSCALED = 0x95,
90
R32G32_USCALED = 0x96,
91
R32G32_SFIXED = 0xA0,
92
B8G8R8A8_UNORM = 0xC0,
93
B8G8R8A8_UNORM_SRGB = 0xC1,
94
R10G10B10A2_UNORM = 0xC2,
95
R10G10B10A2_UNORM_SRGB = 0xC3,
96
R10G10B10A2_UINT = 0xC4,
97
R8G8B8A8_UNORM = 0xC7,
98
R8G8B8A8_UNORM_SRGB = 0xC8,
99
R8G8B8A8_SNORM = 0xC9,
100
R8G8B8A8_SINT = 0xCA,
101
R8G8B8A8_UINT = 0xCB,
102
R16G16_UNORM = 0xCC,
103
R16G16_SNORM = 0xCD,
104
R16G16_SINT = 0xCE,
105
R16G16_UINT = 0xCF,
106
R16G16_FLOAT = 0xD0,
107
B10G10R10A2_UNORM = 0xD1,
108
B10G10R10A2_UNORM_SRGB = 0xD2,
109
R11G11B10_FLOAT = 0xD3,
110
R10G10B10_FLOAT_A2_UNORM = 0xD5,
111
R32_SINT = 0xD6,
112
R32_UINT = 0xD7,
113
R32_FLOAT = 0xD8,
114
R24_UNORM_X8_TYPELESS = 0xD9,
115
X24_TYPELESS_G8_UINT = 0xDA,
116
L32_UNORM = 0xDD,
117
L16A16_UNORM = 0xDF,
118
I24X8_UNORM = 0xE0,
119
L24X8_UNORM = 0xE1,
120
I32_FLOAT = 0xE3,
121
L32_FLOAT = 0xE4,
122
A32_FLOAT = 0xE5,
123
B8G8R8X8_UNORM = 0xE9,
124
B8G8R8X8_UNORM_SRGB = 0xEA,
125
R8G8B8X8_UNORM = 0xEB,
126
R8G8B8X8_UNORM_SRGB = 0xEC,
127
R9G9B9E5_SHAREDEXP = 0xED,
128
B10G10R10X2_UNORM = 0xEE,
129
L16A16_FLOAT = 0xF0,
130
R10G10B10X2_USCALED = 0xF3,
131
R8G8B8A8_SSCALED = 0xF4,
132
R8G8B8A8_USCALED = 0xF5,
133
R16G16_SSCALED = 0xF6,
134
R16G16_USCALED = 0xF7,
135
R32_SSCALED = 0xF8,
136
R32_USCALED = 0xF9,
137
B5G6R5_UNORM = 0x100,
138
B5G6R5_UNORM_SRGB = 0x101,
139
B5G5R5A1_UNORM = 0x102,
140
B5G5R5A1_UNORM_SRGB = 0x103,
141
B4G4R4A4_UNORM = 0x104,
142
B4G4R4A4_UNORM_SRGB = 0x105,
143
R8G8_UNORM = 0x106,
144
R8G8_SNORM = 0x107,
145
R8G8_SINT = 0x108,
146
R8G8_UINT = 0x109,
147
R16_UNORM = 0x10A,
148
R16_SNORM = 0x10B,
149
R16_SINT = 0x10C,
150
R16_UINT = 0x10D,
151
R16_FLOAT = 0x10E,
152
I16_UNORM = 0x111,
153
L16_UNORM = 0x112,
154
A16_UNORM = 0x113,
155
L8A8_UNORM = 0x114,
156
I16_FLOAT = 0x115,
157
L16_FLOAT = 0x116,
158
A16_FLOAT = 0x117,
159
L8A8_UNORM_SRGB = 0x118,
160
B5G5R5X1_UNORM = 0x11A,
161
B5G5R5X1_UNORM_SRGB = 0x11B,
162
R8G8_SSCALED = 0x11C,
163
R8G8_USCALED = 0x11D,
164
R16_SSCALED = 0x11E,
165
R16_USCALED = 0x11F,
166
A1B5G5R5_UNORM = 0x124,
167
A4B4G4R4_UNORM = 0x125,
168
L8A8_UINT = 0x126,
169
L8A8_SINT = 0x127,
170
R8_UNORM = 0x140,
171
R8_SNORM = 0x141,
172
R8_SINT = 0x142,
173
R8_UINT = 0x143,
174
A8_UNORM = 0x144,
175
I8_UNORM = 0x145,
176
L8_UNORM = 0x146,
177
R8_SSCALED = 0x149,
178
R8_USCALED = 0x14A,
179
L8_UNORM_SRGB = 0x14C,
180
L8_UINT = 0x152,
181
L8_SINT = 0x153,
182
I8_UINT = 0x154,
183
I8_SINT = 0x155,
184
DXT1_RGB_SRGB = 0x180,
185
YCRCB_SWAPUVY = 0x183,
186
BC1_UNORM = 0x186,
187
BC2_UNORM = 0x187,
188
BC3_UNORM = 0x188,
189
BC4_UNORM = 0x189,
190
BC5_UNORM = 0x18A,
191
BC1_UNORM_SRGB = 0x18B,
192
BC2_UNORM_SRGB = 0x18C,
193
BC3_UNORM_SRGB = 0x18D,
194
YCRCB_SWAPUV = 0x18F,
195
DXT1_RGB = 0x191,
196
R8G8B8_UNORM = 0x193,
197
R8G8B8_SNORM = 0x194,
198
R8G8B8_SSCALED = 0x195,
199
R8G8B8_USCALED = 0x196,
200
R64G64B64A64_FLOAT = 0x197,
201
R64G64B64_FLOAT = 0x198,
202
BC4_SNORM = 0x199,
203
BC5_SNORM = 0x19A,
204
R16G16B16_FLOAT = 0x19B,
205
R16G16B16_UNORM = 0x19C,
206
R16G16B16_SNORM = 0x19D,
207
R16G16B16_SSCALED = 0x19E,
208
R16G16B16_USCALED = 0x19F,
209
BC6H_SF16 = 0x1A1,
210
BC7_UNORM = 0x1A2,
211
BC7_UNORM_SRGB = 0x1A3,
212
BC6H_UF16 = 0x1A4,
213
R8G8B8_UNORM_SRGB = 0x1A8,
214
R16G16B16_UINT = 0x1B0,
215
R16G16B16_SINT = 0x1B1,
216
R32_SFIXED = 0x1B2,
217
R10G10B10A2_SNORM = 0x1B3,
218
R10G10B10A2_USCALED = 0x1B4,
219
R10G10B10A2_SSCALED = 0x1B5,
220
R10G10B10A2_SINT = 0x1B6,
221
B10G10R10A2_SNORM = 0x1B7,
222
B10G10R10A2_USCALED = 0x1B8,
223
B10G10R10A2_SSCALED = 0x1B9,
224
B10G10R10A2_UINT = 0x1BA,
225
B10G10R10A2_SINT = 0x1BB,
226
R8G8B8_UINT = 0x1C8,
227
R8G8B8_SINT = 0x1C9,
228
RAW = 0x1FF,
229
NUM_SWR_FORMATS = 0x200,
230
};
231
232
//////////////////////////////////////////////////////////////////////////
233
/// SWR_FORMAT_INFO - Format information
234
//////////////////////////////////////////////////////////////////////////
235
struct SWR_FORMAT_INFO
236
{
237
const char* name;
238
SWR_TYPE type[4];
239
uint32_t defaults[4];
240
uint32_t swizzle[4]; ///< swizzle per component
241
uint32_t bpc[4]; ///< bits per component
242
uint32_t bpp; ///< bits per pixel
243
uint32_t Bpp; ///< bytes per pixel
244
uint32_t numComps; ///< number of components
245
bool isSRGB;
246
bool isBC;
247
bool isSubsampled;
248
bool isLuminance;
249
bool isNormalized[4];
250
float toFloat[4];
251
uint32_t bcWidth;
252
uint32_t bcHeight;
253
};
254
255
extern const SWR_FORMAT_INFO gFormatInfo[NUM_SWR_FORMATS];
256
257
//////////////////////////////////////////////////////////////////////////
258
/// @brief Retrieves format info struct for given format.
259
/// @param format - SWR format
260
INLINE const SWR_FORMAT_INFO& GetFormatInfo(SWR_FORMAT format)
261
{
262
SWR_ASSERT(format < NUM_SWR_FORMATS, "Invalid Surface Format: %d", format);
263
SWR_ASSERT(gFormatInfo[format].name != nullptr, "Invalid Surface Format: %d", format);
264
return gFormatInfo[format];
265
}
266
267
// lookup table for unorm8 srgb -> float conversion
268
extern const uint32_t srgb8Table[256];
269
270