19e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry/*------------------------------------------------------------------------- 29e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * drawElements Quality Program OpenGL ES 3.1 Module 39e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * ------------------------------------------------- 49e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * 59e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * Copyright 2014 The Android Open Source Project 69e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * 79e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * Licensed under the Apache License, Version 2.0 (the "License"); 89e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * you may not use this file except in compliance with the License. 99e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * You may obtain a copy of the License at 109e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * 119e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * http://www.apache.org/licenses/LICENSE-2.0 129e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * 139e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * Unless required by applicable law or agreed to in writing, software 149e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * distributed under the License is distributed on an "AS IS" BASIS, 159e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 169e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * See the License for the specific language governing permissions and 179e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * limitations under the License. 189e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * 199e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry *//*! 209e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * \file 219e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry * \brief ANDROID_extension_pack_es31a tests 229e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry *//*--------------------------------------------------------------------*/ 239e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 249e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "es31fAndroidExtensionPackES31ATests.hpp" 259e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "glsStateQueryUtil.hpp" 269e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "glsShaderLibrary.hpp" 279e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "tcuTestLog.hpp" 289e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "gluCallLogWrapper.hpp" 299e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "gluContextInfo.hpp" 309e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "gluStrUtil.hpp" 319e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "glwFunctions.hpp" 329e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "glwEnums.hpp" 339e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry#include "deStringUtil.hpp" 349e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 359e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrynamespace deqp 369e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 379e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrynamespace gles31 389e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 399e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrynamespace Functional 409e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 419e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrynamespace 429e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 439e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 449e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrystatic std::string genExtensionTestName (const char* extensionName) 459e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 469e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry DE_ASSERT(deStringBeginsWith(extensionName, "GL_")); 479e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry return de::toLower(std::string(extensionName + 3)); 489e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 499e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 509e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryclass ExtensionPackTestCase : public TestCase 519e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 529e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrypublic: 539e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry ExtensionPackTestCase (Context& context, const char* name, const char* description); 549e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 559e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryprotected: 569e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry void init (void); 579e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry}; 589e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 599e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyryExtensionPackTestCase::ExtensionPackTestCase (Context& context, const char* name, const char* description) 609e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry : TestCase (context, name, description) 619e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 629e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 639e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 649e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryvoid ExtensionPackTestCase::init (void) 659e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 669e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry if (!m_context.getContextInfo().isExtensionSupported("GL_ANDROID_extension_pack_es31a")) 679e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry throw tcu::NotSupportedError("Test requires GL_ANDROID_extension_pack_es31a extension"); 689e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 699e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 709e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryclass ImplementationLimitCase : public ExtensionPackTestCase 719e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 729e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrypublic: 739e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry ImplementationLimitCase (Context& context, const char* name, const char* description, glw::GLenum target, int limit); 749e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 759e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryprivate: 769e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry IterateResult iterate (void); 779e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 789e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const glw::GLenum m_target; 799e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const int m_limit; 809e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry}; 819e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 829e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyryImplementationLimitCase::ImplementationLimitCase (Context& context, const char* name, const char* description, glw::GLenum target, int limit) 839e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry : ExtensionPackTestCase (context, name, description) 849e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry , m_target (target) 859e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry , m_limit (limit) 869e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 879e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 889e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 899e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyryImplementationLimitCase::IterateResult ImplementationLimitCase::iterate (void) 909e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 919e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry using namespace gls::StateQueryUtil; 929e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 939e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry glu::CallLogWrapper gl (m_context.getRenderContext().getFunctions(), m_testCtx.getLog()); 949e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry StateQueryMemoryWriteGuard<glw::GLint> result; 959e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 969e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass"); 979e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.getLog() 989e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::Message 999e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << "Querying " << glu::getGettableStateName(m_target) << ", expecting at least " << m_limit 1009e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::EndMessage; 1019e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1029e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry gl.enableLogging(true); 1039e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry gl.glGetIntegerv(m_target, &result); 1049e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry GLU_EXPECT_NO_ERROR(gl.glGetError(), "implementation limit query failed"); 1059e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1069e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry if (result.verifyValidity(m_testCtx) && result < m_limit) 1079e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1089e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.getLog() 1099e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::Message 1109e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << "// ERROR: Got " << result << ", expected at least " << m_limit 1119e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::EndMessage; 1129e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1139e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Too low implementation limit"); 1149e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 1159e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1169e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry return STOP; 1179e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 1189e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1199e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryclass SubExtensionCase : public ExtensionPackTestCase 1209e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 1219e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyrypublic: 1229e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry SubExtensionCase (Context& context, const char* name, const char* description, const char* extension); 1239e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1249e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryprivate: 1259e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry IterateResult iterate (void); 1269e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1279e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const std::string m_extension; 1289e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry}; 1299e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1309e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyrySubExtensionCase::SubExtensionCase (Context& context, const char* name, const char* description, const char* extension) 1319e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry : ExtensionPackTestCase (context, name, description) 1329e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry , m_extension (extension) 1339e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 1349e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 1359e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1369e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyrySubExtensionCase::IterateResult SubExtensionCase::iterate (void) 1379e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 1389e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.getLog() 1399e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::Message 1409e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << "Verifying that extension \"" << m_extension << "\" is supported." 1419e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::EndMessage; 1429e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1439e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry if (m_context.getContextInfo().isExtensionSupported(m_extension.c_str())) 1449e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1459e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.getLog() 1469e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::Message 1479e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << "Extension is supported." 1489e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::EndMessage; 1499e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1509e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass"); 1519e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 1529e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry else 1539e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1549e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.getLog() 1559e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::Message 1569e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << "Error, extension is not supported." 1579e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry << tcu::TestLog::EndMessage; 1589e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1599e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Required extension not supported"); 1609e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 1619e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1629e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry return STOP; 1639e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 1649e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1659e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} //anonymous 1669e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1679e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyryAndroidExtensionPackES31ATests::AndroidExtensionPackES31ATests (Context& context) 1689e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry : TestCaseGroup(context, "android_extension_pack", "ANDROID_extension_pack_es31a extension tests") 1699e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 1709e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 1719e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1729e574351a4724975bf91b1e74ccae8786d711386Jarkko PöyryAndroidExtensionPackES31ATests::~AndroidExtensionPackES31ATests (void) 1739e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 1749e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 1759e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1769e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyryvoid AndroidExtensionPackES31ATests::init (void) 1779e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry{ 1789e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry // .limits 1799e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1809e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry static const struct 1819e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1829e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const char* name; 1839e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry glw::GLenum target; 1849e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry int limit; 1859e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } limits[] = 1869e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1879e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1889e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "max_fragment_atomic_counter_buffers", 1899e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS, 1909e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 1 1919e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry }, 1929e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1939e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "max_fragment_atomic_counters", 1949e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry GL_MAX_FRAGMENT_ATOMIC_COUNTERS, 1959e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 8 1969e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry }, 1979e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 1989e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "max_fragment_image_uniforms", 1999e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry GL_MAX_FRAGMENT_IMAGE_UNIFORMS, 2009e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 4 2019e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry }, 2029e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 2039e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "max_fragment_shader_storage_blocks", 2049e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, 2059e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 4 2069e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry }, 2079e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry }; 2089e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2099e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry tcu::TestCaseGroup* const group = new tcu::TestCaseGroup(m_testCtx, "limits", "Implementation limits"); 2109e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry addChild(group); 2119e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2129e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(limits); ++ndx) 2139e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry group->addChild(new ImplementationLimitCase(m_context, 2149e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry limits[ndx].name, 2159e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry (std::string() + "Check " + limits[ndx].name + " is at least " + de::toString(limits[ndx].limit)).c_str(), 2169e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry limits[ndx].target, 2179e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry limits[ndx].limit)); 2189e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 2199e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2209e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry // .extensions 2219e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 2229e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry static const char* const subExtensions[] = 2239e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 2249e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_KHR_debug", 2259e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_KHR_texture_compression_astc_ldr", 2269e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_KHR_blend_equation_advanced", 2279e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_OES_sample_shading", 2289e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_OES_sample_variables", 2299e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_OES_shader_image_atomic", 2309e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_OES_shader_multisample_interpolation", 2319e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_OES_texture_stencil8", 2329e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_OES_texture_storage_multisample_2d_array", 2339e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_copy_image", 2349e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_draw_buffers_indexed", 2359e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_geometry_shader", 2369e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_gpu_shader5", 2379e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_primitive_bounding_box", 2389e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_shader_io_blocks", 2399e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_tessellation_shader", 2409e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_texture_border_clamp", 2419e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_texture_buffer", 2429e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_texture_cube_map_array", 2439e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry "GL_EXT_texture_sRGB_decode", 2449e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry }; 2459e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2469e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry tcu::TestCaseGroup* const group = new tcu::TestCaseGroup(m_testCtx, "extensions", "Required extensions"); 2479e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry addChild(group); 2489e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2499e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(subExtensions); ++ndx) 2509e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 2519e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const std::string name = genExtensionTestName(subExtensions[ndx]); 2529e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const std::string description = "Check that extension " + name + " is supported if extension pack is supported"; 2539e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry group->addChild(new SubExtensionCase(m_context, name.c_str(), description.c_str(), subExtensions[ndx])); 2549e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 2559e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 2569e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2579e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry // .shaders 2589e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry { 2599e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry gls::ShaderLibrary shaderLibrary (m_testCtx, m_context.getRenderContext(), m_context.getContextInfo()); 2609e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry const std::vector<tcu::TestNode*>& children = shaderLibrary.loadShaderFile("shaders/android_extension_pack.test"); 2619e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry tcu::TestCaseGroup* const group = new tcu::TestCaseGroup(m_testCtx, "shaders", "Shader tests", children); 2629e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2639e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry addChild(group); 2649e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry } 2659e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} 2669e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry 2679e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} // Functional 2689e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} // gles31 2699e574351a4724975bf91b1e74ccae8786d711386Jarkko Pöyry} // deqp 270