Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3445)

Unified Diff: blimp/client/app/compositor/browser_compositor.cc

Issue 2274323002: Expose Blimp dependencies to the embedder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@khushal_baseline_1
Patch Set: Fix linux build break Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/client/app/compositor/browser_compositor.h ('k') | blimp/client/app/linux/blimp_display_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/client/app/compositor/browser_compositor.cc
diff --git a/blimp/client/app/compositor/browser_compositor.cc b/blimp/client/app/compositor/browser_compositor.cc
index 955968f917f399718d0d3e97c88d4844331686f1..51df99ba0e47a4d373dc2291167aec81728a3d8d 100644
--- a/blimp/client/app/compositor/browser_compositor.cc
+++ b/blimp/client/app/compositor/browser_compositor.cc
@@ -4,10 +4,11 @@
#include "blimp/client/app/compositor/browser_compositor.h"
+#include "base/bind.h"
#include "base/lazy_instance.h"
#include "base/threading/thread_task_runner_handle.h"
-#include "blimp/client/feature/compositor/blimp_context_provider.h"
-#include "blimp/client/feature/compositor/blimp_gpu_memory_buffer_manager.h"
+#include "blimp/client/public/compositor/compositor_dependencies.h"
+#include "blimp/client/support/compositor/blimp_context_provider.h"
#include "cc/animation/animation_host.h"
#include "cc/layers/layer.h"
#include "cc/output/compositor_frame.h"
@@ -19,6 +20,7 @@
#include "cc/surfaces/surface_manager.h"
#include "cc/trees/layer_tree_host.h"
#include "gpu/command_buffer/client/context_support.h"
+#include "gpu/command_buffer/client/gles2_lib.h"
namespace blimp {
namespace client {
@@ -51,8 +53,9 @@ class DisplayOutputSurface : public cc::OutputSurface {
}
uint32_t GetFramebufferCopyTextureFormat() override {
- auto* gl = static_cast<BlimpContextProvider*>(context_provider());
- return gl->GetCopyTextureInternalFormat();
+ // We assume we have an alpha channel from the BlimpContextProvider, so use
+ // GL_RGBA here.
+ return GL_RGBA;
}
private:
@@ -62,44 +65,23 @@ class DisplayOutputSurface : public cc::OutputSurface {
base::LazyInstance<SimpleTaskGraphRunner> g_task_graph_runner =
LAZY_INSTANCE_INITIALIZER;
-base::LazyInstance<cc::SurfaceManager> g_surface_manager =
- LAZY_INSTANCE_INITIALIZER;
-
-base::LazyInstance<BlimpGpuMemoryBufferManager> g_gpu_memory_buffer_manager =
- LAZY_INSTANCE_INITIALIZER;
-
-uint32_t g_surface_id = 0;
-
} // namespace
-// static
-cc::SurfaceManager* BrowserCompositor::GetSurfaceManager() {
- return g_surface_manager.Pointer();
-}
-
-// static
-BlimpGpuMemoryBufferManager* BrowserCompositor::GetGpuMemoryBufferManager() {
- return g_gpu_memory_buffer_manager.Pointer();
-}
-
-// static
-uint32_t BrowserCompositor::AllocateSurfaceClientId() {
- return ++g_surface_id;
-}
-
-BrowserCompositor::BrowserCompositor()
- : surface_id_allocator_(base::MakeUnique<cc::SurfaceIdAllocator>(
- BrowserCompositor::AllocateSurfaceClientId())),
+BrowserCompositor::BrowserCompositor(
+ CompositorDependencies* compositor_dependencies)
+ : compositor_dependencies_(compositor_dependencies),
+ surface_id_allocator_(base::MakeUnique<cc::SurfaceIdAllocator>(
+ compositor_dependencies->AllocateSurfaceId())),
widget_(gfx::kNullAcceleratedWidget),
output_surface_request_pending_(false),
root_layer_(cc::Layer::Create()) {
- BrowserCompositor::GetSurfaceManager()->RegisterSurfaceClientId(
+ compositor_dependencies_->GetSurfaceManager()->RegisterSurfaceClientId(
surface_id_allocator_->client_id());
cc::LayerTreeHost::InitParams params;
params.client = this;
params.gpu_memory_buffer_manager =
- BrowserCompositor::GetGpuMemoryBufferManager();
+ compositor_dependencies_->GetGpuMemoryBufferManager();
params.task_graph_runner = g_task_graph_runner.Pointer();
cc::LayerTreeSettings settings;
params.settings = &settings;
@@ -113,7 +95,7 @@ BrowserCompositor::BrowserCompositor()
}
BrowserCompositor::~BrowserCompositor() {
- BrowserCompositor::GetSurfaceManager()->InvalidateSurfaceClientId(
+ compositor_dependencies_->GetSurfaceManager()->InvalidateSurfaceClientId(
surface_id_allocator_->client_id());
}
@@ -151,8 +133,9 @@ void BrowserCompositor::SetAcceleratedWidget(gfx::AcceleratedWidget widget) {
if (widget != gfx::kNullAcceleratedWidget) {
widget_ = widget;
host_->SetVisible(true);
- if (output_surface_request_pending_)
+ if (output_surface_request_pending_) {
HandlePendingOutputSurfaceRequest();
+ }
}
}
@@ -186,9 +169,11 @@ void BrowserCompositor::HandlePendingOutputSurfaceRequest() {
DCHECK_NE(gfx::kNullAcceleratedWidget, widget_);
+ gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager =
+ compositor_dependencies_->GetGpuMemoryBufferManager();
+
scoped_refptr<cc::ContextProvider> context_provider =
- BlimpContextProvider::Create(
- widget_, BrowserCompositor::GetGpuMemoryBufferManager());
+ BlimpContextProvider::Create(widget_, gpu_memory_buffer_manager);
std::unique_ptr<cc::OutputSurface> display_output_surface =
base::MakeUnique<DisplayOutputSurface>(context_provider);
@@ -202,8 +187,7 @@ void BrowserCompositor::HandlePendingOutputSurfaceRequest() {
display_output_surface->capabilities().max_frames_pending));
display_ = base::MakeUnique<cc::Display>(
- nullptr /*shared_bitmap_manager*/,
- BrowserCompositor::GetGpuMemoryBufferManager(),
+ nullptr /*shared_bitmap_manager*/, gpu_memory_buffer_manager,
host_->settings().renderer_settings, std::move(begin_frame_source),
std::move(display_output_surface), std::move(scheduler),
base::MakeUnique<cc::TextureMailboxDeleter>(task_runner));
@@ -213,8 +197,9 @@ void BrowserCompositor::HandlePendingOutputSurfaceRequest() {
// The Browser compositor and display share the same context provider.
std::unique_ptr<cc::OutputSurface> delegated_output_surface =
base::MakeUnique<cc::SurfaceDisplayOutputSurface>(
- BrowserCompositor::GetSurfaceManager(), surface_id_allocator_.get(),
- display_.get(), context_provider, nullptr);
+ compositor_dependencies_->GetSurfaceManager(),
+ surface_id_allocator_.get(), display_.get(), context_provider,
+ nullptr);
host_->SetOutputSurface(std::move(delegated_output_surface));
}
« no previous file with comments | « blimp/client/app/compositor/browser_compositor.h ('k') | blimp/client/app/linux/blimp_display_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698