Chromium Code Reviews| Index: gpu/ipc/service/gpu_command_buffer_stub.cc |
| diff --git a/gpu/ipc/service/gpu_command_buffer_stub.cc b/gpu/ipc/service/gpu_command_buffer_stub.cc |
| index b6396195afabdcb5ec8d6c46d8e5f253f00e02fe..48c2cc8a7b7d0e0674fad4cd1376cfae08043fea 100644 |
| --- a/gpu/ipc/service/gpu_command_buffer_stub.cc |
| +++ b/gpu/ipc/service/gpu_command_buffer_stub.cc |
| @@ -566,7 +566,29 @@ bool GpuCommandBufferStub::Initialize( |
| decoder_->set_engine(executor_.get()); |
| if (offscreen) { |
| - surface_ = default_surface; |
| + if (init_params.attribs.own_offscreen_surface) { |
| + use_virtualized_gl_context_ = false; |
| + int depth = init_params.attribs.depth_size; |
| + if (depth > 0) { |
| + if (depth == 24 && surface_format == gl::GLSurface::SURFACE_ARGB8888) { |
| + surface_format = gl::GLSurface::SURFACE_ARGB8888_DEPTH24; |
| + } else if (depth == 24 && |
| + surface_format == gl::GLSurface::SURFACE_RGB565) { |
| + surface_format = gl::GLSurface::SURFACE_RGB565_DEPTH24; |
| + } else { |
| + DLOG(ERROR) << "Failed to create surface, can't add depth_size=" |
| + << depth << " to base format " << surface_format; |
|
piman
2016/11/16 00:44:02
Should we fail initialization here, then? I.e. ret
dcheng
2016/11/17 01:17:00
+1, this is coming from the renderer right? We nee
klausw
2017/01/05 02:17:43
Please see the new logic, I think it's much cleane
|
| + } |
| + } |
| + surface_ = gl::init::CreateUninitializedOffscreenGLSurface(gfx::Size()); |
| + if (!surface_ || !surface_->Initialize(surface_format)) { |
| + surface_ = nullptr; |
| + DLOG(ERROR) << "Failed to create surface."; |
| + return false; |
| + } |
| + } else { |
| + surface_ = default_surface; |
| + } |
| } else { |
| surface_ = ImageTransportSurface::CreateNativeSurface( |
| AsWeakPtr(), surface_handle_, surface_format); |