Index: content/common/gpu/image_transport_surface_win.cc |
=================================================================== |
--- content/common/gpu/image_transport_surface_win.cc (revision 111041) |
+++ content/common/gpu/image_transport_surface_win.cc (working copy) |
@@ -1,176 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#if defined(ENABLE_GPU) |
- |
-#include "content/common/gpu/image_transport_surface.h" |
- |
-#include "base/bind.h" |
-#include "base/compiler_specific.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/win/windows_version.h" |
-#include "content/common/gpu/gpu_messages.h" |
-#include "ui/gfx/gl/gl_bindings.h" |
-#include "ui/gfx/gl/gl_context.h" |
-#include "ui/gfx/gl/gl_implementation.h" |
-#include "ui/gfx/gl/gl_surface_egl.h" |
-#include "ui/gfx/native_widget_types.h" |
- |
-namespace { |
- |
-// We are backed by an Pbuffer offscreen surface through which ANGLE provides |
-// a handle to the corresponding render target texture through an extension. |
-class PbufferImageTransportSurface |
- : public gfx::GLSurfaceAdapter, |
- public ImageTransportSurface, |
- public base::SupportsWeakPtr<PbufferImageTransportSurface> { |
- public: |
- PbufferImageTransportSurface(GpuChannelManager* manager, |
- int32 render_view_id, |
- int32 renderer_id, |
- int32 command_buffer_id); |
- |
- // GLSurface implementation |
- virtual bool Initialize(); |
- virtual void Destroy(); |
- virtual bool IsOffscreen(); |
- virtual bool SwapBuffers(); |
- |
- protected: |
- // ImageTransportSurface implementation |
- virtual void OnNewSurfaceACK(uint64 surface_id, |
- TransportDIB::Handle shm_handle) OVERRIDE; |
- virtual void OnBuffersSwappedACK() OVERRIDE; |
- virtual void OnResizeViewACK() OVERRIDE; |
- virtual void OnResize(gfx::Size size) OVERRIDE; |
- |
- private: |
- virtual ~PbufferImageTransportSurface(); |
- void SendBuffersSwapped(); |
- |
- scoped_ptr<ImageTransportHelper> helper_; |
- |
- DISALLOW_COPY_AND_ASSIGN(PbufferImageTransportSurface); |
-}; |
- |
-PbufferImageTransportSurface::PbufferImageTransportSurface( |
- GpuChannelManager* manager, |
- int32 render_view_id, |
- int32 renderer_id, |
- int32 command_buffer_id) |
- : GLSurfaceAdapter(new gfx::PbufferGLSurfaceEGL(false, |
- gfx::Size(1, 1))) { |
- helper_.reset(new ImageTransportHelper(this, |
- manager, |
- render_view_id, |
- renderer_id, |
- command_buffer_id, |
- gfx::kNullPluginWindow)); |
-} |
- |
-PbufferImageTransportSurface::~PbufferImageTransportSurface() { |
- Destroy(); |
-} |
- |
-bool PbufferImageTransportSurface::Initialize() { |
- // Only support this path if the GL implementation is ANGLE. |
- // IO surfaces will not work with, for example, OSMesa software renderer |
- // GL contexts. |
- if (gfx::GetGLImplementation() != gfx::kGLImplementationEGLGLES2) |
- return false; |
- |
- if (!helper_->Initialize()) |
- return false; |
- |
- return GLSurfaceAdapter::Initialize(); |
-} |
- |
-void PbufferImageTransportSurface::Destroy() { |
- helper_->Destroy(); |
- GLSurfaceAdapter::Destroy(); |
-} |
- |
-bool PbufferImageTransportSurface::IsOffscreen() { |
- return false; |
-} |
- |
-bool PbufferImageTransportSurface::SwapBuffers() { |
- HANDLE surface_handle = GetShareHandle(); |
- if (!surface_handle) |
- return false; |
- |
- helper_->DeferToFence(base::Bind( |
- &PbufferImageTransportSurface::SendBuffersSwapped, |
- AsWeakPtr())); |
- |
- return true; |
-} |
- |
-void PbufferImageTransportSurface::SendBuffersSwapped() { |
- GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params params; |
- params.surface_id = reinterpret_cast<int64>(GetShareHandle()); |
- params.size = GetSize(); |
- helper_->SendAcceleratedSurfaceBuffersSwapped(params); |
- |
- helper_->SetScheduled(false); |
-} |
- |
-void PbufferImageTransportSurface::OnBuffersSwappedACK() { |
- helper_->SetScheduled(true); |
-} |
- |
-void PbufferImageTransportSurface::OnNewSurfaceACK( |
- uint64 surface_id, |
- TransportDIB::Handle shm_handle) { |
- NOTIMPLEMENTED(); |
-} |
- |
-void PbufferImageTransportSurface::OnResizeViewACK() { |
- NOTIMPLEMENTED(); |
-} |
- |
-void PbufferImageTransportSurface::OnResize(gfx::Size size) { |
- Resize(size); |
-} |
- |
-} // namespace anonymous |
- |
-// static |
-scoped_refptr<gfx::GLSurface> ImageTransportSurface::CreateSurface( |
- GpuChannelManager* manager, |
- int32 render_view_id, |
- int32 renderer_id, |
- int32 command_buffer_id, |
- gfx::PluginWindowHandle handle) { |
- scoped_refptr<gfx::GLSurface> surface; |
- |
- base::win::OSInfo* os_info = base::win::OSInfo::GetInstance(); |
- |
- // TODO(apatrick): Enable this once it has settled in the tree. |
- if (false && gfx::GetGLImplementation() == gfx::kGLImplementationEGLGLES2 && |
- os_info->version() >= base::win::VERSION_VISTA) { |
- surface = new PbufferImageTransportSurface(manager, |
- render_view_id, |
- renderer_id, |
- command_buffer_id); |
- } else { |
- surface = gfx::GLSurface::CreateViewGLSurface(false, handle); |
- if (!surface.get()) |
- return NULL; |
- |
- surface = new PassThroughImageTransportSurface(manager, |
- render_view_id, |
- renderer_id, |
- command_buffer_id, |
- surface.get()); |
- } |
- |
- if (surface->Initialize()) |
- return surface; |
- else |
- return NULL; |
-} |
- |
-#endif // ENABLE_GPU |