1#ifndef _ESEXTCTESSELLATIONSHADERPROGRAMINTERFACES_HPP
2#define _ESEXTCTESSELLATIONSHADERPROGRAMINTERFACES_HPP
3/*-------------------------------------------------------------------------
4 * OpenGL Conformance Test Suite
5 * -----------------------------
6 *
7 * Copyright (c) 2014-2016 The Khronos Group Inc.
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 *      http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 *
21 */ /*!
22 * \file
23 * \brief
24 */ /*-------------------------------------------------------------------*/
25
26#include "../esextcTestCaseBase.hpp"
27#include "glwEnums.hpp"
28
29namespace glcts
30{
31/** Implementation of Test Case 3
32 *
33 *  Make sure that the following interfaces report correct values for
34 *  GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT property:
35 *
36 *  * GL_UNIFORM;
37 *  * GL_UNIFORM_BLOCK;
38 *  * GL_ATOMIC_COUNTER_BUFFER;
39 *  * GL_SHADER_STORAGE_BLOCK;
40 *  * GL_BUFFER_VARIABLE;
41 *  * GL_PROGRAM_INPUT;
42 *  * GL_PROGRAM_OUTPUT;
43 *
44 *  Make sure that the following interfaces report correct values for
45 *  GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT property:
46 *
47 *  * GL_UNIFORM;
48 *  * GL_UNIFORM_BLOCK;
49 *  * GL_ATOMIC_COUNTER_BUFFER;
50 *  * GL_SHADER_STORAGE_BLOCK;
51 *  * GL_BUFFER_VARIABLE;
52 *  * GL_PROGRAM_INPUT;
53 *  * GL_PROGRAM_OUTPUT;
54 *
55 *  The property should also be recognized by glGetProgram*()
56 *
57 **/
58class TessellationShaderProgramInterfaces : public TestCaseBase
59{
60public:
61	/* Public methods */
62	TessellationShaderProgramInterfaces(Context& context, const ExtParameters& extParams);
63
64	virtual ~TessellationShaderProgramInterfaces(void)
65	{
66	}
67
68	virtual void		  deinit();
69	void				  initTest(void);
70	virtual IterateResult iterate(void);
71
72private:
73	/* Private methods */
74	void verifyPropertyValue(glw::GLenum interface, glw::GLenum property, glw::GLuint index, glw::GLint expected_value);
75
76	/* Private variables */
77	glw::GLuint m_fs_shader_id;
78	glw::GLuint m_po_id;
79	glw::GLuint m_tc_shader_id;
80	glw::GLuint m_te_shader_id;
81	glw::GLuint m_vs_shader_id;
82	bool		m_is_atomic_counters_supported;
83	bool		m_is_shader_storage_blocks_supported;
84};
85
86} // namespace glcts
87
88#endif // _ESEXTCTESSELLATIONSHADERPROGRAMINTERFACES_HPP
89