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

Side by Side Diff: ppapi/proxy/ppb_context_3d_proxy.cc

Issue 7874002: This patch tries to remove most of the manual registration for Pepper interfaces, and replaces it... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « ppapi/proxy/ppb_context_3d_proxy.h ('k') | ppapi/proxy/ppb_core_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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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_context_3d_proxy.h" 5 #include "ppapi/proxy/ppb_context_3d_proxy.h"
6 6
7 #include "base/hash_tables.h" 7 #include "base/hash_tables.h"
8 #include "gpu/command_buffer/client/gles2_cmd_helper.h" 8 #include "gpu/command_buffer/client/gles2_cmd_helper.h"
9 #include "gpu/command_buffer/client/gles2_implementation.h" 9 #include "gpu/command_buffer/client/gles2_implementation.h"
10 #include "ppapi/c/pp_errors.h" 10 #include "ppapi/c/pp_errors.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 state.token = s.token; 61 state.token = s.token;
62 state.error = static_cast<gpu::error::Error>(s.error); 62 state.error = static_cast<gpu::error::Error>(s.error);
63 state.generation = s.generation; 63 state.generation = s.generation;
64 return state; 64 return state;
65 } 65 }
66 66
67 // Size of the transfer buffer. 67 // Size of the transfer buffer.
68 const int32 kCommandBufferSize = 1024 * 1024; 68 const int32 kCommandBufferSize = 1024 * 1024;
69 const int32 kTransferBufferSize = 1024 * 1024; 69 const int32 kTransferBufferSize = 1024 * 1024;
70 70
71 InterfaceProxy* CreateContext3DProxy(Dispatcher* dispatcher,
72 const void* target_interface) {
73 return new PPB_Context3D_Proxy(dispatcher, target_interface);
74 }
75
76 } // namespace 71 } // namespace
77 72
78 class PepperCommandBuffer : public gpu::CommandBuffer { 73 class PepperCommandBuffer : public gpu::CommandBuffer {
79 public: 74 public:
80 PepperCommandBuffer(const HostResource& resource, 75 PepperCommandBuffer(const HostResource& resource,
81 PluginDispatcher* dispatcher); 76 PluginDispatcher* dispatcher);
82 virtual ~PepperCommandBuffer(); 77 virtual ~PepperCommandBuffer();
83 78
84 // CommandBuffer implementation: 79 // CommandBuffer implementation:
85 virtual bool Initialize(int32 size); 80 virtual bool Initialize(int32 size);
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 void Context3D::UnmapTexSubImage2DCHROMIUM(const void* mem) { 509 void Context3D::UnmapTexSubImage2DCHROMIUM(const void* mem) {
515 gles2_impl_->UnmapTexSubImage2DCHROMIUM(mem); 510 gles2_impl_->UnmapTexSubImage2DCHROMIUM(mem);
516 } 511 }
517 512
518 gpu::gles2::GLES2Implementation* Context3D::GetGLES2Impl() { 513 gpu::gles2::GLES2Implementation* Context3D::GetGLES2Impl() {
519 return gles2_impl(); 514 return gles2_impl();
520 } 515 }
521 516
522 // PPB_Context3D_Proxy --------------------------------------------------------- 517 // PPB_Context3D_Proxy ---------------------------------------------------------
523 518
524 PPB_Context3D_Proxy::PPB_Context3D_Proxy(Dispatcher* dispatcher, 519 PPB_Context3D_Proxy::PPB_Context3D_Proxy(Dispatcher* dispatcher)
525 const void* target_interface) 520 : InterfaceProxy(dispatcher) {
526 : InterfaceProxy(dispatcher, target_interface) {
527 } 521 }
528 522
529 PPB_Context3D_Proxy::~PPB_Context3D_Proxy() { 523 PPB_Context3D_Proxy::~PPB_Context3D_Proxy() {
530 } 524 }
531 525
532 // static 526 // static
533 const InterfaceProxy::Info* PPB_Context3D_Proxy::GetInfo() {
534 static const Info info = {
535 thunk::GetPPB_Context3D_Thunk(),
536 PPB_CONTEXT_3D_DEV_INTERFACE,
537 INTERFACE_ID_PPB_CONTEXT_3D,
538 false,
539 &CreateContext3DProxy,
540 };
541 return &info;
542 }
543
544 // static
545 const InterfaceProxy::Info* PPB_Context3D_Proxy::GetTextureMappingInfo() {
546 static const Info info = {
547 thunk::GetPPB_GLESChromiumTextureMapping_Thunk(),
548 PPB_GLES_CHROMIUM_TEXTURE_MAPPING_DEV_INTERFACE,
549 INTERFACE_ID_NONE, // CONTEXT_3D is the canonical one.
550 false,
551 &CreateContext3DProxy,
552 };
553 return &info;
554 }
555
556 // static
557 PP_Resource PPB_Context3D_Proxy::Create(PP_Instance instance, 527 PP_Resource PPB_Context3D_Proxy::Create(PP_Instance instance,
558 PP_Config3D_Dev config, 528 PP_Config3D_Dev config,
559 PP_Resource share_context, 529 PP_Resource share_context,
560 const int32_t* attrib_list) { 530 const int32_t* attrib_list) {
561 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); 531 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
562 if (!dispatcher) 532 if (!dispatcher)
563 return PP_ERROR_BADARGUMENT; 533 return PP_ERROR_BADARGUMENT;
564 534
565 // TODO(alokp): Support shared context. 535 // TODO(alokp): Support shared context.
566 DCHECK_EQ(0, share_context); 536 DCHECK_EQ(0, share_context);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 // FIXME(brettw) handle bad messages! 584 // FIXME(brettw) handle bad messages!
615 return handled; 585 return handled;
616 } 586 }
617 587
618 void PPB_Context3D_Proxy::OnMsgCreate(PP_Instance instance, 588 void PPB_Context3D_Proxy::OnMsgCreate(PP_Instance instance,
619 PP_Config3D_Dev config, 589 PP_Config3D_Dev config,
620 const std::vector<int32_t>& attribs, 590 const std::vector<int32_t>& attribs,
621 HostResource* result) { 591 HostResource* result) {
622 if (attribs.empty() || attribs.back() != 0) 592 if (attribs.empty() || attribs.back() != 0)
623 return; // Bad message. 593 return; // Bad message.
624 EnterFunctionNoLock<ResourceCreationAPI> enter(instance, true); 594 thunk::EnterResourceCreation enter(instance);
625 if (enter.succeeded()) { 595 if (enter.succeeded()) {
626 result->SetHostResource( 596 result->SetHostResource(
627 instance, 597 instance,
628 enter.functions()->CreateContext3DRaw(instance, config, 0, 598 enter.functions()->CreateContext3DRaw(instance, config, 0,
629 &attribs.front())); 599 &attribs.front()));
630 } 600 }
631 } 601 }
632 602
633 void PPB_Context3D_Proxy::OnMsgBindSurfaces(const HostResource& context, 603 void PPB_Context3D_Proxy::OnMsgBindSurfaces(const HostResource& context,
634 const HostResource& draw, 604 const HostResource& draw,
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 uint32_t shm_size = 0; 692 uint32_t shm_size = 0;
723 if (enter.succeeded() && 693 if (enter.succeeded() &&
724 enter.object()->GetTransferBuffer(id, &shm_handle, &shm_size)) { 694 enter.object()->GetTransferBuffer(id, &shm_handle, &shm_size)) {
725 *transfer_buffer = TransportSHMHandleFromInt(dispatcher(), shm_handle); 695 *transfer_buffer = TransportSHMHandleFromInt(dispatcher(), shm_handle);
726 *size = shm_size; 696 *size = shm_size;
727 } 697 }
728 } 698 }
729 699
730 } // namespace proxy 700 } // namespace proxy
731 } // namespace ppapi 701 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppb_context_3d_proxy.h ('k') | ppapi/proxy/ppb_core_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698