Index: win8/metro_driver/direct3d_helper.cc |
diff --git a/win8/metro_driver/direct3d_helper.cc b/win8/metro_driver/direct3d_helper.cc |
deleted file mode 100644 |
index b19c57d1f1bc2a52a11bcab597bd7743df4537db..0000000000000000000000000000000000000000 |
--- a/win8/metro_driver/direct3d_helper.cc |
+++ /dev/null |
@@ -1,150 +0,0 @@ |
-// Copyright 2012 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. |
- |
-#include "stdafx.h" |
-#include <corewindow.h> |
-#include <windows.applicationmodel.core.h> |
-#include <windows.graphics.display.h> |
- |
-#include "win8/metro_driver/direct3d_helper.h" |
-#include "base/logging.h" |
-#include "base/win/windows_version.h" |
-#include "ui/gfx/win/dpi.h" |
-#include "win8/metro_driver/winrt_utils.h" |
- |
-namespace { |
- |
-void CheckIfFailed(HRESULT hr) { |
- DCHECK(!FAILED(hr)); |
- if (FAILED(hr)) |
- DVLOG(0) << "Direct3D call failed, hr = " << hr; |
-} |
- |
-float ConvertDipsToPixels(float dips) { |
- return floor(dips * gfx::GetDPIScale() + 0.5f); |
-} |
- |
-} |
- |
-namespace metro_driver { |
- |
-Direct3DHelper::Direct3DHelper() { |
-} |
- |
-Direct3DHelper::~Direct3DHelper() { |
-} |
- |
-void Direct3DHelper::Initialize(winui::Core::ICoreWindow* window) { |
- window_ = window; |
- CreateDeviceResources(); |
- CreateWindowSizeDependentResources(); |
-} |
- |
-// TODO(scottmg): Need to handle resize messages and recreation. |
- |
-void Direct3DHelper::CreateDeviceResources() { |
- unsigned int creation_flags = D3D11_CREATE_DEVICE_BGRA_SUPPORT; |
- D3D_FEATURE_LEVEL feature_levels[] = { |
- D3D_FEATURE_LEVEL_11_1, |
- D3D_FEATURE_LEVEL_11_0, |
- D3D_FEATURE_LEVEL_10_1, |
- D3D_FEATURE_LEVEL_10_0, |
- D3D_FEATURE_LEVEL_9_3, |
- D3D_FEATURE_LEVEL_9_2, |
- D3D_FEATURE_LEVEL_9_1, |
- }; |
- |
- mswr::ComPtr<ID3D11Device> device; |
- mswr::ComPtr<ID3D11DeviceContext> context; |
- CheckIfFailed( |
- D3D11CreateDevice( |
- nullptr, |
- D3D_DRIVER_TYPE_HARDWARE, |
- nullptr, |
- creation_flags, |
- feature_levels, |
- ARRAYSIZE(feature_levels), |
- D3D11_SDK_VERSION, |
- &device, |
- &feature_level_, |
- &context)); |
- CheckIfFailed(device.As(&d3d_device_)); |
- CheckIfFailed(context.As(&d3d_context_)); |
-} |
- |
-void Direct3DHelper::CreateWindowSizeDependentResources() { |
- float window_width = 0; |
- float window_height = 0; |
- |
- if (base::win::GetVersion() >= base::win::VERSION_WIN8) { |
- // Windows 8 returns in DIPs. |
- CheckIfFailed(window_->get_Bounds(&window_bounds_)); |
- window_width = ConvertDipsToPixels(window_width); |
- window_height = ConvertDipsToPixels(window_height); |
- } |
- |
- // TODO(scottmg): Orientation. |
- |
- if (swap_chain_ != nullptr) { |
- // TODO(scottmg): Resize if it already exists. |
- NOTIMPLEMENTED(); |
- } else { |
- DXGI_SWAP_CHAIN_DESC1 swap_chain_desc = { 0 }; |
- swap_chain_desc.Width = window_width; |
- swap_chain_desc.Height = window_height; |
- swap_chain_desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; |
- swap_chain_desc.Stereo = false; |
- swap_chain_desc.SampleDesc.Count = 1; |
- swap_chain_desc.SampleDesc.Quality = 0; |
- swap_chain_desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; |
- swap_chain_desc.BufferCount = 2; // TODO(scottmg): Probably 1 is fine. |
- swap_chain_desc.Scaling = DXGI_SCALING_NONE; |
- swap_chain_desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; |
- swap_chain_desc.Flags = 0; |
- |
- mswr::ComPtr<IDXGIDevice1> dxgi_device; |
- CheckIfFailed(d3d_device_.As(&dxgi_device)); |
- |
- mswr::ComPtr<IDXGIAdapter> dxgi_adapter; |
- CheckIfFailed(dxgi_device->GetAdapter(&dxgi_adapter)); |
- |
- mswr::ComPtr<IDXGIFactory2> dxgi_factory; |
- CheckIfFailed(dxgi_adapter->GetParent( |
- __uuidof(IDXGIFactory2), &dxgi_factory)); |
- |
- if (base::win::GetVersion() >= base::win::VERSION_WIN8) { |
- // On Win8 we need the CoreWindow interface to create the Swapchain. |
- CheckIfFailed(dxgi_factory->CreateSwapChainForCoreWindow( |
- d3d_device_.Get(), |
- reinterpret_cast<IUnknown*>(window_), |
- &swap_chain_desc, |
- nullptr, |
- &swap_chain_)); |
- } else { |
- // On Win7 we need the raw HWND to create the Swapchain. |
- mswr::ComPtr<ICoreWindowInterop> interop; |
- CheckIfFailed(window_->QueryInterface(interop.GetAddressOf())); |
- HWND window = NULL; |
- interop->get_WindowHandle(&window); |
- |
- swap_chain_desc.Scaling = DXGI_SCALING_STRETCH; |
- swap_chain_desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; |
- |
- CheckIfFailed(dxgi_factory->CreateSwapChainForHwnd( |
- d3d_device_.Get(), |
- window, |
- &swap_chain_desc, |
- nullptr, |
- nullptr, |
- &swap_chain_)); |
- // Prevent DXGI from monitoring an application message queue and thus |
- // attempt mode changes. For e.g. Alt + Enter by default causes |
- // DXGI to attempt to take the window fullscreen. |
- CheckIfFailed(dxgi_factory->MakeWindowAssociation( |
- window, DXGI_MWA_NO_WINDOW_CHANGES)); |
- } |
- } |
-} |
- |
-} // namespace metro_driver |