Fix the error message and add a check for the extension

An INVALID_OPERATION error should be returned when either combinerOp0 or
combinerOp1 in ShadingRateCombinerOpsEXT is not set to
FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT if
GL_EXT_fragment_shading_rate_primitive/GL_EXT_fragment_shading_rate_attachment is not supported.

In FragmentShadingRateAttacIn FragmentShadingRateAttachment::init, add
an if statement to verify whether it is attachmentShadingRate test, then
get GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT.

Components: OpenGL

VK-GL-CTS issue: 5917

Affects:
KHR-GLESEXT.fragment_shading_rate.api.errors
KHR-GLESEXT.fragment_shading_rate.render_target.multiview_api_6x6
KHR-GLESEXT.fragment_shading_rate.render_target.multiview_api_37x37
KHR-GLESEXT.fragment_shading_rate.render_target.multiview_api_256x256

Change-Id: Ia85bd60865a939796fbffcd32c3734949c20859a
diff --git a/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateAttachmentTests.cpp b/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateAttachmentTests.cpp
index a1d624f..692d432 100644
--- a/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateAttachmentTests.cpp
+++ b/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateAttachmentTests.cpp
@@ -86,12 +86,16 @@
     {
         const glw::Functions &gl = m_context.getRenderContext().getFunctions();
         glw::GLint maxLayers     = 1;
-        gl.getIntegerv(GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT, &maxLayers);
-        GLU_EXPECT_NO_ERROR(gl.getError(), "Error getting MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS");
-
-        if (static_cast<glw::GLint>(m_tcParam.layerCount) > maxLayers)
+        if (m_tcParam.attachmentShadingRate)
         {
-            throw tcu::NotSupportedError("Number of layers in FSR attachment exceeds limit", "", __FILE__, __LINE__);
+            gl.getIntegerv(GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT, &maxLayers);
+            GLU_EXPECT_NO_ERROR(gl.getError(), "Error getting MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS");
+
+            if (static_cast<glw::GLint>(m_tcParam.layerCount) > maxLayers)
+            {
+                throw tcu::NotSupportedError("Number of layers in FSR attachment exceeds limit", "", __FILE__,
+                                             __LINE__);
+            }
         }
     }
 }
diff --git a/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateErrors.cpp b/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateErrors.cpp
index 1a19581..ff424d8 100644
--- a/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateErrors.cpp
+++ b/external/openglcts/modules/glesext/fragment_shading_rate/esextcFragmentShadingRateErrors.cpp
@@ -265,7 +265,8 @@
     {
         gl.shadingRateCombinerOpsEXT(GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT,
                                      GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT);
-        testPassed = testPassed && verifyError(GL_INVALID_ENUM, "shadingRateCombinerOpsEXT <combinerOp0> is not valid");
+        testPassed =
+            testPassed && verifyError(GL_INVALID_OPERATION, "shadingRateCombinerOpsEXT <combinerOp0> is not valid");
     }
 
     // [[If GL_EXT_fragment_shading_rate_attachment is not supported]]
@@ -275,7 +276,8 @@
     {
         gl.shadingRateCombinerOpsEXT(GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT,
                                      GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT);
-        testPassed = testPassed && verifyError(GL_INVALID_ENUM, "shadingRateCombinerOpsEXT <combinerOp0> is not valid");
+        testPassed =
+            testPassed && verifyError(GL_INVALID_OPERATION, "shadingRateCombinerOpsEXT <combinerOp1> is not valid");
     }
 
     /* All done */