Add negative sRGB texture/sampler API tests
authorMichael Hadley <michael.hadley@mobica.com>
Wed, 7 Dec 2016 16:11:05 +0000 (16:11 +0000)
committerMika Isojärvi <misojarvi@google.com>
Thu, 6 Jul 2017 19:27:53 +0000 (12:27 -0700)
Added sRGB tests to the following:
- dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.*
- dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.*

Change-Id: I1ebd5a95c8605a39e4bbb5b4516d0f7b8c11898e

android/cts/master/gles31-master.txt
modules/gles31/functional/es31fNegativeShaderApiTests.cpp
modules/gles31/functional/es31fNegativeTextureApiTests.cpp

index 4db737f..f42b33d 100644 (file)
@@ -16477,6 +16477,12 @@ dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.texstorage2d_in
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.texstorage3d
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.texstorage3d_invalid_binding
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.texstorage3d_invalid_levels
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.srgb_decode_texparameteri
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.srgb_decode_texparameterf
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.srgb_decode_texparameteriv
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.srgb_decode_texparameterfv
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.srgb_decode_texparameterIiv
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.texture.srgb_decode_texparameterIuiv
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.create_shader
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.shader_source
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.compile_shader
@@ -16544,6 +16550,12 @@ dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.get_transform_fe
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.transform_feedback_varyings
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.compile_compute_shader
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.link_compute_shader
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.srgb_decode_samplerparameteri
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.srgb_decode_samplerparameterf
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.srgb_decode_samplerparameteriv
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.srgb_decode_samplerparameterfv
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.srgb_decode_samplerparameterIiv
+dEQP-GLES31.functional.debug.negative_coverage.callbacks.shader.srgb_decode_samplerparameterIuiv
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment.scissor
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment.depth_func
 dEQP-GLES31.functional.debug.negative_coverage.callbacks.fragment.viewport
@@ -16941,6 +16953,12 @@ dEQP-GLES31.functional.debug.negative_coverage.log.texture.texstorage2d_invalid_
 dEQP-GLES31.functional.debug.negative_coverage.log.texture.texstorage3d
 dEQP-GLES31.functional.debug.negative_coverage.log.texture.texstorage3d_invalid_binding
 dEQP-GLES31.functional.debug.negative_coverage.log.texture.texstorage3d_invalid_levels
+dEQP-GLES31.functional.debug.negative_coverage.log.texture.srgb_decode_texparameteri
+dEQP-GLES31.functional.debug.negative_coverage.log.texture.srgb_decode_texparameterf
+dEQP-GLES31.functional.debug.negative_coverage.log.texture.srgb_decode_texparameteriv
+dEQP-GLES31.functional.debug.negative_coverage.log.texture.srgb_decode_texparameterfv
+dEQP-GLES31.functional.debug.negative_coverage.log.texture.srgb_decode_texparameterIiv
+dEQP-GLES31.functional.debug.negative_coverage.log.texture.srgb_decode_texparameterIuiv
 dEQP-GLES31.functional.debug.negative_coverage.log.shader.create_shader
 dEQP-GLES31.functional.debug.negative_coverage.log.shader.shader_source
 dEQP-GLES31.functional.debug.negative_coverage.log.shader.compile_shader
@@ -17008,6 +17026,12 @@ dEQP-GLES31.functional.debug.negative_coverage.log.shader.get_transform_feedback
 dEQP-GLES31.functional.debug.negative_coverage.log.shader.transform_feedback_varyings
 dEQP-GLES31.functional.debug.negative_coverage.log.shader.compile_compute_shader
 dEQP-GLES31.functional.debug.negative_coverage.log.shader.link_compute_shader
+dEQP-GLES31.functional.debug.negative_coverage.log.shader.srgb_decode_samplerparameteri
+dEQP-GLES31.functional.debug.negative_coverage.log.shader.srgb_decode_samplerparameterf
+dEQP-GLES31.functional.debug.negative_coverage.log.shader.srgb_decode_samplerparameteriv
+dEQP-GLES31.functional.debug.negative_coverage.log.shader.srgb_decode_samplerparameterfv
+dEQP-GLES31.functional.debug.negative_coverage.log.shader.srgb_decode_samplerparameterIiv
+dEQP-GLES31.functional.debug.negative_coverage.log.shader.srgb_decode_samplerparameterIuiv
 dEQP-GLES31.functional.debug.negative_coverage.log.fragment.scissor
 dEQP-GLES31.functional.debug.negative_coverage.log.fragment.depth_func
 dEQP-GLES31.functional.debug.negative_coverage.log.fragment.viewport
