1 /*------------------------------------------------------------------------- 2 * drawElements Quality Program EGL Module 3 * --------------------------------------- 4 * 5 * Copyright 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 *//*! 20 * \file 21 * \brief EGL tests 22 *//*--------------------------------------------------------------------*/ 23 24 #include "teglConfigList.hpp" 25 #include "tcuEgl.hpp" 26 #include "tcuTestLog.hpp" 27 #include "egluStrUtil.hpp" 28 #include "deStringUtil.hpp" 29 30 #include <vector> 31 32 using std::vector; 33 34 namespace deqp 35 { 36 namespace egl 37 { 38 39 ConfigList::ConfigList (EglTestContext& eglTestCtx) 40 : TestCase(eglTestCtx, "configs", "Output the list of configs from EGL") 41 42 { 43 } 44 45 ConfigList::~ConfigList (void) 46 { 47 } 48 49 void ConfigList::init (void) 50 { 51 } 52 53 void ConfigList::deinit (void) 54 { 55 } 56 57 tcu::TestNode::IterateResult ConfigList::iterate (void) 58 { 59 tcu::TestLog& log = m_testCtx.getLog(); 60 EGLDisplay display = m_eglTestCtx.getDisplay().getEGLDisplay(); 61 vector<EGLConfig> configs; 62 63 // \todo [2011-03-23 pyry] Check error codes! 64 65 // \todo [kalle 10/08/2010] Get EGL version. 66 67 m_eglTestCtx.getDisplay().getConfigs(configs); 68 69 log.startEglConfigSet("EGL-configs", "List of all EGL configs"); 70 71 // \todo [kalle 10/08/2010] Add validity checks for the values? 72 // \todo [kalle 10/08/2010] Adapt for different EGL versions 73 74 for (int i = 0; i < (int)configs.size(); i++) 75 { 76 qpEglConfigInfo info; 77 EGLint val = 0; 78 79 eglGetConfigAttrib(display, configs[i], EGL_BUFFER_SIZE, &val); 80 info.bufferSize = val; 81 82 eglGetConfigAttrib(display, configs[i], EGL_RED_SIZE, &val); 83 info.redSize = val; 84 85 eglGetConfigAttrib(display, configs[i], EGL_GREEN_SIZE, &val); 86 info.greenSize = val; 87 88 eglGetConfigAttrib(display, configs[i], EGL_BLUE_SIZE, &val); 89 info.blueSize = val; 90 91 eglGetConfigAttrib(display, configs[i], EGL_LUMINANCE_SIZE, &val); 92 info.luminanceSize = val; 93 94 eglGetConfigAttrib(display, configs[i], EGL_ALPHA_SIZE, &val); 95 info.alphaSize = val; 96 97 eglGetConfigAttrib(display, configs[i], EGL_ALPHA_MASK_SIZE, &val); 98 info.alphaMaskSize = val; 99 100 eglGetConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGB, &val); 101 info.bindToTextureRGB = val == EGL_TRUE ? DE_TRUE : DE_FALSE; 102 103 eglGetConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGBA, &val); 104 info.bindToTextureRGBA = val == EGL_TRUE ? DE_TRUE : DE_FALSE; 105 106 eglGetConfigAttrib(display, configs[i], EGL_COLOR_BUFFER_TYPE, &val); 107 std::string colorBufferType = de::toString(eglu::getColorBufferTypeStr(val)); 108 info.colorBufferType = colorBufferType.c_str(); 109 110 eglGetConfigAttrib(display, configs[i], EGL_CONFIG_CAVEAT, &val); 111 std::string caveat = de::toString(eglu::getConfigCaveatStr(val)); 112 info.configCaveat = caveat.c_str(); 113 114 eglGetConfigAttrib(display, configs[i], EGL_CONFIG_ID, &val); 115 info.configID = val; 116 117 eglGetConfigAttrib(display, configs[i], EGL_CONFORMANT, &val); 118 std::string conformant = de::toString(eglu::getAPIBitsStr(val)); 119 info.conformant = conformant.c_str(); 120 121 eglGetConfigAttrib(display, configs[i], EGL_DEPTH_SIZE, &val); 122 info.depthSize = val; 123 124 eglGetConfigAttrib(display, configs[i], EGL_LEVEL, &val); 125 info.level = val; 126 127 eglGetConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_WIDTH, &val); 128 info.maxPBufferWidth = val; 129 130 eglGetConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_HEIGHT, &val); 131 info.maxPBufferHeight = val; 132 133 eglGetConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_PIXELS, &val); 134 info.maxPBufferPixels = val; 135 136 eglGetConfigAttrib(display, configs[i], EGL_MAX_SWAP_INTERVAL, &val); 137 info.maxSwapInterval = val; 138 139 eglGetConfigAttrib(display, configs[i], EGL_MIN_SWAP_INTERVAL, &val); 140 info.minSwapInterval = val; 141 142 eglGetConfigAttrib(display, configs[i], EGL_NATIVE_RENDERABLE, &val); 143 info.nativeRenderable = val == EGL_TRUE ? DE_TRUE : DE_FALSE; 144 145 eglGetConfigAttrib(display, configs[i], EGL_RENDERABLE_TYPE, &val); 146 std::string renderableTypes = de::toString(eglu::getAPIBitsStr(val)); 147 info.renderableType = renderableTypes.c_str(); 148 149 eglGetConfigAttrib(display, configs[i], EGL_SAMPLE_BUFFERS, &val); 150 info.sampleBuffers = val; 151 152 eglGetConfigAttrib(display, configs[i], EGL_SAMPLES, &val); 153 info.samples = val; 154 155 eglGetConfigAttrib(display, configs[i], EGL_STENCIL_SIZE, &val); 156 info.stencilSize = val; 157 158 eglGetConfigAttrib(display, configs[i], EGL_SURFACE_TYPE, &val); 159 std::string surfaceTypes = de::toString(eglu::getSurfaceBitsStr(val)); 160 info.surfaceTypes = surfaceTypes.c_str(); 161 162 eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_TYPE, &val); 163 std::string transparentType = de::toString(eglu::getTransparentTypeStr(val)); 164 info.transparentType = transparentType.c_str(); 165 166 eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_RED_VALUE, &val); 167 info.transparentRedValue = val; 168 169 eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_GREEN_VALUE, &val); 170 info.transparentGreenValue = val; 171 172 eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_BLUE_VALUE, &val); 173 info.transparentBlueValue = val; 174 175 log.writeEglConfig(&info); 176 } 177 log.endEglConfigSet(); 178 179 getTestContext().setTestResult(QP_TEST_RESULT_PASS, ""); 180 181 return TestNode::STOP; 182 } 183 184 } // egl 185 } // deqp 186