Implement GL_EXT_texture_sRGB_decode for GL.
BUG=angleproject:1383
BUG=655247
Change-Id: I409b12e1ae418530576de5ec9ce26b7be5d91650
Reviewed-on: https://chromium-review.googlesource.com/400807
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index a7b9f9a..a45e1f2 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -471,6 +471,15 @@
}
break;
+ case GL_TEXTURE_SRGB_DECODE_EXT:
+ if (!context->getExtensions().textureSRGBDecode)
+ {
+ context->handleError(
+ Error(GL_INVALID_ENUM, "GL_EXT_texture_sRGB_decode is not enabled."));
+ return false;
+ }
+ break;
+
default:
context->handleError(Error(GL_INVALID_ENUM, "Unknown pname."));
return false;
@@ -603,6 +612,29 @@
}
template <typename ParamType>
+bool ValidateTextureSRGBDecodeValue(Context *context, ParamType *params)
+{
+ if (!context->getExtensions().textureSRGBDecode)
+ {
+ context->handleError(Error(GL_INVALID_ENUM, "GL_EXT_texture_sRGB_decode is not enabled."));
+ return false;
+ }
+
+ switch (ConvertToGLenum(params[0]))
+ {
+ case GL_DECODE_EXT:
+ case GL_SKIP_DECODE_EXT:
+ break;
+
+ default:
+ context->handleError(Error(GL_INVALID_ENUM, "Unknown param value."));
+ return false;
+ }
+
+ return true;
+}
+
+template <typename ParamType>
bool ValidateTexParameterBase(Context *context,
GLenum target,
GLenum pname,
@@ -777,6 +809,13 @@
}
break;
+ case GL_TEXTURE_SRGB_DECODE_EXT:
+ if (!ValidateTextureSRGBDecodeValue(context, params))
+ {
+ return false;
+ }
+ break;
+
default:
context->handleError(Error(GL_INVALID_ENUM, "Unknown pname."));
return false;
@@ -857,6 +896,13 @@
}
break;
+ case GL_TEXTURE_SRGB_DECODE_EXT:
+ if (!ValidateTextureSRGBDecodeValue(context, params))
+ {
+ return false;
+ }
+ break;
+
default:
context->handleError(Error(GL_INVALID_ENUM, "Unknown pname."));
return false;
@@ -901,6 +947,15 @@
case GL_TEXTURE_COMPARE_FUNC:
break;
+ case GL_TEXTURE_SRGB_DECODE_EXT:
+ if (!context->getExtensions().textureSRGBDecode)
+ {
+ context->handleError(
+ Error(GL_INVALID_ENUM, "GL_EXT_texture_sRGB_decode is not enabled."));
+ return false;
+ }
+ break;
+
default:
context->handleError(Error(GL_INVALID_ENUM, "Unknown pname."));
return false;