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

Unified Diff: content/common/gpu/gpu_command_buffer_stub.cc

Issue 8060045: Use shared D3D9 texture to transport the compositor's backing buffer to the browser... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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 | « content/common/gpu/gpu_command_buffer_stub.h ('k') | content/common/gpu/gpu_messages.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/gpu/gpu_command_buffer_stub.cc
===================================================================
--- content/common/gpu/gpu_command_buffer_stub.cc (revision 108480)
+++ content/common/gpu/gpu_command_buffer_stub.cc (working copy)
@@ -14,13 +14,11 @@
#include "content/common/gpu/gpu_command_buffer_stub.h"
#include "content/common/gpu/gpu_messages.h"
#include "content/common/gpu/gpu_watchdog.h"
+#include "content/common/gpu/image_transport_surface.h"
#include "gpu/command_buffer/common/constants.h"
+#include "ui/gfx/gl/gl_bindings.h"
#include "ui/gfx/gl/gl_switches.h"
-#if defined(OS_MACOSX) || defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
-#include "content/common/gpu/image_transport_surface.h"
-#endif
-
GpuCommandBufferStub::GpuCommandBufferStub(
GpuChannel* channel,
GpuCommandBufferStub* share_group,
@@ -125,6 +123,19 @@
return !scheduler_.get() || scheduler_->IsScheduled();
}
+void GpuCommandBufferStub::SetSwapInterval() {
+#if !defined(OS_MACOSX) && !defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
+ // Set up swap interval for onscreen contexts.
+ if (!surface_->IsOffscreen()) {
+ decoder_->MakeCurrent();
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableGpuVsync))
+ context_->SetSwapInterval(0);
+ else
+ context_->SetSwapInterval(1);
+ }
+#endif
+}
+
void GpuCommandBufferStub::Destroy() {
// The scheduler has raw references to the decoder and the command buffer so
// destroy it before those.
@@ -186,6 +197,7 @@
OnInitializeFailed(reply_message);
return;
}
+#endif
surface_ = ImageTransportSurface::CreateSurface(
channel_->gpu_channel_manager(),
@@ -193,9 +205,6 @@
renderer_id_,
route_id_,
handle_);
-#elif defined(OS_WIN) || defined(OS_LINUX)
- surface_ = gfx::GLSurface::CreateViewGLSurface(software_, handle_);
-#endif
} else {
surface_ = gfx::GLSurface::CreateOffscreenGLSurface(software_,
gfx::Size(1, 1));
@@ -254,16 +263,6 @@
scheduler_->SetScheduledCallback(
NewCallback(channel_, &GpuChannel::OnScheduled));
- // On platforms that use an ImageTransportSurface, the surface
- // handles co-ordinating the resize with the browser process. The
- // surface sets it's own resize callback, so we shouldn't do it here.
-#if !defined(OS_MACOSX) && !defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
- if (handle_ != gfx::kNullPluginWindow) {
- decoder_->SetResizeCallback(
- NewCallback(this, &GpuCommandBufferStub::OnResize));
- }
-#endif
-
if (watchdog_) {
scheduler_->SetCommandProcessedCallback(
NewCallback(this, &GpuCommandBufferStub::OnCommandProcessed));
@@ -430,48 +429,6 @@
watchdog_->CheckArmed();
}
-void GpuCommandBufferStub::OnResize(gfx::Size size) {
- if (handle_ == gfx::kNullPluginWindow)
- return;
-
-#if defined(TOOLKIT_USES_GTK) && !defined(UI_COMPOSITOR_IMAGE_TRANSPORT) || \
- defined(OS_WIN)
- GpuChannelManager* gpu_channel_manager = channel_->gpu_channel_manager();
-
- // On Windows, Linux, we need to coordinate resizing of onscreen
- // contexts with the resizing of the actual OS-level window. We do this by
- // sending a resize message to the browser process and descheduling the
- // context until the ViewResized message comes back in reply.
- // Send the resize message if needed
- gpu_channel_manager->Send(
- new GpuHostMsg_ResizeView(renderer_id_,
- render_view_id_,
- route_id_,
- size));
-
- scheduler_->SetScheduled(false);
-#endif
-}
-
-void GpuCommandBufferStub::ViewResized() {
-#if defined(TOOLKIT_USES_GTK) && !defined(UI_COMPOSITOR_IMAGE_TRANSPORT) || \
- defined(OS_WIN)
- DCHECK(handle_ != gfx::kNullPluginWindow);
- scheduler_->SetScheduled(true);
-#endif
-
-#if defined(OS_WIN)
- // Recreate the view surface to match the window size. Swap chains do not
- // automatically resize with window size with D3D.
- context_->ReleaseCurrent(surface_.get());
- if (surface_.get()) {
- surface_->Destroy();
- surface_->Initialize();
- SetSwapInterval();
- }
-#endif
-}
-
void GpuCommandBufferStub::ReportState() {
gpu::CommandBuffer::State state = command_buffer_->GetState();
if (state.error == gpu::error::kLostContext &&
@@ -484,19 +441,6 @@
}
}
-void GpuCommandBufferStub::SetSwapInterval() {
-#if !defined(OS_MACOSX) && !defined(UI_COMPOSITOR_IMAGE_TRANSPORT)
- // Set up swap interval for onscreen contexts.
- if (!surface_->IsOffscreen()) {
- decoder_->MakeCurrent();
- if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableGpuVsync))
- context_->SetSwapInterval(0);
- else
- context_->SetSwapInterval(1);
- }
-#endif
-}
-
void GpuCommandBufferStub::OnCreateVideoDecoder(
media::VideoDecodeAccelerator::Profile profile,
IPC::Message* reply_message) {
« no previous file with comments | « content/common/gpu/gpu_command_buffer_stub.h ('k') | content/common/gpu/gpu_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698