diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/tests/gl_tests/SRGBTextureTest.cpp | 154 |
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 |