From 290fc49d46142b94f9c7754c8c3cf36408b9a269 Mon Sep 17 00:00:00 2001 From: "apatrick@chromium.org" Date: Tue, 22 Nov 2011 23:25:23 +0000 Subject: Reland 110355 - Use shared D3D9 texture to transport the compositor's backing buffer to the browser process for presentation. Implemented ImageTransportSurface for Linux (without texture sharing), XP, Vista and 7. XP. The non-texture sharing Linux and XP paths just present directly to the compositing child window owned by the browser process as before. PassThroughImageTransportSurface still needs a proper name. I will move it into its own file once that is decided. I moved AcceleratedSurfaceBuffersSwapped outside of the platform specific ifdefs and made the signature the same on all platforms for greater consistency. I removed the code related to sharing surfaces between processes and synchronizing resize and swapping out of GpuCommandBufferStub. It is all now in ImageTransportSurface implementations. Original Review URL: http://codereview.chromium.org/8060045 Review URL: http://codereview.chromium.org/8622004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111246 0039d316-1c4b-4281-b951-d872f2087c98 --- ui/gfx/surface/accelerated_surface_win.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'ui/gfx/surface') diff --git a/ui/gfx/surface/accelerated_surface_win.cc b/ui/gfx/surface/accelerated_surface_win.cc index efb5706..c3bc154 100644 --- a/ui/gfx/surface/accelerated_surface_win.cc +++ b/ui/gfx/surface/accelerated_surface_win.cc @@ -27,8 +27,14 @@ namespace { +typedef HRESULT (WINAPI *Direct3DCreate9ExFunc)(UINT sdk_version, + IDirect3D9Ex **d3d); + const int64 kPollQueryInterval = 1; +const wchar_t kD3D9ModuleName[] = L"d3d9.dll"; +const char kCreate3D9DeviceExName[] = "Direct3DCreate9Ex"; + class QuerySyncThread : public base::Thread, public base::RefCounted { @@ -330,8 +336,17 @@ void AcceleratedSurface::DoInitialize() { HRESULT hr; + HMODULE module = GetModuleHandle(kD3D9ModuleName); + if (!module) + return; + + Direct3DCreate9ExFunc create_func = reinterpret_cast( + GetProcAddress(module, kCreate3D9DeviceExName)); + if (!create_func) + return; + base::win::ScopedComPtr d3d; - hr = Direct3DCreate9Ex(D3D_SDK_VERSION, d3d.Receive()); + hr = create_func(D3D_SDK_VERSION, d3d.Receive()); if (FAILED(hr)) return; -- cgit v1.1