From 9e57b03e64e3c6a9fac368d14ff977f72941c9df Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Wed, 24 Apr 2019 20:18:02 +0200 Subject: [PATCH] [d3d11] Implement barrier control extension --- src/d3d11/d3d11_context_ext.cpp | 8 ++++++++ src/d3d11/d3d11_device.cpp | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/d3d11/d3d11_context_ext.cpp b/src/d3d11/d3d11_context_ext.cpp index 41e01547..0f73424c 100644 --- a/src/d3d11/d3d11_context_ext.cpp +++ b/src/d3d11/d3d11_context_ext.cpp @@ -76,7 +76,15 @@ namespace dxvk { void STDMETHODCALLTYPE D3D11DeviceContextExt::SetBarrierControl( UINT ControlFlags) { + D3D10DeviceLock lock = m_ctx->LockContext(); + DxvkBarrierControlFlags flags; + if (ControlFlags & D3D11_VK_BARRIER_CONTROL_IGNORE_WRITE_AFTER_WRITE) + flags.set(DxvkBarrierControl::IgnoreWriteAfterWrite); + + m_ctx->EmitCs([cFlags = flags] (DxvkContext* ctx) { + ctx->setBarrierControl(cFlags); + }); } } diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp index b5270c02..29485a49 100644 --- a/src/d3d11/d3d11_device.cpp +++ b/src/d3d11/d3d11_device.cpp @@ -1772,7 +1772,13 @@ namespace dxvk { BOOL STDMETHODCALLTYPE D3D11DeviceExt::GetExtensionSupport( D3D11_VK_EXTENSION Extension) { - return FALSE; + switch (Extension) { + case D3D11_VK_EXT_BARRIER_CONTROL: + return true; + + default: + return false; + } }