swr/rast: add support for DX1_RGB{_SRGB} formats
[mesa.git] / src / gallium / drivers / swr / rasterizer / core / format_traits.h
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 format_traits.h
24 *
25 * @brief Format Traits. auto-generated file
26 *
27 * DO NOT EDIT
28 *
29 ******************************************************************************/
30 #pragma once
31
32 #include "format_types.h"
33 #include "utils.h"
34
35 //////////////////////////////////////////////////////////////////////////
36 /// FormatSwizzle - Component swizzle selects
37 //////////////////////////////////////////////////////////////////////////
38 template<UINT comp0 = 0, uint32_t comp1 = 0, uint32_t comp2 = 0, uint32_t comp3 = 0>
39 struct FormatSwizzle
40 {
41 // Return swizzle select for component.
42 INLINE static uint32_t swizzle(UINT c)
43 {
44 static const uint32_t s[4] = { comp0, comp1, comp2, comp3 };
45 return s[c];
46 }
47 };
48
49 //////////////////////////////////////////////////////////////////////////
50 /// FormatTraits - Format traits
51 //////////////////////////////////////////////////////////////////////////
52 template<SWR_FORMAT format>
53 struct FormatTraits :
54 ComponentTraits<SWR_TYPE_UNKNOWN, 0>,
55 FormatSwizzle<0>,
56 Defaults<0, 0, 0, 0>
57 {
58 static const uint32_t bpp{ 0 };
59 static const uint32_t numComps{ 0 };
60 static const bool hasAlpha{ false };
61 static const uint32_t alphaComp{ 0 };
62
63 static const bool isSRGB{ false };
64 static const bool isBC{ false };
65 static const bool isSubsampled{ false };
66 static const uint32_t bcWidth{ 1 };
67 static const uint32_t bcHeight{ 1 };
68 };
69
70 //////////////////////////////////////////////////////////////////////////
71 /// FormatTraits<R32G32B32A32_FLOAT> - Format traits specialization for R32G32B32A32_FLOAT
72 //////////////////////////////////////////////////////////////////////////
73 template<> struct FormatTraits<R32G32B32A32_FLOAT> :
74 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
75 FormatSwizzle<0, 1, 2, 3>,
76 Defaults<0, 0, 0, 0x3f800000>
77 {
78 static const uint32_t bpp{ 128 };
79 static const uint32_t numComps{ 4 };
80 static const bool hasAlpha{ true };
81 static const uint32_t alphaComp{ 3 };
82 static const bool isSRGB{ false };
83 static const bool isBC{ false };
84 static const bool isSubsampled{ false };
85 static const uint32_t bcWidth{ 1 };
86 static const uint32_t bcHeight{ 1 };
87
88 typedef Transpose32_32_32_32 TransposeT;
89 typedef Format4<32, 32, 32, 32> FormatT;
90 };
91
92 //////////////////////////////////////////////////////////////////////////
93 /// FormatTraits<R32G32B32A32_SINT> - Format traits specialization for R32G32B32A32_SINT
94 //////////////////////////////////////////////////////////////////////////
95 template<> struct FormatTraits<R32G32B32A32_SINT> :
96 ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>,
97 FormatSwizzle<0, 1, 2, 3>,
98 Defaults<0, 0, 0, 0x1>
99 {
100 static const uint32_t bpp{ 128 };
101 static const uint32_t numComps{ 4 };
102 static const bool hasAlpha{ true };
103 static const uint32_t alphaComp{ 3 };
104 static const bool isSRGB{ false };
105 static const bool isBC{ false };
106 static const bool isSubsampled{ false };
107 static const uint32_t bcWidth{ 1 };
108 static const uint32_t bcHeight{ 1 };
109
110 typedef Transpose32_32_32_32 TransposeT;
111 typedef Format4<32, 32, 32, 32> FormatT;
112 };
113
114 //////////////////////////////////////////////////////////////////////////
115 /// FormatTraits<R32G32B32A32_UINT> - Format traits specialization for R32G32B32A32_UINT
116 //////////////////////////////////////////////////////////////////////////
117 template<> struct FormatTraits<R32G32B32A32_UINT> :
118 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>,
119 FormatSwizzle<0, 1, 2, 3>,
120 Defaults<0, 0, 0, 0x1>
121 {
122 static const uint32_t bpp{ 128 };
123 static const uint32_t numComps{ 4 };
124 static const bool hasAlpha{ true };
125 static const uint32_t alphaComp{ 3 };
126 static const bool isSRGB{ false };
127 static const bool isBC{ false };
128 static const bool isSubsampled{ false };
129 static const uint32_t bcWidth{ 1 };
130 static const uint32_t bcHeight{ 1 };
131
132 typedef Transpose32_32_32_32 TransposeT;
133 typedef Format4<32, 32, 32, 32> FormatT;
134 };
135
136 //////////////////////////////////////////////////////////////////////////
137 /// FormatTraits<R64G64_FLOAT> - Format traits specialization for R64G64_FLOAT
138 //////////////////////////////////////////////////////////////////////////
139 template<> struct FormatTraits<R64G64_FLOAT> :
140 ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>,
141 FormatSwizzle<0, 1>,
142 Defaults<0, 0, 0, 0x3f800000>
143 {
144 static const uint32_t bpp{ 128 };
145 static const uint32_t numComps{ 2 };
146 static const bool hasAlpha{ false };
147 static const uint32_t alphaComp{ 0 };
148 static const bool isSRGB{ false };
149 static const bool isBC{ false };
150 static const bool isSubsampled{ false };
151 static const uint32_t bcWidth{ 1 };
152 static const uint32_t bcHeight{ 1 };
153
154 typedef Transpose64_64 TransposeT;
155 typedef Format2<64, 64> FormatT;
156 };
157
158 //////////////////////////////////////////////////////////////////////////
159 /// FormatTraits<R32G32B32X32_FLOAT> - Format traits specialization for R32G32B32X32_FLOAT
160 //////////////////////////////////////////////////////////////////////////
161 template<> struct FormatTraits<R32G32B32X32_FLOAT> :
162 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_UNUSED, 32>,
163 FormatSwizzle<0, 1, 2, 3>,
164 Defaults<0, 0, 0, 0x3f800000>
165 {
166 static const uint32_t bpp{ 128 };
167 static const uint32_t numComps{ 3 };
168 static const bool hasAlpha{ false };
169 static const uint32_t alphaComp{ 0 };
170 static const bool isSRGB{ false };
171 static const bool isBC{ false };
172 static const bool isSubsampled{ false };
173 static const uint32_t bcWidth{ 1 };
174 static const uint32_t bcHeight{ 1 };
175
176 typedef Transpose32_32_32_32 TransposeT;
177 typedef Format4<32, 32, 32, 32> FormatT;
178 };
179
180 //////////////////////////////////////////////////////////////////////////
181 /// FormatTraits<R32G32B32A32_SSCALED> - Format traits specialization for R32G32B32A32_SSCALED
182 //////////////////////////////////////////////////////////////////////////
183 template<> struct FormatTraits<R32G32B32A32_SSCALED> :
184 ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>,
185 FormatSwizzle<0, 1, 2, 3>,
186 Defaults<0, 0, 0, 0x3f800000>
187 {
188 static const uint32_t bpp{ 128 };
189 static const uint32_t numComps{ 4 };
190 static const bool hasAlpha{ true };
191 static const uint32_t alphaComp{ 3 };
192 static const bool isSRGB{ false };
193 static const bool isBC{ false };
194 static const bool isSubsampled{ false };
195 static const uint32_t bcWidth{ 1 };
196 static const uint32_t bcHeight{ 1 };
197
198 typedef Transpose32_32_32_32 TransposeT;
199 typedef Format4<32, 32, 32, 32> FormatT;
200 };
201
202 //////////////////////////////////////////////////////////////////////////
203 /// FormatTraits<R32G32B32A32_USCALED> - Format traits specialization for R32G32B32A32_USCALED
204 //////////////////////////////////////////////////////////////////////////
205 template<> struct FormatTraits<R32G32B32A32_USCALED> :
206 ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>,
207 FormatSwizzle<0, 1, 2, 3>,
208 Defaults<0, 0, 0, 0x3f800000>
209 {
210 static const uint32_t bpp{ 128 };
211 static const uint32_t numComps{ 4 };
212 static const bool hasAlpha{ true };
213 static const uint32_t alphaComp{ 3 };
214 static const bool isSRGB{ false };
215 static const bool isBC{ false };
216 static const bool isSubsampled{ false };
217 static const uint32_t bcWidth{ 1 };
218 static const uint32_t bcHeight{ 1 };
219
220 typedef Transpose32_32_32_32 TransposeT;
221 typedef Format4<32, 32, 32, 32> FormatT;
222 };
223
224 //////////////////////////////////////////////////////////////////////////
225 /// FormatTraits<R32G32B32A32_SFIXED> - Format traits specialization for R32G32B32A32_SFIXED
226 //////////////////////////////////////////////////////////////////////////
227 template<> struct FormatTraits<R32G32B32A32_SFIXED> :
228 ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>,
229 FormatSwizzle<0, 1, 2, 3>,
230 Defaults<0, 0, 0, 0x3f800000>
231 {
232 static const uint32_t bpp{ 128 };
233 static const uint32_t numComps{ 4 };
234 static const bool hasAlpha{ true };
235 static const uint32_t alphaComp{ 3 };
236 static const bool isSRGB{ false };
237 static const bool isBC{ false };
238 static const bool isSubsampled{ false };
239 static const uint32_t bcWidth{ 1 };
240 static const uint32_t bcHeight{ 1 };
241
242 typedef Transpose32_32_32_32 TransposeT;
243 typedef Format4<32, 32, 32, 32> FormatT;
244 };
245
246 //////////////////////////////////////////////////////////////////////////
247 /// FormatTraits<R32G32B32_FLOAT> - Format traits specialization for R32G32B32_FLOAT
248 //////////////////////////////////////////////////////////////////////////
249 template<> struct FormatTraits<R32G32B32_FLOAT> :
250 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
251 FormatSwizzle<0, 1, 2>,
252 Defaults<0, 0, 0, 0x3f800000>
253 {
254 static const uint32_t bpp{ 96 };
255 static const uint32_t numComps{ 3 };
256 static const bool hasAlpha{ false };
257 static const uint32_t alphaComp{ 0 };
258 static const bool isSRGB{ false };
259 static const bool isBC{ false };
260 static const bool isSubsampled{ false };
261 static const uint32_t bcWidth{ 1 };
262 static const uint32_t bcHeight{ 1 };
263
264 typedef Transpose32_32_32 TransposeT;
265 typedef Format3<32, 32, 32> FormatT;
266 };
267
268 //////////////////////////////////////////////////////////////////////////
269 /// FormatTraits<R32G32B32_SINT> - Format traits specialization for R32G32B32_SINT
270 //////////////////////////////////////////////////////////////////////////
271 template<> struct FormatTraits<R32G32B32_SINT> :
272 ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>,
273 FormatSwizzle<0, 1, 2>,
274 Defaults<0, 0, 0, 0x1>
275 {
276 static const uint32_t bpp{ 96 };
277 static const uint32_t numComps{ 3 };
278 static const bool hasAlpha{ false };
279 static const uint32_t alphaComp{ 0 };
280 static const bool isSRGB{ false };
281 static const bool isBC{ false };
282 static const bool isSubsampled{ false };
283 static const uint32_t bcWidth{ 1 };
284 static const uint32_t bcHeight{ 1 };
285
286 typedef Transpose32_32_32 TransposeT;
287 typedef Format3<32, 32, 32> FormatT;
288 };
289
290 //////////////////////////////////////////////////////////////////////////
291 /// FormatTraits<R32G32B32_UINT> - Format traits specialization for R32G32B32_UINT
292 //////////////////////////////////////////////////////////////////////////
293 template<> struct FormatTraits<R32G32B32_UINT> :
294 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>,
295 FormatSwizzle<0, 1, 2>,
296 Defaults<0, 0, 0, 0x1>
297 {
298 static const uint32_t bpp{ 96 };
299 static const uint32_t numComps{ 3 };
300 static const bool hasAlpha{ false };
301 static const uint32_t alphaComp{ 0 };
302 static const bool isSRGB{ false };
303 static const bool isBC{ false };
304 static const bool isSubsampled{ false };
305 static const uint32_t bcWidth{ 1 };
306 static const uint32_t bcHeight{ 1 };
307
308 typedef Transpose32_32_32 TransposeT;
309 typedef Format3<32, 32, 32> FormatT;
310 };
311
312 //////////////////////////////////////////////////////////////////////////
313 /// FormatTraits<R32G32B32_SSCALED> - Format traits specialization for R32G32B32_SSCALED
314 //////////////////////////////////////////////////////////////////////////
315 template<> struct FormatTraits<R32G32B32_SSCALED> :
316 ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>,
317 FormatSwizzle<0, 1, 2>,
318 Defaults<0, 0, 0, 0x3f800000>
319 {
320 static const uint32_t bpp{ 96 };
321 static const uint32_t numComps{ 3 };
322 static const bool hasAlpha{ false };
323 static const uint32_t alphaComp{ 0 };
324 static const bool isSRGB{ false };
325 static const bool isBC{ false };
326 static const bool isSubsampled{ false };
327 static const uint32_t bcWidth{ 1 };
328 static const uint32_t bcHeight{ 1 };
329
330 typedef Transpose32_32_32 TransposeT;
331 typedef Format3<32, 32, 32> FormatT;
332 };
333
334 //////////////////////////////////////////////////////////////////////////
335 /// FormatTraits<R32G32B32_USCALED> - Format traits specialization for R32G32B32_USCALED
336 //////////////////////////////////////////////////////////////////////////
337 template<> struct FormatTraits<R32G32B32_USCALED> :
338 ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>,
339 FormatSwizzle<0, 1, 2>,
340 Defaults<0, 0, 0, 0x3f800000>
341 {
342 static const uint32_t bpp{ 96 };
343 static const uint32_t numComps{ 3 };
344 static const bool hasAlpha{ false };
345 static const uint32_t alphaComp{ 0 };
346 static const bool isSRGB{ false };
347 static const bool isBC{ false };
348 static const bool isSubsampled{ false };
349 static const uint32_t bcWidth{ 1 };
350 static const uint32_t bcHeight{ 1 };
351
352 typedef Transpose32_32_32 TransposeT;
353 typedef Format3<32, 32, 32> FormatT;
354 };
355
356 //////////////////////////////////////////////////////////////////////////
357 /// FormatTraits<R32G32B32_SFIXED> - Format traits specialization for R32G32B32_SFIXED
358 //////////////////////////////////////////////////////////////////////////
359 template<> struct FormatTraits<R32G32B32_SFIXED> :
360 ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>,
361 FormatSwizzle<0, 1, 2>,
362 Defaults<0, 0, 0, 0x3f800000>
363 {
364 static const uint32_t bpp{ 96 };
365 static const uint32_t numComps{ 3 };
366 static const bool hasAlpha{ false };
367 static const uint32_t alphaComp{ 0 };
368 static const bool isSRGB{ false };
369 static const bool isBC{ false };
370 static const bool isSubsampled{ false };
371 static const uint32_t bcWidth{ 1 };
372 static const uint32_t bcHeight{ 1 };
373
374 typedef Transpose32_32_32 TransposeT;
375 typedef Format3<32, 32, 32> FormatT;
376 };
377
378 //////////////////////////////////////////////////////////////////////////
379 /// FormatTraits<R16G16B16A16_UNORM> - Format traits specialization for R16G16B16A16_UNORM
380 //////////////////////////////////////////////////////////////////////////
381 template<> struct FormatTraits<R16G16B16A16_UNORM> :
382 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
383 FormatSwizzle<0, 1, 2, 3>,
384 Defaults<0, 0, 0, 0x3f800000>
385 {
386 static const uint32_t bpp{ 64 };
387 static const uint32_t numComps{ 4 };
388 static const bool hasAlpha{ true };
389 static const uint32_t alphaComp{ 3 };
390 static const bool isSRGB{ false };
391 static const bool isBC{ false };
392 static const bool isSubsampled{ false };
393 static const uint32_t bcWidth{ 1 };
394 static const uint32_t bcHeight{ 1 };
395
396 typedef Transpose16_16_16_16 TransposeT;
397 typedef Format4<16, 16, 16, 16> FormatT;
398 };
399
400 //////////////////////////////////////////////////////////////////////////
401 /// FormatTraits<R16G16B16A16_SNORM> - Format traits specialization for R16G16B16A16_SNORM
402 //////////////////////////////////////////////////////////////////////////
403 template<> struct FormatTraits<R16G16B16A16_SNORM> :
404 ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>,
405 FormatSwizzle<0, 1, 2, 3>,
406 Defaults<0, 0, 0, 0x3f800000>
407 {
408 static const uint32_t bpp{ 64 };
409 static const uint32_t numComps{ 4 };
410 static const bool hasAlpha{ true };
411 static const uint32_t alphaComp{ 3 };
412 static const bool isSRGB{ false };
413 static const bool isBC{ false };
414 static const bool isSubsampled{ false };
415 static const uint32_t bcWidth{ 1 };
416 static const uint32_t bcHeight{ 1 };
417
418 typedef Transpose16_16_16_16 TransposeT;
419 typedef Format4<16, 16, 16, 16> FormatT;
420 };
421
422 //////////////////////////////////////////////////////////////////////////
423 /// FormatTraits<R16G16B16A16_SINT> - Format traits specialization for R16G16B16A16_SINT
424 //////////////////////////////////////////////////////////////////////////
425 template<> struct FormatTraits<R16G16B16A16_SINT> :
426 ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>,
427 FormatSwizzle<0, 1, 2, 3>,
428 Defaults<0, 0, 0, 0x1>
429 {
430 static const uint32_t bpp{ 64 };
431 static const uint32_t numComps{ 4 };
432 static const bool hasAlpha{ true };
433 static const uint32_t alphaComp{ 3 };
434 static const bool isSRGB{ false };
435 static const bool isBC{ false };
436 static const bool isSubsampled{ false };
437 static const uint32_t bcWidth{ 1 };
438 static const uint32_t bcHeight{ 1 };
439
440 typedef Transpose16_16_16_16 TransposeT;
441 typedef Format4<16, 16, 16, 16> FormatT;
442 };
443
444 //////////////////////////////////////////////////////////////////////////
445 /// FormatTraits<R16G16B16A16_UINT> - Format traits specialization for R16G16B16A16_UINT
446 //////////////////////////////////////////////////////////////////////////
447 template<> struct FormatTraits<R16G16B16A16_UINT> :
448 ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>,
449 FormatSwizzle<0, 1, 2, 3>,
450 Defaults<0, 0, 0, 0x1>
451 {
452 static const uint32_t bpp{ 64 };
453 static const uint32_t numComps{ 4 };
454 static const bool hasAlpha{ true };
455 static const uint32_t alphaComp{ 3 };
456 static const bool isSRGB{ false };
457 static const bool isBC{ false };
458 static const bool isSubsampled{ false };
459 static const uint32_t bcWidth{ 1 };
460 static const uint32_t bcHeight{ 1 };
461
462 typedef Transpose16_16_16_16 TransposeT;
463 typedef Format4<16, 16, 16, 16> FormatT;
464 };
465
466 //////////////////////////////////////////////////////////////////////////
467 /// FormatTraits<R16G16B16A16_FLOAT> - Format traits specialization for R16G16B16A16_FLOAT
468 //////////////////////////////////////////////////////////////////////////
469 template<> struct FormatTraits<R16G16B16A16_FLOAT> :
470 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
471 FormatSwizzle<0, 1, 2, 3>,
472 Defaults<0, 0, 0, 0x3f800000>
473 {
474 static const uint32_t bpp{ 64 };
475 static const uint32_t numComps{ 4 };
476 static const bool hasAlpha{ true };
477 static const uint32_t alphaComp{ 3 };
478 static const bool isSRGB{ false };
479 static const bool isBC{ false };
480 static const bool isSubsampled{ false };
481 static const uint32_t bcWidth{ 1 };
482 static const uint32_t bcHeight{ 1 };
483
484 typedef Transpose16_16_16_16 TransposeT;
485 typedef Format4<16, 16, 16, 16> FormatT;
486 };
487
488 //////////////////////////////////////////////////////////////////////////
489 /// FormatTraits<R32G32_FLOAT> - Format traits specialization for R32G32_FLOAT
490 //////////////////////////////////////////////////////////////////////////
491 template<> struct FormatTraits<R32G32_FLOAT> :
492 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
493 FormatSwizzle<0, 1>,
494 Defaults<0, 0, 0, 0x3f800000>
495 {
496 static const uint32_t bpp{ 64 };
497 static const uint32_t numComps{ 2 };
498 static const bool hasAlpha{ false };
499 static const uint32_t alphaComp{ 0 };
500 static const bool isSRGB{ false };
501 static const bool isBC{ false };
502 static const bool isSubsampled{ false };
503 static const uint32_t bcWidth{ 1 };
504 static const uint32_t bcHeight{ 1 };
505
506 typedef Transpose32_32 TransposeT;
507 typedef Format2<32, 32> FormatT;
508 };
509
510 //////////////////////////////////////////////////////////////////////////
511 /// FormatTraits<R32G32_SINT> - Format traits specialization for R32G32_SINT
512 //////////////////////////////////////////////////////////////////////////
513 template<> struct FormatTraits<R32G32_SINT> :
514 ComponentTraits<SWR_TYPE_SINT, 32, SWR_TYPE_SINT, 32>,
515 FormatSwizzle<0, 1>,
516 Defaults<0, 0, 0, 0x1>
517 {
518 static const uint32_t bpp{ 64 };
519 static const uint32_t numComps{ 2 };
520 static const bool hasAlpha{ false };
521 static const uint32_t alphaComp{ 0 };
522 static const bool isSRGB{ false };
523 static const bool isBC{ false };
524 static const bool isSubsampled{ false };
525 static const uint32_t bcWidth{ 1 };
526 static const uint32_t bcHeight{ 1 };
527
528 typedef Transpose32_32 TransposeT;
529 typedef Format2<32, 32> FormatT;
530 };
531
532 //////////////////////////////////////////////////////////////////////////
533 /// FormatTraits<R32G32_UINT> - Format traits specialization for R32G32_UINT
534 //////////////////////////////////////////////////////////////////////////
535 template<> struct FormatTraits<R32G32_UINT> :
536 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UINT, 32>,
537 FormatSwizzle<0, 1>,
538 Defaults<0, 0, 0, 0x1>
539 {
540 static const uint32_t bpp{ 64 };
541 static const uint32_t numComps{ 2 };
542 static const bool hasAlpha{ false };
543 static const uint32_t alphaComp{ 0 };
544 static const bool isSRGB{ false };
545 static const bool isBC{ false };
546 static const bool isSubsampled{ false };
547 static const uint32_t bcWidth{ 1 };
548 static const uint32_t bcHeight{ 1 };
549
550 typedef Transpose32_32 TransposeT;
551 typedef Format2<32, 32> FormatT;
552 };
553
554 //////////////////////////////////////////////////////////////////////////
555 /// FormatTraits<R32_FLOAT_X8X24_TYPELESS> - Format traits specialization for R32_FLOAT_X8X24_TYPELESS
556 //////////////////////////////////////////////////////////////////////////
557 template<> struct FormatTraits<R32_FLOAT_X8X24_TYPELESS> :
558 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_UNUSED, 32>,
559 FormatSwizzle<0, 1>,
560 Defaults<0, 0, 0, 0x3f800000>
561 {
562 static const uint32_t bpp{ 64 };
563 static const uint32_t numComps{ 1 };
564 static const bool hasAlpha{ false };
565 static const uint32_t alphaComp{ 3 };
566 static const bool isSRGB{ false };
567 static const bool isBC{ false };
568 static const bool isSubsampled{ false };
569 static const uint32_t bcWidth{ 1 };
570 static const uint32_t bcHeight{ 1 };
571
572 typedef Transpose32_32 TransposeT;
573 typedef Format2<32, 32> FormatT;
574 };
575
576 //////////////////////////////////////////////////////////////////////////
577 /// FormatTraits<X32_TYPELESS_G8X24_UINT> - Format traits specialization for X32_TYPELESS_G8X24_UINT
578 //////////////////////////////////////////////////////////////////////////
579 template<> struct FormatTraits<X32_TYPELESS_G8X24_UINT> :
580 ComponentTraits<SWR_TYPE_UINT, 32, SWR_TYPE_UNUSED, 32>,
581 FormatSwizzle<0, 1>,
582 Defaults<0, 0, 0, 0x1>
583 {
584 static const uint32_t bpp{ 64 };
585 static const uint32_t numComps{ 1 };
586 static const bool hasAlpha{ false };
587 static const uint32_t alphaComp{ 3 };
588 static const bool isSRGB{ false };
589 static const bool isBC{ false };
590 static const bool isSubsampled{ false };
591 static const uint32_t bcWidth{ 1 };
592 static const uint32_t bcHeight{ 1 };
593
594 typedef Transpose32_32 TransposeT;
595 typedef Format2<32, 32> FormatT;
596 };
597
598 //////////////////////////////////////////////////////////////////////////
599 /// FormatTraits<L32A32_FLOAT> - Format traits specialization for L32A32_FLOAT
600 //////////////////////////////////////////////////////////////////////////
601 template<> struct FormatTraits<L32A32_FLOAT> :
602 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
603 FormatSwizzle<0, 3>,
604 Defaults<0, 0, 0, 0x3f800000>
605 {
606 static const uint32_t bpp{ 64 };
607 static const uint32_t numComps{ 2 };
608 static const bool hasAlpha{ true };
609 static const uint32_t alphaComp{ 1 };
610 static const bool isSRGB{ false };
611 static const bool isBC{ false };
612 static const bool isSubsampled{ false };
613 static const uint32_t bcWidth{ 1 };
614 static const uint32_t bcHeight{ 1 };
615
616 typedef Transpose32_32 TransposeT;
617 typedef Format2<32, 32> FormatT;
618 };
619
620 //////////////////////////////////////////////////////////////////////////
621 /// FormatTraits<R64_FLOAT> - Format traits specialization for R64_FLOAT
622 //////////////////////////////////////////////////////////////////////////
623 template<> struct FormatTraits<R64_FLOAT> :
624 ComponentTraits<SWR_TYPE_FLOAT, 64>,
625 FormatSwizzle<0>,
626 Defaults<0, 0, 0, 0x3f800000>
627 {
628 static const uint32_t bpp{ 64 };
629 static const uint32_t numComps{ 1 };
630 static const bool hasAlpha{ false };
631 static const uint32_t alphaComp{ 0 };
632 static const bool isSRGB{ false };
633 static const bool isBC{ false };
634 static const bool isSubsampled{ false };
635 static const uint32_t bcWidth{ 1 };
636 static const uint32_t bcHeight{ 1 };
637
638 typedef TransposeSingleComponent<64> TransposeT;
639 typedef Format1<64> FormatT;
640 };
641
642 //////////////////////////////////////////////////////////////////////////
643 /// FormatTraits<R16G16B16X16_UNORM> - Format traits specialization for R16G16B16X16_UNORM
644 //////////////////////////////////////////////////////////////////////////
645 template<> struct FormatTraits<R16G16B16X16_UNORM> :
646 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNUSED, 16>,
647 FormatSwizzle<0, 1, 2, 3>,
648 Defaults<0, 0, 0, 0x3f800000>
649 {
650 static const uint32_t bpp{ 64 };
651 static const uint32_t numComps{ 3 };
652 static const bool hasAlpha{ false };
653 static const uint32_t alphaComp{ 0 };
654 static const bool isSRGB{ false };
655 static const bool isBC{ false };
656 static const bool isSubsampled{ false };
657 static const uint32_t bcWidth{ 1 };
658 static const uint32_t bcHeight{ 1 };
659
660 typedef Transpose16_16_16_16 TransposeT;
661 typedef Format4<16, 16, 16, 16> FormatT;
662 };
663
664 //////////////////////////////////////////////////////////////////////////
665 /// FormatTraits<R16G16B16X16_FLOAT> - Format traits specialization for R16G16B16X16_FLOAT
666 //////////////////////////////////////////////////////////////////////////
667 template<> struct FormatTraits<R16G16B16X16_FLOAT> :
668 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_UNUSED, 16>,
669 FormatSwizzle<0, 1, 2, 3>,
670 Defaults<0, 0, 0, 0x3f800000>
671 {
672 static const uint32_t bpp{ 64 };
673 static const uint32_t numComps{ 3 };
674 static const bool hasAlpha{ false };
675 static const uint32_t alphaComp{ 0 };
676 static const bool isSRGB{ false };
677 static const bool isBC{ false };
678 static const bool isSubsampled{ false };
679 static const uint32_t bcWidth{ 1 };
680 static const uint32_t bcHeight{ 1 };
681
682 typedef Transpose16_16_16_16 TransposeT;
683 typedef Format4<16, 16, 16, 16> FormatT;
684 };
685
686 //////////////////////////////////////////////////////////////////////////
687 /// FormatTraits<L32X32_FLOAT> - Format traits specialization for L32X32_FLOAT
688 //////////////////////////////////////////////////////////////////////////
689 template<> struct FormatTraits<L32X32_FLOAT> :
690 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
691 FormatSwizzle<0, 3>,
692 Defaults<0, 0, 0, 0x3f800000>
693 {
694 static const uint32_t bpp{ 64 };
695 static const uint32_t numComps{ 2 };
696 static const bool hasAlpha{ false };
697 static const uint32_t alphaComp{ 0 };
698 static const bool isSRGB{ false };
699 static const bool isBC{ false };
700 static const bool isSubsampled{ false };
701 static const uint32_t bcWidth{ 1 };
702 static const uint32_t bcHeight{ 1 };
703
704 typedef Transpose32_32 TransposeT;
705 typedef Format2<32, 32> FormatT;
706 };
707
708 //////////////////////////////////////////////////////////////////////////
709 /// FormatTraits<I32X32_FLOAT> - Format traits specialization for I32X32_FLOAT
710 //////////////////////////////////////////////////////////////////////////
711 template<> struct FormatTraits<I32X32_FLOAT> :
712 ComponentTraits<SWR_TYPE_FLOAT, 32, SWR_TYPE_FLOAT, 32>,
713 FormatSwizzle<0, 3>,
714 Defaults<0, 0, 0, 0x3f800000>
715 {
716 static const uint32_t bpp{ 64 };
717 static const uint32_t numComps{ 2 };
718 static const bool hasAlpha{ false };
719 static const uint32_t alphaComp{ 0 };
720 static const bool isSRGB{ false };
721 static const bool isBC{ false };
722 static const bool isSubsampled{ false };
723 static const uint32_t bcWidth{ 1 };
724 static const uint32_t bcHeight{ 1 };
725
726 typedef Transpose32_32 TransposeT;
727 typedef Format2<32, 32> FormatT;
728 };
729
730 //////////////////////////////////////////////////////////////////////////
731 /// FormatTraits<R16G16B16A16_SSCALED> - Format traits specialization for R16G16B16A16_SSCALED
732 //////////////////////////////////////////////////////////////////////////
733 template<> struct FormatTraits<R16G16B16A16_SSCALED> :
734 ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>,
735 FormatSwizzle<0, 1, 2, 3>,
736 Defaults<0, 0, 0, 0x3f800000>
737 {
738 static const uint32_t bpp{ 64 };
739 static const uint32_t numComps{ 4 };
740 static const bool hasAlpha{ true };
741 static const uint32_t alphaComp{ 3 };
742 static const bool isSRGB{ false };
743 static const bool isBC{ false };
744 static const bool isSubsampled{ false };
745 static const uint32_t bcWidth{ 1 };
746 static const uint32_t bcHeight{ 1 };
747
748 typedef Transpose16_16_16_16 TransposeT;
749 typedef Format4<16, 16, 16, 16> FormatT;
750 };
751
752 //////////////////////////////////////////////////////////////////////////
753 /// FormatTraits<R16G16B16A16_USCALED> - Format traits specialization for R16G16B16A16_USCALED
754 //////////////////////////////////////////////////////////////////////////
755 template<> struct FormatTraits<R16G16B16A16_USCALED> :
756 ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>,
757 FormatSwizzle<0, 1, 2, 3>,
758 Defaults<0, 0, 0, 0x3f800000>
759 {
760 static const uint32_t bpp{ 64 };
761 static const uint32_t numComps{ 4 };
762 static const bool hasAlpha{ true };
763 static const uint32_t alphaComp{ 3 };
764 static const bool isSRGB{ false };
765 static const bool isBC{ false };
766 static const bool isSubsampled{ false };
767 static const uint32_t bcWidth{ 1 };
768 static const uint32_t bcHeight{ 1 };
769
770 typedef Transpose16_16_16_16 TransposeT;
771 typedef Format4<16, 16, 16, 16> FormatT;
772 };
773
774 //////////////////////////////////////////////////////////////////////////
775 /// FormatTraits<R32G32_SSCALED> - Format traits specialization for R32G32_SSCALED
776 //////////////////////////////////////////////////////////////////////////
777 template<> struct FormatTraits<R32G32_SSCALED> :
778 ComponentTraits<SWR_TYPE_SSCALED, 32, SWR_TYPE_SSCALED, 32>,
779 FormatSwizzle<0, 1>,
780 Defaults<0, 0, 0, 0x3f800000>
781 {
782 static const uint32_t bpp{ 64 };
783 static const uint32_t numComps{ 2 };
784 static const bool hasAlpha{ false };
785 static const uint32_t alphaComp{ 0 };
786 static const bool isSRGB{ false };
787 static const bool isBC{ false };
788 static const bool isSubsampled{ false };
789 static const uint32_t bcWidth{ 1 };
790 static const uint32_t bcHeight{ 1 };
791
792 typedef Transpose32_32 TransposeT;
793 typedef Format2<32, 32> FormatT;
794 };
795
796 //////////////////////////////////////////////////////////////////////////
797 /// FormatTraits<R32G32_USCALED> - Format traits specialization for R32G32_USCALED
798 //////////////////////////////////////////////////////////////////////////
799 template<> struct FormatTraits<R32G32_USCALED> :
800 ComponentTraits<SWR_TYPE_USCALED, 32, SWR_TYPE_USCALED, 32>,
801 FormatSwizzle<0, 1>,
802 Defaults<0, 0, 0, 0x3f800000>
803 {
804 static const uint32_t bpp{ 64 };
805 static const uint32_t numComps{ 2 };
806 static const bool hasAlpha{ false };
807 static const uint32_t alphaComp{ 0 };
808 static const bool isSRGB{ false };
809 static const bool isBC{ false };
810 static const bool isSubsampled{ false };
811 static const uint32_t bcWidth{ 1 };
812 static const uint32_t bcHeight{ 1 };
813
814 typedef Transpose32_32 TransposeT;
815 typedef Format2<32, 32> FormatT;
816 };
817
818 //////////////////////////////////////////////////////////////////////////
819 /// FormatTraits<R32G32_SFIXED> - Format traits specialization for R32G32_SFIXED
820 //////////////////////////////////////////////////////////////////////////
821 template<> struct FormatTraits<R32G32_SFIXED> :
822 ComponentTraits<SWR_TYPE_SFIXED, 32, SWR_TYPE_SFIXED, 32>,
823 FormatSwizzle<0, 1>,
824 Defaults<0, 0, 0, 0x3f800000>
825 {
826 static const uint32_t bpp{ 64 };
827 static const uint32_t numComps{ 2 };
828 static const bool hasAlpha{ false };
829 static const uint32_t alphaComp{ 0 };
830 static const bool isSRGB{ false };
831 static const bool isBC{ false };
832 static const bool isSubsampled{ false };
833 static const uint32_t bcWidth{ 1 };
834 static const uint32_t bcHeight{ 1 };
835
836 typedef Transpose32_32 TransposeT;
837 typedef Format2<32, 32> FormatT;
838 };
839
840 //////////////////////////////////////////////////////////////////////////
841 /// FormatTraits<B8G8R8A8_UNORM> - Format traits specialization for B8G8R8A8_UNORM
842 //////////////////////////////////////////////////////////////////////////
843 template<> struct FormatTraits<B8G8R8A8_UNORM> :
844 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
845 FormatSwizzle<2, 1, 0, 3>,
846 Defaults<0, 0, 0, 0x3f800000>
847 {
848 static const uint32_t bpp{ 32 };
849 static const uint32_t numComps{ 4 };
850 static const bool hasAlpha{ true };
851 static const uint32_t alphaComp{ 3 };
852 static const bool isSRGB{ false };
853 static const bool isBC{ false };
854 static const bool isSubsampled{ false };
855 static const uint32_t bcWidth{ 1 };
856 static const uint32_t bcHeight{ 1 };
857
858 typedef Transpose8_8_8_8 TransposeT;
859 typedef Format4<8, 8, 8, 8> FormatT;
860 };
861
862 //////////////////////////////////////////////////////////////////////////
863 /// FormatTraits<B8G8R8A8_UNORM_SRGB> - Format traits specialization for B8G8R8A8_UNORM_SRGB
864 //////////////////////////////////////////////////////////////////////////
865 template<> struct FormatTraits<B8G8R8A8_UNORM_SRGB> :
866 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
867 FormatSwizzle<2, 1, 0, 3>,
868 Defaults<0, 0, 0, 0x3f800000>
869 {
870 static const uint32_t bpp{ 32 };
871 static const uint32_t numComps{ 4 };
872 static const bool hasAlpha{ true };
873 static const uint32_t alphaComp{ 3 };
874 static const bool isSRGB{ true };
875 static const bool isBC{ false };
876 static const bool isSubsampled{ false };
877 static const uint32_t bcWidth{ 1 };
878 static const uint32_t bcHeight{ 1 };
879
880 typedef Transpose8_8_8_8 TransposeT;
881 typedef Format4<8, 8, 8, 8> FormatT;
882 };
883
884 //////////////////////////////////////////////////////////////////////////
885 /// FormatTraits<R10G10B10A2_UNORM> - Format traits specialization for R10G10B10A2_UNORM
886 //////////////////////////////////////////////////////////////////////////
887 template<> struct FormatTraits<R10G10B10A2_UNORM> :
888 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
889 FormatSwizzle<0, 1, 2, 3>,
890 Defaults<0, 0, 0, 0x3f800000>
891 {
892 static const uint32_t bpp{ 32 };
893 static const uint32_t numComps{ 4 };
894 static const bool hasAlpha{ true };
895 static const uint32_t alphaComp{ 3 };
896 static const bool isSRGB{ false };
897 static const bool isBC{ false };
898 static const bool isSubsampled{ false };
899 static const uint32_t bcWidth{ 1 };
900 static const uint32_t bcHeight{ 1 };
901
902 typedef Transpose10_10_10_2 TransposeT;
903 typedef Format4<10, 10, 10, 2> FormatT;
904 };
905
906 //////////////////////////////////////////////////////////////////////////
907 /// FormatTraits<R10G10B10A2_UNORM_SRGB> - Format traits specialization for R10G10B10A2_UNORM_SRGB
908 //////////////////////////////////////////////////////////////////////////
909 template<> struct FormatTraits<R10G10B10A2_UNORM_SRGB> :
910 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
911 FormatSwizzle<0, 1, 2, 3>,
912 Defaults<0, 0, 0, 0x3f800000>
913 {
914 static const uint32_t bpp{ 32 };
915 static const uint32_t numComps{ 4 };
916 static const bool hasAlpha{ true };
917 static const uint32_t alphaComp{ 3 };
918 static const bool isSRGB{ true };
919 static const bool isBC{ false };
920 static const bool isSubsampled{ false };
921 static const uint32_t bcWidth{ 1 };
922 static const uint32_t bcHeight{ 1 };
923
924 typedef Transpose10_10_10_2 TransposeT;
925 typedef Format4<10, 10, 10, 2> FormatT;
926 };
927
928 //////////////////////////////////////////////////////////////////////////
929 /// FormatTraits<R10G10B10A2_UINT> - Format traits specialization for R10G10B10A2_UINT
930 //////////////////////////////////////////////////////////////////////////
931 template<> struct FormatTraits<R10G10B10A2_UINT> :
932 ComponentTraits<SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 2>,
933 FormatSwizzle<0, 1, 2, 3>,
934 Defaults<0, 0, 0, 0x1>
935 {
936 static const uint32_t bpp{ 32 };
937 static const uint32_t numComps{ 4 };
938 static const bool hasAlpha{ true };
939 static const uint32_t alphaComp{ 3 };
940 static const bool isSRGB{ false };
941 static const bool isBC{ false };
942 static const bool isSubsampled{ false };
943 static const uint32_t bcWidth{ 1 };
944 static const uint32_t bcHeight{ 1 };
945
946 typedef Transpose10_10_10_2 TransposeT;
947 typedef Format4<10, 10, 10, 2> FormatT;
948 };
949
950 //////////////////////////////////////////////////////////////////////////
951 /// FormatTraits<R8G8B8A8_UNORM> - Format traits specialization for R8G8B8A8_UNORM
952 //////////////////////////////////////////////////////////////////////////
953 template<> struct FormatTraits<R8G8B8A8_UNORM> :
954 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
955 FormatSwizzle<0, 1, 2, 3>,
956 Defaults<0, 0, 0, 0x3f800000>
957 {
958 static const uint32_t bpp{ 32 };
959 static const uint32_t numComps{ 4 };
960 static const bool hasAlpha{ true };
961 static const uint32_t alphaComp{ 3 };
962 static const bool isSRGB{ false };
963 static const bool isBC{ false };
964 static const bool isSubsampled{ false };
965 static const uint32_t bcWidth{ 1 };
966 static const uint32_t bcHeight{ 1 };
967
968 typedef Transpose8_8_8_8 TransposeT;
969 typedef Format4<8, 8, 8, 8> FormatT;
970 };
971
972 //////////////////////////////////////////////////////////////////////////
973 /// FormatTraits<R8G8B8A8_UNORM_SRGB> - Format traits specialization for R8G8B8A8_UNORM_SRGB
974 //////////////////////////////////////////////////////////////////////////
975 template<> struct FormatTraits<R8G8B8A8_UNORM_SRGB> :
976 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
977 FormatSwizzle<0, 1, 2, 3>,
978 Defaults<0, 0, 0, 0x3f800000>
979 {
980 static const uint32_t bpp{ 32 };
981 static const uint32_t numComps{ 4 };
982 static const bool hasAlpha{ true };
983 static const uint32_t alphaComp{ 3 };
984 static const bool isSRGB{ true };
985 static const bool isBC{ false };
986 static const bool isSubsampled{ false };
987 static const uint32_t bcWidth{ 1 };
988 static const uint32_t bcHeight{ 1 };
989
990 typedef Transpose8_8_8_8 TransposeT;
991 typedef Format4<8, 8, 8, 8> FormatT;
992 };
993
994 //////////////////////////////////////////////////////////////////////////
995 /// FormatTraits<R8G8B8A8_SNORM> - Format traits specialization for R8G8B8A8_SNORM
996 //////////////////////////////////////////////////////////////////////////
997 template<> struct FormatTraits<R8G8B8A8_SNORM> :
998 ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>,
999 FormatSwizzle<0, 1, 2, 3>,
1000 Defaults<0, 0, 0, 0x3f800000>
1001 {
1002 static const uint32_t bpp{ 32 };
1003 static const uint32_t numComps{ 4 };
1004 static const bool hasAlpha{ true };
1005 static const uint32_t alphaComp{ 3 };
1006 static const bool isSRGB{ false };
1007 static const bool isBC{ false };
1008 static const bool isSubsampled{ false };
1009 static const uint32_t bcWidth{ 1 };
1010 static const uint32_t bcHeight{ 1 };
1011
1012 typedef Transpose8_8_8_8 TransposeT;
1013 typedef Format4<8, 8, 8, 8> FormatT;
1014 };
1015
1016 //////////////////////////////////////////////////////////////////////////
1017 /// FormatTraits<R8G8B8A8_SINT> - Format traits specialization for R8G8B8A8_SINT
1018 //////////////////////////////////////////////////////////////////////////
1019 template<> struct FormatTraits<R8G8B8A8_SINT> :
1020 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
1021 FormatSwizzle<0, 1, 2, 3>,
1022 Defaults<0, 0, 0, 0x1>
1023 {
1024 static const uint32_t bpp{ 32 };
1025 static const uint32_t numComps{ 4 };
1026 static const bool hasAlpha{ true };
1027 static const uint32_t alphaComp{ 3 };
1028 static const bool isSRGB{ false };
1029 static const bool isBC{ false };
1030 static const bool isSubsampled{ false };
1031 static const uint32_t bcWidth{ 1 };
1032 static const uint32_t bcHeight{ 1 };
1033
1034 typedef Transpose8_8_8_8 TransposeT;
1035 typedef Format4<8, 8, 8, 8> FormatT;
1036 };
1037
1038 //////////////////////////////////////////////////////////////////////////
1039 /// FormatTraits<R8G8B8A8_UINT> - Format traits specialization for R8G8B8A8_UINT
1040 //////////////////////////////////////////////////////////////////////////
1041 template<> struct FormatTraits<R8G8B8A8_UINT> :
1042 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
1043 FormatSwizzle<0, 1, 2, 3>,
1044 Defaults<0, 0, 0, 0x1>
1045 {
1046 static const uint32_t bpp{ 32 };
1047 static const uint32_t numComps{ 4 };
1048 static const bool hasAlpha{ true };
1049 static const uint32_t alphaComp{ 3 };
1050 static const bool isSRGB{ false };
1051 static const bool isBC{ false };
1052 static const bool isSubsampled{ false };
1053 static const uint32_t bcWidth{ 1 };
1054 static const uint32_t bcHeight{ 1 };
1055
1056 typedef Transpose8_8_8_8 TransposeT;
1057 typedef Format4<8, 8, 8, 8> FormatT;
1058 };
1059
1060 //////////////////////////////////////////////////////////////////////////
1061 /// FormatTraits<R16G16_UNORM> - Format traits specialization for R16G16_UNORM
1062 //////////////////////////////////////////////////////////////////////////
1063 template<> struct FormatTraits<R16G16_UNORM> :
1064 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
1065 FormatSwizzle<0, 1>,
1066 Defaults<0, 0, 0, 0x3f800000>
1067 {
1068 static const uint32_t bpp{ 32 };
1069 static const uint32_t numComps{ 2 };
1070 static const bool hasAlpha{ false };
1071 static const uint32_t alphaComp{ 0 };
1072 static const bool isSRGB{ false };
1073 static const bool isBC{ false };
1074 static const bool isSubsampled{ false };
1075 static const uint32_t bcWidth{ 1 };
1076 static const uint32_t bcHeight{ 1 };
1077
1078 typedef Transpose16_16 TransposeT;
1079 typedef Format2<16, 16> FormatT;
1080 };
1081
1082 //////////////////////////////////////////////////////////////////////////
1083 /// FormatTraits<R16G16_SNORM> - Format traits specialization for R16G16_SNORM
1084 //////////////////////////////////////////////////////////////////////////
1085 template<> struct FormatTraits<R16G16_SNORM> :
1086 ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>,
1087 FormatSwizzle<0, 1>,
1088 Defaults<0, 0, 0, 0x3f800000>
1089 {
1090 static const uint32_t bpp{ 32 };
1091 static const uint32_t numComps{ 2 };
1092 static const bool hasAlpha{ false };
1093 static const uint32_t alphaComp{ 0 };
1094 static const bool isSRGB{ false };
1095 static const bool isBC{ false };
1096 static const bool isSubsampled{ false };
1097 static const uint32_t bcWidth{ 1 };
1098 static const uint32_t bcHeight{ 1 };
1099
1100 typedef Transpose16_16 TransposeT;
1101 typedef Format2<16, 16> FormatT;
1102 };
1103
1104 //////////////////////////////////////////////////////////////////////////
1105 /// FormatTraits<R16G16_SINT> - Format traits specialization for R16G16_SINT
1106 //////////////////////////////////////////////////////////////////////////
1107 template<> struct FormatTraits<R16G16_SINT> :
1108 ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>,
1109 FormatSwizzle<0, 1>,
1110 Defaults<0, 0, 0, 0x1>
1111 {
1112 static const uint32_t bpp{ 32 };
1113 static const uint32_t numComps{ 2 };
1114 static const bool hasAlpha{ false };
1115 static const uint32_t alphaComp{ 0 };
1116 static const bool isSRGB{ false };
1117 static const bool isBC{ false };
1118 static const bool isSubsampled{ false };
1119 static const uint32_t bcWidth{ 1 };
1120 static const uint32_t bcHeight{ 1 };
1121
1122 typedef Transpose16_16 TransposeT;
1123 typedef Format2<16, 16> FormatT;
1124 };
1125
1126 //////////////////////////////////////////////////////////////////////////
1127 /// FormatTraits<R16G16_UINT> - Format traits specialization for R16G16_UINT
1128 //////////////////////////////////////////////////////////////////////////
1129 template<> struct FormatTraits<R16G16_UINT> :
1130 ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>,
1131 FormatSwizzle<0, 1>,
1132 Defaults<0, 0, 0, 0x1>
1133 {
1134 static const uint32_t bpp{ 32 };
1135 static const uint32_t numComps{ 2 };
1136 static const bool hasAlpha{ false };
1137 static const uint32_t alphaComp{ 0 };
1138 static const bool isSRGB{ false };
1139 static const bool isBC{ false };
1140 static const bool isSubsampled{ false };
1141 static const uint32_t bcWidth{ 1 };
1142 static const uint32_t bcHeight{ 1 };
1143
1144 typedef Transpose16_16 TransposeT;
1145 typedef Format2<16, 16> FormatT;
1146 };
1147
1148 //////////////////////////////////////////////////////////////////////////
1149 /// FormatTraits<R16G16_FLOAT> - Format traits specialization for R16G16_FLOAT
1150 //////////////////////////////////////////////////////////////////////////
1151 template<> struct FormatTraits<R16G16_FLOAT> :
1152 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
1153 FormatSwizzle<0, 1>,
1154 Defaults<0, 0, 0, 0x3f800000>
1155 {
1156 static const uint32_t bpp{ 32 };
1157 static const uint32_t numComps{ 2 };
1158 static const bool hasAlpha{ false };
1159 static const uint32_t alphaComp{ 0 };
1160 static const bool isSRGB{ false };
1161 static const bool isBC{ false };
1162 static const bool isSubsampled{ false };
1163 static const uint32_t bcWidth{ 1 };
1164 static const uint32_t bcHeight{ 1 };
1165
1166 typedef Transpose16_16 TransposeT;
1167 typedef Format2<16, 16> FormatT;
1168 };
1169
1170 //////////////////////////////////////////////////////////////////////////
1171 /// FormatTraits<B10G10R10A2_UNORM> - Format traits specialization for B10G10R10A2_UNORM
1172 //////////////////////////////////////////////////////////////////////////
1173 template<> struct FormatTraits<B10G10R10A2_UNORM> :
1174 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
1175 FormatSwizzle<2, 1, 0, 3>,
1176 Defaults<0, 0, 0, 0x3f800000>
1177 {
1178 static const uint32_t bpp{ 32 };
1179 static const uint32_t numComps{ 4 };
1180 static const bool hasAlpha{ true };
1181 static const uint32_t alphaComp{ 3 };
1182 static const bool isSRGB{ false };
1183 static const bool isBC{ false };
1184 static const bool isSubsampled{ false };
1185 static const uint32_t bcWidth{ 1 };
1186 static const uint32_t bcHeight{ 1 };
1187
1188 typedef Transpose10_10_10_2 TransposeT;
1189 typedef Format4<10, 10, 10, 2> FormatT;
1190 };
1191
1192 //////////////////////////////////////////////////////////////////////////
1193 /// FormatTraits<B10G10R10A2_UNORM_SRGB> - Format traits specialization for B10G10R10A2_UNORM_SRGB
1194 //////////////////////////////////////////////////////////////////////////
1195 template<> struct FormatTraits<B10G10R10A2_UNORM_SRGB> :
1196 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 2>,
1197 FormatSwizzle<2, 1, 0, 3>,
1198 Defaults<0, 0, 0, 0x3f800000>
1199 {
1200 static const uint32_t bpp{ 32 };
1201 static const uint32_t numComps{ 4 };
1202 static const bool hasAlpha{ true };
1203 static const uint32_t alphaComp{ 3 };
1204 static const bool isSRGB{ true };
1205 static const bool isBC{ false };
1206 static const bool isSubsampled{ false };
1207 static const uint32_t bcWidth{ 1 };
1208 static const uint32_t bcHeight{ 1 };
1209
1210 typedef Transpose10_10_10_2 TransposeT;
1211 typedef Format4<10, 10, 10, 2> FormatT;
1212 };
1213
1214 //////////////////////////////////////////////////////////////////////////
1215 /// FormatTraits<R11G11B10_FLOAT> - Format traits specialization for R11G11B10_FLOAT
1216 //////////////////////////////////////////////////////////////////////////
1217 template<> struct FormatTraits<R11G11B10_FLOAT> :
1218 ComponentTraits<SWR_TYPE_FLOAT, 11, SWR_TYPE_FLOAT, 11, SWR_TYPE_FLOAT, 10>,
1219 FormatSwizzle<0, 1, 2>,
1220 Defaults<0, 0, 0, 0x3f800000>
1221 {
1222 static const uint32_t bpp{ 32 };
1223 static const uint32_t numComps{ 3 };
1224 static const bool hasAlpha{ false };
1225 static const uint32_t alphaComp{ 0 };
1226 static const bool isSRGB{ false };
1227 static const bool isBC{ false };
1228 static const bool isSubsampled{ false };
1229 static const uint32_t bcWidth{ 1 };
1230 static const uint32_t bcHeight{ 1 };
1231
1232 typedef Transpose11_11_10 TransposeT;
1233 typedef Format3<11, 11, 10> FormatT;
1234 };
1235
1236 //////////////////////////////////////////////////////////////////////////
1237 /// FormatTraits<R10G10B10_FLOAT_A2_UNORM> - Format traits specialization for R10G10B10_FLOAT_A2_UNORM
1238 //////////////////////////////////////////////////////////////////////////
1239 template<> struct FormatTraits<R10G10B10_FLOAT_A2_UNORM> :
1240 ComponentTraits<SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 10, SWR_TYPE_FLOAT, 2>,
1241 FormatSwizzle<0, 1, 2, 3>,
1242 Defaults<0, 0, 0, 0x3f800000>
1243 {
1244 static const uint32_t bpp{ 32 };
1245 static const uint32_t numComps{ 4 };
1246 static const bool hasAlpha{ true };
1247 static const uint32_t alphaComp{ 3 };
1248 static const bool isSRGB{ false };
1249 static const bool isBC{ false };
1250 static const bool isSubsampled{ false };
1251 static const uint32_t bcWidth{ 1 };
1252 static const uint32_t bcHeight{ 1 };
1253
1254 typedef Transpose10_10_10_2 TransposeT;
1255 typedef Format4<10, 10, 10, 2> FormatT;
1256 };
1257
1258 //////////////////////////////////////////////////////////////////////////
1259 /// FormatTraits<R32_SINT> - Format traits specialization for R32_SINT
1260 //////////////////////////////////////////////////////////////////////////
1261 template<> struct FormatTraits<R32_SINT> :
1262 ComponentTraits<SWR_TYPE_SINT, 32>,
1263 FormatSwizzle<0>,
1264 Defaults<0, 0, 0, 0x1>
1265 {
1266 static const uint32_t bpp{ 32 };
1267 static const uint32_t numComps{ 1 };
1268 static const bool hasAlpha{ false };
1269 static const uint32_t alphaComp{ 0 };
1270 static const bool isSRGB{ false };
1271 static const bool isBC{ false };
1272 static const bool isSubsampled{ false };
1273 static const uint32_t bcWidth{ 1 };
1274 static const uint32_t bcHeight{ 1 };
1275
1276 typedef TransposeSingleComponent<32> TransposeT;
1277 typedef Format1<32> FormatT;
1278 };
1279
1280 //////////////////////////////////////////////////////////////////////////
1281 /// FormatTraits<R32_UINT> - Format traits specialization for R32_UINT
1282 //////////////////////////////////////////////////////////////////////////
1283 template<> struct FormatTraits<R32_UINT> :
1284 ComponentTraits<SWR_TYPE_UINT, 32>,
1285 FormatSwizzle<0>,
1286 Defaults<0, 0, 0, 0x1>
1287 {
1288 static const uint32_t bpp{ 32 };
1289 static const uint32_t numComps{ 1 };
1290 static const bool hasAlpha{ false };
1291 static const uint32_t alphaComp{ 0 };
1292 static const bool isSRGB{ false };
1293 static const bool isBC{ false };
1294 static const bool isSubsampled{ false };
1295 static const uint32_t bcWidth{ 1 };
1296 static const uint32_t bcHeight{ 1 };
1297
1298 typedef TransposeSingleComponent<32> TransposeT;
1299 typedef Format1<32> FormatT;
1300 };
1301
1302 //////////////////////////////////////////////////////////////////////////
1303 /// FormatTraits<R32_FLOAT> - Format traits specialization for R32_FLOAT
1304 //////////////////////////////////////////////////////////////////////////
1305 template<> struct FormatTraits<R32_FLOAT> :
1306 ComponentTraits<SWR_TYPE_FLOAT, 32>,
1307 FormatSwizzle<0>,
1308 Defaults<0, 0, 0, 0x3f800000>
1309 {
1310 static const uint32_t bpp{ 32 };
1311 static const uint32_t numComps{ 1 };
1312 static const bool hasAlpha{ false };
1313 static const uint32_t alphaComp{ 0 };
1314 static const bool isSRGB{ false };
1315 static const bool isBC{ false };
1316 static const bool isSubsampled{ false };
1317 static const uint32_t bcWidth{ 1 };
1318 static const uint32_t bcHeight{ 1 };
1319
1320 typedef TransposeSingleComponent<32> TransposeT;
1321 typedef Format1<32> FormatT;
1322 };
1323
1324 //////////////////////////////////////////////////////////////////////////
1325 /// FormatTraits<R24_UNORM_X8_TYPELESS> - Format traits specialization for R24_UNORM_X8_TYPELESS
1326 //////////////////////////////////////////////////////////////////////////
1327 template<> struct FormatTraits<R24_UNORM_X8_TYPELESS> :
1328 ComponentTraits<SWR_TYPE_UNORM, 24>,
1329 FormatSwizzle<0>,
1330 Defaults<0, 0, 0, 0x3f800000>
1331 {
1332 static const uint32_t bpp{ 32 };
1333 static const uint32_t numComps{ 1 };
1334 static const bool hasAlpha{ false };
1335 static const uint32_t alphaComp{ 3 };
1336 static const bool isSRGB{ false };
1337 static const bool isBC{ false };
1338 static const bool isSubsampled{ false };
1339 static const uint32_t bcWidth{ 1 };
1340 static const uint32_t bcHeight{ 1 };
1341
1342 typedef TransposeSingleComponent<32> TransposeT;
1343 typedef Format1<24> FormatT;
1344 };
1345
1346 //////////////////////////////////////////////////////////////////////////
1347 /// FormatTraits<X24_TYPELESS_G8_UINT> - Format traits specialization for X24_TYPELESS_G8_UINT
1348 //////////////////////////////////////////////////////////////////////////
1349 template<> struct FormatTraits<X24_TYPELESS_G8_UINT> :
1350 ComponentTraits<SWR_TYPE_UINT, 32>,
1351 FormatSwizzle<1>,
1352 Defaults<0, 0, 0, 0x1>
1353 {
1354 static const uint32_t bpp{ 32 };
1355 static const uint32_t numComps{ 1 };
1356 static const bool hasAlpha{ false };
1357 static const uint32_t alphaComp{ 3 };
1358 static const bool isSRGB{ false };
1359 static const bool isBC{ false };
1360 static const bool isSubsampled{ false };
1361 static const uint32_t bcWidth{ 1 };
1362 static const uint32_t bcHeight{ 1 };
1363
1364 typedef TransposeSingleComponent<32> TransposeT;
1365 typedef Format1<32> FormatT;
1366 };
1367
1368 //////////////////////////////////////////////////////////////////////////
1369 /// FormatTraits<L32_UNORM> - Format traits specialization for L32_UNORM
1370 //////////////////////////////////////////////////////////////////////////
1371 template<> struct FormatTraits<L32_UNORM> :
1372 ComponentTraits<SWR_TYPE_UNORM, 32>,
1373 FormatSwizzle<0>,
1374 Defaults<0, 0, 0, 0x3f800000>
1375 {
1376 static const uint32_t bpp{ 32 };
1377 static const uint32_t numComps{ 1 };
1378 static const bool hasAlpha{ false };
1379 static const uint32_t alphaComp{ 0 };
1380 static const bool isSRGB{ false };
1381 static const bool isBC{ false };
1382 static const bool isSubsampled{ false };
1383 static const uint32_t bcWidth{ 1 };
1384 static const uint32_t bcHeight{ 1 };
1385
1386 typedef TransposeSingleComponent<32> TransposeT;
1387 typedef Format1<32> FormatT;
1388 };
1389
1390 //////////////////////////////////////////////////////////////////////////
1391 /// FormatTraits<L16A16_UNORM> - Format traits specialization for L16A16_UNORM
1392 //////////////////////////////////////////////////////////////////////////
1393 template<> struct FormatTraits<L16A16_UNORM> :
1394 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
1395 FormatSwizzle<0, 3>,
1396 Defaults<0, 0, 0, 0x3f800000>
1397 {
1398 static const uint32_t bpp{ 32 };
1399 static const uint32_t numComps{ 2 };
1400 static const bool hasAlpha{ true };
1401 static const uint32_t alphaComp{ 1 };
1402 static const bool isSRGB{ false };
1403 static const bool isBC{ false };
1404 static const bool isSubsampled{ false };
1405 static const uint32_t bcWidth{ 1 };
1406 static const uint32_t bcHeight{ 1 };
1407
1408 typedef Transpose16_16 TransposeT;
1409 typedef Format2<16, 16> FormatT;
1410 };
1411
1412 //////////////////////////////////////////////////////////////////////////
1413 /// FormatTraits<I24X8_UNORM> - Format traits specialization for I24X8_UNORM
1414 //////////////////////////////////////////////////////////////////////////
1415 template<> struct FormatTraits<I24X8_UNORM> :
1416 ComponentTraits<SWR_TYPE_UNORM, 24, SWR_TYPE_UNORM, 8>,
1417 FormatSwizzle<0, 3>,
1418 Defaults<0, 0, 0, 0x3f800000>
1419 {
1420 static const uint32_t bpp{ 32 };
1421 static const uint32_t numComps{ 2 };
1422 static const bool hasAlpha{ false };
1423 static const uint32_t alphaComp{ 0 };
1424 static const bool isSRGB{ false };
1425 static const bool isBC{ false };
1426 static const bool isSubsampled{ false };
1427 static const uint32_t bcWidth{ 1 };
1428 static const uint32_t bcHeight{ 1 };
1429
1430 typedef Transpose24_8 TransposeT;
1431 typedef Format2<24, 8> FormatT;
1432 };
1433
1434 //////////////////////////////////////////////////////////////////////////
1435 /// FormatTraits<L24X8_UNORM> - Format traits specialization for L24X8_UNORM
1436 //////////////////////////////////////////////////////////////////////////
1437 template<> struct FormatTraits<L24X8_UNORM> :
1438 ComponentTraits<SWR_TYPE_UNORM, 24, SWR_TYPE_UNORM, 8>,
1439 FormatSwizzle<0, 3>,
1440 Defaults<0, 0, 0, 0x3f800000>
1441 {
1442 static const uint32_t bpp{ 32 };
1443 static const uint32_t numComps{ 2 };
1444 static const bool hasAlpha{ false };
1445 static const uint32_t alphaComp{ 0 };
1446 static const bool isSRGB{ false };
1447 static const bool isBC{ false };
1448 static const bool isSubsampled{ false };
1449 static const uint32_t bcWidth{ 1 };
1450 static const uint32_t bcHeight{ 1 };
1451
1452 typedef Transpose24_8 TransposeT;
1453 typedef Format2<24, 8> FormatT;
1454 };
1455
1456 //////////////////////////////////////////////////////////////////////////
1457 /// FormatTraits<I32_FLOAT> - Format traits specialization for I32_FLOAT
1458 //////////////////////////////////////////////////////////////////////////
1459 template<> struct FormatTraits<I32_FLOAT> :
1460 ComponentTraits<SWR_TYPE_FLOAT, 32>,
1461 FormatSwizzle<0>,
1462 Defaults<0, 0, 0, 0x3f800000>
1463 {
1464 static const uint32_t bpp{ 32 };
1465 static const uint32_t numComps{ 1 };
1466 static const bool hasAlpha{ false };
1467 static const uint32_t alphaComp{ 0 };
1468 static const bool isSRGB{ false };
1469 static const bool isBC{ false };
1470 static const bool isSubsampled{ false };
1471 static const uint32_t bcWidth{ 1 };
1472 static const uint32_t bcHeight{ 1 };
1473
1474 typedef TransposeSingleComponent<32> TransposeT;
1475 typedef Format1<32> FormatT;
1476 };
1477
1478 //////////////////////////////////////////////////////////////////////////
1479 /// FormatTraits<L32_FLOAT> - Format traits specialization for L32_FLOAT
1480 //////////////////////////////////////////////////////////////////////////
1481 template<> struct FormatTraits<L32_FLOAT> :
1482 ComponentTraits<SWR_TYPE_FLOAT, 32>,
1483 FormatSwizzle<0>,
1484 Defaults<0, 0, 0, 0x3f800000>
1485 {
1486 static const uint32_t bpp{ 32 };
1487 static const uint32_t numComps{ 1 };
1488 static const bool hasAlpha{ false };
1489 static const uint32_t alphaComp{ 0 };
1490 static const bool isSRGB{ false };
1491 static const bool isBC{ false };
1492 static const bool isSubsampled{ false };
1493 static const uint32_t bcWidth{ 1 };
1494 static const uint32_t bcHeight{ 1 };
1495
1496 typedef TransposeSingleComponent<32> TransposeT;
1497 typedef Format1<32> FormatT;
1498 };
1499
1500 //////////////////////////////////////////////////////////////////////////
1501 /// FormatTraits<A32_FLOAT> - Format traits specialization for A32_FLOAT
1502 //////////////////////////////////////////////////////////////////////////
1503 template<> struct FormatTraits<A32_FLOAT> :
1504 ComponentTraits<SWR_TYPE_FLOAT, 32>,
1505 FormatSwizzle<3>,
1506 Defaults<0, 0, 0, 0x3f800000>
1507 {
1508 static const uint32_t bpp{ 32 };
1509 static const uint32_t numComps{ 1 };
1510 static const bool hasAlpha{ true };
1511 static const uint32_t alphaComp{ 0 };
1512 static const bool isSRGB{ false };
1513 static const bool isBC{ false };
1514 static const bool isSubsampled{ false };
1515 static const uint32_t bcWidth{ 1 };
1516 static const uint32_t bcHeight{ 1 };
1517
1518 typedef TransposeSingleComponent<32> TransposeT;
1519 typedef Format1<32> FormatT;
1520 };
1521
1522 //////////////////////////////////////////////////////////////////////////
1523 /// FormatTraits<B8G8R8X8_UNORM> - Format traits specialization for B8G8R8X8_UNORM
1524 //////////////////////////////////////////////////////////////////////////
1525 template<> struct FormatTraits<B8G8R8X8_UNORM> :
1526 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
1527 FormatSwizzle<2, 1, 0, 3>,
1528 Defaults<0, 0, 0, 0x3f800000>
1529 {
1530 static const uint32_t bpp{ 32 };
1531 static const uint32_t numComps{ 3 };
1532 static const bool hasAlpha{ false };
1533 static const uint32_t alphaComp{ 0 };
1534 static const bool isSRGB{ false };
1535 static const bool isBC{ false };
1536 static const bool isSubsampled{ false };
1537 static const uint32_t bcWidth{ 1 };
1538 static const uint32_t bcHeight{ 1 };
1539
1540 typedef Transpose8_8_8_8 TransposeT;
1541 typedef Format4<8, 8, 8, 8> FormatT;
1542 };
1543
1544 //////////////////////////////////////////////////////////////////////////
1545 /// FormatTraits<B8G8R8X8_UNORM_SRGB> - Format traits specialization for B8G8R8X8_UNORM_SRGB
1546 //////////////////////////////////////////////////////////////////////////
1547 template<> struct FormatTraits<B8G8R8X8_UNORM_SRGB> :
1548 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
1549 FormatSwizzle<2, 1, 0, 3>,
1550 Defaults<0, 0, 0, 0x3f800000>
1551 {
1552 static const uint32_t bpp{ 32 };
1553 static const uint32_t numComps{ 3 };
1554 static const bool hasAlpha{ false };
1555 static const uint32_t alphaComp{ 0 };
1556 static const bool isSRGB{ true };
1557 static const bool isBC{ false };
1558 static const bool isSubsampled{ false };
1559 static const uint32_t bcWidth{ 1 };
1560 static const uint32_t bcHeight{ 1 };
1561
1562 typedef Transpose8_8_8_8 TransposeT;
1563 typedef Format4<8, 8, 8, 8> FormatT;
1564 };
1565
1566 //////////////////////////////////////////////////////////////////////////
1567 /// FormatTraits<R8G8B8X8_UNORM> - Format traits specialization for R8G8B8X8_UNORM
1568 //////////////////////////////////////////////////////////////////////////
1569 template<> struct FormatTraits<R8G8B8X8_UNORM> :
1570 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
1571 FormatSwizzle<0, 1, 2, 3>,
1572 Defaults<0, 0, 0, 0x3f800000>
1573 {
1574 static const uint32_t bpp{ 32 };
1575 static const uint32_t numComps{ 3 };
1576 static const bool hasAlpha{ false };
1577 static const uint32_t alphaComp{ 0 };
1578 static const bool isSRGB{ false };
1579 static const bool isBC{ false };
1580 static const bool isSubsampled{ false };
1581 static const uint32_t bcWidth{ 1 };
1582 static const uint32_t bcHeight{ 1 };
1583
1584 typedef Transpose8_8_8_8 TransposeT;
1585 typedef Format4<8, 8, 8, 8> FormatT;
1586 };
1587
1588 //////////////////////////////////////////////////////////////////////////
1589 /// FormatTraits<R8G8B8X8_UNORM_SRGB> - Format traits specialization for R8G8B8X8_UNORM_SRGB
1590 //////////////////////////////////////////////////////////////////////////
1591 template<> struct FormatTraits<R8G8B8X8_UNORM_SRGB> :
1592 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNUSED, 8>,
1593 FormatSwizzle<0, 1, 2, 3>,
1594 Defaults<0, 0, 0, 0x3f800000>
1595 {
1596 static const uint32_t bpp{ 32 };
1597 static const uint32_t numComps{ 3 };
1598 static const bool hasAlpha{ false };
1599 static const uint32_t alphaComp{ 0 };
1600 static const bool isSRGB{ true };
1601 static const bool isBC{ false };
1602 static const bool isSubsampled{ false };
1603 static const uint32_t bcWidth{ 1 };
1604 static const uint32_t bcHeight{ 1 };
1605
1606 typedef Transpose8_8_8_8 TransposeT;
1607 typedef Format4<8, 8, 8, 8> FormatT;
1608 };
1609
1610 //////////////////////////////////////////////////////////////////////////
1611 /// FormatTraits<R9G9B9E5_SHAREDEXP> - Format traits specialization for R9G9B9E5_SHAREDEXP
1612 //////////////////////////////////////////////////////////////////////////
1613 template<> struct FormatTraits<R9G9B9E5_SHAREDEXP> :
1614 ComponentTraits<SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 9, SWR_TYPE_UINT, 5>,
1615 FormatSwizzle<0, 1, 2, 3>,
1616 Defaults<0, 0, 0, 0x1>
1617 {
1618 static const uint32_t bpp{ 32 };
1619 static const uint32_t numComps{ 4 };
1620 static const bool hasAlpha{ false };
1621 static const uint32_t alphaComp{ 3 };
1622 static const bool isSRGB{ false };
1623 static const bool isBC{ false };
1624 static const bool isSubsampled{ false };
1625 static const uint32_t bcWidth{ 1 };
1626 static const uint32_t bcHeight{ 1 };
1627
1628 typedef Transpose9_9_9_5 TransposeT;
1629 typedef Format4<9, 9, 9, 5> FormatT;
1630 };
1631
1632 //////////////////////////////////////////////////////////////////////////
1633 /// FormatTraits<B10G10R10X2_UNORM> - Format traits specialization for B10G10R10X2_UNORM
1634 //////////////////////////////////////////////////////////////////////////
1635 template<> struct FormatTraits<B10G10R10X2_UNORM> :
1636 ComponentTraits<SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNORM, 10, SWR_TYPE_UNUSED, 2>,
1637 FormatSwizzle<2, 1, 0, 3>,
1638 Defaults<0, 0, 0, 0x3f800000>
1639 {
1640 static const uint32_t bpp{ 32 };
1641 static const uint32_t numComps{ 3 };
1642 static const bool hasAlpha{ false };
1643 static const uint32_t alphaComp{ 0 };
1644 static const bool isSRGB{ false };
1645 static const bool isBC{ false };
1646 static const bool isSubsampled{ false };
1647 static const uint32_t bcWidth{ 1 };
1648 static const uint32_t bcHeight{ 1 };
1649
1650 typedef Transpose10_10_10_2 TransposeT;
1651 typedef Format4<10, 10, 10, 2> FormatT;
1652 };
1653
1654 //////////////////////////////////////////////////////////////////////////
1655 /// FormatTraits<L16A16_FLOAT> - Format traits specialization for L16A16_FLOAT
1656 //////////////////////////////////////////////////////////////////////////
1657 template<> struct FormatTraits<L16A16_FLOAT> :
1658 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
1659 FormatSwizzle<0, 3>,
1660 Defaults<0, 0, 0, 0x3f800000>
1661 {
1662 static const uint32_t bpp{ 32 };
1663 static const uint32_t numComps{ 2 };
1664 static const bool hasAlpha{ true };
1665 static const uint32_t alphaComp{ 1 };
1666 static const bool isSRGB{ false };
1667 static const bool isBC{ false };
1668 static const bool isSubsampled{ false };
1669 static const uint32_t bcWidth{ 1 };
1670 static const uint32_t bcHeight{ 1 };
1671
1672 typedef Transpose16_16 TransposeT;
1673 typedef Format2<16, 16> FormatT;
1674 };
1675
1676 //////////////////////////////////////////////////////////////////////////
1677 /// FormatTraits<R10G10B10X2_USCALED> - Format traits specialization for R10G10B10X2_USCALED
1678 //////////////////////////////////////////////////////////////////////////
1679 template<> struct FormatTraits<R10G10B10X2_USCALED> :
1680 ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_UNUSED, 2>,
1681 FormatSwizzle<0, 1, 2, 3>,
1682 Defaults<0, 0, 0, 0x3f800000>
1683 {
1684 static const uint32_t bpp{ 32 };
1685 static const uint32_t numComps{ 3 };
1686 static const bool hasAlpha{ false };
1687 static const uint32_t alphaComp{ 0 };
1688 static const bool isSRGB{ false };
1689 static const bool isBC{ false };
1690 static const bool isSubsampled{ false };
1691 static const uint32_t bcWidth{ 1 };
1692 static const uint32_t bcHeight{ 1 };
1693
1694 typedef Transpose10_10_10_2 TransposeT;
1695 typedef Format4<10, 10, 10, 2> FormatT;
1696 };
1697
1698 //////////////////////////////////////////////////////////////////////////
1699 /// FormatTraits<R8G8B8A8_SSCALED> - Format traits specialization for R8G8B8A8_SSCALED
1700 //////////////////////////////////////////////////////////////////////////
1701 template<> struct FormatTraits<R8G8B8A8_SSCALED> :
1702 ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>,
1703 FormatSwizzle<0, 1, 2, 3>,
1704 Defaults<0, 0, 0, 0x3f800000>
1705 {
1706 static const uint32_t bpp{ 32 };
1707 static const uint32_t numComps{ 4 };
1708 static const bool hasAlpha{ true };
1709 static const uint32_t alphaComp{ 3 };
1710 static const bool isSRGB{ false };
1711 static const bool isBC{ false };
1712 static const bool isSubsampled{ false };
1713 static const uint32_t bcWidth{ 1 };
1714 static const uint32_t bcHeight{ 1 };
1715
1716 typedef Transpose8_8_8_8 TransposeT;
1717 typedef Format4<8, 8, 8, 8> FormatT;
1718 };
1719
1720 //////////////////////////////////////////////////////////////////////////
1721 /// FormatTraits<R8G8B8A8_USCALED> - Format traits specialization for R8G8B8A8_USCALED
1722 //////////////////////////////////////////////////////////////////////////
1723 template<> struct FormatTraits<R8G8B8A8_USCALED> :
1724 ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>,
1725 FormatSwizzle<0, 1, 2, 3>,
1726 Defaults<0, 0, 0, 0x3f800000>
1727 {
1728 static const uint32_t bpp{ 32 };
1729 static const uint32_t numComps{ 4 };
1730 static const bool hasAlpha{ true };
1731 static const uint32_t alphaComp{ 3 };
1732 static const bool isSRGB{ false };
1733 static const bool isBC{ false };
1734 static const bool isSubsampled{ false };
1735 static const uint32_t bcWidth{ 1 };
1736 static const uint32_t bcHeight{ 1 };
1737
1738 typedef Transpose8_8_8_8 TransposeT;
1739 typedef Format4<8, 8, 8, 8> FormatT;
1740 };
1741
1742 //////////////////////////////////////////////////////////////////////////
1743 /// FormatTraits<R16G16_SSCALED> - Format traits specialization for R16G16_SSCALED
1744 //////////////////////////////////////////////////////////////////////////
1745 template<> struct FormatTraits<R16G16_SSCALED> :
1746 ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>,
1747 FormatSwizzle<0, 1>,
1748 Defaults<0, 0, 0, 0x3f800000>
1749 {
1750 static const uint32_t bpp{ 32 };
1751 static const uint32_t numComps{ 2 };
1752 static const bool hasAlpha{ false };
1753 static const uint32_t alphaComp{ 0 };
1754 static const bool isSRGB{ false };
1755 static const bool isBC{ false };
1756 static const bool isSubsampled{ false };
1757 static const uint32_t bcWidth{ 1 };
1758 static const uint32_t bcHeight{ 1 };
1759
1760 typedef Transpose16_16 TransposeT;
1761 typedef Format2<16, 16> FormatT;
1762 };
1763
1764 //////////////////////////////////////////////////////////////////////////
1765 /// FormatTraits<R16G16_USCALED> - Format traits specialization for R16G16_USCALED
1766 //////////////////////////////////////////////////////////////////////////
1767 template<> struct FormatTraits<R16G16_USCALED> :
1768 ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>,
1769 FormatSwizzle<0, 1>,
1770 Defaults<0, 0, 0, 0x3f800000>
1771 {
1772 static const uint32_t bpp{ 32 };
1773 static const uint32_t numComps{ 2 };
1774 static const bool hasAlpha{ false };
1775 static const uint32_t alphaComp{ 0 };
1776 static const bool isSRGB{ false };
1777 static const bool isBC{ false };
1778 static const bool isSubsampled{ false };
1779 static const uint32_t bcWidth{ 1 };
1780 static const uint32_t bcHeight{ 1 };
1781
1782 typedef Transpose16_16 TransposeT;
1783 typedef Format2<16, 16> FormatT;
1784 };
1785
1786 //////////////////////////////////////////////////////////////////////////
1787 /// FormatTraits<R32_SSCALED> - Format traits specialization for R32_SSCALED
1788 //////////////////////////////////////////////////////////////////////////
1789 template<> struct FormatTraits<R32_SSCALED> :
1790 ComponentTraits<SWR_TYPE_SSCALED, 32>,
1791 FormatSwizzle<0>,
1792 Defaults<0, 0, 0, 0x3f800000>
1793 {
1794 static const uint32_t bpp{ 32 };
1795 static const uint32_t numComps{ 1 };
1796 static const bool hasAlpha{ false };
1797 static const uint32_t alphaComp{ 0 };
1798 static const bool isSRGB{ false };
1799 static const bool isBC{ false };
1800 static const bool isSubsampled{ false };
1801 static const uint32_t bcWidth{ 1 };
1802 static const uint32_t bcHeight{ 1 };
1803
1804 typedef TransposeSingleComponent<32> TransposeT;
1805 typedef Format1<32> FormatT;
1806 };
1807
1808 //////////////////////////////////////////////////////////////////////////
1809 /// FormatTraits<R32_USCALED> - Format traits specialization for R32_USCALED
1810 //////////////////////////////////////////////////////////////////////////
1811 template<> struct FormatTraits<R32_USCALED> :
1812 ComponentTraits<SWR_TYPE_USCALED, 32>,
1813 FormatSwizzle<0>,
1814 Defaults<0, 0, 0, 0x3f800000>
1815 {
1816 static const uint32_t bpp{ 32 };
1817 static const uint32_t numComps{ 1 };
1818 static const bool hasAlpha{ false };
1819 static const uint32_t alphaComp{ 0 };
1820 static const bool isSRGB{ false };
1821 static const bool isBC{ false };
1822 static const bool isSubsampled{ false };
1823 static const uint32_t bcWidth{ 1 };
1824 static const uint32_t bcHeight{ 1 };
1825
1826 typedef TransposeSingleComponent<32> TransposeT;
1827 typedef Format1<32> FormatT;
1828 };
1829
1830 //////////////////////////////////////////////////////////////////////////
1831 /// FormatTraits<B5G6R5_UNORM> - Format traits specialization for B5G6R5_UNORM
1832 //////////////////////////////////////////////////////////////////////////
1833 template<> struct FormatTraits<B5G6R5_UNORM> :
1834 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 6, SWR_TYPE_UNORM, 5>,
1835 FormatSwizzle<2, 1, 0>,
1836 Defaults<0, 0, 0, 0x3f800000>
1837 {
1838 static const uint32_t bpp{ 16 };
1839 static const uint32_t numComps{ 3 };
1840 static const bool hasAlpha{ false };
1841 static const uint32_t alphaComp{ 0 };
1842 static const bool isSRGB{ false };
1843 static const bool isBC{ false };
1844 static const bool isSubsampled{ false };
1845 static const uint32_t bcWidth{ 1 };
1846 static const uint32_t bcHeight{ 1 };
1847
1848 typedef Transpose5_6_5 TransposeT;
1849 typedef Format3<5, 6, 5> FormatT;
1850 };
1851
1852 //////////////////////////////////////////////////////////////////////////
1853 /// FormatTraits<B5G6R5_UNORM_SRGB> - Format traits specialization for B5G6R5_UNORM_SRGB
1854 //////////////////////////////////////////////////////////////////////////
1855 template<> struct FormatTraits<B5G6R5_UNORM_SRGB> :
1856 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 6, SWR_TYPE_UNORM, 5>,
1857 FormatSwizzle<2, 1, 0>,
1858 Defaults<0, 0, 0, 0x3f800000>
1859 {
1860 static const uint32_t bpp{ 16 };
1861 static const uint32_t numComps{ 3 };
1862 static const bool hasAlpha{ false };
1863 static const uint32_t alphaComp{ 0 };
1864 static const bool isSRGB{ true };
1865 static const bool isBC{ false };
1866 static const bool isSubsampled{ false };
1867 static const uint32_t bcWidth{ 1 };
1868 static const uint32_t bcHeight{ 1 };
1869
1870 typedef Transpose5_6_5 TransposeT;
1871 typedef Format3<5, 6, 5> FormatT;
1872 };
1873
1874 //////////////////////////////////////////////////////////////////////////
1875 /// FormatTraits<B5G5R5A1_UNORM> - Format traits specialization for B5G5R5A1_UNORM
1876 //////////////////////////////////////////////////////////////////////////
1877 template<> struct FormatTraits<B5G5R5A1_UNORM> :
1878 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 1>,
1879 FormatSwizzle<2, 1, 0, 3>,
1880 Defaults<0, 0, 0, 0x3f800000>
1881 {
1882 static const uint32_t bpp{ 16 };
1883 static const uint32_t numComps{ 4 };
1884 static const bool hasAlpha{ true };
1885 static const uint32_t alphaComp{ 3 };
1886 static const bool isSRGB{ false };
1887 static const bool isBC{ false };
1888 static const bool isSubsampled{ false };
1889 static const uint32_t bcWidth{ 1 };
1890 static const uint32_t bcHeight{ 1 };
1891
1892 typedef Transpose5_5_5_1 TransposeT;
1893 typedef Format4<5, 5, 5, 1> FormatT;
1894 };
1895
1896 //////////////////////////////////////////////////////////////////////////
1897 /// FormatTraits<B5G5R5A1_UNORM_SRGB> - Format traits specialization for B5G5R5A1_UNORM_SRGB
1898 //////////////////////////////////////////////////////////////////////////
1899 template<> struct FormatTraits<B5G5R5A1_UNORM_SRGB> :
1900 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 1>,
1901 FormatSwizzle<2, 1, 0, 3>,
1902 Defaults<0, 0, 0, 0x3f800000>
1903 {
1904 static const uint32_t bpp{ 16 };
1905 static const uint32_t numComps{ 4 };
1906 static const bool hasAlpha{ true };
1907 static const uint32_t alphaComp{ 3 };
1908 static const bool isSRGB{ true };
1909 static const bool isBC{ false };
1910 static const bool isSubsampled{ false };
1911 static const uint32_t bcWidth{ 1 };
1912 static const uint32_t bcHeight{ 1 };
1913
1914 typedef Transpose5_5_5_1 TransposeT;
1915 typedef Format4<5, 5, 5, 1> FormatT;
1916 };
1917
1918 //////////////////////////////////////////////////////////////////////////
1919 /// FormatTraits<B4G4R4A4_UNORM> - Format traits specialization for B4G4R4A4_UNORM
1920 //////////////////////////////////////////////////////////////////////////
1921 template<> struct FormatTraits<B4G4R4A4_UNORM> :
1922 ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>,
1923 FormatSwizzle<2, 1, 0, 3>,
1924 Defaults<0, 0, 0, 0x3f800000>
1925 {
1926 static const uint32_t bpp{ 16 };
1927 static const uint32_t numComps{ 4 };
1928 static const bool hasAlpha{ true };
1929 static const uint32_t alphaComp{ 3 };
1930 static const bool isSRGB{ false };
1931 static const bool isBC{ false };
1932 static const bool isSubsampled{ false };
1933 static const uint32_t bcWidth{ 1 };
1934 static const uint32_t bcHeight{ 1 };
1935
1936 typedef Transpose4_4_4_4 TransposeT;
1937 typedef Format4<4, 4, 4, 4> FormatT;
1938 };
1939
1940 //////////////////////////////////////////////////////////////////////////
1941 /// FormatTraits<B4G4R4A4_UNORM_SRGB> - Format traits specialization for B4G4R4A4_UNORM_SRGB
1942 //////////////////////////////////////////////////////////////////////////
1943 template<> struct FormatTraits<B4G4R4A4_UNORM_SRGB> :
1944 ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>,
1945 FormatSwizzle<2, 1, 0, 3>,
1946 Defaults<0, 0, 0, 0x3f800000>
1947 {
1948 static const uint32_t bpp{ 16 };
1949 static const uint32_t numComps{ 4 };
1950 static const bool hasAlpha{ true };
1951 static const uint32_t alphaComp{ 3 };
1952 static const bool isSRGB{ true };
1953 static const bool isBC{ false };
1954 static const bool isSubsampled{ false };
1955 static const uint32_t bcWidth{ 1 };
1956 static const uint32_t bcHeight{ 1 };
1957
1958 typedef Transpose4_4_4_4 TransposeT;
1959 typedef Format4<4, 4, 4, 4> FormatT;
1960 };
1961
1962 //////////////////////////////////////////////////////////////////////////
1963 /// FormatTraits<R8G8_UNORM> - Format traits specialization for R8G8_UNORM
1964 //////////////////////////////////////////////////////////////////////////
1965 template<> struct FormatTraits<R8G8_UNORM> :
1966 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
1967 FormatSwizzle<0, 1>,
1968 Defaults<0, 0, 0, 0x3f800000>
1969 {
1970 static const uint32_t bpp{ 16 };
1971 static const uint32_t numComps{ 2 };
1972 static const bool hasAlpha{ false };
1973 static const uint32_t alphaComp{ 0 };
1974 static const bool isSRGB{ false };
1975 static const bool isBC{ false };
1976 static const bool isSubsampled{ false };
1977 static const uint32_t bcWidth{ 1 };
1978 static const uint32_t bcHeight{ 1 };
1979
1980 typedef Transpose8_8 TransposeT;
1981 typedef Format2<8, 8> FormatT;
1982 };
1983
1984 //////////////////////////////////////////////////////////////////////////
1985 /// FormatTraits<R8G8_SNORM> - Format traits specialization for R8G8_SNORM
1986 //////////////////////////////////////////////////////////////////////////
1987 template<> struct FormatTraits<R8G8_SNORM> :
1988 ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>,
1989 FormatSwizzle<0, 1>,
1990 Defaults<0, 0, 0, 0x3f800000>
1991 {
1992 static const uint32_t bpp{ 16 };
1993 static const uint32_t numComps{ 2 };
1994 static const bool hasAlpha{ false };
1995 static const uint32_t alphaComp{ 0 };
1996 static const bool isSRGB{ false };
1997 static const bool isBC{ false };
1998 static const bool isSubsampled{ false };
1999 static const uint32_t bcWidth{ 1 };
2000 static const uint32_t bcHeight{ 1 };
2001
2002 typedef Transpose8_8 TransposeT;
2003 typedef Format2<8, 8> FormatT;
2004 };
2005
2006 //////////////////////////////////////////////////////////////////////////
2007 /// FormatTraits<R8G8_SINT> - Format traits specialization for R8G8_SINT
2008 //////////////////////////////////////////////////////////////////////////
2009 template<> struct FormatTraits<R8G8_SINT> :
2010 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
2011 FormatSwizzle<0, 1>,
2012 Defaults<0, 0, 0, 0x1>
2013 {
2014 static const uint32_t bpp{ 16 };
2015 static const uint32_t numComps{ 2 };
2016 static const bool hasAlpha{ false };
2017 static const uint32_t alphaComp{ 0 };
2018 static const bool isSRGB{ false };
2019 static const bool isBC{ false };
2020 static const bool isSubsampled{ false };
2021 static const uint32_t bcWidth{ 1 };
2022 static const uint32_t bcHeight{ 1 };
2023
2024 typedef Transpose8_8 TransposeT;
2025 typedef Format2<8, 8> FormatT;
2026 };
2027
2028 //////////////////////////////////////////////////////////////////////////
2029 /// FormatTraits<R8G8_UINT> - Format traits specialization for R8G8_UINT
2030 //////////////////////////////////////////////////////////////////////////
2031 template<> struct FormatTraits<R8G8_UINT> :
2032 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
2033 FormatSwizzle<0, 1>,
2034 Defaults<0, 0, 0, 0x1>
2035 {
2036 static const uint32_t bpp{ 16 };
2037 static const uint32_t numComps{ 2 };
2038 static const bool hasAlpha{ false };
2039 static const uint32_t alphaComp{ 0 };
2040 static const bool isSRGB{ false };
2041 static const bool isBC{ false };
2042 static const bool isSubsampled{ false };
2043 static const uint32_t bcWidth{ 1 };
2044 static const uint32_t bcHeight{ 1 };
2045
2046 typedef Transpose8_8 TransposeT;
2047 typedef Format2<8, 8> FormatT;
2048 };
2049
2050 //////////////////////////////////////////////////////////////////////////
2051 /// FormatTraits<R16_UNORM> - Format traits specialization for R16_UNORM
2052 //////////////////////////////////////////////////////////////////////////
2053 template<> struct FormatTraits<R16_UNORM> :
2054 ComponentTraits<SWR_TYPE_UNORM, 16>,
2055 FormatSwizzle<0>,
2056 Defaults<0, 0, 0, 0x3f800000>
2057 {
2058 static const uint32_t bpp{ 16 };
2059 static const uint32_t numComps{ 1 };
2060 static const bool hasAlpha{ false };
2061 static const uint32_t alphaComp{ 0 };
2062 static const bool isSRGB{ false };
2063 static const bool isBC{ false };
2064 static const bool isSubsampled{ false };
2065 static const uint32_t bcWidth{ 1 };
2066 static const uint32_t bcHeight{ 1 };
2067
2068 typedef TransposeSingleComponent<16> TransposeT;
2069 typedef Format1<16> FormatT;
2070 };
2071
2072 //////////////////////////////////////////////////////////////////////////
2073 /// FormatTraits<R16_SNORM> - Format traits specialization for R16_SNORM
2074 //////////////////////////////////////////////////////////////////////////
2075 template<> struct FormatTraits<R16_SNORM> :
2076 ComponentTraits<SWR_TYPE_SNORM, 16>,
2077 FormatSwizzle<0>,
2078 Defaults<0, 0, 0, 0x3f800000>
2079 {
2080 static const uint32_t bpp{ 16 };
2081 static const uint32_t numComps{ 1 };
2082 static const bool hasAlpha{ false };
2083 static const uint32_t alphaComp{ 0 };
2084 static const bool isSRGB{ false };
2085 static const bool isBC{ false };
2086 static const bool isSubsampled{ false };
2087 static const uint32_t bcWidth{ 1 };
2088 static const uint32_t bcHeight{ 1 };
2089
2090 typedef TransposeSingleComponent<16> TransposeT;
2091 typedef Format1<16> FormatT;
2092 };
2093
2094 //////////////////////////////////////////////////////////////////////////
2095 /// FormatTraits<R16_SINT> - Format traits specialization for R16_SINT
2096 //////////////////////////////////////////////////////////////////////////
2097 template<> struct FormatTraits<R16_SINT> :
2098 ComponentTraits<SWR_TYPE_SINT, 16>,
2099 FormatSwizzle<0>,
2100 Defaults<0, 0, 0, 0x1>
2101 {
2102 static const uint32_t bpp{ 16 };
2103 static const uint32_t numComps{ 1 };
2104 static const bool hasAlpha{ false };
2105 static const uint32_t alphaComp{ 0 };
2106 static const bool isSRGB{ false };
2107 static const bool isBC{ false };
2108 static const bool isSubsampled{ false };
2109 static const uint32_t bcWidth{ 1 };
2110 static const uint32_t bcHeight{ 1 };
2111
2112 typedef TransposeSingleComponent<16> TransposeT;
2113 typedef Format1<16> FormatT;
2114 };
2115
2116 //////////////////////////////////////////////////////////////////////////
2117 /// FormatTraits<R16_UINT> - Format traits specialization for R16_UINT
2118 //////////////////////////////////////////////////////////////////////////
2119 template<> struct FormatTraits<R16_UINT> :
2120 ComponentTraits<SWR_TYPE_UINT, 16>,
2121 FormatSwizzle<0>,
2122 Defaults<0, 0, 0, 0x1>
2123 {
2124 static const uint32_t bpp{ 16 };
2125 static const uint32_t numComps{ 1 };
2126 static const bool hasAlpha{ false };
2127 static const uint32_t alphaComp{ 0 };
2128 static const bool isSRGB{ false };
2129 static const bool isBC{ false };
2130 static const bool isSubsampled{ false };
2131 static const uint32_t bcWidth{ 1 };
2132 static const uint32_t bcHeight{ 1 };
2133
2134 typedef TransposeSingleComponent<16> TransposeT;
2135 typedef Format1<16> FormatT;
2136 };
2137
2138 //////////////////////////////////////////////////////////////////////////
2139 /// FormatTraits<R16_FLOAT> - Format traits specialization for R16_FLOAT
2140 //////////////////////////////////////////////////////////////////////////
2141 template<> struct FormatTraits<R16_FLOAT> :
2142 ComponentTraits<SWR_TYPE_FLOAT, 16>,
2143 FormatSwizzle<0>,
2144 Defaults<0, 0, 0, 0x3f800000>
2145 {
2146 static const uint32_t bpp{ 16 };
2147 static const uint32_t numComps{ 1 };
2148 static const bool hasAlpha{ false };
2149 static const uint32_t alphaComp{ 0 };
2150 static const bool isSRGB{ false };
2151 static const bool isBC{ false };
2152 static const bool isSubsampled{ false };
2153 static const uint32_t bcWidth{ 1 };
2154 static const uint32_t bcHeight{ 1 };
2155
2156 typedef TransposeSingleComponent<16> TransposeT;
2157 typedef Format1<16> FormatT;
2158 };
2159
2160 //////////////////////////////////////////////////////////////////////////
2161 /// FormatTraits<I16_UNORM> - Format traits specialization for I16_UNORM
2162 //////////////////////////////////////////////////////////////////////////
2163 template<> struct FormatTraits<I16_UNORM> :
2164 ComponentTraits<SWR_TYPE_UNORM, 16>,
2165 FormatSwizzle<0>,
2166 Defaults<0, 0, 0, 0x3f800000>
2167 {
2168 static const uint32_t bpp{ 16 };
2169 static const uint32_t numComps{ 1 };
2170 static const bool hasAlpha{ false };
2171 static const uint32_t alphaComp{ 0 };
2172 static const bool isSRGB{ false };
2173 static const bool isBC{ false };
2174 static const bool isSubsampled{ false };
2175 static const uint32_t bcWidth{ 1 };
2176 static const uint32_t bcHeight{ 1 };
2177
2178 typedef TransposeSingleComponent<16> TransposeT;
2179 typedef Format1<16> FormatT;
2180 };
2181
2182 //////////////////////////////////////////////////////////////////////////
2183 /// FormatTraits<L16_UNORM> - Format traits specialization for L16_UNORM
2184 //////////////////////////////////////////////////////////////////////////
2185 template<> struct FormatTraits<L16_UNORM> :
2186 ComponentTraits<SWR_TYPE_UNORM, 16>,
2187 FormatSwizzle<0>,
2188 Defaults<0, 0, 0, 0x3f800000>
2189 {
2190 static const uint32_t bpp{ 16 };
2191 static const uint32_t numComps{ 1 };
2192 static const bool hasAlpha{ false };
2193 static const uint32_t alphaComp{ 0 };
2194 static const bool isSRGB{ false };
2195 static const bool isBC{ false };
2196 static const bool isSubsampled{ false };
2197 static const uint32_t bcWidth{ 1 };
2198 static const uint32_t bcHeight{ 1 };
2199
2200 typedef TransposeSingleComponent<16> TransposeT;
2201 typedef Format1<16> FormatT;
2202 };
2203
2204 //////////////////////////////////////////////////////////////////////////
2205 /// FormatTraits<A16_UNORM> - Format traits specialization for A16_UNORM
2206 //////////////////////////////////////////////////////////////////////////
2207 template<> struct FormatTraits<A16_UNORM> :
2208 ComponentTraits<SWR_TYPE_UNORM, 16>,
2209 FormatSwizzle<3>,
2210 Defaults<0, 0, 0, 0x3f800000>
2211 {
2212 static const uint32_t bpp{ 16 };
2213 static const uint32_t numComps{ 1 };
2214 static const bool hasAlpha{ true };
2215 static const uint32_t alphaComp{ 0 };
2216 static const bool isSRGB{ false };
2217 static const bool isBC{ false };
2218 static const bool isSubsampled{ false };
2219 static const uint32_t bcWidth{ 1 };
2220 static const uint32_t bcHeight{ 1 };
2221
2222 typedef TransposeSingleComponent<16> TransposeT;
2223 typedef Format1<16> FormatT;
2224 };
2225
2226 //////////////////////////////////////////////////////////////////////////
2227 /// FormatTraits<L8A8_UNORM> - Format traits specialization for L8A8_UNORM
2228 //////////////////////////////////////////////////////////////////////////
2229 template<> struct FormatTraits<L8A8_UNORM> :
2230 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
2231 FormatSwizzle<0, 3>,
2232 Defaults<0, 0, 0, 0x3f800000>
2233 {
2234 static const uint32_t bpp{ 16 };
2235 static const uint32_t numComps{ 2 };
2236 static const bool hasAlpha{ true };
2237 static const uint32_t alphaComp{ 1 };
2238 static const bool isSRGB{ false };
2239 static const bool isBC{ false };
2240 static const bool isSubsampled{ false };
2241 static const uint32_t bcWidth{ 1 };
2242 static const uint32_t bcHeight{ 1 };
2243
2244 typedef Transpose8_8 TransposeT;
2245 typedef Format2<8, 8> FormatT;
2246 };
2247
2248 //////////////////////////////////////////////////////////////////////////
2249 /// FormatTraits<I16_FLOAT> - Format traits specialization for I16_FLOAT
2250 //////////////////////////////////////////////////////////////////////////
2251 template<> struct FormatTraits<I16_FLOAT> :
2252 ComponentTraits<SWR_TYPE_FLOAT, 16>,
2253 FormatSwizzle<0>,
2254 Defaults<0, 0, 0, 0x3f800000>
2255 {
2256 static const uint32_t bpp{ 16 };
2257 static const uint32_t numComps{ 1 };
2258 static const bool hasAlpha{ false };
2259 static const uint32_t alphaComp{ 0 };
2260 static const bool isSRGB{ false };
2261 static const bool isBC{ false };
2262 static const bool isSubsampled{ false };
2263 static const uint32_t bcWidth{ 1 };
2264 static const uint32_t bcHeight{ 1 };
2265
2266 typedef TransposeSingleComponent<16> TransposeT;
2267 typedef Format1<16> FormatT;
2268 };
2269
2270 //////////////////////////////////////////////////////////////////////////
2271 /// FormatTraits<L16_FLOAT> - Format traits specialization for L16_FLOAT
2272 //////////////////////////////////////////////////////////////////////////
2273 template<> struct FormatTraits<L16_FLOAT> :
2274 ComponentTraits<SWR_TYPE_FLOAT, 16>,
2275 FormatSwizzle<0>,
2276 Defaults<0, 0, 0, 0x3f800000>
2277 {
2278 static const uint32_t bpp{ 16 };
2279 static const uint32_t numComps{ 1 };
2280 static const bool hasAlpha{ false };
2281 static const uint32_t alphaComp{ 0 };
2282 static const bool isSRGB{ false };
2283 static const bool isBC{ false };
2284 static const bool isSubsampled{ false };
2285 static const uint32_t bcWidth{ 1 };
2286 static const uint32_t bcHeight{ 1 };
2287
2288 typedef TransposeSingleComponent<16> TransposeT;
2289 typedef Format1<16> FormatT;
2290 };
2291
2292 //////////////////////////////////////////////////////////////////////////
2293 /// FormatTraits<A16_FLOAT> - Format traits specialization for A16_FLOAT
2294 //////////////////////////////////////////////////////////////////////////
2295 template<> struct FormatTraits<A16_FLOAT> :
2296 ComponentTraits<SWR_TYPE_FLOAT, 16>,
2297 FormatSwizzle<3>,
2298 Defaults<0, 0, 0, 0x3f800000>
2299 {
2300 static const uint32_t bpp{ 16 };
2301 static const uint32_t numComps{ 1 };
2302 static const bool hasAlpha{ true };
2303 static const uint32_t alphaComp{ 0 };
2304 static const bool isSRGB{ false };
2305 static const bool isBC{ false };
2306 static const bool isSubsampled{ false };
2307 static const uint32_t bcWidth{ 1 };
2308 static const uint32_t bcHeight{ 1 };
2309
2310 typedef TransposeSingleComponent<16> TransposeT;
2311 typedef Format1<16> FormatT;
2312 };
2313
2314 //////////////////////////////////////////////////////////////////////////
2315 /// FormatTraits<L8A8_UNORM_SRGB> - Format traits specialization for L8A8_UNORM_SRGB
2316 //////////////////////////////////////////////////////////////////////////
2317 template<> struct FormatTraits<L8A8_UNORM_SRGB> :
2318 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
2319 FormatSwizzle<0, 3>,
2320 Defaults<0, 0, 0, 0x3f800000>
2321 {
2322 static const uint32_t bpp{ 16 };
2323 static const uint32_t numComps{ 2 };
2324 static const bool hasAlpha{ true };
2325 static const uint32_t alphaComp{ 1 };
2326 static const bool isSRGB{ true };
2327 static const bool isBC{ false };
2328 static const bool isSubsampled{ false };
2329 static const uint32_t bcWidth{ 1 };
2330 static const uint32_t bcHeight{ 1 };
2331
2332 typedef Transpose8_8 TransposeT;
2333 typedef Format2<8, 8> FormatT;
2334 };
2335
2336 //////////////////////////////////////////////////////////////////////////
2337 /// FormatTraits<B5G5R5X1_UNORM> - Format traits specialization for B5G5R5X1_UNORM
2338 //////////////////////////////////////////////////////////////////////////
2339 template<> struct FormatTraits<B5G5R5X1_UNORM> :
2340 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNUSED, 1>,
2341 FormatSwizzle<2, 1, 0, 3>,
2342 Defaults<0, 0, 0, 0x3f800000>
2343 {
2344 static const uint32_t bpp{ 16 };
2345 static const uint32_t numComps{ 3 };
2346 static const bool hasAlpha{ false };
2347 static const uint32_t alphaComp{ 0 };
2348 static const bool isSRGB{ false };
2349 static const bool isBC{ false };
2350 static const bool isSubsampled{ false };
2351 static const uint32_t bcWidth{ 1 };
2352 static const uint32_t bcHeight{ 1 };
2353
2354 typedef Transpose5_5_5_1 TransposeT;
2355 typedef Format4<5, 5, 5, 1> FormatT;
2356 };
2357
2358 //////////////////////////////////////////////////////////////////////////
2359 /// FormatTraits<B5G5R5X1_UNORM_SRGB> - Format traits specialization for B5G5R5X1_UNORM_SRGB
2360 //////////////////////////////////////////////////////////////////////////
2361 template<> struct FormatTraits<B5G5R5X1_UNORM_SRGB> :
2362 ComponentTraits<SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNUSED, 1>,
2363 FormatSwizzle<2, 1, 0, 3>,
2364 Defaults<0, 0, 0, 0x3f800000>
2365 {
2366 static const uint32_t bpp{ 16 };
2367 static const uint32_t numComps{ 3 };
2368 static const bool hasAlpha{ false };
2369 static const uint32_t alphaComp{ 0 };
2370 static const bool isSRGB{ true };
2371 static const bool isBC{ false };
2372 static const bool isSubsampled{ false };
2373 static const uint32_t bcWidth{ 1 };
2374 static const uint32_t bcHeight{ 1 };
2375
2376 typedef Transpose5_5_5_1 TransposeT;
2377 typedef Format4<5, 5, 5, 1> FormatT;
2378 };
2379
2380 //////////////////////////////////////////////////////////////////////////
2381 /// FormatTraits<R8G8_SSCALED> - Format traits specialization for R8G8_SSCALED
2382 //////////////////////////////////////////////////////////////////////////
2383 template<> struct FormatTraits<R8G8_SSCALED> :
2384 ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>,
2385 FormatSwizzle<0, 1>,
2386 Defaults<0, 0, 0, 0x3f800000>
2387 {
2388 static const uint32_t bpp{ 16 };
2389 static const uint32_t numComps{ 2 };
2390 static const bool hasAlpha{ false };
2391 static const uint32_t alphaComp{ 0 };
2392 static const bool isSRGB{ false };
2393 static const bool isBC{ false };
2394 static const bool isSubsampled{ false };
2395 static const uint32_t bcWidth{ 1 };
2396 static const uint32_t bcHeight{ 1 };
2397
2398 typedef Transpose8_8 TransposeT;
2399 typedef Format2<8, 8> FormatT;
2400 };
2401
2402 //////////////////////////////////////////////////////////////////////////
2403 /// FormatTraits<R8G8_USCALED> - Format traits specialization for R8G8_USCALED
2404 //////////////////////////////////////////////////////////////////////////
2405 template<> struct FormatTraits<R8G8_USCALED> :
2406 ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>,
2407 FormatSwizzle<0, 1>,
2408 Defaults<0, 0, 0, 0x3f800000>
2409 {
2410 static const uint32_t bpp{ 16 };
2411 static const uint32_t numComps{ 2 };
2412 static const bool hasAlpha{ false };
2413 static const uint32_t alphaComp{ 0 };
2414 static const bool isSRGB{ false };
2415 static const bool isBC{ false };
2416 static const bool isSubsampled{ false };
2417 static const uint32_t bcWidth{ 1 };
2418 static const uint32_t bcHeight{ 1 };
2419
2420 typedef Transpose8_8 TransposeT;
2421 typedef Format2<8, 8> FormatT;
2422 };
2423
2424 //////////////////////////////////////////////////////////////////////////
2425 /// FormatTraits<R16_SSCALED> - Format traits specialization for R16_SSCALED
2426 //////////////////////////////////////////////////////////////////////////
2427 template<> struct FormatTraits<R16_SSCALED> :
2428 ComponentTraits<SWR_TYPE_SSCALED, 16>,
2429 FormatSwizzle<0>,
2430 Defaults<0, 0, 0, 0x3f800000>
2431 {
2432 static const uint32_t bpp{ 16 };
2433 static const uint32_t numComps{ 1 };
2434 static const bool hasAlpha{ false };
2435 static const uint32_t alphaComp{ 0 };
2436 static const bool isSRGB{ false };
2437 static const bool isBC{ false };
2438 static const bool isSubsampled{ false };
2439 static const uint32_t bcWidth{ 1 };
2440 static const uint32_t bcHeight{ 1 };
2441
2442 typedef TransposeSingleComponent<16> TransposeT;
2443 typedef Format1<16> FormatT;
2444 };
2445
2446 //////////////////////////////////////////////////////////////////////////
2447 /// FormatTraits<R16_USCALED> - Format traits specialization for R16_USCALED
2448 //////////////////////////////////////////////////////////////////////////
2449 template<> struct FormatTraits<R16_USCALED> :
2450 ComponentTraits<SWR_TYPE_USCALED, 16>,
2451 FormatSwizzle<0>,
2452 Defaults<0, 0, 0, 0x3f800000>
2453 {
2454 static const uint32_t bpp{ 16 };
2455 static const uint32_t numComps{ 1 };
2456 static const bool hasAlpha{ false };
2457 static const uint32_t alphaComp{ 0 };
2458 static const bool isSRGB{ false };
2459 static const bool isBC{ false };
2460 static const bool isSubsampled{ false };
2461 static const uint32_t bcWidth{ 1 };
2462 static const uint32_t bcHeight{ 1 };
2463
2464 typedef TransposeSingleComponent<16> TransposeT;
2465 typedef Format1<16> FormatT;
2466 };
2467
2468 //////////////////////////////////////////////////////////////////////////
2469 /// FormatTraits<A1B5G5R5_UNORM> - Format traits specialization for A1B5G5R5_UNORM
2470 //////////////////////////////////////////////////////////////////////////
2471 template<> struct FormatTraits<A1B5G5R5_UNORM> :
2472 ComponentTraits<SWR_TYPE_UNORM, 1, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5, SWR_TYPE_UNORM, 5>,
2473 FormatSwizzle<3, 2, 1, 0>,
2474 Defaults<0, 0, 0, 0x3f800000>
2475 {
2476 static const uint32_t bpp{ 16 };
2477 static const uint32_t numComps{ 4 };
2478 static const bool hasAlpha{ true };
2479 static const uint32_t alphaComp{ 3 };
2480 static const bool isSRGB{ false };
2481 static const bool isBC{ false };
2482 static const bool isSubsampled{ false };
2483 static const uint32_t bcWidth{ 1 };
2484 static const uint32_t bcHeight{ 1 };
2485
2486 typedef Transpose1_5_5_5 TransposeT;
2487 typedef Format4<1, 5, 5, 5> FormatT;
2488 };
2489
2490 //////////////////////////////////////////////////////////////////////////
2491 /// FormatTraits<A4B4G4R4_UNORM> - Format traits specialization for A4B4G4R4_UNORM
2492 //////////////////////////////////////////////////////////////////////////
2493 template<> struct FormatTraits<A4B4G4R4_UNORM> :
2494 ComponentTraits<SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4, SWR_TYPE_UNORM, 4>,
2495 FormatSwizzle<3, 2, 1, 0>,
2496 Defaults<0, 0, 0, 0x3f800000>
2497 {
2498 static const uint32_t bpp{ 16 };
2499 static const uint32_t numComps{ 4 };
2500 static const bool hasAlpha{ true };
2501 static const uint32_t alphaComp{ 3 };
2502 static const bool isSRGB{ false };
2503 static const bool isBC{ false };
2504 static const bool isSubsampled{ false };
2505 static const uint32_t bcWidth{ 1 };
2506 static const uint32_t bcHeight{ 1 };
2507
2508 typedef Transpose4_4_4_4 TransposeT;
2509 typedef Format4<4, 4, 4, 4> FormatT;
2510 };
2511
2512 //////////////////////////////////////////////////////////////////////////
2513 /// FormatTraits<L8A8_UINT> - Format traits specialization for L8A8_UINT
2514 //////////////////////////////////////////////////////////////////////////
2515 template<> struct FormatTraits<L8A8_UINT> :
2516 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
2517 FormatSwizzle<0, 3>,
2518 Defaults<0, 0, 0, 0x1>
2519 {
2520 static const uint32_t bpp{ 16 };
2521 static const uint32_t numComps{ 2 };
2522 static const bool hasAlpha{ true };
2523 static const uint32_t alphaComp{ 1 };
2524 static const bool isSRGB{ false };
2525 static const bool isBC{ false };
2526 static const bool isSubsampled{ false };
2527 static const uint32_t bcWidth{ 1 };
2528 static const uint32_t bcHeight{ 1 };
2529
2530 typedef Transpose8_8 TransposeT;
2531 typedef Format2<8, 8> FormatT;
2532 };
2533
2534 //////////////////////////////////////////////////////////////////////////
2535 /// FormatTraits<L8A8_SINT> - Format traits specialization for L8A8_SINT
2536 //////////////////////////////////////////////////////////////////////////
2537 template<> struct FormatTraits<L8A8_SINT> :
2538 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
2539 FormatSwizzle<0, 3>,
2540 Defaults<0, 0, 0, 0x1>
2541 {
2542 static const uint32_t bpp{ 16 };
2543 static const uint32_t numComps{ 2 };
2544 static const bool hasAlpha{ true };
2545 static const uint32_t alphaComp{ 1 };
2546 static const bool isSRGB{ false };
2547 static const bool isBC{ false };
2548 static const bool isSubsampled{ false };
2549 static const uint32_t bcWidth{ 1 };
2550 static const uint32_t bcHeight{ 1 };
2551
2552 typedef Transpose8_8 TransposeT;
2553 typedef Format2<8, 8> FormatT;
2554 };
2555
2556 //////////////////////////////////////////////////////////////////////////
2557 /// FormatTraits<R8_UNORM> - Format traits specialization for R8_UNORM
2558 //////////////////////////////////////////////////////////////////////////
2559 template<> struct FormatTraits<R8_UNORM> :
2560 ComponentTraits<SWR_TYPE_UNORM, 8>,
2561 FormatSwizzle<0>,
2562 Defaults<0, 0, 0, 0x3f800000>
2563 {
2564 static const uint32_t bpp{ 8 };
2565 static const uint32_t numComps{ 1 };
2566 static const bool hasAlpha{ false };
2567 static const uint32_t alphaComp{ 0 };
2568 static const bool isSRGB{ false };
2569 static const bool isBC{ false };
2570 static const bool isSubsampled{ false };
2571 static const uint32_t bcWidth{ 1 };
2572 static const uint32_t bcHeight{ 1 };
2573
2574 typedef TransposeSingleComponent<8> TransposeT;
2575 typedef Format1<8> FormatT;
2576 };
2577
2578 //////////////////////////////////////////////////////////////////////////
2579 /// FormatTraits<R8_SNORM> - Format traits specialization for R8_SNORM
2580 //////////////////////////////////////////////////////////////////////////
2581 template<> struct FormatTraits<R8_SNORM> :
2582 ComponentTraits<SWR_TYPE_SNORM, 8>,
2583 FormatSwizzle<0>,
2584 Defaults<0, 0, 0, 0x3f800000>
2585 {
2586 static const uint32_t bpp{ 8 };
2587 static const uint32_t numComps{ 1 };
2588 static const bool hasAlpha{ false };
2589 static const uint32_t alphaComp{ 0 };
2590 static const bool isSRGB{ false };
2591 static const bool isBC{ false };
2592 static const bool isSubsampled{ false };
2593 static const uint32_t bcWidth{ 1 };
2594 static const uint32_t bcHeight{ 1 };
2595
2596 typedef TransposeSingleComponent<8> TransposeT;
2597 typedef Format1<8> FormatT;
2598 };
2599
2600 //////////////////////////////////////////////////////////////////////////
2601 /// FormatTraits<R8_SINT> - Format traits specialization for R8_SINT
2602 //////////////////////////////////////////////////////////////////////////
2603 template<> struct FormatTraits<R8_SINT> :
2604 ComponentTraits<SWR_TYPE_SINT, 8>,
2605 FormatSwizzle<0>,
2606 Defaults<0, 0, 0, 0x1>
2607 {
2608 static const uint32_t bpp{ 8 };
2609 static const uint32_t numComps{ 1 };
2610 static const bool hasAlpha{ false };
2611 static const uint32_t alphaComp{ 0 };
2612 static const bool isSRGB{ false };
2613 static const bool isBC{ false };
2614 static const bool isSubsampled{ false };
2615 static const uint32_t bcWidth{ 1 };
2616 static const uint32_t bcHeight{ 1 };
2617
2618 typedef TransposeSingleComponent<8> TransposeT;
2619 typedef Format1<8> FormatT;
2620 };
2621
2622 //////////////////////////////////////////////////////////////////////////
2623 /// FormatTraits<R8_UINT> - Format traits specialization for R8_UINT
2624 //////////////////////////////////////////////////////////////////////////
2625 template<> struct FormatTraits<R8_UINT> :
2626 ComponentTraits<SWR_TYPE_UINT, 8>,
2627 FormatSwizzle<0>,
2628 Defaults<0, 0, 0, 0x1>
2629 {
2630 static const uint32_t bpp{ 8 };
2631 static const uint32_t numComps{ 1 };
2632 static const bool hasAlpha{ false };
2633 static const uint32_t alphaComp{ 0 };
2634 static const bool isSRGB{ false };
2635 static const bool isBC{ false };
2636 static const bool isSubsampled{ false };
2637 static const uint32_t bcWidth{ 1 };
2638 static const uint32_t bcHeight{ 1 };
2639
2640 typedef TransposeSingleComponent<8> TransposeT;
2641 typedef Format1<8> FormatT;
2642 };
2643
2644 //////////////////////////////////////////////////////////////////////////
2645 /// FormatTraits<A8_UNORM> - Format traits specialization for A8_UNORM
2646 //////////////////////////////////////////////////////////////////////////
2647 template<> struct FormatTraits<A8_UNORM> :
2648 ComponentTraits<SWR_TYPE_UNORM, 8>,
2649 FormatSwizzle<3>,
2650 Defaults<0, 0, 0, 0x3f800000>
2651 {
2652 static const uint32_t bpp{ 8 };
2653 static const uint32_t numComps{ 1 };
2654 static const bool hasAlpha{ true };
2655 static const uint32_t alphaComp{ 0 };
2656 static const bool isSRGB{ false };
2657 static const bool isBC{ false };
2658 static const bool isSubsampled{ false };
2659 static const uint32_t bcWidth{ 1 };
2660 static const uint32_t bcHeight{ 1 };
2661
2662 typedef TransposeSingleComponent<8> TransposeT;
2663 typedef Format1<8> FormatT;
2664 };
2665
2666 //////////////////////////////////////////////////////////////////////////
2667 /// FormatTraits<I8_UNORM> - Format traits specialization for I8_UNORM
2668 //////////////////////////////////////////////////////////////////////////
2669 template<> struct FormatTraits<I8_UNORM> :
2670 ComponentTraits<SWR_TYPE_UNORM, 8>,
2671 FormatSwizzle<0>,
2672 Defaults<0, 0, 0, 0x3f800000>
2673 {
2674 static const uint32_t bpp{ 8 };
2675 static const uint32_t numComps{ 1 };
2676 static const bool hasAlpha{ false };
2677 static const uint32_t alphaComp{ 0 };
2678 static const bool isSRGB{ false };
2679 static const bool isBC{ false };
2680 static const bool isSubsampled{ false };
2681 static const uint32_t bcWidth{ 1 };
2682 static const uint32_t bcHeight{ 1 };
2683
2684 typedef TransposeSingleComponent<8> TransposeT;
2685 typedef Format1<8> FormatT;
2686 };
2687
2688 //////////////////////////////////////////////////////////////////////////
2689 /// FormatTraits<L8_UNORM> - Format traits specialization for L8_UNORM
2690 //////////////////////////////////////////////////////////////////////////
2691 template<> struct FormatTraits<L8_UNORM> :
2692 ComponentTraits<SWR_TYPE_UNORM, 8>,
2693 FormatSwizzle<0>,
2694 Defaults<0, 0, 0, 0x3f800000>
2695 {
2696 static const uint32_t bpp{ 8 };
2697 static const uint32_t numComps{ 1 };
2698 static const bool hasAlpha{ false };
2699 static const uint32_t alphaComp{ 0 };
2700 static const bool isSRGB{ false };
2701 static const bool isBC{ false };
2702 static const bool isSubsampled{ false };
2703 static const uint32_t bcWidth{ 1 };
2704 static const uint32_t bcHeight{ 1 };
2705
2706 typedef TransposeSingleComponent<8> TransposeT;
2707 typedef Format1<8> FormatT;
2708 };
2709
2710 //////////////////////////////////////////////////////////////////////////
2711 /// FormatTraits<R8_SSCALED> - Format traits specialization for R8_SSCALED
2712 //////////////////////////////////////////////////////////////////////////
2713 template<> struct FormatTraits<R8_SSCALED> :
2714 ComponentTraits<SWR_TYPE_SSCALED, 8>,
2715 FormatSwizzle<0>,
2716 Defaults<0, 0, 0, 0x3f800000>
2717 {
2718 static const uint32_t bpp{ 8 };
2719 static const uint32_t numComps{ 1 };
2720 static const bool hasAlpha{ false };
2721 static const uint32_t alphaComp{ 0 };
2722 static const bool isSRGB{ false };
2723 static const bool isBC{ false };
2724 static const bool isSubsampled{ false };
2725 static const uint32_t bcWidth{ 1 };
2726 static const uint32_t bcHeight{ 1 };
2727
2728 typedef TransposeSingleComponent<8> TransposeT;
2729 typedef Format1<8> FormatT;
2730 };
2731
2732 //////////////////////////////////////////////////////////////////////////
2733 /// FormatTraits<R8_USCALED> - Format traits specialization for R8_USCALED
2734 //////////////////////////////////////////////////////////////////////////
2735 template<> struct FormatTraits<R8_USCALED> :
2736 ComponentTraits<SWR_TYPE_USCALED, 8>,
2737 FormatSwizzle<0>,
2738 Defaults<0, 0, 0, 0x3f800000>
2739 {
2740 static const uint32_t bpp{ 8 };
2741 static const uint32_t numComps{ 1 };
2742 static const bool hasAlpha{ false };
2743 static const uint32_t alphaComp{ 0 };
2744 static const bool isSRGB{ false };
2745 static const bool isBC{ false };
2746 static const bool isSubsampled{ false };
2747 static const uint32_t bcWidth{ 1 };
2748 static const uint32_t bcHeight{ 1 };
2749
2750 typedef TransposeSingleComponent<8> TransposeT;
2751 typedef Format1<8> FormatT;
2752 };
2753
2754 //////////////////////////////////////////////////////////////////////////
2755 /// FormatTraits<L8_UNORM_SRGB> - Format traits specialization for L8_UNORM_SRGB
2756 //////////////////////////////////////////////////////////////////////////
2757 template<> struct FormatTraits<L8_UNORM_SRGB> :
2758 ComponentTraits<SWR_TYPE_UNORM, 8>,
2759 FormatSwizzle<0>,
2760 Defaults<0, 0, 0, 0x3f800000>
2761 {
2762 static const uint32_t bpp{ 8 };
2763 static const uint32_t numComps{ 1 };
2764 static const bool hasAlpha{ false };
2765 static const uint32_t alphaComp{ 0 };
2766 static const bool isSRGB{ true };
2767 static const bool isBC{ false };
2768 static const bool isSubsampled{ false };
2769 static const uint32_t bcWidth{ 1 };
2770 static const uint32_t bcHeight{ 1 };
2771
2772 typedef TransposeSingleComponent<8> TransposeT;
2773 typedef Format1<8> FormatT;
2774 };
2775
2776 //////////////////////////////////////////////////////////////////////////
2777 /// FormatTraits<L8_UINT> - Format traits specialization for L8_UINT
2778 //////////////////////////////////////////////////////////////////////////
2779 template<> struct FormatTraits<L8_UINT> :
2780 ComponentTraits<SWR_TYPE_UINT, 8>,
2781 FormatSwizzle<0>,
2782 Defaults<0, 0, 0, 0x1>
2783 {
2784 static const uint32_t bpp{ 8 };
2785 static const uint32_t numComps{ 1 };
2786 static const bool hasAlpha{ false };
2787 static const uint32_t alphaComp{ 0 };
2788 static const bool isSRGB{ false };
2789 static const bool isBC{ false };
2790 static const bool isSubsampled{ false };
2791 static const uint32_t bcWidth{ 1 };
2792 static const uint32_t bcHeight{ 1 };
2793
2794 typedef TransposeSingleComponent<8> TransposeT;
2795 typedef Format1<8> FormatT;
2796 };
2797
2798 //////////////////////////////////////////////////////////////////////////
2799 /// FormatTraits<L8_SINT> - Format traits specialization for L8_SINT
2800 //////////////////////////////////////////////////////////////////////////
2801 template<> struct FormatTraits<L8_SINT> :
2802 ComponentTraits<SWR_TYPE_SINT, 8>,
2803 FormatSwizzle<0>,
2804 Defaults<0, 0, 0, 0x1>
2805 {
2806 static const uint32_t bpp{ 8 };
2807 static const uint32_t numComps{ 1 };
2808 static const bool hasAlpha{ false };
2809 static const uint32_t alphaComp{ 0 };
2810 static const bool isSRGB{ false };
2811 static const bool isBC{ false };
2812 static const bool isSubsampled{ false };
2813 static const uint32_t bcWidth{ 1 };
2814 static const uint32_t bcHeight{ 1 };
2815
2816 typedef TransposeSingleComponent<8> TransposeT;
2817 typedef Format1<8> FormatT;
2818 };
2819
2820 //////////////////////////////////////////////////////////////////////////
2821 /// FormatTraits<I8_UINT> - Format traits specialization for I8_UINT
2822 //////////////////////////////////////////////////////////////////////////
2823 template<> struct FormatTraits<I8_UINT> :
2824 ComponentTraits<SWR_TYPE_UINT, 8>,
2825 FormatSwizzle<0>,
2826 Defaults<0, 0, 0, 0x1>
2827 {
2828 static const uint32_t bpp{ 8 };
2829 static const uint32_t numComps{ 1 };
2830 static const bool hasAlpha{ false };
2831 static const uint32_t alphaComp{ 0 };
2832 static const bool isSRGB{ false };
2833 static const bool isBC{ false };
2834 static const bool isSubsampled{ false };
2835 static const uint32_t bcWidth{ 1 };
2836 static const uint32_t bcHeight{ 1 };
2837
2838 typedef TransposeSingleComponent<8> TransposeT;
2839 typedef Format1<8> FormatT;
2840 };
2841
2842 //////////////////////////////////////////////////////////////////////////
2843 /// FormatTraits<I8_SINT> - Format traits specialization for I8_SINT
2844 //////////////////////////////////////////////////////////////////////////
2845 template<> struct FormatTraits<I8_SINT> :
2846 ComponentTraits<SWR_TYPE_SINT, 8>,
2847 FormatSwizzle<0>,
2848 Defaults<0, 0, 0, 0x1>
2849 {
2850 static const uint32_t bpp{ 8 };
2851 static const uint32_t numComps{ 1 };
2852 static const bool hasAlpha{ false };
2853 static const uint32_t alphaComp{ 0 };
2854 static const bool isSRGB{ false };
2855 static const bool isBC{ false };
2856 static const bool isSubsampled{ false };
2857 static const uint32_t bcWidth{ 1 };
2858 static const uint32_t bcHeight{ 1 };
2859
2860 typedef TransposeSingleComponent<8> TransposeT;
2861 typedef Format1<8> FormatT;
2862 };
2863
2864 //////////////////////////////////////////////////////////////////////////
2865 /// FormatTraits<DXT1_RGB_SRGB> - Format traits specialization for DXT1_RGB_SRGB
2866 //////////////////////////////////////////////////////////////////////////
2867 template<> struct FormatTraits<DXT1_RGB_SRGB> :
2868 ComponentTraits<SWR_TYPE_UNORM, 8>,
2869 FormatSwizzle<0>,
2870 Defaults<0, 0, 0, 0x3f800000>
2871 {
2872 static const uint32_t bpp{ 64 };
2873 static const uint32_t numComps{ 1 };
2874 static const bool hasAlpha{ true };
2875 static const uint32_t alphaComp{ 3 };
2876 static const bool isSRGB{ false };
2877 static const bool isBC{ true };
2878 static const bool isSubsampled{ false };
2879 static const uint32_t bcWidth{ 4 };
2880 static const uint32_t bcHeight{ 4 };
2881
2882 typedef TransposeSingleComponent<8> TransposeT;
2883 typedef Format1<8> FormatT;
2884 };
2885
2886 //////////////////////////////////////////////////////////////////////////
2887 /// FormatTraits<YCRCB_SWAPUVY> - Format traits specialization for YCRCB_SWAPUVY
2888 //////////////////////////////////////////////////////////////////////////
2889 template<> struct FormatTraits<YCRCB_SWAPUVY> :
2890 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
2891 FormatSwizzle<0, 1, 2, 3>,
2892 Defaults<0, 0, 0, 0x1>
2893 {
2894 static const uint32_t bpp{ 32 };
2895 static const uint32_t numComps{ 4 };
2896 static const bool hasAlpha{ false };
2897 static const uint32_t alphaComp{ 3 };
2898 static const bool isSRGB{ false };
2899 static const bool isBC{ false };
2900 static const bool isSubsampled{ true };
2901 static const uint32_t bcWidth{ 2 };
2902 static const uint32_t bcHeight{ 1 };
2903
2904 typedef Transpose8_8_8_8 TransposeT;
2905 typedef Format4<8, 8, 8, 8> FormatT;
2906 };
2907
2908 //////////////////////////////////////////////////////////////////////////
2909 /// FormatTraits<BC1_UNORM> - Format traits specialization for BC1_UNORM
2910 //////////////////////////////////////////////////////////////////////////
2911 template<> struct FormatTraits<BC1_UNORM> :
2912 ComponentTraits<SWR_TYPE_UNORM, 8>,
2913 FormatSwizzle<0>,
2914 Defaults<0, 0, 0, 0x3f800000>
2915 {
2916 static const uint32_t bpp{ 64 };
2917 static const uint32_t numComps{ 1 };
2918 static const bool hasAlpha{ true };
2919 static const uint32_t alphaComp{ 3 };
2920 static const bool isSRGB{ false };
2921 static const bool isBC{ true };
2922 static const bool isSubsampled{ false };
2923 static const uint32_t bcWidth{ 4 };
2924 static const uint32_t bcHeight{ 4 };
2925
2926 typedef TransposeSingleComponent<8> TransposeT;
2927 typedef Format1<8> FormatT;
2928 };
2929
2930 //////////////////////////////////////////////////////////////////////////
2931 /// FormatTraits<BC2_UNORM> - Format traits specialization for BC2_UNORM
2932 //////////////////////////////////////////////////////////////////////////
2933 template<> struct FormatTraits<BC2_UNORM> :
2934 ComponentTraits<SWR_TYPE_UNORM, 8>,
2935 FormatSwizzle<0>,
2936 Defaults<0, 0, 0, 0x3f800000>
2937 {
2938 static const uint32_t bpp{ 128 };
2939 static const uint32_t numComps{ 1 };
2940 static const bool hasAlpha{ true };
2941 static const uint32_t alphaComp{ 3 };
2942 static const bool isSRGB{ false };
2943 static const bool isBC{ true };
2944 static const bool isSubsampled{ false };
2945 static const uint32_t bcWidth{ 4 };
2946 static const uint32_t bcHeight{ 4 };
2947
2948 typedef TransposeSingleComponent<8> TransposeT;
2949 typedef Format1<8> FormatT;
2950 };
2951
2952 //////////////////////////////////////////////////////////////////////////
2953 /// FormatTraits<BC3_UNORM> - Format traits specialization for BC3_UNORM
2954 //////////////////////////////////////////////////////////////////////////
2955 template<> struct FormatTraits<BC3_UNORM> :
2956 ComponentTraits<SWR_TYPE_UNORM, 8>,
2957 FormatSwizzle<0>,
2958 Defaults<0, 0, 0, 0x3f800000>
2959 {
2960 static const uint32_t bpp{ 128 };
2961 static const uint32_t numComps{ 1 };
2962 static const bool hasAlpha{ true };
2963 static const uint32_t alphaComp{ 3 };
2964 static const bool isSRGB{ false };
2965 static const bool isBC{ true };
2966 static const bool isSubsampled{ false };
2967 static const uint32_t bcWidth{ 4 };
2968 static const uint32_t bcHeight{ 4 };
2969
2970 typedef TransposeSingleComponent<8> TransposeT;
2971 typedef Format1<8> FormatT;
2972 };
2973
2974 //////////////////////////////////////////////////////////////////////////
2975 /// FormatTraits<BC4_UNORM> - Format traits specialization for BC4_UNORM
2976 //////////////////////////////////////////////////////////////////////////
2977 template<> struct FormatTraits<BC4_UNORM> :
2978 ComponentTraits<SWR_TYPE_UNORM, 8>,
2979 FormatSwizzle<0>,
2980 Defaults<0, 0, 0, 0x3f800000>
2981 {
2982 static const uint32_t bpp{ 64 };
2983 static const uint32_t numComps{ 1 };
2984 static const bool hasAlpha{ true };
2985 static const uint32_t alphaComp{ 3 };
2986 static const bool isSRGB{ false };
2987 static const bool isBC{ true };
2988 static const bool isSubsampled{ false };
2989 static const uint32_t bcWidth{ 4 };
2990 static const uint32_t bcHeight{ 4 };
2991
2992 typedef TransposeSingleComponent<8> TransposeT;
2993 typedef Format1<8> FormatT;
2994 };
2995
2996 //////////////////////////////////////////////////////////////////////////
2997 /// FormatTraits<BC5_UNORM> - Format traits specialization for BC5_UNORM
2998 //////////////////////////////////////////////////////////////////////////
2999 template<> struct FormatTraits<BC5_UNORM> :
3000 ComponentTraits<SWR_TYPE_UNORM, 8>,
3001 FormatSwizzle<0>,
3002 Defaults<0, 0, 0, 0x3f800000>
3003 {
3004 static const uint32_t bpp{ 128 };
3005 static const uint32_t numComps{ 1 };
3006 static const bool hasAlpha{ true };
3007 static const uint32_t alphaComp{ 3 };
3008 static const bool isSRGB{ false };
3009 static const bool isBC{ true };
3010 static const bool isSubsampled{ false };
3011 static const uint32_t bcWidth{ 4 };
3012 static const uint32_t bcHeight{ 4 };
3013
3014 typedef TransposeSingleComponent<8> TransposeT;
3015 typedef Format1<8> FormatT;
3016 };
3017
3018 //////////////////////////////////////////////////////////////////////////
3019 /// FormatTraits<BC1_UNORM_SRGB> - Format traits specialization for BC1_UNORM_SRGB
3020 //////////////////////////////////////////////////////////////////////////
3021 template<> struct FormatTraits<BC1_UNORM_SRGB> :
3022 ComponentTraits<SWR_TYPE_UNORM, 8>,
3023 FormatSwizzle<0>,
3024 Defaults<0, 0, 0, 0x3f800000>
3025 {
3026 static const uint32_t bpp{ 64 };
3027 static const uint32_t numComps{ 1 };
3028 static const bool hasAlpha{ true };
3029 static const uint32_t alphaComp{ 3 };
3030 static const bool isSRGB{ true };
3031 static const bool isBC{ true };
3032 static const bool isSubsampled{ false };
3033 static const uint32_t bcWidth{ 4 };
3034 static const uint32_t bcHeight{ 4 };
3035
3036 typedef TransposeSingleComponent<8> TransposeT;
3037 typedef Format1<8> FormatT;
3038 };
3039
3040 //////////////////////////////////////////////////////////////////////////
3041 /// FormatTraits<BC2_UNORM_SRGB> - Format traits specialization for BC2_UNORM_SRGB
3042 //////////////////////////////////////////////////////////////////////////
3043 template<> struct FormatTraits<BC2_UNORM_SRGB> :
3044 ComponentTraits<SWR_TYPE_UNORM, 8>,
3045 FormatSwizzle<0>,
3046 Defaults<0, 0, 0, 0x3f800000>
3047 {
3048 static const uint32_t bpp{ 128 };
3049 static const uint32_t numComps{ 1 };
3050 static const bool hasAlpha{ true };
3051 static const uint32_t alphaComp{ 3 };
3052 static const bool isSRGB{ true };
3053 static const bool isBC{ true };
3054 static const bool isSubsampled{ false };
3055 static const uint32_t bcWidth{ 4 };
3056 static const uint32_t bcHeight{ 4 };
3057
3058 typedef TransposeSingleComponent<8> TransposeT;
3059 typedef Format1<8> FormatT;
3060 };
3061
3062 //////////////////////////////////////////////////////////////////////////
3063 /// FormatTraits<BC3_UNORM_SRGB> - Format traits specialization for BC3_UNORM_SRGB
3064 //////////////////////////////////////////////////////////////////////////
3065 template<> struct FormatTraits<BC3_UNORM_SRGB> :
3066 ComponentTraits<SWR_TYPE_UNORM, 8>,
3067 FormatSwizzle<0>,
3068 Defaults<0, 0, 0, 0x3f800000>
3069 {
3070 static const uint32_t bpp{ 128 };
3071 static const uint32_t numComps{ 1 };
3072 static const bool hasAlpha{ true };
3073 static const uint32_t alphaComp{ 3 };
3074 static const bool isSRGB{ true };
3075 static const bool isBC{ true };
3076 static const bool isSubsampled{ false };
3077 static const uint32_t bcWidth{ 4 };
3078 static const uint32_t bcHeight{ 4 };
3079
3080 typedef TransposeSingleComponent<8> TransposeT;
3081 typedef Format1<8> FormatT;
3082 };
3083
3084 //////////////////////////////////////////////////////////////////////////
3085 /// FormatTraits<YCRCB_SWAPUV> - Format traits specialization for YCRCB_SWAPUV
3086 //////////////////////////////////////////////////////////////////////////
3087 template<> struct FormatTraits<YCRCB_SWAPUV> :
3088 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
3089 FormatSwizzle<0, 1, 2, 3>,
3090 Defaults<0, 0, 0, 0x1>
3091 {
3092 static const uint32_t bpp{ 32 };
3093 static const uint32_t numComps{ 4 };
3094 static const bool hasAlpha{ false };
3095 static const uint32_t alphaComp{ 3 };
3096 static const bool isSRGB{ false };
3097 static const bool isBC{ false };
3098 static const bool isSubsampled{ true };
3099 static const uint32_t bcWidth{ 2 };
3100 static const uint32_t bcHeight{ 1 };
3101
3102 typedef Transpose8_8_8_8 TransposeT;
3103 typedef Format4<8, 8, 8, 8> FormatT;
3104 };
3105
3106 //////////////////////////////////////////////////////////////////////////
3107 /// FormatTraits<DXT1_RGB> - Format traits specialization for DXT1_RGB
3108 //////////////////////////////////////////////////////////////////////////
3109 template<> struct FormatTraits<DXT1_RGB> :
3110 ComponentTraits<SWR_TYPE_UNORM, 8>,
3111 FormatSwizzle<0>,
3112 Defaults<0, 0, 0, 0x3f800000>
3113 {
3114 static const uint32_t bpp{ 64 };
3115 static const uint32_t numComps{ 1 };
3116 static const bool hasAlpha{ true };
3117 static const uint32_t alphaComp{ 3 };
3118 static const bool isSRGB{ false };
3119 static const bool isBC{ true };
3120 static const bool isSubsampled{ false };
3121 static const uint32_t bcWidth{ 4 };
3122 static const uint32_t bcHeight{ 4 };
3123
3124 typedef TransposeSingleComponent<8> TransposeT;
3125 typedef Format1<8> FormatT;
3126 };
3127
3128 //////////////////////////////////////////////////////////////////////////
3129 /// FormatTraits<R8G8B8_UNORM> - Format traits specialization for R8G8B8_UNORM
3130 //////////////////////////////////////////////////////////////////////////
3131 template<> struct FormatTraits<R8G8B8_UNORM> :
3132 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
3133 FormatSwizzle<0, 1, 2>,
3134 Defaults<0, 0, 0, 0x3f800000>
3135 {
3136 static const uint32_t bpp{ 24 };
3137 static const uint32_t numComps{ 3 };
3138 static const bool hasAlpha{ false };
3139 static const uint32_t alphaComp{ 0 };
3140 static const bool isSRGB{ false };
3141 static const bool isBC{ false };
3142 static const bool isSubsampled{ false };
3143 static const uint32_t bcWidth{ 1 };
3144 static const uint32_t bcHeight{ 1 };
3145
3146 typedef Transpose8_8_8 TransposeT;
3147 typedef Format3<8, 8, 8> FormatT;
3148 };
3149
3150 //////////////////////////////////////////////////////////////////////////
3151 /// FormatTraits<R8G8B8_SNORM> - Format traits specialization for R8G8B8_SNORM
3152 //////////////////////////////////////////////////////////////////////////
3153 template<> struct FormatTraits<R8G8B8_SNORM> :
3154 ComponentTraits<SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8, SWR_TYPE_SNORM, 8>,
3155 FormatSwizzle<0, 1, 2>,
3156 Defaults<0, 0, 0, 0x3f800000>
3157 {
3158 static const uint32_t bpp{ 24 };
3159 static const uint32_t numComps{ 3 };
3160 static const bool hasAlpha{ false };
3161 static const uint32_t alphaComp{ 0 };
3162 static const bool isSRGB{ false };
3163 static const bool isBC{ false };
3164 static const bool isSubsampled{ false };
3165 static const uint32_t bcWidth{ 1 };
3166 static const uint32_t bcHeight{ 1 };
3167
3168 typedef Transpose8_8_8 TransposeT;
3169 typedef Format3<8, 8, 8> FormatT;
3170 };
3171
3172 //////////////////////////////////////////////////////////////////////////
3173 /// FormatTraits<R8G8B8_SSCALED> - Format traits specialization for R8G8B8_SSCALED
3174 //////////////////////////////////////////////////////////////////////////
3175 template<> struct FormatTraits<R8G8B8_SSCALED> :
3176 ComponentTraits<SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8, SWR_TYPE_SSCALED, 8>,
3177 FormatSwizzle<0, 1, 2>,
3178 Defaults<0, 0, 0, 0x3f800000>
3179 {
3180 static const uint32_t bpp{ 24 };
3181 static const uint32_t numComps{ 3 };
3182 static const bool hasAlpha{ false };
3183 static const uint32_t alphaComp{ 0 };
3184 static const bool isSRGB{ false };
3185 static const bool isBC{ false };
3186 static const bool isSubsampled{ false };
3187 static const uint32_t bcWidth{ 1 };
3188 static const uint32_t bcHeight{ 1 };
3189
3190 typedef Transpose8_8_8 TransposeT;
3191 typedef Format3<8, 8, 8> FormatT;
3192 };
3193
3194 //////////////////////////////////////////////////////////////////////////
3195 /// FormatTraits<R8G8B8_USCALED> - Format traits specialization for R8G8B8_USCALED
3196 //////////////////////////////////////////////////////////////////////////
3197 template<> struct FormatTraits<R8G8B8_USCALED> :
3198 ComponentTraits<SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8, SWR_TYPE_USCALED, 8>,
3199 FormatSwizzle<0, 1, 2>,
3200 Defaults<0, 0, 0, 0x3f800000>
3201 {
3202 static const uint32_t bpp{ 24 };
3203 static const uint32_t numComps{ 3 };
3204 static const bool hasAlpha{ false };
3205 static const uint32_t alphaComp{ 0 };
3206 static const bool isSRGB{ false };
3207 static const bool isBC{ false };
3208 static const bool isSubsampled{ false };
3209 static const uint32_t bcWidth{ 1 };
3210 static const uint32_t bcHeight{ 1 };
3211
3212 typedef Transpose8_8_8 TransposeT;
3213 typedef Format3<8, 8, 8> FormatT;
3214 };
3215
3216 //////////////////////////////////////////////////////////////////////////
3217 /// FormatTraits<R64G64B64A64_FLOAT> - Format traits specialization for R64G64B64A64_FLOAT
3218 //////////////////////////////////////////////////////////////////////////
3219 template<> struct FormatTraits<R64G64B64A64_FLOAT> :
3220 ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>,
3221 FormatSwizzle<0, 1, 2, 3>,
3222 Defaults<0, 0, 0, 0x3f800000>
3223 {
3224 static const uint32_t bpp{ 256 };
3225 static const uint32_t numComps{ 4 };
3226 static const bool hasAlpha{ true };
3227 static const uint32_t alphaComp{ 3 };
3228 static const bool isSRGB{ false };
3229 static const bool isBC{ false };
3230 static const bool isSubsampled{ false };
3231 static const uint32_t bcWidth{ 1 };
3232 static const uint32_t bcHeight{ 1 };
3233
3234 typedef Transpose64_64_64_64 TransposeT;
3235 typedef Format4<64, 64, 64, 64> FormatT;
3236 };
3237
3238 //////////////////////////////////////////////////////////////////////////
3239 /// FormatTraits<R64G64B64_FLOAT> - Format traits specialization for R64G64B64_FLOAT
3240 //////////////////////////////////////////////////////////////////////////
3241 template<> struct FormatTraits<R64G64B64_FLOAT> :
3242 ComponentTraits<SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64, SWR_TYPE_FLOAT, 64>,
3243 FormatSwizzle<0, 1, 2>,
3244 Defaults<0, 0, 0, 0x3f800000>
3245 {
3246 static const uint32_t bpp{ 192 };
3247 static const uint32_t numComps{ 3 };
3248 static const bool hasAlpha{ false };
3249 static const uint32_t alphaComp{ 0 };
3250 static const bool isSRGB{ false };
3251 static const bool isBC{ false };
3252 static const bool isSubsampled{ false };
3253 static const uint32_t bcWidth{ 1 };
3254 static const uint32_t bcHeight{ 1 };
3255
3256 typedef Transpose64_64_64 TransposeT;
3257 typedef Format3<64, 64, 64> FormatT;
3258 };
3259
3260 //////////////////////////////////////////////////////////////////////////
3261 /// FormatTraits<BC4_SNORM> - Format traits specialization for BC4_SNORM
3262 //////////////////////////////////////////////////////////////////////////
3263 template<> struct FormatTraits<BC4_SNORM> :
3264 ComponentTraits<SWR_TYPE_SNORM, 8>,
3265 FormatSwizzle<0>,
3266 Defaults<0, 0, 0, 0x3f800000>
3267 {
3268 static const uint32_t bpp{ 64 };
3269 static const uint32_t numComps{ 1 };
3270 static const bool hasAlpha{ true };
3271 static const uint32_t alphaComp{ 3 };
3272 static const bool isSRGB{ false };
3273 static const bool isBC{ true };
3274 static const bool isSubsampled{ false };
3275 static const uint32_t bcWidth{ 4 };
3276 static const uint32_t bcHeight{ 4 };
3277
3278 typedef TransposeSingleComponent<8> TransposeT;
3279 typedef Format1<8> FormatT;
3280 };
3281
3282 //////////////////////////////////////////////////////////////////////////
3283 /// FormatTraits<BC5_SNORM> - Format traits specialization for BC5_SNORM
3284 //////////////////////////////////////////////////////////////////////////
3285 template<> struct FormatTraits<BC5_SNORM> :
3286 ComponentTraits<SWR_TYPE_SNORM, 8>,
3287 FormatSwizzle<0>,
3288 Defaults<0, 0, 0, 0x3f800000>
3289 {
3290 static const uint32_t bpp{ 128 };
3291 static const uint32_t numComps{ 1 };
3292 static const bool hasAlpha{ true };
3293 static const uint32_t alphaComp{ 3 };
3294 static const bool isSRGB{ false };
3295 static const bool isBC{ true };
3296 static const bool isSubsampled{ false };
3297 static const uint32_t bcWidth{ 4 };
3298 static const uint32_t bcHeight{ 4 };
3299
3300 typedef TransposeSingleComponent<8> TransposeT;
3301 typedef Format1<8> FormatT;
3302 };
3303
3304 //////////////////////////////////////////////////////////////////////////
3305 /// FormatTraits<R16G16B16_FLOAT> - Format traits specialization for R16G16B16_FLOAT
3306 //////////////////////////////////////////////////////////////////////////
3307 template<> struct FormatTraits<R16G16B16_FLOAT> :
3308 ComponentTraits<SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16, SWR_TYPE_FLOAT, 16>,
3309 FormatSwizzle<0, 1, 2>,
3310 Defaults<0, 0, 0, 0x3f800000>
3311 {
3312 static const uint32_t bpp{ 48 };
3313 static const uint32_t numComps{ 3 };
3314 static const bool hasAlpha{ false };
3315 static const uint32_t alphaComp{ 0 };
3316 static const bool isSRGB{ false };
3317 static const bool isBC{ false };
3318 static const bool isSubsampled{ false };
3319 static const uint32_t bcWidth{ 1 };
3320 static const uint32_t bcHeight{ 1 };
3321
3322 typedef Transpose16_16_16 TransposeT;
3323 typedef Format3<16, 16, 16> FormatT;
3324 };
3325
3326 //////////////////////////////////////////////////////////////////////////
3327 /// FormatTraits<R16G16B16_UNORM> - Format traits specialization for R16G16B16_UNORM
3328 //////////////////////////////////////////////////////////////////////////
3329 template<> struct FormatTraits<R16G16B16_UNORM> :
3330 ComponentTraits<SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16, SWR_TYPE_UNORM, 16>,
3331 FormatSwizzle<0, 1, 2>,
3332 Defaults<0, 0, 0, 0x3f800000>
3333 {
3334 static const uint32_t bpp{ 48 };
3335 static const uint32_t numComps{ 3 };
3336 static const bool hasAlpha{ false };
3337 static const uint32_t alphaComp{ 0 };
3338 static const bool isSRGB{ false };
3339 static const bool isBC{ false };
3340 static const bool isSubsampled{ false };
3341 static const uint32_t bcWidth{ 1 };
3342 static const uint32_t bcHeight{ 1 };
3343
3344 typedef Transpose16_16_16 TransposeT;
3345 typedef Format3<16, 16, 16> FormatT;
3346 };
3347
3348 //////////////////////////////////////////////////////////////////////////
3349 /// FormatTraits<R16G16B16_SNORM> - Format traits specialization for R16G16B16_SNORM
3350 //////////////////////////////////////////////////////////////////////////
3351 template<> struct FormatTraits<R16G16B16_SNORM> :
3352 ComponentTraits<SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16, SWR_TYPE_SNORM, 16>,
3353 FormatSwizzle<0, 1, 2>,
3354 Defaults<0, 0, 0, 0x3f800000>
3355 {
3356 static const uint32_t bpp{ 48 };
3357 static const uint32_t numComps{ 3 };
3358 static const bool hasAlpha{ false };
3359 static const uint32_t alphaComp{ 0 };
3360 static const bool isSRGB{ false };
3361 static const bool isBC{ false };
3362 static const bool isSubsampled{ false };
3363 static const uint32_t bcWidth{ 1 };
3364 static const uint32_t bcHeight{ 1 };
3365
3366 typedef Transpose16_16_16 TransposeT;
3367 typedef Format3<16, 16, 16> FormatT;
3368 };
3369
3370 //////////////////////////////////////////////////////////////////////////
3371 /// FormatTraits<R16G16B16_SSCALED> - Format traits specialization for R16G16B16_SSCALED
3372 //////////////////////////////////////////////////////////////////////////
3373 template<> struct FormatTraits<R16G16B16_SSCALED> :
3374 ComponentTraits<SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16, SWR_TYPE_SSCALED, 16>,
3375 FormatSwizzle<0, 1, 2>,
3376 Defaults<0, 0, 0, 0x3f800000>
3377 {
3378 static const uint32_t bpp{ 48 };
3379 static const uint32_t numComps{ 3 };
3380 static const bool hasAlpha{ false };
3381 static const uint32_t alphaComp{ 0 };
3382 static const bool isSRGB{ false };
3383 static const bool isBC{ false };
3384 static const bool isSubsampled{ false };
3385 static const uint32_t bcWidth{ 1 };
3386 static const uint32_t bcHeight{ 1 };
3387
3388 typedef Transpose16_16_16 TransposeT;
3389 typedef Format3<16, 16, 16> FormatT;
3390 };
3391
3392 //////////////////////////////////////////////////////////////////////////
3393 /// FormatTraits<R16G16B16_USCALED> - Format traits specialization for R16G16B16_USCALED
3394 //////////////////////////////////////////////////////////////////////////
3395 template<> struct FormatTraits<R16G16B16_USCALED> :
3396 ComponentTraits<SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16, SWR_TYPE_USCALED, 16>,
3397 FormatSwizzle<0, 1, 2>,
3398 Defaults<0, 0, 0, 0x3f800000>
3399 {
3400 static const uint32_t bpp{ 48 };
3401 static const uint32_t numComps{ 3 };
3402 static const bool hasAlpha{ false };
3403 static const uint32_t alphaComp{ 0 };
3404 static const bool isSRGB{ false };
3405 static const bool isBC{ false };
3406 static const bool isSubsampled{ false };
3407 static const uint32_t bcWidth{ 1 };
3408 static const uint32_t bcHeight{ 1 };
3409
3410 typedef Transpose16_16_16 TransposeT;
3411 typedef Format3<16, 16, 16> FormatT;
3412 };
3413
3414 //////////////////////////////////////////////////////////////////////////
3415 /// FormatTraits<BC6H_SF16> - Format traits specialization for BC6H_SF16
3416 //////////////////////////////////////////////////////////////////////////
3417 template<> struct FormatTraits<BC6H_SF16> :
3418 ComponentTraits<SWR_TYPE_SNORM, 8>,
3419 FormatSwizzle<0>,
3420 Defaults<0, 0, 0, 0x3f800000>
3421 {
3422 static const uint32_t bpp{ 128 };
3423 static const uint32_t numComps{ 1 };
3424 static const bool hasAlpha{ true };
3425 static const uint32_t alphaComp{ 3 };
3426 static const bool isSRGB{ false };
3427 static const bool isBC{ true };
3428 static const bool isSubsampled{ false };
3429 static const uint32_t bcWidth{ 4 };
3430 static const uint32_t bcHeight{ 4 };
3431
3432 typedef TransposeSingleComponent<8> TransposeT;
3433 typedef Format1<8> FormatT;
3434 };
3435
3436 //////////////////////////////////////////////////////////////////////////
3437 /// FormatTraits<BC7_UNORM> - Format traits specialization for BC7_UNORM
3438 //////////////////////////////////////////////////////////////////////////
3439 template<> struct FormatTraits<BC7_UNORM> :
3440 ComponentTraits<SWR_TYPE_UNORM, 8>,
3441 FormatSwizzle<0>,
3442 Defaults<0, 0, 0, 0x3f800000>
3443 {
3444 static const uint32_t bpp{ 128 };
3445 static const uint32_t numComps{ 1 };
3446 static const bool hasAlpha{ true };
3447 static const uint32_t alphaComp{ 3 };
3448 static const bool isSRGB{ false };
3449 static const bool isBC{ true };
3450 static const bool isSubsampled{ false };
3451 static const uint32_t bcWidth{ 4 };
3452 static const uint32_t bcHeight{ 4 };
3453
3454 typedef TransposeSingleComponent<8> TransposeT;
3455 typedef Format1<8> FormatT;
3456 };
3457
3458 //////////////////////////////////////////////////////////////////////////
3459 /// FormatTraits<BC7_UNORM_SRGB> - Format traits specialization for BC7_UNORM_SRGB
3460 //////////////////////////////////////////////////////////////////////////
3461 template<> struct FormatTraits<BC7_UNORM_SRGB> :
3462 ComponentTraits<SWR_TYPE_UNORM, 8>,
3463 FormatSwizzle<0>,
3464 Defaults<0, 0, 0, 0x3f800000>
3465 {
3466 static const uint32_t bpp{ 128 };
3467 static const uint32_t numComps{ 1 };
3468 static const bool hasAlpha{ true };
3469 static const uint32_t alphaComp{ 3 };
3470 static const bool isSRGB{ true };
3471 static const bool isBC{ true };
3472 static const bool isSubsampled{ false };
3473 static const uint32_t bcWidth{ 4 };
3474 static const uint32_t bcHeight{ 4 };
3475
3476 typedef TransposeSingleComponent<8> TransposeT;
3477 typedef Format1<8> FormatT;
3478 };
3479
3480 //////////////////////////////////////////////////////////////////////////
3481 /// FormatTraits<BC6H_UF16> - Format traits specialization for BC6H_UF16
3482 //////////////////////////////////////////////////////////////////////////
3483 template<> struct FormatTraits<BC6H_UF16> :
3484 ComponentTraits<SWR_TYPE_UNORM, 8>,
3485 FormatSwizzle<0>,
3486 Defaults<0, 0, 0, 0x3f800000>
3487 {
3488 static const uint32_t bpp{ 128 };
3489 static const uint32_t numComps{ 1 };
3490 static const bool hasAlpha{ true };
3491 static const uint32_t alphaComp{ 3 };
3492 static const bool isSRGB{ false };
3493 static const bool isBC{ true };
3494 static const bool isSubsampled{ false };
3495 static const uint32_t bcWidth{ 4 };
3496 static const uint32_t bcHeight{ 4 };
3497
3498 typedef TransposeSingleComponent<8> TransposeT;
3499 typedef Format1<8> FormatT;
3500 };
3501
3502 //////////////////////////////////////////////////////////////////////////
3503 /// FormatTraits<R8G8B8_UNORM_SRGB> - Format traits specialization for R8G8B8_UNORM_SRGB
3504 //////////////////////////////////////////////////////////////////////////
3505 template<> struct FormatTraits<R8G8B8_UNORM_SRGB> :
3506 ComponentTraits<SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8, SWR_TYPE_UNORM, 8>,
3507 FormatSwizzle<0, 1, 2>,
3508 Defaults<0, 0, 0, 0x3f800000>
3509 {
3510 static const uint32_t bpp{ 24 };
3511 static const uint32_t numComps{ 3 };
3512 static const bool hasAlpha{ false };
3513 static const uint32_t alphaComp{ 0 };
3514 static const bool isSRGB{ true };
3515 static const bool isBC{ false };
3516 static const bool isSubsampled{ false };
3517 static const uint32_t bcWidth{ 1 };
3518 static const uint32_t bcHeight{ 1 };
3519
3520 typedef Transpose8_8_8 TransposeT;
3521 typedef Format3<8, 8, 8> FormatT;
3522 };
3523
3524 //////////////////////////////////////////////////////////////////////////
3525 /// FormatTraits<R16G16B16_UINT> - Format traits specialization for R16G16B16_UINT
3526 //////////////////////////////////////////////////////////////////////////
3527 template<> struct FormatTraits<R16G16B16_UINT> :
3528 ComponentTraits<SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16, SWR_TYPE_UINT, 16>,
3529 FormatSwizzle<0, 1, 2>,
3530 Defaults<0, 0, 0, 0x1>
3531 {
3532 static const uint32_t bpp{ 48 };
3533 static const uint32_t numComps{ 3 };
3534 static const bool hasAlpha{ false };
3535 static const uint32_t alphaComp{ 0 };
3536 static const bool isSRGB{ false };
3537 static const bool isBC{ false };
3538 static const bool isSubsampled{ false };
3539 static const uint32_t bcWidth{ 1 };
3540 static const uint32_t bcHeight{ 1 };
3541
3542 typedef Transpose16_16_16 TransposeT;
3543 typedef Format3<16, 16, 16> FormatT;
3544 };
3545
3546 //////////////////////////////////////////////////////////////////////////
3547 /// FormatTraits<R16G16B16_SINT> - Format traits specialization for R16G16B16_SINT
3548 //////////////////////////////////////////////////////////////////////////
3549 template<> struct FormatTraits<R16G16B16_SINT> :
3550 ComponentTraits<SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16, SWR_TYPE_SINT, 16>,
3551 FormatSwizzle<0, 1, 2>,
3552 Defaults<0, 0, 0, 0x1>
3553 {
3554 static const uint32_t bpp{ 48 };
3555 static const uint32_t numComps{ 3 };
3556 static const bool hasAlpha{ false };
3557 static const uint32_t alphaComp{ 0 };
3558 static const bool isSRGB{ false };
3559 static const bool isBC{ false };
3560 static const bool isSubsampled{ false };
3561 static const uint32_t bcWidth{ 1 };
3562 static const uint32_t bcHeight{ 1 };
3563
3564 typedef Transpose16_16_16 TransposeT;
3565 typedef Format3<16, 16, 16> FormatT;
3566 };
3567
3568 //////////////////////////////////////////////////////////////////////////
3569 /// FormatTraits<R32_SFIXED> - Format traits specialization for R32_SFIXED
3570 //////////////////////////////////////////////////////////////////////////
3571 template<> struct FormatTraits<R32_SFIXED> :
3572 ComponentTraits<SWR_TYPE_SFIXED, 32>,
3573 FormatSwizzle<0>,
3574 Defaults<0, 0, 0, 0x3f800000>
3575 {
3576 static const uint32_t bpp{ 32 };
3577 static const uint32_t numComps{ 1 };
3578 static const bool hasAlpha{ false };
3579 static const uint32_t alphaComp{ 0 };
3580 static const bool isSRGB{ false };
3581 static const bool isBC{ false };
3582 static const bool isSubsampled{ false };
3583 static const uint32_t bcWidth{ 1 };
3584 static const uint32_t bcHeight{ 1 };
3585
3586 typedef TransposeSingleComponent<32> TransposeT;
3587 typedef Format1<32> FormatT;
3588 };
3589
3590 //////////////////////////////////////////////////////////////////////////
3591 /// FormatTraits<R10G10B10A2_SNORM> - Format traits specialization for R10G10B10A2_SNORM
3592 //////////////////////////////////////////////////////////////////////////
3593 template<> struct FormatTraits<R10G10B10A2_SNORM> :
3594 ComponentTraits<SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 2>,
3595 FormatSwizzle<0, 1, 2, 3>,
3596 Defaults<0, 0, 0, 0x3f800000>
3597 {
3598 static const uint32_t bpp{ 32 };
3599 static const uint32_t numComps{ 4 };
3600 static const bool hasAlpha{ true };
3601 static const uint32_t alphaComp{ 3 };
3602 static const bool isSRGB{ false };
3603 static const bool isBC{ false };
3604 static const bool isSubsampled{ false };
3605 static const uint32_t bcWidth{ 1 };
3606 static const uint32_t bcHeight{ 1 };
3607
3608 typedef Transpose10_10_10_2 TransposeT;
3609 typedef Format4<10, 10, 10, 2> FormatT;
3610 };
3611
3612 //////////////////////////////////////////////////////////////////////////
3613 /// FormatTraits<R10G10B10A2_USCALED> - Format traits specialization for R10G10B10A2_USCALED
3614 //////////////////////////////////////////////////////////////////////////
3615 template<> struct FormatTraits<R10G10B10A2_USCALED> :
3616 ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 2>,
3617 FormatSwizzle<0, 1, 2, 3>,
3618 Defaults<0, 0, 0, 0x3f800000>
3619 {
3620 static const uint32_t bpp{ 32 };
3621 static const uint32_t numComps{ 4 };
3622 static const bool hasAlpha{ true };
3623 static const uint32_t alphaComp{ 3 };
3624 static const bool isSRGB{ false };
3625 static const bool isBC{ false };
3626 static const bool isSubsampled{ false };
3627 static const uint32_t bcWidth{ 1 };
3628 static const uint32_t bcHeight{ 1 };
3629
3630 typedef Transpose10_10_10_2 TransposeT;
3631 typedef Format4<10, 10, 10, 2> FormatT;
3632 };
3633
3634 //////////////////////////////////////////////////////////////////////////
3635 /// FormatTraits<R10G10B10A2_SSCALED> - Format traits specialization for R10G10B10A2_SSCALED
3636 //////////////////////////////////////////////////////////////////////////
3637 template<> struct FormatTraits<R10G10B10A2_SSCALED> :
3638 ComponentTraits<SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 2>,
3639 FormatSwizzle<0, 1, 2, 3>,
3640 Defaults<0, 0, 0, 0x3f800000>
3641 {
3642 static const uint32_t bpp{ 32 };
3643 static const uint32_t numComps{ 4 };
3644 static const bool hasAlpha{ true };
3645 static const uint32_t alphaComp{ 3 };
3646 static const bool isSRGB{ false };
3647 static const bool isBC{ false };
3648 static const bool isSubsampled{ false };
3649 static const uint32_t bcWidth{ 1 };
3650 static const uint32_t bcHeight{ 1 };
3651
3652 typedef Transpose10_10_10_2 TransposeT;
3653 typedef Format4<10, 10, 10, 2> FormatT;
3654 };
3655
3656 //////////////////////////////////////////////////////////////////////////
3657 /// FormatTraits<R10G10B10A2_SINT> - Format traits specialization for R10G10B10A2_SINT
3658 //////////////////////////////////////////////////////////////////////////
3659 template<> struct FormatTraits<R10G10B10A2_SINT> :
3660 ComponentTraits<SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 2>,
3661 FormatSwizzle<0, 1, 2, 3>,
3662 Defaults<0, 0, 0, 0x1>
3663 {
3664 static const uint32_t bpp{ 32 };
3665 static const uint32_t numComps{ 4 };
3666 static const bool hasAlpha{ true };
3667 static const uint32_t alphaComp{ 3 };
3668 static const bool isSRGB{ false };
3669 static const bool isBC{ false };
3670 static const bool isSubsampled{ false };
3671 static const uint32_t bcWidth{ 1 };
3672 static const uint32_t bcHeight{ 1 };
3673
3674 typedef Transpose10_10_10_2 TransposeT;
3675 typedef Format4<10, 10, 10, 2> FormatT;
3676 };
3677
3678 //////////////////////////////////////////////////////////////////////////
3679 /// FormatTraits<B10G10R10A2_SNORM> - Format traits specialization for B10G10R10A2_SNORM
3680 //////////////////////////////////////////////////////////////////////////
3681 template<> struct FormatTraits<B10G10R10A2_SNORM> :
3682 ComponentTraits<SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 10, SWR_TYPE_SNORM, 2>,
3683 FormatSwizzle<2, 1, 0, 3>,
3684 Defaults<0, 0, 0, 0x3f800000>
3685 {
3686 static const uint32_t bpp{ 32 };
3687 static const uint32_t numComps{ 4 };
3688 static const bool hasAlpha{ true };
3689 static const uint32_t alphaComp{ 3 };
3690 static const bool isSRGB{ false };
3691 static const bool isBC{ false };
3692 static const bool isSubsampled{ false };
3693 static const uint32_t bcWidth{ 1 };
3694 static const uint32_t bcHeight{ 1 };
3695
3696 typedef Transpose10_10_10_2 TransposeT;
3697 typedef Format4<10, 10, 10, 2> FormatT;
3698 };
3699
3700 //////////////////////////////////////////////////////////////////////////
3701 /// FormatTraits<B10G10R10A2_USCALED> - Format traits specialization for B10G10R10A2_USCALED
3702 //////////////////////////////////////////////////////////////////////////
3703 template<> struct FormatTraits<B10G10R10A2_USCALED> :
3704 ComponentTraits<SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 10, SWR_TYPE_USCALED, 2>,
3705 FormatSwizzle<2, 1, 0, 3>,
3706 Defaults<0, 0, 0, 0x3f800000>
3707 {
3708 static const uint32_t bpp{ 32 };
3709 static const uint32_t numComps{ 4 };
3710 static const bool hasAlpha{ true };
3711 static const uint32_t alphaComp{ 3 };
3712 static const bool isSRGB{ false };
3713 static const bool isBC{ false };
3714 static const bool isSubsampled{ false };
3715 static const uint32_t bcWidth{ 1 };
3716 static const uint32_t bcHeight{ 1 };
3717
3718 typedef Transpose10_10_10_2 TransposeT;
3719 typedef Format4<10, 10, 10, 2> FormatT;
3720 };
3721
3722 //////////////////////////////////////////////////////////////////////////
3723 /// FormatTraits<B10G10R10A2_SSCALED> - Format traits specialization for B10G10R10A2_SSCALED
3724 //////////////////////////////////////////////////////////////////////////
3725 template<> struct FormatTraits<B10G10R10A2_SSCALED> :
3726 ComponentTraits<SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 10, SWR_TYPE_SSCALED, 2>,
3727 FormatSwizzle<2, 1, 0, 3>,
3728 Defaults<0, 0, 0, 0x3f800000>
3729 {
3730 static const uint32_t bpp{ 32 };
3731 static const uint32_t numComps{ 4 };
3732 static const bool hasAlpha{ true };
3733 static const uint32_t alphaComp{ 3 };
3734 static const bool isSRGB{ false };
3735 static const bool isBC{ false };
3736 static const bool isSubsampled{ false };
3737 static const uint32_t bcWidth{ 1 };
3738 static const uint32_t bcHeight{ 1 };
3739
3740 typedef Transpose10_10_10_2 TransposeT;
3741 typedef Format4<10, 10, 10, 2> FormatT;
3742 };
3743
3744 //////////////////////////////////////////////////////////////////////////
3745 /// FormatTraits<B10G10R10A2_UINT> - Format traits specialization for B10G10R10A2_UINT
3746 //////////////////////////////////////////////////////////////////////////
3747 template<> struct FormatTraits<B10G10R10A2_UINT> :
3748 ComponentTraits<SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 10, SWR_TYPE_UINT, 2>,
3749 FormatSwizzle<2, 1, 0, 3>,
3750 Defaults<0, 0, 0, 0x1>
3751 {
3752 static const uint32_t bpp{ 32 };
3753 static const uint32_t numComps{ 4 };
3754 static const bool hasAlpha{ true };
3755 static const uint32_t alphaComp{ 3 };
3756 static const bool isSRGB{ false };
3757 static const bool isBC{ false };
3758 static const bool isSubsampled{ false };
3759 static const uint32_t bcWidth{ 1 };
3760 static const uint32_t bcHeight{ 1 };
3761
3762 typedef Transpose10_10_10_2 TransposeT;
3763 typedef Format4<10, 10, 10, 2> FormatT;
3764 };
3765
3766 //////////////////////////////////////////////////////////////////////////
3767 /// FormatTraits<B10G10R10A2_SINT> - Format traits specialization for B10G10R10A2_SINT
3768 //////////////////////////////////////////////////////////////////////////
3769 template<> struct FormatTraits<B10G10R10A2_SINT> :
3770 ComponentTraits<SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 10, SWR_TYPE_SINT, 2>,
3771 FormatSwizzle<2, 1, 0, 3>,
3772 Defaults<0, 0, 0, 0x1>
3773 {
3774 static const uint32_t bpp{ 32 };
3775 static const uint32_t numComps{ 4 };
3776 static const bool hasAlpha{ true };
3777 static const uint32_t alphaComp{ 3 };
3778 static const bool isSRGB{ false };
3779 static const bool isBC{ false };
3780 static const bool isSubsampled{ false };
3781 static const uint32_t bcWidth{ 1 };
3782 static const uint32_t bcHeight{ 1 };
3783
3784 typedef Transpose10_10_10_2 TransposeT;
3785 typedef Format4<10, 10, 10, 2> FormatT;
3786 };
3787
3788 //////////////////////////////////////////////////////////////////////////
3789 /// FormatTraits<R8G8B8_UINT> - Format traits specialization for R8G8B8_UINT
3790 //////////////////////////////////////////////////////////////////////////
3791 template<> struct FormatTraits<R8G8B8_UINT> :
3792 ComponentTraits<SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8, SWR_TYPE_UINT, 8>,
3793 FormatSwizzle<0, 1, 2>,
3794 Defaults<0, 0, 0, 0x1>
3795 {
3796 static const uint32_t bpp{ 24 };
3797 static const uint32_t numComps{ 3 };
3798 static const bool hasAlpha{ false };
3799 static const uint32_t alphaComp{ 0 };
3800 static const bool isSRGB{ false };
3801 static const bool isBC{ false };
3802 static const bool isSubsampled{ false };
3803 static const uint32_t bcWidth{ 1 };
3804 static const uint32_t bcHeight{ 1 };
3805
3806 typedef Transpose8_8_8 TransposeT;
3807 typedef Format3<8, 8, 8> FormatT;
3808 };
3809
3810 //////////////////////////////////////////////////////////////////////////
3811 /// FormatTraits<R8G8B8_SINT> - Format traits specialization for R8G8B8_SINT
3812 //////////////////////////////////////////////////////////////////////////
3813 template<> struct FormatTraits<R8G8B8_SINT> :
3814 ComponentTraits<SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8, SWR_TYPE_SINT, 8>,
3815 FormatSwizzle<0, 1, 2>,
3816 Defaults<0, 0, 0, 0x1>
3817 {
3818 static const uint32_t bpp{ 24 };
3819 static const uint32_t numComps{ 3 };
3820 static const bool hasAlpha{ false };
3821 static const uint32_t alphaComp{ 0 };
3822 static const bool isSRGB{ false };
3823 static const bool isBC{ false };
3824 static const bool isSubsampled{ false };
3825 static const uint32_t bcWidth{ 1 };
3826 static const uint32_t bcHeight{ 1 };
3827
3828 typedef Transpose8_8_8 TransposeT;
3829 typedef Format3<8, 8, 8> FormatT;
3830 };
3831
3832 //////////////////////////////////////////////////////////////////////////
3833 /// FormatTraits<RAW> - Format traits specialization for RAW
3834 //////////////////////////////////////////////////////////////////////////
3835 template<> struct FormatTraits<RAW> :
3836 ComponentTraits<SWR_TYPE_UINT, 8>,
3837 FormatSwizzle<0>,
3838 Defaults<0, 0, 0, 0x1>
3839 {
3840 static const uint32_t bpp{ 8 };
3841 static const uint32_t numComps{ 1 };
3842 static const bool hasAlpha{ false };
3843 static const uint32_t alphaComp{ 3 };
3844 static const bool isSRGB{ false };
3845 static const bool isBC{ false };
3846 static const bool isSubsampled{ false };
3847 static const uint32_t bcWidth{ 1 };
3848 static const uint32_t bcHeight{ 1 };
3849
3850 typedef TransposeSingleComponent<8> TransposeT;
3851 typedef Format1<8> FormatT;
3852 };