xref: /aosp_15_r20/external/angle/src/image_util/imageformats.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker 
7*8975f5c5SAndroid Build Coastguard Worker // imageformats.cpp: Defines image format types with functions for mip generation
8*8975f5c5SAndroid Build Coastguard Worker // and copying.
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #include "image_util/imageformats.h"
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include "common/mathutil.h"
13*8975f5c5SAndroid Build Coastguard Worker 
14*8975f5c5SAndroid Build Coastguard Worker namespace angle
15*8975f5c5SAndroid Build Coastguard Worker {
16*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L8 * src)17*8975f5c5SAndroid Build Coastguard Worker void L8::readColor(gl::ColorF *dst, const L8 *src)
18*8975f5c5SAndroid Build Coastguard Worker {
19*8975f5c5SAndroid Build Coastguard Worker     const float lum = gl::normalizedToFloat(src->L);
20*8975f5c5SAndroid Build Coastguard Worker     dst->red        = lum;
21*8975f5c5SAndroid Build Coastguard Worker     dst->green      = lum;
22*8975f5c5SAndroid Build Coastguard Worker     dst->blue       = lum;
23*8975f5c5SAndroid Build Coastguard Worker     dst->alpha      = 1.0f;
24*8975f5c5SAndroid Build Coastguard Worker }
25*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L8 * dst,const gl::ColorF * src)26*8975f5c5SAndroid Build Coastguard Worker void L8::writeColor(L8 *dst, const gl::ColorF *src)
27*8975f5c5SAndroid Build Coastguard Worker {
28*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::floatToNormalized<uint8_t>(src->red);
29*8975f5c5SAndroid Build Coastguard Worker }
30*8975f5c5SAndroid Build Coastguard Worker 
average(L8 * dst,const L8 * src1,const L8 * src2)31*8975f5c5SAndroid Build Coastguard Worker void L8::average(L8 *dst, const L8 *src1, const L8 *src2)
32*8975f5c5SAndroid Build Coastguard Worker {
33*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::average(src1->L, src2->L);
34*8975f5c5SAndroid Build Coastguard Worker }
35*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R8 * src)36*8975f5c5SAndroid Build Coastguard Worker void R8::readColor(gl::ColorUI *dst, const R8 *src)
37*8975f5c5SAndroid Build Coastguard Worker {
38*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
39*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0;
40*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
41*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
42*8975f5c5SAndroid Build Coastguard Worker }
43*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8 * src)44*8975f5c5SAndroid Build Coastguard Worker void R8::readColor(gl::ColorF *dst, const R8 *src)
45*8975f5c5SAndroid Build Coastguard Worker {
46*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
47*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
48*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
49*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
50*8975f5c5SAndroid Build Coastguard Worker }
51*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8 * dst,const gl::ColorUI * src)52*8975f5c5SAndroid Build Coastguard Worker void R8::writeColor(R8 *dst, const gl::ColorUI *src)
53*8975f5c5SAndroid Build Coastguard Worker {
54*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
55*8975f5c5SAndroid Build Coastguard Worker }
56*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8 * dst,const gl::ColorF * src)57*8975f5c5SAndroid Build Coastguard Worker void R8::writeColor(R8 *dst, const gl::ColorF *src)
58*8975f5c5SAndroid Build Coastguard Worker {
59*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
60*8975f5c5SAndroid Build Coastguard Worker }
61*8975f5c5SAndroid Build Coastguard Worker 
average(R8 * dst,const R8 * src1,const R8 * src2)62*8975f5c5SAndroid Build Coastguard Worker void R8::average(R8 *dst, const R8 *src1, const R8 *src2)
63*8975f5c5SAndroid Build Coastguard Worker {
64*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
65*8975f5c5SAndroid Build Coastguard Worker }
66*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A8 * src)67*8975f5c5SAndroid Build Coastguard Worker void A8::readColor(gl::ColorF *dst, const A8 *src)
68*8975f5c5SAndroid Build Coastguard Worker {
69*8975f5c5SAndroid Build Coastguard Worker     dst->red   = 0.0f;
70*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
71*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
72*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
73*8975f5c5SAndroid Build Coastguard Worker }
74*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A8 * dst,const gl::ColorF * src)75*8975f5c5SAndroid Build Coastguard Worker void A8::writeColor(A8 *dst, const gl::ColorF *src)
76*8975f5c5SAndroid Build Coastguard Worker {
77*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
78*8975f5c5SAndroid Build Coastguard Worker }
79*8975f5c5SAndroid Build Coastguard Worker 
average(A8 * dst,const A8 * src1,const A8 * src2)80*8975f5c5SAndroid Build Coastguard Worker void A8::average(A8 *dst, const A8 *src1, const A8 *src2)
81*8975f5c5SAndroid Build Coastguard Worker {
82*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
83*8975f5c5SAndroid Build Coastguard Worker }
84*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L8A8 * src)85*8975f5c5SAndroid Build Coastguard Worker void L8A8::readColor(gl::ColorF *dst, const L8A8 *src)
86*8975f5c5SAndroid Build Coastguard Worker {
87*8975f5c5SAndroid Build Coastguard Worker     const float lum = gl::normalizedToFloat(src->L);
88*8975f5c5SAndroid Build Coastguard Worker     dst->red        = lum;
89*8975f5c5SAndroid Build Coastguard Worker     dst->green      = lum;
90*8975f5c5SAndroid Build Coastguard Worker     dst->blue       = lum;
91*8975f5c5SAndroid Build Coastguard Worker     dst->alpha      = gl::normalizedToFloat(src->A);
92*8975f5c5SAndroid Build Coastguard Worker }
93*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L8A8 * dst,const gl::ColorF * src)94*8975f5c5SAndroid Build Coastguard Worker void L8A8::writeColor(L8A8 *dst, const gl::ColorF *src)
95*8975f5c5SAndroid Build Coastguard Worker {
96*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::floatToNormalized<uint8_t>(src->red);
97*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
98*8975f5c5SAndroid Build Coastguard Worker }
99*8975f5c5SAndroid Build Coastguard Worker 
average(L8A8 * dst,const L8A8 * src1,const L8A8 * src2)100*8975f5c5SAndroid Build Coastguard Worker void L8A8::average(L8A8 *dst, const L8A8 *src1, const L8A8 *src2)
101*8975f5c5SAndroid Build Coastguard Worker {
102*8975f5c5SAndroid Build Coastguard Worker     *(uint16_t *)dst = (((*(uint16_t *)src1 ^ *(uint16_t *)src2) & 0xFEFE) >> 1) +
103*8975f5c5SAndroid Build Coastguard Worker                        (*(uint16_t *)src1 & *(uint16_t *)src2);
104*8975f5c5SAndroid Build Coastguard Worker }
105*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A8L8 * src)106*8975f5c5SAndroid Build Coastguard Worker void A8L8::readColor(gl::ColorF *dst, const A8L8 *src)
107*8975f5c5SAndroid Build Coastguard Worker {
108*8975f5c5SAndroid Build Coastguard Worker     const float lum = gl::normalizedToFloat(src->L);
109*8975f5c5SAndroid Build Coastguard Worker     dst->red        = lum;
110*8975f5c5SAndroid Build Coastguard Worker     dst->green      = lum;
111*8975f5c5SAndroid Build Coastguard Worker     dst->blue       = lum;
112*8975f5c5SAndroid Build Coastguard Worker     dst->alpha      = gl::normalizedToFloat(src->A);
113*8975f5c5SAndroid Build Coastguard Worker }
114*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A8L8 * dst,const gl::ColorF * src)115*8975f5c5SAndroid Build Coastguard Worker void A8L8::writeColor(A8L8 *dst, const gl::ColorF *src)
116*8975f5c5SAndroid Build Coastguard Worker {
117*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::floatToNormalized<uint8_t>(src->red);
118*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
119*8975f5c5SAndroid Build Coastguard Worker }
120*8975f5c5SAndroid Build Coastguard Worker 
average(A8L8 * dst,const A8L8 * src1,const A8L8 * src2)121*8975f5c5SAndroid Build Coastguard Worker void A8L8::average(A8L8 *dst, const A8L8 *src1, const A8L8 *src2)
122*8975f5c5SAndroid Build Coastguard Worker {
123*8975f5c5SAndroid Build Coastguard Worker     *(uint16_t *)dst = (((*(uint16_t *)src1 ^ *(uint16_t *)src2) & 0xFEFE) >> 1) +
124*8975f5c5SAndroid Build Coastguard Worker                        (*(uint16_t *)src1 & *(uint16_t *)src2);
125*8975f5c5SAndroid Build Coastguard Worker }
126*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L4A4 * src)127*8975f5c5SAndroid Build Coastguard Worker void L4A4::readColor(gl::ColorF *dst, const L4A4 *src)
128*8975f5c5SAndroid Build Coastguard Worker {
129*8975f5c5SAndroid Build Coastguard Worker     const float lum = gl::normalizedToFloat<4>(src->L);
130*8975f5c5SAndroid Build Coastguard Worker     dst->red        = lum;
131*8975f5c5SAndroid Build Coastguard Worker     dst->green      = lum;
132*8975f5c5SAndroid Build Coastguard Worker     dst->blue       = lum;
133*8975f5c5SAndroid Build Coastguard Worker     dst->alpha      = gl::normalizedToFloat<4>(src->A);
134*8975f5c5SAndroid Build Coastguard Worker }
135*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L4A4 * dst,const gl::ColorF * src)136*8975f5c5SAndroid Build Coastguard Worker void L4A4::writeColor(L4A4 *dst, const gl::ColorF *src)
137*8975f5c5SAndroid Build Coastguard Worker {
138*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::floatToNormalized<4, uint8_t>(src->red);
139*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<4, uint8_t>(src->alpha);
140*8975f5c5SAndroid Build Coastguard Worker }
141*8975f5c5SAndroid Build Coastguard Worker 
average(L4A4 * dst,const L4A4 * src1,const L4A4 * src2)142*8975f5c5SAndroid Build Coastguard Worker void L4A4::average(L4A4 *dst, const L4A4 *src1, const L4A4 *src2)
143*8975f5c5SAndroid Build Coastguard Worker {
144*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::average(src1->L, src2->L);
145*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
146*8975f5c5SAndroid Build Coastguard Worker }
147*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R8G8 * src)148*8975f5c5SAndroid Build Coastguard Worker void R8G8::readColor(gl::ColorUI *dst, const R8G8 *src)
149*8975f5c5SAndroid Build Coastguard Worker {
150*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
151*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
152*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
153*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
154*8975f5c5SAndroid Build Coastguard Worker }
155*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8 * src)156*8975f5c5SAndroid Build Coastguard Worker void R8G8::readColor(gl::ColorF *dst, const R8G8 *src)
157*8975f5c5SAndroid Build Coastguard Worker {
158*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
159*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
160*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
161*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
162*8975f5c5SAndroid Build Coastguard Worker }
163*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8 * dst,const gl::ColorUI * src)164*8975f5c5SAndroid Build Coastguard Worker void R8G8::writeColor(R8G8 *dst, const gl::ColorUI *src)
165*8975f5c5SAndroid Build Coastguard Worker {
166*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
167*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
168*8975f5c5SAndroid Build Coastguard Worker }
169*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8 * dst,const gl::ColorF * src)170*8975f5c5SAndroid Build Coastguard Worker void R8G8::writeColor(R8G8 *dst, const gl::ColorF *src)
171*8975f5c5SAndroid Build Coastguard Worker {
172*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
173*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
174*8975f5c5SAndroid Build Coastguard Worker }
175*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8 * dst,const R8G8 * src1,const R8G8 * src2)176*8975f5c5SAndroid Build Coastguard Worker void R8G8::average(R8G8 *dst, const R8G8 *src1, const R8G8 *src2)
177*8975f5c5SAndroid Build Coastguard Worker {
178*8975f5c5SAndroid Build Coastguard Worker     *(uint16_t *)dst = (((*(uint16_t *)src1 ^ *(uint16_t *)src2) & 0xFEFE) >> 1) +
179*8975f5c5SAndroid Build Coastguard Worker                        (*(uint16_t *)src1 & *(uint16_t *)src2);
180*8975f5c5SAndroid Build Coastguard Worker }
181*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R8G8B8 * src)182*8975f5c5SAndroid Build Coastguard Worker void R8G8B8::readColor(gl::ColorUI *dst, const R8G8B8 *src)
183*8975f5c5SAndroid Build Coastguard Worker {
184*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
185*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
186*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->G;
187*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
188*8975f5c5SAndroid Build Coastguard Worker }
189*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8B8 * src)190*8975f5c5SAndroid Build Coastguard Worker void R8G8B8::readColor(gl::ColorF *dst, const R8G8B8 *src)
191*8975f5c5SAndroid Build Coastguard Worker {
192*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
193*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
194*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
195*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
196*8975f5c5SAndroid Build Coastguard Worker }
197*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8 * dst,const gl::ColorUI * src)198*8975f5c5SAndroid Build Coastguard Worker void R8G8B8::writeColor(R8G8B8 *dst, const gl::ColorUI *src)
199*8975f5c5SAndroid Build Coastguard Worker {
200*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
201*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
202*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
203*8975f5c5SAndroid Build Coastguard Worker }
204*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8 * dst,const gl::ColorF * src)205*8975f5c5SAndroid Build Coastguard Worker void R8G8B8::writeColor(R8G8B8 *dst, const gl::ColorF *src)
206*8975f5c5SAndroid Build Coastguard Worker {
207*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
208*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
209*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
210*8975f5c5SAndroid Build Coastguard Worker }
211*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8B8 * dst,const R8G8B8 * src1,const R8G8B8 * src2)212*8975f5c5SAndroid Build Coastguard Worker void R8G8B8::average(R8G8B8 *dst, const R8G8B8 *src1, const R8G8B8 *src2)
213*8975f5c5SAndroid Build Coastguard Worker {
214*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
215*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
216*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
217*8975f5c5SAndroid Build Coastguard Worker }
218*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const B8G8R8 * src)219*8975f5c5SAndroid Build Coastguard Worker void B8G8R8::readColor(gl::ColorUI *dst, const B8G8R8 *src)
220*8975f5c5SAndroid Build Coastguard Worker {
221*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
222*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
223*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->G;
224*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
225*8975f5c5SAndroid Build Coastguard Worker }
226*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const B8G8R8 * src)227*8975f5c5SAndroid Build Coastguard Worker void B8G8R8::readColor(gl::ColorF *dst, const B8G8R8 *src)
228*8975f5c5SAndroid Build Coastguard Worker {
229*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
230*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
231*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
232*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
233*8975f5c5SAndroid Build Coastguard Worker }
234*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B8G8R8 * dst,const gl::ColorUI * src)235*8975f5c5SAndroid Build Coastguard Worker void B8G8R8::writeColor(B8G8R8 *dst, const gl::ColorUI *src)
236*8975f5c5SAndroid Build Coastguard Worker {
237*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
238*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
239*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
240*8975f5c5SAndroid Build Coastguard Worker }
241*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B8G8R8 * dst,const gl::ColorF * src)242*8975f5c5SAndroid Build Coastguard Worker void B8G8R8::writeColor(B8G8R8 *dst, const gl::ColorF *src)
243*8975f5c5SAndroid Build Coastguard Worker {
244*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
245*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
246*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
247*8975f5c5SAndroid Build Coastguard Worker }
248*8975f5c5SAndroid Build Coastguard Worker 
average(B8G8R8 * dst,const B8G8R8 * src1,const B8G8R8 * src2)249*8975f5c5SAndroid Build Coastguard Worker void B8G8R8::average(B8G8R8 *dst, const B8G8R8 *src1, const B8G8R8 *src2)
250*8975f5c5SAndroid Build Coastguard Worker {
251*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
252*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
253*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
254*8975f5c5SAndroid Build Coastguard Worker }
255*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R5G6B5 * src)256*8975f5c5SAndroid Build Coastguard Worker void R5G6B5::readColor(gl::ColorF *dst, const R5G6B5 *src)
257*8975f5c5SAndroid Build Coastguard Worker {
258*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<5>(gl::getShiftedData<5, 11>(src->RGB));
259*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<6>(gl::getShiftedData<6, 5>(src->RGB));
260*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<5>(gl::getShiftedData<5, 0>(src->RGB));
261*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
262*8975f5c5SAndroid Build Coastguard Worker }
263*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R5G6B5 * dst,const gl::ColorF * src)264*8975f5c5SAndroid Build Coastguard Worker void R5G6B5::writeColor(R5G6B5 *dst, const gl::ColorF *src)
265*8975f5c5SAndroid Build Coastguard Worker {
266*8975f5c5SAndroid Build Coastguard Worker     dst->RGB = gl::shiftData<5, 11>(gl::floatToNormalized<5, uint16_t>(src->red)) |
267*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<6, 5>(gl::floatToNormalized<6, uint16_t>(src->green)) |
268*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<5, 0>(gl::floatToNormalized<5, uint16_t>(src->blue));
269*8975f5c5SAndroid Build Coastguard Worker }
270*8975f5c5SAndroid Build Coastguard Worker 
average(R5G6B5 * dst,const R5G6B5 * src1,const R5G6B5 * src2)271*8975f5c5SAndroid Build Coastguard Worker void R5G6B5::average(R5G6B5 *dst, const R5G6B5 *src1, const R5G6B5 *src2)
272*8975f5c5SAndroid Build Coastguard Worker {
273*8975f5c5SAndroid Build Coastguard Worker     dst->RGB = gl::shiftData<5, 11>(gl::average(gl::getShiftedData<5, 11>(src1->RGB),
274*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<5, 11>(src2->RGB))) |
275*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<6, 5>(gl::average(gl::getShiftedData<6, 5>(src1->RGB),
276*8975f5c5SAndroid Build Coastguard Worker                                                gl::getShiftedData<6, 5>(src2->RGB))) |
277*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<5, 0>(gl::average(gl::getShiftedData<5, 0>(src1->RGB),
278*8975f5c5SAndroid Build Coastguard Worker                                                gl::getShiftedData<5, 0>(src2->RGB)));
279*8975f5c5SAndroid Build Coastguard Worker }
280*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const B5G6R5 * src)281*8975f5c5SAndroid Build Coastguard Worker void B5G6R5::readColor(gl::ColorF *dst, const B5G6R5 *src)
282*8975f5c5SAndroid Build Coastguard Worker {
283*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<5>(gl::getShiftedData<5, 11>(src->BGR));
284*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<6>(gl::getShiftedData<6, 5>(src->BGR));
285*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<5>(gl::getShiftedData<5, 0>(src->BGR));
286*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
287*8975f5c5SAndroid Build Coastguard Worker }
288*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B5G6R5 * dst,const gl::ColorF * src)289*8975f5c5SAndroid Build Coastguard Worker void B5G6R5::writeColor(B5G6R5 *dst, const gl::ColorF *src)
290*8975f5c5SAndroid Build Coastguard Worker {
291*8975f5c5SAndroid Build Coastguard Worker     dst->BGR = gl::shiftData<5, 0>(gl::floatToNormalized<5, unsigned short>(src->blue)) |
292*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<6, 5>(gl::floatToNormalized<6, unsigned short>(src->green)) |
293*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<5, 11>(gl::floatToNormalized<5, unsigned short>(src->red));
294*8975f5c5SAndroid Build Coastguard Worker }
295*8975f5c5SAndroid Build Coastguard Worker 
average(B5G6R5 * dst,const B5G6R5 * src1,const B5G6R5 * src2)296*8975f5c5SAndroid Build Coastguard Worker void B5G6R5::average(B5G6R5 *dst, const B5G6R5 *src1, const B5G6R5 *src2)
297*8975f5c5SAndroid Build Coastguard Worker {
298*8975f5c5SAndroid Build Coastguard Worker     dst->BGR = gl::shiftData<5, 11>(gl::average(gl::getShiftedData<5, 11>(src1->BGR),
299*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<5, 11>(src2->BGR))) |
300*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<6, 5>(gl::average(gl::getShiftedData<6, 5>(src1->BGR),
301*8975f5c5SAndroid Build Coastguard Worker                                                gl::getShiftedData<6, 5>(src2->BGR))) |
302*8975f5c5SAndroid Build Coastguard Worker                gl::shiftData<5, 0>(gl::average(gl::getShiftedData<5, 0>(src1->BGR),
303*8975f5c5SAndroid Build Coastguard Worker                                                gl::getShiftedData<5, 0>(src2->BGR)));
304*8975f5c5SAndroid Build Coastguard Worker }
305*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const A8R8G8B8 * src)306*8975f5c5SAndroid Build Coastguard Worker void A8R8G8B8::readColor(gl::ColorUI *dst, const A8R8G8B8 *src)
307*8975f5c5SAndroid Build Coastguard Worker {
308*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
309*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
310*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
311*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
312*8975f5c5SAndroid Build Coastguard Worker }
313*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A8R8G8B8 * src)314*8975f5c5SAndroid Build Coastguard Worker void A8R8G8B8::readColor(gl::ColorF *dst, const A8R8G8B8 *src)
315*8975f5c5SAndroid Build Coastguard Worker {
316*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
317*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
318*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
319*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
320*8975f5c5SAndroid Build Coastguard Worker }
321*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A8R8G8B8 * dst,const gl::ColorUI * src)322*8975f5c5SAndroid Build Coastguard Worker void A8R8G8B8::writeColor(A8R8G8B8 *dst, const gl::ColorUI *src)
323*8975f5c5SAndroid Build Coastguard Worker {
324*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
325*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
326*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
327*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint8_t>(src->alpha);
328*8975f5c5SAndroid Build Coastguard Worker }
329*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A8R8G8B8 * dst,const gl::ColorF * src)330*8975f5c5SAndroid Build Coastguard Worker void A8R8G8B8::writeColor(A8R8G8B8 *dst, const gl::ColorF *src)
331*8975f5c5SAndroid Build Coastguard Worker {
332*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
333*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
334*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
335*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
336*8975f5c5SAndroid Build Coastguard Worker }
337*8975f5c5SAndroid Build Coastguard Worker 
average(A8R8G8B8 * dst,const A8R8G8B8 * src1,const A8R8G8B8 * src2)338*8975f5c5SAndroid Build Coastguard Worker void A8R8G8B8::average(A8R8G8B8 *dst, const A8R8G8B8 *src1, const A8R8G8B8 *src2)
339*8975f5c5SAndroid Build Coastguard Worker {
340*8975f5c5SAndroid Build Coastguard Worker     *(uint32_t *)dst = (((*(uint32_t *)src1 ^ *(uint32_t *)src2) & 0xFEFEFEFE) >> 1) +
341*8975f5c5SAndroid Build Coastguard Worker                        (*(uint32_t *)src1 & *(uint32_t *)src2);
342*8975f5c5SAndroid Build Coastguard Worker }
343*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R8G8B8A8 * src)344*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8::readColor(gl::ColorUI *dst, const R8G8B8A8 *src)
345*8975f5c5SAndroid Build Coastguard Worker {
346*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
347*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
348*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
349*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
350*8975f5c5SAndroid Build Coastguard Worker }
351*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8B8A8 * src)352*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8::readColor(gl::ColorF *dst, const R8G8B8A8 *src)
353*8975f5c5SAndroid Build Coastguard Worker {
354*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
355*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
356*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
357*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
358*8975f5c5SAndroid Build Coastguard Worker }
359*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8A8 * dst,const gl::ColorUI * src)360*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8::writeColor(R8G8B8A8 *dst, const gl::ColorUI *src)
361*8975f5c5SAndroid Build Coastguard Worker {
362*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
363*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
364*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
365*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint8_t>(src->alpha);
366*8975f5c5SAndroid Build Coastguard Worker }
367*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8A8 * dst,const gl::ColorF * src)368*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8::writeColor(R8G8B8A8 *dst, const gl::ColorF *src)
369*8975f5c5SAndroid Build Coastguard Worker {
370*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
371*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
372*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
373*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
374*8975f5c5SAndroid Build Coastguard Worker }
375*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8B8A8 * dst,const R8G8B8A8 * src1,const R8G8B8A8 * src2)376*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8::average(R8G8B8A8 *dst, const R8G8B8A8 *src1, const R8G8B8A8 *src2)
377*8975f5c5SAndroid Build Coastguard Worker {
378*8975f5c5SAndroid Build Coastguard Worker     *(uint32_t *)dst = (((*(uint32_t *)src1 ^ *(uint32_t *)src2) & 0xFEFEFEFE) >> 1) +
379*8975f5c5SAndroid Build Coastguard Worker                        (*(uint32_t *)src1 & *(uint32_t *)src2);
380*8975f5c5SAndroid Build Coastguard Worker }
381*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8B8A8SRGB * src)382*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8SRGB::readColor(gl::ColorF *dst, const R8G8B8A8SRGB *src)
383*8975f5c5SAndroid Build Coastguard Worker {
384*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
385*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
386*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
387*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
388*8975f5c5SAndroid Build Coastguard Worker }
389*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8A8SRGB * dst,const gl::ColorF * src)390*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8SRGB::writeColor(R8G8B8A8SRGB *dst, const gl::ColorF *src)
391*8975f5c5SAndroid Build Coastguard Worker {
392*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
393*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
394*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
395*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
396*8975f5c5SAndroid Build Coastguard Worker }
397*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8B8A8SRGB * dst,const R8G8B8A8SRGB * src1,const R8G8B8A8SRGB * src2)398*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8SRGB::average(R8G8B8A8SRGB *dst, const R8G8B8A8SRGB *src1, const R8G8B8A8SRGB *src2)
399*8975f5c5SAndroid Build Coastguard Worker {
400*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::linearToSRGB((gl::sRGBToLinear(src1->R) + gl::sRGBToLinear(src2->R)) * 0.5f);
401*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::linearToSRGB((gl::sRGBToLinear(src1->G) + gl::sRGBToLinear(src2->G)) * 0.5f);
402*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::linearToSRGB((gl::sRGBToLinear(src1->B) + gl::sRGBToLinear(src2->B)) * 0.5f);
403*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint8_t>(
404*8975f5c5SAndroid Build Coastguard Worker         (static_cast<uint16_t>(src1->A) + static_cast<uint16_t>(src2->A)) >> 1);
405*8975f5c5SAndroid Build Coastguard Worker }
406*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const B8G8R8A8 * src)407*8975f5c5SAndroid Build Coastguard Worker void B8G8R8A8::readColor(gl::ColorUI *dst, const B8G8R8A8 *src)
408*8975f5c5SAndroid Build Coastguard Worker {
409*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
410*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
411*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
412*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
413*8975f5c5SAndroid Build Coastguard Worker }
414*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const B8G8R8A8 * src)415*8975f5c5SAndroid Build Coastguard Worker void B8G8R8A8::readColor(gl::ColorF *dst, const B8G8R8A8 *src)
416*8975f5c5SAndroid Build Coastguard Worker {
417*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
418*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
419*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
420*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
421*8975f5c5SAndroid Build Coastguard Worker }
422*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B8G8R8A8 * dst,const gl::ColorUI * src)423*8975f5c5SAndroid Build Coastguard Worker void B8G8R8A8::writeColor(B8G8R8A8 *dst, const gl::ColorUI *src)
424*8975f5c5SAndroid Build Coastguard Worker {
425*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
426*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
427*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
428*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint8_t>(src->alpha);
429*8975f5c5SAndroid Build Coastguard Worker }
430*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B8G8R8A8 * dst,const gl::ColorF * src)431*8975f5c5SAndroid Build Coastguard Worker void B8G8R8A8::writeColor(B8G8R8A8 *dst, const gl::ColorF *src)
432*8975f5c5SAndroid Build Coastguard Worker {
433*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
434*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
435*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
436*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint8_t>(src->alpha);
437*8975f5c5SAndroid Build Coastguard Worker }
438*8975f5c5SAndroid Build Coastguard Worker 
average(B8G8R8A8 * dst,const B8G8R8A8 * src1,const B8G8R8A8 * src2)439*8975f5c5SAndroid Build Coastguard Worker void B8G8R8A8::average(B8G8R8A8 *dst, const B8G8R8A8 *src1, const B8G8R8A8 *src2)
440*8975f5c5SAndroid Build Coastguard Worker {
441*8975f5c5SAndroid Build Coastguard Worker     *(uint32_t *)dst = (((*(uint32_t *)src1 ^ *(uint32_t *)src2) & 0xFEFEFEFE) >> 1) +
442*8975f5c5SAndroid Build Coastguard Worker                        (*(uint32_t *)src1 & *(uint32_t *)src2);
443*8975f5c5SAndroid Build Coastguard Worker }
444*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const B8G8R8X8 * src)445*8975f5c5SAndroid Build Coastguard Worker void B8G8R8X8::readColor(gl::ColorUI *dst, const B8G8R8X8 *src)
446*8975f5c5SAndroid Build Coastguard Worker {
447*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
448*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
449*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
450*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
451*8975f5c5SAndroid Build Coastguard Worker }
452*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const B8G8R8X8 * src)453*8975f5c5SAndroid Build Coastguard Worker void B8G8R8X8::readColor(gl::ColorF *dst, const B8G8R8X8 *src)
454*8975f5c5SAndroid Build Coastguard Worker {
455*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
456*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
457*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
458*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
459*8975f5c5SAndroid Build Coastguard Worker }
460*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B8G8R8X8 * dst,const gl::ColorUI * src)461*8975f5c5SAndroid Build Coastguard Worker void B8G8R8X8::writeColor(B8G8R8X8 *dst, const gl::ColorUI *src)
462*8975f5c5SAndroid Build Coastguard Worker {
463*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
464*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
465*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
466*8975f5c5SAndroid Build Coastguard Worker     dst->X = 255;
467*8975f5c5SAndroid Build Coastguard Worker }
468*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B8G8R8X8 * dst,const gl::ColorF * src)469*8975f5c5SAndroid Build Coastguard Worker void B8G8R8X8::writeColor(B8G8R8X8 *dst, const gl::ColorF *src)
470*8975f5c5SAndroid Build Coastguard Worker {
471*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
472*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
473*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
474*8975f5c5SAndroid Build Coastguard Worker     dst->X = 255;
475*8975f5c5SAndroid Build Coastguard Worker }
476*8975f5c5SAndroid Build Coastguard Worker 
average(B8G8R8X8 * dst,const B8G8R8X8 * src1,const B8G8R8X8 * src2)477*8975f5c5SAndroid Build Coastguard Worker void B8G8R8X8::average(B8G8R8X8 *dst, const B8G8R8X8 *src1, const B8G8R8X8 *src2)
478*8975f5c5SAndroid Build Coastguard Worker {
479*8975f5c5SAndroid Build Coastguard Worker     *(uint32_t *)dst = (((*(uint32_t *)src1 ^ *(uint32_t *)src2) & 0xFEFEFEFE) >> 1) +
480*8975f5c5SAndroid Build Coastguard Worker                        (*(uint32_t *)src1 & *(uint32_t *)src2);
481*8975f5c5SAndroid Build Coastguard Worker     dst->X = 255;
482*8975f5c5SAndroid Build Coastguard Worker }
483*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R8G8B8X8 * src)484*8975f5c5SAndroid Build Coastguard Worker void R8G8B8X8::readColor(gl::ColorUI *dst, const R8G8B8X8 *src)
485*8975f5c5SAndroid Build Coastguard Worker {
486*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
487*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
488*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
489*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
490*8975f5c5SAndroid Build Coastguard Worker }
491*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8B8X8 * src)492*8975f5c5SAndroid Build Coastguard Worker void R8G8B8X8::readColor(gl::ColorF *dst, const R8G8B8X8 *src)
493*8975f5c5SAndroid Build Coastguard Worker {
494*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
495*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
496*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
497*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
498*8975f5c5SAndroid Build Coastguard Worker }
499*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8X8 * dst,const gl::ColorUI * src)500*8975f5c5SAndroid Build Coastguard Worker void R8G8B8X8::writeColor(R8G8B8X8 *dst, const gl::ColorUI *src)
501*8975f5c5SAndroid Build Coastguard Worker {
502*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint8_t>(src->red);
503*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint8_t>(src->green);
504*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint8_t>(src->blue);
505*8975f5c5SAndroid Build Coastguard Worker     dst->X = 255;
506*8975f5c5SAndroid Build Coastguard Worker }
507*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8X8 * dst,const gl::ColorF * src)508*8975f5c5SAndroid Build Coastguard Worker void R8G8B8X8::writeColor(R8G8B8X8 *dst, const gl::ColorF *src)
509*8975f5c5SAndroid Build Coastguard Worker {
510*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint8_t>(src->red);
511*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint8_t>(src->green);
512*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint8_t>(src->blue);
513*8975f5c5SAndroid Build Coastguard Worker     dst->X = 255;
514*8975f5c5SAndroid Build Coastguard Worker }
515*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8B8X8 * dst,const R8G8B8X8 * src1,const R8G8B8X8 * src2)516*8975f5c5SAndroid Build Coastguard Worker void R8G8B8X8::average(R8G8B8X8 *dst, const R8G8B8X8 *src1, const R8G8B8X8 *src2)
517*8975f5c5SAndroid Build Coastguard Worker {
518*8975f5c5SAndroid Build Coastguard Worker     *(uint32_t *)dst = (((*(uint32_t *)src1 ^ *(uint32_t *)src2) & 0xFEFEFEFE) >> 1) +
519*8975f5c5SAndroid Build Coastguard Worker                        (*(uint32_t *)src1 & *(uint32_t *)src2);
520*8975f5c5SAndroid Build Coastguard Worker     dst->X = 255;
521*8975f5c5SAndroid Build Coastguard Worker }
522*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A1R5G5B5 * src)523*8975f5c5SAndroid Build Coastguard Worker void A1R5G5B5::readColor(gl::ColorF *dst, const A1R5G5B5 *src)
524*8975f5c5SAndroid Build Coastguard Worker {
525*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<1>(gl::getShiftedData<1, 15>(src->ARGB));
526*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<5>(gl::getShiftedData<5, 10>(src->ARGB));
527*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<5>(gl::getShiftedData<5, 5>(src->ARGB));
528*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<5>(gl::getShiftedData<5, 0>(src->ARGB));
529*8975f5c5SAndroid Build Coastguard Worker }
530*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A1R5G5B5 * dst,const gl::ColorF * src)531*8975f5c5SAndroid Build Coastguard Worker void A1R5G5B5::writeColor(A1R5G5B5 *dst, const gl::ColorF *src)
532*8975f5c5SAndroid Build Coastguard Worker {
533*8975f5c5SAndroid Build Coastguard Worker     dst->ARGB = gl::shiftData<1, 15>(gl::floatToNormalized<1, uint16_t>(src->alpha)) |
534*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 10>(gl::floatToNormalized<5, uint16_t>(src->red)) |
535*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 5>(gl::floatToNormalized<5, uint16_t>(src->green)) |
536*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 0>(gl::floatToNormalized<5, uint16_t>(src->blue));
537*8975f5c5SAndroid Build Coastguard Worker }
538*8975f5c5SAndroid Build Coastguard Worker 
average(A1R5G5B5 * dst,const A1R5G5B5 * src1,const A1R5G5B5 * src2)539*8975f5c5SAndroid Build Coastguard Worker void A1R5G5B5::average(A1R5G5B5 *dst, const A1R5G5B5 *src1, const A1R5G5B5 *src2)
540*8975f5c5SAndroid Build Coastguard Worker {
541*8975f5c5SAndroid Build Coastguard Worker     dst->ARGB = gl::shiftData<1, 15>(gl::average(gl::getShiftedData<1, 15>(src1->ARGB),
542*8975f5c5SAndroid Build Coastguard Worker                                                  gl::getShiftedData<1, 15>(src2->ARGB))) |
543*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 10>(gl::average(gl::getShiftedData<5, 10>(src1->ARGB),
544*8975f5c5SAndroid Build Coastguard Worker                                                  gl::getShiftedData<5, 10>(src2->ARGB))) |
545*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 5>(gl::average(gl::getShiftedData<5, 5>(src1->ARGB),
546*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<5, 5>(src2->ARGB))) |
547*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 0>(gl::average(gl::getShiftedData<5, 0>(src1->ARGB),
548*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<5, 0>(src2->ARGB)));
549*8975f5c5SAndroid Build Coastguard Worker }
550*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R5G5B5A1 * src)551*8975f5c5SAndroid Build Coastguard Worker void R5G5B5A1::readColor(gl::ColorF *dst, const R5G5B5A1 *src)
552*8975f5c5SAndroid Build Coastguard Worker {
553*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<5>(gl::getShiftedData<5, 11>(src->RGBA));
554*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<5>(gl::getShiftedData<5, 6>(src->RGBA));
555*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<5>(gl::getShiftedData<5, 1>(src->RGBA));
556*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<1>(gl::getShiftedData<1, 0>(src->RGBA));
557*8975f5c5SAndroid Build Coastguard Worker }
558*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R5G5B5A1 * dst,const gl::ColorF * src)559*8975f5c5SAndroid Build Coastguard Worker void R5G5B5A1::writeColor(R5G5B5A1 *dst, const gl::ColorF *src)
560*8975f5c5SAndroid Build Coastguard Worker {
561*8975f5c5SAndroid Build Coastguard Worker     dst->RGBA = gl::shiftData<5, 11>(gl::floatToNormalized<5, uint16_t>(src->red)) |
562*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 6>(gl::floatToNormalized<5, uint16_t>(src->green)) |
563*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 1>(gl::floatToNormalized<5, uint16_t>(src->blue)) |
564*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<1, 0>(gl::floatToNormalized<1, uint16_t>(src->alpha));
565*8975f5c5SAndroid Build Coastguard Worker }
566*8975f5c5SAndroid Build Coastguard Worker 
average(R5G5B5A1 * dst,const R5G5B5A1 * src1,const R5G5B5A1 * src2)567*8975f5c5SAndroid Build Coastguard Worker void R5G5B5A1::average(R5G5B5A1 *dst, const R5G5B5A1 *src1, const R5G5B5A1 *src2)
568*8975f5c5SAndroid Build Coastguard Worker {
569*8975f5c5SAndroid Build Coastguard Worker     dst->RGBA = gl::shiftData<5, 11>(gl::average(gl::getShiftedData<5, 11>(src1->RGBA),
570*8975f5c5SAndroid Build Coastguard Worker                                                  gl::getShiftedData<5, 11>(src2->RGBA))) |
571*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 6>(gl::average(gl::getShiftedData<5, 6>(src1->RGBA),
572*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<5, 6>(src2->RGBA))) |
573*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<5, 1>(gl::average(gl::getShiftedData<5, 1>(src1->RGBA),
574*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<5, 1>(src2->RGBA))) |
575*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<1, 0>(gl::average(gl::getShiftedData<1, 0>(src1->RGBA),
576*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<1, 0>(src2->RGBA)));
577*8975f5c5SAndroid Build Coastguard Worker }
578*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R4G4B4A4 * src)579*8975f5c5SAndroid Build Coastguard Worker void R4G4B4A4::readColor(gl::ColorF *dst, const R4G4B4A4 *src)
580*8975f5c5SAndroid Build Coastguard Worker {
581*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<4>(gl::getShiftedData<4, 12>(src->RGBA));
582*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<4>(gl::getShiftedData<4, 8>(src->RGBA));
583*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<4>(gl::getShiftedData<4, 4>(src->RGBA));
584*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<4>(gl::getShiftedData<4, 0>(src->RGBA));
585*8975f5c5SAndroid Build Coastguard Worker }
586*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R4G4B4A4 * dst,const gl::ColorF * src)587*8975f5c5SAndroid Build Coastguard Worker void R4G4B4A4::writeColor(R4G4B4A4 *dst, const gl::ColorF *src)
588*8975f5c5SAndroid Build Coastguard Worker {
589*8975f5c5SAndroid Build Coastguard Worker     dst->RGBA = gl::shiftData<4, 12>(gl::floatToNormalized<4, uint16_t>(src->red)) |
590*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 8>(gl::floatToNormalized<4, uint16_t>(src->green)) |
591*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 4>(gl::floatToNormalized<4, uint16_t>(src->blue)) |
592*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 0>(gl::floatToNormalized<4, uint16_t>(src->alpha));
593*8975f5c5SAndroid Build Coastguard Worker }
594*8975f5c5SAndroid Build Coastguard Worker 
average(R4G4B4A4 * dst,const R4G4B4A4 * src1,const R4G4B4A4 * src2)595*8975f5c5SAndroid Build Coastguard Worker void R4G4B4A4::average(R4G4B4A4 *dst, const R4G4B4A4 *src1, const R4G4B4A4 *src2)
596*8975f5c5SAndroid Build Coastguard Worker {
597*8975f5c5SAndroid Build Coastguard Worker     dst->RGBA = gl::shiftData<4, 12>(gl::average(gl::getShiftedData<4, 12>(src1->RGBA),
598*8975f5c5SAndroid Build Coastguard Worker                                                  gl::getShiftedData<4, 12>(src2->RGBA))) |
599*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 8>(gl::average(gl::getShiftedData<4, 8>(src1->RGBA),
600*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<4, 8>(src2->RGBA))) |
601*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 4>(gl::average(gl::getShiftedData<4, 4>(src1->RGBA),
602*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<4, 4>(src2->RGBA))) |
603*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 0>(gl::average(gl::getShiftedData<4, 0>(src1->RGBA),
604*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<4, 0>(src2->RGBA)));
605*8975f5c5SAndroid Build Coastguard Worker }
606*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A4R4G4B4 * src)607*8975f5c5SAndroid Build Coastguard Worker void A4R4G4B4::readColor(gl::ColorF *dst, const A4R4G4B4 *src)
608*8975f5c5SAndroid Build Coastguard Worker {
609*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<4>(gl::getShiftedData<4, 12>(src->ARGB));
610*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<4>(gl::getShiftedData<4, 8>(src->ARGB));
611*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<4>(gl::getShiftedData<4, 4>(src->ARGB));
612*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<4>(gl::getShiftedData<4, 0>(src->ARGB));
613*8975f5c5SAndroid Build Coastguard Worker }
614*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A4R4G4B4 * dst,const gl::ColorF * src)615*8975f5c5SAndroid Build Coastguard Worker void A4R4G4B4::writeColor(A4R4G4B4 *dst, const gl::ColorF *src)
616*8975f5c5SAndroid Build Coastguard Worker {
617*8975f5c5SAndroid Build Coastguard Worker     dst->ARGB = gl::shiftData<4, 12>(gl::floatToNormalized<4, uint16_t>(src->alpha)) |
618*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 8>(gl::floatToNormalized<4, uint16_t>(src->red)) |
619*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 4>(gl::floatToNormalized<4, uint16_t>(src->green)) |
620*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 0>(gl::floatToNormalized<4, uint16_t>(src->blue));
621*8975f5c5SAndroid Build Coastguard Worker }
622*8975f5c5SAndroid Build Coastguard Worker 
average(A4R4G4B4 * dst,const A4R4G4B4 * src1,const A4R4G4B4 * src2)623*8975f5c5SAndroid Build Coastguard Worker void A4R4G4B4::average(A4R4G4B4 *dst, const A4R4G4B4 *src1, const A4R4G4B4 *src2)
624*8975f5c5SAndroid Build Coastguard Worker {
625*8975f5c5SAndroid Build Coastguard Worker     dst->ARGB = gl::shiftData<4, 12>(gl::average(gl::getShiftedData<4, 12>(src1->ARGB),
626*8975f5c5SAndroid Build Coastguard Worker                                                  gl::getShiftedData<4, 12>(src2->ARGB))) |
627*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 8>(gl::average(gl::getShiftedData<4, 8>(src1->ARGB),
628*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<4, 8>(src2->ARGB))) |
629*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 4>(gl::average(gl::getShiftedData<4, 4>(src1->ARGB),
630*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<4, 4>(src2->ARGB))) |
631*8975f5c5SAndroid Build Coastguard Worker                 gl::shiftData<4, 0>(gl::average(gl::getShiftedData<4, 0>(src1->ARGB),
632*8975f5c5SAndroid Build Coastguard Worker                                                 gl::getShiftedData<4, 0>(src2->ARGB)));
633*8975f5c5SAndroid Build Coastguard Worker }
634*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R16 * src)635*8975f5c5SAndroid Build Coastguard Worker void R16::readColor(gl::ColorUI *dst, const R16 *src)
636*8975f5c5SAndroid Build Coastguard Worker {
637*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
638*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0;
639*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
640*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
641*8975f5c5SAndroid Build Coastguard Worker }
642*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16 * src)643*8975f5c5SAndroid Build Coastguard Worker void R16::readColor(gl::ColorF *dst, const R16 *src)
644*8975f5c5SAndroid Build Coastguard Worker {
645*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
646*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
647*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
648*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
649*8975f5c5SAndroid Build Coastguard Worker }
650*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16 * dst,const gl::ColorUI * src)651*8975f5c5SAndroid Build Coastguard Worker void R16::writeColor(R16 *dst, const gl::ColorUI *src)
652*8975f5c5SAndroid Build Coastguard Worker {
653*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint16_t>(src->red);
654*8975f5c5SAndroid Build Coastguard Worker }
655*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16 * dst,const gl::ColorF * src)656*8975f5c5SAndroid Build Coastguard Worker void R16::writeColor(R16 *dst, const gl::ColorF *src)
657*8975f5c5SAndroid Build Coastguard Worker {
658*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint16_t>(src->red);
659*8975f5c5SAndroid Build Coastguard Worker }
660*8975f5c5SAndroid Build Coastguard Worker 
average(R16 * dst,const R16 * src1,const R16 * src2)661*8975f5c5SAndroid Build Coastguard Worker void R16::average(R16 *dst, const R16 *src1, const R16 *src2)
662*8975f5c5SAndroid Build Coastguard Worker {
663*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
664*8975f5c5SAndroid Build Coastguard Worker }
665*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R16G16 * src)666*8975f5c5SAndroid Build Coastguard Worker void R16G16::readColor(gl::ColorUI *dst, const R16G16 *src)
667*8975f5c5SAndroid Build Coastguard Worker {
668*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
669*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
670*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
671*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
672*8975f5c5SAndroid Build Coastguard Worker }
673*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16 * src)674*8975f5c5SAndroid Build Coastguard Worker void R16G16::readColor(gl::ColorF *dst, const R16G16 *src)
675*8975f5c5SAndroid Build Coastguard Worker {
676*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
677*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
678*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
679*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
680*8975f5c5SAndroid Build Coastguard Worker }
681*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16 * dst,const gl::ColorUI * src)682*8975f5c5SAndroid Build Coastguard Worker void R16G16::writeColor(R16G16 *dst, const gl::ColorUI *src)
683*8975f5c5SAndroid Build Coastguard Worker {
684*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint16_t>(src->red);
685*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint16_t>(src->green);
686*8975f5c5SAndroid Build Coastguard Worker }
687*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16 * dst,const gl::ColorF * src)688*8975f5c5SAndroid Build Coastguard Worker void R16G16::writeColor(R16G16 *dst, const gl::ColorF *src)
689*8975f5c5SAndroid Build Coastguard Worker {
690*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint16_t>(src->red);
691*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint16_t>(src->green);
692*8975f5c5SAndroid Build Coastguard Worker }
693*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16 * dst,const R16G16 * src1,const R16G16 * src2)694*8975f5c5SAndroid Build Coastguard Worker void R16G16::average(R16G16 *dst, const R16G16 *src1, const R16G16 *src2)
695*8975f5c5SAndroid Build Coastguard Worker {
696*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
697*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
698*8975f5c5SAndroid Build Coastguard Worker }
699*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R16G16B16 * src)700*8975f5c5SAndroid Build Coastguard Worker void R16G16B16::readColor(gl::ColorUI *dst, const R16G16B16 *src)
701*8975f5c5SAndroid Build Coastguard Worker {
702*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
703*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
704*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
705*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
706*8975f5c5SAndroid Build Coastguard Worker }
707*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16B16 * src)708*8975f5c5SAndroid Build Coastguard Worker void R16G16B16::readColor(gl::ColorF *dst, const R16G16B16 *src)
709*8975f5c5SAndroid Build Coastguard Worker {
710*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
711*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
712*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
713*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
714*8975f5c5SAndroid Build Coastguard Worker }
715*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16 * dst,const gl::ColorUI * src)716*8975f5c5SAndroid Build Coastguard Worker void R16G16B16::writeColor(R16G16B16 *dst, const gl::ColorUI *src)
717*8975f5c5SAndroid Build Coastguard Worker {
718*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint16_t>(src->red);
719*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint16_t>(src->green);
720*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint16_t>(src->blue);
721*8975f5c5SAndroid Build Coastguard Worker }
722*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16 * dst,const gl::ColorF * src)723*8975f5c5SAndroid Build Coastguard Worker void R16G16B16::writeColor(R16G16B16 *dst, const gl::ColorF *src)
724*8975f5c5SAndroid Build Coastguard Worker {
725*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint16_t>(src->red);
726*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint16_t>(src->green);
727*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint16_t>(src->blue);
728*8975f5c5SAndroid Build Coastguard Worker }
729*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16B16 * dst,const R16G16B16 * src1,const R16G16B16 * src2)730*8975f5c5SAndroid Build Coastguard Worker void R16G16B16::average(R16G16B16 *dst, const R16G16B16 *src1, const R16G16B16 *src2)
731*8975f5c5SAndroid Build Coastguard Worker {
732*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
733*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
734*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
735*8975f5c5SAndroid Build Coastguard Worker }
736*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R16G16B16A16 * src)737*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16::readColor(gl::ColorUI *dst, const R16G16B16A16 *src)
738*8975f5c5SAndroid Build Coastguard Worker {
739*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
740*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
741*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
742*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
743*8975f5c5SAndroid Build Coastguard Worker }
744*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16B16A16 * src)745*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16::readColor(gl::ColorF *dst, const R16G16B16A16 *src)
746*8975f5c5SAndroid Build Coastguard Worker {
747*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
748*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
749*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
750*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
751*8975f5c5SAndroid Build Coastguard Worker }
752*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16A16 * dst,const gl::ColorUI * src)753*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16::writeColor(R16G16B16A16 *dst, const gl::ColorUI *src)
754*8975f5c5SAndroid Build Coastguard Worker {
755*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint16_t>(src->red);
756*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint16_t>(src->green);
757*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint16_t>(src->blue);
758*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint16_t>(src->alpha);
759*8975f5c5SAndroid Build Coastguard Worker }
760*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16A16 * dst,const gl::ColorF * src)761*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16::writeColor(R16G16B16A16 *dst, const gl::ColorF *src)
762*8975f5c5SAndroid Build Coastguard Worker {
763*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint16_t>(src->red);
764*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint16_t>(src->green);
765*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint16_t>(src->blue);
766*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint16_t>(src->alpha);
767*8975f5c5SAndroid Build Coastguard Worker }
768*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16B16A16 * dst,const R16G16B16A16 * src1,const R16G16B16A16 * src2)769*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16::average(R16G16B16A16 *dst, const R16G16B16A16 *src1, const R16G16B16A16 *src2)
770*8975f5c5SAndroid Build Coastguard Worker {
771*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
772*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
773*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
774*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
775*8975f5c5SAndroid Build Coastguard Worker }
776*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R32 * src)777*8975f5c5SAndroid Build Coastguard Worker void R32::readColor(gl::ColorUI *dst, const R32 *src)
778*8975f5c5SAndroid Build Coastguard Worker {
779*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
780*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0;
781*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
782*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
783*8975f5c5SAndroid Build Coastguard Worker }
784*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32 * src)785*8975f5c5SAndroid Build Coastguard Worker void R32::readColor(gl::ColorF *dst, const R32 *src)
786*8975f5c5SAndroid Build Coastguard Worker {
787*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
788*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
789*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
790*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
791*8975f5c5SAndroid Build Coastguard Worker }
792*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32 * dst,const gl::ColorUI * src)793*8975f5c5SAndroid Build Coastguard Worker void R32::writeColor(R32 *dst, const gl::ColorUI *src)
794*8975f5c5SAndroid Build Coastguard Worker {
795*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
796*8975f5c5SAndroid Build Coastguard Worker }
797*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32 * dst,const gl::ColorF * src)798*8975f5c5SAndroid Build Coastguard Worker void R32::writeColor(R32 *dst, const gl::ColorF *src)
799*8975f5c5SAndroid Build Coastguard Worker {
800*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint32_t>(src->red);
801*8975f5c5SAndroid Build Coastguard Worker }
802*8975f5c5SAndroid Build Coastguard Worker 
average(R32 * dst,const R32 * src1,const R32 * src2)803*8975f5c5SAndroid Build Coastguard Worker void R32::average(R32 *dst, const R32 *src1, const R32 *src2)
804*8975f5c5SAndroid Build Coastguard Worker {
805*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
806*8975f5c5SAndroid Build Coastguard Worker }
807*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R32G32 * src)808*8975f5c5SAndroid Build Coastguard Worker void R32G32::readColor(gl::ColorUI *dst, const R32G32 *src)
809*8975f5c5SAndroid Build Coastguard Worker {
810*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
811*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
812*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
813*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
814*8975f5c5SAndroid Build Coastguard Worker }
815*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32 * src)816*8975f5c5SAndroid Build Coastguard Worker void R32G32::readColor(gl::ColorF *dst, const R32G32 *src)
817*8975f5c5SAndroid Build Coastguard Worker {
818*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
819*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
820*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
821*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
822*8975f5c5SAndroid Build Coastguard Worker }
823*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32 * dst,const gl::ColorUI * src)824*8975f5c5SAndroid Build Coastguard Worker void R32G32::writeColor(R32G32 *dst, const gl::ColorUI *src)
825*8975f5c5SAndroid Build Coastguard Worker {
826*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
827*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint32_t>(src->green);
828*8975f5c5SAndroid Build Coastguard Worker }
829*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32 * dst,const gl::ColorF * src)830*8975f5c5SAndroid Build Coastguard Worker void R32G32::writeColor(R32G32 *dst, const gl::ColorF *src)
831*8975f5c5SAndroid Build Coastguard Worker {
832*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint32_t>(src->red);
833*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint32_t>(src->green);
834*8975f5c5SAndroid Build Coastguard Worker }
835*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32 * dst,const R32G32 * src1,const R32G32 * src2)836*8975f5c5SAndroid Build Coastguard Worker void R32G32::average(R32G32 *dst, const R32G32 *src1, const R32G32 *src2)
837*8975f5c5SAndroid Build Coastguard Worker {
838*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
839*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
840*8975f5c5SAndroid Build Coastguard Worker }
841*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R32G32B32 * src)842*8975f5c5SAndroid Build Coastguard Worker void R32G32B32::readColor(gl::ColorUI *dst, const R32G32B32 *src)
843*8975f5c5SAndroid Build Coastguard Worker {
844*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
845*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
846*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
847*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
848*8975f5c5SAndroid Build Coastguard Worker }
849*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32B32 * src)850*8975f5c5SAndroid Build Coastguard Worker void R32G32B32::readColor(gl::ColorF *dst, const R32G32B32 *src)
851*8975f5c5SAndroid Build Coastguard Worker {
852*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
853*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
854*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
855*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
856*8975f5c5SAndroid Build Coastguard Worker }
857*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32 * dst,const gl::ColorUI * src)858*8975f5c5SAndroid Build Coastguard Worker void R32G32B32::writeColor(R32G32B32 *dst, const gl::ColorUI *src)
859*8975f5c5SAndroid Build Coastguard Worker {
860*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
861*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint32_t>(src->green);
862*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint32_t>(src->blue);
863*8975f5c5SAndroid Build Coastguard Worker }
864*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32 * dst,const gl::ColorF * src)865*8975f5c5SAndroid Build Coastguard Worker void R32G32B32::writeColor(R32G32B32 *dst, const gl::ColorF *src)
866*8975f5c5SAndroid Build Coastguard Worker {
867*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint32_t>(src->red);
868*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint32_t>(src->green);
869*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint32_t>(src->blue);
870*8975f5c5SAndroid Build Coastguard Worker }
871*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32B32 * dst,const R32G32B32 * src1,const R32G32B32 * src2)872*8975f5c5SAndroid Build Coastguard Worker void R32G32B32::average(R32G32B32 *dst, const R32G32B32 *src1, const R32G32B32 *src2)
873*8975f5c5SAndroid Build Coastguard Worker {
874*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
875*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
876*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
877*8975f5c5SAndroid Build Coastguard Worker }
878*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R32G32B32A32 * src)879*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32::readColor(gl::ColorUI *dst, const R32G32B32A32 *src)
880*8975f5c5SAndroid Build Coastguard Worker {
881*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
882*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
883*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
884*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
885*8975f5c5SAndroid Build Coastguard Worker }
886*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32B32A32 * src)887*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32::readColor(gl::ColorF *dst, const R32G32B32A32 *src)
888*8975f5c5SAndroid Build Coastguard Worker {
889*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
890*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
891*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
892*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
893*8975f5c5SAndroid Build Coastguard Worker }
894*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32A32 * dst,const gl::ColorUI * src)895*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32::writeColor(R32G32B32A32 *dst, const gl::ColorUI *src)
896*8975f5c5SAndroid Build Coastguard Worker {
897*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
898*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint32_t>(src->green);
899*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint32_t>(src->blue);
900*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint32_t>(src->alpha);
901*8975f5c5SAndroid Build Coastguard Worker }
902*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32A32 * dst,const gl::ColorF * src)903*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32::writeColor(R32G32B32A32 *dst, const gl::ColorF *src)
904*8975f5c5SAndroid Build Coastguard Worker {
905*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<uint32_t>(src->red);
906*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<uint32_t>(src->green);
907*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<uint32_t>(src->blue);
908*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<uint32_t>(src->alpha);
909*8975f5c5SAndroid Build Coastguard Worker }
910*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32B32A32 * dst,const R32G32B32A32 * src1,const R32G32B32A32 * src2)911*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32::average(R32G32B32A32 *dst, const R32G32B32A32 *src1, const R32G32B32A32 *src2)
912*8975f5c5SAndroid Build Coastguard Worker {
913*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
914*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
915*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
916*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
917*8975f5c5SAndroid Build Coastguard Worker }
918*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R8S * src)919*8975f5c5SAndroid Build Coastguard Worker void R8S::readColor(gl::ColorI *dst, const R8S *src)
920*8975f5c5SAndroid Build Coastguard Worker {
921*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
922*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0;
923*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
924*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
925*8975f5c5SAndroid Build Coastguard Worker }
926*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8S * src)927*8975f5c5SAndroid Build Coastguard Worker void R8S::readColor(gl::ColorF *dst, const R8S *src)
928*8975f5c5SAndroid Build Coastguard Worker {
929*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
930*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
931*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
932*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
933*8975f5c5SAndroid Build Coastguard Worker }
934*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8S * dst,const gl::ColorI * src)935*8975f5c5SAndroid Build Coastguard Worker void R8S::writeColor(R8S *dst, const gl::ColorI *src)
936*8975f5c5SAndroid Build Coastguard Worker {
937*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(src->red);
938*8975f5c5SAndroid Build Coastguard Worker }
939*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8S * dst,const gl::ColorF * src)940*8975f5c5SAndroid Build Coastguard Worker void R8S::writeColor(R8S *dst, const gl::ColorF *src)
941*8975f5c5SAndroid Build Coastguard Worker {
942*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int8_t>(src->red);
943*8975f5c5SAndroid Build Coastguard Worker }
944*8975f5c5SAndroid Build Coastguard Worker 
average(R8S * dst,const R8S * src1,const R8S * src2)945*8975f5c5SAndroid Build Coastguard Worker void R8S::average(R8S *dst, const R8S *src1, const R8S *src2)
946*8975f5c5SAndroid Build Coastguard Worker {
947*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(gl::average(src1->R, src2->R));
948*8975f5c5SAndroid Build Coastguard Worker }
949*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R8G8S * src)950*8975f5c5SAndroid Build Coastguard Worker void R8G8S::readColor(gl::ColorI *dst, const R8G8S *src)
951*8975f5c5SAndroid Build Coastguard Worker {
952*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
953*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
954*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
955*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
956*8975f5c5SAndroid Build Coastguard Worker }
957*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8S * src)958*8975f5c5SAndroid Build Coastguard Worker void R8G8S::readColor(gl::ColorF *dst, const R8G8S *src)
959*8975f5c5SAndroid Build Coastguard Worker {
960*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
961*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
962*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
963*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
964*8975f5c5SAndroid Build Coastguard Worker }
965*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8S * dst,const gl::ColorI * src)966*8975f5c5SAndroid Build Coastguard Worker void R8G8S::writeColor(R8G8S *dst, const gl::ColorI *src)
967*8975f5c5SAndroid Build Coastguard Worker {
968*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(src->red);
969*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int8_t>(src->green);
970*8975f5c5SAndroid Build Coastguard Worker }
971*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8S * dst,const gl::ColorF * src)972*8975f5c5SAndroid Build Coastguard Worker void R8G8S::writeColor(R8G8S *dst, const gl::ColorF *src)
973*8975f5c5SAndroid Build Coastguard Worker {
974*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int8_t>(src->red);
975*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int8_t>(src->green);
976*8975f5c5SAndroid Build Coastguard Worker }
977*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8S * dst,const R8G8S * src1,const R8G8S * src2)978*8975f5c5SAndroid Build Coastguard Worker void R8G8S::average(R8G8S *dst, const R8G8S *src1, const R8G8S *src2)
979*8975f5c5SAndroid Build Coastguard Worker {
980*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(gl::average(src1->R, src2->R));
981*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int8_t>(gl::average(src1->G, src2->G));
982*8975f5c5SAndroid Build Coastguard Worker }
983*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R8G8B8S * src)984*8975f5c5SAndroid Build Coastguard Worker void R8G8B8S::readColor(gl::ColorI *dst, const R8G8B8S *src)
985*8975f5c5SAndroid Build Coastguard Worker {
986*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
987*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
988*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
989*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
990*8975f5c5SAndroid Build Coastguard Worker }
991*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8B8S * src)992*8975f5c5SAndroid Build Coastguard Worker void R8G8B8S::readColor(gl::ColorF *dst, const R8G8B8S *src)
993*8975f5c5SAndroid Build Coastguard Worker {
994*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
995*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
996*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
997*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
998*8975f5c5SAndroid Build Coastguard Worker }
999*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8S * dst,const gl::ColorI * src)1000*8975f5c5SAndroid Build Coastguard Worker void R8G8B8S::writeColor(R8G8B8S *dst, const gl::ColorI *src)
1001*8975f5c5SAndroid Build Coastguard Worker {
1002*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(src->red);
1003*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int8_t>(src->green);
1004*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int8_t>(src->blue);
1005*8975f5c5SAndroid Build Coastguard Worker }
1006*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8S * dst,const gl::ColorF * src)1007*8975f5c5SAndroid Build Coastguard Worker void R8G8B8S::writeColor(R8G8B8S *dst, const gl::ColorF *src)
1008*8975f5c5SAndroid Build Coastguard Worker {
1009*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int8_t>(src->red);
1010*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int8_t>(src->green);
1011*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<int8_t>(src->blue);
1012*8975f5c5SAndroid Build Coastguard Worker }
1013*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8B8S * dst,const R8G8B8S * src1,const R8G8B8S * src2)1014*8975f5c5SAndroid Build Coastguard Worker void R8G8B8S::average(R8G8B8S *dst, const R8G8B8S *src1, const R8G8B8S *src2)
1015*8975f5c5SAndroid Build Coastguard Worker {
1016*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(gl::average(src1->R, src2->R));
1017*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int8_t>(gl::average(src1->G, src2->G));
1018*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int8_t>(gl::average(src1->B, src2->B));
1019*8975f5c5SAndroid Build Coastguard Worker }
1020*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R8G8B8A8S * src)1021*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8S::readColor(gl::ColorI *dst, const R8G8B8A8S *src)
1022*8975f5c5SAndroid Build Coastguard Worker {
1023*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1024*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1025*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1026*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1027*8975f5c5SAndroid Build Coastguard Worker }
1028*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R8G8B8A8S * src)1029*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8S::readColor(gl::ColorF *dst, const R8G8B8A8S *src)
1030*8975f5c5SAndroid Build Coastguard Worker {
1031*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1032*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1033*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
1034*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
1035*8975f5c5SAndroid Build Coastguard Worker }
1036*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8A8S * dst,const gl::ColorI * src)1037*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8S::writeColor(R8G8B8A8S *dst, const gl::ColorI *src)
1038*8975f5c5SAndroid Build Coastguard Worker {
1039*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(src->red);
1040*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int8_t>(src->green);
1041*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int8_t>(src->blue);
1042*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<int8_t>(src->alpha);
1043*8975f5c5SAndroid Build Coastguard Worker }
1044*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R8G8B8A8S * dst,const gl::ColorF * src)1045*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8S::writeColor(R8G8B8A8S *dst, const gl::ColorF *src)
1046*8975f5c5SAndroid Build Coastguard Worker {
1047*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int8_t>(src->red);
1048*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int8_t>(src->green);
1049*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<int8_t>(src->blue);
1050*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<int8_t>(src->alpha);
1051*8975f5c5SAndroid Build Coastguard Worker }
1052*8975f5c5SAndroid Build Coastguard Worker 
average(R8G8B8A8S * dst,const R8G8B8A8S * src1,const R8G8B8A8S * src2)1053*8975f5c5SAndroid Build Coastguard Worker void R8G8B8A8S::average(R8G8B8A8S *dst, const R8G8B8A8S *src1, const R8G8B8A8S *src2)
1054*8975f5c5SAndroid Build Coastguard Worker {
1055*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int8_t>(gl::average(src1->R, src2->R));
1056*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int8_t>(gl::average(src1->G, src2->G));
1057*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int8_t>(gl::average(src1->B, src2->B));
1058*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<int8_t>(gl::average(src1->A, src2->A));
1059*8975f5c5SAndroid Build Coastguard Worker }
1060*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R16S * src)1061*8975f5c5SAndroid Build Coastguard Worker void R16S::readColor(gl::ColorI *dst, const R16S *src)
1062*8975f5c5SAndroid Build Coastguard Worker {
1063*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1064*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0;
1065*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
1066*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
1067*8975f5c5SAndroid Build Coastguard Worker }
1068*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16S * src)1069*8975f5c5SAndroid Build Coastguard Worker void R16S::readColor(gl::ColorF *dst, const R16S *src)
1070*8975f5c5SAndroid Build Coastguard Worker {
1071*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1072*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
1073*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1074*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1075*8975f5c5SAndroid Build Coastguard Worker }
1076*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16S * dst,const gl::ColorI * src)1077*8975f5c5SAndroid Build Coastguard Worker void R16S::writeColor(R16S *dst, const gl::ColorI *src)
1078*8975f5c5SAndroid Build Coastguard Worker {
1079*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int16_t>(src->red);
1080*8975f5c5SAndroid Build Coastguard Worker }
1081*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16S * dst,const gl::ColorF * src)1082*8975f5c5SAndroid Build Coastguard Worker void R16S::writeColor(R16S *dst, const gl::ColorF *src)
1083*8975f5c5SAndroid Build Coastguard Worker {
1084*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int16_t>(src->red);
1085*8975f5c5SAndroid Build Coastguard Worker }
1086*8975f5c5SAndroid Build Coastguard Worker 
average(R16S * dst,const R16S * src1,const R16S * src2)1087*8975f5c5SAndroid Build Coastguard Worker void R16S::average(R16S *dst, const R16S *src1, const R16S *src2)
1088*8975f5c5SAndroid Build Coastguard Worker {
1089*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1090*8975f5c5SAndroid Build Coastguard Worker }
1091*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R16G16S * src)1092*8975f5c5SAndroid Build Coastguard Worker void R16G16S::readColor(gl::ColorI *dst, const R16G16S *src)
1093*8975f5c5SAndroid Build Coastguard Worker {
1094*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1095*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1096*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
1097*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
1098*8975f5c5SAndroid Build Coastguard Worker }
1099*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16S * src)1100*8975f5c5SAndroid Build Coastguard Worker void R16G16S::readColor(gl::ColorF *dst, const R16G16S *src)
1101*8975f5c5SAndroid Build Coastguard Worker {
1102*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1103*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1104*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1105*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1106*8975f5c5SAndroid Build Coastguard Worker }
1107*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16S * dst,const gl::ColorI * src)1108*8975f5c5SAndroid Build Coastguard Worker void R16G16S::writeColor(R16G16S *dst, const gl::ColorI *src)
1109*8975f5c5SAndroid Build Coastguard Worker {
1110*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int16_t>(src->red);
1111*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int16_t>(src->green);
1112*8975f5c5SAndroid Build Coastguard Worker }
1113*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16S * dst,const gl::ColorF * src)1114*8975f5c5SAndroid Build Coastguard Worker void R16G16S::writeColor(R16G16S *dst, const gl::ColorF *src)
1115*8975f5c5SAndroid Build Coastguard Worker {
1116*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int16_t>(src->red);
1117*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int16_t>(src->green);
1118*8975f5c5SAndroid Build Coastguard Worker }
1119*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16S * dst,const R16G16S * src1,const R16G16S * src2)1120*8975f5c5SAndroid Build Coastguard Worker void R16G16S::average(R16G16S *dst, const R16G16S *src1, const R16G16S *src2)
1121*8975f5c5SAndroid Build Coastguard Worker {
1122*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1123*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1124*8975f5c5SAndroid Build Coastguard Worker }
1125*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R16G16B16S * src)1126*8975f5c5SAndroid Build Coastguard Worker void R16G16B16S::readColor(gl::ColorI *dst, const R16G16B16S *src)
1127*8975f5c5SAndroid Build Coastguard Worker {
1128*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1129*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1130*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1131*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
1132*8975f5c5SAndroid Build Coastguard Worker }
1133*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16B16S * src)1134*8975f5c5SAndroid Build Coastguard Worker void R16G16B16S::readColor(gl::ColorF *dst, const R16G16B16S *src)
1135*8975f5c5SAndroid Build Coastguard Worker {
1136*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1137*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1138*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
1139*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1140*8975f5c5SAndroid Build Coastguard Worker }
1141*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16S * dst,const gl::ColorI * src)1142*8975f5c5SAndroid Build Coastguard Worker void R16G16B16S::writeColor(R16G16B16S *dst, const gl::ColorI *src)
1143*8975f5c5SAndroid Build Coastguard Worker {
1144*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int16_t>(src->red);
1145*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int16_t>(src->green);
1146*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int16_t>(src->blue);
1147*8975f5c5SAndroid Build Coastguard Worker }
1148*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16S * dst,const gl::ColorF * src)1149*8975f5c5SAndroid Build Coastguard Worker void R16G16B16S::writeColor(R16G16B16S *dst, const gl::ColorF *src)
1150*8975f5c5SAndroid Build Coastguard Worker {
1151*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int16_t>(src->red);
1152*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int16_t>(src->green);
1153*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<int16_t>(src->blue);
1154*8975f5c5SAndroid Build Coastguard Worker }
1155*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16B16S * dst,const R16G16B16S * src1,const R16G16B16S * src2)1156*8975f5c5SAndroid Build Coastguard Worker void R16G16B16S::average(R16G16B16S *dst, const R16G16B16S *src1, const R16G16B16S *src2)
1157*8975f5c5SAndroid Build Coastguard Worker {
1158*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1159*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1160*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1161*8975f5c5SAndroid Build Coastguard Worker }
1162*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R16G16B16A16S * src)1163*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16S::readColor(gl::ColorI *dst, const R16G16B16A16S *src)
1164*8975f5c5SAndroid Build Coastguard Worker {
1165*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1166*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1167*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1168*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1169*8975f5c5SAndroid Build Coastguard Worker }
1170*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16B16A16S * src)1171*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16S::readColor(gl::ColorF *dst, const R16G16B16A16S *src)
1172*8975f5c5SAndroid Build Coastguard Worker {
1173*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1174*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1175*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
1176*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
1177*8975f5c5SAndroid Build Coastguard Worker }
1178*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16A16S * dst,const gl::ColorI * src)1179*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16S::writeColor(R16G16B16A16S *dst, const gl::ColorI *src)
1180*8975f5c5SAndroid Build Coastguard Worker {
1181*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int16_t>(src->red);
1182*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int16_t>(src->green);
1183*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int16_t>(src->blue);
1184*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<int16_t>(src->alpha);
1185*8975f5c5SAndroid Build Coastguard Worker }
1186*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16A16S * dst,const gl::ColorF * src)1187*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16S::writeColor(R16G16B16A16S *dst, const gl::ColorF *src)
1188*8975f5c5SAndroid Build Coastguard Worker {
1189*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int16_t>(src->red);
1190*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int16_t>(src->green);
1191*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<int16_t>(src->blue);
1192*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<int16_t>(src->alpha);
1193*8975f5c5SAndroid Build Coastguard Worker }
1194*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16B16A16S * dst,const R16G16B16A16S * src1,const R16G16B16A16S * src2)1195*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16S::average(R16G16B16A16S *dst,
1196*8975f5c5SAndroid Build Coastguard Worker                             const R16G16B16A16S *src1,
1197*8975f5c5SAndroid Build Coastguard Worker                             const R16G16B16A16S *src2)
1198*8975f5c5SAndroid Build Coastguard Worker {
1199*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1200*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1201*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1202*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1203*8975f5c5SAndroid Build Coastguard Worker }
1204*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R32S * src)1205*8975f5c5SAndroid Build Coastguard Worker void R32S::readColor(gl::ColorI *dst, const R32S *src)
1206*8975f5c5SAndroid Build Coastguard Worker {
1207*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1208*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0;
1209*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
1210*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
1211*8975f5c5SAndroid Build Coastguard Worker }
1212*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32S * src)1213*8975f5c5SAndroid Build Coastguard Worker void R32S::readColor(gl::ColorF *dst, const R32S *src)
1214*8975f5c5SAndroid Build Coastguard Worker {
1215*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1216*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
1217*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1218*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1219*8975f5c5SAndroid Build Coastguard Worker }
1220*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32S * dst,const gl::ColorI * src)1221*8975f5c5SAndroid Build Coastguard Worker void R32S::writeColor(R32S *dst, const gl::ColorI *src)
1222*8975f5c5SAndroid Build Coastguard Worker {
1223*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int32_t>(src->red);
1224*8975f5c5SAndroid Build Coastguard Worker }
1225*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32S * dst,const gl::ColorF * src)1226*8975f5c5SAndroid Build Coastguard Worker void R32S::writeColor(R32S *dst, const gl::ColorF *src)
1227*8975f5c5SAndroid Build Coastguard Worker {
1228*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int32_t>(src->red);
1229*8975f5c5SAndroid Build Coastguard Worker }
1230*8975f5c5SAndroid Build Coastguard Worker 
average(R32S * dst,const R32S * src1,const R32S * src2)1231*8975f5c5SAndroid Build Coastguard Worker void R32S::average(R32S *dst, const R32S *src1, const R32S *src2)
1232*8975f5c5SAndroid Build Coastguard Worker {
1233*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1234*8975f5c5SAndroid Build Coastguard Worker }
1235*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R32G32S * src)1236*8975f5c5SAndroid Build Coastguard Worker void R32G32S::readColor(gl::ColorI *dst, const R32G32S *src)
1237*8975f5c5SAndroid Build Coastguard Worker {
1238*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1239*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1240*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0;
1241*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
1242*8975f5c5SAndroid Build Coastguard Worker }
1243*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32S * src)1244*8975f5c5SAndroid Build Coastguard Worker void R32G32S::readColor(gl::ColorF *dst, const R32G32S *src)
1245*8975f5c5SAndroid Build Coastguard Worker {
1246*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1247*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1248*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1249*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1250*8975f5c5SAndroid Build Coastguard Worker }
1251*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32S * dst,const gl::ColorI * src)1252*8975f5c5SAndroid Build Coastguard Worker void R32G32S::writeColor(R32G32S *dst, const gl::ColorI *src)
1253*8975f5c5SAndroid Build Coastguard Worker {
1254*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int32_t>(src->red);
1255*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int32_t>(src->green);
1256*8975f5c5SAndroid Build Coastguard Worker }
1257*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32S * dst,const gl::ColorF * src)1258*8975f5c5SAndroid Build Coastguard Worker void R32G32S::writeColor(R32G32S *dst, const gl::ColorF *src)
1259*8975f5c5SAndroid Build Coastguard Worker {
1260*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int32_t>(src->red);
1261*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int32_t>(src->green);
1262*8975f5c5SAndroid Build Coastguard Worker }
1263*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32S * dst,const R32G32S * src1,const R32G32S * src2)1264*8975f5c5SAndroid Build Coastguard Worker void R32G32S::average(R32G32S *dst, const R32G32S *src1, const R32G32S *src2)
1265*8975f5c5SAndroid Build Coastguard Worker {
1266*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1267*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1268*8975f5c5SAndroid Build Coastguard Worker }
1269*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R32G32B32S * src)1270*8975f5c5SAndroid Build Coastguard Worker void R32G32B32S::readColor(gl::ColorI *dst, const R32G32B32S *src)
1271*8975f5c5SAndroid Build Coastguard Worker {
1272*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1273*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1274*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1275*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1;
1276*8975f5c5SAndroid Build Coastguard Worker }
1277*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32B32S * src)1278*8975f5c5SAndroid Build Coastguard Worker void R32G32B32S::readColor(gl::ColorF *dst, const R32G32B32S *src)
1279*8975f5c5SAndroid Build Coastguard Worker {
1280*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1281*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1282*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
1283*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1284*8975f5c5SAndroid Build Coastguard Worker }
1285*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32S * dst,const gl::ColorI * src)1286*8975f5c5SAndroid Build Coastguard Worker void R32G32B32S::writeColor(R32G32B32S *dst, const gl::ColorI *src)
1287*8975f5c5SAndroid Build Coastguard Worker {
1288*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int32_t>(src->red);
1289*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int32_t>(src->green);
1290*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int32_t>(src->blue);
1291*8975f5c5SAndroid Build Coastguard Worker }
1292*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32S * dst,const gl::ColorF * src)1293*8975f5c5SAndroid Build Coastguard Worker void R32G32B32S::writeColor(R32G32B32S *dst, const gl::ColorF *src)
1294*8975f5c5SAndroid Build Coastguard Worker {
1295*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int32_t>(src->red);
1296*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int32_t>(src->green);
1297*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<int32_t>(src->blue);
1298*8975f5c5SAndroid Build Coastguard Worker }
1299*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32B32S * dst,const R32G32B32S * src1,const R32G32B32S * src2)1300*8975f5c5SAndroid Build Coastguard Worker void R32G32B32S::average(R32G32B32S *dst, const R32G32B32S *src1, const R32G32B32S *src2)
1301*8975f5c5SAndroid Build Coastguard Worker {
1302*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1303*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1304*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1305*8975f5c5SAndroid Build Coastguard Worker }
1306*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R32G32B32A32S * src)1307*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32S::readColor(gl::ColorI *dst, const R32G32B32A32S *src)
1308*8975f5c5SAndroid Build Coastguard Worker {
1309*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1310*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1311*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1312*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1313*8975f5c5SAndroid Build Coastguard Worker }
1314*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32B32A32S * src)1315*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32S::readColor(gl::ColorF *dst, const R32G32B32A32S *src)
1316*8975f5c5SAndroid Build Coastguard Worker {
1317*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat(src->R);
1318*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat(src->G);
1319*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat(src->B);
1320*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat(src->A);
1321*8975f5c5SAndroid Build Coastguard Worker }
1322*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32A32S * dst,const gl::ColorI * src)1323*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32S::writeColor(R32G32B32A32S *dst, const gl::ColorI *src)
1324*8975f5c5SAndroid Build Coastguard Worker {
1325*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int32_t>(src->red);
1326*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int32_t>(src->green);
1327*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int32_t>(src->blue);
1328*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<int32_t>(src->alpha);
1329*8975f5c5SAndroid Build Coastguard Worker }
1330*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32A32S * dst,const gl::ColorF * src)1331*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32S::writeColor(R32G32B32A32S *dst, const gl::ColorF *src)
1332*8975f5c5SAndroid Build Coastguard Worker {
1333*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<int32_t>(src->red);
1334*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<int32_t>(src->green);
1335*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<int32_t>(src->blue);
1336*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<int32_t>(src->alpha);
1337*8975f5c5SAndroid Build Coastguard Worker }
1338*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32B32A32S * dst,const R32G32B32A32S * src1,const R32G32B32A32S * src2)1339*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32S::average(R32G32B32A32S *dst,
1340*8975f5c5SAndroid Build Coastguard Worker                             const R32G32B32A32S *src1,
1341*8975f5c5SAndroid Build Coastguard Worker                             const R32G32B32A32S *src2)
1342*8975f5c5SAndroid Build Coastguard Worker {
1343*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1344*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1345*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1346*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1347*8975f5c5SAndroid Build Coastguard Worker }
1348*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A16B16G16R16F * src)1349*8975f5c5SAndroid Build Coastguard Worker void A16B16G16R16F::readColor(gl::ColorF *dst, const A16B16G16R16F *src)
1350*8975f5c5SAndroid Build Coastguard Worker {
1351*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::float16ToFloat32(src->R);
1352*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::float16ToFloat32(src->G);
1353*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::float16ToFloat32(src->B);
1354*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::float16ToFloat32(src->A);
1355*8975f5c5SAndroid Build Coastguard Worker }
1356*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A16B16G16R16F * dst,const gl::ColorF * src)1357*8975f5c5SAndroid Build Coastguard Worker void A16B16G16R16F::writeColor(A16B16G16R16F *dst, const gl::ColorF *src)
1358*8975f5c5SAndroid Build Coastguard Worker {
1359*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::float32ToFloat16(src->red);
1360*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::float32ToFloat16(src->green);
1361*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::float32ToFloat16(src->blue);
1362*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::float32ToFloat16(src->alpha);
1363*8975f5c5SAndroid Build Coastguard Worker }
1364*8975f5c5SAndroid Build Coastguard Worker 
average(A16B16G16R16F * dst,const A16B16G16R16F * src1,const A16B16G16R16F * src2)1365*8975f5c5SAndroid Build Coastguard Worker void A16B16G16R16F::average(A16B16G16R16F *dst,
1366*8975f5c5SAndroid Build Coastguard Worker                             const A16B16G16R16F *src1,
1367*8975f5c5SAndroid Build Coastguard Worker                             const A16B16G16R16F *src2)
1368*8975f5c5SAndroid Build Coastguard Worker {
1369*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::averageHalfFloat(src1->R, src2->R);
1370*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::averageHalfFloat(src1->G, src2->G);
1371*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::averageHalfFloat(src1->B, src2->B);
1372*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::averageHalfFloat(src1->A, src2->A);
1373*8975f5c5SAndroid Build Coastguard Worker }
1374*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16B16A16F * src)1375*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16F::readColor(gl::ColorF *dst, const R16G16B16A16F *src)
1376*8975f5c5SAndroid Build Coastguard Worker {
1377*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::float16ToFloat32(src->R);
1378*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::float16ToFloat32(src->G);
1379*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::float16ToFloat32(src->B);
1380*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::float16ToFloat32(src->A);
1381*8975f5c5SAndroid Build Coastguard Worker }
1382*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16A16F * dst,const gl::ColorF * src)1383*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16F::writeColor(R16G16B16A16F *dst, const gl::ColorF *src)
1384*8975f5c5SAndroid Build Coastguard Worker {
1385*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::float32ToFloat16(src->red);
1386*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::float32ToFloat16(src->green);
1387*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::float32ToFloat16(src->blue);
1388*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::float32ToFloat16(src->alpha);
1389*8975f5c5SAndroid Build Coastguard Worker }
1390*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16B16A16F * dst,const R16G16B16A16F * src1,const R16G16B16A16F * src2)1391*8975f5c5SAndroid Build Coastguard Worker void R16G16B16A16F::average(R16G16B16A16F *dst,
1392*8975f5c5SAndroid Build Coastguard Worker                             const R16G16B16A16F *src1,
1393*8975f5c5SAndroid Build Coastguard Worker                             const R16G16B16A16F *src2)
1394*8975f5c5SAndroid Build Coastguard Worker {
1395*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::averageHalfFloat(src1->R, src2->R);
1396*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::averageHalfFloat(src1->G, src2->G);
1397*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::averageHalfFloat(src1->B, src2->B);
1398*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::averageHalfFloat(src1->A, src2->A);
1399*8975f5c5SAndroid Build Coastguard Worker }
1400*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16F * src)1401*8975f5c5SAndroid Build Coastguard Worker void R16F::readColor(gl::ColorF *dst, const R16F *src)
1402*8975f5c5SAndroid Build Coastguard Worker {
1403*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::float16ToFloat32(src->R);
1404*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
1405*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1406*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1407*8975f5c5SAndroid Build Coastguard Worker }
1408*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16F * dst,const gl::ColorF * src)1409*8975f5c5SAndroid Build Coastguard Worker void R16F::writeColor(R16F *dst, const gl::ColorF *src)
1410*8975f5c5SAndroid Build Coastguard Worker {
1411*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::float32ToFloat16(src->red);
1412*8975f5c5SAndroid Build Coastguard Worker }
1413*8975f5c5SAndroid Build Coastguard Worker 
average(R16F * dst,const R16F * src1,const R16F * src2)1414*8975f5c5SAndroid Build Coastguard Worker void R16F::average(R16F *dst, const R16F *src1, const R16F *src2)
1415*8975f5c5SAndroid Build Coastguard Worker {
1416*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::averageHalfFloat(src1->R, src2->R);
1417*8975f5c5SAndroid Build Coastguard Worker }
1418*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A16F * src)1419*8975f5c5SAndroid Build Coastguard Worker void A16F::readColor(gl::ColorF *dst, const A16F *src)
1420*8975f5c5SAndroid Build Coastguard Worker {
1421*8975f5c5SAndroid Build Coastguard Worker     dst->red   = 0.0f;
1422*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
1423*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1424*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::float16ToFloat32(src->A);
1425*8975f5c5SAndroid Build Coastguard Worker }
1426*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A16F * dst,const gl::ColorF * src)1427*8975f5c5SAndroid Build Coastguard Worker void A16F::writeColor(A16F *dst, const gl::ColorF *src)
1428*8975f5c5SAndroid Build Coastguard Worker {
1429*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::float32ToFloat16(src->alpha);
1430*8975f5c5SAndroid Build Coastguard Worker }
1431*8975f5c5SAndroid Build Coastguard Worker 
average(A16F * dst,const A16F * src1,const A16F * src2)1432*8975f5c5SAndroid Build Coastguard Worker void A16F::average(A16F *dst, const A16F *src1, const A16F *src2)
1433*8975f5c5SAndroid Build Coastguard Worker {
1434*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::averageHalfFloat(src1->A, src2->A);
1435*8975f5c5SAndroid Build Coastguard Worker }
1436*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L16F * src)1437*8975f5c5SAndroid Build Coastguard Worker void L16F::readColor(gl::ColorF *dst, const L16F *src)
1438*8975f5c5SAndroid Build Coastguard Worker {
1439*8975f5c5SAndroid Build Coastguard Worker     float lum  = gl::float16ToFloat32(src->L);
1440*8975f5c5SAndroid Build Coastguard Worker     dst->red   = lum;
1441*8975f5c5SAndroid Build Coastguard Worker     dst->green = lum;
1442*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = lum;
1443*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1444*8975f5c5SAndroid Build Coastguard Worker }
1445*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L16F * dst,const gl::ColorF * src)1446*8975f5c5SAndroid Build Coastguard Worker void L16F::writeColor(L16F *dst, const gl::ColorF *src)
1447*8975f5c5SAndroid Build Coastguard Worker {
1448*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::float32ToFloat16(src->red);
1449*8975f5c5SAndroid Build Coastguard Worker }
1450*8975f5c5SAndroid Build Coastguard Worker 
average(L16F * dst,const L16F * src1,const L16F * src2)1451*8975f5c5SAndroid Build Coastguard Worker void L16F::average(L16F *dst, const L16F *src1, const L16F *src2)
1452*8975f5c5SAndroid Build Coastguard Worker {
1453*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::averageHalfFloat(src1->L, src2->L);
1454*8975f5c5SAndroid Build Coastguard Worker }
1455*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L16A16F * src)1456*8975f5c5SAndroid Build Coastguard Worker void L16A16F::readColor(gl::ColorF *dst, const L16A16F *src)
1457*8975f5c5SAndroid Build Coastguard Worker {
1458*8975f5c5SAndroid Build Coastguard Worker     float lum  = gl::float16ToFloat32(src->L);
1459*8975f5c5SAndroid Build Coastguard Worker     dst->red   = lum;
1460*8975f5c5SAndroid Build Coastguard Worker     dst->green = lum;
1461*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = lum;
1462*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::float16ToFloat32(src->A);
1463*8975f5c5SAndroid Build Coastguard Worker }
1464*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L16A16F * dst,const gl::ColorF * src)1465*8975f5c5SAndroid Build Coastguard Worker void L16A16F::writeColor(L16A16F *dst, const gl::ColorF *src)
1466*8975f5c5SAndroid Build Coastguard Worker {
1467*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::float32ToFloat16(src->red);
1468*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::float32ToFloat16(src->alpha);
1469*8975f5c5SAndroid Build Coastguard Worker }
1470*8975f5c5SAndroid Build Coastguard Worker 
average(L16A16F * dst,const L16A16F * src1,const L16A16F * src2)1471*8975f5c5SAndroid Build Coastguard Worker void L16A16F::average(L16A16F *dst, const L16A16F *src1, const L16A16F *src2)
1472*8975f5c5SAndroid Build Coastguard Worker {
1473*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::averageHalfFloat(src1->L, src2->L);
1474*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::averageHalfFloat(src1->A, src2->A);
1475*8975f5c5SAndroid Build Coastguard Worker }
1476*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16F * src)1477*8975f5c5SAndroid Build Coastguard Worker void R16G16F::readColor(gl::ColorF *dst, const R16G16F *src)
1478*8975f5c5SAndroid Build Coastguard Worker {
1479*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::float16ToFloat32(src->R);
1480*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::float16ToFloat32(src->G);
1481*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1482*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1483*8975f5c5SAndroid Build Coastguard Worker }
1484*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16F * dst,const gl::ColorF * src)1485*8975f5c5SAndroid Build Coastguard Worker void R16G16F::writeColor(R16G16F *dst, const gl::ColorF *src)
1486*8975f5c5SAndroid Build Coastguard Worker {
1487*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::float32ToFloat16(src->red);
1488*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::float32ToFloat16(src->green);
1489*8975f5c5SAndroid Build Coastguard Worker }
1490*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16F * dst,const R16G16F * src1,const R16G16F * src2)1491*8975f5c5SAndroid Build Coastguard Worker void R16G16F::average(R16G16F *dst, const R16G16F *src1, const R16G16F *src2)
1492*8975f5c5SAndroid Build Coastguard Worker {
1493*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::averageHalfFloat(src1->R, src2->R);
1494*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::averageHalfFloat(src1->G, src2->G);
1495*8975f5c5SAndroid Build Coastguard Worker }
1496*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R16G16B16F * src)1497*8975f5c5SAndroid Build Coastguard Worker void R16G16B16F::readColor(gl::ColorF *dst, const R16G16B16F *src)
1498*8975f5c5SAndroid Build Coastguard Worker {
1499*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::float16ToFloat32(src->R);
1500*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::float16ToFloat32(src->G);
1501*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::float16ToFloat32(src->B);
1502*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1503*8975f5c5SAndroid Build Coastguard Worker }
1504*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R16G16B16F * dst,const gl::ColorF * src)1505*8975f5c5SAndroid Build Coastguard Worker void R16G16B16F::writeColor(R16G16B16F *dst, const gl::ColorF *src)
1506*8975f5c5SAndroid Build Coastguard Worker {
1507*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::float32ToFloat16(src->red);
1508*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::float32ToFloat16(src->green);
1509*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::float32ToFloat16(src->blue);
1510*8975f5c5SAndroid Build Coastguard Worker }
1511*8975f5c5SAndroid Build Coastguard Worker 
average(R16G16B16F * dst,const R16G16B16F * src1,const R16G16B16F * src2)1512*8975f5c5SAndroid Build Coastguard Worker void R16G16B16F::average(R16G16B16F *dst, const R16G16B16F *src1, const R16G16B16F *src2)
1513*8975f5c5SAndroid Build Coastguard Worker {
1514*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::averageHalfFloat(src1->R, src2->R);
1515*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::averageHalfFloat(src1->G, src2->G);
1516*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::averageHalfFloat(src1->B, src2->B);
1517*8975f5c5SAndroid Build Coastguard Worker }
1518*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A32B32G32R32F * src)1519*8975f5c5SAndroid Build Coastguard Worker void A32B32G32R32F::readColor(gl::ColorF *dst, const A32B32G32R32F *src)
1520*8975f5c5SAndroid Build Coastguard Worker {
1521*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1522*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1523*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1524*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1525*8975f5c5SAndroid Build Coastguard Worker }
1526*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A32B32G32R32F * dst,const gl::ColorF * src)1527*8975f5c5SAndroid Build Coastguard Worker void A32B32G32R32F::writeColor(A32B32G32R32F *dst, const gl::ColorF *src)
1528*8975f5c5SAndroid Build Coastguard Worker {
1529*8975f5c5SAndroid Build Coastguard Worker     dst->R = src->red;
1530*8975f5c5SAndroid Build Coastguard Worker     dst->G = src->green;
1531*8975f5c5SAndroid Build Coastguard Worker     dst->B = src->blue;
1532*8975f5c5SAndroid Build Coastguard Worker     dst->A = src->alpha;
1533*8975f5c5SAndroid Build Coastguard Worker }
1534*8975f5c5SAndroid Build Coastguard Worker 
average(A32B32G32R32F * dst,const A32B32G32R32F * src1,const A32B32G32R32F * src2)1535*8975f5c5SAndroid Build Coastguard Worker void A32B32G32R32F::average(A32B32G32R32F *dst,
1536*8975f5c5SAndroid Build Coastguard Worker                             const A32B32G32R32F *src1,
1537*8975f5c5SAndroid Build Coastguard Worker                             const A32B32G32R32F *src2)
1538*8975f5c5SAndroid Build Coastguard Worker {
1539*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1540*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1541*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1542*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1543*8975f5c5SAndroid Build Coastguard Worker }
1544*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32B32A32F * src)1545*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32F::readColor(gl::ColorF *dst, const R32G32B32A32F *src)
1546*8975f5c5SAndroid Build Coastguard Worker {
1547*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1548*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1549*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1550*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1551*8975f5c5SAndroid Build Coastguard Worker }
1552*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32A32F * dst,const gl::ColorF * src)1553*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32F::writeColor(R32G32B32A32F *dst, const gl::ColorF *src)
1554*8975f5c5SAndroid Build Coastguard Worker {
1555*8975f5c5SAndroid Build Coastguard Worker     dst->R = src->red;
1556*8975f5c5SAndroid Build Coastguard Worker     dst->G = src->green;
1557*8975f5c5SAndroid Build Coastguard Worker     dst->B = src->blue;
1558*8975f5c5SAndroid Build Coastguard Worker     dst->A = src->alpha;
1559*8975f5c5SAndroid Build Coastguard Worker }
1560*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32B32A32F * dst,const R32G32B32A32F * src1,const R32G32B32A32F * src2)1561*8975f5c5SAndroid Build Coastguard Worker void R32G32B32A32F::average(R32G32B32A32F *dst,
1562*8975f5c5SAndroid Build Coastguard Worker                             const R32G32B32A32F *src1,
1563*8975f5c5SAndroid Build Coastguard Worker                             const R32G32B32A32F *src2)
1564*8975f5c5SAndroid Build Coastguard Worker {
1565*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1566*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1567*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1568*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1569*8975f5c5SAndroid Build Coastguard Worker }
1570*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32F * src)1571*8975f5c5SAndroid Build Coastguard Worker void R32F::readColor(gl::ColorF *dst, const R32F *src)
1572*8975f5c5SAndroid Build Coastguard Worker {
1573*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1574*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
1575*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1576*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1577*8975f5c5SAndroid Build Coastguard Worker }
1578*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32F * dst,const gl::ColorF * src)1579*8975f5c5SAndroid Build Coastguard Worker void R32F::writeColor(R32F *dst, const gl::ColorF *src)
1580*8975f5c5SAndroid Build Coastguard Worker {
1581*8975f5c5SAndroid Build Coastguard Worker     dst->R = src->red;
1582*8975f5c5SAndroid Build Coastguard Worker }
1583*8975f5c5SAndroid Build Coastguard Worker 
average(R32F * dst,const R32F * src1,const R32F * src2)1584*8975f5c5SAndroid Build Coastguard Worker void R32F::average(R32F *dst, const R32F *src1, const R32F *src2)
1585*8975f5c5SAndroid Build Coastguard Worker {
1586*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1587*8975f5c5SAndroid Build Coastguard Worker }
1588*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const A32F * src)1589*8975f5c5SAndroid Build Coastguard Worker void A32F::readColor(gl::ColorF *dst, const A32F *src)
1590*8975f5c5SAndroid Build Coastguard Worker {
1591*8975f5c5SAndroid Build Coastguard Worker     dst->red   = 0.0f;
1592*8975f5c5SAndroid Build Coastguard Worker     dst->green = 0.0f;
1593*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1594*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1595*8975f5c5SAndroid Build Coastguard Worker }
1596*8975f5c5SAndroid Build Coastguard Worker 
writeColor(A32F * dst,const gl::ColorF * src)1597*8975f5c5SAndroid Build Coastguard Worker void A32F::writeColor(A32F *dst, const gl::ColorF *src)
1598*8975f5c5SAndroid Build Coastguard Worker {
1599*8975f5c5SAndroid Build Coastguard Worker     dst->A = src->alpha;
1600*8975f5c5SAndroid Build Coastguard Worker }
1601*8975f5c5SAndroid Build Coastguard Worker 
average(A32F * dst,const A32F * src1,const A32F * src2)1602*8975f5c5SAndroid Build Coastguard Worker void A32F::average(A32F *dst, const A32F *src1, const A32F *src2)
1603*8975f5c5SAndroid Build Coastguard Worker {
1604*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1605*8975f5c5SAndroid Build Coastguard Worker }
1606*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L32F * src)1607*8975f5c5SAndroid Build Coastguard Worker void L32F::readColor(gl::ColorF *dst, const L32F *src)
1608*8975f5c5SAndroid Build Coastguard Worker {
1609*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->L;
1610*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->L;
1611*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->L;
1612*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1613*8975f5c5SAndroid Build Coastguard Worker }
1614*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L32F * dst,const gl::ColorF * src)1615*8975f5c5SAndroid Build Coastguard Worker void L32F::writeColor(L32F *dst, const gl::ColorF *src)
1616*8975f5c5SAndroid Build Coastguard Worker {
1617*8975f5c5SAndroid Build Coastguard Worker     dst->L = src->red;
1618*8975f5c5SAndroid Build Coastguard Worker }
1619*8975f5c5SAndroid Build Coastguard Worker 
average(L32F * dst,const L32F * src1,const L32F * src2)1620*8975f5c5SAndroid Build Coastguard Worker void L32F::average(L32F *dst, const L32F *src1, const L32F *src2)
1621*8975f5c5SAndroid Build Coastguard Worker {
1622*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::average(src1->L, src2->L);
1623*8975f5c5SAndroid Build Coastguard Worker }
1624*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const L32A32F * src)1625*8975f5c5SAndroid Build Coastguard Worker void L32A32F::readColor(gl::ColorF *dst, const L32A32F *src)
1626*8975f5c5SAndroid Build Coastguard Worker {
1627*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->L;
1628*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->L;
1629*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->L;
1630*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1631*8975f5c5SAndroid Build Coastguard Worker }
1632*8975f5c5SAndroid Build Coastguard Worker 
writeColor(L32A32F * dst,const gl::ColorF * src)1633*8975f5c5SAndroid Build Coastguard Worker void L32A32F::writeColor(L32A32F *dst, const gl::ColorF *src)
1634*8975f5c5SAndroid Build Coastguard Worker {
1635*8975f5c5SAndroid Build Coastguard Worker     dst->L = src->red;
1636*8975f5c5SAndroid Build Coastguard Worker     dst->A = src->alpha;
1637*8975f5c5SAndroid Build Coastguard Worker }
1638*8975f5c5SAndroid Build Coastguard Worker 
average(L32A32F * dst,const L32A32F * src1,const L32A32F * src2)1639*8975f5c5SAndroid Build Coastguard Worker void L32A32F::average(L32A32F *dst, const L32A32F *src1, const L32A32F *src2)
1640*8975f5c5SAndroid Build Coastguard Worker {
1641*8975f5c5SAndroid Build Coastguard Worker     dst->L = gl::average(src1->L, src2->L);
1642*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1643*8975f5c5SAndroid Build Coastguard Worker }
1644*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32F * src)1645*8975f5c5SAndroid Build Coastguard Worker void R32G32F::readColor(gl::ColorF *dst, const R32G32F *src)
1646*8975f5c5SAndroid Build Coastguard Worker {
1647*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1648*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1649*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = 0.0f;
1650*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1651*8975f5c5SAndroid Build Coastguard Worker }
1652*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32F * dst,const gl::ColorF * src)1653*8975f5c5SAndroid Build Coastguard Worker void R32G32F::writeColor(R32G32F *dst, const gl::ColorF *src)
1654*8975f5c5SAndroid Build Coastguard Worker {
1655*8975f5c5SAndroid Build Coastguard Worker     dst->R = src->red;
1656*8975f5c5SAndroid Build Coastguard Worker     dst->G = src->green;
1657*8975f5c5SAndroid Build Coastguard Worker }
1658*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32F * dst,const R32G32F * src1,const R32G32F * src2)1659*8975f5c5SAndroid Build Coastguard Worker void R32G32F::average(R32G32F *dst, const R32G32F *src1, const R32G32F *src2)
1660*8975f5c5SAndroid Build Coastguard Worker {
1661*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1662*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1663*8975f5c5SAndroid Build Coastguard Worker }
1664*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R32G32B32F * src)1665*8975f5c5SAndroid Build Coastguard Worker void R32G32B32F::readColor(gl::ColorF *dst, const R32G32B32F *src)
1666*8975f5c5SAndroid Build Coastguard Worker {
1667*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1668*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1669*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1670*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1671*8975f5c5SAndroid Build Coastguard Worker }
1672*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R32G32B32F * dst,const gl::ColorF * src)1673*8975f5c5SAndroid Build Coastguard Worker void R32G32B32F::writeColor(R32G32B32F *dst, const gl::ColorF *src)
1674*8975f5c5SAndroid Build Coastguard Worker {
1675*8975f5c5SAndroid Build Coastguard Worker     dst->R = src->red;
1676*8975f5c5SAndroid Build Coastguard Worker     dst->G = src->green;
1677*8975f5c5SAndroid Build Coastguard Worker     dst->B = src->blue;
1678*8975f5c5SAndroid Build Coastguard Worker }
1679*8975f5c5SAndroid Build Coastguard Worker 
average(R32G32B32F * dst,const R32G32B32F * src1,const R32G32B32F * src2)1680*8975f5c5SAndroid Build Coastguard Worker void R32G32B32F::average(R32G32B32F *dst, const R32G32B32F *src1, const R32G32B32F *src2)
1681*8975f5c5SAndroid Build Coastguard Worker {
1682*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1683*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1684*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1685*8975f5c5SAndroid Build Coastguard Worker }
1686*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R10G10B10A2 * src)1687*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2::readColor(gl::ColorUI *dst, const R10G10B10A2 *src)
1688*8975f5c5SAndroid Build Coastguard Worker {
1689*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1690*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1691*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1692*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1693*8975f5c5SAndroid Build Coastguard Worker }
1694*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R10G10B10A2 * src)1695*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2::readColor(gl::ColorF *dst, const R10G10B10A2 *src)
1696*8975f5c5SAndroid Build Coastguard Worker {
1697*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<10>(src->R);
1698*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<10>(src->G);
1699*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<10>(src->B);
1700*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<2>(src->A);
1701*8975f5c5SAndroid Build Coastguard Worker }
1702*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R10G10B10A2 * dst,const gl::ColorUI * src)1703*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2::writeColor(R10G10B10A2 *dst, const gl::ColorUI *src)
1704*8975f5c5SAndroid Build Coastguard Worker {
1705*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
1706*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint32_t>(src->green);
1707*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint32_t>(src->blue);
1708*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint32_t>(src->alpha);
1709*8975f5c5SAndroid Build Coastguard Worker }
1710*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R10G10B10A2 * dst,const gl::ColorF * src)1711*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2::writeColor(R10G10B10A2 *dst, const gl::ColorF *src)
1712*8975f5c5SAndroid Build Coastguard Worker {
1713*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<10, uint32_t>(src->red);
1714*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<10, uint32_t>(src->green);
1715*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<10, uint32_t>(src->blue);
1716*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<2, uint32_t>(src->alpha);
1717*8975f5c5SAndroid Build Coastguard Worker }
1718*8975f5c5SAndroid Build Coastguard Worker 
average(R10G10B10A2 * dst,const R10G10B10A2 * src1,const R10G10B10A2 * src2)1719*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2::average(R10G10B10A2 *dst, const R10G10B10A2 *src1, const R10G10B10A2 *src2)
1720*8975f5c5SAndroid Build Coastguard Worker {
1721*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1722*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1723*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1724*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1725*8975f5c5SAndroid Build Coastguard Worker }
1726*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorI * dst,const R10G10B10A2S * src)1727*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2S::readColor(gl::ColorI *dst, const R10G10B10A2S *src)
1728*8975f5c5SAndroid Build Coastguard Worker {
1729*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1730*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1731*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1732*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1733*8975f5c5SAndroid Build Coastguard Worker }
1734*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R10G10B10A2S * src)1735*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2S::readColor(gl::ColorF *dst, const R10G10B10A2S *src)
1736*8975f5c5SAndroid Build Coastguard Worker {
1737*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<10>(src->R);
1738*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<10>(src->G);
1739*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<10>(src->B);
1740*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<2>(src->A);
1741*8975f5c5SAndroid Build Coastguard Worker }
1742*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R10G10B10A2S * dst,const gl::ColorI * src)1743*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2S::writeColor(R10G10B10A2S *dst, const gl::ColorI *src)
1744*8975f5c5SAndroid Build Coastguard Worker {
1745*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<int32_t>(src->red);
1746*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<int32_t>(src->green);
1747*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<int32_t>(src->blue);
1748*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<int32_t>(src->alpha);
1749*8975f5c5SAndroid Build Coastguard Worker }
1750*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R10G10B10A2S * dst,const gl::ColorF * src)1751*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2S::writeColor(R10G10B10A2S *dst, const gl::ColorF *src)
1752*8975f5c5SAndroid Build Coastguard Worker {
1753*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<10, int32_t>(src->red);
1754*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<10, int32_t>(src->green);
1755*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<10, int32_t>(src->blue);
1756*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<2, int32_t>(src->alpha);
1757*8975f5c5SAndroid Build Coastguard Worker }
1758*8975f5c5SAndroid Build Coastguard Worker 
average(R10G10B10A2S * dst,const R10G10B10A2S * src1,const R10G10B10A2S * src2)1759*8975f5c5SAndroid Build Coastguard Worker void R10G10B10A2S::average(R10G10B10A2S *dst, const R10G10B10A2S *src1, const R10G10B10A2S *src2)
1760*8975f5c5SAndroid Build Coastguard Worker {
1761*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1762*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1763*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1764*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1765*8975f5c5SAndroid Build Coastguard Worker }
1766*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const R10G10B10X2 * src)1767*8975f5c5SAndroid Build Coastguard Worker void R10G10B10X2::readColor(gl::ColorUI *dst, const R10G10B10X2 *src)
1768*8975f5c5SAndroid Build Coastguard Worker {
1769*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1770*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1771*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1772*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 0x3;
1773*8975f5c5SAndroid Build Coastguard Worker }
1774*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R10G10B10X2 * src)1775*8975f5c5SAndroid Build Coastguard Worker void R10G10B10X2::readColor(gl::ColorF *dst, const R10G10B10X2 *src)
1776*8975f5c5SAndroid Build Coastguard Worker {
1777*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<10>(src->R);
1778*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<10>(src->G);
1779*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<10>(src->B);
1780*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1781*8975f5c5SAndroid Build Coastguard Worker }
1782*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R10G10B10X2 * dst,const gl::ColorUI * src)1783*8975f5c5SAndroid Build Coastguard Worker void R10G10B10X2::writeColor(R10G10B10X2 *dst, const gl::ColorUI *src)
1784*8975f5c5SAndroid Build Coastguard Worker {
1785*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
1786*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint32_t>(src->green);
1787*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint32_t>(src->blue);
1788*8975f5c5SAndroid Build Coastguard Worker }
1789*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R10G10B10X2 * dst,const gl::ColorF * src)1790*8975f5c5SAndroid Build Coastguard Worker void R10G10B10X2::writeColor(R10G10B10X2 *dst, const gl::ColorF *src)
1791*8975f5c5SAndroid Build Coastguard Worker {
1792*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<10, uint32_t>(src->red);
1793*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<10, uint32_t>(src->green);
1794*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<10, uint32_t>(src->blue);
1795*8975f5c5SAndroid Build Coastguard Worker }
1796*8975f5c5SAndroid Build Coastguard Worker 
average(R10G10B10X2 * dst,const R10G10B10X2 * src1,const R10G10B10X2 * src2)1797*8975f5c5SAndroid Build Coastguard Worker void R10G10B10X2::average(R10G10B10X2 *dst, const R10G10B10X2 *src1, const R10G10B10X2 *src2)
1798*8975f5c5SAndroid Build Coastguard Worker {
1799*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1800*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1801*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1802*8975f5c5SAndroid Build Coastguard Worker }
1803*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorUI * dst,const B10G10R10A2 * src)1804*8975f5c5SAndroid Build Coastguard Worker void B10G10R10A2::readColor(gl::ColorUI *dst, const B10G10R10A2 *src)
1805*8975f5c5SAndroid Build Coastguard Worker {
1806*8975f5c5SAndroid Build Coastguard Worker     dst->red   = src->R;
1807*8975f5c5SAndroid Build Coastguard Worker     dst->green = src->G;
1808*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = src->B;
1809*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = src->A;
1810*8975f5c5SAndroid Build Coastguard Worker }
1811*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const B10G10R10A2 * src)1812*8975f5c5SAndroid Build Coastguard Worker void B10G10R10A2::readColor(gl::ColorF *dst, const B10G10R10A2 *src)
1813*8975f5c5SAndroid Build Coastguard Worker {
1814*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::normalizedToFloat<10>(src->R);
1815*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::normalizedToFloat<10>(src->G);
1816*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::normalizedToFloat<10>(src->B);
1817*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = gl::normalizedToFloat<2>(src->A);
1818*8975f5c5SAndroid Build Coastguard Worker }
1819*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B10G10R10A2 * dst,const gl::ColorUI * src)1820*8975f5c5SAndroid Build Coastguard Worker void B10G10R10A2::writeColor(B10G10R10A2 *dst, const gl::ColorUI *src)
1821*8975f5c5SAndroid Build Coastguard Worker {
1822*8975f5c5SAndroid Build Coastguard Worker     dst->R = static_cast<uint32_t>(src->red);
1823*8975f5c5SAndroid Build Coastguard Worker     dst->G = static_cast<uint32_t>(src->green);
1824*8975f5c5SAndroid Build Coastguard Worker     dst->B = static_cast<uint32_t>(src->blue);
1825*8975f5c5SAndroid Build Coastguard Worker     dst->A = static_cast<uint32_t>(src->alpha);
1826*8975f5c5SAndroid Build Coastguard Worker }
1827*8975f5c5SAndroid Build Coastguard Worker 
writeColor(B10G10R10A2 * dst,const gl::ColorF * src)1828*8975f5c5SAndroid Build Coastguard Worker void B10G10R10A2::writeColor(B10G10R10A2 *dst, const gl::ColorF *src)
1829*8975f5c5SAndroid Build Coastguard Worker {
1830*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::floatToNormalized<10, uint32_t>(src->red);
1831*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::floatToNormalized<10, uint32_t>(src->green);
1832*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::floatToNormalized<10, uint32_t>(src->blue);
1833*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::floatToNormalized<2, uint32_t>(src->alpha);
1834*8975f5c5SAndroid Build Coastguard Worker }
1835*8975f5c5SAndroid Build Coastguard Worker 
average(B10G10R10A2 * dst,const B10G10R10A2 * src1,const B10G10R10A2 * src2)1836*8975f5c5SAndroid Build Coastguard Worker void B10G10R10A2::average(B10G10R10A2 *dst, const B10G10R10A2 *src1, const B10G10R10A2 *src2)
1837*8975f5c5SAndroid Build Coastguard Worker {
1838*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::average(src1->R, src2->R);
1839*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::average(src1->G, src2->G);
1840*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::average(src1->B, src2->B);
1841*8975f5c5SAndroid Build Coastguard Worker     dst->A = gl::average(src1->A, src2->A);
1842*8975f5c5SAndroid Build Coastguard Worker }
1843*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R9G9B9E5 * src)1844*8975f5c5SAndroid Build Coastguard Worker void R9G9B9E5::readColor(gl::ColorF *dst, const R9G9B9E5 *src)
1845*8975f5c5SAndroid Build Coastguard Worker {
1846*8975f5c5SAndroid Build Coastguard Worker     gl::convert999E5toRGBFloats(gl::bitCast<uint32_t>(*src), &dst->red, &dst->green, &dst->blue);
1847*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1848*8975f5c5SAndroid Build Coastguard Worker }
1849*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R9G9B9E5 * dst,const gl::ColorF * src)1850*8975f5c5SAndroid Build Coastguard Worker void R9G9B9E5::writeColor(R9G9B9E5 *dst, const gl::ColorF *src)
1851*8975f5c5SAndroid Build Coastguard Worker {
1852*8975f5c5SAndroid Build Coastguard Worker     *reinterpret_cast<uint32_t *>(dst) =
1853*8975f5c5SAndroid Build Coastguard Worker         gl::convertRGBFloatsTo999E5(src->red, src->green, src->blue);
1854*8975f5c5SAndroid Build Coastguard Worker }
1855*8975f5c5SAndroid Build Coastguard Worker 
average(R9G9B9E5 * dst,const R9G9B9E5 * src1,const R9G9B9E5 * src2)1856*8975f5c5SAndroid Build Coastguard Worker void R9G9B9E5::average(R9G9B9E5 *dst, const R9G9B9E5 *src1, const R9G9B9E5 *src2)
1857*8975f5c5SAndroid Build Coastguard Worker {
1858*8975f5c5SAndroid Build Coastguard Worker     float r1, g1, b1;
1859*8975f5c5SAndroid Build Coastguard Worker     gl::convert999E5toRGBFloats(*reinterpret_cast<const uint32_t *>(src1), &r1, &g1, &b1);
1860*8975f5c5SAndroid Build Coastguard Worker 
1861*8975f5c5SAndroid Build Coastguard Worker     float r2, g2, b2;
1862*8975f5c5SAndroid Build Coastguard Worker     gl::convert999E5toRGBFloats(*reinterpret_cast<const uint32_t *>(src2), &r2, &g2, &b2);
1863*8975f5c5SAndroid Build Coastguard Worker 
1864*8975f5c5SAndroid Build Coastguard Worker     *reinterpret_cast<uint32_t *>(dst) =
1865*8975f5c5SAndroid Build Coastguard Worker         gl::convertRGBFloatsTo999E5(gl::average(r1, r2), gl::average(g1, g2), gl::average(b1, b2));
1866*8975f5c5SAndroid Build Coastguard Worker }
1867*8975f5c5SAndroid Build Coastguard Worker 
readColor(gl::ColorF * dst,const R11G11B10F * src)1868*8975f5c5SAndroid Build Coastguard Worker void R11G11B10F::readColor(gl::ColorF *dst, const R11G11B10F *src)
1869*8975f5c5SAndroid Build Coastguard Worker {
1870*8975f5c5SAndroid Build Coastguard Worker     dst->red   = gl::float11ToFloat32(src->R);
1871*8975f5c5SAndroid Build Coastguard Worker     dst->green = gl::float11ToFloat32(src->G);
1872*8975f5c5SAndroid Build Coastguard Worker     dst->blue  = gl::float10ToFloat32(src->B);
1873*8975f5c5SAndroid Build Coastguard Worker     dst->alpha = 1.0f;
1874*8975f5c5SAndroid Build Coastguard Worker }
1875*8975f5c5SAndroid Build Coastguard Worker 
writeColor(R11G11B10F * dst,const gl::ColorF * src)1876*8975f5c5SAndroid Build Coastguard Worker void R11G11B10F::writeColor(R11G11B10F *dst, const gl::ColorF *src)
1877*8975f5c5SAndroid Build Coastguard Worker {
1878*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::float32ToFloat11(src->red);
1879*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::float32ToFloat11(src->green);
1880*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::float32ToFloat10(src->blue);
1881*8975f5c5SAndroid Build Coastguard Worker }
1882*8975f5c5SAndroid Build Coastguard Worker 
average(R11G11B10F * dst,const R11G11B10F * src1,const R11G11B10F * src2)1883*8975f5c5SAndroid Build Coastguard Worker void R11G11B10F::average(R11G11B10F *dst, const R11G11B10F *src1, const R11G11B10F *src2)
1884*8975f5c5SAndroid Build Coastguard Worker {
1885*8975f5c5SAndroid Build Coastguard Worker     dst->R = gl::averageFloat11(src1->R, src2->R);
1886*8975f5c5SAndroid Build Coastguard Worker     dst->G = gl::averageFloat11(src1->G, src2->G);
1887*8975f5c5SAndroid Build Coastguard Worker     dst->B = gl::averageFloat10(src1->B, src2->B);
1888*8975f5c5SAndroid Build Coastguard Worker }
1889*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const D24S8 * src)1890*8975f5c5SAndroid Build Coastguard Worker void D24S8::ReadDepthStencil(DepthStencil *dst, const D24S8 *src)
1891*8975f5c5SAndroid Build Coastguard Worker {
1892*8975f5c5SAndroid Build Coastguard Worker     dst->depth   = gl::normalizedToFloat<24>(src->D);
1893*8975f5c5SAndroid Build Coastguard Worker     dst->stencil = src->S;
1894*8975f5c5SAndroid Build Coastguard Worker }
1895*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(D24S8 * dst,const DepthStencil * src)1896*8975f5c5SAndroid Build Coastguard Worker void D24S8::WriteDepthStencil(D24S8 *dst, const DepthStencil *src)
1897*8975f5c5SAndroid Build Coastguard Worker {
1898*8975f5c5SAndroid Build Coastguard Worker     dst->D = gl::floatToNormalized<24, uint32_t>(static_cast<float>(src->depth));
1899*8975f5c5SAndroid Build Coastguard Worker     dst->S = src->stencil & 0xFF;
1900*8975f5c5SAndroid Build Coastguard Worker }
1901*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const S8 * src)1902*8975f5c5SAndroid Build Coastguard Worker void S8::ReadDepthStencil(DepthStencil *dst, const S8 *src)
1903*8975f5c5SAndroid Build Coastguard Worker {
1904*8975f5c5SAndroid Build Coastguard Worker     dst->depth   = 0;
1905*8975f5c5SAndroid Build Coastguard Worker     dst->stencil = src->S;
1906*8975f5c5SAndroid Build Coastguard Worker }
1907*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(S8 * dst,const DepthStencil * src)1908*8975f5c5SAndroid Build Coastguard Worker void S8::WriteDepthStencil(S8 *dst, const DepthStencil *src)
1909*8975f5c5SAndroid Build Coastguard Worker {
1910*8975f5c5SAndroid Build Coastguard Worker     dst->S = src->stencil & 0xFF;
1911*8975f5c5SAndroid Build Coastguard Worker }
1912*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const D16 * src)1913*8975f5c5SAndroid Build Coastguard Worker void D16::ReadDepthStencil(DepthStencil *dst, const D16 *src)
1914*8975f5c5SAndroid Build Coastguard Worker {
1915*8975f5c5SAndroid Build Coastguard Worker     dst->depth   = gl::normalizedToFloat(src->D);
1916*8975f5c5SAndroid Build Coastguard Worker     dst->stencil = 0;
1917*8975f5c5SAndroid Build Coastguard Worker }
1918*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(D16 * dst,const DepthStencil * src)1919*8975f5c5SAndroid Build Coastguard Worker void D16::WriteDepthStencil(D16 *dst, const DepthStencil *src)
1920*8975f5c5SAndroid Build Coastguard Worker {
1921*8975f5c5SAndroid Build Coastguard Worker     dst->D = gl::floatToNormalized<uint16_t>(static_cast<float>(src->depth));
1922*8975f5c5SAndroid Build Coastguard Worker }
1923*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const D24X8 * src)1924*8975f5c5SAndroid Build Coastguard Worker void D24X8::ReadDepthStencil(DepthStencil *dst, const D24X8 *src)
1925*8975f5c5SAndroid Build Coastguard Worker {
1926*8975f5c5SAndroid Build Coastguard Worker     dst->depth = gl::normalizedToFloat<24>(src->D & 0x00ffffff);
1927*8975f5c5SAndroid Build Coastguard Worker }
1928*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(D24X8 * dst,const DepthStencil * src)1929*8975f5c5SAndroid Build Coastguard Worker void D24X8::WriteDepthStencil(D24X8 *dst, const DepthStencil *src)
1930*8975f5c5SAndroid Build Coastguard Worker {
1931*8975f5c5SAndroid Build Coastguard Worker     dst->D = gl::floatToNormalized<24, uint32_t>(static_cast<float>(src->depth));
1932*8975f5c5SAndroid Build Coastguard Worker }
1933*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const D32F * src)1934*8975f5c5SAndroid Build Coastguard Worker void D32F::ReadDepthStencil(DepthStencil *dst, const D32F *src)
1935*8975f5c5SAndroid Build Coastguard Worker {
1936*8975f5c5SAndroid Build Coastguard Worker     dst->depth = src->D;
1937*8975f5c5SAndroid Build Coastguard Worker }
1938*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(D32F * dst,const DepthStencil * src)1939*8975f5c5SAndroid Build Coastguard Worker void D32F::WriteDepthStencil(D32F *dst, const DepthStencil *src)
1940*8975f5c5SAndroid Build Coastguard Worker {
1941*8975f5c5SAndroid Build Coastguard Worker     dst->D = static_cast<float>(src->depth);
1942*8975f5c5SAndroid Build Coastguard Worker }
1943*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const D32 * src)1944*8975f5c5SAndroid Build Coastguard Worker void D32::ReadDepthStencil(DepthStencil *dst, const D32 *src)
1945*8975f5c5SAndroid Build Coastguard Worker {
1946*8975f5c5SAndroid Build Coastguard Worker     dst->depth   = gl::normalizedToFloat(src->D);
1947*8975f5c5SAndroid Build Coastguard Worker     dst->stencil = 0;
1948*8975f5c5SAndroid Build Coastguard Worker }
1949*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(D32 * dst,const DepthStencil * src)1950*8975f5c5SAndroid Build Coastguard Worker void D32::WriteDepthStencil(D32 *dst, const DepthStencil *src)
1951*8975f5c5SAndroid Build Coastguard Worker {
1952*8975f5c5SAndroid Build Coastguard Worker     dst->D = gl::floatToNormalized<uint32_t>(static_cast<float>(src->depth));
1953*8975f5c5SAndroid Build Coastguard Worker }
1954*8975f5c5SAndroid Build Coastguard Worker 
ReadDepthStencil(DepthStencil * dst,const D32FS8X24 * src)1955*8975f5c5SAndroid Build Coastguard Worker void D32FS8X24::ReadDepthStencil(DepthStencil *dst, const D32FS8X24 *src)
1956*8975f5c5SAndroid Build Coastguard Worker {
1957*8975f5c5SAndroid Build Coastguard Worker     dst->depth   = src->D;
1958*8975f5c5SAndroid Build Coastguard Worker     dst->stencil = src->S;
1959*8975f5c5SAndroid Build Coastguard Worker }
1960*8975f5c5SAndroid Build Coastguard Worker 
WriteDepthStencil(D32FS8X24 * dst,const DepthStencil * src)1961*8975f5c5SAndroid Build Coastguard Worker void D32FS8X24::WriteDepthStencil(D32FS8X24 *dst, const DepthStencil *src)
1962*8975f5c5SAndroid Build Coastguard Worker {
1963*8975f5c5SAndroid Build Coastguard Worker     dst->D = static_cast<float>(src->depth);
1964*8975f5c5SAndroid Build Coastguard Worker     dst->S = src->stencil & 0xFF;
1965*8975f5c5SAndroid Build Coastguard Worker }
1966*8975f5c5SAndroid Build Coastguard Worker }  // namespace angle
1967