Revert "Add ability to load CreateDirect3DDeviceFromDXGIDevice from d3d11.dll"

This reverts commit 23f60ebe015cdefd017639d3eb826bf058cae141.

Reason for revert: breaks downstream: create_direct3d_device.h(14,10): fatal error: 'windows.graphics.capture.interop.h' file not found

Original change's description:
> Add ability to load CreateDirect3DDeviceFromDXGIDevice from d3d11.dll
>
> Creating a Direct3D11Device from a DXGIDevice is necessary for the new
> WGC based window capturer. However, the
> CreateDirect3DDeviceFromDXGIDevice API is not available on all
> versions of Windows, which means we have to load this function from
> d3d11.dll at runtime.
>
> You can see how this function will be used in this CL:
> 196624: Finish implementing WGC Window Capturer and add unit tests. |
> https://webrtc-review.googlesource.com/c/src/+/196624
>
> I also ensure we don't leak HSTRINGs in GetActivationFactory and fix
> up some includes in ScopedComInitializer.
>
> Bug: webrtc:9273
> Change-Id: Ida240b2c0f637d70ec405de7d8f59f0c12aee1f1
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/196622
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Austin Orion <auorion@microsoft.com>
> Cr-Commit-Position: refs/heads/master@{#32984}

TBR=mbonadei@webrtc.org,tommi@webrtc.org,sergeyu@chromium.org,auorion@microsoft.com

Change-Id: If48172db15ff09a10bd32e762ee2c952dc9d9337
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9273
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202023
Reviewed-by: Alex Loiko <aleloi@google.com>
Commit-Queue: Alex Loiko <aleloi@google.com>
Cr-Commit-Position: refs/heads/master@{#32992}
This commit is contained in:
Alex Loiko 2021-01-15 09:41:56 +00:00 committed by Commit Bot
parent b45d3aa30e
commit 98db5d1a11
6 changed files with 3 additions and 99 deletions

View File

@ -126,8 +126,6 @@ rtc_library("rtc_base_approved") {
if (is_win) {
sources += [
"win/create_direct3d_device.cc",
"win/create_direct3d_device.h",
"win/get_activation_factory.cc",
"win/get_activation_factory.h",
"win/hstring.cc",

View File

@ -1,57 +0,0 @@
/*
* Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "rtc_base/win/create_direct3d_device.h"
#include <libloaderapi.h>
#include <utility>
namespace {
FARPROC LoadD3D11Function(const char* function_name) {
static HMODULE const handle =
::LoadLibraryExW(L"d3d11.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
return handle ? ::GetProcAddress(handle, function_name) : nullptr;
}
decltype(&::CreateDirect3D11DeviceFromDXGIDevice)
GetCreateDirect3D11DeviceFromDXGIDevice() {
static decltype(&::CreateDirect3D11DeviceFromDXGIDevice) const function =
reinterpret_cast<decltype(&::CreateDirect3D11DeviceFromDXGIDevice)>(
LoadD3D11Function("CreateDirect3D11DeviceFromDXGIDevice"));
return function;
}
} // namespace
namespace webrtc {
bool ResolveCoreWinRTDirect3DDelayload() {
return GetCreateDirect3D11DeviceFromDXGIDevice();
}
HRESULT CreateDirect3DDeviceFromDXGIDevice(
IDXGIDevice* dxgi_device,
ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice**
out_d3d11_device) {
decltype(&::CreateDirect3D11DeviceFromDXGIDevice) create_d3d11_device_func =
GetCreateDirect3D11DeviceFromDXGIDevice();
if (!create_d3d11_device_func)
return E_FAIL;
Microsoft::WRL::ComPtr<IInspectable> inspectableSurface;
HRESULT hr = create_d3d11_device_func(dxgi_device, &inspectableSurface);
if (FAILED(hr))
return hr;
return inspectableSurface->QueryInterface(IID_PPV_ARGS(out_d3d11_device));
}
} // namespace webrtc

View File

@ -1,34 +0,0 @@
/*
* Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_
#define RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_
#include <windows.graphics.capture.interop.h>
#include <windows.graphics.directX.direct3d11.interop.h>
#include <winerror.h>
#include <wrl/client.h>
namespace webrtc {
// Callers must check the return value of ResolveCoreWinRTDirect3DDelayload()
// before using CreateDirect3DDeviceFromDXGIDevice().
bool ResolveCoreWinRTDirect3DDelayload();
// Allows for the creating of Direct3D Devices from a DXGI device on versions
// of Windows greater than Win7.
HRESULT CreateDirect3DDeviceFromDXGIDevice(
IDXGIDevice* dxgi_device,
ABI::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice**
out_d3d11_device);
} // namespace webrtc
#endif // RTC_BASE_WIN_CREATE_DIRECT3D_DEVICE_H_

View File

@ -40,10 +40,8 @@ HRESULT GetActivationFactory(InterfaceType** factory) {
return hr;
hr = RoGetActivationFactoryProxy(class_id_hstring, IID_PPV_ARGS(factory));
if (FAILED(hr)) {
DeleteHstring(class_id_hstring);
if (FAILED(hr))
return hr;
}
return DeleteHstring(class_id_hstring);
}

View File

@ -10,9 +10,6 @@
#include "rtc_base/win/scoped_com_initializer.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
namespace webrtc {
ScopedCOMInitializer::ScopedCOMInitializer() {

View File

@ -13,6 +13,8 @@
#include <comdef.h>
#include "rtc_base/logging.h"
namespace webrtc {
// Initializes COM in the constructor (STA or MTA), and uninitializes COM in the