summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-12 09:22:09 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-12 09:22:09 +0000
commit5644581074682888f92621c8ffeeaa7f9c7fe86e (patch)
tree3d047ae2915feaf37ab20e0fef88febfea3b0d79 /gpu/command_buffer
parent68dee6cf1332b8ac7c9769b00d23195615ae6c10 (diff)
downloadchromium_src-5644581074682888f92621c8ffeeaa7f9c7fe86e.zip
chromium_src-5644581074682888f92621c8ffeeaa7f9c7fe86e.tar.gz
chromium_src-5644581074682888f92621c8ffeeaa7f9c7fe86e.tar.bz2
Add support for GL_EXT_read_format_bgra.
I think this is all that is needed. TEST=unit tests BUG=none Review URL: http://codereview.chromium.org/3109008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55860 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer')
-rw-r--r--gpu/command_buffer/service/context_group.cc23
-rw-r--r--gpu/command_buffer/service/context_group_unittest.cc19
2 files changed, 40 insertions, 2 deletions
diff --git a/gpu/command_buffer/service/context_group.cc b/gpu/command_buffer/service/context_group.cc
index 4e625c41..c0a9a98 100644
--- a/gpu/command_buffer/service/context_group.cc
+++ b/gpu/command_buffer/service/context_group.cc
@@ -65,15 +65,34 @@ bool ContextGroup::Initialize() {
GL_COMPRESSED_RGBA_S3TC_DXT1_EXT);
}
+ bool enable_texture_format_bgra8888 = false;
+ bool enable_read_format_bgra = false;
// Check if we should allow GL_EXT_texture_format_BGRA8888
if (strstr(extensions, "GL_EXT_texture_format_BGRA8888") ||
- strstr(extensions, "GL_APPLE_texture_format_BGRA8888") ||
- strstr(extensions, "GL_EXT_bgra")) {
+ strstr(extensions, "GL_APPLE_texture_format_BGRA8888")) {
+ enable_texture_format_bgra8888 = true;
+ }
+
+ if (strstr(extensions, "GL_EXT_bgra")) {
+ enable_texture_format_bgra8888 = true;
+ enable_read_format_bgra = true;
+ }
+
+ if (strstr(extensions, "GL_EXT_read_format_bgra")) {
+ enable_read_format_bgra = true;
+ }
+
+ if (enable_texture_format_bgra8888) {
AddExtensionString("GL_EXT_texture_format_BGRA8888");
validators_.texture_internal_format.AddValue(GL_BGRA_EXT);
validators_.texture_format.AddValue(GL_BGRA_EXT);
}
+ if (enable_read_format_bgra) {
+ AddExtensionString("GL_EXT_read_format_bgra");
+ validators_.read_pixel_format.AddValue(GL_BGRA_EXT);
+ }
+
// Check if we should allow GL_OES_texture_npot
if (strstr(extensions, "GL_ARB_texture_non_power_of_two") ||
strstr(extensions, "GL_OES_texture_npot")) {
diff --git a/gpu/command_buffer/service/context_group_unittest.cc b/gpu/command_buffer/service/context_group_unittest.cc
index 3f8c65e..34c8adc 100644
--- a/gpu/command_buffer/service/context_group_unittest.cc
+++ b/gpu/command_buffer/service/context_group_unittest.cc
@@ -136,6 +136,8 @@ TEST_F(ContextGroupTest, InitializeNoExtensions) {
GL_COMPRESSED_RGB_S3TC_DXT1_EXT));
EXPECT_FALSE(group_.validators()->compressed_texture_format.IsValid(
GL_COMPRESSED_RGBA_S3TC_DXT1_EXT));
+ EXPECT_FALSE(group_.validators()->read_pixel_format.IsValid(
+ GL_BGRA_EXT));
}
TEST_F(ContextGroupTest, InitializeNPOTExtensionGLES) {
@@ -190,10 +192,14 @@ TEST_F(ContextGroupTest, InitializeEXT_texture_format_BGRA8888GL) {
group_.Initialize();
EXPECT_THAT(group_.extensions(),
HasSubstr("GL_EXT_texture_format_BGRA8888"));
+ EXPECT_THAT(group_.extensions(),
+ HasSubstr("GL_EXT_read_format_bgra"));
EXPECT_TRUE(group_.validators()->texture_format.IsValid(
GL_BGRA_EXT));
EXPECT_TRUE(group_.validators()->texture_internal_format.IsValid(
GL_BGRA_EXT));
+ EXPECT_TRUE(group_.validators()->read_pixel_format.IsValid(
+ GL_BGRA_EXT));
}
TEST_F(ContextGroupTest, InitializeEXT_texture_format_BGRA8888Apple) {
@@ -207,6 +213,19 @@ TEST_F(ContextGroupTest, InitializeEXT_texture_format_BGRA8888Apple) {
GL_BGRA_EXT));
}
+TEST_F(ContextGroupTest, InitializeEXT_read_format_bgra) {
+ SetupInitExpectations("GL_EXT_read_format_bgra");
+ group_.Initialize();
+ EXPECT_THAT(group_.extensions(),
+ HasSubstr("GL_EXT_read_format_bgra"));
+ EXPECT_FALSE(group_.validators()->texture_format.IsValid(
+ GL_BGRA_EXT));
+ EXPECT_FALSE(group_.validators()->texture_internal_format.IsValid(
+ GL_BGRA_EXT));
+ EXPECT_TRUE(group_.validators()->read_pixel_format.IsValid(
+ GL_BGRA_EXT));
+}
+
TEST_F(ContextGroupTest, InitializeOES_texture_floatGLES2) {
SetupInitExpectations("GL_OES_texture_float");
group_.Initialize();