@@ -17404,6 +17428,12 @@ dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texstorage2d_in
 dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texstorage3d
 dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texstorage3d_invalid_binding
 dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.texstorage3d_invalid_levels
+dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.srgb_decode_texparameteri
+dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.srgb_decode_texparameterf
+dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.srgb_decode_texparameteriv
+dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.srgb_decode_texparameterfv
+dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.srgb_decode_texparameterIiv
+dEQP-GLES31.functional.debug.negative_coverage.get_error.texture.srgb_decode_texparameterIuiv
 dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.create_shader
 dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.shader_source
 dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.compile_shader
@@ -17471,6 +17501,12 @@ dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.get_transform_fe
 dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.transform_feedback_varyings
 dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.compile_compute_shader
 dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.link_compute_shader
+dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.srgb_decode_samplerparameteri
+dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.srgb_decode_samplerparameterf
+dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.srgb_decode_samplerparameteriv
+dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.srgb_decode_samplerparameterfv
+dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.srgb_decode_samplerparameterIiv
+dEQP-GLES31.functional.debug.negative_coverage.get_error.shader.srgb_decode_samplerparameterIuiv
 dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment.scissor
 dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment.depth_func
 dEQP-GLES31.functional.debug.negative_coverage.get_error.fragment.viewport
index a80d6ca..e82734a 100644 (file)
@@ -2503,6 +2503,126 @@ void compile_compute_shader (NegativeTestContext& ctx)
        ctx.endSection();
 }
 
