main: return error if asking for GL_TEXTURE_BORDER_COLOR in TEXTURE_2D_MULTISAMPLE...
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Mon, 7 Nov 2016 10:49:13 +0000 (11:49 +0100)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Tue, 15 Nov 2016 06:44:12 +0000 (07:44 +0100)
OpenGL ES 3.2 says in section 8.10. "TEXTURE PARAMETERS", at the end of
the section:

"An INVALID_ENUM error is generated if target is TEXTURE_2D_-
MULTISAMPLE or TEXTURE_2D_MULTISAMPLE_ARRAY , and pname is any
sampler state from table 21.12."

GL_TEXTURE_BORDER_COLOR is present in that table.

v2:
- Add check to _mesa_texture_parameteriv() (Kenneth)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98250

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/main/texparam.c

index 29eed078650adf0d8d37ed86799290930e6b38b1..4db406fa9f645422859761bc31b615c4eaf82757 100644 (file)
@@ -934,6 +934,10 @@ _mesa_texture_parameteriv(struct gl_context *ctx,
    switch (pname) {
    case GL_TEXTURE_BORDER_COLOR:
       {
+         if (!_mesa_target_allows_setting_sampler_parameters(texObj->Target)) {
+            _mesa_error(ctx, GL_INVALID_ENUM, "glTextureParameteriv(texture)");
+            return;
+         }
          /* convert int params to float */
          GLfloat fparams[4];
          fparams[0] = INT_TO_FLOAT(params[0]);
@@ -974,6 +978,10 @@ _mesa_texture_parameterIiv(struct gl_context *ctx,
 {
    switch (pname) {
    case GL_TEXTURE_BORDER_COLOR:
+      if (!_mesa_target_allows_setting_sampler_parameters(texObj->Target)) {
+         _mesa_error(ctx, GL_INVALID_ENUM, "glTextureParameterIiv(texture)");
+         return;
+      }
       FLUSH_VERTICES(ctx, _NEW_TEXTURE);
       /* set the integer-valued border color */
       COPY_4V(texObj->Sampler.BorderColor.i, params);
@@ -992,6 +1000,10 @@ _mesa_texture_parameterIuiv(struct gl_context *ctx,
 {
    switch (pname) {
    case GL_TEXTURE_BORDER_COLOR:
+      if (!_mesa_target_allows_setting_sampler_parameters(texObj->Target)) {
+         _mesa_error(ctx, GL_INVALID_ENUM, "glTextureParameterIuiv(texture)");
+         return;
+      }
       FLUSH_VERTICES(ctx, _NEW_TEXTURE);
       /* set the unsigned integer-valued border color */
       COPY_4V(texObj->Sampler.BorderColor.ui, params);