1 /****************************************************************************
2 * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
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:
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
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
25 * @brief auto-generated file
29 ******************************************************************************/
33 #include "common/os.h"
35 //////////////////////////////////////////////////////////////////////////
36 /// SWR_TYPE - Format component type
37 //////////////////////////////////////////////////////////////////////////
52 //////////////////////////////////////////////////////////////////////////
54 //////////////////////////////////////////////////////////////////////////
57 R32G32B32A32_FLOAT
= 0x0,
58 R32G32B32A32_SINT
= 0x1,
59 R32G32B32A32_UINT
= 0x2,
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,
79 R32_FLOAT_X8X24_TYPELESS
= 0x88,
80 X32_TYPELESS_G8X24_UINT
= 0x89,
83 R16G16B16X16_UNORM
= 0x8E,
84 R16G16B16X16_FLOAT
= 0x8F,
87 R16G16B16A16_SSCALED
= 0x93,
88 R16G16B16A16_USCALED
= 0x94,
89 R32G32_SSCALED
= 0x95,
90 R32G32_USCALED
= 0x96,
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,
107 B10G10R10A2_UNORM
= 0xD1,
108 B10G10R10A2_UNORM_SRGB
= 0xD2,
109 R11G11B10_FLOAT
= 0xD3,
110 R10G10B10_FLOAT_A2_UNORM
= 0xD5,
114 R24_UNORM_X8_TYPELESS
= 0xD9,
115 X24_TYPELESS_G8_UINT
= 0xDA,
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,
130 R10G10B10X2_USCALED
= 0xF3,
131 R8G8B8A8_SSCALED
= 0xF4,
132 R8G8B8A8_USCALED
= 0xF5,
133 R16G16_SSCALED
= 0xF6,
134 R16G16_USCALED
= 0xF7,
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,
159 L8A8_UNORM_SRGB
= 0x118,
160 B5G5R5X1_UNORM
= 0x11A,
161 B5G5R5X1_UNORM_SRGB
= 0x11B,
162 R8G8_SSCALED
= 0x11C,
163 R8G8_USCALED
= 0x11D,
166 A1B5G5R5_UNORM
= 0x124,
167 A4B4G4R4_UNORM
= 0x125,
179 L8_UNORM_SRGB
= 0x14C,
184 DXT1_RGB_SRGB
= 0x180,
185 YCRCB_SWAPUVY
= 0x183,
191 BC1_UNORM_SRGB
= 0x18B,
192 BC2_UNORM_SRGB
= 0x18C,
193 BC3_UNORM_SRGB
= 0x18D,
194 YCRCB_SWAPUV
= 0x18F,
196 R8G8B8_UNORM
= 0x193,
197 R8G8B8_SNORM
= 0x194,
198 R8G8B8_SSCALED
= 0x195,
199 R8G8B8_USCALED
= 0x196,
200 R64G64B64A64_FLOAT
= 0x197,
201 R64G64B64_FLOAT
= 0x198,
204 R16G16B16_FLOAT
= 0x19B,
205 R16G16B16_UNORM
= 0x19C,
206 R16G16B16_SNORM
= 0x19D,
207 R16G16B16_SSCALED
= 0x19E,
208 R16G16B16_USCALED
= 0x19F,
211 BC7_UNORM_SRGB
= 0x1A3,
213 R8G8B8_UNORM_SRGB
= 0x1A8,
214 R16G16B16_UINT
= 0x1B0,
215 R16G16B16_SINT
= 0x1B1,
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,
229 NUM_SWR_FORMATS
= 0x200,
232 //////////////////////////////////////////////////////////////////////////
233 /// SWR_FORMAT_INFO - Format information
234 //////////////////////////////////////////////////////////////////////////
235 struct SWR_FORMAT_INFO
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
249 bool isNormalized
[4];
255 extern const SWR_FORMAT_INFO gFormatInfo
[NUM_SWR_FORMATS
];
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
)
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
];
267 // lookup table for unorm8 srgb -> float conversion
268 extern const uint32_t srgb8Table
[256];