Implement GL_ANGLE_texture_multisample API part
Support GL_ANGLE_texture_multisample extension.
This patch adds enums of multisampled texture and texStorage2DMultisampleANGLE
API.
TEST=angle_end2end_tests.exe --gtest_filter=TextureMultisampleTest*
TEST=angle_end2end_tests.exe --gtest_filter=NegativeTextureMultisampleTest.Negtive*
BUG=angleproject:2275
Change-Id: I2cab997edc33aa2d0be6082381545335423f64e0
Reviewed-on: https://chromium-review.googlesource.com/c/804613
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/validationES.cpp b/src/libANGLE/validationES.cpp
index 9625028..37c424d 100644
--- a/src/libANGLE/validationES.cpp
+++ b/src/libANGLE/validationES.cpp
@@ -510,7 +510,8 @@
return (context->getClientMajorVersion() >= 3);
case TextureType::_2DMultisample:
- return (context->getClientVersion() >= Version(3, 1));
+ return (context->getClientVersion() >= Version(3, 1) ||
+ context->getExtensions().textureMultisample);
case TextureType::_2DMultisampleArray:
return context->getExtensions().textureStorageMultisample2DArray;
@@ -6412,9 +6413,11 @@
break;
case GL_TEXTURE_2D_MULTISAMPLE:
- if (context->getClientVersion() < ES_3_1)
+ if (context->getClientVersion() < ES_3_1 &&
+ !context->getExtensions().textureMultisample)
{
- ANGLE_VALIDATION_ERR(context, InvalidEnum(), TextureTargetRequiresES31);
+ ANGLE_VALIDATION_ERR(context, InvalidEnum(),
+ MultisampleTextureExtensionOrES31Required);
return false;
}
break;
@@ -6539,4 +6542,25 @@
return true;
}
+bool ValidateTexStorage2DMultisampleBase(Context *context,
+ TextureType target,
+ GLsizei samples,
+ GLint internalFormat,
+ GLsizei width,
+ GLsizei height)
+{
+ if (target != TextureType::_2DMultisample)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidEnum(), InvalidTarget);
+ return false;
+ }
+
+ if (width < 1 || height < 1)
+ {
+ ANGLE_VALIDATION_ERR(context, InvalidValue(), NegativeSize);
+ return false;
+ }
+
+ return ValidateTexStorageMultisample(context, target, samples, internalFormat, width, height);
+}
} // namespace gl