1*03ce13f7SAndroid Build Coastguard Worker // Copyright 2019 The SwiftShader Authors. All Rights Reserved.
2*03ce13f7SAndroid Build Coastguard Worker //
3*03ce13f7SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
4*03ce13f7SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
5*03ce13f7SAndroid Build Coastguard Worker // You may obtain a copy of the License at
6*03ce13f7SAndroid Build Coastguard Worker //
7*03ce13f7SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0
8*03ce13f7SAndroid Build Coastguard Worker //
9*03ce13f7SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*03ce13f7SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
11*03ce13f7SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*03ce13f7SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
13*03ce13f7SAndroid Build Coastguard Worker // limitations under the License.
14*03ce13f7SAndroid Build Coastguard Worker
15*03ce13f7SAndroid Build Coastguard Worker #include "VkFormat.hpp"
16*03ce13f7SAndroid Build Coastguard Worker
17*03ce13f7SAndroid Build Coastguard Worker #include "System/Debug.hpp"
18*03ce13f7SAndroid Build Coastguard Worker #include "System/Math.hpp"
19*03ce13f7SAndroid Build Coastguard Worker
20*03ce13f7SAndroid Build Coastguard Worker namespace vk {
21*03ce13f7SAndroid Build Coastguard Worker
isUnsignedNormalized() const22*03ce13f7SAndroid Build Coastguard Worker bool Format::isUnsignedNormalized() const
23*03ce13f7SAndroid Build Coastguard Worker {
24*03ce13f7SAndroid Build Coastguard Worker switch(format)
25*03ce13f7SAndroid Build Coastguard Worker {
26*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
27*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
28*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
29*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
30*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
31*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
32*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
33*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
34*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
35*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
36*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
37*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
38*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
39*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
40*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
41*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
42*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
43*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
44*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
45*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
46*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
47*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
48*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
49*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
50*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
51*03ce13f7SAndroid Build Coastguard Worker return true;
52*03ce13f7SAndroid Build Coastguard Worker default:
53*03ce13f7SAndroid Build Coastguard Worker // sRGB encoded formats are also unsigned normalized.
54*03ce13f7SAndroid Build Coastguard Worker // Note that floating-pont formats have no need for nonlinear encoding,
55*03ce13f7SAndroid Build Coastguard Worker // and the sRGB transfer function is only defined for [0.0, 1.0].
56*03ce13f7SAndroid Build Coastguard Worker return isSRGBformat();
57*03ce13f7SAndroid Build Coastguard Worker }
58*03ce13f7SAndroid Build Coastguard Worker }
59*03ce13f7SAndroid Build Coastguard Worker
isSignedNormalized() const60*03ce13f7SAndroid Build Coastguard Worker bool Format::isSignedNormalized() const
61*03ce13f7SAndroid Build Coastguard Worker {
62*03ce13f7SAndroid Build Coastguard Worker switch(format)
63*03ce13f7SAndroid Build Coastguard Worker {
64*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
65*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
66*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
67*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
68*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
69*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
70*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
71*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
72*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
73*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
74*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
75*03ce13f7SAndroid Build Coastguard Worker return true;
76*03ce13f7SAndroid Build Coastguard Worker default:
77*03ce13f7SAndroid Build Coastguard Worker return false;
78*03ce13f7SAndroid Build Coastguard Worker }
79*03ce13f7SAndroid Build Coastguard Worker }
80*03ce13f7SAndroid Build Coastguard Worker
isSignedUnnormalizedInteger() const81*03ce13f7SAndroid Build Coastguard Worker bool Format::isSignedUnnormalizedInteger() const
82*03ce13f7SAndroid Build Coastguard Worker {
83*03ce13f7SAndroid Build Coastguard Worker switch(format)
84*03ce13f7SAndroid Build Coastguard Worker {
85*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
86*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
87*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
88*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
89*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
90*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
91*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
92*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
93*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
94*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SINT:
95*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
96*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
97*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
98*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
99*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
100*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SINT:
101*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SINT:
102*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SINT:
103*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SINT:
104*03ce13f7SAndroid Build Coastguard Worker return true;
105*03ce13f7SAndroid Build Coastguard Worker default:
106*03ce13f7SAndroid Build Coastguard Worker return false;
107*03ce13f7SAndroid Build Coastguard Worker }
108*03ce13f7SAndroid Build Coastguard Worker }
109*03ce13f7SAndroid Build Coastguard Worker
isUnsignedUnnormalizedInteger() const110*03ce13f7SAndroid Build Coastguard Worker bool Format::isUnsignedUnnormalizedInteger() const
111*03ce13f7SAndroid Build Coastguard Worker {
112*03ce13f7SAndroid Build Coastguard Worker switch(format)
113*03ce13f7SAndroid Build Coastguard Worker {
114*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
115*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
116*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
117*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
118*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
119*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
120*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
121*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
122*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
123*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UINT:
124*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
125*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
126*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
127*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
128*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
129*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_UINT:
130*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_UINT:
131*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
132*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
133*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
134*03ce13f7SAndroid Build Coastguard Worker return true;
135*03ce13f7SAndroid Build Coastguard Worker default:
136*03ce13f7SAndroid Build Coastguard Worker return false;
137*03ce13f7SAndroid Build Coastguard Worker }
138*03ce13f7SAndroid Build Coastguard Worker }
139*03ce13f7SAndroid Build Coastguard Worker
isUnnormalizedInteger() const140*03ce13f7SAndroid Build Coastguard Worker bool Format::isUnnormalizedInteger() const
141*03ce13f7SAndroid Build Coastguard Worker {
142*03ce13f7SAndroid Build Coastguard Worker return isSignedUnnormalizedInteger() || isUnsignedUnnormalizedInteger();
143*03ce13f7SAndroid Build Coastguard Worker }
144*03ce13f7SAndroid Build Coastguard Worker
getAspects() const145*03ce13f7SAndroid Build Coastguard Worker VkImageAspectFlags Format::getAspects() const
146*03ce13f7SAndroid Build Coastguard Worker {
147*03ce13f7SAndroid Build Coastguard Worker // TODO: probably just flatten this out to a full format list, and alter
148*03ce13f7SAndroid Build Coastguard Worker // isDepth / isStencil etc to check for their aspect
149*03ce13f7SAndroid Build Coastguard Worker
150*03ce13f7SAndroid Build Coastguard Worker VkImageAspectFlags aspects = 0;
151*03ce13f7SAndroid Build Coastguard Worker if(isDepth()) aspects |= VK_IMAGE_ASPECT_DEPTH_BIT;
152*03ce13f7SAndroid Build Coastguard Worker if(isStencil()) aspects |= VK_IMAGE_ASPECT_STENCIL_BIT;
153*03ce13f7SAndroid Build Coastguard Worker
154*03ce13f7SAndroid Build Coastguard Worker // YCbCr formats
155*03ce13f7SAndroid Build Coastguard Worker switch(format)
156*03ce13f7SAndroid Build Coastguard Worker {
157*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
158*03ce13f7SAndroid Build Coastguard Worker aspects = VK_IMAGE_ASPECT_PLANE_0_BIT | VK_IMAGE_ASPECT_PLANE_1_BIT | VK_IMAGE_ASPECT_PLANE_2_BIT;
159*03ce13f7SAndroid Build Coastguard Worker break;
160*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
161*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
162*03ce13f7SAndroid Build Coastguard Worker aspects = VK_IMAGE_ASPECT_PLANE_0_BIT | VK_IMAGE_ASPECT_PLANE_1_BIT;
163*03ce13f7SAndroid Build Coastguard Worker break;
164*03ce13f7SAndroid Build Coastguard Worker default:
165*03ce13f7SAndroid Build Coastguard Worker ASSERT(!isYcbcrFormat());
166*03ce13f7SAndroid Build Coastguard Worker break;
167*03ce13f7SAndroid Build Coastguard Worker }
168*03ce13f7SAndroid Build Coastguard Worker
169*03ce13f7SAndroid Build Coastguard Worker // Anything else is "color".
170*03ce13f7SAndroid Build Coastguard Worker if(!aspects) aspects |= VK_IMAGE_ASPECT_COLOR_BIT;
171*03ce13f7SAndroid Build Coastguard Worker return aspects;
172*03ce13f7SAndroid Build Coastguard Worker }
173*03ce13f7SAndroid Build Coastguard Worker
getAspectFormat(VkImageAspectFlags aspect) const174*03ce13f7SAndroid Build Coastguard Worker Format Format::getAspectFormat(VkImageAspectFlags aspect) const
175*03ce13f7SAndroid Build Coastguard Worker {
176*03ce13f7SAndroid Build Coastguard Worker switch(aspect)
177*03ce13f7SAndroid Build Coastguard Worker {
178*03ce13f7SAndroid Build Coastguard Worker case VK_IMAGE_ASPECT_COLOR_BIT:
179*03ce13f7SAndroid Build Coastguard Worker case(VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT):
180*03ce13f7SAndroid Build Coastguard Worker case(VK_IMAGE_ASPECT_PLANE_0_BIT | VK_IMAGE_ASPECT_PLANE_1_BIT):
181*03ce13f7SAndroid Build Coastguard Worker case(VK_IMAGE_ASPECT_PLANE_0_BIT | VK_IMAGE_ASPECT_PLANE_1_BIT | VK_IMAGE_ASPECT_PLANE_2_BIT):
182*03ce13f7SAndroid Build Coastguard Worker return format;
183*03ce13f7SAndroid Build Coastguard Worker
184*03ce13f7SAndroid Build Coastguard Worker case VK_IMAGE_ASPECT_DEPTH_BIT:
185*03ce13f7SAndroid Build Coastguard Worker switch(format)
186*03ce13f7SAndroid Build Coastguard Worker {
187*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
188*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
189*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_D16_UNORM;
190*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
191*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_X8_D24_UNORM_PACK32;
192*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
193*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
194*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_D32_SFLOAT;
195*03ce13f7SAndroid Build Coastguard Worker default:
196*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
197*03ce13f7SAndroid Build Coastguard Worker break;
198*03ce13f7SAndroid Build Coastguard Worker }
199*03ce13f7SAndroid Build Coastguard Worker break;
200*03ce13f7SAndroid Build Coastguard Worker
201*03ce13f7SAndroid Build Coastguard Worker case VK_IMAGE_ASPECT_STENCIL_BIT:
202*03ce13f7SAndroid Build Coastguard Worker switch(format)
203*03ce13f7SAndroid Build Coastguard Worker {
204*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
205*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
206*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
207*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
208*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_S8_UINT;
209*03ce13f7SAndroid Build Coastguard Worker default:
210*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
211*03ce13f7SAndroid Build Coastguard Worker break;
212*03ce13f7SAndroid Build Coastguard Worker }
213*03ce13f7SAndroid Build Coastguard Worker break;
214*03ce13f7SAndroid Build Coastguard Worker
215*03ce13f7SAndroid Build Coastguard Worker // YCbCr formats
216*03ce13f7SAndroid Build Coastguard Worker // Vulkan 1.1 section 32.1.1. Compatible formats of planes of multi-planar formats
217*03ce13f7SAndroid Build Coastguard Worker case VK_IMAGE_ASPECT_PLANE_0_BIT:
218*03ce13f7SAndroid Build Coastguard Worker switch(format)
219*03ce13f7SAndroid Build Coastguard Worker {
220*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
221*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
222*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8_UNORM;
223*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
224*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R10X6_UNORM_PACK16;
225*03ce13f7SAndroid Build Coastguard Worker // 8-bit compatibility class
226*03ce13f7SAndroid Build Coastguard Worker // Compatible format for VK_FORMAT_R8_UNORM
227*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
228*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
229*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
230*03ce13f7SAndroid Build Coastguard Worker // 16-bit compatibility class
231*03ce13f7SAndroid Build Coastguard Worker // Compatible formats with VK_FORMAT_R8G8_UNORM, VK_FORMAT_R10X6_UNORM_PACK16, VK_FORMAT_R12X4_UNORM_PACK16 and VK_FORMAT_R16_UNORM
232*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
233*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
234*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
235*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
236*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
237*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
238*03ce13f7SAndroid Build Coastguard Worker return format;
239*03ce13f7SAndroid Build Coastguard Worker default:
240*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
241*03ce13f7SAndroid Build Coastguard Worker break;
242*03ce13f7SAndroid Build Coastguard Worker }
243*03ce13f7SAndroid Build Coastguard Worker break;
244*03ce13f7SAndroid Build Coastguard Worker
245*03ce13f7SAndroid Build Coastguard Worker case VK_IMAGE_ASPECT_PLANE_1_BIT:
246*03ce13f7SAndroid Build Coastguard Worker switch(format)
247*03ce13f7SAndroid Build Coastguard Worker {
248*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
249*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8_UNORM;
250*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
251*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8G8_UNORM;
252*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
253*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R10X6G10X6_UNORM_2PACK16;
254*03ce13f7SAndroid Build Coastguard Worker // 8-bit compatibility class
255*03ce13f7SAndroid Build Coastguard Worker // Compatible format for VK_FORMAT_R8_UNORM
256*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
257*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
258*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
259*03ce13f7SAndroid Build Coastguard Worker // 16-bit compatibility class
260*03ce13f7SAndroid Build Coastguard Worker // Compatible formats with VK_FORMAT_R8G8_UNORM, VK_FORMAT_R10X6_UNORM_PACK16, VK_FORMAT_R12X4_UNORM_PACK16 and VK_FORMAT_R16_UNORM
261*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
262*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
263*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
264*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
265*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
266*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
267*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
268*03ce13f7SAndroid Build Coastguard Worker // 32-bit compatibility class
269*03ce13f7SAndroid Build Coastguard Worker // Compatible formats for VK_FORMAT_R10X6G10X6_UNORM_2PACK16, VK_FORMAT_R12X4G12X4_UNORM_2PACK16 and VK_FORMAT_R16G16_UNORM
270*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
271*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
272*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
273*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
274*03ce13f7SAndroid Build Coastguard Worker return format;
275*03ce13f7SAndroid Build Coastguard Worker default:
276*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
277*03ce13f7SAndroid Build Coastguard Worker break;
278*03ce13f7SAndroid Build Coastguard Worker }
279*03ce13f7SAndroid Build Coastguard Worker break;
280*03ce13f7SAndroid Build Coastguard Worker
281*03ce13f7SAndroid Build Coastguard Worker case VK_IMAGE_ASPECT_PLANE_2_BIT:
282*03ce13f7SAndroid Build Coastguard Worker switch(format)
283*03ce13f7SAndroid Build Coastguard Worker {
284*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
285*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8_UNORM;
286*03ce13f7SAndroid Build Coastguard Worker // 8-bit compatibility class
287*03ce13f7SAndroid Build Coastguard Worker // Compatible format for VK_FORMAT_R8_UNORM
288*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
289*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
290*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
291*03ce13f7SAndroid Build Coastguard Worker return format;
292*03ce13f7SAndroid Build Coastguard Worker default:
293*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
294*03ce13f7SAndroid Build Coastguard Worker break;
295*03ce13f7SAndroid Build Coastguard Worker }
296*03ce13f7SAndroid Build Coastguard Worker break;
297*03ce13f7SAndroid Build Coastguard Worker
298*03ce13f7SAndroid Build Coastguard Worker default:
299*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("aspect %x", int(aspect));
300*03ce13f7SAndroid Build Coastguard Worker break;
301*03ce13f7SAndroid Build Coastguard Worker }
302*03ce13f7SAndroid Build Coastguard Worker
303*03ce13f7SAndroid Build Coastguard Worker return format;
304*03ce13f7SAndroid Build Coastguard Worker }
305*03ce13f7SAndroid Build Coastguard Worker
getClearFormat() const306*03ce13f7SAndroid Build Coastguard Worker VkFormat Format::getClearFormat() const
307*03ce13f7SAndroid Build Coastguard Worker {
308*03ce13f7SAndroid Build Coastguard Worker // Set the proper format for the clear value, as described here:
309*03ce13f7SAndroid Build Coastguard Worker // https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#clears-values
310*03ce13f7SAndroid Build Coastguard Worker if(isSignedUnnormalizedInteger())
311*03ce13f7SAndroid Build Coastguard Worker {
312*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R32G32B32A32_SINT;
313*03ce13f7SAndroid Build Coastguard Worker }
314*03ce13f7SAndroid Build Coastguard Worker else if(isUnsignedUnnormalizedInteger())
315*03ce13f7SAndroid Build Coastguard Worker {
316*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R32G32B32A32_UINT;
317*03ce13f7SAndroid Build Coastguard Worker }
318*03ce13f7SAndroid Build Coastguard Worker
319*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R32G32B32A32_SFLOAT;
320*03ce13f7SAndroid Build Coastguard Worker }
321*03ce13f7SAndroid Build Coastguard Worker
isStencil() const322*03ce13f7SAndroid Build Coastguard Worker bool Format::isStencil() const
323*03ce13f7SAndroid Build Coastguard Worker {
324*03ce13f7SAndroid Build Coastguard Worker switch(format)
325*03ce13f7SAndroid Build Coastguard Worker {
326*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
327*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
328*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
329*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
330*03ce13f7SAndroid Build Coastguard Worker return true;
331*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
332*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
333*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
334*03ce13f7SAndroid Build Coastguard Worker default:
335*03ce13f7SAndroid Build Coastguard Worker return false;
336*03ce13f7SAndroid Build Coastguard Worker }
337*03ce13f7SAndroid Build Coastguard Worker }
338*03ce13f7SAndroid Build Coastguard Worker
isDepth() const339*03ce13f7SAndroid Build Coastguard Worker bool Format::isDepth() const
340*03ce13f7SAndroid Build Coastguard Worker {
341*03ce13f7SAndroid Build Coastguard Worker switch(format)
342*03ce13f7SAndroid Build Coastguard Worker {
343*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
344*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
345*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
346*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
347*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
348*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
349*03ce13f7SAndroid Build Coastguard Worker return true;
350*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
351*03ce13f7SAndroid Build Coastguard Worker default:
352*03ce13f7SAndroid Build Coastguard Worker return false;
353*03ce13f7SAndroid Build Coastguard Worker }
354*03ce13f7SAndroid Build Coastguard Worker }
355*03ce13f7SAndroid Build Coastguard Worker
isBGRformat() const356*03ce13f7SAndroid Build Coastguard Worker bool Format::isBGRformat() const
357*03ce13f7SAndroid Build Coastguard Worker {
358*03ce13f7SAndroid Build Coastguard Worker switch(format)
359*03ce13f7SAndroid Build Coastguard Worker {
360*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
361*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
362*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
363*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
364*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_UNORM:
365*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_SNORM:
366*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_USCALED:
367*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_SSCALED:
368*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_UINT:
369*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_SINT:
370*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8_SRGB:
371*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
372*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
373*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
374*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
375*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
376*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
377*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
378*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
379*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
380*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
381*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
382*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
383*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
384*03ce13f7SAndroid Build Coastguard Worker return true;
385*03ce13f7SAndroid Build Coastguard Worker default:
386*03ce13f7SAndroid Build Coastguard Worker return false;
387*03ce13f7SAndroid Build Coastguard Worker }
388*03ce13f7SAndroid Build Coastguard Worker }
389*03ce13f7SAndroid Build Coastguard Worker
isSRGBformat() const390*03ce13f7SAndroid Build Coastguard Worker bool Format::isSRGBformat() const
391*03ce13f7SAndroid Build Coastguard Worker {
392*03ce13f7SAndroid Build Coastguard Worker switch(format)
393*03ce13f7SAndroid Build Coastguard Worker {
394*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
395*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
396*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
397*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
398*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
399*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
400*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
401*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
402*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
403*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
404*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
405*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
406*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
407*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
408*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
409*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
410*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
411*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
412*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
413*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
414*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
415*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
416*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
417*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
418*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
419*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
420*03ce13f7SAndroid Build Coastguard Worker return true;
421*03ce13f7SAndroid Build Coastguard Worker default:
422*03ce13f7SAndroid Build Coastguard Worker return false;
423*03ce13f7SAndroid Build Coastguard Worker }
424*03ce13f7SAndroid Build Coastguard Worker }
425*03ce13f7SAndroid Build Coastguard Worker
isFloatFormat() const426*03ce13f7SAndroid Build Coastguard Worker bool Format::isFloatFormat() const
427*03ce13f7SAndroid Build Coastguard Worker {
428*03ce13f7SAndroid Build Coastguard Worker switch(format)
429*03ce13f7SAndroid Build Coastguard Worker {
430*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
431*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
432*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
433*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
434*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
435*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
436*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
437*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
438*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
439*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
440*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
441*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
442*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
443*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
444*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
445*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
446*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
447*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
448*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
449*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
450*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
451*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
452*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
453*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
454*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
455*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
456*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
457*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
458*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
459*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
460*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
461*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
462*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
463*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
464*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
465*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
466*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
467*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
468*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
469*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
470*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
471*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
472*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
473*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
474*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
475*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
476*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
477*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
478*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
479*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
480*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
481*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
482*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
483*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
484*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
485*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
486*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
487*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
488*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
489*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
490*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
491*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
492*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
493*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
494*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
495*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
496*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
497*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
498*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
499*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
500*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
501*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
502*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
503*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UINT:
504*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SINT:
505*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
506*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
507*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
508*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
509*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
510*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
511*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
512*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
513*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
514*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
515*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
516*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
517*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
518*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
519*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_UINT:
520*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SINT:
521*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_UINT:
522*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SINT:
523*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
524*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SINT:
525*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
526*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SINT:
527*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
528*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
529*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
530*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
531*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
532*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
533*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
534*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
535*03ce13f7SAndroid Build Coastguard Worker return false;
536*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
537*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
538*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
539*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
540*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
541*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
542*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
543*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
544*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SFLOAT:
545*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SFLOAT:
546*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SFLOAT:
547*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SFLOAT:
548*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
549*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
550*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
551*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
552*03ce13f7SAndroid Build Coastguard Worker return true;
553*03ce13f7SAndroid Build Coastguard Worker default:
554*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
555*03ce13f7SAndroid Build Coastguard Worker }
556*03ce13f7SAndroid Build Coastguard Worker
557*03ce13f7SAndroid Build Coastguard Worker return false;
558*03ce13f7SAndroid Build Coastguard Worker }
559*03ce13f7SAndroid Build Coastguard Worker
isYcbcrFormat() const560*03ce13f7SAndroid Build Coastguard Worker bool Format::isYcbcrFormat() const
561*03ce13f7SAndroid Build Coastguard Worker {
562*03ce13f7SAndroid Build Coastguard Worker switch(format)
563*03ce13f7SAndroid Build Coastguard Worker {
564*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
565*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
566*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
567*03ce13f7SAndroid Build Coastguard Worker return true;
568*03ce13f7SAndroid Build Coastguard Worker default:
569*03ce13f7SAndroid Build Coastguard Worker return false;
570*03ce13f7SAndroid Build Coastguard Worker }
571*03ce13f7SAndroid Build Coastguard Worker }
572*03ce13f7SAndroid Build Coastguard Worker
isCompressed() const573*03ce13f7SAndroid Build Coastguard Worker bool Format::isCompressed() const
574*03ce13f7SAndroid Build Coastguard Worker {
575*03ce13f7SAndroid Build Coastguard Worker switch(format)
576*03ce13f7SAndroid Build Coastguard Worker {
577*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
578*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
579*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
580*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
581*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
582*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
583*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
584*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
585*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
586*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
587*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
588*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
589*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
590*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
591*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
592*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
593*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
594*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
595*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
596*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
597*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
598*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
599*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
600*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
601*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
602*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
603*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
604*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
605*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
606*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
607*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
608*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
609*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
610*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
611*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
612*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
613*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
614*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
615*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
616*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
617*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
618*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
619*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
620*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
621*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
622*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
623*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
624*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
625*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
626*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
627*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
628*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
629*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
630*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
631*03ce13f7SAndroid Build Coastguard Worker return true;
632*03ce13f7SAndroid Build Coastguard Worker default:
633*03ce13f7SAndroid Build Coastguard Worker return false;
634*03ce13f7SAndroid Build Coastguard Worker }
635*03ce13f7SAndroid Build Coastguard Worker }
636*03ce13f7SAndroid Build Coastguard Worker
getDecompressedFormat() const637*03ce13f7SAndroid Build Coastguard Worker VkFormat Format::getDecompressedFormat() const
638*03ce13f7SAndroid Build Coastguard Worker {
639*03ce13f7SAndroid Build Coastguard Worker // Note: our ETC2 decoder decompresses the 64 bit RGB compressed texel data to B8G8R8
640*03ce13f7SAndroid Build Coastguard Worker switch(format)
641*03ce13f7SAndroid Build Coastguard Worker {
642*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
643*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_B8G8R8A8_UNORM;
644*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
645*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_B8G8R8A8_SRGB;
646*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
647*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
648*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_B8G8R8A8_UNORM;
649*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
650*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
651*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_B8G8R8A8_SRGB;
652*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
653*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16_UNORM;
654*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
655*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16_SNORM;
656*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
657*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16G16_UNORM;
658*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
659*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16G16_SNORM;
660*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
661*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
662*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
663*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
664*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
665*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_B8G8R8A8_UNORM;
666*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
667*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
668*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
669*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
670*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
671*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_B8G8R8A8_SRGB;
672*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
673*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8_UNORM;
674*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
675*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8_SNORM;
676*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
677*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8G8_UNORM;
678*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
679*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8G8_SNORM;
680*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
681*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
682*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
683*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
684*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
685*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
686*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
687*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
688*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
689*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
690*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
691*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
692*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
693*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
694*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8G8B8A8_UNORM;
695*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
696*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
697*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
698*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
699*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
700*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
701*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
702*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
703*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
704*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
705*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
706*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
707*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
708*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
709*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8G8B8A8_SRGB;
710*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
711*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
712*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16G16B16A16_SFLOAT;
713*03ce13f7SAndroid Build Coastguard Worker default:
714*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format: %d", int(format));
715*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_UNDEFINED;
716*03ce13f7SAndroid Build Coastguard Worker }
717*03ce13f7SAndroid Build Coastguard Worker }
718*03ce13f7SAndroid Build Coastguard Worker
getCompatibleFormats() const719*03ce13f7SAndroid Build Coastguard Worker std::vector<Format> Format::getCompatibleFormats() const
720*03ce13f7SAndroid Build Coastguard Worker {
721*03ce13f7SAndroid Build Coastguard Worker switch(getCompatibilityClassRepresentative())
722*03ce13f7SAndroid Build Coastguard Worker {
723*03ce13f7SAndroid Build Coastguard Worker // 8 - bit, Block size 1 byte, 1 texel / block
724*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
725*03ce13f7SAndroid Build Coastguard Worker return {
726*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R4G4_UNORM_PACK8,
727*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_UNORM,
728*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_SNORM,
729*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_USCALED,
730*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_SSCALED,
731*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_UINT,
732*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_SINT,
733*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8_SRGB,
734*03ce13f7SAndroid Build Coastguard Worker };
735*03ce13f7SAndroid Build Coastguard Worker
736*03ce13f7SAndroid Build Coastguard Worker // 16 - bit, Block size 2 bytes, 1 texel / block
737*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
738*03ce13f7SAndroid Build Coastguard Worker return {
739*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R4G4B4A4_UNORM_PACK16,
740*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B4G4R4A4_UNORM_PACK16,
741*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A4R4G4B4_UNORM_PACK16,
742*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A4B4G4R4_UNORM_PACK16,
743*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R5G6B5_UNORM_PACK16,
744*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B5G6R5_UNORM_PACK16,
745*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R5G5B5A1_UNORM_PACK16,
746*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B5G5R5A1_UNORM_PACK16,
747*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A1R5G5B5_UNORM_PACK16,
748*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_UNORM,
749*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_SNORM,
750*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_USCALED,
751*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_SSCALED,
752*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_UINT,
753*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_SINT,
754*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8_SRGB,
755*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_UNORM,
756*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_SNORM,
757*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_USCALED,
758*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_SSCALED,
759*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_UINT,
760*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_SINT,
761*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16_SFLOAT,
762*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R10X6_UNORM_PACK16,
763*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R12X4_UNORM_PACK16,
764*03ce13f7SAndroid Build Coastguard Worker };
765*03ce13f7SAndroid Build Coastguard Worker
766*03ce13f7SAndroid Build Coastguard Worker // 32 - bit, Block size 4 bytes, 1 texel / block
767*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
768*03ce13f7SAndroid Build Coastguard Worker return {
769*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_UNORM,
770*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_SNORM,
771*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_USCALED,
772*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_SSCALED,
773*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_UINT,
774*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_SINT,
775*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R8G8B8A8_SRGB,
776*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_UNORM,
777*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_SNORM,
778*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_USCALED,
779*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_SSCALED,
780*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_UINT,
781*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_SINT,
782*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B8G8R8A8_SRGB,
783*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_UNORM_PACK32,
784*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_SNORM_PACK32,
785*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_USCALED_PACK32,
786*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
787*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_UINT_PACK32,
788*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_SINT_PACK32,
789*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A8B8G8R8_SRGB_PACK32,
790*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2R10G10B10_UNORM_PACK32,
791*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2R10G10B10_SNORM_PACK32,
792*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2R10G10B10_USCALED_PACK32,
793*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
794*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2R10G10B10_UINT_PACK32,
795*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2R10G10B10_SINT_PACK32,
796*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2B10G10R10_UNORM_PACK32,
797*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2B10G10R10_SNORM_PACK32,
798*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2B10G10R10_USCALED_PACK32,
799*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
800*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2B10G10R10_UINT_PACK32,
801*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_A2B10G10R10_SINT_PACK32,
802*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_UNORM,
803*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_SNORM,
804*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_USCALED,
805*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_SSCALED,
806*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_UINT,
807*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_SINT,
808*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16_SFLOAT,
809*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32_UINT,
810*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32_SINT,
811*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32_SFLOAT,
812*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_B10G11R11_UFLOAT_PACK32,
813*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
814*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
815*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
816*03ce13f7SAndroid Build Coastguard Worker };
817*03ce13f7SAndroid Build Coastguard Worker
818*03ce13f7SAndroid Build Coastguard Worker // 48 - bit, Block size 6 bytes, 1 texel / block
819*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
820*03ce13f7SAndroid Build Coastguard Worker return {
821*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_UNORM,
822*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_SNORM,
823*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_USCALED,
824*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_SSCALED,
825*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_UINT,
826*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_SINT,
827*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16_SFLOAT,
828*03ce13f7SAndroid Build Coastguard Worker };
829*03ce13f7SAndroid Build Coastguard Worker
830*03ce13f7SAndroid Build Coastguard Worker // 64 - bit, Block size 8 bytes, 1 texel / block
831*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
832*03ce13f7SAndroid Build Coastguard Worker return {
833*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_UNORM,
834*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_SNORM,
835*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_USCALED,
836*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_SSCALED,
837*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_UINT,
838*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_SINT,
839*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R16G16B16A16_SFLOAT,
840*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32_UINT,
841*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32_SINT,
842*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32_SFLOAT,
843*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64_UINT,
844*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64_SINT,
845*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64_SFLOAT,
846*03ce13f7SAndroid Build Coastguard Worker };
847*03ce13f7SAndroid Build Coastguard Worker
848*03ce13f7SAndroid Build Coastguard Worker // 96 - bit, Block size 12 bytes, 1 texel / block
849*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
850*03ce13f7SAndroid Build Coastguard Worker return {
851*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32B32_UINT,
852*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32B32_SINT,
853*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32B32_SFLOAT,
854*03ce13f7SAndroid Build Coastguard Worker };
855*03ce13f7SAndroid Build Coastguard Worker
856*03ce13f7SAndroid Build Coastguard Worker // 128 - bit, Block size 16 bytes, 1 texel / block
857*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
858*03ce13f7SAndroid Build Coastguard Worker return {
859*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32B32A32_UINT,
860*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32B32A32_SINT,
861*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R32G32B32A32_SFLOAT,
862*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64_UINT,
863*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64_SINT,
864*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64_SFLOAT,
865*03ce13f7SAndroid Build Coastguard Worker };
866*03ce13f7SAndroid Build Coastguard Worker
867*03ce13f7SAndroid Build Coastguard Worker // 192 - bit, Block size 24 bytes, 1 texel / block
868*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
869*03ce13f7SAndroid Build Coastguard Worker return {
870*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64B64_UINT,
871*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64B64_SINT,
872*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64B64_SFLOAT,
873*03ce13f7SAndroid Build Coastguard Worker };
874*03ce13f7SAndroid Build Coastguard Worker
875*03ce13f7SAndroid Build Coastguard Worker // 256 - bit, Block size 32 bytes, 1 texel / block
876*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
877*03ce13f7SAndroid Build Coastguard Worker return {
878*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64B64A64_UINT,
879*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64B64A64_SINT,
880*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_R64G64B64A64_SFLOAT,
881*03ce13f7SAndroid Build Coastguard Worker };
882*03ce13f7SAndroid Build Coastguard Worker
883*03ce13f7SAndroid Build Coastguard Worker // BC1_RGB(64 bit), Block size 8 bytes, 16 texels / block
884*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
885*03ce13f7SAndroid Build Coastguard Worker return {
886*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC1_RGB_UNORM_BLOCK,
887*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC1_RGB_SRGB_BLOCK,
888*03ce13f7SAndroid Build Coastguard Worker };
889*03ce13f7SAndroid Build Coastguard Worker
890*03ce13f7SAndroid Build Coastguard Worker // BC1_RGBA(64 bit), Block size 8 bytes, 16 texels / block
891*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
892*03ce13f7SAndroid Build Coastguard Worker return {
893*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
894*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
895*03ce13f7SAndroid Build Coastguard Worker };
896*03ce13f7SAndroid Build Coastguard Worker
897*03ce13f7SAndroid Build Coastguard Worker // BC2(128 bit), Block size 16 bytes, 16 texels / block
898*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
899*03ce13f7SAndroid Build Coastguard Worker return {
900*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC2_UNORM_BLOCK,
901*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC2_SRGB_BLOCK,
902*03ce13f7SAndroid Build Coastguard Worker };
903*03ce13f7SAndroid Build Coastguard Worker
904*03ce13f7SAndroid Build Coastguard Worker // BC3(128 bit), Block size 16 bytes, 16 texels / block
905*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
906*03ce13f7SAndroid Build Coastguard Worker return {
907*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC3_UNORM_BLOCK,
908*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC3_SRGB_BLOCK,
909*03ce13f7SAndroid Build Coastguard Worker };
910*03ce13f7SAndroid Build Coastguard Worker
911*03ce13f7SAndroid Build Coastguard Worker // BC4(64 bit), Block size 8 bytes, 16 texels / block
912*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
913*03ce13f7SAndroid Build Coastguard Worker return {
914*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC4_UNORM_BLOCK,
915*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC4_SNORM_BLOCK,
916*03ce13f7SAndroid Build Coastguard Worker };
917*03ce13f7SAndroid Build Coastguard Worker
918*03ce13f7SAndroid Build Coastguard Worker // BC5(128 bit), Block size 16 bytes, 16 texels / block
919*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
920*03ce13f7SAndroid Build Coastguard Worker return {
921*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC5_UNORM_BLOCK,
922*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC5_SNORM_BLOCK,
923*03ce13f7SAndroid Build Coastguard Worker };
924*03ce13f7SAndroid Build Coastguard Worker
925*03ce13f7SAndroid Build Coastguard Worker // BC6H(128 bit), Block size 16 bytes, 16 texels / block
926*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
927*03ce13f7SAndroid Build Coastguard Worker return {
928*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC6H_UFLOAT_BLOCK,
929*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC6H_SFLOAT_BLOCK,
930*03ce13f7SAndroid Build Coastguard Worker };
931*03ce13f7SAndroid Build Coastguard Worker
932*03ce13f7SAndroid Build Coastguard Worker // BC7(128 bit), Block size 16 bytes, 16 texels / block
933*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
934*03ce13f7SAndroid Build Coastguard Worker return {
935*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC7_UNORM_BLOCK,
936*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_BC7_SRGB_BLOCK,
937*03ce13f7SAndroid Build Coastguard Worker };
938*03ce13f7SAndroid Build Coastguard Worker
939*03ce13f7SAndroid Build Coastguard Worker // ETC2_RGB(64 bit), Block size 8 bytes, 16 texels / block
940*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
941*03ce13f7SAndroid Build Coastguard Worker return {
942*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
943*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
944*03ce13f7SAndroid Build Coastguard Worker };
945*03ce13f7SAndroid Build Coastguard Worker
946*03ce13f7SAndroid Build Coastguard Worker // ETC2_RGBA(64 bit), Block size 8 bytes, 16 texels / block
947*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
948*03ce13f7SAndroid Build Coastguard Worker return {
949*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
950*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
951*03ce13f7SAndroid Build Coastguard Worker };
952*03ce13f7SAndroid Build Coastguard Worker
953*03ce13f7SAndroid Build Coastguard Worker // ETC2_EAC_RGBA(64 bit), Block size 8 bytes, 16 texels / block
954*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
955*03ce13f7SAndroid Build Coastguard Worker return {
956*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
957*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
958*03ce13f7SAndroid Build Coastguard Worker };
959*03ce13f7SAndroid Build Coastguard Worker
960*03ce13f7SAndroid Build Coastguard Worker // EAC_R(64 bit), Block size 8 bytes, 16 texels / block
961*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
962*03ce13f7SAndroid Build Coastguard Worker return {
963*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_EAC_R11_UNORM_BLOCK,
964*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_EAC_R11_SNORM_BLOCK,
965*03ce13f7SAndroid Build Coastguard Worker };
966*03ce13f7SAndroid Build Coastguard Worker
967*03ce13f7SAndroid Build Coastguard Worker // EAC_RG(128 bit), Block size 16 bytes, 16 texels / block
968*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
969*03ce13f7SAndroid Build Coastguard Worker return {
970*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
971*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
972*03ce13f7SAndroid Build Coastguard Worker };
973*03ce13f7SAndroid Build Coastguard Worker
974*03ce13f7SAndroid Build Coastguard Worker // ASTC_4x4(128 bit), Block size 16 bytes, 16 texels / block
975*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
976*03ce13f7SAndroid Build Coastguard Worker return {
977*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
978*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
979*03ce13f7SAndroid Build Coastguard Worker };
980*03ce13f7SAndroid Build Coastguard Worker
981*03ce13f7SAndroid Build Coastguard Worker // ASTC_5x4(128 bit), Block size 16 bytes, 20 texels / block
982*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
983*03ce13f7SAndroid Build Coastguard Worker return {
984*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
985*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
986*03ce13f7SAndroid Build Coastguard Worker };
987*03ce13f7SAndroid Build Coastguard Worker
988*03ce13f7SAndroid Build Coastguard Worker // ASTC_5x5(128 bit), Block size 16 bytes, 25 texels / block
989*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
990*03ce13f7SAndroid Build Coastguard Worker return {
991*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
992*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
993*03ce13f7SAndroid Build Coastguard Worker };
994*03ce13f7SAndroid Build Coastguard Worker
995*03ce13f7SAndroid Build Coastguard Worker // ASTC_6x5(128 bit), Block size 16 bytes, 30 texels / block
996*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
997*03ce13f7SAndroid Build Coastguard Worker return {
998*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
999*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
1000*03ce13f7SAndroid Build Coastguard Worker };
1001*03ce13f7SAndroid Build Coastguard Worker
1002*03ce13f7SAndroid Build Coastguard Worker // ASTC_6x6(128 bit), Block size 16 bytes, 36 texels / block
1003*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1004*03ce13f7SAndroid Build Coastguard Worker return {
1005*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
1006*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
1007*03ce13f7SAndroid Build Coastguard Worker };
1008*03ce13f7SAndroid Build Coastguard Worker
1009*03ce13f7SAndroid Build Coastguard Worker // ASTC_8x5(128 bit), Block size 16 bytes, 40 texels / block
1010*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1011*03ce13f7SAndroid Build Coastguard Worker return {
1012*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
1013*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
1014*03ce13f7SAndroid Build Coastguard Worker };
1015*03ce13f7SAndroid Build Coastguard Worker
1016*03ce13f7SAndroid Build Coastguard Worker // ASTC_8x6(128 bit), Block size 16 bytes, 48 texels / block
1017*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1018*03ce13f7SAndroid Build Coastguard Worker return {
1019*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
1020*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
1021*03ce13f7SAndroid Build Coastguard Worker };
1022*03ce13f7SAndroid Build Coastguard Worker
1023*03ce13f7SAndroid Build Coastguard Worker // ASTC_8x8(128 bit), Block size 16 bytes, 64 texels / block
1024*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1025*03ce13f7SAndroid Build Coastguard Worker return {
1026*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
1027*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
1028*03ce13f7SAndroid Build Coastguard Worker };
1029*03ce13f7SAndroid Build Coastguard Worker
1030*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x5(128 bit), Block size 16 bytes, 50 texels / block
1031*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1032*03ce13f7SAndroid Build Coastguard Worker return {
1033*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
1034*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
1035*03ce13f7SAndroid Build Coastguard Worker };
1036*03ce13f7SAndroid Build Coastguard Worker
1037*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x6(128 bit), Block size 16 bytes, 60 texels / block
1038*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1039*03ce13f7SAndroid Build Coastguard Worker return {
1040*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
1041*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
1042*03ce13f7SAndroid Build Coastguard Worker };
1043*03ce13f7SAndroid Build Coastguard Worker
1044*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x8(128 bit), Block size 16 bytes, 80 texels / block
1045*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1046*03ce13f7SAndroid Build Coastguard Worker return {
1047*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
1048*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
1049*03ce13f7SAndroid Build Coastguard Worker };
1050*03ce13f7SAndroid Build Coastguard Worker
1051*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x10(128 bit), Block size 16 bytes, 100 texels / block
1052*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1053*03ce13f7SAndroid Build Coastguard Worker return {
1054*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
1055*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
1056*03ce13f7SAndroid Build Coastguard Worker };
1057*03ce13f7SAndroid Build Coastguard Worker
1058*03ce13f7SAndroid Build Coastguard Worker // ASTC_12x10(128 bit), Block size 16 bytes, 120 texels / block
1059*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1060*03ce13f7SAndroid Build Coastguard Worker return {
1061*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
1062*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
1063*03ce13f7SAndroid Build Coastguard Worker };
1064*03ce13f7SAndroid Build Coastguard Worker
1065*03ce13f7SAndroid Build Coastguard Worker // ASTC_12x12(128 bit), Block size 16 bytes, 144 texels / block
1066*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1067*03ce13f7SAndroid Build Coastguard Worker return {
1068*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
1069*03ce13f7SAndroid Build Coastguard Worker VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
1070*03ce13f7SAndroid Build Coastguard Worker };
1071*03ce13f7SAndroid Build Coastguard Worker
1072*03ce13f7SAndroid Build Coastguard Worker // All other formats are only compatible with themselves
1073*03ce13f7SAndroid Build Coastguard Worker default:
1074*03ce13f7SAndroid Build Coastguard Worker ASSERT(getCompatibilityClassRepresentative() == format);
1075*03ce13f7SAndroid Build Coastguard Worker return { format };
1076*03ce13f7SAndroid Build Coastguard Worker }
1077*03ce13f7SAndroid Build Coastguard Worker }
1078*03ce13f7SAndroid Build Coastguard Worker
1079*03ce13f7SAndroid Build Coastguard Worker // Returns a single format per class of compatible formats.
getCompatibilityClassRepresentative() const1080*03ce13f7SAndroid Build Coastguard Worker VkFormat Format::getCompatibilityClassRepresentative() const
1081*03ce13f7SAndroid Build Coastguard Worker {
1082*03ce13f7SAndroid Build Coastguard Worker // According to the Vulkan 1.1 Spec, 37.1.6. Format Compatibility Classes:
1083*03ce13f7SAndroid Build Coastguard Worker // "Uncompressed color formats are compatible with each other if they occupy
1084*03ce13f7SAndroid Build Coastguard Worker // the same number of bits per texel block. Compressed color formats are
1085*03ce13f7SAndroid Build Coastguard Worker // compatible with each other if the only difference between them is the
1086*03ce13f7SAndroid Build Coastguard Worker // numerical type of the uncompressed pixels (e.g. signed vs. unsigned, or
1087*03ce13f7SAndroid Build Coastguard Worker // SRGB vs. UNORM encoding). Each depth/stencil format is only compatible
1088*03ce13f7SAndroid Build Coastguard Worker // with itself. In the following table, all the formats in the same row are
1089*03ce13f7SAndroid Build Coastguard Worker // compatible."
1090*03ce13f7SAndroid Build Coastguard Worker
1091*03ce13f7SAndroid Build Coastguard Worker switch(format)
1092*03ce13f7SAndroid Build Coastguard Worker {
1093*03ce13f7SAndroid Build Coastguard Worker // 8 - bit, Block size 1 byte, 1 texel / block
1094*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
1095*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
1096*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
1097*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
1098*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
1099*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
1100*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
1101*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
1102*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8_UNORM;
1103*03ce13f7SAndroid Build Coastguard Worker
1104*03ce13f7SAndroid Build Coastguard Worker // 16 - bit, Block size 2 bytes, 1 texel / block
1105*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
1106*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
1107*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
1108*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
1109*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
1110*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
1111*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
1112*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
1113*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
1114*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
1115*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
1116*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
1117*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
1118*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
1119*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
1120*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
1121*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
1122*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
1123*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
1124*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
1125*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
1126*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
1127*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
1128*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R10X6_UNORM_PACK16:
1129*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R12X4_UNORM_PACK16:
1130*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16_UNORM;
1131*03ce13f7SAndroid Build Coastguard Worker
1132*03ce13f7SAndroid Build Coastguard Worker // 32 - bit, Block size 4 bytes, 1 texel / block
1133*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
1134*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
1135*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
1136*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
1137*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
1138*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
1139*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
1140*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
1141*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
1142*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
1143*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
1144*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
1145*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
1146*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
1147*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
1148*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
1149*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
1150*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
1151*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
1152*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
1153*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
1154*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
1155*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
1156*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
1157*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
1158*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
1159*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
1160*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
1161*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
1162*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
1163*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
1164*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
1165*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
1166*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
1167*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
1168*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
1169*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
1170*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
1171*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
1172*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
1173*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
1174*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
1175*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
1176*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
1177*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
1178*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:
1179*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:
1180*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R8G8B8A8_UNORM;
1181*03ce13f7SAndroid Build Coastguard Worker
1182*03ce13f7SAndroid Build Coastguard Worker // 48 - bit, Block size 6 bytes, 1 texel / block
1183*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
1184*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
1185*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
1186*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
1187*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UINT:
1188*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SINT:
1189*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
1190*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16G16B16_UNORM;
1191*03ce13f7SAndroid Build Coastguard Worker
1192*03ce13f7SAndroid Build Coastguard Worker // 64 - bit, Block size 8 bytes, 1 texel / block
1193*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
1194*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
1195*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
1196*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
1197*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
1198*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
1199*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
1200*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
1201*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
1202*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
1203*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_UINT:
1204*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SINT:
1205*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SFLOAT:
1206*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R16G16B16A16_UNORM;
1207*03ce13f7SAndroid Build Coastguard Worker
1208*03ce13f7SAndroid Build Coastguard Worker // 96 - bit, Block size 12 bytes, 1 texel / block
1209*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
1210*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
1211*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
1212*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R32G32B32_UINT;
1213*03ce13f7SAndroid Build Coastguard Worker
1214*03ce13f7SAndroid Build Coastguard Worker // 128 - bit, Block size 16 bytes, 1 texel / block
1215*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
1216*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
1217*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
1218*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_UINT:
1219*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SINT:
1220*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SFLOAT:
1221*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R32G32B32A32_UINT;
1222*03ce13f7SAndroid Build Coastguard Worker
1223*03ce13f7SAndroid Build Coastguard Worker // 192 - bit, Block size 24 bytes, 1 texel / block
1224*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
1225*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SINT:
1226*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SFLOAT:
1227*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R64G64B64_UINT;
1228*03ce13f7SAndroid Build Coastguard Worker
1229*03ce13f7SAndroid Build Coastguard Worker // 256 - bit, Block size 32 bytes, 1 texel / block
1230*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
1231*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SINT:
1232*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SFLOAT:
1233*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_R64G64B64A64_UINT;
1234*03ce13f7SAndroid Build Coastguard Worker
1235*03ce13f7SAndroid Build Coastguard Worker // BC1_RGB(64 bit), Block size 8 bytes, 16 texels / block
1236*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
1237*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
1238*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC1_RGB_UNORM_BLOCK;
1239*03ce13f7SAndroid Build Coastguard Worker
1240*03ce13f7SAndroid Build Coastguard Worker // BC1_RGBA(64 bit), Block size 8 bytes, 16 texels / block
1241*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
1242*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
1243*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC1_RGBA_UNORM_BLOCK;
1244*03ce13f7SAndroid Build Coastguard Worker
1245*03ce13f7SAndroid Build Coastguard Worker // BC2(128 bit), Block size 16 bytes, 16 texels / block
1246*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
1247*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
1248*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC2_UNORM_BLOCK;
1249*03ce13f7SAndroid Build Coastguard Worker
1250*03ce13f7SAndroid Build Coastguard Worker // BC3(128 bit), Block size 16 bytes, 16 texels / block
1251*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
1252*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
1253*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC3_UNORM_BLOCK;
1254*03ce13f7SAndroid Build Coastguard Worker
1255*03ce13f7SAndroid Build Coastguard Worker // BC4(64 bit), Block size 8 bytes, 16 texels / block
1256*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
1257*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
1258*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC4_UNORM_BLOCK;
1259*03ce13f7SAndroid Build Coastguard Worker
1260*03ce13f7SAndroid Build Coastguard Worker // BC5(128 bit), Block size 16 bytes, 16 texels / block
1261*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
1262*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
1263*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC5_UNORM_BLOCK;
1264*03ce13f7SAndroid Build Coastguard Worker
1265*03ce13f7SAndroid Build Coastguard Worker // BC6H(128 bit), Block size 16 bytes, 16 texels / block
1266*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
1267*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
1268*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC6H_UFLOAT_BLOCK;
1269*03ce13f7SAndroid Build Coastguard Worker
1270*03ce13f7SAndroid Build Coastguard Worker // BC7(128 bit), Block size 16 bytes, 16 texels / block
1271*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
1272*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
1273*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_BC7_UNORM_BLOCK;
1274*03ce13f7SAndroid Build Coastguard Worker
1275*03ce13f7SAndroid Build Coastguard Worker // ETC2_RGB(64 bit), Block size 8 bytes, 16 texels / block
1276*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
1277*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
1278*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK;
1279*03ce13f7SAndroid Build Coastguard Worker
1280*03ce13f7SAndroid Build Coastguard Worker // ETC2_RGBA(64 bit), Block size 8 bytes, 16 texels / block
1281*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
1282*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
1283*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK;
1284*03ce13f7SAndroid Build Coastguard Worker
1285*03ce13f7SAndroid Build Coastguard Worker // ETC2_EAC_RGBA(64 bit), Block size 8 bytes, 16 texels / block
1286*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
1287*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
1288*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK;
1289*03ce13f7SAndroid Build Coastguard Worker
1290*03ce13f7SAndroid Build Coastguard Worker // EAC_R(64 bit), Block size 8 bytes, 16 texels / block
1291*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
1292*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
1293*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_EAC_R11_UNORM_BLOCK;
1294*03ce13f7SAndroid Build Coastguard Worker
1295*03ce13f7SAndroid Build Coastguard Worker // EAC_RG(128 bit), Block size 16 bytes, 16 texels / block
1296*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
1297*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
1298*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_EAC_R11G11_UNORM_BLOCK;
1299*03ce13f7SAndroid Build Coastguard Worker
1300*03ce13f7SAndroid Build Coastguard Worker // ASTC_4x4(128 bit), Block size 16 bytes, 16 texels / block
1301*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
1302*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
1303*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_4x4_UNORM_BLOCK;
1304*03ce13f7SAndroid Build Coastguard Worker
1305*03ce13f7SAndroid Build Coastguard Worker // ASTC_5x4(128 bit), Block size 16 bytes, 20 texels / block
1306*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
1307*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
1308*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_5x4_UNORM_BLOCK;
1309*03ce13f7SAndroid Build Coastguard Worker
1310*03ce13f7SAndroid Build Coastguard Worker // ASTC_5x5(128 bit), Block size 16 bytes, 25 texels / block
1311*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
1312*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
1313*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_5x5_UNORM_BLOCK;
1314*03ce13f7SAndroid Build Coastguard Worker
1315*03ce13f7SAndroid Build Coastguard Worker // ASTC_6x5(128 bit), Block size 16 bytes, 30 texels / block
1316*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
1317*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
1318*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_6x5_UNORM_BLOCK;
1319*03ce13f7SAndroid Build Coastguard Worker
1320*03ce13f7SAndroid Build Coastguard Worker // ASTC_6x6(128 bit), Block size 16 bytes, 36 texels / block
1321*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1322*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
1323*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_6x6_UNORM_BLOCK;
1324*03ce13f7SAndroid Build Coastguard Worker
1325*03ce13f7SAndroid Build Coastguard Worker // ASTC_8x5(128 bit), Block size 16 bytes, 40 texels / block
1326*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1327*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
1328*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_8x5_UNORM_BLOCK;
1329*03ce13f7SAndroid Build Coastguard Worker
1330*03ce13f7SAndroid Build Coastguard Worker // ASTC_8x6(128 bit), Block size 16 bytes, 48 texels / block
1331*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1332*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
1333*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_8x6_UNORM_BLOCK;
1334*03ce13f7SAndroid Build Coastguard Worker
1335*03ce13f7SAndroid Build Coastguard Worker // ASTC_8x8(128 bit), Block size 16 bytes, 64 texels / block
1336*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1337*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
1338*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_8x8_UNORM_BLOCK;
1339*03ce13f7SAndroid Build Coastguard Worker
1340*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x5(128 bit), Block size 16 bytes, 50 texels / block
1341*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1342*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
1343*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_10x5_UNORM_BLOCK;
1344*03ce13f7SAndroid Build Coastguard Worker
1345*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x6(128 bit), Block size 16 bytes, 60 texels / block
1346*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1347*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
1348*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_10x6_UNORM_BLOCK;
1349*03ce13f7SAndroid Build Coastguard Worker
1350*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x8(128 bit), Block size 16 bytes, 80 texels / block
1351*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1352*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
1353*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_10x8_UNORM_BLOCK;
1354*03ce13f7SAndroid Build Coastguard Worker
1355*03ce13f7SAndroid Build Coastguard Worker // ASTC_10x10(128 bit), Block size 16 bytes, 100 texels / block
1356*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1357*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
1358*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_10x10_UNORM_BLOCK;
1359*03ce13f7SAndroid Build Coastguard Worker
1360*03ce13f7SAndroid Build Coastguard Worker // ASTC_12x10(128 bit), Block size 16 bytes, 120 texels / block
1361*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1362*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
1363*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_12x10_UNORM_BLOCK;
1364*03ce13f7SAndroid Build Coastguard Worker
1365*03ce13f7SAndroid Build Coastguard Worker // ASTC_12x12(128 bit), Block size 16 bytes, 144 texels / block
1366*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1367*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
1368*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_ASTC_12x12_UNORM_BLOCK;
1369*03ce13f7SAndroid Build Coastguard Worker
1370*03ce13f7SAndroid Build Coastguard Worker // All other formats are only compatible with themselves
1371*03ce13f7SAndroid Build Coastguard Worker default:
1372*03ce13f7SAndroid Build Coastguard Worker return format;
1373*03ce13f7SAndroid Build Coastguard Worker }
1374*03ce13f7SAndroid Build Coastguard Worker }
1375*03ce13f7SAndroid Build Coastguard Worker
isCompatible(Format other) const1376*03ce13f7SAndroid Build Coastguard Worker bool Format::isCompatible(Format other) const
1377*03ce13f7SAndroid Build Coastguard Worker {
1378*03ce13f7SAndroid Build Coastguard Worker return getCompatibilityClassRepresentative() == other.getCompatibilityClassRepresentative();
1379*03ce13f7SAndroid Build Coastguard Worker }
1380*03ce13f7SAndroid Build Coastguard Worker
blockWidth() const1381*03ce13f7SAndroid Build Coastguard Worker int Format::blockWidth() const
1382*03ce13f7SAndroid Build Coastguard Worker {
1383*03ce13f7SAndroid Build Coastguard Worker switch(format)
1384*03ce13f7SAndroid Build Coastguard Worker {
1385*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
1386*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
1387*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
1388*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
1389*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
1390*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
1391*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
1392*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
1393*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
1394*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
1395*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
1396*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
1397*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
1398*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
1399*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
1400*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
1401*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
1402*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
1403*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
1404*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
1405*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
1406*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
1407*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
1408*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
1409*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
1410*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
1411*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
1412*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
1413*03ce13f7SAndroid Build Coastguard Worker return 4;
1414*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
1415*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
1416*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
1417*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
1418*03ce13f7SAndroid Build Coastguard Worker return 5;
1419*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
1420*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
1421*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1422*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
1423*03ce13f7SAndroid Build Coastguard Worker return 6;
1424*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1425*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
1426*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1427*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
1428*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1429*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
1430*03ce13f7SAndroid Build Coastguard Worker return 8;
1431*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1432*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
1433*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1434*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
1435*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1436*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
1437*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1438*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
1439*03ce13f7SAndroid Build Coastguard Worker return 10;
1440*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1441*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
1442*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1443*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
1444*03ce13f7SAndroid Build Coastguard Worker return 12;
1445*03ce13f7SAndroid Build Coastguard Worker default:
1446*03ce13f7SAndroid Build Coastguard Worker return 1;
1447*03ce13f7SAndroid Build Coastguard Worker }
1448*03ce13f7SAndroid Build Coastguard Worker }
1449*03ce13f7SAndroid Build Coastguard Worker
blockHeight() const1450*03ce13f7SAndroid Build Coastguard Worker int Format::blockHeight() const
1451*03ce13f7SAndroid Build Coastguard Worker {
1452*03ce13f7SAndroid Build Coastguard Worker switch(format)
1453*03ce13f7SAndroid Build Coastguard Worker {
1454*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
1455*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
1456*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
1457*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
1458*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
1459*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
1460*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
1461*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
1462*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
1463*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
1464*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
1465*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
1466*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
1467*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
1468*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
1469*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
1470*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
1471*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
1472*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
1473*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
1474*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
1475*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
1476*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
1477*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
1478*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
1479*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
1480*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
1481*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
1482*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
1483*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
1484*03ce13f7SAndroid Build Coastguard Worker return 4;
1485*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
1486*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
1487*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
1488*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
1489*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1490*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
1491*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1492*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
1493*03ce13f7SAndroid Build Coastguard Worker return 5;
1494*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1495*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
1496*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1497*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
1498*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1499*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
1500*03ce13f7SAndroid Build Coastguard Worker return 6;
1501*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1502*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
1503*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1504*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
1505*03ce13f7SAndroid Build Coastguard Worker return 8;
1506*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1507*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
1508*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1509*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
1510*03ce13f7SAndroid Build Coastguard Worker return 10;
1511*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1512*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
1513*03ce13f7SAndroid Build Coastguard Worker return 12;
1514*03ce13f7SAndroid Build Coastguard Worker default:
1515*03ce13f7SAndroid Build Coastguard Worker return 1;
1516*03ce13f7SAndroid Build Coastguard Worker }
1517*03ce13f7SAndroid Build Coastguard Worker }
1518*03ce13f7SAndroid Build Coastguard Worker
bytesPerBlock() const1519*03ce13f7SAndroid Build Coastguard Worker int Format::bytesPerBlock() const
1520*03ce13f7SAndroid Build Coastguard Worker {
1521*03ce13f7SAndroid Build Coastguard Worker switch(format)
1522*03ce13f7SAndroid Build Coastguard Worker {
1523*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
1524*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
1525*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
1526*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
1527*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
1528*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
1529*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
1530*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
1531*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
1532*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
1533*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
1534*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
1535*03ce13f7SAndroid Build Coastguard Worker return 8;
1536*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
1537*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
1538*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
1539*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
1540*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
1541*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
1542*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
1543*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
1544*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
1545*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
1546*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
1547*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
1548*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
1549*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
1550*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
1551*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
1552*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
1553*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
1554*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
1555*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
1556*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
1557*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
1558*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1559*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
1560*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1561*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
1562*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1563*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
1564*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1565*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
1566*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1567*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
1568*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1569*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
1570*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1571*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
1572*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1573*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
1574*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1575*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
1576*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1577*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
1578*03ce13f7SAndroid Build Coastguard Worker return 16;
1579*03ce13f7SAndroid Build Coastguard Worker default:
1580*03ce13f7SAndroid Build Coastguard Worker return bytes();
1581*03ce13f7SAndroid Build Coastguard Worker }
1582*03ce13f7SAndroid Build Coastguard Worker }
1583*03ce13f7SAndroid Build Coastguard Worker
componentCount() const1584*03ce13f7SAndroid Build Coastguard Worker int Format::componentCount() const
1585*03ce13f7SAndroid Build Coastguard Worker {
1586*03ce13f7SAndroid Build Coastguard Worker switch(format)
1587*03ce13f7SAndroid Build Coastguard Worker {
1588*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
1589*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
1590*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
1591*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
1592*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
1593*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
1594*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
1595*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
1596*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
1597*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
1598*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
1599*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
1600*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
1601*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
1602*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
1603*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
1604*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
1605*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_UINT:
1606*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SINT:
1607*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SFLOAT:
1608*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
1609*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
1610*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
1611*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
1612*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
1613*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
1614*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
1615*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
1616*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
1617*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
1618*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
1619*03ce13f7SAndroid Build Coastguard Worker return 1;
1620*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
1621*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
1622*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
1623*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
1624*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
1625*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
1626*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
1627*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
1628*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
1629*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
1630*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
1631*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
1632*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
1633*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
1634*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
1635*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
1636*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
1637*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
1638*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_UINT:
1639*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SINT:
1640*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SFLOAT:
1641*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
1642*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
1643*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
1644*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
1645*03ce13f7SAndroid Build Coastguard Worker return 2;
1646*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
1647*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
1648*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
1649*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
1650*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
1651*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
1652*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UINT:
1653*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SINT:
1654*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
1655*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
1656*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
1657*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
1658*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
1659*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SINT:
1660*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SFLOAT:
1661*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
1662*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
1663*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
1664*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
1665*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
1666*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
1667*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
1668*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
1669*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
1670*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
1671*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
1672*03ce13f7SAndroid Build Coastguard Worker return 3;
1673*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
1674*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
1675*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
1676*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
1677*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
1678*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
1679*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
1680*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
1681*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
1682*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
1683*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
1684*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
1685*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
1686*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
1687*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
1688*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
1689*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
1690*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
1691*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
1692*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
1693*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
1694*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
1695*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
1696*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
1697*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
1698*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
1699*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
1700*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
1701*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
1702*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
1703*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
1704*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
1705*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
1706*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
1707*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
1708*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
1709*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
1710*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
1711*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
1712*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
1713*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
1714*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
1715*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
1716*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
1717*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
1718*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
1719*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
1720*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
1721*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
1722*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
1723*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
1724*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SINT:
1725*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SFLOAT:
1726*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
1727*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
1728*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
1729*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
1730*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
1731*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
1732*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
1733*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
1734*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
1735*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
1736*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
1737*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
1738*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
1739*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
1740*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
1741*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
1742*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1743*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1744*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1745*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1746*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1747*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1748*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1749*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1750*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1751*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1752*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
1753*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
1754*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
1755*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
1756*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
1757*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
1758*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
1759*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
1760*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
1761*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
1762*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
1763*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
1764*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
1765*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
1766*03ce13f7SAndroid Build Coastguard Worker return 4;
1767*03ce13f7SAndroid Build Coastguard Worker default:
1768*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
1769*03ce13f7SAndroid Build Coastguard Worker }
1770*03ce13f7SAndroid Build Coastguard Worker
1771*03ce13f7SAndroid Build Coastguard Worker return 1;
1772*03ce13f7SAndroid Build Coastguard Worker }
1773*03ce13f7SAndroid Build Coastguard Worker
isUnsigned() const1774*03ce13f7SAndroid Build Coastguard Worker bool Format::isUnsigned() const
1775*03ce13f7SAndroid Build Coastguard Worker {
1776*03ce13f7SAndroid Build Coastguard Worker // TODO(b/203068380): create a proper check for signedness
1777*03ce13f7SAndroid Build Coastguard Worker return isUnsignedComponent(0);
1778*03ce13f7SAndroid Build Coastguard Worker }
1779*03ce13f7SAndroid Build Coastguard Worker
isUnsignedComponent(int component) const1780*03ce13f7SAndroid Build Coastguard Worker bool Format::isUnsignedComponent(int component) const
1781*03ce13f7SAndroid Build Coastguard Worker {
1782*03ce13f7SAndroid Build Coastguard Worker switch(format)
1783*03ce13f7SAndroid Build Coastguard Worker {
1784*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_UNDEFINED:
1785*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
1786*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
1787*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
1788*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
1789*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
1790*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
1791*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
1792*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
1793*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
1794*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
1795*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
1796*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
1797*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
1798*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
1799*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
1800*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
1801*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
1802*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
1803*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
1804*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
1805*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
1806*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
1807*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
1808*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
1809*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
1810*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
1811*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
1812*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
1813*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
1814*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
1815*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
1816*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
1817*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
1818*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
1819*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
1820*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
1821*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
1822*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
1823*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
1824*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
1825*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
1826*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
1827*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
1828*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UINT:
1829*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
1830*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
1831*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
1832*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
1833*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
1834*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
1835*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
1836*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_UINT:
1837*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_UINT:
1838*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
1839*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
1840*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
1841*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
1842*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
1843*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
1844*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
1845*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT:
1846*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
1847*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
1848*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
1849*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
1850*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
1851*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
1852*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
1853*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
1854*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
1855*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
1856*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
1857*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
1858*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
1859*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
1860*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
1861*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
1862*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
1863*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
1864*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
1865*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
1866*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
1867*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
1868*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
1869*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
1870*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
1871*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
1872*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
1873*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
1874*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
1875*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
1876*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
1877*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
1878*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
1879*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
1880*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
1881*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
1882*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
1883*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
1884*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
1885*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
1886*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
1887*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
1888*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
1889*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
1890*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
1891*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
1892*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
1893*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
1894*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
1895*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
1896*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
1897*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
1898*03ce13f7SAndroid Build Coastguard Worker return true;
1899*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
1900*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
1901*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
1902*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
1903*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
1904*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
1905*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
1906*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
1907*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
1908*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
1909*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
1910*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
1911*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
1912*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
1913*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
1914*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
1915*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
1916*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
1917*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
1918*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
1919*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
1920*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SINT:
1921*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SFLOAT:
1922*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
1923*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
1924*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
1925*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
1926*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
1927*03ce13f7SAndroid Build Coastguard Worker // YCbCr formats treated as signed because VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY
1928*03ce13f7SAndroid Build Coastguard Worker // expects chroma components to be in range [-0.5, 0.5]
1929*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
1930*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
1931*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
1932*03ce13f7SAndroid Build Coastguard Worker return false;
1933*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
1934*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
1935*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
1936*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
1937*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
1938*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
1939*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
1940*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
1941*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
1942*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
1943*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SINT:
1944*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SFLOAT:
1945*03ce13f7SAndroid Build Coastguard Worker return component >= 1;
1946*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
1947*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
1948*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
1949*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
1950*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
1951*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
1952*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
1953*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
1954*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
1955*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SINT:
1956*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SFLOAT:
1957*03ce13f7SAndroid Build Coastguard Worker return component >= 2;
1958*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
1959*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
1960*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SINT:
1961*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
1962*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
1963*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
1964*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SINT:
1965*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SFLOAT:
1966*03ce13f7SAndroid Build Coastguard Worker return component >= 3;
1967*03ce13f7SAndroid Build Coastguard Worker default:
1968*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
1969*03ce13f7SAndroid Build Coastguard Worker }
1970*03ce13f7SAndroid Build Coastguard Worker
1971*03ce13f7SAndroid Build Coastguard Worker return false;
1972*03ce13f7SAndroid Build Coastguard Worker }
1973*03ce13f7SAndroid Build Coastguard Worker
bytes() const1974*03ce13f7SAndroid Build Coastguard Worker size_t Format::bytes() const
1975*03ce13f7SAndroid Build Coastguard Worker {
1976*03ce13f7SAndroid Build Coastguard Worker switch(format)
1977*03ce13f7SAndroid Build Coastguard Worker {
1978*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_UNDEFINED:
1979*03ce13f7SAndroid Build Coastguard Worker return 0;
1980*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
1981*03ce13f7SAndroid Build Coastguard Worker return 1;
1982*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
1983*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
1984*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
1985*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
1986*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
1987*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
1988*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
1989*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
1990*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
1991*03ce13f7SAndroid Build Coastguard Worker return 2;
1992*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
1993*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
1994*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
1995*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
1996*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
1997*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
1998*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
1999*03ce13f7SAndroid Build Coastguard Worker return 1;
2000*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2001*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2002*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
2003*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
2004*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2005*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2006*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2007*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R10X6_UNORM_PACK16:
2008*03ce13f7SAndroid Build Coastguard Worker return 2;
2009*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2010*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2011*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
2012*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
2013*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2014*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2015*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2016*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2017*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2018*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
2019*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
2020*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2021*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2022*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2023*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2024*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2025*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
2026*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
2027*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2028*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2029*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2030*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2031*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
2032*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
2033*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
2034*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
2035*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
2036*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2037*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
2038*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
2039*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
2040*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
2041*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
2042*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:
2043*03ce13f7SAndroid Build Coastguard Worker return 4;
2044*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2045*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2046*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
2047*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
2048*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2049*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2050*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2051*03ce13f7SAndroid Build Coastguard Worker return 2;
2052*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2053*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2054*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
2055*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
2056*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2057*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2058*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2059*03ce13f7SAndroid Build Coastguard Worker return 4;
2060*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
2061*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
2062*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
2063*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
2064*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UINT:
2065*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SINT:
2066*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
2067*03ce13f7SAndroid Build Coastguard Worker return 6;
2068*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2069*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
2070*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
2071*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
2072*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2073*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2074*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2075*03ce13f7SAndroid Build Coastguard Worker return 8;
2076*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2077*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2078*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2079*03ce13f7SAndroid Build Coastguard Worker return 4;
2080*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2081*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2082*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2083*03ce13f7SAndroid Build Coastguard Worker return 8;
2084*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
2085*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
2086*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
2087*03ce13f7SAndroid Build Coastguard Worker return 12;
2088*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2089*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2090*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2091*03ce13f7SAndroid Build Coastguard Worker return 16;
2092*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_UINT:
2093*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SINT:
2094*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64_SFLOAT:
2095*03ce13f7SAndroid Build Coastguard Worker return 8;
2096*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_UINT:
2097*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SINT:
2098*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64_SFLOAT:
2099*03ce13f7SAndroid Build Coastguard Worker return 16;
2100*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_UINT:
2101*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SINT:
2102*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64_SFLOAT:
2103*03ce13f7SAndroid Build Coastguard Worker return 24;
2104*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_UINT:
2105*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SINT:
2106*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R64G64B64A64_SFLOAT:
2107*03ce13f7SAndroid Build Coastguard Worker return 32;
2108*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32: return 4;
2109*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32: return 4;
2110*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM: return 2;
2111*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32: return 4;
2112*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT: return 4;
2113*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT: return 1;
2114*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM_S8_UINT: return 2; // Separate depth and stencil planes // TODO: ASSERT to ensure this is only called per-aspect?
2115*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT: return 4; // Combined depth and stencil planes // TODO: ASSERT to ensure this is only called per-aspect?
2116*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
2117*03ce13f7SAndroid Build Coastguard Worker return 4; // Separate depth and stencil planes // TODO: ASSERT to ensure this is only called per-aspect?
2118*03ce13f7SAndroid Build Coastguard Worker // Note: Compressed formats don't return bytes per pixel,
2119*03ce13f7SAndroid Build Coastguard Worker // since these would be fractional. The returned value
2120*03ce13f7SAndroid Build Coastguard Worker // is bytes per pixel for 1 column, so 2 for 64 bit 4x4
2121*03ce13f7SAndroid Build Coastguard Worker // blocks and 4 for 128 bit 4x4 blocks.
2122*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK: return 2;
2123*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK: return 2;
2124*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK: return 2;
2125*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK: return 2;
2126*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK: return 4;
2127*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK: return 4;
2128*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK: return 4;
2129*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK: return 4;
2130*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK: return 2;
2131*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK: return 2;
2132*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK: return 4;
2133*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK: return 4;
2134*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK: return 4;
2135*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK: return 4;
2136*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK: return 4;
2137*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK: return 4;
2138*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK: return 2;
2139*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK: return 2;
2140*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK: return 2;
2141*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK: return 2;
2142*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK: return 4;
2143*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK: return 4;
2144*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK: return 2;
2145*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK: return 2;
2146*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK: return 4;
2147*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK: return 4;
2148*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: return 4;
2149*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: return 4;
2150*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
2151*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
2152*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
2153*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
2154*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
2155*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
2156*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
2157*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
2158*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
2159*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
2160*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
2161*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
2162*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
2163*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
2164*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
2165*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
2166*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
2167*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
2168*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
2169*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
2170*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
2171*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
2172*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
2173*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
2174*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
2175*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
2176*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format: %d", int(format));
2177*03ce13f7SAndroid Build Coastguard Worker return 0;
2178*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2179*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2180*03ce13f7SAndroid Build Coastguard Worker // TODO: ASSERT to ensure this is only called per-aspect?
2181*03ce13f7SAndroid Build Coastguard Worker return 1; // Y plane only
2182*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
2183*03ce13f7SAndroid Build Coastguard Worker // TODO: ASSERT to ensure this is only called per-aspect?
2184*03ce13f7SAndroid Build Coastguard Worker return 2; // Y plane only
2185*03ce13f7SAndroid Build Coastguard Worker default:
2186*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
2187*03ce13f7SAndroid Build Coastguard Worker }
2188*03ce13f7SAndroid Build Coastguard Worker
2189*03ce13f7SAndroid Build Coastguard Worker return 0;
2190*03ce13f7SAndroid Build Coastguard Worker }
2191*03ce13f7SAndroid Build Coastguard Worker
pitchB(int width,int border) const2192*03ce13f7SAndroid Build Coastguard Worker size_t Format::pitchB(int width, int border) const
2193*03ce13f7SAndroid Build Coastguard Worker {
2194*03ce13f7SAndroid Build Coastguard Worker // Render targets require 2x2 quads
2195*03ce13f7SAndroid Build Coastguard Worker width = sw::align<2>(width + 2 * border);
2196*03ce13f7SAndroid Build Coastguard Worker
2197*03ce13f7SAndroid Build Coastguard Worker switch(format)
2198*03ce13f7SAndroid Build Coastguard Worker {
2199*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
2200*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
2201*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
2202*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
2203*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
2204*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
2205*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
2206*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
2207*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
2208*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
2209*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
2210*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
2211*03ce13f7SAndroid Build Coastguard Worker return 8 * ((width + 3) / 4); // 64 bit per 4x4 block, computed per 4 rows
2212*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
2213*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
2214*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
2215*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
2216*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
2217*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
2218*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_UFLOAT_BLOCK:
2219*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC6H_SFLOAT_BLOCK:
2220*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_UNORM_BLOCK:
2221*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC7_SRGB_BLOCK:
2222*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
2223*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
2224*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
2225*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
2226*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
2227*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
2228*03ce13f7SAndroid Build Coastguard Worker return 16 * ((width + 3) / 4); // 128 bit per 4x4 block, computed per 4 rows
2229*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
2230*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
2231*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
2232*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
2233*03ce13f7SAndroid Build Coastguard Worker return 16 * ((width + 4) / 5);
2234*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
2235*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
2236*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
2237*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
2238*03ce13f7SAndroid Build Coastguard Worker return 16 * ((width + 5) / 6);
2239*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
2240*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
2241*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
2242*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
2243*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
2244*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
2245*03ce13f7SAndroid Build Coastguard Worker return 16 * ((width + 7) / 8);
2246*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
2247*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
2248*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
2249*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
2250*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
2251*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
2252*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
2253*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
2254*03ce13f7SAndroid Build Coastguard Worker return 16 * ((width + 9) / 10);
2255*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
2256*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
2257*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
2258*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
2259*03ce13f7SAndroid Build Coastguard Worker return 16 * ((width + 11) / 12);
2260*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2261*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2262*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
2263*03ce13f7SAndroid Build Coastguard Worker return sw::align<16>(width); // Y plane only // TODO: ASSERT to ensure this is only called per-aspect?
2264*03ce13f7SAndroid Build Coastguard Worker default:
2265*03ce13f7SAndroid Build Coastguard Worker return bytes() * width;
2266*03ce13f7SAndroid Build Coastguard Worker }
2267*03ce13f7SAndroid Build Coastguard Worker }
2268*03ce13f7SAndroid Build Coastguard Worker
sliceBUnpadded(int width,int height,int border) const2269*03ce13f7SAndroid Build Coastguard Worker size_t Format::sliceBUnpadded(int width, int height, int border) const
2270*03ce13f7SAndroid Build Coastguard Worker {
2271*03ce13f7SAndroid Build Coastguard Worker // Render targets require 2x2 quads
2272*03ce13f7SAndroid Build Coastguard Worker height = sw::align<2>(height + 2 * border);
2273*03ce13f7SAndroid Build Coastguard Worker
2274*03ce13f7SAndroid Build Coastguard Worker switch(format)
2275*03ce13f7SAndroid Build Coastguard Worker {
2276*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_UNORM_BLOCK:
2277*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGB_SRGB_BLOCK:
2278*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:
2279*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:
2280*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_UNORM_BLOCK:
2281*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC2_SRGB_BLOCK:
2282*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_UNORM_BLOCK:
2283*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC3_SRGB_BLOCK:
2284*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_UNORM_BLOCK:
2285*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC4_SNORM_BLOCK:
2286*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_UNORM_BLOCK:
2287*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_BC5_SNORM_BLOCK:
2288*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_UNORM_BLOCK:
2289*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11_SNORM_BLOCK:
2290*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:
2291*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:
2292*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:
2293*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:
2294*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:
2295*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:
2296*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:
2297*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:
2298*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:
2299*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:
2300*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:
2301*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:
2302*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * ((height + 3) / 4); // Pitch computed per 4 rows
2303*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:
2304*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:
2305*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:
2306*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:
2307*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:
2308*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:
2309*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:
2310*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:
2311*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * ((height + 4) / 5); // Pitch computed per 5 rows
2312*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:
2313*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:
2314*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:
2315*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:
2316*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:
2317*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:
2318*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * ((height + 5) / 6); // Pitch computed per 6 rows
2319*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:
2320*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:
2321*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:
2322*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:
2323*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * ((height + 7) / 8); // Pitch computed per 8 rows
2324*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:
2325*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:
2326*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:
2327*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:
2328*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * ((height + 9) / 10); // Pitch computed per 10 rows
2329*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:
2330*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:
2331*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * ((height + 11) / 12); // Pitch computed per 12 rows
2332*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2333*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2334*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
2335*03ce13f7SAndroid Build Coastguard Worker // "Images in this format must be defined with a width and height that is a multiple of two."
2336*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * (height + height / 2); // U and V planes are 1/4 size of Y plane.
2337*03ce13f7SAndroid Build Coastguard Worker default:
2338*03ce13f7SAndroid Build Coastguard Worker return pitchB(width, border) * height; // Pitch computed per row
2339*03ce13f7SAndroid Build Coastguard Worker }
2340*03ce13f7SAndroid Build Coastguard Worker }
2341*03ce13f7SAndroid Build Coastguard Worker
sliceB(int width,int height,int border) const2342*03ce13f7SAndroid Build Coastguard Worker size_t Format::sliceB(int width, int height, int border) const
2343*03ce13f7SAndroid Build Coastguard Worker {
2344*03ce13f7SAndroid Build Coastguard Worker return sw::align<16>(sliceBUnpadded(width, height, border));
2345*03ce13f7SAndroid Build Coastguard Worker }
2346*03ce13f7SAndroid Build Coastguard Worker
getScale() const2347*03ce13f7SAndroid Build Coastguard Worker sw::float4 Format::getScale() const
2348*03ce13f7SAndroid Build Coastguard Worker {
2349*03ce13f7SAndroid Build Coastguard Worker switch(format)
2350*03ce13f7SAndroid Build Coastguard Worker {
2351*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
2352*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2353*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2354*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2355*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2356*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0xF, 0xF, 0xF, 0xF);
2357*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2358*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2359*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2360*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2361*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2362*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
2363*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2364*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2365*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2366*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2367*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0xFF, 0xFF, 0xFF, 0xFF);
2368*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
2369*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2370*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2371*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2372*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2373*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0x7F, 0x7F, 0x7F, 0x7F);
2374*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2375*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2376*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
2377*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2378*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
2379*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2380*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2381*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
2382*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
2383*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF);
2384*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
2385*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
2386*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2387*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2388*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2389*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2390*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2391*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2392*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2393*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2394*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
2395*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
2396*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
2397*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
2398*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
2399*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
2400*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
2401*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
2402*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
2403*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
2404*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2405*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2406*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2407*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2408*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2409*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2410*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
2411*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
2412*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
2413*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
2414*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
2415*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
2416*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
2417*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
2418*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2419*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2420*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2421*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2422*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
2423*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
2424*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2425*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2426*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2427*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
2428*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2429*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2430*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2431*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
2432*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2433*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2434*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
2435*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
2436*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
2437*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
2438*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
2439*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
2440*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
2441*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
2442*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
2443*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
2444*03ce13f7SAndroid Build Coastguard Worker return sw::float4(1.0f, 1.0f, 1.0f, 1.0f);
2445*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2446*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2447*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2448*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0x1F, 0x1F, 0x1F, 0x01);
2449*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2450*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2451*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0x1F, 0x3F, 0x1F, 1.0f);
2452*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2453*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2454*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0x3FF, 0x3FF, 0x3FF, 0x03);
2455*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
2456*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
2457*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0x1FF, 0x1FF, 0x1FF, 0x01);
2458*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
2459*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0xFFFF, 0.0f, 0.0f, 0.0f);
2460*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
2461*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
2462*03ce13f7SAndroid Build Coastguard Worker return sw::float4(0xFFFFFF, 0.0f, 0.0f, 0.0f);
2463*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
2464*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
2465*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
2466*03ce13f7SAndroid Build Coastguard Worker return sw::float4(1.0f, 1.0f, 1.0f, 1.0f);
2467*03ce13f7SAndroid Build Coastguard Worker default:
2468*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
2469*03ce13f7SAndroid Build Coastguard Worker break;
2470*03ce13f7SAndroid Build Coastguard Worker }
2471*03ce13f7SAndroid Build Coastguard Worker
2472*03ce13f7SAndroid Build Coastguard Worker return sw::float4(1.0f, 1.0f, 1.0f, 1.0f);
2473*03ce13f7SAndroid Build Coastguard Worker }
2474*03ce13f7SAndroid Build Coastguard Worker
bitsPerComponent() const2475*03ce13f7SAndroid Build Coastguard Worker sw::int4 Format::bitsPerComponent() const
2476*03ce13f7SAndroid Build Coastguard Worker {
2477*03ce13f7SAndroid Build Coastguard Worker switch(format)
2478*03ce13f7SAndroid Build Coastguard Worker {
2479*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4_UNORM_PACK8:
2480*03ce13f7SAndroid Build Coastguard Worker return sw::int4(4, 4, 0, 0);
2481*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2482*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2483*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2484*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2485*03ce13f7SAndroid Build Coastguard Worker return sw::int4(4, 4, 4, 4);
2486*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2487*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
2488*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
2489*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
2490*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
2491*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_USCALED:
2492*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SSCALED:
2493*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
2494*03ce13f7SAndroid Build Coastguard Worker return sw::int4(8, 0, 0, 0);
2495*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2496*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2497*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2498*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2499*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2500*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_USCALED:
2501*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SSCALED:
2502*03ce13f7SAndroid Build Coastguard Worker return sw::int4(8, 8, 0, 0);
2503*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2504*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2505*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2506*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2507*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2508*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2509*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2510*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2511*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2512*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2513*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2514*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2515*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2516*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2517*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2518*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_USCALED:
2519*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_USCALED:
2520*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
2521*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SSCALED:
2522*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SSCALED:
2523*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
2524*03ce13f7SAndroid Build Coastguard Worker return sw::int4(8, 8, 8, 8);
2525*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2526*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2527*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2528*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2529*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SSCALED:
2530*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_USCALED:
2531*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2532*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
2533*03ce13f7SAndroid Build Coastguard Worker return sw::int4(16, 0, 0, 0);
2534*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2535*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2536*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2537*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2538*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SSCALED:
2539*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_USCALED:
2540*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2541*03ce13f7SAndroid Build Coastguard Worker return sw::int4(16, 16, 0, 0);
2542*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_UNORM:
2543*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SNORM:
2544*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SSCALED:
2545*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_USCALED:
2546*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16_SFLOAT:
2547*03ce13f7SAndroid Build Coastguard Worker return sw::int4(16, 16, 16, 0);
2548*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2549*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
2550*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2551*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2552*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SSCALED:
2553*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_USCALED:
2554*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2555*03ce13f7SAndroid Build Coastguard Worker return sw::int4(16, 16, 16, 16);
2556*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D24_UNORM_S8_UINT:
2557*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_X8_D24_UNORM_PACK32:
2558*03ce13f7SAndroid Build Coastguard Worker return sw::int4(24, 0, 0, 0);
2559*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2560*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2561*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2562*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
2563*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT_S8_UINT:
2564*03ce13f7SAndroid Build Coastguard Worker return sw::int4(32, 0, 0, 0);
2565*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2566*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2567*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2568*03ce13f7SAndroid Build Coastguard Worker return sw::int4(32, 32, 0, 0);
2569*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SINT:
2570*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_UINT:
2571*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32_SFLOAT:
2572*03ce13f7SAndroid Build Coastguard Worker return sw::int4(32, 32, 32, 0);
2573*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2574*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2575*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2576*03ce13f7SAndroid Build Coastguard Worker return sw::int4(32, 32, 32, 32);
2577*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
2578*03ce13f7SAndroid Build Coastguard Worker return sw::int4(11, 11, 10, 0);
2579*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
2580*03ce13f7SAndroid Build Coastguard Worker return sw::int4(9, 9, 9, 0);
2581*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2582*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2583*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2584*03ce13f7SAndroid Build Coastguard Worker return sw::int4(5, 5, 5, 1);
2585*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2586*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2587*03ce13f7SAndroid Build Coastguard Worker return sw::int4(5, 6, 5, 0);
2588*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2589*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2590*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
2591*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
2592*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
2593*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
2594*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
2595*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_SINT_PACK32:
2596*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
2597*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
2598*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
2599*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_SINT_PACK32:
2600*03ce13f7SAndroid Build Coastguard Worker return sw::int4(10, 10, 10, 2);
2601*03ce13f7SAndroid Build Coastguard Worker default:
2602*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("format %d", int(format));
2603*03ce13f7SAndroid Build Coastguard Worker break;
2604*03ce13f7SAndroid Build Coastguard Worker }
2605*03ce13f7SAndroid Build Coastguard Worker
2606*03ce13f7SAndroid Build Coastguard Worker return sw::int4(0, 0, 0, 0);
2607*03ce13f7SAndroid Build Coastguard Worker }
2608*03ce13f7SAndroid Build Coastguard Worker
supportsColorAttachmentBlend() const2609*03ce13f7SAndroid Build Coastguard Worker bool Format::supportsColorAttachmentBlend() const
2610*03ce13f7SAndroid Build Coastguard Worker {
2611*03ce13f7SAndroid Build Coastguard Worker switch(format)
2612*03ce13f7SAndroid Build Coastguard Worker {
2613*03ce13f7SAndroid Build Coastguard Worker // Vulkan 1.1 mandatory
2614*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2615*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2616*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2617*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2618*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2619*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2620*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2621*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2622*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2623*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2624*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2625*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2626*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2627*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2628*03ce13f7SAndroid Build Coastguard Worker // Optional
2629*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2630*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2631*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2632*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2633*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2634*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2635*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2636*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2637*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2638*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2639*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2640*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2641*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
2642*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2643*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2644*03ce13f7SAndroid Build Coastguard Worker return true;
2645*03ce13f7SAndroid Build Coastguard Worker default:
2646*03ce13f7SAndroid Build Coastguard Worker return false;
2647*03ce13f7SAndroid Build Coastguard Worker }
2648*03ce13f7SAndroid Build Coastguard Worker }
2649*03ce13f7SAndroid Build Coastguard Worker
has16bitPackedTextureFormat() const2650*03ce13f7SAndroid Build Coastguard Worker bool Format::has16bitPackedTextureFormat() const
2651*03ce13f7SAndroid Build Coastguard Worker {
2652*03ce13f7SAndroid Build Coastguard Worker if(bytes() != 2)
2653*03ce13f7SAndroid Build Coastguard Worker {
2654*03ce13f7SAndroid Build Coastguard Worker return false;
2655*03ce13f7SAndroid Build Coastguard Worker }
2656*03ce13f7SAndroid Build Coastguard Worker
2657*03ce13f7SAndroid Build Coastguard Worker switch(format)
2658*03ce13f7SAndroid Build Coastguard Worker {
2659*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2660*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2661*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2662*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2663*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2664*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2665*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2666*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2667*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2668*03ce13f7SAndroid Build Coastguard Worker return true;
2669*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2670*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2671*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2672*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2673*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2674*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2675*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2676*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2677*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2678*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2679*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
2680*03ce13f7SAndroid Build Coastguard Worker return false;
2681*03ce13f7SAndroid Build Coastguard Worker default:
2682*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
2683*03ce13f7SAndroid Build Coastguard Worker }
2684*03ce13f7SAndroid Build Coastguard Worker
2685*03ce13f7SAndroid Build Coastguard Worker return false;
2686*03ce13f7SAndroid Build Coastguard Worker }
2687*03ce13f7SAndroid Build Coastguard Worker
has8bitTextureComponents() const2688*03ce13f7SAndroid Build Coastguard Worker bool Format::has8bitTextureComponents() const
2689*03ce13f7SAndroid Build Coastguard Worker {
2690*03ce13f7SAndroid Build Coastguard Worker switch(format)
2691*03ce13f7SAndroid Build Coastguard Worker {
2692*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2693*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
2694*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
2695*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
2696*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
2697*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2698*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2699*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2700*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2701*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2702*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2703*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2704*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2705*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2706*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2707*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2708*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2709*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2710*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2711*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2712*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2713*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2714*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2715*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2716*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2717*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
2718*03ce13f7SAndroid Build Coastguard Worker return true;
2719*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2720*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2721*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2722*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2723*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2724*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2725*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2726*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2727*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2728*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2729*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2730*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2731*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2732*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2733*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2734*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2735*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2736*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
2737*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2738*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2739*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2740*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2741*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2742*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2743*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2744*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2745*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2746*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2747*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2748*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2749*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2750*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2751*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2752*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2753*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2754*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
2755*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2756*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
2757*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2758*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
2759*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
2760*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
2761*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
2762*03ce13f7SAndroid Build Coastguard Worker return false;
2763*03ce13f7SAndroid Build Coastguard Worker default:
2764*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
2765*03ce13f7SAndroid Build Coastguard Worker }
2766*03ce13f7SAndroid Build Coastguard Worker
2767*03ce13f7SAndroid Build Coastguard Worker return false;
2768*03ce13f7SAndroid Build Coastguard Worker }
2769*03ce13f7SAndroid Build Coastguard Worker
has16bitTextureComponents() const2770*03ce13f7SAndroid Build Coastguard Worker bool Format::has16bitTextureComponents() const
2771*03ce13f7SAndroid Build Coastguard Worker {
2772*03ce13f7SAndroid Build Coastguard Worker switch(format)
2773*03ce13f7SAndroid Build Coastguard Worker {
2774*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2775*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2776*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2777*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2778*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2779*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2780*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2781*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2782*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2783*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2784*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
2785*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
2786*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
2787*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
2788*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2789*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2790*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2791*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2792*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2793*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2794*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2795*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2796*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2797*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2798*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2799*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2800*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2801*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2802*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2803*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2804*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2805*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2806*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2807*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2808*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2809*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2810*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2811*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2812*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2813*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2814*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2815*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2816*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2817*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2818*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2819*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
2820*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2821*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
2822*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2823*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
2824*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
2825*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
2826*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
2827*03ce13f7SAndroid Build Coastguard Worker return false;
2828*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2829*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2830*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2831*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2832*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2833*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2834*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2835*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2836*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2837*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2838*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2839*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
2840*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2841*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2842*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2843*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
2844*03ce13f7SAndroid Build Coastguard Worker return true;
2845*03ce13f7SAndroid Build Coastguard Worker default:
2846*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
2847*03ce13f7SAndroid Build Coastguard Worker }
2848*03ce13f7SAndroid Build Coastguard Worker
2849*03ce13f7SAndroid Build Coastguard Worker return false;
2850*03ce13f7SAndroid Build Coastguard Worker }
2851*03ce13f7SAndroid Build Coastguard Worker
has32bitIntegerTextureComponents() const2852*03ce13f7SAndroid Build Coastguard Worker bool Format::has32bitIntegerTextureComponents() const
2853*03ce13f7SAndroid Build Coastguard Worker {
2854*03ce13f7SAndroid Build Coastguard Worker switch(format)
2855*03ce13f7SAndroid Build Coastguard Worker {
2856*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2857*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2858*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2859*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2860*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2861*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2862*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2863*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2864*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2865*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2866*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
2867*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
2868*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
2869*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
2870*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2871*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2872*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2873*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2874*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2875*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2876*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2877*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2878*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2879*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2880*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2881*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2882*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2883*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2884*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2885*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2886*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2887*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2888*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2889*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2890*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2891*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2892*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2893*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2894*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2895*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2896*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2897*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2898*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2899*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2900*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2901*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SNORM:
2902*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2903*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2904*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2905*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2906*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2907*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2908*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2909*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2910*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
2911*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
2912*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2B10G10R10_UINT_PACK32:
2913*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
2914*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A2R10G10B10_UINT_PACK32:
2915*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
2916*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
2917*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
2918*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
2919*03ce13f7SAndroid Build Coastguard Worker return false;
2920*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2921*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2922*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2923*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2924*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2925*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2926*03ce13f7SAndroid Build Coastguard Worker return true;
2927*03ce13f7SAndroid Build Coastguard Worker default:
2928*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
2929*03ce13f7SAndroid Build Coastguard Worker }
2930*03ce13f7SAndroid Build Coastguard Worker
2931*03ce13f7SAndroid Build Coastguard Worker return false;
2932*03ce13f7SAndroid Build Coastguard Worker }
2933*03ce13f7SAndroid Build Coastguard Worker
isRGBComponent(int component) const2934*03ce13f7SAndroid Build Coastguard Worker bool Format::isRGBComponent(int component) const
2935*03ce13f7SAndroid Build Coastguard Worker {
2936*03ce13f7SAndroid Build Coastguard Worker switch(format)
2937*03ce13f7SAndroid Build Coastguard Worker {
2938*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UNORM:
2939*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SNORM:
2940*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_UINT:
2941*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SINT:
2942*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8_SRGB:
2943*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UNORM:
2944*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SNORM:
2945*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_UINT:
2946*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SINT:
2947*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16_SFLOAT:
2948*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_UINT:
2949*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SINT:
2950*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32_SFLOAT:
2951*03ce13f7SAndroid Build Coastguard Worker return component < 1;
2952*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UNORM:
2953*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SNORM:
2954*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_UINT:
2955*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SINT:
2956*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8_SRGB:
2957*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UNORM:
2958*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SNORM:
2959*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_UINT:
2960*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SINT:
2961*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16_SFLOAT:
2962*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_UINT:
2963*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SINT:
2964*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32_SFLOAT:
2965*03ce13f7SAndroid Build Coastguard Worker return component < 2;
2966*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
2967*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
2968*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G6B5_UNORM_PACK16:
2969*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
2970*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
2971*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
2972*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G6R5_UNORM_PACK16:
2973*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
2974*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
2975*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UNORM:
2976*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SNORM:
2977*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_UINT:
2978*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SINT:
2979*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R8G8B8A8_SRGB:
2980*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UNORM:
2981*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SNORM:
2982*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_UINT:
2983*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SINT:
2984*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B8G8R8A8_SRGB:
2985*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
2986*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
2987*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_UINT_PACK32:
2988*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SINT_PACK32:
2989*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
2990*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UNORM:
2991*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SINT:
2992*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_UINT:
2993*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R16G16B16A16_SFLOAT:
2994*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SINT:
2995*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_UINT:
2996*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_R32G32B32A32_SFLOAT:
2997*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
2998*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
2999*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:
3000*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
3001*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
3002*03ce13f7SAndroid Build Coastguard Worker return component < 3;
3003*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D32_SFLOAT:
3004*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_D16_UNORM:
3005*03ce13f7SAndroid Build Coastguard Worker case VK_FORMAT_S8_UINT:
3006*03ce13f7SAndroid Build Coastguard Worker return false;
3007*03ce13f7SAndroid Build Coastguard Worker default:
3008*03ce13f7SAndroid Build Coastguard Worker UNSUPPORTED("Format: %d", int(format));
3009*03ce13f7SAndroid Build Coastguard Worker }
3010*03ce13f7SAndroid Build Coastguard Worker
3011*03ce13f7SAndroid Build Coastguard Worker return false;
3012*03ce13f7SAndroid Build Coastguard Worker }
3013*03ce13f7SAndroid Build Coastguard Worker
pack(VkFormat format)3014*03ce13f7SAndroid Build Coastguard Worker static constexpr uint8_t pack(VkFormat format)
3015*03ce13f7SAndroid Build Coastguard Worker {
3016*03ce13f7SAndroid Build Coastguard Worker if(format > VK_FORMAT_A4B4G4R4_UNORM_PACK16)
3017*03ce13f7SAndroid Build Coastguard Worker {
3018*03ce13f7SAndroid Build Coastguard Worker return 0;
3019*03ce13f7SAndroid Build Coastguard Worker }
3020*03ce13f7SAndroid Build Coastguard Worker
3021*03ce13f7SAndroid Build Coastguard Worker // 0 - 184 direct mapping
3022*03ce13f7SAndroid Build Coastguard Worker if(format >= 0 && format <= VK_FORMAT_ASTC_12x12_SRGB_BLOCK)
3023*03ce13f7SAndroid Build Coastguard Worker {
3024*03ce13f7SAndroid Build Coastguard Worker return uint8_t(format);
3025*03ce13f7SAndroid Build Coastguard Worker }
3026*03ce13f7SAndroid Build Coastguard Worker
3027*03ce13f7SAndroid Build Coastguard Worker // 10001560xx -> 185 - 218
3028*03ce13f7SAndroid Build Coastguard Worker if(format >= VK_FORMAT_G8B8G8R8_422_UNORM && format <= VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM)
3029*03ce13f7SAndroid Build Coastguard Worker {
3030*03ce13f7SAndroid Build Coastguard Worker return uint8_t(format - VK_FORMAT_G8B8G8R8_422_UNORM + 185);
3031*03ce13f7SAndroid Build Coastguard Worker }
3032*03ce13f7SAndroid Build Coastguard Worker
3033*03ce13f7SAndroid Build Coastguard Worker // 100005400x -> 219 - 226
3034*03ce13f7SAndroid Build Coastguard Worker if(format >= VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG && format <= VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG)
3035*03ce13f7SAndroid Build Coastguard Worker {
3036*03ce13f7SAndroid Build Coastguard Worker return uint8_t(format - VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG + 219);
3037*03ce13f7SAndroid Build Coastguard Worker }
3038*03ce13f7SAndroid Build Coastguard Worker
3039*03ce13f7SAndroid Build Coastguard Worker // 10000660xx -> 227 - 240
3040*03ce13f7SAndroid Build Coastguard Worker if(format >= VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK && format <= VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK)
3041*03ce13f7SAndroid Build Coastguard Worker {
3042*03ce13f7SAndroid Build Coastguard Worker return uint8_t(format - VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK + 227);
3043*03ce13f7SAndroid Build Coastguard Worker }
3044*03ce13f7SAndroid Build Coastguard Worker
3045*03ce13f7SAndroid Build Coastguard Worker // 100034000x -> 241 - 242
3046*03ce13f7SAndroid Build Coastguard Worker if(format >= VK_FORMAT_A4R4G4B4_UNORM_PACK16 && format <= VK_FORMAT_A4B4G4R4_UNORM_PACK16)
3047*03ce13f7SAndroid Build Coastguard Worker {
3048*03ce13f7SAndroid Build Coastguard Worker return uint8_t(format - VK_FORMAT_A4R4G4B4_UNORM_PACK16 + 241);
3049*03ce13f7SAndroid Build Coastguard Worker }
3050*03ce13f7SAndroid Build Coastguard Worker
3051*03ce13f7SAndroid Build Coastguard Worker return 0;
3052*03ce13f7SAndroid Build Coastguard Worker }
3053*03ce13f7SAndroid Build Coastguard Worker
3054*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_UNDEFINED) == 0, "Incorrect VkFormat packed value");
3055*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_ASTC_12x12_SRGB_BLOCK) == 184, "Incorrect VkFormat packed value");
3056*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_G8B8G8R8_422_UNORM) == 185, "Incorrect VkFormat packed value");
3057*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM) == 218, "Incorrect VkFormat packed value");
3058*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG) == 219, "Incorrect VkFormat packed value");
3059*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG) == 226, "Incorrect VkFormat packed value");
3060*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK) == 227, "Incorrect VkFormat packed value");
3061*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK) == 240, "Incorrect VkFormat packed value");
3062*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_A4R4G4B4_UNORM_PACK16) == 241, "Incorrect VkFormat packed value");
3063*03ce13f7SAndroid Build Coastguard Worker static_assert(pack(VK_FORMAT_A4B4G4R4_UNORM_PACK16) == 242, "Incorrect VkFormat packed value");
3064*03ce13f7SAndroid Build Coastguard Worker
unpack(uint8_t format)3065*03ce13f7SAndroid Build Coastguard Worker static constexpr VkFormat unpack(uint8_t format)
3066*03ce13f7SAndroid Build Coastguard Worker {
3067*03ce13f7SAndroid Build Coastguard Worker // 0 - 184 direct mapping
3068*03ce13f7SAndroid Build Coastguard Worker if(format >= 0 && format <= 184)
3069*03ce13f7SAndroid Build Coastguard Worker {
3070*03ce13f7SAndroid Build Coastguard Worker return static_cast<VkFormat>(format);
3071*03ce13f7SAndroid Build Coastguard Worker }
3072*03ce13f7SAndroid Build Coastguard Worker
3073*03ce13f7SAndroid Build Coastguard Worker // 185 - 218 -> 10001560xx
3074*03ce13f7SAndroid Build Coastguard Worker if(format >= 185 && format <= 218)
3075*03ce13f7SAndroid Build Coastguard Worker {
3076*03ce13f7SAndroid Build Coastguard Worker return static_cast<VkFormat>(VK_FORMAT_G8B8G8R8_422_UNORM + (format - 185));
3077*03ce13f7SAndroid Build Coastguard Worker }
3078*03ce13f7SAndroid Build Coastguard Worker
3079*03ce13f7SAndroid Build Coastguard Worker // 219 - 226 -> 100005400x
3080*03ce13f7SAndroid Build Coastguard Worker if(format >= 219 && format <= 226)
3081*03ce13f7SAndroid Build Coastguard Worker {
3082*03ce13f7SAndroid Build Coastguard Worker return static_cast<VkFormat>(VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG + (format - 219));
3083*03ce13f7SAndroid Build Coastguard Worker }
3084*03ce13f7SAndroid Build Coastguard Worker
3085*03ce13f7SAndroid Build Coastguard Worker // 227 - 240 -> 10000660xx
3086*03ce13f7SAndroid Build Coastguard Worker if(format >= 227 && format <= 240)
3087*03ce13f7SAndroid Build Coastguard Worker {
3088*03ce13f7SAndroid Build Coastguard Worker return static_cast<VkFormat>(VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK + (format - 227));
3089*03ce13f7SAndroid Build Coastguard Worker }
3090*03ce13f7SAndroid Build Coastguard Worker
3091*03ce13f7SAndroid Build Coastguard Worker // 241 - 242 -> 100034000x
3092*03ce13f7SAndroid Build Coastguard Worker if(format >= 241 && format <= 242)
3093*03ce13f7SAndroid Build Coastguard Worker {
3094*03ce13f7SAndroid Build Coastguard Worker return static_cast<VkFormat>(VK_FORMAT_A4R4G4B4_UNORM_PACK16 + (format - 241));
3095*03ce13f7SAndroid Build Coastguard Worker }
3096*03ce13f7SAndroid Build Coastguard Worker
3097*03ce13f7SAndroid Build Coastguard Worker return VK_FORMAT_UNDEFINED;
3098*03ce13f7SAndroid Build Coastguard Worker }
3099*03ce13f7SAndroid Build Coastguard Worker
3100*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(0) == VK_FORMAT_UNDEFINED, "Incorrect VkFormat unpacked value");
3101*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(184) == VK_FORMAT_ASTC_12x12_SRGB_BLOCK, "Incorrect VkFormat unpacked value");
3102*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(185) == VK_FORMAT_G8B8G8R8_422_UNORM, "Incorrect VkFormat unpacked value");
3103*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(218) == VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, "Incorrect VkFormat unpacked value");
3104*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(219) == VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, "Incorrect VkFormat unpacked value");
3105*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(226) == VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, "Incorrect VkFormat unpacked value");
3106*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(227) == VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK, "Incorrect VkFormat unpacked value");
3107*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(240) == VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK, "Incorrect VkFormat unpacked value");
3108*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(241) == VK_FORMAT_A4R4G4B4_UNORM_PACK16, "Incorrect VkFormat unpacked value");
3109*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(242) == VK_FORMAT_A4B4G4R4_UNORM_PACK16, "Incorrect VkFormat unpacked value");
3110*03ce13f7SAndroid Build Coastguard Worker static_assert(unpack(243) == VK_FORMAT_UNDEFINED, "Incorrect VkFormat unpacked value");
3111*03ce13f7SAndroid Build Coastguard Worker
mapTo8bit(VkFormat format)3112*03ce13f7SAndroid Build Coastguard Worker uint8_t Format::mapTo8bit(VkFormat format)
3113*03ce13f7SAndroid Build Coastguard Worker {
3114*03ce13f7SAndroid Build Coastguard Worker ASSERT(format <= VK_FORMAT_A4B4G4R4_UNORM_PACK16);
3115*03ce13f7SAndroid Build Coastguard Worker uint8_t packed = pack(format);
3116*03ce13f7SAndroid Build Coastguard Worker ASSERT_MSG(packed > 0, "Update VkFormat to uint8_t mapping");
3117*03ce13f7SAndroid Build Coastguard Worker return packed;
3118*03ce13f7SAndroid Build Coastguard Worker }
3119*03ce13f7SAndroid Build Coastguard Worker
mapFrom8bit(uint8_t format)3120*03ce13f7SAndroid Build Coastguard Worker VkFormat Format::mapFrom8bit(uint8_t format)
3121*03ce13f7SAndroid Build Coastguard Worker {
3122*03ce13f7SAndroid Build Coastguard Worker ASSERT(format <= 242);
3123*03ce13f7SAndroid Build Coastguard Worker VkFormat unpacked = unpack(format);
3124*03ce13f7SAndroid Build Coastguard Worker ASSERT_MSG(unpacked != VK_FORMAT_UNDEFINED, "Update uint8_t to VkFormat mapping");
3125*03ce13f7SAndroid Build Coastguard Worker return unpacked;
3126*03ce13f7SAndroid Build Coastguard Worker }
3127*03ce13f7SAndroid Build Coastguard Worker
3128*03ce13f7SAndroid Build Coastguard Worker } // namespace vk
3129