13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _GLSATTRIBUTELOCATIONTESTS_HPP
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _GLSATTRIBUTELOCATIONTESTS_HPP
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*-------------------------------------------------------------------------
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL (ES) Module
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * -----------------------------------------------
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License");
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License.
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *      http://www.apache.org/licenses/LICENSE-2.0
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS,
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License.
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*!
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Attribute location tests
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuDefs.hpp"
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTestCase.hpp"
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <string>
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include <vector>
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace glu
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass ShaderProgram;
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass RenderContext;
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // glu
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace gls
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace AttributeLocationTestUtil
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass AttribType
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						AttribType		(const std::string& name, deUint32 locationSize, deUint32 typeEnum);
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const std::string&	getName			(void) const { return m_name;			}
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deUint32 			getLocationSize	(void) const { return m_locationSize;	}
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deUint32			getGLTypeEnum	(void) const { return m_glTypeEnum;		}
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	std::string			m_name;
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deUint32			m_locationSize;
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deUint32			m_glTypeEnum;
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Cond
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	enum ConstCond
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		COND_ALWAYS,
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		COND_NEVER
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	};
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						Cond		(ConstCond cond);
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	explicit			Cond		(const std::string& name, bool negate = true);
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	bool				operator==	(const Cond& other)	const	{ return m_negate == other.m_negate && m_name == other.m_name;	}
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	bool				operator!=	(const Cond& other)	const	{ return !(*this == other);										}
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const std::string	getName		(void) const				{ return m_name;												}
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	bool				getNegate	(void) const				{ return m_negate;												}
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	bool				m_negate;
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	std::string			m_name;
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Attribute
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	enum
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// Location is not defined
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		LOC_UNDEF = -1
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	};
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	enum
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	{
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		// Not an array
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		NOT_ARRAY = -1
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	};
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						Attribute			(const AttribType&	type,
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 const std::string&	name,
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 deInt32			layoutLocation 	= LOC_UNDEF,
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 const Cond&		cond			= Cond::COND_ALWAYS,
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry											 int				arraySize		= NOT_ARRAY);
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType	getType				(void) const { return m_type;			}
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const std::string&	getName				(void) const { return m_name;			}
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deInt32				getLayoutLocation	(void) const { return m_layoutLocation;	}
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const Cond&			getCondition		(void) const { return m_cond;			}
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int					getArraySize		(void) const { return m_arraySize;		}
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	AttribType			m_type;
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	std::string			m_name;
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deInt32				m_layoutLocation;
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	Cond				m_cond;
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	int					m_arraySize;
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Bind
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						Bind				(const std::string& attribute, deUint32 location);
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const std::string&	getAttributeName	(void) const { return m_attribute;	}
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deUint32			getLocation			(void) const { return m_location;	}
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	std::string			m_attribute;
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	deUint32			m_location;
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // AttributeLocationTestUtil
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// Simple bind attribute test
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindAttributeTest : public tcu::TestCase
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindAttributeTest	(tcu::TestContext&		testCtx,
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 glu::RenderContext&	renderCtx,
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 const AttribType&		type,
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate				(void);
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry// Bind maximum number of attributes
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindMaxAttributesTest : public tcu::TestCase
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindMaxAttributesTest	(tcu::TestContext&		testCtx,
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 glu::RenderContext&	renderCtx,
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 const AttribType&		type,
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate					(void);
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindAliasingAttributeTest : public tcu::TestCase
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindAliasingAttributeTest	(tcu::TestContext&		testCtx,
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx,
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 const AttribType&		type,
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 int					offset = 0,
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_offset;
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindMaxAliasingAttributeTest : public tcu::TestCase
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindMaxAliasingAttributeTest	(tcu::TestContext&	testCtx,
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															glu::RenderContext&	renderCtx,
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															const AttribType&	type,
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate							(void);
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindInactiveAliasingAttributeTest : public tcu::TestCase
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindInactiveAliasingAttributeTest	(tcu::TestContext&		testCtx,
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry																 glu::RenderContext&	renderCtx,
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry																 const AttribType&		type,
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry																 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate								(void);
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindHoleAttributeTest : public tcu::TestCase
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindHoleAttributeTest		(tcu::TestContext&		testCtx,
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx,
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 const AttribType&		type,
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PreAttachBindAttributeTest : public tcu::TestCase
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							PreAttachBindAttributeTest	(tcu::TestContext&		testCtx,
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PreLinkBindAttributeTest : public tcu::TestCase
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							PreLinkBindAttributeTest	(tcu::TestContext&		testCtx,
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PostLinkBindAttributeTest : public tcu::TestCase
2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							PostLinkBindAttributeTest	(tcu::TestContext&		testCtx,
2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindReattachAttributeTest : public tcu::TestCase
2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindReattachAttributeTest	(tcu::TestContext&		testCtx,
2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass LocationAttributeTest : public tcu::TestCase
2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							LocationAttributeTest	(tcu::TestContext&		testCtx,
3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 glu::RenderContext&	renderCtx,
3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 const AttribType&		type,
3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate					(void);
3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass LocationMaxAttributesTest : public tcu::TestCase
3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
3183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							LocationMaxAttributesTest	(tcu::TestContext&		testCtx,
3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx,
3223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 const AttribType&		type,
3233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
3243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
3263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3273c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
3283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
3293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
3303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
3313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
3323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3333c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass LocationHoleAttributeTest : public tcu::TestCase
3343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
3353c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
3363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
3373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							LocationHoleAttributeTest	(tcu::TestContext&		testCtx,
3393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx,
3403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 const AttribType&		type,
3413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
3423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
3443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3453c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
3463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
3473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
3483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
3493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
3503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3513c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass MixedAttributeTest : public tcu::TestCase
3523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
3533c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
3543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
3553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							MixedAttributeTest	(tcu::TestContext&		testCtx,
3573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 glu::RenderContext&	renderCtx,
3583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 const AttribType&		type,
3593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry												 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
3603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate				(void);
3623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3633c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
3643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
3653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
3663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
3673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
3683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3693c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass MixedMaxAttributesTest : public tcu::TestCase
3703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
3713c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
3723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
3733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							MixedMaxAttributesTest	(tcu::TestContext&		testCtx,
3753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 glu::RenderContext&	renderCtx,
3763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 const AttribType&		type,
3773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
3783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate					(void);
3803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3813c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
3823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
3833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
3843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
3853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
3863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3873c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass MixedHoleAttributeTest : public tcu::TestCase
3883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
3893c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
3903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
3913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							MixedHoleAttributeTest	(tcu::TestContext&		testCtx,
3933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 glu::RenderContext&	renderCtx,
3943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 const AttribType&		type,
3953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
3963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate					(void);
3983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3993c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
4023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
4033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4053c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindRelinkAttributeTest : public tcu::TestCase
4063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4073c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
4083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
4093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindRelinkAttributeTest	(tcu::TestContext&		testCtx,
4113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 glu::RenderContext&	renderCtx);
4123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate					(void);
4143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass BindRelinkHoleAttributeTest : public tcu::TestCase
4203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4213c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
4223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
4233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							BindRelinkHoleAttributeTest	(tcu::TestContext&		testCtx,
4253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx,
4263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 const AttribType&		type,
4273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
4283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
4303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4313c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
4343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
4353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4373c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass MixedRelinkHoleAttributeTest : public tcu::TestCase
4383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4393c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
4403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
4413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							MixedRelinkHoleAttributeTest	(tcu::TestContext&		testCtx,
4433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 glu::RenderContext&	renderCtx,
4443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 const AttribType&		type,
4453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 int					arraySize = AttributeLocationTestUtil::Attribute::NOT_ARRAY);
4463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate							(void);
4483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4493c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const AttribType		m_type;
4523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	const int				m_arraySize;
4533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PreAttachMixedAttributeTest : public tcu::TestCase
4563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4573c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
4583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
4593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							PreAttachMixedAttributeTest	(tcu::TestContext&		testCtx,
4613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
4623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
4643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4653c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4693c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PreLinkMixedAttributeTest : public tcu::TestCase
4703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4713c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
4723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
4733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							PreLinkMixedAttributeTest	(tcu::TestContext&		testCtx,
4753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
4763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
4783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4833c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass PostLinkMixedAttributeTest : public tcu::TestCase
4843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4853c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
4863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
4873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							PostLinkMixedAttributeTest	(tcu::TestContext&		testCtx,
4893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry														 glu::RenderContext&	renderCtx);
4903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate						(void);
4923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4933c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
4943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
4953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
4963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4973c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass MixedReattachAttributeTest : public tcu::TestCase
4983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
4993c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
5003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
5013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							MixedReattachAttributeTest		(tcu::TestContext&		testCtx,
5033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry															 glu::RenderContext&	renderCtx);
5043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate							(void);
5063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5073c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
5083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&		m_renderCtx;
5093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
5103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5113c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass MixedRelinkAttributeTest : public tcu::TestCase
5123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{
5133c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic:
5143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	typedef AttributeLocationTestUtil::AttribType AttribType;
5153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							MixedRelinkAttributeTest(tcu::TestContext&		testCtx,
5173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry													 glu::RenderContext&	renderCtx);
5183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	virtual IterateResult	iterate					(void);
5203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5213c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate:
5223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	glu::RenderContext&								m_renderCtx;
5233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry};
5243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // gls
5263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp
5273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _GLSATTRIBUTELOCATIONTESTS_HPP
529