diff options
author | danakj <danakj@chromium.org> | 2016-03-16 17:10:16 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-17 00:11:22 +0000 |
commit | ea80a42043ee4fb565cef829b2914fbda7bb837d (patch) | |
tree | 099a24faa53d57583630dacda92a1621acf13681 /content/common/gpu | |
parent | 27d091d7ac6fdbb88d593c92d515c2a8d63544fc (diff) | |
download | chromium_src-ea80a42043ee4fb565cef829b2914fbda7bb837d.zip chromium_src-ea80a42043ee4fb565cef829b2914fbda7bb837d.tar.gz chromium_src-ea80a42043ee4fb565cef829b2914fbda7bb837d.tar.bz2 |
Remove dependency on WebGraphicsContext3D from GLHelper unit tests.
R=kbr@chromium.org
BUG=584497
Review URL: https://codereview.chromium.org/1807783002
Cr-Commit-Position: refs/heads/master@{#381596}
Diffstat (limited to 'content/common/gpu')
-rw-r--r-- | content/common/gpu/client/gl_helper_unittest.cc | 148 |
1 files changed, 72 insertions, 76 deletions
diff --git a/content/common/gpu/client/gl_helper_unittest.cc b/content/common/gpu/client/gl_helper_unittest.cc index b84ea87..59ea228 100644 --- a/content/common/gpu/client/gl_helper_unittest.cc +++ b/content/common/gpu/client/gl_helper_unittest.cc @@ -32,7 +32,8 @@ #include "content/common/gpu/client/gl_helper.h" #include "content/common/gpu/client/gl_helper_readback_support.h" #include "content/common/gpu/client/gl_helper_scaling.h" -#include "gpu/blink/webgraphicscontext3d_in_process_command_buffer_impl.h" +#include "gpu/command_buffer/client/gl_in_process_context.h" +#include "gpu/command_buffer/client/gles2_implementation.h" #include "media/base/video_frame.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkBitmap.h" @@ -41,10 +42,6 @@ namespace content { -using blink::WebGLId; -using blink::WebGraphicsContext3D; -using gpu_blink::WebGraphicsContext3DInProcessCommandBufferImpl; - content::GLHelper::ScalerQuality kQualities[] = { content::GLHelper::SCALER_QUALITY_BEST, content::GLHelper::SCALER_QUALITY_GOOD, @@ -55,17 +52,34 @@ const char* kQualityNames[] = {"best", "good", "fast", }; class GLHelperTest : public testing::Test { protected: void SetUp() override { - WebGraphicsContext3D::Attributes attributes; - bool lose_context_when_out_of_memory = false; - context_ = - WebGraphicsContext3DInProcessCommandBufferImpl::CreateOffscreenContext( - attributes, lose_context_when_out_of_memory); - context_->InitializeOnCurrentThread(); - context_support_ = context_->GetContextSupport(); - helper_.reset( - new content::GLHelper(context_->GetGLInterface(), context_support_)); - helper_scaling_.reset(new content::GLHelperScaling( - context_->GetGLInterface(), helper_.get())); + gpu::gles2::ContextCreationAttribHelper attributes; + attributes.alpha_size = 8; + attributes.depth_size = 24; + attributes.red_size = 8; + attributes.green_size = 8; + attributes.blue_size = 8; + attributes.stencil_size = 8; + attributes.samples = 4; + attributes.sample_buffers = 1; + attributes.bind_generates_resource = false; + + context_.reset(gpu::GLInProcessContext::Create( + nullptr, /* service */ + nullptr, /* surface */ + true, /* offscreen */ + gfx::kNullAcceleratedWidget, /* window */ + gfx::Size(1, 1), /* size */ + nullptr, /* share_context */ + true, /* use_global_share_group */ + attributes, gfx::PreferDiscreteGpu, + ::gpu::GLInProcessContextSharedMemoryLimits(), + nullptr, /* gpu_memory_buffer_manager */ + nullptr /* image_factory */)); + gl_ = context_->GetImplementation(); + gpu::ContextSupport* support = context_->GetImplementation(); + + helper_.reset(new content::GLHelper(gl_, support)); + helper_scaling_.reset(new content::GLHelperScaling(gl_, helper_.get())); } void TearDown() override { @@ -700,22 +714,15 @@ class GLHelperTest : public testing::Test { } // Binds texture and framebuffer and loads the bitmap pixels into the texture. - void BindTextureAndFrameBuffer(WebGLId texture, - WebGLId framebuffer, + void BindTextureAndFrameBuffer(GLuint texture, + GLuint framebuffer, SkBitmap* bitmap, int width, int height) { - context_->bindFramebuffer(GL_FRAMEBUFFER, framebuffer); - context_->bindTexture(GL_TEXTURE_2D, texture); - context_->texImage2D(GL_TEXTURE_2D, - 0, - GL_RGBA, - width, - height, - 0, - GL_RGBA, - GL_UNSIGNED_BYTE, - bitmap->getPixels()); + gl_->BindFramebuffer(GL_FRAMEBUFFER, framebuffer); + gl_->BindTexture(GL_TEXTURE_2D, texture); + gl_->TexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, + GL_UNSIGNED_BYTE, bitmap->getPixels()); } // Create a test image, transform it using @@ -732,8 +739,10 @@ class GLHelperTest : public testing::Test { DCHECK(out_color_type == kAlpha_8_SkColorType || out_color_type == kRGBA_8888_SkColorType || out_color_type == kBGRA_8888_SkColorType); - WebGLId src_texture = context_->createTexture(); - WebGLId framebuffer = context_->createFramebuffer(); + GLuint src_texture; + gl_->GenTextures(1, &src_texture); + GLuint framebuffer; + gl_->GenFramebuffers(1, &framebuffer); scoped_ptr<SkBitmap> input_pixels = CreateTestBitmap(xsize, ysize, test_pattern); BindTextureAndFrameBuffer( @@ -813,8 +822,8 @@ class GLHelperTest : public testing::Test { dummy_stages, message + " comparing against transformed/scaled"); - context_->deleteTexture(src_texture); - context_->deleteFramebuffer(framebuffer); + gl_->DeleteTextures(1, &src_texture); + gl_->DeleteFramebuffers(1, &framebuffer); } // Scaling test: Create a test image, scale it using GLHelperScaling @@ -826,8 +835,10 @@ class GLHelperTest : public testing::Test { int test_pattern, size_t quality_index, bool flip) { - WebGLId src_texture = context_->createTexture(); - WebGLId framebuffer = context_->createFramebuffer(); + GLuint src_texture; + gl_->GenTextures(1, &src_texture); + GLuint framebuffer; + gl_->GenFramebuffers(1, &framebuffer); scoped_ptr<SkBitmap> input_pixels = CreateTestBitmap(xsize, ysize, test_pattern); BindTextureAndFrameBuffer( @@ -857,12 +868,9 @@ class GLHelperTest : public testing::Test { gfx::Size(scaled_xsize, scaled_ysize), message); - WebGLId dst_texture = - helper_->CopyAndScaleTexture(src_texture, - gfx::Size(xsize, ysize), - gfx::Size(scaled_xsize, scaled_ysize), - flip, - kQualities[quality_index]); + GLuint dst_texture = helper_->CopyAndScaleTexture( + src_texture, gfx::Size(xsize, ysize), + gfx::Size(scaled_xsize, scaled_ysize), flip, kQualities[quality_index]); SkBitmap output_pixels; output_pixels.allocPixels(SkImageInfo::Make(scaled_xsize, @@ -906,9 +914,9 @@ class GLHelperTest : public testing::Test { stages, message + " comparing against scaled"); - context_->deleteTexture(src_texture); - context_->deleteTexture(dst_texture); - context_->deleteFramebuffer(framebuffer); + gl_->DeleteTextures(1, &src_texture); + gl_->DeleteTextures(1, &dst_texture); + gl_->DeleteFramebuffers(1, &framebuffer); } // Create a scaling pipeline and check that it is made up of @@ -1182,7 +1190,7 @@ class GLHelperTest : public testing::Test { SkColorType color_type, const gfx::Size& src_size, const SkBitmap& input_pixels) { - context_->bindTexture(GL_TEXTURE_2D, src_texture); + gl_->BindTexture(GL_TEXTURE_2D, src_texture); GLenum format = 0; switch (color_type) { case kBGRA_8888_SkColorType: @@ -1199,15 +1207,9 @@ class GLHelperTest : public testing::Test { } GLenum type = (color_type == kRGB_565_SkColorType) ? GL_UNSIGNED_SHORT_5_6_5 : GL_UNSIGNED_BYTE; - context_->texImage2D(GL_TEXTURE_2D, - 0, - format, - src_size.width(), - src_size.height(), - 0, - format, - type, - input_pixels.getPixels()); + gl_->TexImage2D(GL_TEXTURE_2D, 0, format, src_size.width(), + src_size.height(), 0, format, type, + input_pixels.getPixels()); } void ReadBackTexture(GLuint src_texture, @@ -1244,7 +1246,8 @@ class GLHelperTest : public testing::Test { LOG(INFO) << "Skipping test format not supported" << color_type; return true; } - WebGLId src_texture = context_->createTexture(); + GLuint src_texture; + gl_->GenTextures(1, &src_texture); SkBitmap input_pixels; input_pixels.allocPixels(info); // Test Pattern-1, Fill with Plain color pattern. @@ -1298,7 +1301,7 @@ class GLHelperTest : public testing::Test { LOG(ERROR) << "Bitmap comparision failure Pattern-3"; return false; } - context_->deleteTexture(src_texture); + gl_->DeleteTextures(1, &src_texture); if (HasFailure()) { return false; } @@ -1318,7 +1321,8 @@ class GLHelperTest : public testing::Test { bool flip, bool use_mrt, content::GLHelper::ScalerQuality quality) { - WebGLId src_texture = context_->createTexture(); + GLuint src_texture; + gl_->GenTextures(1, &src_texture); SkBitmap input_pixels; input_pixels.allocN32Pixels(xsize, ysize); @@ -1347,27 +1351,19 @@ class GLHelperTest : public testing::Test { } } - context_->bindTexture(GL_TEXTURE_2D, src_texture); - context_->texImage2D(GL_TEXTURE_2D, - 0, - GL_RGBA, - xsize, - ysize, - 0, - GL_RGBA, - GL_UNSIGNED_BYTE, - input_pixels.getPixels()); + gl_->BindTexture(GL_TEXTURE_2D, src_texture); + gl_->TexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, xsize, ysize, 0, GL_RGBA, + GL_UNSIGNED_BYTE, input_pixels.getPixels()); gpu::Mailbox mailbox; - context_->genMailboxCHROMIUM(mailbox.name); + gl_->GenMailboxCHROMIUM(mailbox.name); EXPECT_FALSE(mailbox.IsZero()); - context_->produceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); - const blink::WGC3Duint64 fence_sync = context_->insertFenceSyncCHROMIUM(); - context_->GetGLInterface()->ShallowFlushCHROMIUM(); + gl_->ProduceTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); + const GLuint64 fence_sync = gl_->InsertFenceSyncCHROMIUM(); + gl_->ShallowFlushCHROMIUM(); gpu::SyncToken sync_token; - ASSERT_TRUE(context_->genSyncTokenCHROMIUM(fence_sync, - sync_token.GetData())); + gl_->GenSyncTokenCHROMIUM(fence_sync, sync_token.GetData()); std::string message = base::StringPrintf( "input size: %dx%d " @@ -1493,7 +1489,7 @@ class GLHelperTest : public testing::Test { &input_pixels, message + " V plane"); - context_->deleteTexture(src_texture); + gl_->DeleteTextures(1, &src_texture); } void TestAddOps(int src, int dst, bool scale_x, bool allow3) { @@ -1695,8 +1691,8 @@ class GLHelperTest : public testing::Test { "8x1 -> 1x1 bilinear4 X\n"); } - scoped_ptr<WebGraphicsContext3DInProcessCommandBufferImpl> context_; - gpu::ContextSupport* context_support_; + scoped_ptr<gpu::GLInProcessContext> context_; + gpu::gles2::GLES2Interface* gl_; scoped_ptr<content::GLHelper> helper_; scoped_ptr<content::GLHelperScaling> helper_scaling_; std::deque<GLHelperScaling::ScaleOp> x_ops_, y_ops_; |