• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef WIN8_METRO_DRIVER_DIRECT3D_HELPER_
6 #define WIN8_METRO_DRIVER_DIRECT3D_HELPER_
7 
8 #include "base/basictypes.h"
9 
10 #include <windows.ui.core.h>
11 #include <windows.foundation.h>
12 #include <d3d11_1.h>
13 
14 namespace metro_driver {
15 
16 // We need to initalize a Direct3D device and swapchain so that the browser
17 // can Present to our HWND. This class takes care of creating and keeping the
18 // swapchain up to date.
19 class Direct3DHelper {
20  public:
21   Direct3DHelper();
22   ~Direct3DHelper();
23 
24   void Initialize(winui::Core::ICoreWindow* window);
25 
26  private:
27   void CreateDeviceResources();
28   void CreateWindowSizeDependentResources();
29 
30   winui::Core::ICoreWindow* window_;
31 
32   mswr::ComPtr<ID3D11Device1> d3d_device_;
33   mswr::ComPtr<ID3D11DeviceContext1> d3d_context_;
34   mswr::ComPtr<IDXGISwapChain1> swap_chain_;
35   D3D_FEATURE_LEVEL feature_level_;
36 
37   ABI::Windows::Foundation::Rect window_bounds_;
38 
39   DISALLOW_COPY_AND_ASSIGN(Direct3DHelper);
40 };
41 
42 }  // namespace metro_driver
43 
44 #endif  // WIN8_METRO_DRIVER_DIRECT3D_HELPER_
45