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:
parent
b45d3aa30e
commit
98db5d1a11
@ -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",
|
||||
|
||||
@ -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
|
||||
@ -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_
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user