From 248c7a88df9d93f1649220cb7b5a301bbc735402 Mon Sep 17 00:00:00 2001 From: Justin Murray <33846034+syntheticmagus@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:47:06 -0700 Subject: [PATCH] Modified CreateShaderResourceView() calls to use descriptiors from prior SRVs to handle cases where SRV format cannot be directly deduced from texture format. This happens when using D3D11's typeless texture formats, which can be introduced into a BGFX app using overrideInternal. --- src/renderer_d3d11.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 54998be14..f3ca8f5f8 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -4464,11 +4464,14 @@ namespace bgfx { namespace d3d11 void TextureD3D11::overrideInternal(uintptr_t _ptr) { + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc{}; + m_srv->GetDesc(&srvDesc); + destroy(); m_flags |= BGFX_SAMPLER_INTERNAL_SHARED; m_ptr = (ID3D11Resource*)_ptr; - s_renderD3D11->m_device->CreateShaderResourceView(m_ptr, NULL, &m_srv); + s_renderD3D11->m_device->CreateShaderResourceView(m_ptr, &srvDesc, &m_srv); } void TextureD3D11::update(uint8_t _side, uint8_t _mip, const Rect& _rect, uint16_t _z, uint16_t _depth, uint16_t _pitch, const Memory* _mem) @@ -4879,7 +4882,9 @@ namespace bgfx { namespace d3d11 break; } - DX_CHECK(s_renderD3D11->m_device->CreateShaderResourceView(texture.m_ptr, NULL, &m_srv[m_num]) ); + D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc{}; + texture.m_srv->GetDesc(&srvDesc); + DX_CHECK(s_renderD3D11->m_device->CreateShaderResourceView(texture.m_ptr, &srvDesc, &m_srv[m_num])); m_num++; } else