Commit ba0f0b62 authored by spang's avatar spang Committed by Commit bot

content: Pass surfacelessness of GL context from GPU to browser

Currently we rely on a flag (--ozone-use-surfaceless) to trigger the
surfaceless code path in both GPU & browser processes.

This makes surfacelessness a context capability, so that we can create
the appropriate output surface in the browser without using the flag.

BUG=512631
TEST=Manually on link. UI is drawn.

Review URL: https://codereview.chromium.org/1243263002

Cr-Commit-Position: refs/heads/master@{#339821}
parent 14bfe39c
...@@ -270,23 +270,19 @@ void GpuProcessTransportFactory::EstablishedGpuChannel( ...@@ -270,23 +270,19 @@ void GpuProcessTransportFactory::EstablishedGpuChannel(
compositor->vsync_manager())); compositor->vsync_manager()));
} else { } else {
DCHECK(context_provider); DCHECK(context_provider);
ContextProvider::Capabilities capabilities =
context_provider->ContextCapabilities();
if (!data->surface_id) { if (!data->surface_id) {
surface = make_scoped_ptr(new OffscreenBrowserCompositorOutputSurface( surface = make_scoped_ptr(new OffscreenBrowserCompositorOutputSurface(
context_provider, compositor->vsync_manager(), context_provider, compositor->vsync_manager(),
scoped_ptr<BrowserCompositorOverlayCandidateValidator>())); scoped_ptr<BrowserCompositorOverlayCandidateValidator>()));
} else } else if (capabilities.gpu.surfaceless) {
#if defined(USE_OZONE)
if (ui::OzonePlatform::GetInstance()
->GetOverlayManager()
->CanShowPrimaryPlaneAsOverlay()) {
surface = surface =
make_scoped_ptr(new GpuSurfacelessBrowserCompositorOutputSurface( make_scoped_ptr(new GpuSurfacelessBrowserCompositorOutputSurface(
context_provider, data->surface_id, compositor->vsync_manager(), context_provider, data->surface_id, compositor->vsync_manager(),
CreateOverlayCandidateValidator(compositor->widget()), GL_RGB, CreateOverlayCandidateValidator(compositor->widget()), GL_RGB,
BrowserGpuMemoryBufferManager::current())); BrowserGpuMemoryBufferManager::current()));
} else } else {
#endif
{
surface = make_scoped_ptr(new GpuBrowserCompositorOutputSurface( surface = make_scoped_ptr(new GpuBrowserCompositorOutputSurface(
context_provider, compositor->vsync_manager(), context_provider, compositor->vsync_manager(),
CreateOverlayCandidateValidator(compositor->widget()))); CreateOverlayCandidateValidator(compositor->widget())));
......
...@@ -75,6 +75,7 @@ Capabilities::Capabilities() ...@@ -75,6 +75,7 @@ Capabilities::Capabilities()
texture_rg(false), texture_rg(false),
render_buffer_format_bgra8888(false), render_buffer_format_bgra8888(false),
occlusion_query_boolean(false), occlusion_query_boolean(false),
surfaceless(false),
major_version(2), major_version(2),
minor_version(0) { minor_version(0) {
} }
......
...@@ -135,6 +135,7 @@ struct GPU_EXPORT Capabilities { ...@@ -135,6 +135,7 @@ struct GPU_EXPORT Capabilities {
bool render_buffer_format_bgra8888; bool render_buffer_format_bgra8888;
bool occlusion_query_boolean; bool occlusion_query_boolean;
bool timer_queries; bool timer_queries;
bool surfaceless;
int major_version; int major_version;
int minor_version; int minor_version;
......
...@@ -3145,6 +3145,7 @@ Capabilities GLES2DecoderImpl::GetCapabilities() { ...@@ -3145,6 +3145,7 @@ Capabilities GLES2DecoderImpl::GetCapabilities() {
caps.post_sub_buffer = supports_post_sub_buffer_; caps.post_sub_buffer = supports_post_sub_buffer_;
caps.image = true; caps.image = true;
caps.surfaceless = surfaceless_;
caps.blend_equation_advanced = caps.blend_equation_advanced =
feature_info_->feature_flags().blend_equation_advanced; feature_info_->feature_flags().blend_equation_advanced;
......
...@@ -97,6 +97,7 @@ IPC_STRUCT_TRAITS_BEGIN(gpu::Capabilities) ...@@ -97,6 +97,7 @@ IPC_STRUCT_TRAITS_BEGIN(gpu::Capabilities)
IPC_STRUCT_TRAITS_MEMBER(render_buffer_format_bgra8888) IPC_STRUCT_TRAITS_MEMBER(render_buffer_format_bgra8888)
IPC_STRUCT_TRAITS_MEMBER(occlusion_query_boolean) IPC_STRUCT_TRAITS_MEMBER(occlusion_query_boolean)
IPC_STRUCT_TRAITS_MEMBER(timer_queries) IPC_STRUCT_TRAITS_MEMBER(timer_queries)
IPC_STRUCT_TRAITS_MEMBER(surfaceless)
IPC_STRUCT_TRAITS_MEMBER(major_version) IPC_STRUCT_TRAITS_MEMBER(major_version)
IPC_STRUCT_TRAITS_MEMBER(minor_version) IPC_STRUCT_TRAITS_MEMBER(minor_version)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment