| Index: ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_graphics_3d.h
|
| ===================================================================
|
| --- ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_graphics_3d.h (revision 0)
|
| +++ ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_graphics_3d.h (revision 0)
|
| @@ -0,0 +1,77 @@
|
| +/*
|
| + * Copyright 2011 The Native Client Authors. All rights reserved.
|
| + * Use of this source code is governed by a BSD-style license that can
|
| + * be found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_PPB_GRAPHICS_3D_H_
|
| +#define NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_PPB_GRAPHICS_3D_H_
|
| +
|
| +#include "base/scoped_ptr.h"
|
| +#include "native_client/src/include/nacl_macros.h"
|
| +#include "native_client/src/shared/ppapi_proxy/plugin_resource.h"
|
| +#include "ppapi/c/dev/pp_graphics_3d_dev.h"
|
| +#include "ppapi/c/dev/ppb_graphics_3d_dev.h"
|
| +#include "ppapi/c/dev/ppb_opengles_dev.h"
|
| +#include "ppapi/c/pp_instance.h"
|
| +
|
| +namespace gpu {
|
| +class CommandBuffer;
|
| +namespace gles2 {
|
| +class GLES2CmdHelper;
|
| +class GLES2Implementation;
|
| +} // namespace gles2
|
| +} // namespace gpu
|
| +
|
| +namespace ppapi_proxy {
|
| +
|
| +// Implements the plugin (i.e., .nexe) side of the PPB_Graphics3D interface.
|
| +class PluginGraphics3D : public PluginResource {
|
| + public:
|
| + PluginGraphics3D();
|
| + virtual ~PluginGraphics3D();
|
| +
|
| + static const PPB_Graphics3D_Dev* GetInterface();
|
| + static const PPB_OpenGLES2_Dev* GetOpenGLESInterface();
|
| +
|
| + virtual bool InitFromBrowserResource(PP_Resource graphics3d_id);
|
| +
|
| + gpu::gles2::GLES2Implementation* impl() {
|
| + return gles2_implementation_.get();
|
| + }
|
| +
|
| + int32_t SwapBuffers(PP_Resource graphics3d_id,
|
| + struct PP_CompletionCallback callback);
|
| +
|
| + PP_Instance instance_id() { return instance_id_; }
|
| + void set_instance_id(PP_Instance instance_id) { instance_id_ = instance_id; }
|
| +
|
| + static inline gpu::gles2::GLES2Implementation* implFromResource(
|
| + PP_Resource graphics3d_id) {
|
| + if (cached_graphics3d_id == graphics3d_id && cached_implementation != NULL)
|
| + return cached_implementation;
|
| +
|
| + return implFromResourceSlow(graphics3d_id);
|
| + }
|
| +
|
| +
|
| + private:
|
| + static __thread PP_Resource cached_graphics3d_id;
|
| + static __thread gpu::gles2::GLES2Implementation* cached_implementation;
|
| +
|
| + // GLES2 Implementation objects.
|
| + scoped_ptr<gpu::CommandBuffer> command_buffer_;
|
| + scoped_ptr<gpu::gles2::GLES2Implementation> gles2_implementation_;
|
| + scoped_ptr<gpu::gles2::GLES2CmdHelper> gles2_helper_;
|
| + PP_Instance instance_id_;
|
| +
|
| + static gpu::gles2::GLES2Implementation* implFromResourceSlow(
|
| + PP_Resource context);
|
| +
|
| + IMPLEMENT_RESOURCE(PluginGraphics3D);
|
| + NACL_DISALLOW_COPY_AND_ASSIGN(PluginGraphics3D);
|
| +};
|
| +
|
| +} // namespace ppapi_proxy
|
| +
|
| +#endif // NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_PPB_GRAPHICS_3D_H_
|
|
|