| 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 041ab36c916e0d4864e90a41360b5192d1422615..8164b3580ac254999a4b03f56641bd64a2f60718 100644
|
| --- a/gpu/command_buffer/service/feature_info_unittest.cc
|
| +++ b/gpu/command_buffer/service/feature_info_unittest.cc
|
| @@ -32,19 +32,23 @@ using ::testing::StrictMock;
|
| namespace gpu {
|
| namespace gles2 {
|
|
|
| +namespace {
|
| +const char kGLRendererStringANGLE[] = "ANGLE (some renderer)";
|
| +} // anonymous namespace
|
| +
|
| class FeatureInfoTest : public testing::Test {
|
| public:
|
| FeatureInfoTest() {
|
| }
|
|
|
| void SetupInitExpectations(const char* extensions) {
|
| - SetupInitExpectationsWithGLVersion(extensions, "");
|
| + SetupInitExpectationsWithGLVersion(extensions, "", "");
|
| }
|
|
|
| void SetupInitExpectationsWithGLVersion(
|
| - const char* extensions, const char* version) {
|
| + const char* extensions, const char* renderer, const char* version) {
|
| TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
|
| - gl_.get(), extensions, version);
|
| + gl_.get(), extensions, renderer, version);
|
| info_ = new FeatureInfo();
|
| info_->Initialize();
|
| }
|
| @@ -56,7 +60,7 @@ class FeatureInfoTest : public testing::Test {
|
| void SetupInitExpectationsWithCommandLine(
|
| const char* extensions, const CommandLine& command_line) {
|
| TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion(
|
| - gl_.get(), extensions, "");
|
| + gl_.get(), extensions, "", "");
|
| info_ = new FeatureInfo(command_line);
|
| info_->Initialize();
|
| }
|
| @@ -95,6 +99,7 @@ TEST_F(FeatureInfoTest, Basic) {
|
| SetupWithoutInit();
|
| // Test it starts off uninitialized.
|
| EXPECT_FALSE(info_->feature_flags().chromium_framebuffer_multisample);
|
| + EXPECT_FALSE(info_->feature_flags().use_core_framebuffer_multisample);
|
| EXPECT_FALSE(info_->feature_flags().multisampled_render_to_texture);
|
| EXPECT_FALSE(info_->feature_flags(
|
| ).use_img_for_multisampled_render_to_texture);
|
| @@ -103,6 +108,8 @@ TEST_F(FeatureInfoTest, Basic) {
|
| EXPECT_FALSE(info_->feature_flags().enable_texture_float_linear);
|
| EXPECT_FALSE(info_->feature_flags().enable_texture_half_float_linear);
|
| EXPECT_FALSE(info_->feature_flags().oes_egl_image_external);
|
| + EXPECT_FALSE(info_->feature_flags().oes_depth24);
|
| + EXPECT_FALSE(info_->feature_flags().packed_depth24_stencil8);
|
| EXPECT_FALSE(info_->feature_flags().chromium_stream_texture);
|
| EXPECT_FALSE(info_->feature_flags().angle_translated_shader_source);
|
| EXPECT_FALSE(info_->feature_flags().angle_pack_reverse_row_order);
|
| @@ -118,6 +125,7 @@ TEST_F(FeatureInfoTest, Basic) {
|
| EXPECT_FALSE(info_->feature_flags().use_async_readpixels);
|
| EXPECT_FALSE(info_->feature_flags().ext_discard_framebuffer);
|
| EXPECT_FALSE(info_->feature_flags().angle_depth_texture);
|
| + EXPECT_FALSE(info_->feature_flags().is_angle);
|
|
|
| #define GPU_OP(type, name) EXPECT_FALSE(info_->workarounds().name);
|
| GPU_DRIVER_BUG_WORKAROUNDS(GPU_OP)
|
| @@ -289,6 +297,11 @@ TEST_F(FeatureInfoTest, InitializeNoExtensions) {
|
| GL_DEPTH24_STENCIL8_OES));
|
| }
|
|
|
| +TEST_F(FeatureInfoTest, InitializeWithANGLE) {
|
| + SetupInitExpectationsWithGLVersion("", kGLRendererStringANGLE, "");
|
| + EXPECT_TRUE(info_->feature_flags().is_angle);
|
| +}
|
| +
|
| TEST_F(FeatureInfoTest, InitializeNPOTExtensionGLES) {
|
| SetupInitExpectations("GL_OES_texture_npot");
|
| EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_texture_npot"));
|
| @@ -548,6 +561,44 @@ TEST_F(FeatureInfoTest, InitializeEXT_framebuffer_multisample) {
|
| GL_RENDERBUFFER_SAMPLES_EXT));
|
| }
|
|
|
| +TEST_F(FeatureInfoTest, InitializeANGLE_framebuffer_multisample) {
|
| + SetupInitExpectationsWithGLVersion(
|
| + "GL_ANGLE_framebuffer_multisample", kGLRendererStringANGLE, "");
|
| + EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample);
|
| + EXPECT_THAT(info_->extensions(),
|
| + HasSubstr("GL_CHROMIUM_framebuffer_multisample"));
|
| + EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid(
|
| + GL_READ_FRAMEBUFFER_EXT));
|
| + EXPECT_TRUE(info_->validators()->frame_buffer_target.IsValid(
|
| + GL_DRAW_FRAMEBUFFER_EXT));
|
| + EXPECT_TRUE(info_->validators()->g_l_state.IsValid(
|
| + GL_READ_FRAMEBUFFER_BINDING_EXT));
|
| + EXPECT_TRUE(info_->validators()->g_l_state.IsValid(
|
| + GL_MAX_SAMPLES_EXT));
|
| + EXPECT_TRUE(info_->validators()->render_buffer_parameter.IsValid(
|
| + GL_RENDERBUFFER_SAMPLES_EXT));
|
| +}
|
| +
|
| +// We don't allow ANGLE_framebuffer_multisample on non-ANGLE implementations,
|
| +// because we wouldn't be choosing the right driver entry point and because the
|
| +// extension was falsely advertised on some Android devices (crbug.com/165736).
|
| +TEST_F(FeatureInfoTest, InitializeANGLE_framebuffer_multisampleWithoutANGLE) {
|
| + SetupInitExpectations("GL_ANGLE_framebuffer_multisample");
|
| + EXPECT_FALSE(info_->feature_flags().chromium_framebuffer_multisample);
|
| + EXPECT_THAT(info_->extensions(),
|
| + Not(HasSubstr("GL_CHROMIUM_framebuffer_multisample")));
|
| + EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid(
|
| + GL_READ_FRAMEBUFFER_EXT));
|
| + EXPECT_FALSE(info_->validators()->frame_buffer_target.IsValid(
|
| + GL_DRAW_FRAMEBUFFER_EXT));
|
| + EXPECT_FALSE(info_->validators()->g_l_state.IsValid(
|
| + GL_READ_FRAMEBUFFER_BINDING_EXT));
|
| + EXPECT_FALSE(info_->validators()->g_l_state.IsValid(
|
| + GL_MAX_SAMPLES_EXT));
|
| + EXPECT_FALSE(info_->validators()->render_buffer_parameter.IsValid(
|
| + GL_RENDERBUFFER_SAMPLES_EXT));
|
| +}
|
| +
|
| TEST_F(FeatureInfoTest, InitializeEXT_multisampled_render_to_texture) {
|
| SetupInitExpectations("GL_EXT_multisampled_render_to_texture");
|
| EXPECT_TRUE(info_->feature_flags(
|
| @@ -708,6 +759,7 @@ TEST_F(FeatureInfoTest,
|
|
|
| TEST_F(FeatureInfoTest, InitializeOES_depth24) {
|
| SetupInitExpectations("GL_OES_depth24");
|
| + EXPECT_TRUE(info_->feature_flags().oes_depth24);
|
| EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_depth24"));
|
| EXPECT_TRUE(info_->validators()->render_buffer_format.IsValid(
|
| GL_DEPTH_COMPONENT24));
|
| @@ -860,26 +912,50 @@ TEST_F(FeatureInfoTest, InitializeEXT_discard_framebuffer) {
|
| }
|
|
|
| TEST_F(FeatureInfoTest, InitializeSamplersWithARBSamplerObjects) {
|
| - SetupInitExpectationsWithGLVersion("GL_ARB_sampler_objects", "OpenGL 3.0");
|
| + SetupInitExpectationsWithGLVersion(
|
| + "GL_ARB_sampler_objects", "", "OpenGL 3.0");
|
| EXPECT_TRUE(info_->feature_flags().enable_samplers);
|
| }
|
|
|
| TEST_F(FeatureInfoTest, InitializeWithES3) {
|
| - SetupInitExpectationsWithGLVersion("", "OpenGL ES 3.0");
|
| + SetupInitExpectationsWithGLVersion("", "", "OpenGL ES 3.0");
|
| EXPECT_TRUE(info_->feature_flags().enable_samplers);
|
| EXPECT_TRUE(info_->feature_flags().map_buffer_range);
|
| EXPECT_TRUE(info_->feature_flags().ext_discard_framebuffer);
|
| EXPECT_THAT(info_->extensions(), HasSubstr("GL_EXT_discard_framebuffer"));
|
| + EXPECT_TRUE(info_->feature_flags().chromium_framebuffer_multisample);
|
| + EXPECT_TRUE(info_->feature_flags().use_core_framebuffer_multisample);
|
| + EXPECT_THAT(info_->extensions(),
|
| + HasSubstr("GL_CHROMIUM_framebuffer_multisample"));
|
| EXPECT_FALSE(info_->feature_flags().use_async_readpixels);
|
| + EXPECT_TRUE(info_->feature_flags().oes_depth24);
|
| + EXPECT_THAT(info_->extensions(), HasSubstr("GL_GOOGLE_depth_texture"));
|
| + EXPECT_THAT(info_->extensions(), HasSubstr("GL_CHROMIUM_depth_texture"));
|
| + EXPECT_TRUE(info_->validators()->pixel_type.IsValid(GL_UNSIGNED_INT_24_8));
|
| + EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT)
|
| + .IsValid(GL_UNSIGNED_SHORT));
|
| + EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_COMPONENT)
|
| + .IsValid(GL_UNSIGNED_INT));
|
| + EXPECT_TRUE(info_->GetTextureFormatValidator(GL_DEPTH_STENCIL)
|
| + .IsValid(GL_UNSIGNED_INT_24_8));
|
| + EXPECT_TRUE(info_->feature_flags().packed_depth24_stencil8);
|
| + EXPECT_THAT(info_->extensions(), HasSubstr("GL_OES_depth24"));
|
| + EXPECT_TRUE(
|
| + info_->validators()->render_buffer_format.IsValid(GL_DEPTH_COMPONENT24));
|
| + EXPECT_TRUE(
|
| + info_->validators()->render_buffer_format.IsValid(GL_DEPTH24_STENCIL8));
|
| + EXPECT_TRUE(
|
| + info_->validators()->texture_internal_format.IsValid(GL_DEPTH_STENCIL));
|
| + EXPECT_TRUE(info_->validators()->texture_format.IsValid(GL_DEPTH_STENCIL));
|
| }
|
|
|
| TEST_F(FeatureInfoTest, InitializeWithoutSamplers) {
|
| - SetupInitExpectationsWithGLVersion("", "OpenGL GL 3.0");
|
| + SetupInitExpectationsWithGLVersion("", "", "OpenGL GL 3.0");
|
| EXPECT_FALSE(info_->feature_flags().enable_samplers);
|
| }
|
|
|
| TEST_F(FeatureInfoTest, InitializeWithES3AndFences) {
|
| - SetupInitExpectationsWithGLVersion("EGL_KHR_fence_sync", "OpenGL ES 3.0");
|
| + SetupInitExpectationsWithGLVersion("EGL_KHR_fence_sync", "", "OpenGL ES 3.0");
|
| EXPECT_TRUE(info_->feature_flags().use_async_readpixels);
|
| }
|
|
|
|
|