• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
GetFormatInfo(SWR_FORMAT 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