Support GL_OES_texture_border_clamp
Added support for GL_TEXTURE_BORDER_COLOR and GL_CLAMP_TO_BORDER in
OpenGL/OpenGLES, Direct3D9 and Direct3D11 backends.
For integer textures in OpenGLES3 contexts these additional entry points
are available now:
void glTexParameterIivOES(enum target, enum pname, const int *params);
void glTexParameterIuivOES(enum target, enum pname, const uint *params);
void glGetTexParameterIivOES(enum target, enum pname, int *params);
void glGetTexParameterIuivOES(enum target, enum pname, uint *params);
void glSamplerParameterIivOES(uint sampler, enum pname, const int *params);
void glSamplerParameterIuivOES(uint sampler, enum pname, const uint *params);
void glGetSamplerParameterIivOES(uint sampler, enum pname, int *params);
void glGetSamplerParameterIuivOES(uint sampler, enum pname, uint *params);
BUG=angleproject:2890
TEST=angle_end2end_tests.TextureBorderClamp*
Change-Id: Iee3eeb399d8d7851b3b30694ad8f21a2111f5828
Reviewed-on: https://chromium-review.googlesource.com/c/1257824
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/validationES2.cpp b/src/libANGLE/validationES2.cpp
index 8db6a85..e754e5d 100644
--- a/src/libANGLE/validationES2.cpp
+++ b/src/libANGLE/validationES2.cpp
@@ -6203,6 +6203,32 @@
return ValidateGetTexParameterBase(context, target, pname, nullptr);
}
+bool ValidateGetTexParameterIivOES(Context *context,
+ TextureType target,
+ GLenum pname,
+ GLint *params)
+{
+ if (context->getClientMajorVersion() < 3)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), ES3Required);
+ return false;
+ }
+ return ValidateGetTexParameterBase(context, target, pname, nullptr);
+}
+
+bool ValidateGetTexParameterIuivOES(Context *context,
+ TextureType target,
+ GLenum pname,
+ GLuint *params)
+{
+ if (context->getClientMajorVersion() < 3)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), ES3Required);
+ return false;
+ }
+ return ValidateGetTexParameterBase(context, target, pname, nullptr);
+}
+
bool ValidateGetUniformfv(Context *context, GLuint program, GLint location, GLfloat *params)
{
return ValidateGetUniformBase(context, program, location);
@@ -6274,7 +6300,7 @@
bool ValidateTexParameterf(Context *context, TextureType target, GLenum pname, GLfloat param)
{
- return ValidateTexParameterBase(context, target, pname, 1, ¶m);
+ return ValidateTexParameterBase(context, target, pname, -1, false, ¶m);
}
bool ValidateTexParameterfv(Context *context,
@@ -6282,17 +6308,43 @@
GLenum pname,
const GLfloat *params)
{
- return ValidateTexParameterBase(context, target, pname, -1, params);
+ return ValidateTexParameterBase(context, target, pname, -1, true, params);
}
bool ValidateTexParameteri(Context *context, TextureType target, GLenum pname, GLint param)
{
- return ValidateTexParameterBase(context, target, pname, 1, ¶m);
+ return ValidateTexParameterBase(context, target, pname, -1, false, ¶m);
}
bool ValidateTexParameteriv(Context *context, TextureType target, GLenum pname, const GLint *params)
{
- return ValidateTexParameterBase(context, target, pname, -1, params);
+ return ValidateTexParameterBase(context, target, pname, -1, true, params);
+}
+
+bool ValidateTexParameterIivOES(Context *context,
+ TextureType target,
+ GLenum pname,
+ const GLint *params)
+{
+ if (context->getClientMajorVersion() < 3)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), ES3Required);
+ return false;
+ }
+ return ValidateTexParameterBase(context, target, pname, -1, true, params);
+}
+
+bool ValidateTexParameterIuivOES(Context *context,
+ TextureType target,
+ GLenum pname,
+ const GLuint *params)
+{
+ if (context->getClientMajorVersion() < 3)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidOperation(), ES3Required);
+ return false;
+ }
+ return ValidateTexParameterBase(context, target, pname, -1, true, params);
}
bool ValidateUseProgram(Context *context, GLuint program)