Fix existing viewport_array bugs
[platform/upstream/VK-GL-CTS.git] / external / openglcts / modules / common / glcViewportArrayTests.cpp
index e6180a2..a3170a7 100644 (file)
@@ -48,117 +48,6 @@ namespace glcts
 
 namespace ViewportArray
 {
-/** Check if extension is supported
- *
- * @param context        Test context
- * @param extension_name Name of extension
- *
- * @return true if extension is supported, false otherwise
- **/
-bool Utils::isExtensionSupported(deqp::Context& context, const GLchar* extension_name)
-{
-       const std::vector<std::string>& extensions = context.getContextInfo().getExtensions();
-
-       if (std::find(extensions.begin(), extensions.end(), extension_name) == extensions.end())
-       {
-               return false;
-       }
-
-       return true;
-}
-
-/** Check if GL context meets version requirements
- *
- * @param gl             Functions
- * @param required_major Minimum required MAJOR_VERSION
- * @param required_minor Minimum required MINOR_VERSION
- *
- * @return true if GL context version is at least as requested, false otherwise
- **/
-bool Utils::isGLVersionAtLeast(const glw::Functions& gl, glw::GLint required_major, glw::GLint required_minor)
-{
-       glw::GLint major = 0;
-       glw::GLint minor = 0;
-
-       gl.getIntegerv(GL_MAJOR_VERSION, &major);
-       gl.getIntegerv(GL_MINOR_VERSION, &minor);
-
-       GLU_EXPECT_NO_ERROR(gl.getError(), "GetIntegerv");
-
-       if (major > required_major)
-       {
-               /* Major is higher than required one */
-               return true;
-       }
-       else if (major == required_major)
-       {
-               if (minor >= required_minor)
-               {
-                       /* Major is equal to required one */
-                       /* Minor is higher than or equal to required one */
-                       return true;
-               }
-               else
-               {
-                       /* Major is equal to required one */
-                       /* Minor is lower than required one */
-                       return false;
-               }
-       }
-       else
-       {
-               /* Major is lower than required one */
-               return false;
-       }
-}
-
-/** Replace first occurance of <token> with <text> in <string> starting at <search_posistion>
- *
- * @param token           Token string
- * @param search_position Position at which find will start, it is updated to position at which replaced text ends
- * @param text            String that will be used as replacement for <token>
- * @param string          String to work on
- **/
-void Utils::replaceToken(const glw::GLchar* token, size_t& search_position, const glw::GLchar* text,
-                                                std::string& string)
-{
-       const size_t text_length        = strlen(text);
-       const size_t token_length   = strlen(token);
-       const size_t token_position = string.find(token, search_position);
-
-       string.replace(token_position, token_length, text, text_length);
-
-       search_position = token_position + text_length;
-}
-
-/** Replace all occurances of <token> with <text> in <string>
- *
- * @param token           Token string
- * @param text            String that will be used as replacement for <token>
- * @param string          String to work on
- **/
-void Utils::replaceAllTokens(const glw::GLchar* token, const glw::GLchar* text, std::string& string)
-{
-       const size_t text_length  = strlen(text);
-       const size_t token_length = strlen(token);
-
-       size_t search_position = 0;
-
-       while (1)
-       {
-               const size_t token_position = string.find(token, search_position);
-
-               if (std::string::npos == token_position)
-               {
-                       break;
-               }
-
-               search_position = token_position + text_length;
-
-               string.replace(token_position, token_length, text, text_length);
-       }
-}
-
 /** Constructor.
  *
  * @param context CTS context.
@@ -1005,7 +894,8 @@ void Utils::vertexArray::generate()
  *
  * @param context          Test context
  **/
-APIErrors::APIErrors(deqp::Context& context) : TestCase(context, "api_errors", "Test verifies error generated by API")
+APIErrors::APIErrors(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseBase(context, extParams, "api_errors", "Test verifies error generated by API")
 {
        /* Nothing to be done here */
 }
@@ -1413,7 +1303,8 @@ void APIErrors::checkGLError(GLenum expected_error, const GLchar* description, b
  *
  * @param context          Test context
  **/
-Queries::Queries(deqp::Context& context) : TestCase(context, "queries", "Test verifies initial state of API")
+Queries::Queries(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseBase(context, extParams, "queries", "Test verifies initial state of API")
 {
        /* Nothing to be done here */
 }
@@ -1551,7 +1442,7 @@ tcu::TestNode::IterateResult Queries::iterate()
 
                for (GLint i = 0; i < max_viewports; ++i)
                {
-                       gl.getIntegeri_v(GL_VIEWPORT, i, &data[i * 4]);
+                       gl.getIntegeri_v(GL_SCISSOR_BOX, i, &data[i * 4]);
                        GLU_EXPECT_NO_ERROR(gl.getError(), "getIntegeri_v");
                }
 
@@ -1621,11 +1512,11 @@ tcu::TestNode::IterateResult Queries::iterate()
         *   at least [-32768, 32767];
         */
        {
-               if ((-32768.0f < viewport_bounds_range[0]) || (32768.0f > viewport_bounds_range[1]))
+               if ((-32768.0f < viewport_bounds_range[0]) || (32767.0f > viewport_bounds_range[1]))
                {
                        m_context.getTestContext().getLog()
                                << tcu::TestLog::Message << "Invalid VIEWPORT_BOUNDS_RANGE: " << viewport_bounds_range[0] << " : "
-                               << viewport_bounds_range[1] << " expected at least: -32768.0f : 32768.0f" << tcu::TestLog::EndMessage;
+                               << viewport_bounds_range[1] << " expected at least: -32768.0f : 32767.0f" << tcu::TestLog::EndMessage;
 
                        test_result = false;
                }
@@ -1690,8 +1581,8 @@ const GLuint ViewportAPI::m_n_elements = 4;
  *
  * @param context          Test context
  **/
-ViewportAPI::ViewportAPI(deqp::Context& context)
-       : TestCase(context, "viewport_api", "Test verifies that \viewport api\" works as expected")
+ViewportAPI::ViewportAPI(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseBase(context, extParams, "viewport_api", "Test verifies that \viewport api\" works as expected")
 {
        /* Nothing to be done here */
 }
@@ -1889,8 +1780,8 @@ const GLuint ScissorAPI::m_n_elements = 4;
  *
  * @param context          Test context
  **/
-ScissorAPI::ScissorAPI(deqp::Context& context)
-       : TestCase(context, "scissor_api", "Test verifies that \"scissor api\" works as expected")
+ScissorAPI::ScissorAPI(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseBase(context, extParams, "scissor_api", "Test verifies that \"scissor api\" works as expected")
 {
        /* Nothing to be done here */
 }
@@ -2088,8 +1979,8 @@ const GLuint DepthRangeAPI::m_n_elements = 2 /* near + far */;
  *
  * @param context          Test context
  **/
-DepthRangeAPI::DepthRangeAPI(deqp::Context& context)
-       : TestCase(context, "depth_range_api", "Test verifies that \"depth range api\" works as expected")
+DepthRangeAPI::DepthRangeAPI(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseBase(context, extParams, "depth_range_api", "Test verifies that \"depth range api\" works as expected")
 {
        /* Nothing to be done here */
 }
@@ -2254,9 +2145,9 @@ void DepthRangeAPI::getDepthRanges(GLint max_viewports, std::vector<GLdouble>& o
  *
  * @param context          Test context
  **/
-ScissorTestStateAPI::ScissorTestStateAPI(deqp::Context& context)
-       : TestCase(context, "scissor_test_state_api",
-                          "Test verifies that \"enable/disable api\" works as expected for scissor test")
+ScissorTestStateAPI::ScissorTestStateAPI(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseBase(context, extParams, "scissor_test_state_api",
+                                  "Test verifies that \"enable/disable api\" works as expected for scissor test")
 {
        /* Nothing to be done here */
 }
@@ -2449,8 +2340,9 @@ const GLuint DrawTestBase::m_r32ix4_depth = 4;
  * @param test_name        Test name
  * @param test_description Test description
  **/
-DrawTestBase::DrawTestBase(deqp::Context& context, const GLchar* test_name, const GLchar* test_description)
-       : TestCase(context, test_name, test_description)
+DrawTestBase::DrawTestBase(deqp::Context& context, const glcts::ExtParameters& extParams, const GLchar* test_name,
+                                                  const GLchar* test_description)
+       : TestCaseBase(context, extParams, test_name, test_description)
 {
        /* Nothing to be done here */
 }
@@ -3199,8 +3091,9 @@ void DrawTestBase::setup2x2Viewport(PROVOKING_VERTEX provoking)
  *
  * @param context          Test context
  **/
-DrawToSingleLayerWithMultipleViewports::DrawToSingleLayerWithMultipleViewports(deqp::Context& context)
-       : DrawTestBase(context, "draw_to_single_layer_with_multiple_viewports",
+DrawToSingleLayerWithMultipleViewports::DrawToSingleLayerWithMultipleViewports(deqp::Context&                     context,
+                                                                                                                                                          const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "draw_to_single_layer_with_multiple_viewports",
                                   "Test verifies that multiple viewports can be used to draw to single layer")
 {
        /* Nothing to be done here */
@@ -3271,8 +3164,8 @@ std::string DrawToSingleLayerWithMultipleViewports::getGeometryShader()
  *
  * @param context          Test context
  **/
-DynamicViewportIndex::DynamicViewportIndex(deqp::Context& context)
-       : DrawTestBase(context, "dynamic_viewport_index",
+DynamicViewportIndex::DynamicViewportIndex(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "dynamic_viewport_index",
                                   "Test verifies that gl_ViewportIndex can be assigned with dynamic value")
 {
        /* Nothing to be done here */
@@ -3413,8 +3306,9 @@ void DynamicViewportIndex::prepareUniforms(Utils::program& program, GLuint draw_
  *
  * @param context          Test context
  **/
-DrawMulitpleViewportsWithSingleInvocation::DrawMulitpleViewportsWithSingleInvocation(deqp::Context& context)
-       : DrawTestBase(context, "draw_mulitple_viewports_with_single_invocation",
+DrawMulitpleViewportsWithSingleInvocation::DrawMulitpleViewportsWithSingleInvocation(
+       deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "draw_mulitple_viewports_with_single_invocation",
                                   "Test verifies that single invocation can output to multiple viewports")
 {
        /* Nothing to be done here */
@@ -3494,8 +3388,8 @@ std::string DrawMulitpleViewportsWithSingleInvocation::getGeometryShader()
  *
  * @param context          Test context
  **/
-ViewportIndexSubroutine::ViewportIndexSubroutine(deqp::Context& context)
-       : DrawTestBase(context, "viewport_index_subroutine",
+ViewportIndexSubroutine::ViewportIndexSubroutine(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "viewport_index_subroutine",
                                   "Test verifies subroutines can be used to output data to specific viewport")
 {
        /* Nothing to be done here */
@@ -3711,8 +3605,8 @@ void ViewportIndexSubroutine::setupViewports(TEST_TYPE /* type */, glw::GLuint i
  *
  * @param context Test context
  **/
-DrawMultipleLayers::DrawMultipleLayers(deqp::Context& context)
-       : DrawTestBase(context, "draw_multiple_layers",
+DrawMultipleLayers::DrawMultipleLayers(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "draw_multiple_layers",
                                   "Test verifies that single viewport affects multiple layers in the same way")
 {
        /* Nothing to be done here */
@@ -3724,8 +3618,9 @@ DrawMultipleLayers::DrawMultipleLayers(deqp::Context& context)
  * @param test_name        Test name
  * @param test_description Test description
  **/
-DrawMultipleLayers::DrawMultipleLayers(deqp::Context& context, const GLchar* test_name, const GLchar* test_description)
-       : DrawTestBase(context, test_name, test_description)
+DrawMultipleLayers::DrawMultipleLayers(deqp::Context& context, const glcts::ExtParameters& extParams,
+                                                                          const GLchar* test_name, const GLchar* test_description)
+       : DrawTestBase(context, extParams, test_name, test_description)
 {
        /* Nothing to be done here */
 }
@@ -3864,8 +3759,8 @@ void DrawMultipleLayers::prepareTextures(Utils::texture& texture_0, Utils::textu
  * @param test_name        Test name
  * @param test_description Test description
  **/
-Scissor::Scissor(deqp::Context& context)
-       : DrawMultipleLayers(context, "scissor", "Test verifies that scissor test is applied as expected")
+Scissor::Scissor(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawMultipleLayers(context, extParams, "scissor", "Test verifies that scissor test is applied as expected")
 {
        /* Nothing to be done here */
 }
@@ -3885,8 +3780,8 @@ DrawTestBase::TEST_TYPE Scissor::getTestType()
  * @param test_name        Test name
  * @param test_description Test description
  **/
-ScissorZeroDimension::ScissorZeroDimension(deqp::Context& context)
-       : DrawMultipleLayers(context, "scissor_zero_dimension",
+ScissorZeroDimension::ScissorZeroDimension(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawMultipleLayers(context, extParams, "scissor_zero_dimension",
                                                 "Test verifies that scissor test discard all fragments when width and height is set to zero")
 {
        /* Nothing to be done here */
@@ -3974,8 +3869,8 @@ void ScissorZeroDimension::setupViewports(TEST_TYPE /* type */, GLuint iteration
  * @param test_name        Test name
  * @param test_description Test description
  **/
-ScissorClear::ScissorClear(deqp::Context& context)
-       : DrawMultipleLayers(context, "scissor_clear",
+ScissorClear::ScissorClear(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawMultipleLayers(context, extParams, "scissor_clear",
                                                 "Test verifies that Clear is affected only by settings of scissor test in first viewport")
 {
        /* Nothing to be done here */
@@ -4053,8 +3948,8 @@ bool ScissorClear::isClearTest()
  * @param test_name        Test name
  * @param test_description Test description
  **/
-DepthRange::DepthRange(deqp::Context& context)
-       : DrawTestBase(context, "depth_range", "Test verifies that depth range is applied as expected")
+DepthRange::DepthRange(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "depth_range", "Test verifies that depth range is applied as expected")
 {
        /* Nothing to be done here */
 }
@@ -4209,8 +4104,8 @@ void DepthRange::prepareTextures(Utils::texture& texture_0, Utils::texture& /* t
  * @param test_name        Test name
  * @param test_description Test description
  **/
-DepthRangeDepthTest::DepthRangeDepthTest(deqp::Context& context)
-       : DrawTestBase(context, "depth_range_depth_test",
+DepthRangeDepthTest::DepthRangeDepthTest(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "depth_range_depth_test",
                                   "Test verifies that depth test work as expected with multiple viewports")
 {
        /* Nothing to be done here */
@@ -4418,8 +4313,8 @@ void DepthRangeDepthTest::setupViewports(TEST_TYPE /* type */, GLuint iteration_
  * @param test_name        Test name
  * @param test_description Test description
  **/
-ProvokingVertex::ProvokingVertex(deqp::Context& context)
-       : DrawTestBase(context, "provoking_vertex", "Test verifies that provoking vertex work as expected")
+ProvokingVertex::ProvokingVertex(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : DrawTestBase(context, extParams, "provoking_vertex", "Test verifies that provoking vertex work as expected")
 {
        /* Nothing to be done here */
 }
@@ -4620,8 +4515,8 @@ void ProvokingVertex::prepareTextures(Utils::texture& texture_0, Utils::texture&
  *
  *  @param context Rendering context.
  **/
-ViewportArrayTests::ViewportArrayTests(deqp::Context& context)
-       : TestCaseGroup(context, "viewport_array", "Verifies \"viewport_array\" functionality")
+ViewportArrayTests::ViewportArrayTests(deqp::Context& context, const glcts::ExtParameters& extParams)
+       : TestCaseGroupBase(context, extParams, "viewport_array", "Verifies \"viewport_array\" functionality")
 {
        /* Left blank on purpose */
 }
@@ -4631,23 +4526,23 @@ ViewportArrayTests::ViewportArrayTests(deqp::Context& context)
  **/
 void ViewportArrayTests::init(void)
 {
-       addChild(new ViewportArray::APIErrors(m_context));
-       addChild(new ViewportArray::Queries(m_context));
-       addChild(new ViewportArray::ViewportAPI(m_context));
-       addChild(new ViewportArray::ScissorAPI(m_context));
-       addChild(new ViewportArray::DepthRangeAPI(m_context));
-       addChild(new ViewportArray::ScissorTestStateAPI(m_context));
-       addChild(new ViewportArray::DrawToSingleLayerWithMultipleViewports(m_context));
-       addChild(new ViewportArray::DynamicViewportIndex(m_context));
-       addChild(new ViewportArray::DrawMulitpleViewportsWithSingleInvocation(m_context));
-       addChild(new ViewportArray::ViewportIndexSubroutine(m_context));
-       addChild(new ViewportArray::DrawMultipleLayers(m_context));
-       addChild(new ViewportArray::Scissor(m_context));
-       addChild(new ViewportArray::ScissorZeroDimension(m_context));
-       addChild(new ViewportArray::ScissorClear(m_context));
-       addChild(new ViewportArray::DepthRange(m_context));
-       addChild(new ViewportArray::DepthRangeDepthTest(m_context));
-       addChild(new ViewportArray::ProvokingVertex(m_context));
+       addChild(new ViewportArray::APIErrors(m_context, m_extParams));
+       addChild(new ViewportArray::Queries(m_context, m_extParams));
+       addChild(new ViewportArray::ViewportAPI(m_context, m_extParams));
+       addChild(new ViewportArray::ScissorAPI(m_context, m_extParams));
+       addChild(new ViewportArray::DepthRangeAPI(m_context, m_extParams));
+       addChild(new ViewportArray::ScissorTestStateAPI(m_context, m_extParams));
+       addChild(new ViewportArray::DrawToSingleLayerWithMultipleViewports(m_context, m_extParams));
+       addChild(new ViewportArray::DynamicViewportIndex(m_context, m_extParams));
+       addChild(new ViewportArray::DrawMulitpleViewportsWithSingleInvocation(m_context, m_extParams));
+       addChild(new ViewportArray::ViewportIndexSubroutine(m_context, m_extParams));
+       addChild(new ViewportArray::DrawMultipleLayers(m_context, m_extParams));
+       addChild(new ViewportArray::Scissor(m_context, m_extParams));
+       addChild(new ViewportArray::ScissorZeroDimension(m_context, m_extParams));
+       addChild(new ViewportArray::ScissorClear(m_context, m_extParams));
+       addChild(new ViewportArray::DepthRange(m_context, m_extParams));
+       addChild(new ViewportArray::DepthRangeDepthTest(m_context, m_extParams));
+       addChild(new ViewportArray::ProvokingVertex(m_context, m_extParams));
 }
 
 } /* glcts namespace */