+void srgb_decode_samplerparameteri (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLuint  sampler         = 0x1234;
+       GLint   samplerMode     = -1;
+
+       ctx.glGenSamplers(1, &sampler);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glSamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT, samplerMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteSamplers(1, &sampler);
+}
+
+void srgb_decode_samplerparameterf (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLuint  sampler = 0x1234;
+       GLfloat samplerMode     = -1.0f;
+
+       ctx.glGenSamplers(1, &sampler);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glSamplerParameterf(sampler, GL_TEXTURE_SRGB_DECODE_EXT, samplerMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteSamplers(1, &sampler);
+}
+
+void srgb_decode_samplerparameteriv (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       int             params[1]       = { GL_LINEAR };
+       GLuint  sampler         = 0x1234;
+
+       ctx.glGenSamplers(1, &sampler);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       params[0] = -1;
+       ctx.glSamplerParameteriv(sampler, GL_TEXTURE_SRGB_DECODE_EXT, &params[0]);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteSamplers(1, &sampler);
+}
+
+void srgb_decode_samplerparameterfv (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       float   params[1]       = { GL_LINEAR };
+       GLuint  sampler         = 0x1234;
+
+       ctx.glGenSamplers(1, &sampler);
+
+       params[0] = -1.0f;
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glSamplerParameterfv(sampler, GL_TEXTURE_SRGB_DECODE_EXT, &params[0]);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteSamplers(1, &sampler);
+}
+
+void srgb_decode_samplerparameterIiv (NegativeTestContext& ctx)
+{
+       if (!contextSupports(ctx.getRenderContext().getType(), glu::ApiType::es(3, 2)))
+               TCU_THROW(NotSupportedError, "glSamplerParameterIiv is not supported.");
+
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLint   samplerMode[]   = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX};
+       GLuint  sampler                 = 0x1234;
+
+       ctx.glGenSamplers(1, &sampler);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       samplerMode[0] = -1;
+       samplerMode[1] = -1;
+       ctx.glSamplerParameterIiv(sampler, GL_TEXTURE_SRGB_DECODE_EXT, samplerMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteSamplers(1, &sampler);
+}
+
+void srgb_decode_samplerparameterIuiv (NegativeTestContext& ctx)
+{
+       if (!contextSupports(ctx.getRenderContext().getType(), glu::ApiType::es(3, 2)))
+               TCU_THROW(NotSupportedError, "glSamplerParameterIuiv is not supported.");
+
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLuint  samplerMode[]   = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX};
+       GLuint  sampler                 = 0x1234;
+
+       ctx.glGenSamplers(1, &sampler);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       samplerMode[0] = GL_DONT_CARE;
+       samplerMode[1] = GL_DONT_CARE;
+       ctx.glSamplerParameterIuiv(sampler, GL_TEXTURE_SRGB_DECODE_EXT, samplerMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteSamplers(1, &sampler);
+}
+
 std::vector<FunctionContainer> getNegativeShaderApiTestFunctions ()
 {
        FunctionContainer funcs[] =
@@ -2533,7 +2653,7 @@ std::vector<FunctionContainer> getNegativeShaderApiTestFunctions ()
                {sampler_parameterf,                                    "sampler_parameterf",                                   "Invalid glSamplerParameterf() usage"              },
                {sampler_parameterfv,                                   "sampler_parameterfv",                                  "Invalid glSamplerParameterfv() usage"             },
                {sampler_parameterIiv,                                  "sampler_parameterIiv",                                 "Invalid glSamplerParameterIiv() usage"            },
-               {sampler_parameterIuiv,                                 "sampler_parameterIuiv",                                "Invalid glSamplerParameterIuiv() usage"                   },
+               {sampler_parameterIuiv,                                 "sampler_parameterIuiv",                                "Invalid glSamplerParameterIuiv() usage"           },
                {get_attrib_location,                                   "get_attrib_location",                                  "Invalid glGetAttribLocation() usage"              },
                {get_uniform_location,                                  "get_uniform_location",                                 "Invalid glGetUniformLocation() usage"             },
                {bind_attrib_location,                                  "bind_attrib_location",                                 "Invalid glBindAttribLocation() usage"             },
@@ -2574,6 +2694,12 @@ std::vector<FunctionContainer> getNegativeShaderApiTestFunctions ()
                {transform_feedback_varyings,                   "transform_feedback_varyings",                  "Invalid glTransformFeedbackVaryings() usage"  },
                {compile_compute_shader,                                "compile_compute_shader",                               "Invalid Compute Shader compilation"               },
                {link_compute_shader,                                   "link_compute_shader",                                  "Invalid Compute Shader linkage"                           },
+               {srgb_decode_samplerparameteri,                 "srgb_decode_samplerparameteri",                "Invalid glSamplerParameteri() usage srgb"         },
+               {srgb_decode_samplerparameterf,                 "srgb_decode_samplerparameterf",                "Invalid glSamplerParameterf() usage srgb"         },
+               {srgb_decode_samplerparameteriv,                "srgb_decode_samplerparameteriv",               "Invalid glSamplerParameteriv() usage srgb"        },
+               {srgb_decode_samplerparameterfv,                "srgb_decode_samplerparameterfv",               "Invalid glSamplerParameterfv() usage srgb"        },
+               {srgb_decode_samplerparameterIiv,               "srgb_decode_samplerparameterIiv",              "Invalid glSamplerParameterIiv() usage srgb"   },
+               {srgb_decode_samplerparameterIuiv,              "srgb_decode_samplerparameterIuiv",             "Invalid glSamplerParameterIiuv() usage srgb"  },
        };
 
        return std::vector<FunctionContainer>(DE_ARRAY_BEGIN(funcs), DE_ARRAY_END(funcs));
index 52f7146..4acbdbe 100644 (file)
@@ -1995,6 +1995,7 @@ void texparameterf (NegativeTestContext& ctx)
 void texparameteriv (NegativeTestContext& ctx)
 {
        GLint params[1] = {GL_LINEAR};
+
        GLuint texture = 0x1234;
        ctx.glGenTextures(1, &texture);
        ctx.glBindTexture(GL_TEXTURE_2D, texture);
@@ -3909,6 +3910,132 @@ void texstorage3d_invalid_levels (NegativeTestContext& ctx)
        ctx.glDeleteTextures(2, textures);
 }
 
+void srgb_decode_texparameteri (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLuint  texture         = 0x1234;
+       GLint   textureMode     = -1;
+
+       ctx.glGenTextures(1, &texture);
+       ctx.glBindTexture(GL_TEXTURE_2D, texture);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteTextures(1, &texture);
+}
+
+void srgb_decode_texparameterf (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLuint  texture         = 0x1234;
+       GLfloat textureMode     = -1.0f;
+
+       ctx.glGenTextures(1, &texture);
+       ctx.glBindTexture(GL_TEXTURE_2D, texture);
+
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteTextures(1, &texture);
+}
+
+void srgb_decode_texparameteriv (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLint   params[1]       = {GL_LINEAR};
+       GLuint  texture         = 0x1234;
+
+       ctx.glGenTextures(1, &texture);
+       ctx.glBindTexture(GL_TEXTURE_2D, texture);
+
+       params[0] = -1;
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, &params[0]);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteTextures(1, &texture);
+}
+
+void srgb_decode_texparameterfv (NegativeTestContext& ctx)
+{
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLfloat params[1]       = {GL_LINEAR};
+       GLuint  texture         = 0x1234;
+
+       ctx.glGenTextures(1, &texture);
+       ctx.glBindTexture(GL_TEXTURE_2D, texture);
+
+       params[0] = -1.0f;
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, &params[0]);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteTextures(1, &texture);
+}
+
+void srgb_decode_texparameterIiv (NegativeTestContext& ctx)
+{
+       if (!contextSupports(ctx.getRenderContext().getType(), glu::ApiType::es(3, 2)))
+               TCU_THROW(NotSupportedError,"glTexParameterIiv is not supported.");
+
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLint   textureMode[]   = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX};
+       GLuint  texture                 = 0x1234;
+
+       ctx.glGenTextures(1, &texture);
+       ctx.glBindTexture(GL_TEXTURE_2D, texture);
+
+       textureMode[0] = -1;
+       textureMode[1] = -1;
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glTexParameterIiv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteTextures(1, &texture);
+}
+
+void srgb_decode_texparameterIuiv (NegativeTestContext& ctx)
+{
+       if (!contextSupports(ctx.getRenderContext().getType(), glu::ApiType::es(3, 2)))
+               TCU_THROW(NotSupportedError,"glTexParameterIuiv is not supported.");
+
+       if (!ctx.isExtensionSupported("GL_EXT_texture_sRGB_decode"))
+               TCU_THROW(NotSupportedError, "GL_EXT_texture_sRGB_decode is not supported.");
+
+       GLuint  textureMode[]   = {GL_DEPTH_COMPONENT, GL_STENCIL_INDEX};
+       GLuint  texture                 = 0x1234;
+
+       ctx.glGenTextures(1, &texture);
+       ctx.glBindTexture(GL_TEXTURE_2D, texture);
+
+       textureMode[0] = GL_DONT_CARE;
+       textureMode[1] = GL_DONT_CARE;
+       ctx.beginSection("GL_INVALID_ENUM is generated if pname is GL_TEXTURE_SRGB_DECODE_EXT and the value of param(s) is not a valid value (one of DECODE_EXT, or SKIP_DECODE_EXT).");
+       ctx.glTexParameterIuiv(GL_TEXTURE_2D, GL_TEXTURE_SRGB_DECODE_EXT, textureMode);
+       ctx.expectError(GL_INVALID_ENUM);
+       ctx.endSection();
+
+       ctx.glDeleteTextures(1, &texture);
+}
+
 std::vector<FunctionContainer> getNegativeTextureApiTestFunctions()
 {
        FunctionContainer funcs[] =
@@ -4021,6 +4148,12 @@ std::vector<FunctionContainer> getNegativeTextureApiTestFunctions()
                {texstorage3d,                                                                  "texstorage3d",                                                                         "Invalid glTexStorage3D() usage"                   },
                {texstorage3d_invalid_binding,                                  "texstorage3d_invalid_binding",                                         "Invalid glTexStorage3D() usage"                   },
                {texstorage3d_invalid_levels,                                   "texstorage3d_invalid_levels",                                          "Invalid glTexStorage3D() usage"                   },
+               {srgb_decode_texparameteri,                                             "srgb_decode_texparameteri",                                            "Invalid texparameteri() usage srgb"       },
+               {srgb_decode_texparameterf,                                             "srgb_decode_texparameterf",                                            "Invalid texparameterf() usage srgb"       },
+               {srgb_decode_texparameteriv,                                    "srgb_decode_texparameteriv",                                           "Invalid texparameteriv() usage srgb"      },
+               {srgb_decode_texparameterfv,                                    "srgb_decode_texparameterfv",                                           "Invalid texparameterfv() usage srgb"      },
+               {srgb_decode_texparameterIiv,                                   "srgb_decode_texparameterIiv",                                          "Invalid texparameterIiv() usage srgb"     },
+               {srgb_decode_texparameterIuiv,                                  "srgb_decode_texparameterIuiv",                                         "Invalid texparameterIuiv() usage srgb"    },
        };
 
        return std::vector<FunctionContainer>(DE_ARRAY_BEGIN(funcs), DE_ARRAY_END(funcs));