| Index: webkit/plugins/ppapi/ppb_graphics_3d_impl.cc
|
| ===================================================================
|
| --- webkit/plugins/ppapi/ppb_graphics_3d_impl.cc (revision 69970)
|
| +++ webkit/plugins/ppapi/ppb_graphics_3d_impl.cc (working copy)
|
| @@ -4,208 +4,44 @@
|
|
|
| #include "webkit/plugins/ppapi/ppb_graphics_3d_impl.h"
|
|
|
| -#include "gpu/command_buffer/common/command_buffer.h"
|
| +#include "ppapi/c/pp_errors.h"
|
| +#include "ppapi/c/pp_var.h"
|
| #include "ppapi/c/dev/ppb_graphics_3d_dev.h"
|
| -#include "webkit/plugins/ppapi/common.h"
|
| -#include "webkit/plugins/ppapi/ppapi_plugin_instance.h"
|
|
|
| namespace webkit {
|
| namespace ppapi {
|
|
|
| namespace {
|
|
|
| -// Size of the transfer buffer.
|
| -enum { kTransferBufferSize = 512 * 1024 };
|
| -
|
| -PP_Bool IsGraphics3D(PP_Resource resource) {
|
| - return BoolToPPBool(!!Resource::GetAs<PPB_Graphics3D_Impl>(resource));
|
| +int32_t GetConfigs(PP_Config3D_Dev* configs,
|
| + int32_t config_size,
|
| + int32_t* num_config) {
|
| + // TODO(alokp): Implement me.
|
| + return PP_ERROR_FAILED;
|
| }
|
|
|
| -PP_Bool GetConfigs(int32_t* configs, int32_t config_size, int32_t* num_config) {
|
| - // TODO(neb): Implement me!
|
| - return PP_FALSE;
|
| +int32_t GetConfigAttribs(PP_Config3D_Dev config, int32_t* attrib_list) {
|
| + // TODO(alokp): Implement me.
|
| + return PP_ERROR_FAILED;
|
| }
|
|
|
| -PP_Bool ChooseConfig(const int32_t* attrib_list, int32_t* configs,
|
| - int32_t config_size, int32_t* num_config) {
|
| - // TODO(neb): Implement me!
|
| - return PP_FALSE;
|
| +PP_Var GetString(int32_t name) {
|
| + // TODO(alokp): Implement me.
|
| + return PP_MakeUndefined();
|
| }
|
|
|
| -PP_Bool GetConfigAttrib(int32_t config, int32_t attribute, int32_t* value) {
|
| - // TODO(neb): Implement me!
|
| - return PP_FALSE;
|
| -}
|
| -
|
| -const char* QueryString(int32_t name) {
|
| - switch (name) {
|
| - case EGL_CLIENT_APIS:
|
| - return "OpenGL_ES";
|
| - case EGL_EXTENSIONS:
|
| - return "";
|
| - case EGL_VENDOR:
|
| - return "Google";
|
| - case EGL_VERSION:
|
| - return "1.0 Google";
|
| - default:
|
| - return NULL;
|
| - }
|
| -}
|
| -
|
| -PP_Resource CreateContext(PP_Instance instance_id, int32_t config,
|
| - int32_t share_context,
|
| - const int32_t* attrib_list) {
|
| - DCHECK_EQ(0, share_context);
|
| -
|
| - PluginInstance* instance = ResourceTracker::Get()->GetInstance(instance_id);
|
| - if (!instance) {
|
| - return 0;
|
| - }
|
| -
|
| - scoped_refptr<PPB_Graphics3D_Impl> context(
|
| - new PPB_Graphics3D_Impl(instance->module()));
|
| - if (!context->Init(instance_id, config, attrib_list)) {
|
| - return 0;
|
| - }
|
| -
|
| - return context->GetReference();
|
| -}
|
| -
|
| -void* GetProcAddress(const char* name) {
|
| - // TODO(neb): Implement me!
|
| - return NULL;
|
| -}
|
| -
|
| -PP_Bool SwapBuffers(PP_Resource graphics3d) {
|
| - scoped_refptr<PPB_Graphics3D_Impl> context(
|
| - Resource::GetAs<PPB_Graphics3D_Impl>(graphics3d));
|
| - return BoolToPPBool(context && context->SwapBuffers());
|
| -}
|
| -
|
| -uint32_t GetError() {
|
| - // TODO(alokp): Fix this.
|
| - return 0;
|
| -}
|
| -
|
| const PPB_Graphics3D_Dev ppb_graphics3d = {
|
| - &IsGraphics3D,
|
| &GetConfigs,
|
| - &ChooseConfig,
|
| - &GetConfigAttrib,
|
| - &QueryString,
|
| - &CreateContext,
|
| - &GetProcAddress,
|
| - &SwapBuffers,
|
| - &GetError
|
| + &GetConfigAttribs,
|
| + &GetString
|
| };
|
|
|
| } // namespace
|
|
|
| -PPB_Graphics3D_Impl::PPB_Graphics3D_Impl(PluginModule* module)
|
| - : Resource(module),
|
| - bound_instance_(NULL) {
|
| -}
|
| -
|
| const PPB_Graphics3D_Dev* PPB_Graphics3D_Impl::GetInterface() {
|
| return &ppb_graphics3d;
|
| }
|
|
|
| -PPB_Graphics3D_Impl::~PPB_Graphics3D_Impl() {
|
| - Destroy();
|
| -}
|
| -
|
| -PPB_Graphics3D_Impl* PPB_Graphics3D_Impl::AsPPB_Graphics3D_Impl() {
|
| - return this;
|
| -}
|
| -
|
| -bool PPB_Graphics3D_Impl::Init(PP_Instance instance_id, int32_t config,
|
| - const int32_t* attrib_list) {
|
| - PluginInstance* instance = ResourceTracker::Get()->GetInstance(instance_id);
|
| - if (!instance) {
|
| - return false;
|
| - }
|
| -
|
| - // Create and initialize the objects required to issue GLES2 calls.
|
| - platform_context_.reset(instance->delegate()->CreateContext3D());
|
| - if (!platform_context_.get()) {
|
| - Destroy();
|
| - return false;
|
| - }
|
| -
|
| - if (!platform_context_->Init()) {
|
| - Destroy();
|
| - return false;
|
| - }
|
| -
|
| - gles2_implementation_ = platform_context_->GetGLES2Implementation();
|
| - DCHECK(gles2_implementation_);
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool PPB_Graphics3D_Impl::BindToInstance(PluginInstance* new_instance) {
|
| - if (bound_instance_ == new_instance)
|
| - return true; // Rebinding the same device, nothing to do.
|
| - if (bound_instance_ && new_instance)
|
| - return false; // Can't change a bound device.
|
| -
|
| - if (new_instance) {
|
| - // Resize the backing texture to the size of the instance when it is bound.
|
| - platform_context_->ResizeBackingTexture(new_instance->position().size());
|
| -
|
| - // This is a temporary hack. The SwapBuffers is issued to force the resize
|
| - // to take place before any subsequent rendering. This might lead to a
|
| - // partially rendered frame being displayed. It is also not thread safe
|
| - // since the SwapBuffers is written to the command buffer and that command
|
| - // buffer might be written to by another thread.
|
| - // TODO(apatrick): Figure out the semantics of binding and resizing.
|
| - platform_context_->SwapBuffers();
|
| - }
|
| -
|
| - bound_instance_ = new_instance;
|
| - return true;
|
| -}
|
| -
|
| -bool PPB_Graphics3D_Impl::SwapBuffers() {
|
| - if (!platform_context_.get())
|
| - return false;
|
| -
|
| - return platform_context_->SwapBuffers();
|
| -}
|
| -
|
| -unsigned PPB_Graphics3D_Impl::GetError() {
|
| - if (!platform_context_.get())
|
| - return 0;
|
| -
|
| - return platform_context_->GetError();
|
| -}
|
| -
|
| -void PPB_Graphics3D_Impl::ResizeBackingTexture(const gfx::Size& size) {
|
| - if (!platform_context_.get())
|
| - return;
|
| -
|
| - platform_context_->ResizeBackingTexture(size);
|
| -}
|
| -
|
| -void PPB_Graphics3D_Impl::SetSwapBuffersCallback(Callback0::Type* callback) {
|
| - if (!platform_context_.get())
|
| - return;
|
| -
|
| - platform_context_->SetSwapBuffersCallback(callback);
|
| -}
|
| -
|
| -unsigned PPB_Graphics3D_Impl::GetBackingTextureId() {
|
| - if (!platform_context_.get())
|
| - return 0;
|
| -
|
| - return platform_context_->GetBackingTextureId();
|
| -}
|
| -
|
| -void PPB_Graphics3D_Impl::Destroy() {
|
| - gles2_implementation_ = NULL;
|
| - platform_context_.reset();
|
| -}
|
| -
|
| } // namespace ppapi
|
| } // namespace webkit
|
|
|
|
|