1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL ES 3.1 Module
3*35238bceSAndroid Build Coastguard Worker * -------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker *
5*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project
6*35238bceSAndroid Build Coastguard Worker *
7*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
8*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
9*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at
10*35238bceSAndroid Build Coastguard Worker *
11*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
12*35238bceSAndroid Build Coastguard Worker *
13*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
14*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
15*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
17*35238bceSAndroid Build Coastguard Worker * limitations under the License.
18*35238bceSAndroid Build Coastguard Worker *
19*35238bceSAndroid Build Coastguard Worker *//*!
20*35238bceSAndroid Build Coastguard Worker * \file
21*35238bceSAndroid Build Coastguard Worker * \brief Texture format tests.
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "es31fTextureFormatTests.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "gluContextInfo.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "gluPixelTransfer.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "gluStrUtil.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "gluTexture.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "gluTextureUtil.hpp"
30*35238bceSAndroid Build Coastguard Worker #include "glsTextureTestUtil.hpp"
31*35238bceSAndroid Build Coastguard Worker #include "tcuTextureUtil.hpp"
32*35238bceSAndroid Build Coastguard Worker #include "deStringUtil.hpp"
33*35238bceSAndroid Build Coastguard Worker #include "deRandom.hpp"
34*35238bceSAndroid Build Coastguard Worker #include "glwEnums.hpp"
35*35238bceSAndroid Build Coastguard Worker #include "glwFunctions.hpp"
36*35238bceSAndroid Build Coastguard Worker
37*35238bceSAndroid Build Coastguard Worker using std::string;
38*35238bceSAndroid Build Coastguard Worker using std::vector;
39*35238bceSAndroid Build Coastguard Worker using tcu::TestLog;
40*35238bceSAndroid Build Coastguard Worker
41*35238bceSAndroid Build Coastguard Worker namespace deqp
42*35238bceSAndroid Build Coastguard Worker {
43*35238bceSAndroid Build Coastguard Worker namespace gles31
44*35238bceSAndroid Build Coastguard Worker {
45*35238bceSAndroid Build Coastguard Worker namespace Functional
46*35238bceSAndroid Build Coastguard Worker {
47*35238bceSAndroid Build Coastguard Worker
48*35238bceSAndroid Build Coastguard Worker using namespace deqp::gls;
49*35238bceSAndroid Build Coastguard Worker using namespace deqp::gls::TextureTestUtil;
50*35238bceSAndroid Build Coastguard Worker using namespace glu::TextureTestUtil;
51*35238bceSAndroid Build Coastguard Worker
52*35238bceSAndroid Build Coastguard Worker using tcu::Sampler;
53*35238bceSAndroid Build Coastguard Worker
54*35238bceSAndroid Build Coastguard Worker struct SupportedExtensions
55*35238bceSAndroid Build Coastguard Worker {
56*35238bceSAndroid Build Coastguard Worker bool cubeMapArray;
57*35238bceSAndroid Build Coastguard Worker bool sRGBR8;
58*35238bceSAndroid Build Coastguard Worker bool sRGBRG8;
59*35238bceSAndroid Build Coastguard Worker };
60*35238bceSAndroid Build Coastguard Worker
getCubeFaceFromNdx(int ndx)61*35238bceSAndroid Build Coastguard Worker static tcu::CubeFace getCubeFaceFromNdx(int ndx)
62*35238bceSAndroid Build Coastguard Worker {
63*35238bceSAndroid Build Coastguard Worker switch (ndx)
64*35238bceSAndroid Build Coastguard Worker {
65*35238bceSAndroid Build Coastguard Worker case 0:
66*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_POSITIVE_X;
67*35238bceSAndroid Build Coastguard Worker case 1:
68*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_NEGATIVE_X;
69*35238bceSAndroid Build Coastguard Worker case 2:
70*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_POSITIVE_Y;
71*35238bceSAndroid Build Coastguard Worker case 3:
72*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_NEGATIVE_Y;
73*35238bceSAndroid Build Coastguard Worker case 4:
74*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_POSITIVE_Z;
75*35238bceSAndroid Build Coastguard Worker case 5:
76*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_NEGATIVE_Z;
77*35238bceSAndroid Build Coastguard Worker default:
78*35238bceSAndroid Build Coastguard Worker DE_ASSERT(false);
79*35238bceSAndroid Build Coastguard Worker return tcu::CUBEFACE_LAST;
80*35238bceSAndroid Build Coastguard Worker }
81*35238bceSAndroid Build Coastguard Worker }
82*35238bceSAndroid Build Coastguard Worker
83*35238bceSAndroid Build Coastguard Worker namespace
84*35238bceSAndroid Build Coastguard Worker {
85*35238bceSAndroid Build Coastguard Worker
checkSupport(const glu::ContextInfo & renderCtxInfoid)86*35238bceSAndroid Build Coastguard Worker SupportedExtensions checkSupport(const glu::ContextInfo &renderCtxInfoid)
87*35238bceSAndroid Build Coastguard Worker {
88*35238bceSAndroid Build Coastguard Worker SupportedExtensions supportedExtensions;
89*35238bceSAndroid Build Coastguard Worker
90*35238bceSAndroid Build Coastguard Worker supportedExtensions.cubeMapArray = renderCtxInfoid.isExtensionSupported("GL_EXT_texture_cube_map_array");
91*35238bceSAndroid Build Coastguard Worker supportedExtensions.sRGBR8 = renderCtxInfoid.isExtensionSupported("GL_EXT_texture_sRGB_R8");
92*35238bceSAndroid Build Coastguard Worker supportedExtensions.sRGBRG8 = renderCtxInfoid.isExtensionSupported("GL_EXT_texture_sRGB_RG8");
93*35238bceSAndroid Build Coastguard Worker
94*35238bceSAndroid Build Coastguard Worker return supportedExtensions;
95*35238bceSAndroid Build Coastguard Worker }
96*35238bceSAndroid Build Coastguard Worker
97*35238bceSAndroid Build Coastguard Worker } // namespace
98*35238bceSAndroid Build Coastguard Worker
99*35238bceSAndroid Build Coastguard Worker // TextureCubeArrayFormatCase
100*35238bceSAndroid Build Coastguard Worker
101*35238bceSAndroid Build Coastguard Worker class TextureCubeArrayFormatCase : public tcu::TestCase
102*35238bceSAndroid Build Coastguard Worker {
103*35238bceSAndroid Build Coastguard Worker public:
104*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase(tcu::TestContext &testCtx, glu::RenderContext &renderCtx,
105*35238bceSAndroid Build Coastguard Worker const glu::ContextInfo &renderCtxInfo, const char *name, const char *description,
106*35238bceSAndroid Build Coastguard Worker uint32_t format, uint32_t dataType, int size, int depth);
107*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase(tcu::TestContext &testCtx, glu::RenderContext &renderCtx,
108*35238bceSAndroid Build Coastguard Worker const glu::ContextInfo &renderCtxInfo, const char *name, const char *description,
109*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat, int size, int depth);
110*35238bceSAndroid Build Coastguard Worker ~TextureCubeArrayFormatCase(void);
111*35238bceSAndroid Build Coastguard Worker
112*35238bceSAndroid Build Coastguard Worker void init(void);
113*35238bceSAndroid Build Coastguard Worker void deinit(void);
114*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
115*35238bceSAndroid Build Coastguard Worker
116*35238bceSAndroid Build Coastguard Worker private:
117*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase(const TextureCubeArrayFormatCase &other);
118*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase &operator=(const TextureCubeArrayFormatCase &other);
119*35238bceSAndroid Build Coastguard Worker
120*35238bceSAndroid Build Coastguard Worker bool testLayerFace(int layerNdx);
121*35238bceSAndroid Build Coastguard Worker
122*35238bceSAndroid Build Coastguard Worker glu::RenderContext &m_renderCtx;
123*35238bceSAndroid Build Coastguard Worker const glu::ContextInfo &m_renderCtxInfo;
124*35238bceSAndroid Build Coastguard Worker
125*35238bceSAndroid Build Coastguard Worker const uint32_t m_format;
126*35238bceSAndroid Build Coastguard Worker const uint32_t m_dataType;
127*35238bceSAndroid Build Coastguard Worker const int m_size;
128*35238bceSAndroid Build Coastguard Worker const int m_depth;
129*35238bceSAndroid Build Coastguard Worker
130*35238bceSAndroid Build Coastguard Worker glu::TextureCubeArray *m_texture;
131*35238bceSAndroid Build Coastguard Worker TextureTestUtil::TextureRenderer m_renderer;
132*35238bceSAndroid Build Coastguard Worker
133*35238bceSAndroid Build Coastguard Worker int m_curLayerFace;
134*35238bceSAndroid Build Coastguard Worker };
135*35238bceSAndroid Build Coastguard Worker
TextureCubeArrayFormatCase(tcu::TestContext & testCtx,glu::RenderContext & renderCtx,const glu::ContextInfo & renderCtxInfo,const char * name,const char * description,uint32_t format,uint32_t dataType,int size,int depth)136*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase::TextureCubeArrayFormatCase(tcu::TestContext &testCtx, glu::RenderContext &renderCtx,
137*35238bceSAndroid Build Coastguard Worker const glu::ContextInfo &renderCtxInfo, const char *name,
138*35238bceSAndroid Build Coastguard Worker const char *description, uint32_t format, uint32_t dataType,
139*35238bceSAndroid Build Coastguard Worker int size, int depth)
140*35238bceSAndroid Build Coastguard Worker : TestCase(testCtx, name, description)
141*35238bceSAndroid Build Coastguard Worker , m_renderCtx(renderCtx)
142*35238bceSAndroid Build Coastguard Worker , m_renderCtxInfo(renderCtxInfo)
143*35238bceSAndroid Build Coastguard Worker , m_format(format)
144*35238bceSAndroid Build Coastguard Worker , m_dataType(dataType)
145*35238bceSAndroid Build Coastguard Worker , m_size(size)
146*35238bceSAndroid Build Coastguard Worker , m_depth(depth)
147*35238bceSAndroid Build Coastguard Worker , m_texture(DE_NULL)
148*35238bceSAndroid Build Coastguard Worker , m_renderer(renderCtx, testCtx.getLog(), glu::getContextTypeGLSLVersion(renderCtx.getType()), glu::PRECISION_HIGHP)
149*35238bceSAndroid Build Coastguard Worker , m_curLayerFace(0)
150*35238bceSAndroid Build Coastguard Worker {
151*35238bceSAndroid Build Coastguard Worker }
152*35238bceSAndroid Build Coastguard Worker
TextureCubeArrayFormatCase(tcu::TestContext & testCtx,glu::RenderContext & renderCtx,const glu::ContextInfo & renderCtxInfo,const char * name,const char * description,uint32_t internalFormat,int size,int depth)153*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase::TextureCubeArrayFormatCase(tcu::TestContext &testCtx, glu::RenderContext &renderCtx,
154*35238bceSAndroid Build Coastguard Worker const glu::ContextInfo &renderCtxInfo, const char *name,
155*35238bceSAndroid Build Coastguard Worker const char *description, uint32_t internalFormat, int size,
156*35238bceSAndroid Build Coastguard Worker int depth)
157*35238bceSAndroid Build Coastguard Worker : TestCase(testCtx, name, description)
158*35238bceSAndroid Build Coastguard Worker , m_renderCtx(renderCtx)
159*35238bceSAndroid Build Coastguard Worker , m_renderCtxInfo(renderCtxInfo)
160*35238bceSAndroid Build Coastguard Worker , m_format(internalFormat)
161*35238bceSAndroid Build Coastguard Worker , m_dataType(GL_NONE)
162*35238bceSAndroid Build Coastguard Worker , m_size(size)
163*35238bceSAndroid Build Coastguard Worker , m_depth(depth)
164*35238bceSAndroid Build Coastguard Worker , m_texture(DE_NULL)
165*35238bceSAndroid Build Coastguard Worker , m_renderer(renderCtx, testCtx.getLog(), glu::getContextTypeGLSLVersion(renderCtx.getType()), glu::PRECISION_HIGHP)
166*35238bceSAndroid Build Coastguard Worker , m_curLayerFace(0)
167*35238bceSAndroid Build Coastguard Worker {
168*35238bceSAndroid Build Coastguard Worker }
169*35238bceSAndroid Build Coastguard Worker
~TextureCubeArrayFormatCase(void)170*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase::~TextureCubeArrayFormatCase(void)
171*35238bceSAndroid Build Coastguard Worker {
172*35238bceSAndroid Build Coastguard Worker deinit();
173*35238bceSAndroid Build Coastguard Worker }
174*35238bceSAndroid Build Coastguard Worker
init(void)175*35238bceSAndroid Build Coastguard Worker void TextureCubeArrayFormatCase::init(void)
176*35238bceSAndroid Build Coastguard Worker {
177*35238bceSAndroid Build Coastguard Worker const SupportedExtensions supportedExtensions = checkSupport(m_renderCtxInfo);
178*35238bceSAndroid Build Coastguard Worker
179*35238bceSAndroid Build Coastguard Worker if ((supportedExtensions.cubeMapArray && m_format != GL_SR8_EXT && m_format != GL_SRG8_EXT) ||
180*35238bceSAndroid Build Coastguard Worker (supportedExtensions.cubeMapArray && m_format == GL_SR8_EXT && supportedExtensions.sRGBR8) ||
181*35238bceSAndroid Build Coastguard Worker (supportedExtensions.cubeMapArray && m_format == GL_SRG8_EXT && supportedExtensions.sRGBRG8))
182*35238bceSAndroid Build Coastguard Worker {
183*35238bceSAndroid Build Coastguard Worker m_texture = m_dataType != GL_NONE ?
184*35238bceSAndroid Build Coastguard Worker new glu::TextureCubeArray(m_renderCtx, m_format, m_dataType, m_size,
185*35238bceSAndroid Build Coastguard Worker m_depth) // Implicit internal format.
186*35238bceSAndroid Build Coastguard Worker :
187*35238bceSAndroid Build Coastguard Worker new glu::TextureCubeArray(m_renderCtx, m_format, m_size, m_depth); // Explicit internal format.
188*35238bceSAndroid Build Coastguard Worker
189*35238bceSAndroid Build Coastguard Worker tcu::TextureFormatInfo spec = tcu::getTextureFormatInfo(m_texture->getRefTexture().getFormat());
190*35238bceSAndroid Build Coastguard Worker
191*35238bceSAndroid Build Coastguard Worker // Fill level 0.
192*35238bceSAndroid Build Coastguard Worker m_texture->getRefTexture().allocLevel(0);
193*35238bceSAndroid Build Coastguard Worker tcu::fillWithComponentGradients(m_texture->getRefTexture().getLevel(0), spec.valueMin, spec.valueMax);
194*35238bceSAndroid Build Coastguard Worker
195*35238bceSAndroid Build Coastguard Worker // Initialize state.
196*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
197*35238bceSAndroid Build Coastguard Worker m_curLayerFace = 0;
198*35238bceSAndroid Build Coastguard Worker }
199*35238bceSAndroid Build Coastguard Worker else
200*35238bceSAndroid Build Coastguard Worker {
201*35238bceSAndroid Build Coastguard Worker if (supportedExtensions.cubeMapArray == false)
202*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "Cube map arrays not supported");
203*35238bceSAndroid Build Coastguard Worker
204*35238bceSAndroid Build Coastguard Worker if (supportedExtensions.sRGBR8 == false)
205*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "texture srgb r8 not supported");
206*35238bceSAndroid Build Coastguard Worker
207*35238bceSAndroid Build Coastguard Worker if (supportedExtensions.sRGBRG8 == false)
208*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "texture srgb rg8 not supported");
209*35238bceSAndroid Build Coastguard Worker }
210*35238bceSAndroid Build Coastguard Worker }
211*35238bceSAndroid Build Coastguard Worker
deinit(void)212*35238bceSAndroid Build Coastguard Worker void TextureCubeArrayFormatCase::deinit(void)
213*35238bceSAndroid Build Coastguard Worker {
214*35238bceSAndroid Build Coastguard Worker delete m_texture;
215*35238bceSAndroid Build Coastguard Worker m_texture = DE_NULL;
216*35238bceSAndroid Build Coastguard Worker
217*35238bceSAndroid Build Coastguard Worker m_renderer.clear();
218*35238bceSAndroid Build Coastguard Worker }
219*35238bceSAndroid Build Coastguard Worker
testLayerFace(int layerFaceNdx)220*35238bceSAndroid Build Coastguard Worker bool TextureCubeArrayFormatCase::testLayerFace(int layerFaceNdx)
221*35238bceSAndroid Build Coastguard Worker {
222*35238bceSAndroid Build Coastguard Worker const glw::Functions &gl = m_renderCtx.getFunctions();
223*35238bceSAndroid Build Coastguard Worker TestLog &log = m_testCtx.getLog();
224*35238bceSAndroid Build Coastguard Worker RandomViewport viewport(m_renderCtx.getRenderTarget(), m_size, m_size, deStringHash(getName()));
225*35238bceSAndroid Build Coastguard Worker tcu::Surface renderedFrame(viewport.width, viewport.height);
226*35238bceSAndroid Build Coastguard Worker tcu::Surface referenceFrame(viewport.width, viewport.height);
227*35238bceSAndroid Build Coastguard Worker tcu::RGBA threshold = m_renderCtx.getRenderTarget().getPixelFormat().getColorThreshold() + tcu::RGBA(1, 1, 1, 1);
228*35238bceSAndroid Build Coastguard Worker vector<float> texCoord;
229*35238bceSAndroid Build Coastguard Worker ReferenceParams renderParams(TEXTURETYPE_CUBE_ARRAY);
230*35238bceSAndroid Build Coastguard Worker tcu::TextureFormatInfo spec = tcu::getTextureFormatInfo(m_texture->getRefTexture().getFormat());
231*35238bceSAndroid Build Coastguard Worker const int layerNdx = layerFaceNdx / 6;
232*35238bceSAndroid Build Coastguard Worker const tcu::CubeFace face = getCubeFaceFromNdx(layerFaceNdx % 6);
233*35238bceSAndroid Build Coastguard Worker
234*35238bceSAndroid Build Coastguard Worker renderParams.samplerType = getSamplerType(m_texture->getRefTexture().getFormat());
235*35238bceSAndroid Build Coastguard Worker renderParams.sampler = Sampler(Sampler::CLAMP_TO_EDGE, Sampler::CLAMP_TO_EDGE, Sampler::CLAMP_TO_EDGE,
236*35238bceSAndroid Build Coastguard Worker Sampler::NEAREST, Sampler::NEAREST);
237*35238bceSAndroid Build Coastguard Worker renderParams.sampler.seamlessCubeMap = true;
238*35238bceSAndroid Build Coastguard Worker renderParams.colorScale = spec.lookupScale;
239*35238bceSAndroid Build Coastguard Worker renderParams.colorBias = spec.lookupBias;
240*35238bceSAndroid Build Coastguard Worker
241*35238bceSAndroid Build Coastguard Worker // Layer here specifies the cube slice
242*35238bceSAndroid Build Coastguard Worker computeQuadTexCoordCubeArray(texCoord, face, tcu::Vec2(0.0f, 0.0f), tcu::Vec2(1.0f, 1.0f),
243*35238bceSAndroid Build Coastguard Worker tcu::Vec2((float)layerNdx));
244*35238bceSAndroid Build Coastguard Worker
245*35238bceSAndroid Build Coastguard Worker // Setup base viewport.
246*35238bceSAndroid Build Coastguard Worker gl.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
247*35238bceSAndroid Build Coastguard Worker gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
248*35238bceSAndroid Build Coastguard Worker
249*35238bceSAndroid Build Coastguard Worker // Upload texture data to GL.
250*35238bceSAndroid Build Coastguard Worker m_texture->upload();
251*35238bceSAndroid Build Coastguard Worker
252*35238bceSAndroid Build Coastguard Worker // Bind to unit 0.
253*35238bceSAndroid Build Coastguard Worker gl.activeTexture(GL_TEXTURE0);
254*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_CUBE_MAP_ARRAY, m_texture->getGLTexture());
255*35238bceSAndroid Build Coastguard Worker
256*35238bceSAndroid Build Coastguard Worker // Setup nearest neighbor filtering and clamp-to-edge.
257*35238bceSAndroid Build Coastguard Worker gl.texParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
258*35238bceSAndroid Build Coastguard Worker gl.texParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
259*35238bceSAndroid Build Coastguard Worker gl.texParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
260*35238bceSAndroid Build Coastguard Worker gl.texParameteri(GL_TEXTURE_CUBE_MAP_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
261*35238bceSAndroid Build Coastguard Worker
262*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "Set texturing state");
263*35238bceSAndroid Build Coastguard Worker
264*35238bceSAndroid Build Coastguard Worker // Draw.
265*35238bceSAndroid Build Coastguard Worker m_renderer.renderQuad(0, &texCoord[0], renderParams);
266*35238bceSAndroid Build Coastguard Worker glu::readPixels(m_renderCtx, viewport.x, viewport.y, renderedFrame.getAccess());
267*35238bceSAndroid Build Coastguard Worker
268*35238bceSAndroid Build Coastguard Worker // Compute reference.
269*35238bceSAndroid Build Coastguard Worker sampleTexture(tcu::SurfaceAccess(referenceFrame, m_renderCtx.getRenderTarget().getPixelFormat()),
270*35238bceSAndroid Build Coastguard Worker m_texture->getRefTexture(), &texCoord[0], renderParams);
271*35238bceSAndroid Build Coastguard Worker
272*35238bceSAndroid Build Coastguard Worker // Compare and log.
273*35238bceSAndroid Build Coastguard Worker return compareImages(log, (string("LayerFace" + de::toString(layerFaceNdx))).c_str(),
274*35238bceSAndroid Build Coastguard Worker (string("Layer-face " + de::toString(layerFaceNdx))).c_str(), referenceFrame, renderedFrame,
275*35238bceSAndroid Build Coastguard Worker threshold);
276*35238bceSAndroid Build Coastguard Worker }
277*35238bceSAndroid Build Coastguard Worker
iterate(void)278*35238bceSAndroid Build Coastguard Worker TextureCubeArrayFormatCase::IterateResult TextureCubeArrayFormatCase::iterate(void)
279*35238bceSAndroid Build Coastguard Worker {
280*35238bceSAndroid Build Coastguard Worker if (m_testCtx.getTestResult() == QP_TEST_RESULT_NOT_SUPPORTED)
281*35238bceSAndroid Build Coastguard Worker return STOP;
282*35238bceSAndroid Build Coastguard Worker
283*35238bceSAndroid Build Coastguard Worker // Execute test for all layers.
284*35238bceSAndroid Build Coastguard Worker bool isOk = testLayerFace(m_curLayerFace);
285*35238bceSAndroid Build Coastguard Worker
286*35238bceSAndroid Build Coastguard Worker if (!isOk && m_testCtx.getTestResult() == QP_TEST_RESULT_PASS)
287*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Image comparison failed");
288*35238bceSAndroid Build Coastguard Worker
289*35238bceSAndroid Build Coastguard Worker m_curLayerFace += 1;
290*35238bceSAndroid Build Coastguard Worker
291*35238bceSAndroid Build Coastguard Worker return m_curLayerFace < m_texture->getRefTexture().getDepth() ? CONTINUE : STOP;
292*35238bceSAndroid Build Coastguard Worker }
293*35238bceSAndroid Build Coastguard Worker
294*35238bceSAndroid Build Coastguard Worker // TextureBufferFormatCase
295*35238bceSAndroid Build Coastguard Worker
296*35238bceSAndroid Build Coastguard Worker class TextureBufferFormatCase : public TestCase
297*35238bceSAndroid Build Coastguard Worker {
298*35238bceSAndroid Build Coastguard Worker public:
299*35238bceSAndroid Build Coastguard Worker TextureBufferFormatCase(Context &ctx, glu::RenderContext &renderCtx, const char *name, const char *description,
300*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat, int width);
301*35238bceSAndroid Build Coastguard Worker ~TextureBufferFormatCase(void);
302*35238bceSAndroid Build Coastguard Worker
303*35238bceSAndroid Build Coastguard Worker void init(void);
304*35238bceSAndroid Build Coastguard Worker void deinit(void);
305*35238bceSAndroid Build Coastguard Worker IterateResult iterate(void);
306*35238bceSAndroid Build Coastguard Worker
307*35238bceSAndroid Build Coastguard Worker private:
308*35238bceSAndroid Build Coastguard Worker TextureBufferFormatCase(const TextureBufferFormatCase &other);
309*35238bceSAndroid Build Coastguard Worker TextureBufferFormatCase &operator=(const TextureBufferFormatCase &other);
310*35238bceSAndroid Build Coastguard Worker
311*35238bceSAndroid Build Coastguard Worker glu::RenderContext &m_renderCtx;
312*35238bceSAndroid Build Coastguard Worker
313*35238bceSAndroid Build Coastguard Worker uint32_t m_format;
314*35238bceSAndroid Build Coastguard Worker int m_width;
315*35238bceSAndroid Build Coastguard Worker int m_maxTextureBufferSize;
316*35238bceSAndroid Build Coastguard Worker
317*35238bceSAndroid Build Coastguard Worker glu::TextureBuffer *m_texture;
318*35238bceSAndroid Build Coastguard Worker TextureRenderer m_renderer;
319*35238bceSAndroid Build Coastguard Worker };
320*35238bceSAndroid Build Coastguard Worker
TextureBufferFormatCase(Context & ctx,glu::RenderContext & renderCtx,const char * name,const char * description,uint32_t internalFormat,int width)321*35238bceSAndroid Build Coastguard Worker TextureBufferFormatCase::TextureBufferFormatCase(Context &ctx, glu::RenderContext &renderCtx, const char *name,
322*35238bceSAndroid Build Coastguard Worker const char *description, uint32_t internalFormat, int width)
323*35238bceSAndroid Build Coastguard Worker : TestCase(ctx, name, description)
324*35238bceSAndroid Build Coastguard Worker , m_renderCtx(renderCtx)
325*35238bceSAndroid Build Coastguard Worker , m_format(internalFormat)
326*35238bceSAndroid Build Coastguard Worker , m_width(width)
327*35238bceSAndroid Build Coastguard Worker , m_maxTextureBufferSize(0)
328*35238bceSAndroid Build Coastguard Worker , m_texture(DE_NULL)
329*35238bceSAndroid Build Coastguard Worker , m_renderer(renderCtx, ctx.getTestContext().getLog(), glu::getContextTypeGLSLVersion(renderCtx.getType()),
330*35238bceSAndroid Build Coastguard Worker glu::PRECISION_HIGHP)
331*35238bceSAndroid Build Coastguard Worker {
332*35238bceSAndroid Build Coastguard Worker }
333*35238bceSAndroid Build Coastguard Worker
~TextureBufferFormatCase(void)334*35238bceSAndroid Build Coastguard Worker TextureBufferFormatCase::~TextureBufferFormatCase(void)
335*35238bceSAndroid Build Coastguard Worker {
336*35238bceSAndroid Build Coastguard Worker deinit();
337*35238bceSAndroid Build Coastguard Worker }
338*35238bceSAndroid Build Coastguard Worker
init(void)339*35238bceSAndroid Build Coastguard Worker void TextureBufferFormatCase::init(void)
340*35238bceSAndroid Build Coastguard Worker {
341*35238bceSAndroid Build Coastguard Worker TestLog &log = m_testCtx.getLog();
342*35238bceSAndroid Build Coastguard Worker tcu::TextureFormat fmt = glu::mapGLInternalFormat(m_format);
343*35238bceSAndroid Build Coastguard Worker tcu::TextureFormatInfo spec = tcu::getTextureFormatInfo(fmt);
344*35238bceSAndroid Build Coastguard Worker tcu::Vec4 colorA(spec.valueMin.x(), spec.valueMax.y(), spec.valueMin.z(), spec.valueMax.w());
345*35238bceSAndroid Build Coastguard Worker tcu::Vec4 colorB(spec.valueMax.x(), spec.valueMin.y(), spec.valueMax.z(), spec.valueMin.w());
346*35238bceSAndroid Build Coastguard Worker const bool supportsES32 = glu::contextSupports(m_context.getRenderContext().getType(), glu::ApiType::es(3, 2));
347*35238bceSAndroid Build Coastguard Worker
348*35238bceSAndroid Build Coastguard Worker if (!supportsES32 && !m_context.getContextInfo().isExtensionSupported("GL_OES_texture_buffer") &&
349*35238bceSAndroid Build Coastguard Worker !m_context.getContextInfo().isExtensionSupported("GL_EXT_texture_buffer"))
350*35238bceSAndroid Build Coastguard Worker {
351*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "Texture buffers not supported");
352*35238bceSAndroid Build Coastguard Worker }
353*35238bceSAndroid Build Coastguard Worker
354*35238bceSAndroid Build Coastguard Worker m_maxTextureBufferSize = m_context.getContextInfo().getInt(GL_MAX_TEXTURE_BUFFER_SIZE);
355*35238bceSAndroid Build Coastguard Worker
356*35238bceSAndroid Build Coastguard Worker if (m_maxTextureBufferSize <= 0)
357*35238bceSAndroid Build Coastguard Worker TCU_THROW(NotSupportedError, "GL_MAX_TEXTURE_BUFFER_SIZE > 0 required");
358*35238bceSAndroid Build Coastguard Worker
359*35238bceSAndroid Build Coastguard Worker log << TestLog::Message << "Buffer texture, " << glu::getTextureFormatStr(m_format) << ", " << m_width
360*35238bceSAndroid Build Coastguard Worker << ",\n fill with " << formatGradient(&colorA, &colorB) << " gradient" << TestLog::EndMessage;
361*35238bceSAndroid Build Coastguard Worker
362*35238bceSAndroid Build Coastguard Worker m_texture = new glu::TextureBuffer(m_renderCtx, m_format, m_width * fmt.getPixelSize());
363*35238bceSAndroid Build Coastguard Worker
364*35238bceSAndroid Build Coastguard Worker // Fill level 0.
365*35238bceSAndroid Build Coastguard Worker tcu::fillWithComponentGradients(m_texture->getFullRefTexture(), colorA, colorB);
366*35238bceSAndroid Build Coastguard Worker }
367*35238bceSAndroid Build Coastguard Worker
deinit(void)368*35238bceSAndroid Build Coastguard Worker void TextureBufferFormatCase::deinit(void)
369*35238bceSAndroid Build Coastguard Worker {
370*35238bceSAndroid Build Coastguard Worker delete m_texture;
371*35238bceSAndroid Build Coastguard Worker m_texture = DE_NULL;
372*35238bceSAndroid Build Coastguard Worker
373*35238bceSAndroid Build Coastguard Worker m_renderer.clear();
374*35238bceSAndroid Build Coastguard Worker }
375*35238bceSAndroid Build Coastguard Worker
iterate(void)376*35238bceSAndroid Build Coastguard Worker TextureBufferFormatCase::IterateResult TextureBufferFormatCase::iterate(void)
377*35238bceSAndroid Build Coastguard Worker {
378*35238bceSAndroid Build Coastguard Worker TestLog &log = m_testCtx.getLog();
379*35238bceSAndroid Build Coastguard Worker const glw::Functions &gl = m_renderCtx.getFunctions();
380*35238bceSAndroid Build Coastguard Worker RandomViewport viewport(m_renderCtx.getRenderTarget(), m_width, 1, deStringHash(getName()));
381*35238bceSAndroid Build Coastguard Worker tcu::Surface renderedFrame(viewport.width, viewport.height);
382*35238bceSAndroid Build Coastguard Worker tcu::Surface referenceFrame(viewport.width, viewport.height);
383*35238bceSAndroid Build Coastguard Worker tcu::RGBA threshold = m_renderCtx.getRenderTarget().getPixelFormat().getColorThreshold() + tcu::RGBA(1, 1, 1, 1);
384*35238bceSAndroid Build Coastguard Worker vector<float> texCoord;
385*35238bceSAndroid Build Coastguard Worker RenderParams renderParams(TEXTURETYPE_BUFFER);
386*35238bceSAndroid Build Coastguard Worker const tcu::ConstPixelBufferAccess effectiveRefTexture =
387*35238bceSAndroid Build Coastguard Worker glu::getTextureBufferEffectiveRefTexture(*m_texture, m_maxTextureBufferSize);
388*35238bceSAndroid Build Coastguard Worker tcu::TextureFormatInfo spec = tcu::getTextureFormatInfo(effectiveRefTexture.getFormat());
389*35238bceSAndroid Build Coastguard Worker
390*35238bceSAndroid Build Coastguard Worker renderParams.flags |= RenderParams::LOG_ALL;
391*35238bceSAndroid Build Coastguard Worker renderParams.samplerType = getFetchSamplerType(effectiveRefTexture.getFormat());
392*35238bceSAndroid Build Coastguard Worker renderParams.colorScale = spec.lookupScale;
393*35238bceSAndroid Build Coastguard Worker renderParams.colorBias = spec.lookupBias;
394*35238bceSAndroid Build Coastguard Worker
395*35238bceSAndroid Build Coastguard Worker computeQuadTexCoord1D(texCoord, 0.0f, (float)(effectiveRefTexture.getWidth()));
396*35238bceSAndroid Build Coastguard Worker
397*35238bceSAndroid Build Coastguard Worker gl.clearColor(0.125f, 0.25f, 0.5f, 1.0f);
398*35238bceSAndroid Build Coastguard Worker gl.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
399*35238bceSAndroid Build Coastguard Worker
400*35238bceSAndroid Build Coastguard Worker // Setup base viewport.
401*35238bceSAndroid Build Coastguard Worker gl.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
402*35238bceSAndroid Build Coastguard Worker gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
403*35238bceSAndroid Build Coastguard Worker
404*35238bceSAndroid Build Coastguard Worker // Upload texture data to GL.
405*35238bceSAndroid Build Coastguard Worker m_texture->upload();
406*35238bceSAndroid Build Coastguard Worker
407*35238bceSAndroid Build Coastguard Worker // Bind to unit 0.
408*35238bceSAndroid Build Coastguard Worker gl.activeTexture(GL_TEXTURE0);
409*35238bceSAndroid Build Coastguard Worker gl.bindTexture(GL_TEXTURE_BUFFER, m_texture->getGLTexture());
410*35238bceSAndroid Build Coastguard Worker
411*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "Set texturing state");
412*35238bceSAndroid Build Coastguard Worker
413*35238bceSAndroid Build Coastguard Worker // Draw.
414*35238bceSAndroid Build Coastguard Worker m_renderer.renderQuad(0, &texCoord[0], renderParams);
415*35238bceSAndroid Build Coastguard Worker glu::readPixels(m_renderCtx, viewport.x, viewport.y, renderedFrame.getAccess());
416*35238bceSAndroid Build Coastguard Worker
417*35238bceSAndroid Build Coastguard Worker GLU_EXPECT_NO_ERROR(gl.getError(), "glReadPixels()");
418*35238bceSAndroid Build Coastguard Worker
419*35238bceSAndroid Build Coastguard Worker // Compute reference.
420*35238bceSAndroid Build Coastguard Worker fetchTexture(tcu::SurfaceAccess(referenceFrame, m_renderCtx.getRenderTarget().getPixelFormat()),
421*35238bceSAndroid Build Coastguard Worker effectiveRefTexture, &texCoord[0], spec.lookupScale, spec.lookupBias);
422*35238bceSAndroid Build Coastguard Worker
423*35238bceSAndroid Build Coastguard Worker // Compare and log.
424*35238bceSAndroid Build Coastguard Worker bool isOk = compareImages(log, referenceFrame, renderedFrame, threshold);
425*35238bceSAndroid Build Coastguard Worker
426*35238bceSAndroid Build Coastguard Worker m_testCtx.setTestResult(isOk ? QP_TEST_RESULT_PASS : QP_TEST_RESULT_FAIL,
427*35238bceSAndroid Build Coastguard Worker isOk ? "Pass" : "Image comparison failed");
428*35238bceSAndroid Build Coastguard Worker
429*35238bceSAndroid Build Coastguard Worker return STOP;
430*35238bceSAndroid Build Coastguard Worker }
431*35238bceSAndroid Build Coastguard Worker
432*35238bceSAndroid Build Coastguard Worker // TextureFormatTests
433*35238bceSAndroid Build Coastguard Worker
TextureFormatTests(Context & context)434*35238bceSAndroid Build Coastguard Worker TextureFormatTests::TextureFormatTests(Context &context) : TestCaseGroup(context, "format", "Texture Format Tests")
435*35238bceSAndroid Build Coastguard Worker {
436*35238bceSAndroid Build Coastguard Worker }
437*35238bceSAndroid Build Coastguard Worker
~TextureFormatTests(void)438*35238bceSAndroid Build Coastguard Worker TextureFormatTests::~TextureFormatTests(void)
439*35238bceSAndroid Build Coastguard Worker {
440*35238bceSAndroid Build Coastguard Worker }
441*35238bceSAndroid Build Coastguard Worker
toStringVector(const char * const * str,int numStr)442*35238bceSAndroid Build Coastguard Worker vector<string> toStringVector(const char *const *str, int numStr)
443*35238bceSAndroid Build Coastguard Worker {
444*35238bceSAndroid Build Coastguard Worker vector<string> v;
445*35238bceSAndroid Build Coastguard Worker v.resize(numStr);
446*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < numStr; i++)
447*35238bceSAndroid Build Coastguard Worker v[i] = str[i];
448*35238bceSAndroid Build Coastguard Worker return v;
449*35238bceSAndroid Build Coastguard Worker }
450*35238bceSAndroid Build Coastguard Worker
init(void)451*35238bceSAndroid Build Coastguard Worker void TextureFormatTests::init(void)
452*35238bceSAndroid Build Coastguard Worker {
453*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *unsizedGroup = DE_NULL;
454*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *sizedGroup = DE_NULL;
455*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *sizedBufferGroup = DE_NULL;
456*35238bceSAndroid Build Coastguard Worker addChild((unsizedGroup = new tcu::TestCaseGroup(m_testCtx, "unsized", "Unsized formats")));
457*35238bceSAndroid Build Coastguard Worker addChild((sizedGroup = new tcu::TestCaseGroup(m_testCtx, "sized", "Sized formats")));
458*35238bceSAndroid Build Coastguard Worker addChild((sizedBufferGroup = new tcu::TestCaseGroup(m_testCtx, "buffer", "Sized formats (Buffer)")));
459*35238bceSAndroid Build Coastguard Worker
460*35238bceSAndroid Build Coastguard Worker tcu::TestCaseGroup *sizedCubeArrayGroup = DE_NULL;
461*35238bceSAndroid Build Coastguard Worker sizedGroup->addChild(
462*35238bceSAndroid Build Coastguard Worker (sizedCubeArrayGroup = new tcu::TestCaseGroup(m_testCtx, "cube_array", "Sized formats (2D Array)")));
463*35238bceSAndroid Build Coastguard Worker
464*35238bceSAndroid Build Coastguard Worker struct
465*35238bceSAndroid Build Coastguard Worker {
466*35238bceSAndroid Build Coastguard Worker const char *name;
467*35238bceSAndroid Build Coastguard Worker uint32_t format;
468*35238bceSAndroid Build Coastguard Worker uint32_t dataType;
469*35238bceSAndroid Build Coastguard Worker } texFormats[] = {{"alpha", GL_ALPHA, GL_UNSIGNED_BYTE},
470*35238bceSAndroid Build Coastguard Worker {"luminance", GL_LUMINANCE, GL_UNSIGNED_BYTE},
471*35238bceSAndroid Build Coastguard Worker {"luminance_alpha", GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE},
472*35238bceSAndroid Build Coastguard Worker {"rgb_unsigned_short_5_6_5", GL_RGB, GL_UNSIGNED_SHORT_5_6_5},
473*35238bceSAndroid Build Coastguard Worker {"rgb_unsigned_byte", GL_RGB, GL_UNSIGNED_BYTE},
474*35238bceSAndroid Build Coastguard Worker {"rgba_unsigned_short_4_4_4_4", GL_RGBA, GL_UNSIGNED_SHORT_4_4_4_4},
475*35238bceSAndroid Build Coastguard Worker {"rgba_unsigned_short_5_5_5_1", GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1},
476*35238bceSAndroid Build Coastguard Worker {"rgba_unsigned_byte", GL_RGBA, GL_UNSIGNED_BYTE}};
477*35238bceSAndroid Build Coastguard Worker
478*35238bceSAndroid Build Coastguard Worker for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(texFormats); formatNdx++)
479*35238bceSAndroid Build Coastguard Worker {
480*35238bceSAndroid Build Coastguard Worker uint32_t format = texFormats[formatNdx].format;
481*35238bceSAndroid Build Coastguard Worker uint32_t dataType = texFormats[formatNdx].dataType;
482*35238bceSAndroid Build Coastguard Worker string nameBase = texFormats[formatNdx].name;
483*35238bceSAndroid Build Coastguard Worker string descriptionBase = string(glu::getTextureFormatName(format)) + ", " + glu::getTypeName(dataType);
484*35238bceSAndroid Build Coastguard Worker
485*35238bceSAndroid Build Coastguard Worker unsizedGroup->addChild(new TextureCubeArrayFormatCase(
486*35238bceSAndroid Build Coastguard Worker m_testCtx, m_context.getRenderContext(), m_context.getContextInfo(), (nameBase + "_cube_array_pot").c_str(),
487*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_CUBE_MAP_ARRAY").c_str(), format, dataType, 64, 12));
488*35238bceSAndroid Build Coastguard Worker unsizedGroup->addChild(new TextureCubeArrayFormatCase(
489*35238bceSAndroid Build Coastguard Worker m_testCtx, m_context.getRenderContext(), m_context.getContextInfo(),
490*35238bceSAndroid Build Coastguard Worker (nameBase + "_cube_array_npot").c_str(), (descriptionBase + ", GL_TEXTURE_CUBE_MAP_ARRAY").c_str(), format,
491*35238bceSAndroid Build Coastguard Worker dataType, 64, 12));
492*35238bceSAndroid Build Coastguard Worker }
493*35238bceSAndroid Build Coastguard Worker
494*35238bceSAndroid Build Coastguard Worker struct
495*35238bceSAndroid Build Coastguard Worker {
496*35238bceSAndroid Build Coastguard Worker const char *name;
497*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat;
498*35238bceSAndroid Build Coastguard Worker } sizedColorFormats[] = {{
499*35238bceSAndroid Build Coastguard Worker "rgba32f",
500*35238bceSAndroid Build Coastguard Worker GL_RGBA32F,
501*35238bceSAndroid Build Coastguard Worker },
502*35238bceSAndroid Build Coastguard Worker {
503*35238bceSAndroid Build Coastguard Worker "rgba32i",
504*35238bceSAndroid Build Coastguard Worker GL_RGBA32I,
505*35238bceSAndroid Build Coastguard Worker },
506*35238bceSAndroid Build Coastguard Worker {
507*35238bceSAndroid Build Coastguard Worker "rgba32ui",
508*35238bceSAndroid Build Coastguard Worker GL_RGBA32UI,
509*35238bceSAndroid Build Coastguard Worker },
510*35238bceSAndroid Build Coastguard Worker {
511*35238bceSAndroid Build Coastguard Worker "rgba16f",
512*35238bceSAndroid Build Coastguard Worker GL_RGBA16F,
513*35238bceSAndroid Build Coastguard Worker },
514*35238bceSAndroid Build Coastguard Worker {
515*35238bceSAndroid Build Coastguard Worker "rgba16i",
516*35238bceSAndroid Build Coastguard Worker GL_RGBA16I,
517*35238bceSAndroid Build Coastguard Worker },
518*35238bceSAndroid Build Coastguard Worker {
519*35238bceSAndroid Build Coastguard Worker "rgba16ui",
520*35238bceSAndroid Build Coastguard Worker GL_RGBA16UI,
521*35238bceSAndroid Build Coastguard Worker },
522*35238bceSAndroid Build Coastguard Worker {
523*35238bceSAndroid Build Coastguard Worker "rgba8",
524*35238bceSAndroid Build Coastguard Worker GL_RGBA8,
525*35238bceSAndroid Build Coastguard Worker },
526*35238bceSAndroid Build Coastguard Worker {
527*35238bceSAndroid Build Coastguard Worker "rgba8i",
528*35238bceSAndroid Build Coastguard Worker GL_RGBA8I,
529*35238bceSAndroid Build Coastguard Worker },
530*35238bceSAndroid Build Coastguard Worker {
531*35238bceSAndroid Build Coastguard Worker "rgba8ui",
532*35238bceSAndroid Build Coastguard Worker GL_RGBA8UI,
533*35238bceSAndroid Build Coastguard Worker },
534*35238bceSAndroid Build Coastguard Worker {
535*35238bceSAndroid Build Coastguard Worker "srgb_r8",
536*35238bceSAndroid Build Coastguard Worker GL_SR8_EXT,
537*35238bceSAndroid Build Coastguard Worker },
538*35238bceSAndroid Build Coastguard Worker {
539*35238bceSAndroid Build Coastguard Worker "srgb_rg8",
540*35238bceSAndroid Build Coastguard Worker GL_SRG8_EXT,
541*35238bceSAndroid Build Coastguard Worker },
542*35238bceSAndroid Build Coastguard Worker {
543*35238bceSAndroid Build Coastguard Worker "srgb8_alpha8",
544*35238bceSAndroid Build Coastguard Worker GL_SRGB8_ALPHA8,
545*35238bceSAndroid Build Coastguard Worker },
546*35238bceSAndroid Build Coastguard Worker {
547*35238bceSAndroid Build Coastguard Worker "rgb10_a2",
548*35238bceSAndroid Build Coastguard Worker GL_RGB10_A2,
549*35238bceSAndroid Build Coastguard Worker },
550*35238bceSAndroid Build Coastguard Worker {
551*35238bceSAndroid Build Coastguard Worker "rgb10_a2ui",
552*35238bceSAndroid Build Coastguard Worker GL_RGB10_A2UI,
553*35238bceSAndroid Build Coastguard Worker },
554*35238bceSAndroid Build Coastguard Worker {
555*35238bceSAndroid Build Coastguard Worker "rgba4",
556*35238bceSAndroid Build Coastguard Worker GL_RGBA4,
557*35238bceSAndroid Build Coastguard Worker },
558*35238bceSAndroid Build Coastguard Worker {
559*35238bceSAndroid Build Coastguard Worker "rgb5_a1",
560*35238bceSAndroid Build Coastguard Worker GL_RGB5_A1,
561*35238bceSAndroid Build Coastguard Worker },
562*35238bceSAndroid Build Coastguard Worker {
563*35238bceSAndroid Build Coastguard Worker "rgba8_snorm",
564*35238bceSAndroid Build Coastguard Worker GL_RGBA8_SNORM,
565*35238bceSAndroid Build Coastguard Worker },
566*35238bceSAndroid Build Coastguard Worker {
567*35238bceSAndroid Build Coastguard Worker "rgb8",
568*35238bceSAndroid Build Coastguard Worker GL_RGB8,
569*35238bceSAndroid Build Coastguard Worker },
570*35238bceSAndroid Build Coastguard Worker {
571*35238bceSAndroid Build Coastguard Worker "rgb565",
572*35238bceSAndroid Build Coastguard Worker GL_RGB565,
573*35238bceSAndroid Build Coastguard Worker },
574*35238bceSAndroid Build Coastguard Worker {
575*35238bceSAndroid Build Coastguard Worker "r11f_g11f_b10f",
576*35238bceSAndroid Build Coastguard Worker GL_R11F_G11F_B10F,
577*35238bceSAndroid Build Coastguard Worker },
578*35238bceSAndroid Build Coastguard Worker {
579*35238bceSAndroid Build Coastguard Worker "rgb32f",
580*35238bceSAndroid Build Coastguard Worker GL_RGB32F,
581*35238bceSAndroid Build Coastguard Worker },
582*35238bceSAndroid Build Coastguard Worker {
583*35238bceSAndroid Build Coastguard Worker "rgb32i",
584*35238bceSAndroid Build Coastguard Worker GL_RGB32I,
585*35238bceSAndroid Build Coastguard Worker },
586*35238bceSAndroid Build Coastguard Worker {
587*35238bceSAndroid Build Coastguard Worker "rgb32ui",
588*35238bceSAndroid Build Coastguard Worker GL_RGB32UI,
589*35238bceSAndroid Build Coastguard Worker },
590*35238bceSAndroid Build Coastguard Worker {
591*35238bceSAndroid Build Coastguard Worker "rgb16f",
592*35238bceSAndroid Build Coastguard Worker GL_RGB16F,
593*35238bceSAndroid Build Coastguard Worker },
594*35238bceSAndroid Build Coastguard Worker {
595*35238bceSAndroid Build Coastguard Worker "rgb16i",
596*35238bceSAndroid Build Coastguard Worker GL_RGB16I,
597*35238bceSAndroid Build Coastguard Worker },
598*35238bceSAndroid Build Coastguard Worker {
599*35238bceSAndroid Build Coastguard Worker "rgb16ui",
600*35238bceSAndroid Build Coastguard Worker GL_RGB16UI,
601*35238bceSAndroid Build Coastguard Worker },
602*35238bceSAndroid Build Coastguard Worker {
603*35238bceSAndroid Build Coastguard Worker "rgb8_snorm",
604*35238bceSAndroid Build Coastguard Worker GL_RGB8_SNORM,
605*35238bceSAndroid Build Coastguard Worker },
606*35238bceSAndroid Build Coastguard Worker {
607*35238bceSAndroid Build Coastguard Worker "rgb8i",
608*35238bceSAndroid Build Coastguard Worker GL_RGB8I,
609*35238bceSAndroid Build Coastguard Worker },
610*35238bceSAndroid Build Coastguard Worker {
611*35238bceSAndroid Build Coastguard Worker "rgb8ui",
612*35238bceSAndroid Build Coastguard Worker GL_RGB8UI,
613*35238bceSAndroid Build Coastguard Worker },
614*35238bceSAndroid Build Coastguard Worker {
615*35238bceSAndroid Build Coastguard Worker "srgb8",
616*35238bceSAndroid Build Coastguard Worker GL_SRGB8,
617*35238bceSAndroid Build Coastguard Worker },
618*35238bceSAndroid Build Coastguard Worker {
619*35238bceSAndroid Build Coastguard Worker "rgb9_e5",
620*35238bceSAndroid Build Coastguard Worker GL_RGB9_E5,
621*35238bceSAndroid Build Coastguard Worker },
622*35238bceSAndroid Build Coastguard Worker {
623*35238bceSAndroid Build Coastguard Worker "rg32f",
624*35238bceSAndroid Build Coastguard Worker GL_RG32F,
625*35238bceSAndroid Build Coastguard Worker },
626*35238bceSAndroid Build Coastguard Worker {
627*35238bceSAndroid Build Coastguard Worker "rg32i",
628*35238bceSAndroid Build Coastguard Worker GL_RG32I,
629*35238bceSAndroid Build Coastguard Worker },
630*35238bceSAndroid Build Coastguard Worker {
631*35238bceSAndroid Build Coastguard Worker "rg32ui",
632*35238bceSAndroid Build Coastguard Worker GL_RG32UI,
633*35238bceSAndroid Build Coastguard Worker },
634*35238bceSAndroid Build Coastguard Worker {
635*35238bceSAndroid Build Coastguard Worker "rg16f",
636*35238bceSAndroid Build Coastguard Worker GL_RG16F,
637*35238bceSAndroid Build Coastguard Worker },
638*35238bceSAndroid Build Coastguard Worker {
639*35238bceSAndroid Build Coastguard Worker "rg16i",
640*35238bceSAndroid Build Coastguard Worker GL_RG16I,
641*35238bceSAndroid Build Coastguard Worker },
642*35238bceSAndroid Build Coastguard Worker {
643*35238bceSAndroid Build Coastguard Worker "rg16ui",
644*35238bceSAndroid Build Coastguard Worker GL_RG16UI,
645*35238bceSAndroid Build Coastguard Worker },
646*35238bceSAndroid Build Coastguard Worker {
647*35238bceSAndroid Build Coastguard Worker "rg8",
648*35238bceSAndroid Build Coastguard Worker GL_RG8,
649*35238bceSAndroid Build Coastguard Worker },
650*35238bceSAndroid Build Coastguard Worker {
651*35238bceSAndroid Build Coastguard Worker "rg8i",
652*35238bceSAndroid Build Coastguard Worker GL_RG8I,
653*35238bceSAndroid Build Coastguard Worker },
654*35238bceSAndroid Build Coastguard Worker {
655*35238bceSAndroid Build Coastguard Worker "rg8ui",
656*35238bceSAndroid Build Coastguard Worker GL_RG8UI,
657*35238bceSAndroid Build Coastguard Worker },
658*35238bceSAndroid Build Coastguard Worker {
659*35238bceSAndroid Build Coastguard Worker "rg8_snorm",
660*35238bceSAndroid Build Coastguard Worker GL_RG8_SNORM,
661*35238bceSAndroid Build Coastguard Worker },
662*35238bceSAndroid Build Coastguard Worker {
663*35238bceSAndroid Build Coastguard Worker "r32f",
664*35238bceSAndroid Build Coastguard Worker GL_R32F,
665*35238bceSAndroid Build Coastguard Worker },
666*35238bceSAndroid Build Coastguard Worker {
667*35238bceSAndroid Build Coastguard Worker "r32i",
668*35238bceSAndroid Build Coastguard Worker GL_R32I,
669*35238bceSAndroid Build Coastguard Worker },
670*35238bceSAndroid Build Coastguard Worker {
671*35238bceSAndroid Build Coastguard Worker "r32ui",
672*35238bceSAndroid Build Coastguard Worker GL_R32UI,
673*35238bceSAndroid Build Coastguard Worker },
674*35238bceSAndroid Build Coastguard Worker {
675*35238bceSAndroid Build Coastguard Worker "r16f",
676*35238bceSAndroid Build Coastguard Worker GL_R16F,
677*35238bceSAndroid Build Coastguard Worker },
678*35238bceSAndroid Build Coastguard Worker {
679*35238bceSAndroid Build Coastguard Worker "r16i",
680*35238bceSAndroid Build Coastguard Worker GL_R16I,
681*35238bceSAndroid Build Coastguard Worker },
682*35238bceSAndroid Build Coastguard Worker {
683*35238bceSAndroid Build Coastguard Worker "r16ui",
684*35238bceSAndroid Build Coastguard Worker GL_R16UI,
685*35238bceSAndroid Build Coastguard Worker },
686*35238bceSAndroid Build Coastguard Worker {
687*35238bceSAndroid Build Coastguard Worker "r8",
688*35238bceSAndroid Build Coastguard Worker GL_R8,
689*35238bceSAndroid Build Coastguard Worker },
690*35238bceSAndroid Build Coastguard Worker {
691*35238bceSAndroid Build Coastguard Worker "r8i",
692*35238bceSAndroid Build Coastguard Worker GL_R8I,
693*35238bceSAndroid Build Coastguard Worker },
694*35238bceSAndroid Build Coastguard Worker {
695*35238bceSAndroid Build Coastguard Worker "r8ui",
696*35238bceSAndroid Build Coastguard Worker GL_R8UI,
697*35238bceSAndroid Build Coastguard Worker },
698*35238bceSAndroid Build Coastguard Worker {
699*35238bceSAndroid Build Coastguard Worker "r8_snorm",
700*35238bceSAndroid Build Coastguard Worker GL_R8_SNORM,
701*35238bceSAndroid Build Coastguard Worker }};
702*35238bceSAndroid Build Coastguard Worker
703*35238bceSAndroid Build Coastguard Worker struct
704*35238bceSAndroid Build Coastguard Worker {
705*35238bceSAndroid Build Coastguard Worker const char *name;
706*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat;
707*35238bceSAndroid Build Coastguard Worker } sizedDepthStencilFormats[] = {// Depth and stencil formats
708*35238bceSAndroid Build Coastguard Worker {"depth_component32f", GL_DEPTH_COMPONENT32F},
709*35238bceSAndroid Build Coastguard Worker {"depth_component24", GL_DEPTH_COMPONENT24},
710*35238bceSAndroid Build Coastguard Worker {"depth_component16", GL_DEPTH_COMPONENT16},
711*35238bceSAndroid Build Coastguard Worker {"depth32f_stencil8", GL_DEPTH32F_STENCIL8},
712*35238bceSAndroid Build Coastguard Worker {"depth24_stencil8", GL_DEPTH24_STENCIL8}};
713*35238bceSAndroid Build Coastguard Worker
714*35238bceSAndroid Build Coastguard Worker for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(sizedColorFormats); formatNdx++)
715*35238bceSAndroid Build Coastguard Worker {
716*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat = sizedColorFormats[formatNdx].internalFormat;
717*35238bceSAndroid Build Coastguard Worker string nameBase = sizedColorFormats[formatNdx].name;
718*35238bceSAndroid Build Coastguard Worker string descriptionBase = glu::getTextureFormatName(internalFormat);
719*35238bceSAndroid Build Coastguard Worker
720*35238bceSAndroid Build Coastguard Worker sizedCubeArrayGroup->addChild(new TextureCubeArrayFormatCase(
721*35238bceSAndroid Build Coastguard Worker m_testCtx, m_context.getRenderContext(), m_context.getContextInfo(), (nameBase + "_pot").c_str(),
722*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_CUBE_MAP_ARRAY").c_str(), internalFormat, 64, 12));
723*35238bceSAndroid Build Coastguard Worker sizedCubeArrayGroup->addChild(new TextureCubeArrayFormatCase(
724*35238bceSAndroid Build Coastguard Worker m_testCtx, m_context.getRenderContext(), m_context.getContextInfo(), (nameBase + "_npot").c_str(),
725*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_CUBE_MAP_ARRAY").c_str(), internalFormat, 64, 12));
726*35238bceSAndroid Build Coastguard Worker }
727*35238bceSAndroid Build Coastguard Worker
728*35238bceSAndroid Build Coastguard Worker for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(sizedDepthStencilFormats); formatNdx++)
729*35238bceSAndroid Build Coastguard Worker {
730*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat = sizedDepthStencilFormats[formatNdx].internalFormat;
731*35238bceSAndroid Build Coastguard Worker string nameBase = sizedDepthStencilFormats[formatNdx].name;
732*35238bceSAndroid Build Coastguard Worker string descriptionBase = glu::getTextureFormatName(internalFormat);
733*35238bceSAndroid Build Coastguard Worker
734*35238bceSAndroid Build Coastguard Worker sizedCubeArrayGroup->addChild(new TextureCubeArrayFormatCase(
735*35238bceSAndroid Build Coastguard Worker m_testCtx, m_context.getRenderContext(), m_context.getContextInfo(), (nameBase + "_pot").c_str(),
736*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_CUBE_MAP_ARRAY").c_str(), internalFormat, 64, 12));
737*35238bceSAndroid Build Coastguard Worker sizedCubeArrayGroup->addChild(new TextureCubeArrayFormatCase(
738*35238bceSAndroid Build Coastguard Worker m_testCtx, m_context.getRenderContext(), m_context.getContextInfo(), (nameBase + "_npot").c_str(),
739*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_CUBE_MAP_ARRAY").c_str(), internalFormat, 64, 12));
740*35238bceSAndroid Build Coastguard Worker }
741*35238bceSAndroid Build Coastguard Worker
742*35238bceSAndroid Build Coastguard Worker // \todo Check
743*35238bceSAndroid Build Coastguard Worker struct
744*35238bceSAndroid Build Coastguard Worker {
745*35238bceSAndroid Build Coastguard Worker const char *name;
746*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat;
747*35238bceSAndroid Build Coastguard Worker } bufferColorFormats[] = {{
748*35238bceSAndroid Build Coastguard Worker "r8",
749*35238bceSAndroid Build Coastguard Worker GL_R8,
750*35238bceSAndroid Build Coastguard Worker },
751*35238bceSAndroid Build Coastguard Worker {
752*35238bceSAndroid Build Coastguard Worker "r16f",
753*35238bceSAndroid Build Coastguard Worker GL_R16F,
754*35238bceSAndroid Build Coastguard Worker },
755*35238bceSAndroid Build Coastguard Worker {
756*35238bceSAndroid Build Coastguard Worker "r32f",
757*35238bceSAndroid Build Coastguard Worker GL_R32F,
758*35238bceSAndroid Build Coastguard Worker },
759*35238bceSAndroid Build Coastguard Worker {
760*35238bceSAndroid Build Coastguard Worker "r8i",
761*35238bceSAndroid Build Coastguard Worker GL_R8I,
762*35238bceSAndroid Build Coastguard Worker },
763*35238bceSAndroid Build Coastguard Worker {
764*35238bceSAndroid Build Coastguard Worker "r16i",
765*35238bceSAndroid Build Coastguard Worker GL_R16I,
766*35238bceSAndroid Build Coastguard Worker },
767*35238bceSAndroid Build Coastguard Worker {
768*35238bceSAndroid Build Coastguard Worker "r32i",
769*35238bceSAndroid Build Coastguard Worker GL_R32I,
770*35238bceSAndroid Build Coastguard Worker },
771*35238bceSAndroid Build Coastguard Worker {
772*35238bceSAndroid Build Coastguard Worker "r8ui",
773*35238bceSAndroid Build Coastguard Worker GL_R8UI,
774*35238bceSAndroid Build Coastguard Worker },
775*35238bceSAndroid Build Coastguard Worker {
776*35238bceSAndroid Build Coastguard Worker "r16ui",
777*35238bceSAndroid Build Coastguard Worker GL_R16UI,
778*35238bceSAndroid Build Coastguard Worker },
779*35238bceSAndroid Build Coastguard Worker {
780*35238bceSAndroid Build Coastguard Worker "r32ui",
781*35238bceSAndroid Build Coastguard Worker GL_R32UI,
782*35238bceSAndroid Build Coastguard Worker },
783*35238bceSAndroid Build Coastguard Worker {
784*35238bceSAndroid Build Coastguard Worker "rg8",
785*35238bceSAndroid Build Coastguard Worker GL_RG8,
786*35238bceSAndroid Build Coastguard Worker },
787*35238bceSAndroid Build Coastguard Worker {
788*35238bceSAndroid Build Coastguard Worker "rg16f",
789*35238bceSAndroid Build Coastguard Worker GL_RG16F,
790*35238bceSAndroid Build Coastguard Worker },
791*35238bceSAndroid Build Coastguard Worker {
792*35238bceSAndroid Build Coastguard Worker "rg32f",
793*35238bceSAndroid Build Coastguard Worker GL_RG32F,
794*35238bceSAndroid Build Coastguard Worker },
795*35238bceSAndroid Build Coastguard Worker {
796*35238bceSAndroid Build Coastguard Worker "rg8i",
797*35238bceSAndroid Build Coastguard Worker GL_RG8I,
798*35238bceSAndroid Build Coastguard Worker },
799*35238bceSAndroid Build Coastguard Worker {
800*35238bceSAndroid Build Coastguard Worker "rg16i",
801*35238bceSAndroid Build Coastguard Worker GL_RG16I,
802*35238bceSAndroid Build Coastguard Worker },
803*35238bceSAndroid Build Coastguard Worker {
804*35238bceSAndroid Build Coastguard Worker "rg32i",
805*35238bceSAndroid Build Coastguard Worker GL_RG32I,
806*35238bceSAndroid Build Coastguard Worker },
807*35238bceSAndroid Build Coastguard Worker {
808*35238bceSAndroid Build Coastguard Worker "rg8ui",
809*35238bceSAndroid Build Coastguard Worker GL_RG8UI,
810*35238bceSAndroid Build Coastguard Worker },
811*35238bceSAndroid Build Coastguard Worker {
812*35238bceSAndroid Build Coastguard Worker "rg16ui",
813*35238bceSAndroid Build Coastguard Worker GL_RG16UI,
814*35238bceSAndroid Build Coastguard Worker },
815*35238bceSAndroid Build Coastguard Worker {
816*35238bceSAndroid Build Coastguard Worker "rg32ui",
817*35238bceSAndroid Build Coastguard Worker GL_RG32UI,
818*35238bceSAndroid Build Coastguard Worker },
819*35238bceSAndroid Build Coastguard Worker {
820*35238bceSAndroid Build Coastguard Worker "rgba8",
821*35238bceSAndroid Build Coastguard Worker GL_RGBA8,
822*35238bceSAndroid Build Coastguard Worker },
823*35238bceSAndroid Build Coastguard Worker {
824*35238bceSAndroid Build Coastguard Worker "rgba16f",
825*35238bceSAndroid Build Coastguard Worker GL_RGBA16F,
826*35238bceSAndroid Build Coastguard Worker },
827*35238bceSAndroid Build Coastguard Worker {
828*35238bceSAndroid Build Coastguard Worker "rgba32f",
829*35238bceSAndroid Build Coastguard Worker GL_RGBA32F,
830*35238bceSAndroid Build Coastguard Worker },
831*35238bceSAndroid Build Coastguard Worker {
832*35238bceSAndroid Build Coastguard Worker "rgba8i",
833*35238bceSAndroid Build Coastguard Worker GL_RGBA8I,
834*35238bceSAndroid Build Coastguard Worker },
835*35238bceSAndroid Build Coastguard Worker {
836*35238bceSAndroid Build Coastguard Worker "rgba16i",
837*35238bceSAndroid Build Coastguard Worker GL_RGBA16I,
838*35238bceSAndroid Build Coastguard Worker },
839*35238bceSAndroid Build Coastguard Worker {
840*35238bceSAndroid Build Coastguard Worker "rgba32i",
841*35238bceSAndroid Build Coastguard Worker GL_RGBA32I,
842*35238bceSAndroid Build Coastguard Worker },
843*35238bceSAndroid Build Coastguard Worker {
844*35238bceSAndroid Build Coastguard Worker "rgba8ui",
845*35238bceSAndroid Build Coastguard Worker GL_RGBA8UI,
846*35238bceSAndroid Build Coastguard Worker },
847*35238bceSAndroid Build Coastguard Worker {
848*35238bceSAndroid Build Coastguard Worker "rgba16ui",
849*35238bceSAndroid Build Coastguard Worker GL_RGBA16UI,
850*35238bceSAndroid Build Coastguard Worker },
851*35238bceSAndroid Build Coastguard Worker {
852*35238bceSAndroid Build Coastguard Worker "rgba32ui",
853*35238bceSAndroid Build Coastguard Worker GL_RGBA32UI,
854*35238bceSAndroid Build Coastguard Worker }};
855*35238bceSAndroid Build Coastguard Worker
856*35238bceSAndroid Build Coastguard Worker for (int formatNdx = 0; formatNdx < DE_LENGTH_OF_ARRAY(bufferColorFormats); formatNdx++)
857*35238bceSAndroid Build Coastguard Worker {
858*35238bceSAndroid Build Coastguard Worker uint32_t internalFormat = bufferColorFormats[formatNdx].internalFormat;
859*35238bceSAndroid Build Coastguard Worker string nameBase = bufferColorFormats[formatNdx].name;
860*35238bceSAndroid Build Coastguard Worker string descriptionBase = glu::getTextureFormatName(internalFormat);
861*35238bceSAndroid Build Coastguard Worker
862*35238bceSAndroid Build Coastguard Worker sizedBufferGroup->addChild(
863*35238bceSAndroid Build Coastguard Worker new TextureBufferFormatCase(m_context, m_context.getRenderContext(), (nameBase + "_pot").c_str(),
864*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_BUFFER").c_str(), internalFormat, 64));
865*35238bceSAndroid Build Coastguard Worker sizedBufferGroup->addChild(
866*35238bceSAndroid Build Coastguard Worker new TextureBufferFormatCase(m_context, m_context.getRenderContext(), (nameBase + "_npot").c_str(),
867*35238bceSAndroid Build Coastguard Worker (descriptionBase + ", GL_TEXTURE_BUFFER").c_str(), internalFormat, 112));
868*35238bceSAndroid Build Coastguard Worker }
869*35238bceSAndroid Build Coastguard Worker }
870*35238bceSAndroid Build Coastguard Worker
871*35238bceSAndroid Build Coastguard Worker } // namespace Functional
872*35238bceSAndroid Build Coastguard Worker } // namespace gles31
873*35238bceSAndroid Build Coastguard Worker } // namespace deqp
874