summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp')
-rw-r--r--Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp154
1 files changed, 154 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
new file mode 100644
index 000000000..5346f6de1
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp
@@ -0,0 +1,154 @@
+//
+// Copyright 2015 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+#include "test_utils/ANGLETest.h"
+
+using namespace angle;
+
+namespace
+{
+
+class SRGBTextureTest : public ANGLETest
+{
+ protected:
+ SRGBTextureTest()
+ {
+ setWindowWidth(128);
+ setWindowHeight(128);
+ setConfigRedBits(8);
+ setConfigGreenBits(8);
+ setConfigBlueBits(8);
+ setConfigAlphaBits(8);
+ }
+
+ void SetUp() override
+ {
+ ANGLETest::SetUp();
+ }
+
+ void TearDown() override
+ {
+ ANGLETest::TearDown();
+ }
+};
+
+TEST_P(SRGBTextureTest, SRGBValidation)
+{
+ bool supported = extensionEnabled("GL_EXT_sRGB") || getClientMajorVersion() == 3;
+
+ GLuint tex = 0;
+ glGenTextures(1, &tex);
+ glBindTexture(GL_TEXTURE_2D, tex);
+
+ GLubyte pixel[3] = { 0 };
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB, 1, 1, 0, GL_SRGB, GL_UNSIGNED_BYTE, pixel);
+ if (supported)
+ {
+ EXPECT_GL_NO_ERROR();
+
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_SRGB, GL_UNSIGNED_BYTE, pixel);
+ EXPECT_GL_NO_ERROR();
+
+ glGenerateMipmap(GL_TEXTURE_2D);
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+ }
+
+ glDeleteTextures(1, &tex);
+}
+
+TEST_P(SRGBTextureTest, SRGBAValidation)
+{
+ bool supported = extensionEnabled("GL_EXT_sRGB") || getClientMajorVersion() == 3;
+
+ GLuint tex = 0;
+ glGenTextures(1, &tex);
+ glBindTexture(GL_TEXTURE_2D, tex);
+
+ GLubyte pixel[4] = { 0 };
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB_ALPHA_EXT, 1, 1, 0, GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, pixel);
+ if (supported)
+ {
+ EXPECT_GL_NO_ERROR();
+
+ glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, GL_SRGB_ALPHA_EXT, GL_UNSIGNED_BYTE, pixel);
+ EXPECT_GL_NO_ERROR();
+
+ glGenerateMipmap(GL_TEXTURE_2D);
+ if (getClientMajorVersion() == 2)
+ {
+ EXPECT_GL_ERROR(GL_INVALID_OPERATION);
+ }
+ else
+ {
+ EXPECT_GL_NO_ERROR();
+ }
+ }
+ else
+ {
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+ }
+
+ glDeleteTextures(1, &tex);
+}
+
+TEST_P(SRGBTextureTest, SRGBARenderbuffer)
+{
+ bool supported = extensionEnabled("GL_EXT_sRGB") || getClientMajorVersion() == 3;
+
+ GLuint rbo = 0;
+ glGenRenderbuffers(1, &rbo);
+ glBindRenderbuffer(GL_RENDERBUFFER, rbo);
+
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_SRGB8_ALPHA8_EXT, 1, 1);
+ if (supported)
+ {
+ EXPECT_GL_NO_ERROR();
+ }
+ else
+ {
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+
+ // Make sure the rbo has a size for future tests
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, 1, 1);
+ EXPECT_GL_NO_ERROR();
+ }
+
+ GLuint fbo = 0;
+ glGenFramebuffers(1, &fbo);
+ glBindFramebuffer(GL_FRAMEBUFFER, fbo);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbo);
+ EXPECT_GL_NO_ERROR();
+
+ GLint colorEncoding = 0;
+ glGetFramebufferAttachmentParameteriv(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, &colorEncoding);
+ if (supported)
+ {
+ EXPECT_GL_NO_ERROR();
+ EXPECT_EQ(GL_SRGB_EXT, colorEncoding);
+ }
+ else
+ {
+ EXPECT_GL_ERROR(GL_INVALID_ENUM);
+ }
+
+ glDeleteFramebuffers(1, &fbo);
+ glDeleteRenderbuffers(1, &rbo);
+}
+
+// Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
+ANGLE_INSTANTIATE_TEST(SRGBTextureTest,
+ ES2_D3D9(),
+ ES2_D3D11(),
+ ES3_D3D11(),
+ ES2_OPENGL(),
+ ES2_OPENGLES());
+
+} // namespace