13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*-------------------------------------------------------------------------
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL ES 3.0 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 Internal Format Query tests.
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "es3fInternalFormatQueryTests.hpp"
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glsStateQueryUtil.hpp"
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "es3fApiCase.hpp"
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluRenderContext.hpp"
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwEnums.hpp"
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glwFunctions.hpp"
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deMath.h"
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing namespace glw; // GLint and other GL types
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyryusing deqp::gls::StateQueryUtil::StateQueryMemoryWriteGuard;
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace gles3
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace Functional
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass SamplesCase : public ApiCase
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	SamplesCase(Context& context, const char* name, const char* description, GLenum internalFormat, bool isIntegerInternalFormat)
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		: ApiCase					(context, name, description)
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		, m_internalFormat			(internalFormat)
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		, m_isIntegerInternalFormat	(isIntegerInternalFormat)
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void test (void)
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		using tcu::TestLog;
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		StateQueryMemoryWriteGuard<GLint> sampleCounts;
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		glGetInternalformativ(GL_RENDERBUFFER, m_internalFormat, GL_NUM_SAMPLE_COUNTS, 1, &sampleCounts);
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expectError(GL_NO_ERROR);
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (!sampleCounts.verifyValidity(m_testCtx))
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return;
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		m_testCtx.getLog() << TestLog::Message << "// sample counts is " << sampleCounts << TestLog::EndMessage;
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (sampleCounts == 0)
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return;
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		std::vector<GLint> samples;
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		samples.resize(sampleCounts, -1);
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		glGetInternalformativ(GL_RENDERBUFFER, m_internalFormat, GL_SAMPLES, sampleCounts, &samples[0]);
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expectError(GL_NO_ERROR);
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		GLint prevSampleCount = 0;
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		GLint sampleCount = 0;
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		for (size_t ndx = 0; ndx < samples.size(); ++ndx, prevSampleCount = sampleCount)
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			sampleCount = samples[ndx];
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// sample count must be > 0
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (sampleCount <= 0)
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				m_testCtx.getLog() << TestLog::Message << "// ERROR: Expected sample count to be at least one; got " << sampleCount << TestLog::EndMessage;
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				if (m_testCtx.getTestResult() == QP_TEST_RESULT_PASS)
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "got invalid value");
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			// samples must be ordered descending
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (ndx != 0 && !(sampleCount < prevSampleCount))
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				m_testCtx.getLog() << TestLog::Message
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					<< "// ERROR: Expected sample count to be ordered in descending order;"
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					<< "got " << prevSampleCount << " at index " << (ndx - 1) << ", and " << sampleCount << " at index " << ndx << TestLog::EndMessage;
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				if (m_testCtx.getTestResult() == QP_TEST_RESULT_PASS)
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "got invalid order");
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1006548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry		if (!m_isIntegerInternalFormat)
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
1026548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry			// the maximum value in SAMPLES is guaranteed to be at least the value of MAX_SAMPLES
1036548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry			StateQueryMemoryWriteGuard<GLint> maxSamples;
1046548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry			glGetIntegerv(GL_MAX_SAMPLES, &maxSamples);
1056548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry			expectError(GL_NO_ERROR);
1066548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry
1076548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry			if (maxSamples.verifyValidity(m_testCtx))
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1096548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry				const GLint maximumFormatSampleCount = samples[0];
1106548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry				if (!(maximumFormatSampleCount >= maxSamples))
1116548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry				{
1126548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry					m_testCtx.getLog() << TestLog::Message << "// ERROR: Expected maximum value in SAMPLES (" << maximumFormatSampleCount << ") to be at least the value of MAX_SAMPLES (" << maxSamples << ")" << TestLog::EndMessage;
1136548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry					if (m_testCtx.getTestResult() == QP_TEST_RESULT_PASS)
1146548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry						m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "got invalid maximum sample count");
1156548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry				}
1166548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry		  }
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1216548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry	const GLenum	m_internalFormat;
1226548214158a4646849b06b5a3768a6d0a04e7246Jarkko Pöyry	const bool		m_isIntegerInternalFormat;
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass SamplesBufferSizeCase : public ApiCase
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	SamplesBufferSizeCase(Context& context, const char* name, const char* description, GLenum internalFormat)
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		: ApiCase			(context, name, description)
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		, m_internalFormat	(internalFormat)
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	void test (void)
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		using tcu::TestLog;
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		StateQueryMemoryWriteGuard<GLint> sampleCounts;
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		glGetInternalformativ(GL_RENDERBUFFER, m_internalFormat, GL_NUM_SAMPLE_COUNTS, 1, &sampleCounts);
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expectError(GL_NO_ERROR);
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (!sampleCounts.verifyValidity(m_testCtx))
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			return;
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// test with bufSize = 0
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		GLint queryTargetValue = -1;
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		glGetInternalformativ(GL_RENDERBUFFER, m_internalFormat, GL_NUM_SAMPLE_COUNTS, 0, &queryTargetValue);
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expectError(GL_NO_ERROR);
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		if (queryTargetValue != -1)
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			m_testCtx.getLog() << TestLog::Message << "// ERROR: Expected output variable not to be written to." << TestLog::EndMessage;
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			if (m_testCtx.getTestResult() == QP_TEST_RESULT_PASS)
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "got invalid write");
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	GLenum m_internalFormat;
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // anonymous
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1653c827367444ee418f129b2c238299f49d3264554Jarkko PoyryInternalFormatQueryTests::InternalFormatQueryTests (Context& context)
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	: TestCaseGroup(context, "internal_format", "Internal Format Query tests.")
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyryvoid InternalFormatQueryTests::init (void)
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const struct InternalFormat
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		const char*	name;
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		GLenum		format;
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		bool		isIntegerFormat;
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	} internalFormats[] =
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// color renderable and unsized
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// \note These unsized formats seem to allowed by the spec, but they are not useful in any way. (You can't create a renderbuffer with such internalFormat)
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba",					GL_RGBA,				false	},
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgb",					GL_RGB,					false	},
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// color renderable
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r8",						GL_R8,					false	},
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg8",					GL_RG8,					false	},
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgb8",					GL_RGB8,				false	},
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgb565",					GL_RGB565,				false	},
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba4",					GL_RGBA4,				false	},
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgb5_a1",				GL_RGB5_A1,				false	},
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba8",					GL_RGBA8,				false	},
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgb10_a2",				GL_RGB10_A2,			false	},
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgb10_a2ui",				GL_RGB10_A2UI,			true	},
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "srgb8_alpha8",			GL_SRGB8_ALPHA8,		false	},
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r8i",					GL_R8I,					true	},
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r8ui",					GL_R8UI,				true	},
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r16i",					GL_R16I,				true	},
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r16ui",					GL_R16UI,				true	},
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r32i",					GL_R32I,				true	},
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "r32ui",					GL_R32UI,				true	},
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg8i",					GL_RG8I,				true	},
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg8ui",					GL_RG8UI,				true	},
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg16i",					GL_RG16I,				true	},
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg16ui",					GL_RG16UI,				true	},
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg32i",					GL_RG32I,				true	},
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rg32ui",					GL_RG32UI,				true	},
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba8i",					GL_RGBA8I,				true	},
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba8ui",				GL_RGBA8UI,				true	},
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba16i",				GL_RGBA16I,				true	},
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba16ui",				GL_RGBA16UI,			true	},
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba32i",				GL_RGBA32I,				true	},
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "rgba32ui",				GL_RGBA32UI,			true	},
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// depth renderable
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "depth_component16",		GL_DEPTH_COMPONENT16,	false	},
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "depth_component24",		GL_DEPTH_COMPONENT24,	false	},
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "depth_component32f",		GL_DEPTH_COMPONENT32F,	false	},
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "depth24_stencil8",		GL_DEPTH24_STENCIL8,	false	},
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "depth32f_stencil8",		GL_DEPTH32F_STENCIL8,	false	},
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// stencil renderable
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{ "stencil_index8",			GL_STENCIL_INDEX8,		false	}
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// DEPTH24_STENCIL8,  duplicate
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// DEPTH32F_STENCIL8  duplicate
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	};
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(internalFormats); ++ndx)
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		const InternalFormat internalFormat = internalFormats[ndx];
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		addChild(new SamplesCase(m_context, (std::string(internalFormat.name) + "_samples").c_str(), "SAMPLES and NUM_SAMPLE_COUNTS", internalFormat.format, internalFormat.isIntegerFormat));
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	}
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	addChild(new SamplesBufferSizeCase(m_context, "rgba8_samples_buffer", "SAMPLES bufSize parameter", GL_RGBA8));
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // Functional
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // gles3
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp
240