1*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
2*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program EGL 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 EGL tests
22*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard Worker #include "teglConfigList.hpp"
25*35238bceSAndroid Build Coastguard Worker #include "tcuTestLog.hpp"
26*35238bceSAndroid Build Coastguard Worker #include "egluStrUtil.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "egluUtil.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "eglwLibrary.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "eglwEnums.hpp"
30*35238bceSAndroid Build Coastguard Worker #include "deStringUtil.hpp"
31*35238bceSAndroid Build Coastguard Worker
32*35238bceSAndroid Build Coastguard Worker #include <vector>
33*35238bceSAndroid Build Coastguard Worker
34*35238bceSAndroid Build Coastguard Worker namespace deqp
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker namespace egl
37*35238bceSAndroid Build Coastguard Worker {
38*35238bceSAndroid Build Coastguard Worker
39*35238bceSAndroid Build Coastguard Worker using std::vector;
40*35238bceSAndroid Build Coastguard Worker using namespace eglw;
41*35238bceSAndroid Build Coastguard Worker
ConfigList(EglTestContext & eglTestCtx)42*35238bceSAndroid Build Coastguard Worker ConfigList::ConfigList(EglTestContext &eglTestCtx)
43*35238bceSAndroid Build Coastguard Worker : TestCase(eglTestCtx, "configs", "Output the list of configs from EGL")
44*35238bceSAndroid Build Coastguard Worker
45*35238bceSAndroid Build Coastguard Worker {
46*35238bceSAndroid Build Coastguard Worker }
47*35238bceSAndroid Build Coastguard Worker
~ConfigList(void)48*35238bceSAndroid Build Coastguard Worker ConfigList::~ConfigList(void)
49*35238bceSAndroid Build Coastguard Worker {
50*35238bceSAndroid Build Coastguard Worker }
51*35238bceSAndroid Build Coastguard Worker
init(void)52*35238bceSAndroid Build Coastguard Worker void ConfigList::init(void)
53*35238bceSAndroid Build Coastguard Worker {
54*35238bceSAndroid Build Coastguard Worker }
55*35238bceSAndroid Build Coastguard Worker
deinit(void)56*35238bceSAndroid Build Coastguard Worker void ConfigList::deinit(void)
57*35238bceSAndroid Build Coastguard Worker {
58*35238bceSAndroid Build Coastguard Worker }
59*35238bceSAndroid Build Coastguard Worker
iterate(void)60*35238bceSAndroid Build Coastguard Worker tcu::TestNode::IterateResult ConfigList::iterate(void)
61*35238bceSAndroid Build Coastguard Worker {
62*35238bceSAndroid Build Coastguard Worker const Library &egl = m_eglTestCtx.getLibrary();
63*35238bceSAndroid Build Coastguard Worker tcu::TestLog &log = m_testCtx.getLog();
64*35238bceSAndroid Build Coastguard Worker EGLDisplay display = eglu::getAndInitDisplay(m_eglTestCtx.getNativeDisplay());
65*35238bceSAndroid Build Coastguard Worker vector<EGLConfig> configs = eglu::getConfigs(egl, display);
66*35238bceSAndroid Build Coastguard Worker
67*35238bceSAndroid Build Coastguard Worker // \todo [2011-03-23 pyry] Check error codes!
68*35238bceSAndroid Build Coastguard Worker
69*35238bceSAndroid Build Coastguard Worker // \todo [kalle 10/08/2010] Get EGL version.
70*35238bceSAndroid Build Coastguard Worker
71*35238bceSAndroid Build Coastguard Worker log.startEglConfigSet("EGL-configs", "List of all EGL configs");
72*35238bceSAndroid Build Coastguard Worker
73*35238bceSAndroid Build Coastguard Worker // \todo [kalle 10/08/2010] Add validity checks for the values?
74*35238bceSAndroid Build Coastguard Worker // \todo [kalle 10/08/2010] Adapt for different EGL versions
75*35238bceSAndroid Build Coastguard Worker
76*35238bceSAndroid Build Coastguard Worker for (int i = 0; i < (int)configs.size(); i++)
77*35238bceSAndroid Build Coastguard Worker {
78*35238bceSAndroid Build Coastguard Worker qpEglConfigInfo info;
79*35238bceSAndroid Build Coastguard Worker EGLint val = 0;
80*35238bceSAndroid Build Coastguard Worker
81*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_BUFFER_SIZE, &val);
82*35238bceSAndroid Build Coastguard Worker info.bufferSize = val;
83*35238bceSAndroid Build Coastguard Worker
84*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_RED_SIZE, &val);
85*35238bceSAndroid Build Coastguard Worker info.redSize = val;
86*35238bceSAndroid Build Coastguard Worker
87*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_GREEN_SIZE, &val);
88*35238bceSAndroid Build Coastguard Worker info.greenSize = val;
89*35238bceSAndroid Build Coastguard Worker
90*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_BLUE_SIZE, &val);
91*35238bceSAndroid Build Coastguard Worker info.blueSize = val;
92*35238bceSAndroid Build Coastguard Worker
93*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_LUMINANCE_SIZE, &val);
94*35238bceSAndroid Build Coastguard Worker info.luminanceSize = val;
95*35238bceSAndroid Build Coastguard Worker
96*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_ALPHA_SIZE, &val);
97*35238bceSAndroid Build Coastguard Worker info.alphaSize = val;
98*35238bceSAndroid Build Coastguard Worker
99*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_ALPHA_MASK_SIZE, &val);
100*35238bceSAndroid Build Coastguard Worker info.alphaMaskSize = val;
101*35238bceSAndroid Build Coastguard Worker
102*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGB, &val);
103*35238bceSAndroid Build Coastguard Worker info.bindToTextureRGB = val == EGL_TRUE ? true : false;
104*35238bceSAndroid Build Coastguard Worker
105*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGBA, &val);
106*35238bceSAndroid Build Coastguard Worker info.bindToTextureRGBA = val == EGL_TRUE ? true : false;
107*35238bceSAndroid Build Coastguard Worker
108*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_COLOR_BUFFER_TYPE, &val);
109*35238bceSAndroid Build Coastguard Worker std::string colorBufferType = de::toString(eglu::getColorBufferTypeStr(val));
110*35238bceSAndroid Build Coastguard Worker info.colorBufferType = colorBufferType.c_str();
111*35238bceSAndroid Build Coastguard Worker
112*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_CONFIG_CAVEAT, &val);
113*35238bceSAndroid Build Coastguard Worker std::string caveat = de::toString(eglu::getConfigCaveatStr(val));
114*35238bceSAndroid Build Coastguard Worker info.configCaveat = caveat.c_str();
115*35238bceSAndroid Build Coastguard Worker
116*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_CONFIG_ID, &val);
117*35238bceSAndroid Build Coastguard Worker info.configID = val;
118*35238bceSAndroid Build Coastguard Worker
119*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_CONFORMANT, &val);
120*35238bceSAndroid Build Coastguard Worker std::string conformant = de::toString(eglu::getAPIBitsStr(val));
121*35238bceSAndroid Build Coastguard Worker info.conformant = conformant.c_str();
122*35238bceSAndroid Build Coastguard Worker
123*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_DEPTH_SIZE, &val);
124*35238bceSAndroid Build Coastguard Worker info.depthSize = val;
125*35238bceSAndroid Build Coastguard Worker
126*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_LEVEL, &val);
127*35238bceSAndroid Build Coastguard Worker info.level = val;
128*35238bceSAndroid Build Coastguard Worker
129*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_WIDTH, &val);
130*35238bceSAndroid Build Coastguard Worker info.maxPBufferWidth = val;
131*35238bceSAndroid Build Coastguard Worker
132*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_HEIGHT, &val);
133*35238bceSAndroid Build Coastguard Worker info.maxPBufferHeight = val;
134*35238bceSAndroid Build Coastguard Worker
135*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_PIXELS, &val);
136*35238bceSAndroid Build Coastguard Worker info.maxPBufferPixels = val;
137*35238bceSAndroid Build Coastguard Worker
138*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_MAX_SWAP_INTERVAL, &val);
139*35238bceSAndroid Build Coastguard Worker info.maxSwapInterval = val;
140*35238bceSAndroid Build Coastguard Worker
141*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_MIN_SWAP_INTERVAL, &val);
142*35238bceSAndroid Build Coastguard Worker info.minSwapInterval = val;
143*35238bceSAndroid Build Coastguard Worker
144*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_NATIVE_RENDERABLE, &val);
145*35238bceSAndroid Build Coastguard Worker info.nativeRenderable = val == EGL_TRUE ? true : false;
146*35238bceSAndroid Build Coastguard Worker
147*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_RENDERABLE_TYPE, &val);
148*35238bceSAndroid Build Coastguard Worker std::string renderableTypes = de::toString(eglu::getAPIBitsStr(val));
149*35238bceSAndroid Build Coastguard Worker info.renderableType = renderableTypes.c_str();
150*35238bceSAndroid Build Coastguard Worker
151*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_SAMPLE_BUFFERS, &val);
152*35238bceSAndroid Build Coastguard Worker info.sampleBuffers = val;
153*35238bceSAndroid Build Coastguard Worker
154*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_SAMPLES, &val);
155*35238bceSAndroid Build Coastguard Worker info.samples = val;
156*35238bceSAndroid Build Coastguard Worker
157*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_STENCIL_SIZE, &val);
158*35238bceSAndroid Build Coastguard Worker info.stencilSize = val;
159*35238bceSAndroid Build Coastguard Worker
160*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_SURFACE_TYPE, &val);
161*35238bceSAndroid Build Coastguard Worker std::string surfaceTypes = de::toString(eglu::getSurfaceBitsStr(val));
162*35238bceSAndroid Build Coastguard Worker info.surfaceTypes = surfaceTypes.c_str();
163*35238bceSAndroid Build Coastguard Worker
164*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_TYPE, &val);
165*35238bceSAndroid Build Coastguard Worker std::string transparentType = de::toString(eglu::getTransparentTypeStr(val));
166*35238bceSAndroid Build Coastguard Worker info.transparentType = transparentType.c_str();
167*35238bceSAndroid Build Coastguard Worker
168*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_RED_VALUE, &val);
169*35238bceSAndroid Build Coastguard Worker info.transparentRedValue = val;
170*35238bceSAndroid Build Coastguard Worker
171*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_GREEN_VALUE, &val);
172*35238bceSAndroid Build Coastguard Worker info.transparentGreenValue = val;
173*35238bceSAndroid Build Coastguard Worker
174*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_BLUE_VALUE, &val);
175*35238bceSAndroid Build Coastguard Worker info.transparentBlueValue = val;
176*35238bceSAndroid Build Coastguard Worker
177*35238bceSAndroid Build Coastguard Worker egl.getConfigAttrib(display, configs[i], EGL_RECORDABLE_ANDROID, &val);
178*35238bceSAndroid Build Coastguard Worker info.recordableAndroid = val == EGL_TRUE ? true : false;
179*35238bceSAndroid Build Coastguard Worker
180*35238bceSAndroid Build Coastguard Worker log.writeEglConfig(&info);
181*35238bceSAndroid Build Coastguard Worker }
182*35238bceSAndroid Build Coastguard Worker log.endEglConfigSet();
183*35238bceSAndroid Build Coastguard Worker
184*35238bceSAndroid Build Coastguard Worker egl.terminate(display);
185*35238bceSAndroid Build Coastguard Worker
186*35238bceSAndroid Build Coastguard Worker getTestContext().setTestResult(QP_TEST_RESULT_PASS, "");
187*35238bceSAndroid Build Coastguard Worker
188*35238bceSAndroid Build Coastguard Worker return TestNode::STOP;
189*35238bceSAndroid Build Coastguard Worker }
190*35238bceSAndroid Build Coastguard Worker
191*35238bceSAndroid Build Coastguard Worker } // namespace egl
192*35238bceSAndroid Build Coastguard Worker } // namespace deqp
193