Index: gpu/command_buffer/service/feature_info_unittest.cc |
diff --git a/gpu/command_buffer/service/feature_info_unittest.cc b/gpu/command_buffer/service/feature_info_unittest.cc |
index 1010f993d1a776b8f71e8f54f872d58b3f7ddc12..6e2cb4647c956caa0c437517d6c9ecd9cde9e9a4 100644 |
--- a/gpu/command_buffer/service/feature_info_unittest.cc |
+++ b/gpu/command_buffer/service/feature_info_unittest.cc |
@@ -433,6 +433,187 @@ TEST_F(FeatureInfoTest, InitializeEXT_read_format_bgra) { |
GL_BGRA8_EXT)); |
} |
+TEST_F(FeatureInfoTest, InitializeEXT_texture_storage) { |
+ SetupInitExpectations("GL_EXT_texture_storage"); |
+ EXPECT_TRUE(info_->feature_flags().ext_texture_storage); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( |
+ GL_TEXTURE_IMMUTABLE_FORMAT_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_BGRA8_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGBA32F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGB32F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_ALPHA32F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE32F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE_ALPHA32F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGBA16F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGB16F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_ALPHA16F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE16F_EXT)); |
+ EXPECT_FALSE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE_ALPHA16F_EXT)); |
+} |
+ |
+TEST_F(FeatureInfoTest, InitializeARB_texture_storage) { |
+ SetupInitExpectations("GL_ARB_texture_storage"); |
+ EXPECT_TRUE(info_->feature_flags().ext_texture_storage); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_TRUE(info_->validators()->texture_parameter.IsValid( |
+ GL_TEXTURE_IMMUTABLE_FORMAT_EXT)); |
+} |
+ |
+TEST_F(FeatureInfoTest, InitializeEXT_texture_storage_BGRA) { |
+ SetupInitExpectations("GL_EXT_texture_storage GL_EXT_bgra"); |
+ EXPECT_TRUE(info_->feature_flags().ext_texture_storage); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_BGRA8_EXT)); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+TEST_F(FeatureInfoTest, InitializeARB_texture_storage_BGRA) { |
+ SetupInitExpectations("GL_ARB_texture_storage GL_EXT_bgra"); |
+ EXPECT_TRUE(info_->feature_flags().ext_texture_storage); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_BGRA8_EXT)); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+TEST_F(FeatureInfoTest, InitializeEXT_texture_storage_BGRA8888) { |
+ SetupInitExpectations( |
+ "GL_EXT_texture_storage GL_EXT_texture_format_BGRA8888"); |
+ EXPECT_TRUE(info_->feature_flags().ext_texture_storage); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_BGRA8_EXT)); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+TEST_F(FeatureInfoTest, InitializeEXT_texture_storage_float) { |
+ SetupInitExpectations("GL_EXT_texture_storage GL_OES_texture_float"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_float")); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGBA32F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGB32F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_ALPHA32F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE32F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE_ALPHA32F_EXT)); |
+} |
+ |
+TEST_F(FeatureInfoTest, InitializeEXT_texture_storage_half_float) { |
+ SetupInitExpectations("GL_EXT_texture_storage GL_OES_texture_half_float"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_half_float")); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGBA16F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_RGB16F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_ALPHA16F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE16F_EXT)); |
+ EXPECT_TRUE(info_->validators()->texture_internal_format_storage.IsValid( |
+ GL_LUMINANCE_ALPHA16F_EXT)); |
+} |
+ |
+// Check how to handle ES, texture_storage and BGRA combination; 8 tests. |
+ |
+// 1- ES2 + GL_EXT_texture_storage -> GL_EXT_texture_storage (and no |
+// GL_EXT_texture_format_BGRA8888 - we don't claim to handle GL_BGRA8 in |
+// glTexStorage2DEXT) |
+TEST_F(FeatureInfoTest, InitializeGLES2_texture_storage) { |
+ SetupInitExpectationsWithGLVersion( |
+ "GL_EXT_texture_storage", "", "OpenGL ES 2.0"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), |
+ Not(HasSubstr("GL_EXT_texture_format_BGRA8888"))); |
+} |
+ |
+// 2- ES2 + GL_EXT_texture_storage + (GL_EXT_texture_format_BGRA8888 or |
+// GL_APPLE_texture_format_bgra8888) |
+TEST_F(FeatureInfoTest, InitializeGLES2_texture_storage_BGRA) { |
+ SetupInitExpectationsWithGLVersion( |
+ "GL_EXT_texture_storage GL_EXT_texture_format_BGRA8888", |
+ "", |
+ "OpenGL ES 2.0"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+// 3- ES2 + GL_EXT_texture_format_BGRA8888 or GL_APPLE_texture_format_bgra8888 |
+TEST_F(FeatureInfoTest, InitializeGLES2_texture_format_BGRA) { |
+ SetupInitExpectationsWithGLVersion( |
+ "GL_EXT_texture_format_BGRA8888", "", "OpenGL ES 2.0"); |
+ EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_EXT_texture_storage"))); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+// 4- ES2 (neither GL_EXT_texture_storage nor GL_EXT_texture_format_BGRA8888) -> |
+// nothing |
+TEST_F(FeatureInfoTest, InitializeGLES2_neither_texture_storage_nor_BGRA) { |
+ SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 2.0"); |
+ EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_EXT_texture_storage"))); |
+ EXPECT_THAT(info_->extensions(), |
+ Not(HasSubstr("GL_EXT_texture_format_BGRA8888"))); |
+} |
+ |
+// 5- ES3 + GL_EXT_texture_format_BGRA8888 -> GL_EXT_texture_format_BGRA8888 |
+// (we can't expose GL_EXT_texture_storage because we fail the GL_BGRA8 |
+// requirement) |
+TEST_F(FeatureInfoTest, InitializeGLES3_texture_storage_EXT_BGRA) { |
+ SetupInitExpectationsWithGLVersion( |
+ "GL_EXT_texture_format_BGRA8888", "", "OpenGL ES 3.0"); |
+ EXPECT_THAT(info_->extensions(), Not(HasSubstr("GL_EXT_texture_storage"))); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+// 6- ES3 + GL_APPLE_texture_format_bgra8888 -> GL_EXT_texture_storage + |
+// GL_EXT_texture_format_BGRA8888 (driver promises to handle GL_BGRA8 by |
+// exposing GL_APPLE_texture_format_bgra8888) |
+TEST_F(FeatureInfoTest, InitializeGLES3_texture_storage_APPLE_BGRA) { |
+ SetupInitExpectationsWithGLVersion( |
+ "GL_APPLE_texture_format_BGRA8888", "", "OpenGL ES 3.0"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+// 7- ES3 + GL_EXT_texture_storage + GL_EXT_texture_format_BGRA8888 -> |
+// GL_EXT_texture_storage + GL_EXT_texture_format_BGRA8888 (driver promises to |
+// handle GL_BGRA8 by exposing GL_EXT_texture_storage) |
+TEST_F(FeatureInfoTest, InitializeGLES3_EXT_texture_storage_EXT_BGRA) { |
+ SetupInitExpectationsWithGLVersion( |
+ "GL_EXT_texture_storage GL_EXT_texture_format_BGRA8888", |
+ "", |
+ "OpenGL ES 3.0"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_format_BGRA8888")); |
+} |
+ |
+// 8- ES3 + none of the above -> GL_EXT_texture_storage (and no |
+// GL_EXT_texture_format_BGRA8888 - we don't claim to handle GL_BGRA8) |
+TEST_F(FeatureInfoTest, InitializeGLES3_texture_storage) { |
+ SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 3.0"); |
+ EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_texture_storage")); |
+ EXPECT_THAT(info_->extensions(), |
+ Not(HasSubstr("GL_EXT_texture_format_BGRA8888"))); |
+} |
+ |
TEST_F(FeatureInfoTest, InitializeARB_texture_float) { |
SetupInitExpectations("GL_ARB_texture_float"); |
EXPECT_TRUE(info_->feature_flags().chromium_color_buffer_float_rgba); |