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/Context.cpp b/src/libANGLE/Context.cpp
index 902d903..f9a37c8 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -417,12 +417,14 @@
Texture *zeroTexture2DArray = new Texture(mImplementation.get(), 0, TextureType::_2DArray);
mZeroTextures[TextureType::_2DArray].set(this, zeroTexture2DArray);
}
- if (getClientVersion() >= Version(3, 1))
+ if (getClientVersion() >= Version(3, 1) || mSupportedExtensions.textureMultisample)
{
- // TODO(http://anglebug.com/2775): These could also be enabled via extension
Texture *zeroTexture2DMultisample =
new Texture(mImplementation.get(), 0, TextureType::_2DMultisample);
mZeroTextures[TextureType::_2DMultisample].set(this, zeroTexture2DMultisample);
+ }
+ if (getClientVersion() >= Version(3, 1))
+ {
Texture *zeroTexture2DMultisampleArray =
new Texture(mImplementation.get(), 0, TextureType::_2DMultisampleArray);
mZeroTextures[TextureType::_2DMultisampleArray].set(this, zeroTexture2DMultisampleArray);
@@ -3183,6 +3185,7 @@
supportedExtensions.multiview = false;
supportedExtensions.maxViews = 1u;
supportedExtensions.copyTexture3d = false;
+ supportedExtensions.textureMultisample = false;
}
if (getClientVersion() < ES_3_1)
@@ -7655,6 +7658,20 @@
}
}
+ if (getExtensions().textureMultisample)
+ {
+ switch (pname)
+ {
+ case GL_MAX_COLOR_TEXTURE_SAMPLES_ANGLE:
+ case GL_MAX_INTEGER_SAMPLES_ANGLE:
+ case GL_MAX_DEPTH_TEXTURE_SAMPLES_ANGLE:
+ case GL_TEXTURE_BINDING_2D_MULTISAMPLE_ANGLE:
+ *type = GL_INT;
+ *numParams = 1;
+ return true;
+ }
+ }
+
if (getClientVersion() < Version(3, 1))
{
return false;
@@ -8239,7 +8256,7 @@
mCachedValidBindTextureTypes = {{
true, /* _2D */
isGLES3, /* _2DArray */
- isGLES31, /* _2DMultisample */
+ isGLES31 || exts.textureMultisample, /* _2DMultisample */
exts.textureStorageMultisample2DArray, /* _2DMultisampleArray */
isGLES3, /* _3D */
exts.eglImageExternal || exts.eglStreamConsumerExternal, /* External */