13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program EGL Module 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * --------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief EGL tests 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "teglConfigList.hpp" 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTestLog.hpp" 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluStrUtil.hpp" 273c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "egluUtil.hpp" 283c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "eglwLibrary.hpp" 293c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "eglwEnums.hpp" 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deStringUtil.hpp" 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <vector> 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace egl 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 393c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosusing std::vector; 403c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosusing namespace eglw; 413c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 423c827367444ee418f129b2c238299f49d3264554Jarkko PoyryConfigList::ConfigList (EglTestContext& eglTestCtx) 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry : TestCase(eglTestCtx, "configs", "Output the list of configs from EGL") 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 483c827367444ee418f129b2c238299f49d3264554Jarkko PoyryConfigList::~ConfigList (void) 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid ConfigList::init (void) 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid ConfigList::deinit (void) 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::TestNode::IterateResult ConfigList::iterate (void) 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 623c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const Library& egl = m_eglTestCtx.getLibrary(); 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry tcu::TestLog& log = m_testCtx.getLog(); 643c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos EGLDisplay display = eglu::getAndInitDisplay(m_eglTestCtx.getNativeDisplay()); 653c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos vector<EGLConfig> configs = eglu::getConfigs(egl, display); 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \todo [2011-03-23 pyry] Check error codes! 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \todo [kalle 10/08/2010] Get EGL version. 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry log.startEglConfigSet("EGL-configs", "List of all EGL configs"); 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \todo [kalle 10/08/2010] Add validity checks for the values? 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // \todo [kalle 10/08/2010] Adapt for different EGL versions 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry for (int i = 0; i < (int)configs.size(); i++) 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry qpEglConfigInfo info; 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry EGLint val = 0; 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 813c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_BUFFER_SIZE, &val); 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.bufferSize = val; 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 843c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_RED_SIZE, &val); 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.redSize = val; 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 873c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_GREEN_SIZE, &val); 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.greenSize = val; 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 903c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_BLUE_SIZE, &val); 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.blueSize = val; 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 933c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_LUMINANCE_SIZE, &val); 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.luminanceSize = val; 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 963c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_ALPHA_SIZE, &val); 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.alphaSize = val; 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 993c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_ALPHA_MASK_SIZE, &val); 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.alphaMaskSize = val; 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1023c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGB, &val); 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.bindToTextureRGB = val == EGL_TRUE ? DE_TRUE : DE_FALSE; 1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1053c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGBA, &val); 1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.bindToTextureRGBA = val == EGL_TRUE ? DE_TRUE : DE_FALSE; 1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1083c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_COLOR_BUFFER_TYPE, &val); 1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string colorBufferType = de::toString(eglu::getColorBufferTypeStr(val)); 1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.colorBufferType = colorBufferType.c_str(); 1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1123c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_CONFIG_CAVEAT, &val); 1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string caveat = de::toString(eglu::getConfigCaveatStr(val)); 1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.configCaveat = caveat.c_str(); 1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1163c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_CONFIG_ID, &val); 1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.configID = val; 1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1193c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_CONFORMANT, &val); 1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string conformant = de::toString(eglu::getAPIBitsStr(val)); 1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.conformant = conformant.c_str(); 1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1233c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_DEPTH_SIZE, &val); 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.depthSize = val; 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1263c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_LEVEL, &val); 1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.level = val; 1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1293c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_WIDTH, &val); 1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.maxPBufferWidth = val; 1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1323c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_HEIGHT, &val); 1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.maxPBufferHeight = val; 1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1353c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_PIXELS, &val); 1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.maxPBufferPixels = val; 1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1383c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_MAX_SWAP_INTERVAL, &val); 1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.maxSwapInterval = val; 1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1413c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_MIN_SWAP_INTERVAL, &val); 1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.minSwapInterval = val; 1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1443c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_NATIVE_RENDERABLE, &val); 1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.nativeRenderable = val == EGL_TRUE ? DE_TRUE : DE_FALSE; 1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1473c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_RENDERABLE_TYPE, &val); 1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string renderableTypes = de::toString(eglu::getAPIBitsStr(val)); 1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.renderableType = renderableTypes.c_str(); 1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1513c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_SAMPLE_BUFFERS, &val); 1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.sampleBuffers = val; 1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1543c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_SAMPLES, &val); 1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.samples = val; 1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1573c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_STENCIL_SIZE, &val); 1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.stencilSize = val; 1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1603c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_SURFACE_TYPE, &val); 1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string surfaceTypes = de::toString(eglu::getSurfaceBitsStr(val)); 1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.surfaceTypes = surfaceTypes.c_str(); 1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1643c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_TYPE, &val); 1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string transparentType = de::toString(eglu::getTransparentTypeStr(val)); 1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.transparentType = transparentType.c_str(); 1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1683c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_RED_VALUE, &val); 1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.transparentRedValue = val; 1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1713c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_GREEN_VALUE, &val); 1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.transparentGreenValue = val; 1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1743c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.getConfigAttrib(display, configs[i], EGL_TRANSPARENT_BLUE_VALUE, &val); 1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry info.transparentBlueValue = val; 1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry log.writeEglConfig(&info); 1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry } 1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry log.endEglConfigSet(); 1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1813c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos egl.terminate(display); 1823c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry getTestContext().setTestResult(QP_TEST_RESULT_PASS, ""); 1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry return TestNode::STOP; 1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} 1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // egl 1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp 190