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

Side by Side Diff: ppapi/proxy/ppb_graphics_3d_proxy.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
« no previous file with comments | « ppapi/proxy/ppb_graphics_3d_proxy.h ('k') | ppapi/proxy/resource_creation_proxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "ppapi/proxy/ppb_graphics_3d_proxy.h" 5 #include "ppapi/proxy/ppb_graphics_3d_proxy.h"
6 6
7 #include "base/numerics/safe_conversions.h" 7 #include "base/numerics/safe_conversions.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "gpu/command_buffer/client/gles2_implementation.h" 9 #include "gpu/command_buffer/client/gles2_implementation.h"
10 #include "gpu/command_buffer/common/command_buffer.h" 10 #include "gpu/command_buffer/common/command_buffer.h"
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 EnterResourceNoLock<PPB_Graphics3D_API> enter(share_context, true); 165 EnterResourceNoLock<PPB_Graphics3D_API> enter(share_context, true);
166 if (enter.failed()) 166 if (enter.failed())
167 return PP_ERROR_BADARGUMENT; 167 return PP_ERROR_BADARGUMENT;
168 168
169 PPB_Graphics3D_Shared* share_graphics = 169 PPB_Graphics3D_Shared* share_graphics =
170 static_cast<PPB_Graphics3D_Shared*>(enter.object()); 170 static_cast<PPB_Graphics3D_Shared*>(enter.object());
171 share_host = share_graphics->host_resource(); 171 share_host = share_graphics->host_resource();
172 share_gles2 = share_graphics->gles2_impl(); 172 share_gles2 = share_graphics->gles2_impl();
173 } 173 }
174 174
175 gpu::gles2::ContextCreationAttribHelper attrib_helper;
176 std::vector<int32_t> attribs; 175 std::vector<int32_t> attribs;
177 if (attrib_list) { 176 if (attrib_list) {
178 for (const int32_t* attr = attrib_list; attr[0] != PP_GRAPHICS3DATTRIB_NONE; 177 for (const int32_t* attr = attrib_list;
178 attr[0] != PP_GRAPHICS3DATTRIB_NONE;
179 attr += 2) { 179 attr += 2) {
180 switch (attr[0]) { 180 attribs.push_back(attr[0]);
181 case PP_GRAPHICS3DATTRIB_WIDTH: 181 attribs.push_back(attr[1]);
182 attrib_helper.offscreen_framebuffer_size.set_width(attr[1]);
183 break;
184 case PP_GRAPHICS3DATTRIB_HEIGHT:
185 attrib_helper.offscreen_framebuffer_size.set_height(attr[1]);
186 break;
187 case PP_GRAPHICS3DATTRIB_GPU_PREFERENCE:
188 attrib_helper.gpu_preference =
189 (attr[1] == PP_GRAPHICS3DATTRIB_GPU_PREFERENCE_LOW_POWER)
190 ? gl::PreferIntegratedGpu
191 : gl::PreferDiscreteGpu;
192 break;
193 default:
194 attribs.push_back(attr[0]);
195 attribs.push_back(attr[1]);
196 break;
197 }
198 } 182 }
199 attribs.push_back(PP_GRAPHICS3DATTRIB_NONE);
200 } 183 }
201 if (!attrib_helper.Parse(attribs)) 184 attribs.push_back(PP_GRAPHICS3DATTRIB_NONE);
202 return 0;
203 185
204 HostResource result; 186 HostResource result;
205 gpu::Capabilities capabilities; 187 gpu::Capabilities capabilities;
206 ppapi::proxy::SerializedHandle shared_state; 188 ppapi::proxy::SerializedHandle shared_state;
207 gpu::CommandBufferId command_buffer_id; 189 gpu::CommandBufferId command_buffer_id;
208 dispatcher->Send(new PpapiHostMsg_PPBGraphics3D_Create( 190 dispatcher->Send(new PpapiHostMsg_PPBGraphics3D_Create(API_ID_PPB_GRAPHICS_3D,
209 API_ID_PPB_GRAPHICS_3D, instance, share_host, attrib_helper, &result, 191 instance, share_host, attribs, &result, &capabilities, &shared_state,
210 &capabilities, &shared_state, &command_buffer_id)); 192 &command_buffer_id));
211 193
212 if (result.is_null()) 194 if (result.is_null())
213 return 0; 195 return 0;
214 196
215 scoped_refptr<Graphics3D> graphics_3d(new Graphics3D(result)); 197 scoped_refptr<Graphics3D> graphics_3d(new Graphics3D(result));
216 if (!graphics_3d->Init(share_gles2, capabilities, shared_state, 198 if (!graphics_3d->Init(share_gles2, capabilities, shared_state,
217 command_buffer_id)) { 199 command_buffer_id)) {
218 return 0; 200 return 0;
219 } 201 }
220 return graphics_3d->GetReference(); 202 return graphics_3d->GetReference();
(...skipping 30 matching lines...) Expand all
251 233
252 IPC_END_MESSAGE_MAP() 234 IPC_END_MESSAGE_MAP()
253 // FIXME(brettw) handle bad messages! 235 // FIXME(brettw) handle bad messages!
254 return handled; 236 return handled;
255 } 237 }
256 238
257 #if !defined(OS_NACL) 239 #if !defined(OS_NACL)
258 void PPB_Graphics3D_Proxy::OnMsgCreate( 240 void PPB_Graphics3D_Proxy::OnMsgCreate(
259 PP_Instance instance, 241 PP_Instance instance,
260 HostResource share_context, 242 HostResource share_context,
261 const gpu::gles2::ContextCreationAttribHelper& attrib_helper, 243 const std::vector<int32_t>& attribs,
262 HostResource* result, 244 HostResource* result,
263 gpu::Capabilities* capabilities, 245 gpu::Capabilities* capabilities,
264 SerializedHandle* shared_state, 246 SerializedHandle* shared_state,
265 gpu::CommandBufferId* command_buffer_id) { 247 gpu::CommandBufferId* command_buffer_id) {
266 shared_state->set_null_shmem(); 248 shared_state->set_null_shmem();
249 if (attribs.empty() ||
250 attribs.back() != PP_GRAPHICS3DATTRIB_NONE ||
251 !(attribs.size() & 1))
252 return; // Bad message.
267 253
268 thunk::EnterResourceCreation enter(instance); 254 thunk::EnterResourceCreation enter(instance);
269 255
270 if (!enter.succeeded()) 256 if (!enter.succeeded())
271 return; 257 return;
272 258
273 base::SharedMemoryHandle handle = base::SharedMemory::NULLHandle(); 259 base::SharedMemoryHandle handle = base::SharedMemory::NULLHandle();
274 result->SetHostResource( 260 result->SetHostResource(
275 instance, enter.functions()->CreateGraphics3DRaw( 261 instance,
276 instance, share_context.host_resource(), attrib_helper, 262 enter.functions()->CreateGraphics3DRaw(instance,
277 capabilities, &handle, command_buffer_id)); 263 share_context.host_resource(),
264 &attribs.front(),
265 capabilities,
266 &handle,
267 command_buffer_id));
278 if (!result->is_null()) { 268 if (!result->is_null()) {
279 shared_state->set_shmem(TransportSHMHandle(dispatcher(), handle), 269 shared_state->set_shmem(TransportSHMHandle(dispatcher(), handle),
280 sizeof(gpu::CommandBuffer::State)); 270 sizeof(gpu::CommandBuffer::State));
281 } 271 }
282 } 272 }
283 273
284 void PPB_Graphics3D_Proxy::OnMsgSetGetBuffer(const HostResource& context, 274 void PPB_Graphics3D_Proxy::OnMsgSetGetBuffer(const HostResource& context,
285 int32_t transfer_buffer_id) { 275 int32_t transfer_buffer_id) {
286 EnterHostFromHostResource<PPB_Graphics3D_API> enter(context); 276 EnterHostFromHostResource<PPB_Graphics3D_API> enter(context);
287 if (enter.succeeded()) 277 if (enter.succeeded())
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 void PPB_Graphics3D_Proxy::SendSwapBuffersACKToPlugin( 380 void PPB_Graphics3D_Proxy::SendSwapBuffersACKToPlugin(
391 int32_t result, 381 int32_t result,
392 const HostResource& context) { 382 const HostResource& context) {
393 dispatcher()->Send(new PpapiMsg_PPBGraphics3D_SwapBuffersACK( 383 dispatcher()->Send(new PpapiMsg_PPBGraphics3D_SwapBuffersACK(
394 API_ID_PPB_GRAPHICS_3D, context, result)); 384 API_ID_PPB_GRAPHICS_3D, context, result));
395 } 385 }
396 #endif // !defined(OS_NACL) 386 #endif // !defined(OS_NACL)
397 387
398 } // namespace proxy 388 } // namespace proxy
399 } // namespace ppapi 389 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_graphics_3d_proxy.h ('k') | ppapi/proxy/resource_creation_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698