Fix D3D11 fence sharing without monitored fence support
This commit is contained in:
parent
f6e08f8a43
commit
a739c1cef8
2 changed files with 11 additions and 8 deletions
|
|
@ -136,8 +136,14 @@ D3D11VARenderer::~D3D11VARenderer()
|
|||
bool D3D11VARenderer::createSharedFencePair(UINT64 initialValue, ID3D11Device5* dev1, ID3D11Device5* dev2, ComPtr<ID3D11Fence>& dev1Fence, ComPtr<ID3D11Fence>& dev2Fence)
|
||||
{
|
||||
HRESULT hr;
|
||||
D3D11_FENCE_FLAG flags;
|
||||
|
||||
hr = dev1->CreateFence(initialValue, D3D11_FENCE_FLAG_SHARED, IID_PPV_ARGS(&dev1Fence));
|
||||
flags = D3D11_FENCE_FLAG_SHARED;
|
||||
if (m_FenceType == SupportedFenceType::NonMonitored) {
|
||||
flags |= D3D11_FENCE_FLAG_NON_MONITORED;
|
||||
}
|
||||
|
||||
hr = dev1->CreateFence(initialValue, flags, IID_PPV_ARGS(&dev1Fence));
|
||||
if (FAILED(hr)) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"ID3D11Device5::CreateFence() failed: %x",
|
||||
|
|
@ -238,9 +244,7 @@ Exit:
|
|||
m_RenderD2RFence.Reset();
|
||||
m_DecodeR2DFence.Reset();
|
||||
m_RenderR2DFence.Reset();
|
||||
|
||||
m_DecodeDevice.Reset();
|
||||
m_RenderDevice.Reset();
|
||||
}
|
||||
|
||||
return success;
|
||||
|
|
|
|||
|
|
@ -53,11 +53,10 @@ private:
|
|||
bool checkDecoderSupport(IDXGIAdapter* adapter);
|
||||
bool createDeviceByAdapterIndex(int adapterIndex, bool* adapterNotFound = nullptr);
|
||||
bool setupSharedDevice(IDXGIAdapter1* adapter);
|
||||
|
||||
static bool createSharedFencePair(UINT64 initialValue,
|
||||
ID3D11Device5* dev1, ID3D11Device5* dev2,
|
||||
Microsoft::WRL::ComPtr<ID3D11Fence>& dev1Fence,
|
||||
Microsoft::WRL::ComPtr<ID3D11Fence>& dev2Fence);
|
||||
bool createSharedFencePair(UINT64 initialValue,
|
||||
ID3D11Device5* dev1, ID3D11Device5* dev2,
|
||||
Microsoft::WRL::ComPtr<ID3D11Fence>& dev1Fence,
|
||||
Microsoft::WRL::ComPtr<ID3D11Fence>& dev2Fence);
|
||||
|
||||
int m_DecoderSelectionPass;
|
||||
int m_DevicesWithFL11Support;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue