OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/compositor/gpu_process_transport_factory.h" | 5 #include "content/browser/compositor/gpu_process_transport_factory.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 #include "content/browser/gpu/gpu_data_manager_impl.h" | 22 #include "content/browser/gpu/gpu_data_manager_impl.h" |
23 #include "content/browser/gpu/gpu_surface_tracker.h" | 23 #include "content/browser/gpu/gpu_surface_tracker.h" |
24 #include "content/browser/renderer_host/render_widget_host_impl.h" | 24 #include "content/browser/renderer_host/render_widget_host_impl.h" |
25 #include "content/common/gpu/client/context_provider_command_buffer.h" | 25 #include "content/common/gpu/client/context_provider_command_buffer.h" |
26 #include "content/common/gpu/client/gl_helper.h" | 26 #include "content/common/gpu/client/gl_helper.h" |
27 #include "content/common/gpu/client/gpu_channel_host.h" | 27 #include "content/common/gpu/client/gpu_channel_host.h" |
28 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" | 28 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" |
29 #include "content/common/gpu/gpu_process_launch_causes.h" | 29 #include "content/common/gpu/gpu_process_launch_causes.h" |
30 #include "gpu/GLES2/gl2extchromium.h" | 30 #include "gpu/GLES2/gl2extchromium.h" |
31 #include "gpu/command_buffer/client/gles2_interface.h" | 31 #include "gpu/command_buffer/client/gles2_interface.h" |
| 32 #include "gpu/command_buffer/common/mailbox.h" |
32 #include "third_party/khronos/GLES2/gl2.h" | 33 #include "third_party/khronos/GLES2/gl2.h" |
33 #include "ui/compositor/compositor.h" | 34 #include "ui/compositor/compositor.h" |
34 #include "ui/compositor/compositor_constants.h" | 35 #include "ui/compositor/compositor_constants.h" |
35 #include "ui/compositor/compositor_switches.h" | 36 #include "ui/compositor/compositor_switches.h" |
36 #include "ui/gfx/native_widget_types.h" | 37 #include "ui/gfx/native_widget_types.h" |
37 #include "ui/gfx/size.h" | 38 #include "ui/gfx/size.h" |
38 | 39 |
39 #if defined(OS_WIN) | 40 #if defined(OS_WIN) |
40 #include "content/browser/compositor/software_output_device_win.h" | 41 #include "content/browser/compositor/software_output_device_win.h" |
41 #elif defined(USE_OZONE) | 42 #elif defined(USE_OZONE) |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 class ImageTransportClientTexture : public OwnedTexture { | 107 class ImageTransportClientTexture : public OwnedTexture { |
107 public: | 108 public: |
108 ImageTransportClientTexture(const scoped_refptr<ContextProvider>& provider, | 109 ImageTransportClientTexture(const scoped_refptr<ContextProvider>& provider, |
109 float device_scale_factor, | 110 float device_scale_factor, |
110 GLuint texture_id) | 111 GLuint texture_id) |
111 : OwnedTexture(provider, | 112 : OwnedTexture(provider, |
112 gfx::Size(0, 0), | 113 gfx::Size(0, 0), |
113 device_scale_factor, | 114 device_scale_factor, |
114 texture_id) {} | 115 texture_id) {} |
115 | 116 |
116 virtual void Consume(const std::string& mailbox_name, | 117 virtual void Consume(const gpu::Mailbox& mailbox, |
117 const gfx::Size& new_size) OVERRIDE { | 118 const gfx::Size& new_size) OVERRIDE { |
118 DCHECK(mailbox_name.size() == GL_MAILBOX_SIZE_CHROMIUM); | 119 mailbox_ = mailbox; |
119 mailbox_name_ = mailbox_name; | 120 if (mailbox.IsZero()) |
120 if (mailbox_name.empty()) | |
121 return; | 121 return; |
122 | 122 |
123 DCHECK(provider_ && texture_id_); | 123 DCHECK(provider_ && texture_id_); |
124 GLES2Interface* gl = provider_->ContextGL(); | 124 GLES2Interface* gl = provider_->ContextGL(); |
125 gl->BindTexture(GL_TEXTURE_2D, texture_id_); | 125 gl->BindTexture(GL_TEXTURE_2D, texture_id_); |
126 gl->ConsumeTextureCHROMIUM( | 126 gl->ConsumeTextureCHROMIUM(GL_TEXTURE_2D, mailbox.name); |
127 GL_TEXTURE_2D, reinterpret_cast<const GLbyte*>(mailbox_name.c_str())); | |
128 size_ = new_size; | 127 size_ = new_size; |
129 gl->ShallowFlushCHROMIUM(); | 128 gl->ShallowFlushCHROMIUM(); |
130 } | 129 } |
131 | 130 |
132 virtual std::string Produce() OVERRIDE { return mailbox_name_; } | 131 virtual gpu::Mailbox Produce() OVERRIDE { return mailbox_; } |
133 | 132 |
134 protected: | 133 protected: |
135 virtual ~ImageTransportClientTexture() {} | 134 virtual ~ImageTransportClientTexture() {} |
136 | 135 |
137 private: | 136 private: |
138 std::string mailbox_name_; | 137 gpu::Mailbox mailbox_; |
139 DISALLOW_COPY_AND_ASSIGN(ImageTransportClientTexture); | 138 DISALLOW_COPY_AND_ASSIGN(ImageTransportClientTexture); |
140 }; | 139 }; |
141 | 140 |
142 GpuProcessTransportFactory::GpuProcessTransportFactory() | 141 GpuProcessTransportFactory::GpuProcessTransportFactory() |
143 : callback_factory_(this) { | 142 : callback_factory_(this) { |
144 output_surface_proxy_ = new BrowserCompositorOutputSurfaceProxy( | 143 output_surface_proxy_ = new BrowserCompositorOutputSurfaceProxy( |
145 &output_surface_map_); | 144 &output_surface_map_); |
146 } | 145 } |
147 | 146 |
148 GpuProcessTransportFactory::~GpuProcessTransportFactory() { | 147 GpuProcessTransportFactory::~GpuProcessTransportFactory() { |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 observer_list_, | 471 observer_list_, |
473 OnLostResources()); | 472 OnLostResources()); |
474 | 473 |
475 // Kill things that use the shared context before killing the shared context. | 474 // Kill things that use the shared context before killing the shared context. |
476 lost_gl_helper.reset(); | 475 lost_gl_helper.reset(); |
477 lost_offscreen_compositor_contexts = NULL; | 476 lost_offscreen_compositor_contexts = NULL; |
478 lost_shared_main_thread_contexts = NULL; | 477 lost_shared_main_thread_contexts = NULL; |
479 } | 478 } |
480 | 479 |
481 } // namespace content | 480 } // namespace content |
OLD | NEW |