| #ifndef _GL4CINCOMPLETETEXTUREACCESSTESTS_HPP |
| #define _GL4CINCOMPLETETEXTUREACCESSTESTS_HPP |
| /*------------------------------------------------------------------------- |
| * OpenGL Conformance Test Suite |
| * ----------------------------- |
| * |
| * Copyright (c) 2015-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 |
| */ /*-------------------------------------------------------------------*/ |
| |
| /** |
| * \file gl4cIncompleteTextureAccessTests.hpp |
| * \brief Declares test classes for incomplete texture access cases. |
| */ /*-------------------------------------------------------------------*/ |
| |
| /* Includes. */ |
| |
| #include "glcTestCase.hpp" |
| #include "glwDefs.hpp" |
| #include "tcuDefs.hpp" |
| |
| namespace gl4cts |
| { |
| namespace IncompleteTextureAccess |
| { |
| /** @class Tests |
| * |
| * @brief Incomplete texture access test group. |
| */ |
| class Tests : public deqp::TestCaseGroup |
| { |
| public: |
| /* Public member functions */ |
| Tests(deqp::Context& context); |
| |
| void init(); |
| |
| private: |
| /* Private member functions */ |
| Tests(const Tests& other); |
| Tests& operator=(const Tests& other); |
| }; |
| /* Tests class */ |
| |
| /** @class IncompleteTextureAccessTest |
| * |
| * Description: |
| * |
| * This tests checks access to incomplete texture from shader using |
| * texture sampler functions. For OpenGL 4.5 and higher (0.0, 0.0, 0.0, 1.0) |
| * is expected for floating point non-shadow samplers. 0 is expected |
| * for the shadow sampler. |
| * |
| * Steps: |
| * |
| * Prepare incomplete texture of given type. |
| * Prepare framebuffer with RGBA renderbuffer 1x1 pixels in size |
| * Prepare program which draws full screen textured quad using given sampler. |
| * Make draw call. |
| * Fetch framebuffer data using glReadPixels. |
| * Compare the values with expected value. |
| * |
| * Repeat the steps for following samplers: |
| * - sampler1D, |
| * - sampler2D, |
| * - sampler3D, |
| * - samplerCube, |
| * - sampler2DRect, |
| * - sampler1DArray, |
| * - sampler2DArray, |
| * - samplerCubeArray |
| * expecting (0.0, 0.0, 0.0, 1.0) and: |
| * - sampler1DShadow, |
| * - sampler2DShadow, |
| * - samplerCubeShadow, |
| * - sampler2DRectShadow, |
| * - sampler1DArrayShadow, |
| * - sampler2DArrayShadow, |
| * - samplerCubeArrayShadow |
| * expecting 0.0. |
| */ |
| class SamplerTest : public deqp::TestCase |
| { |
| public: |
| /* Public member functions */ |
| SamplerTest(deqp::Context& context); |
| |
| virtual tcu::TestNode::IterateResult iterate(); |
| |
| private: |
| /* Private member functions */ |
| SamplerTest(const SamplerTest& other); |
| SamplerTest& operator=(const SamplerTest& other); |
| |
| glw::GLuint m_po; |
| glw::GLuint m_to; |
| glw::GLuint m_fbo; |
| glw::GLuint m_rbo; |
| glw::GLuint m_vao; |
| |
| static const struct Configuration |
| { |
| glw::GLenum texture_target; |
| const glw::GLchar* sampler_template; |
| const glw::GLchar* fetch_template; |
| glw::GLfloat expected_result[4]; |
| } s_configurations[]; |
| |
| static const glw::GLuint s_configurations_count; |
| |
| static const glw::GLchar* s_vertex_shader; |
| static const glw::GLchar* s_fragment_shader_head; |
| static const glw::GLchar* s_fragment_shader_body; |
| static const glw::GLchar* s_fragment_shader_tail; |
| |
| void PrepareProgram(Configuration configuration); |
| void PrepareTexture(Configuration configuration); |
| void PrepareVertexArrays(); |
| void PrepareFramebuffer(); |
| void Draw(); |
| bool Check(Configuration configuration); |
| void CleanCase(); |
| void CleanTest(); |
| }; |
| |
| /* SamplerTest class */ |
| } /* IncompleteTextureAccess namespace */ |
| } /* gl4cts */ |
| |
| #endif // _GL4CINCOMPLETETEXTUREACCESSTESTS_HPP |