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 "tcuEgl.hpp"
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTestLog.hpp"
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluStrUtil.hpp"
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deStringUtil.hpp"
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <vector>
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing std::vector;
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace egl
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
393c827367444ee418f129b2c238299f49d3264554Jarkko PoyryConfigList::ConfigList (EglTestContext& eglTestCtx)
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: TestCase(eglTestCtx, "configs", "Output the list of configs from EGL")
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
453c827367444ee418f129b2c238299f49d3264554Jarkko PoyryConfigList::~ConfigList (void)
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid ConfigList::init (void)
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid ConfigList::deinit (void)
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyrytcu::TestNode::IterateResult ConfigList::iterate (void)
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	tcu::TestLog&		log			= m_testCtx.getLog();
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	EGLDisplay			display		= m_eglTestCtx.getDisplay().getEGLDisplay();
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	vector<EGLConfig>	configs;
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	// \todo [2011-03-23 pyry] Check error codes!
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	// \todo [kalle 10/08/2010] Get EGL version.
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	m_eglTestCtx.getDisplay().getConfigs(configs);
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	log.startEglConfigSet("EGL-configs", "List of all EGL configs");
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	// \todo [kalle 10/08/2010] Add validity checks for the values?
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	// \todo [kalle 10/08/2010] Adapt for different EGL versions
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	for (int i = 0; i < (int)configs.size(); i++)
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		qpEglConfigInfo info;
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		EGLint val = 0;
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_BUFFER_SIZE, &val);
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.bufferSize = val;
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_RED_SIZE, &val);
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.redSize = val;
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_GREEN_SIZE, &val);
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.greenSize = val;
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_BLUE_SIZE, &val);
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.blueSize = val;
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_LUMINANCE_SIZE, &val);
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.luminanceSize = val;
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_ALPHA_SIZE, &val);
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.alphaSize = val;
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_ALPHA_MASK_SIZE, &val);
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.alphaMaskSize = val;
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGB, &val);
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.bindToTextureRGB = val == EGL_TRUE ? DE_TRUE : DE_FALSE;
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_BIND_TO_TEXTURE_RGBA, &val);
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.bindToTextureRGBA = val == EGL_TRUE ? DE_TRUE : DE_FALSE;
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_COLOR_BUFFER_TYPE, &val);
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::string colorBufferType = de::toString(eglu::getColorBufferTypeStr(val));
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.colorBufferType = colorBufferType.c_str();
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_CONFIG_CAVEAT, &val);
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::string caveat = de::toString(eglu::getConfigCaveatStr(val));
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.configCaveat = caveat.c_str();
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_CONFIG_ID, &val);
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.configID = val;
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_CONFORMANT, &val);
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::string conformant = de::toString(eglu::getAPIBitsStr(val));
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.conformant = conformant.c_str();
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_DEPTH_SIZE, &val);
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.depthSize = val;
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_LEVEL, &val);
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.level = val;
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_WIDTH, &val);
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.maxPBufferWidth = val;
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_HEIGHT, &val);
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.maxPBufferHeight = val;
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_MAX_PBUFFER_PIXELS, &val);
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.maxPBufferPixels = val;
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_MAX_SWAP_INTERVAL, &val);
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.maxSwapInterval = val;
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_MIN_SWAP_INTERVAL, &val);
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.minSwapInterval = val;
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_NATIVE_RENDERABLE, &val);
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.nativeRenderable = val == EGL_TRUE ? DE_TRUE : DE_FALSE;
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_RENDERABLE_TYPE, &val);
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::string renderableTypes = de::toString(eglu::getAPIBitsStr(val));
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.renderableType = renderableTypes.c_str();
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_SAMPLE_BUFFERS, &val);
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.sampleBuffers = val;
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_SAMPLES, &val);
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.samples = val;
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_STENCIL_SIZE, &val);
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.stencilSize = val;
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_SURFACE_TYPE, &val);
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::string surfaceTypes = de::toString(eglu::getSurfaceBitsStr(val));
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.surfaceTypes = surfaceTypes.c_str();
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_TYPE, &val);
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::string transparentType = de::toString(eglu::getTransparentTypeStr(val));
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.transparentType = transparentType.c_str();
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_RED_VALUE, &val);
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.transparentRedValue = val;
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_GREEN_VALUE, &val);
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.transparentGreenValue = val;
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		eglGetConfigAttrib(display, configs[i], EGL_TRANSPARENT_BLUE_VALUE, &val);
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		info.transparentBlueValue = val;
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		log.writeEglConfig(&info);
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	log.endEglConfigSet();
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	getTestContext().setTestResult(QP_TEST_RESULT_PASS, "");
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	return TestNode::STOP;
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // egl
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp
186