libobs-d3d11: Disable NV12 textures if NVENC unavailable

On NVIDIA devices, disable NV12 textures if NVENC unavailable just as a
safety precaution.
master
jp9000 2019-02-26 12:09:00 -08:00
parent 340b8ec38e
commit cea0a1e73a
1 changed files with 14 additions and 1 deletions

View File

@ -281,9 +281,11 @@ void gs_device::InitDevice(uint32_t adapterIdx)
/* check for nv12 texture output support */
nv12Supported = false;
bool geforce = astrstri(adapterNameUTF8, "geforce") != nullptr;
bool nvidia = astrstri(adapterNameUTF8, "nvidia") != nullptr;
/* don't use on blacklisted adapters */
if (astrstri(adapterNameUTF8, "geforce") != nullptr) {
if (geforce) {
for (const char *old_gpu : blacklisted_nv12_geforce_gpus) {
if (astrstri(adapterNameUTF8, old_gpu) != nullptr) {
return;
@ -291,6 +293,17 @@ void gs_device::InitDevice(uint32_t adapterIdx)
}
}
/* Disable NV12 textures if NVENC not available, just as a safety
* measure */
if (nvidia) {
HMODULE nvenc = LoadLibraryW((sizeof(void*) == 8)
? L"nvEncodeAPI64.dll"
: L"nvEncodeAPI.dll");
if (!nvenc) {
return;
}
}
ComQIPtr<ID3D11Device1> d3d11_1(device);
if (!d3d11_1) {
return;