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

Unified Diff: chrome/renderer/webplugin_delegate_pepper.cc

Issue 6588090: Removed GPU plugin.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/webplugin_delegate_pepper.h ('k') | chrome/renderer/webplugin_delegate_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/webplugin_delegate_pepper.cc
===================================================================
--- chrome/renderer/webplugin_delegate_pepper.cc (revision 76392)
+++ chrome/renderer/webplugin_delegate_pepper.cc (working copy)
@@ -64,14 +64,6 @@
#include "webkit/plugins/npapi/plugin_host.h"
#include "webkit/plugins/npapi/plugin_stream_url.h"
-#if defined(ENABLE_GPU)
-#include "webkit/plugins/npapi/plugin_constants_win.h"
-#endif
-
-#if defined(ENABLE_GPU)
-using gpu::Buffer;
-#endif
-
using webkit::npapi::WebPlugin;
using webkit::npapi::WebPluginDelegate;
using webkit::npapi::WebPluginResourceClient;
@@ -88,15 +80,6 @@
TransportDIB* dib;
};
-struct Device3DImpl {
-#if defined(ENABLE_GPU)
- gpu::CommandBuffer* command_buffer;
-#endif
- bool dynamically_created;
-};
-
-const int32 kDefaultCommandBufferSize = 1024 * 1024;
-
} // namespace
static const float kPointsPerInch = 72.0;
@@ -198,22 +181,6 @@
instance_ = 0;
}
-
- // Destroy the nested GPU plugin only after first destroying the underlying
- // Pepper plugin. This is so the Pepper plugin does not attempt to issue
- // rendering commands after the GPU plugin has stopped processing them and
- // responding to them.
- if (nested_delegate_) {
-#if defined(ENABLE_GPU)
- if (command_buffer_) {
- nested_delegate_->DestroyCommandBuffer(command_buffer_);
- command_buffer_ = NULL;
- }
-#endif
-
- nested_delegate_->PluginDestroyed();
- nested_delegate_ = NULL;
- }
}
void WebPluginDelegatePepper::UpdateGeometry(
@@ -238,21 +205,6 @@
new_committed.allocPixels();
committed_bitmap_ = new_committed;
- // Forward the new geometry to the nested plugin instance.
- if (nested_delegate_)
- nested_delegate_->UpdateGeometry(window_rect, clip_rect);
-
-#if defined(ENABLE_GPU)
-#if defined(OS_MACOSX)
- // Send the new window size to the command buffer service code so it
- // can allocate a new backing store. The handle to the new backing
- // store is sent back to the browser asynchronously.
- if (command_buffer_) {
- command_buffer_->SetWindowSize(window_rect_.size());
- }
-#endif // OS_MACOSX
-#endif // ENABLE_GPU
-
if (!instance())
return;
@@ -568,8 +520,7 @@
}
// This is a windowless plugin, so set it to have no handle. Defer this
- // until we know the plugin will use the 2D device. If it uses the 3D device
- // it will have a window handle.
+ // until we know the plugin will use the 2D device.
plugin_->SetWindow(gfx::kNullPluginWindow);
scoped_ptr<Graphics2DDeviceContext> g2d(new Graphics2DDeviceContext(this));
@@ -670,76 +621,6 @@
NPError WebPluginDelegatePepper::Device3DInitializeContext(
const NPDeviceContext3DConfig* config,
NPDeviceContext3D* context) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
-#if defined(ENABLE_GPU)
- // Check to see if the GPU plugin is already initialized and fail if so.
- if (nested_delegate_)
- return NPERR_GENERIC_ERROR;
-
- // Create an instance of the GPU plugin that is responsible for 3D
- // rendering.
- nested_delegate_ = new WebPluginDelegateProxy(
- "application/vnd.google.chrome.gpu-plugin", render_view_);
-
- // TODO(apatrick): should the GPU plugin be attached to plugin_?
- if (nested_delegate_->Initialize(GURL(),
- std::vector<std::string>(),
- std::vector<std::string>(),
- plugin_,
- false)) {
- plugin_->SetAcceptsInputEvents(true);
-
- // Ensure the window has the correct size before initializing the
- // command buffer.
- nested_delegate_->UpdateGeometry(window_rect_, clip_rect_);
-
- // Ask the GPU plugin to create a command buffer and return a proxy.
- command_buffer_ = nested_delegate_->CreateCommandBuffer();
- if (command_buffer_) {
- // Initialize the proxy command buffer.
- if (command_buffer_->Initialize(config->commandBufferSize)) {
- // Get the initial command buffer state.
- gpu::CommandBuffer::State state = command_buffer_->GetState();
-
- // Initialize the 3D context.
- context->reserved = NULL;
- context->waitForProgress = true;
- Buffer ring_buffer = command_buffer_->GetRingBuffer();
- context->commandBuffer = ring_buffer.ptr;
- context->commandBufferSize = state.num_entries;
- context->repaintCallback = NULL;
- Synchronize3DContext(context, state);
-
- ScheduleHandleRepaint(instance_->npp(), context);
-
-#if defined(OS_MACOSX)
- command_buffer_->SetWindowSize(window_rect_.size());
-#endif // OS_MACOSX
-
- // Make sure the nested delegate shows up in the right place
- // on the page.
- SendNestedDelegateGeometryToBrowser(window_rect_, clip_rect_);
-
- // Save the implementation information (the CommandBuffer).
- Device3DImpl* impl = new Device3DImpl;
- impl->command_buffer = command_buffer_;
- impl->dynamically_created = false;
- context->reserved = impl;
-
- return NPERR_NO_ERROR;
- }
-
- nested_delegate_->DestroyCommandBuffer(command_buffer_);
- command_buffer_ = NULL;
- }
- }
-
- nested_delegate_->PluginDestroyed();
- nested_delegate_ = NULL;
-#endif // ENABLE_GPU
-
return NPERR_GENERIC_ERROR;
}
@@ -762,212 +643,49 @@
NPDeviceContext3D* context,
NPDeviceFlushContextCallbackPtr callback,
void* user_data) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
-#if defined(ENABLE_GPU)
- gpu::CommandBuffer::State state;
-
- if (context->waitForProgress) {
- if (callback) {
- command_buffer_->AsyncFlush(
- context->putOffset,
- method_factory3d_.NewRunnableMethod(
- &WebPluginDelegatePepper::Device3DUpdateState,
- id,
- context,
- callback,
- user_data));
- } else {
- state = command_buffer_->FlushSync(context->putOffset);
- Synchronize3DContext(context, state);
- }
- } else {
- if (callback) {
- command_buffer_->AsyncGetState(
- method_factory3d_.NewRunnableMethod(
- &WebPluginDelegatePepper::Device3DUpdateState,
- id,
- context,
- callback,
- user_data));
- } else {
- state = command_buffer_->GetState();
- Synchronize3DContext(context, state);
- }
- }
-#endif // ENABLE_GPU
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DDestroyContext(
NPDeviceContext3D* context) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
-#if defined(ENABLE_GPU)
- // Prevent any async flush callbacks from being invoked after the context
- // has been destroyed.
- method_factory3d_.RevokeAll();
-
- // TODO(apatrick): this will be much simpler when we switch to the new device
- // API. There should be no need for the Device3DImpl and the context will
- // always be destroyed dynamically.
- Device3DImpl* impl = static_cast<Device3DImpl*>(context->reserved);
- bool dynamically_created = impl->dynamically_created;
- delete impl;
- context->reserved = NULL;
- if (dynamically_created) {
- delete context;
- }
-
- if (nested_delegate_) {
- if (command_buffer_) {
- nested_delegate_->DestroyCommandBuffer(command_buffer_);
- command_buffer_ = NULL;
- }
-
- nested_delegate_->PluginDestroyed();
- nested_delegate_ = NULL;
- }
-#endif // ENABLE_GPU
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DCreateBuffer(
NPDeviceContext3D* context,
size_t size,
int32* id) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
-#if defined(ENABLE_GPU)
- *id = command_buffer_->CreateTransferBuffer(size);
- if (*id < 0)
- return NPERR_GENERIC_ERROR;
-#endif // ENABLE_GPU
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DDestroyBuffer(
NPDeviceContext3D* context,
int32 id) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
-#if defined(ENABLE_GPU)
- command_buffer_->DestroyTransferBuffer(id);
-#endif // ENABLE_GPU
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DMapBuffer(
NPDeviceContext3D* context,
int32 id,
NPDeviceBuffer* np_buffer) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
-#if defined(ENABLE_GPU)
- Buffer gpu_buffer;
- if (id == NP3DCommandBufferId) {
- gpu_buffer = command_buffer_->GetRingBuffer();
- } else {
- gpu_buffer = command_buffer_->GetTransferBuffer(id);
- }
-
- np_buffer->ptr = gpu_buffer.ptr;
- np_buffer->size = gpu_buffer.size;
- if (!np_buffer->ptr)
- return NPERR_GENERIC_ERROR;
-#endif // ENABLE_GPU
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DGetNumConfigs(int32* num_configs) {
- if (!num_configs)
- return NPERR_GENERIC_ERROR;
-
- *num_configs = 1;
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DGetConfigAttribs(
int32 config,
int32* attrib_list) {
- // Only one config available currently.
- if (config != 0)
- return NPERR_GENERIC_ERROR;
-
- if (attrib_list) {
- for (int32* attrib_pair = attrib_list; *attrib_pair; attrib_pair += 2) {
- switch (attrib_pair[0]) {
- case NP3DAttrib_BufferSize:
- attrib_pair[1] = 32;
- break;
- case NP3DAttrib_AlphaSize:
- case NP3DAttrib_BlueSize:
- case NP3DAttrib_GreenSize:
- case NP3DAttrib_RedSize:
- attrib_pair[1] = 8;
- break;
- case NP3DAttrib_DepthSize:
- attrib_pair[1] = 24;
- break;
- case NP3DAttrib_StencilSize:
- attrib_pair[1] = 8;
- break;
- case NP3DAttrib_SurfaceType:
- attrib_pair[1] = 0;
- break;
- default:
- return NPERR_GENERIC_ERROR;
- }
- }
- }
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DCreateContext(
int32 config,
const int32* attrib_list,
NPDeviceContext3D** context) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
- // Only one config available currently.
- if (config != 0)
- return NPERR_GENERIC_ERROR;
-
- // For now, just use the old API to initialize the context.
- NPDeviceContext3DConfig old_config;
- old_config.commandBufferSize = kDefaultCommandBufferSize;
- if (attrib_list) {
- for (const int32* attrib_pair = attrib_list; *attrib_pair;
- attrib_pair += 2) {
- switch (attrib_pair[0]) {
- case NP3DAttrib_CommandBufferSize:
- old_config.commandBufferSize = attrib_pair[1];
- break;
- default:
- return NPERR_GENERIC_ERROR;
- }
- }
- }
-
- *context = new NPDeviceContext3D;
- Device3DInitializeContext(&old_config, *context);
-
- // Flag the context as dynamically created by the browser. TODO(apatrick):
- // take this out when all contexts are dynamically created.
- Device3DImpl* impl = static_cast<Device3DImpl*>((*context)->reserved);
- impl->dynamically_created = true;
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DRegisterCallback(
@@ -976,19 +694,7 @@
int32 callback_type,
NPDeviceGenericCallbackPtr callback,
void* callback_data) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
- switch (callback_type) {
- case NP3DCallback_Repaint:
- context->repaintCallback = reinterpret_cast<NPDeviceContext3DRepaintPtr>(
- callback);
- break;
- default:
- return NPERR_GENERIC_ERROR;
- }
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::Device3DSynchronizeContext(
@@ -999,58 +705,7 @@
int32* output_attrib_list,
NPDeviceSynchronizeContextCallbackPtr callback,
void* callback_data) {
- if (!context)
- return NPERR_GENERIC_ERROR;
-
- // Copy input attributes into context.
- if (input_attrib_list) {
- for (const int32* attrib_pair = input_attrib_list;
- *attrib_pair;
- attrib_pair += 2) {
- switch (attrib_pair[0]) {
- case NP3DAttrib_PutOffset:
- context->putOffset = attrib_pair[1];
- break;
- default:
- return NPERR_GENERIC_ERROR;
- }
- }
- }
-
- // Use existing flush mechanism for now.
- if (mode != NPDeviceSynchronizationMode_Cached) {
- context->waitForProgress = mode == NPDeviceSynchronizationMode_Flush;
- Device3DFlushContext(id, context, callback, callback_data);
- }
-
- // Copy most recent output attributes from context.
- // To read output attributes after the completion of an asynchronous flush,
- // invoke SynchronizeContext again with mode
- // NPDeviceSynchronizationMode_Cached from the callback function.
- if (output_attrib_list) {
- for (int32* attrib_pair = output_attrib_list;
- *attrib_pair;
- attrib_pair += 2) {
- switch (attrib_pair[0]) {
- case NP3DAttrib_CommandBufferSize:
- attrib_pair[1] = context->commandBufferSize;
- break;
- case NP3DAttrib_GetOffset:
- attrib_pair[1] = context->getOffset;
- break;
- case NP3DAttrib_PutOffset:
- attrib_pair[1] = context->putOffset;
- break;
- case NP3DAttrib_Token:
- attrib_pair[1] = context->token;
- break;
- default:
- return NPERR_GENERIC_ERROR;
- }
- }
- }
-
- return NPERR_NO_ERROR;
+ return NPERR_GENERIC_ERROR;
}
NPError WebPluginDelegatePepper::DeviceAudioQueryCapability(int32 capability,
@@ -1383,16 +1038,11 @@
: render_view_(render_view),
plugin_(NULL),
instance_(instance),
- nested_delegate_(NULL),
current_printer_dpi_(-1),
#if defined (OS_LINUX)
num_pages_(0),
pdf_output_done_(false),
#endif // (OS_LINUX)
-#if defined(ENABLE_GPU)
- command_buffer_(NULL),
- method_factory3d_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
-#endif
find_identifier_(-1),
current_choose_file_callback_(NULL),
current_choose_file_user_data_(NULL) {
@@ -1430,21 +1080,16 @@
void WebPluginDelegatePepper::Paint(WebKit::WebCanvas* canvas,
const gfx::Rect& rect) {
- if (nested_delegate_) {
- // TODO(apatrick): The GPU plugin will render to an offscreen render target.
- // Need to copy it to the screen here.
- } else {
- // Blit from background_context to context.
- if (!committed_bitmap_.isNull()) {
+ // Blit from background_context to context.
+ if (!committed_bitmap_.isNull()) {
#if defined(OS_MACOSX)
- DrawSkBitmapToCanvas(committed_bitmap_, canvas, window_rect_,
- static_cast<int>(CGBitmapContextGetHeight(canvas)));
+ DrawSkBitmapToCanvas(committed_bitmap_, canvas, window_rect_,
+ static_cast<int>(CGBitmapContextGetHeight(canvas)));
#else
- canvas->drawBitmap(committed_bitmap_,
- SkIntToScalar(window_rect_.origin().x()),
- SkIntToScalar(window_rect_.origin().y()));
+ canvas->drawBitmap(committed_bitmap_,
+ SkIntToScalar(window_rect_.origin().x()),
+ SkIntToScalar(window_rect_.origin().y()));
#endif
- }
}
}
@@ -1584,70 +1229,6 @@
return rv;
}
-#if defined(ENABLE_GPU)
-
-void WebPluginDelegatePepper::ScheduleHandleRepaint(
- NPP npp, NPDeviceContext3D* context) {
- command_buffer_->SetNotifyRepaintTask(method_factory3d_.NewRunnableMethod(
- &WebPluginDelegatePepper::ForwardHandleRepaint,
- npp,
- context));
-}
-
-void WebPluginDelegatePepper::ForwardHandleRepaint(
- NPP npp, NPDeviceContext3D* context) {
- if (context->repaintCallback)
- context->repaintCallback(npp, context);
- ScheduleHandleRepaint(npp, context);
-}
-
-void WebPluginDelegatePepper::Synchronize3DContext(
- NPDeviceContext3D* context,
- const gpu::CommandBuffer::State& state) {
- context->getOffset = state.get_offset;
- context->putOffset = state.put_offset;
- context->token = state.token;
- context->error = static_cast<NPDeviceContext3DError>(state.error);
-}
-
-void WebPluginDelegatePepper::Device3DUpdateState(
- NPP npp,
- NPDeviceContext3D* context,
- NPDeviceFlushContextCallbackPtr callback,
- void* user_data) {
- if (command_buffer_) {
- Synchronize3DContext(context, command_buffer_->GetLastState());
- if (callback)
- callback(npp, context, NPERR_NO_ERROR, user_data);
- }
-}
-
-#endif // ENABLE_GPU
-
-void WebPluginDelegatePepper::SendNestedDelegateGeometryToBrowser(
- const gfx::Rect& window_rect,
- const gfx::Rect& clip_rect) {
- // Inform the browser about the location of the plugin on the page.
- // It appears that initially the plugin does not get laid out correctly --
- // possibly due to lazy creation of the nested delegate.
- if (!nested_delegate_ ||
- !nested_delegate_->GetPluginWindowHandle() ||
- !render_view_) {
- return;
- }
-
- webkit::npapi::WebPluginGeometry geom;
- geom.window = nested_delegate_->GetPluginWindowHandle();
- geom.window_rect = window_rect;
- geom.clip_rect = clip_rect;
- // Rects_valid must be true for this to work in the Gtk port;
- // hopefully not having the cutout rects will not cause incorrect
- // clipping.
- geom.rects_valid = true;
- geom.visible = true;
- render_view_->DidMovePlugin(geom);
-}
-
bool WebPluginDelegatePepper::CalculatePrintedPageDimensions(
int page_number,
NPPPrintExtensions* print_extensions,
« no previous file with comments | « chrome/renderer/webplugin_delegate_pepper.h ('k') | chrome/renderer/webplugin_delegate_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698