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

Side by Side Diff: content/renderer/pepper/ppb_graphics_3d_impl.cc

Issue 2129803002: Revert of pepper: parse context creation attrib list on the plugin side (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gpu_pref_size_in_attrs
Patch Set: Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer/pepper/ppb_graphics_3d_impl.h" 5 #include "content/renderer/pepper/ppb_graphics_3d_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 // Unset the client before the command_buffer_ is destroyed, similar to how 50 // Unset the client before the command_buffer_ is destroyed, similar to how
51 // WeakPtrFactory invalidates before it. 51 // WeakPtrFactory invalidates before it.
52 if (command_buffer_) 52 if (command_buffer_)
53 command_buffer_->SetGpuControlClient(nullptr); 53 command_buffer_->SetGpuControlClient(nullptr);
54 } 54 }
55 55
56 // static 56 // static
57 PP_Resource PPB_Graphics3D_Impl::CreateRaw( 57 PP_Resource PPB_Graphics3D_Impl::CreateRaw(
58 PP_Instance instance, 58 PP_Instance instance,
59 PP_Resource share_context, 59 PP_Resource share_context,
60 const gpu::gles2::ContextCreationAttribHelper& attrib_helper, 60 const int32_t* attrib_list,
61 gpu::Capabilities* capabilities, 61 gpu::Capabilities* capabilities,
62 base::SharedMemoryHandle* shared_state_handle, 62 base::SharedMemoryHandle* shared_state_handle,
63 gpu::CommandBufferId* command_buffer_id) { 63 gpu::CommandBufferId* command_buffer_id) {
64 PPB_Graphics3D_API* share_api = NULL; 64 PPB_Graphics3D_API* share_api = NULL;
65 if (share_context) { 65 if (share_context) {
66 EnterResourceNoLock<PPB_Graphics3D_API> enter(share_context, true); 66 EnterResourceNoLock<PPB_Graphics3D_API> enter(share_context, true);
67 if (enter.failed()) 67 if (enter.failed())
68 return 0; 68 return 0;
69 share_api = enter.object(); 69 share_api = enter.object();
70 } 70 }
71 scoped_refptr<PPB_Graphics3D_Impl> graphics_3d( 71 scoped_refptr<PPB_Graphics3D_Impl> graphics_3d(
72 new PPB_Graphics3D_Impl(instance)); 72 new PPB_Graphics3D_Impl(instance));
73 if (!graphics_3d->InitRaw(share_api, attrib_helper, capabilities, 73 if (!graphics_3d->InitRaw(share_api, attrib_list, capabilities,
74 shared_state_handle, command_buffer_id)) 74 shared_state_handle, command_buffer_id))
75 return 0; 75 return 0;
76 return graphics_3d->GetReference(); 76 return graphics_3d->GetReference();
77 } 77 }
78 78
79 PP_Bool PPB_Graphics3D_Impl::SetGetBuffer(int32_t transfer_buffer_id) { 79 PP_Bool PPB_Graphics3D_Impl::SetGetBuffer(int32_t transfer_buffer_id) {
80 GetCommandBuffer()->SetGetBuffer(transfer_buffer_id); 80 GetCommandBuffer()->SetGetBuffer(transfer_buffer_id);
81 return PP_TRUE; 81 return PP_TRUE;
82 } 82 }
83 83
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 } else { 183 } else {
184 // Wait for the command to complete on the GPU to allow for throttling. 184 // Wait for the command to complete on the GPU to allow for throttling.
185 command_buffer_->SignalSyncToken( 185 command_buffer_->SignalSyncToken(
186 sync_token, base::Bind(&PPB_Graphics3D_Impl::OnSwapBuffers, 186 sync_token, base::Bind(&PPB_Graphics3D_Impl::OnSwapBuffers,
187 weak_ptr_factory_.GetWeakPtr())); 187 weak_ptr_factory_.GetWeakPtr()));
188 } 188 }
189 189
190 return PP_OK_COMPLETIONPENDING; 190 return PP_OK_COMPLETIONPENDING;
191 } 191 }
192 192
193 bool PPB_Graphics3D_Impl::InitRaw( 193 bool PPB_Graphics3D_Impl::InitRaw(PPB_Graphics3D_API* share_context,
194 PPB_Graphics3D_API* share_context, 194 const int32_t* attrib_list,
195 const gpu::gles2::ContextCreationAttribHelper& attrib_helper, 195 gpu::Capabilities* capabilities,
196 gpu::Capabilities* capabilities, 196 base::SharedMemoryHandle* shared_state_handle,
197 base::SharedMemoryHandle* shared_state_handle, 197 gpu::CommandBufferId* command_buffer_id) {
198 gpu::CommandBufferId* command_buffer_id) {
199 PepperPluginInstanceImpl* plugin_instance = 198 PepperPluginInstanceImpl* plugin_instance =
200 HostGlobals::Get()->GetInstance(pp_instance()); 199 HostGlobals::Get()->GetInstance(pp_instance());
201 if (!plugin_instance) 200 if (!plugin_instance)
202 return false; 201 return false;
203 202
204 RenderView* render_view = plugin_instance->GetRenderView(); 203 RenderView* render_view = plugin_instance->GetRenderView();
205 if (!render_view) 204 if (!render_view)
206 return false; 205 return false;
207 206
208 const WebPreferences& prefs = render_view->GetWebkitPreferences(); 207 const WebPreferences& prefs = render_view->GetWebkitPreferences();
(...skipping 10 matching lines...) Expand all
219 RenderThreadImpl* render_thread = RenderThreadImpl::current(); 218 RenderThreadImpl* render_thread = RenderThreadImpl::current();
220 if (!render_thread) 219 if (!render_thread)
221 return false; 220 return false;
222 221
223 scoped_refptr<gpu::GpuChannelHost> channel = 222 scoped_refptr<gpu::GpuChannelHost> channel =
224 render_thread->EstablishGpuChannelSync( 223 render_thread->EstablishGpuChannelSync(
225 CAUSE_FOR_GPU_LAUNCH_PEPPERPLATFORMCONTEXT3DIMPL_INITIALIZE); 224 CAUSE_FOR_GPU_LAUNCH_PEPPERPLATFORMCONTEXT3DIMPL_INITIALIZE);
226 if (!channel) 225 if (!channel)
227 return false; 226 return false;
228 227
229 has_alpha_ = attrib_helper.alpha_size > 0; 228 gpu::gles2::ContextCreationAttribHelper attrib_helper;
229 std::vector<int32_t> attribs;
230 attrib_helper.gpu_preference = gl::PreferDiscreteGpu;
231 // TODO(alokp): Change CommandBufferProxyImpl::Create()
232 // interface to accept width and height in the attrib_list so that
233 // we do not need to filter for width and height here.
234 if (attrib_list) {
235 for (const int32_t* attr = attrib_list; attr[0] != PP_GRAPHICS3DATTRIB_NONE;
236 attr += 2) {
237 switch (attr[0]) {
238 case PP_GRAPHICS3DATTRIB_WIDTH:
239 attrib_helper.offscreen_framebuffer_size.set_width(attr[1]);
240 break;
241 case PP_GRAPHICS3DATTRIB_HEIGHT:
242 attrib_helper.offscreen_framebuffer_size.set_height(attr[1]);
243 break;
244 case PP_GRAPHICS3DATTRIB_GPU_PREFERENCE:
245 attrib_helper.gpu_preference =
246 (attr[1] == PP_GRAPHICS3DATTRIB_GPU_PREFERENCE_LOW_POWER)
247 ? gl::PreferIntegratedGpu
248 : gl::PreferDiscreteGpu;
249 break;
250 case PP_GRAPHICS3DATTRIB_ALPHA_SIZE:
251 has_alpha_ = attr[1] > 0;
252 // fall-through
253 default:
254 attribs.push_back(attr[0]);
255 attribs.push_back(attr[1]);
256 break;
257 }
258 }
259 attribs.push_back(PP_GRAPHICS3DATTRIB_NONE);
260 }
261 if (!attrib_helper.Parse(attribs))
262 return false;
230 263
231 gpu::CommandBufferProxyImpl* share_buffer = NULL; 264 gpu::CommandBufferProxyImpl* share_buffer = NULL;
232 if (share_context) { 265 if (share_context) {
233 PPB_Graphics3D_Impl* share_graphics = 266 PPB_Graphics3D_Impl* share_graphics =
234 static_cast<PPB_Graphics3D_Impl*>(share_context); 267 static_cast<PPB_Graphics3D_Impl*>(share_context);
235 share_buffer = share_graphics->GetCommandBufferProxy(); 268 share_buffer = share_graphics->GetCommandBufferProxy();
236 } 269 }
237 270
238 command_buffer_ = gpu::CommandBufferProxyImpl::Create( 271 command_buffer_ = gpu::CommandBufferProxyImpl::Create(
239 std::move(channel), gpu::kNullSurfaceHandle, share_buffer, 272 std::move(channel), gpu::kNullSurfaceHandle, share_buffer,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 if (!mailboxes_to_reuse_.empty()) { 365 if (!mailboxes_to_reuse_.empty()) {
333 gpu::Mailbox mailbox = mailboxes_to_reuse_.back(); 366 gpu::Mailbox mailbox = mailboxes_to_reuse_.back();
334 mailboxes_to_reuse_.pop_back(); 367 mailboxes_to_reuse_.pop_back();
335 return mailbox; 368 return mailbox;
336 } 369 }
337 370
338 return gpu::Mailbox::Generate(); 371 return gpu::Mailbox::Generate();
339 } 372 }
340 373
341 } // namespace content 374 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/ppb_graphics_3d_impl.h ('k') | content/renderer/pepper/resource_creation_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698