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 */