MCPcopy Create free account
hub / github.com/Vhonowslend/StreamFX-Public / create

Method create

components/ffmpeg/source/ffmpeg/hwapi/d3d11.cpp:85–112  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83}
84
85std::shared_ptr<instance> d3d11::create(const device& target)
86{
87 std::shared_ptr<d3d11_instance> inst;
88 ATL::CComPtr<ID3D11Device> device;
89 IDXGIAdapter1* adapter = nullptr;
90
91 // Find the correct "Adapter" (device).
92 IDXGIAdapter1* dxgi_adapter = nullptr;
93 for (UINT idx = 0; !FAILED(_dxgifactory->EnumAdapters1(idx, &dxgi_adapter)); idx++) {
94 DXGI_ADAPTER_DESC1 desc = DXGI_ADAPTER_DESC1();
95 dxgi_adapter->GetDesc1(&desc);
96
97 if ((desc.AdapterLuid.LowPart == target.id.second) && (desc.AdapterLuid.HighPart == target.id.first)) {
98 adapter = dxgi_adapter;
99 break;
100 }
101 }
102
103 // Create a D3D11 Device
104 UINT device_flags = D3D11_CREATE_DEVICE_VIDEO_SUPPORT;
105 std::vector<D3D_FEATURE_LEVEL> feature_levels = {D3D_FEATURE_LEVEL_12_1, D3D_FEATURE_LEVEL_12_0, D3D_FEATURE_LEVEL_11_1};
106
107 if (FAILED(_D3D11CreateDevice(adapter, D3D_DRIVER_TYPE_HARDWARE, NULL, device_flags, feature_levels.data(), static_cast<UINT>(feature_levels.size()), D3D11_SDK_VERSION, &device, NULL, NULL))) {
108 throw std::runtime_error("Failed to create D3D11 device for target.");
109 }
110
111 return std::make_shared<d3d11_instance>(device);
112}
113
114std::shared_ptr<instance> d3d11::create_from_obs()
115{

Callers

nothing calls this directly

Calls 2

dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected