15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef WIN8_METRO_DRIVER_DIRECT3D_HELPER_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define WIN8_METRO_DRIVER_DIRECT3D_HELPER_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.ui.core.h> 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.foundation.h> 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <d3d11_1.h> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace metro_driver { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// We need to initalize a Direct3D device and swapchain so that the browser 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// can Present to our HWND. This class takes care of creating and keeping the 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// swapchain up to date. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Direct3DHelper { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Direct3DHelper(); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Direct3DHelper(); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Initialize(winui::Core::ICoreWindow* window); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateDeviceResources(); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateWindowSizeDependentResources(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) winui::Core::ICoreWindow* window_; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mswr::ComPtr<ID3D11Device1> d3d_device_; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mswr::ComPtr<ID3D11DeviceContext1> d3d_context_; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mswr::ComPtr<IDXGISwapChain1> swap_chain_; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) D3D_FEATURE_LEVEL feature_level_; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ABI::Windows::Foundation::Rect window_bounds_; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Direct3DHelper); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace metro_driver 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // WIN8_METRO_DRIVER_DIRECT3D_HELPER_ 45