| #ifndef _ESEXTCTESSELLATIONSHADERPROPERTIES_HPP |
| #define _ESEXTCTESSELLATIONSHADERPROPERTIES_HPP |
| /*------------------------------------------------------------------------- |
| * OpenGL Conformance Test Suite |
| * ----------------------------- |
| * |
| * Copyright (c) 2014-2016 The Khronos Group Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ /*! |
| * \file |
| * \brief |
| */ /*-------------------------------------------------------------------*/ |
| |
| #include "../esextcTestCaseBase.hpp" |
| #include "glwEnums.hpp" |
| |
| namespace glcts |
| { |
| |
| /** Implementation for Test Case 5 |
| * |
| * Make sure that the following tessellation stage properties (some of which |
| * are context-wide, some associated with active program object) have correct |
| * default values reported by relevant getters: |
| * |
| * * GL_PATCH_VERTICES_EXT (default value: 3); |
| * * GL_PATCH_DEFAULT_OUTER_LEVEL (*) (default value: 4 x 1.0); |
| * * GL_PATCH_DEFAULT_INNER_LEVEL (*) (default value: 2 x 1.0); |
| * |
| * (*) Only checked on Desktop |
| * |
| **/ |
| class TessellationShaderPropertiesDefaultContextWideValues : public TestCaseBase |
| { |
| public: |
| /* Public methods */ |
| TessellationShaderPropertiesDefaultContextWideValues(Context& context, const ExtParameters& extParams); |
| |
| virtual ~TessellationShaderPropertiesDefaultContextWideValues(void) |
| { |
| } |
| |
| virtual IterateResult iterate(void); |
| }; |
| |
| /* Make sure that the following tessellation stage properties (some of which |
| * are context-wide, some associated with active program object) have correct |
| * default values reported by relevant getters: |
| * |
| * * GL_TESS_CONTROL_OUTPUT_VERTICES_EXT (default value: 0); |
| * * GL_TESS_GEN_MODE_EXT (default value: GL_QUADS_EXT); |
| * * GL_TESS_GEN_SPACING_EXT (default value: GL_EQUAL); |
| * * GL_TESS_GEN_VERTEX_ORDER_EXT (default value: GL_CCW); |
| * * GL_TESS_GEN_POINT_MODE_EXT (default value: GL_FALSE); |
| * |
| * The test should also iterate through a number of program objects, for which |
| * different tessellation control and evaluation shaders were defined, and verify |
| * the GL_TESS_* values returned are as defined in input layout qualifiers for |
| * relevant shaders. |
| * |
| */ |
| class TessellationShaderPropertiesProgramObject : public TestCaseBase |
| { |
| public: |
| /* Public methods */ |
| TessellationShaderPropertiesProgramObject(Context& context, const ExtParameters& extParams); |
| |
| virtual ~TessellationShaderPropertiesProgramObject(void) |
| { |
| } |
| |
| virtual void deinit(void); |
| void initTest(void); |
| virtual IterateResult iterate(void); |
| |
| private: |
| /* Private type definitions */ |
| /* Define a few different tc/te/tc+te shaders we'll attach to a program object, |
| * which will then be queried for tessellation-specific properties |
| */ |
| typedef struct _test_descriptor |
| { |
| glw::GLint expected_control_output_vertices_value; |
| glw::GLenum expected_gen_mode_value; |
| glw::GLenum expected_gen_point_mode_value; |
| glw::GLenum expected_gen_spacing_value; |
| glw::GLenum expected_gen_vertex_order_value; |
| const char* tc_body; |
| const char* te_body; |
| |
| _test_descriptor() |
| { |
| expected_control_output_vertices_value = 0; |
| expected_gen_mode_value = 0; |
| expected_gen_point_mode_value = 0; |
| expected_gen_spacing_value = 0; |
| expected_gen_vertex_order_value = 0; |
| tc_body = DE_NULL; |
| te_body = DE_NULL; |
| } |
| } _test_descriptor; |
| |
| typedef std::vector<_test_descriptor> _tests; |
| typedef _tests::const_iterator _tests_const_iterator; |
| |
| /* Private variables */ |
| glw::GLuint m_fs_id; |
| glw::GLuint m_po_id; |
| glw::GLuint m_tc_id; |
| glw::GLuint m_te_id; |
| glw::GLuint m_vs_id; |
| }; |
| |
| } // namespace glcts |
| |
| #endif // _ESEXTCTESSELLATIONSHADERPROPERTIES_HPP |