diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp
index eb37aa100..f459959d6 100644
--- a/src/d3d11/d3d11_context.cpp
+++ b/src/d3d11/d3d11_context.cpp
@@ -232,7 +232,7 @@ namespace dxvk {
       D3D11TextureInfo textureInfo;
       
       if (FAILED(GetCommonTextureInfo(pResource, &textureInfo))) {
-        Logger::err("D3D11DeviceContext: Cannot map a device-local image");
+        Logger::err("D3D11DeviceContext: Failed to retrieve texture info");
         return E_FAIL;
       }
       
diff --git a/src/d3d11/d3d11_context_state.h b/src/d3d11/d3d11_context_state.h
index 520c008f2..1ed1241e9 100644
--- a/src/d3d11/d3d11_context_state.h
+++ b/src/d3d11/d3d11_context_state.h
@@ -22,6 +22,10 @@ namespace dxvk {
   using D3D11ShaderResourceBindings = std::array<
     Com<D3D11ShaderResourceView>, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT>;
     
+    
+  using D3D11UnorderedAccessBindings = std::array<
+    Com<D3D11UnorderedAccessView>, D3D11_1_UAV_SLOT_COUNT>;
+    
   
   struct D3D11ContextStateVS {
     Com<D3D11VertexShader>        shader;
@@ -68,6 +72,7 @@ namespace dxvk {
     D3D11ConstantBufferBindings   constantBuffers;
     D3D11SamplerBindings          samplers;
     D3D11ShaderResourceBindings   shaderResources;
+    D3D11UnorderedAccessBindings  unorderedAccessViews;
   };
   
   
diff --git a/src/d3d11/d3d11_device.cpp b/src/d3d11/d3d11_device.cpp
index 2dcb21108..4723969fb 100644
--- a/src/d3d11/d3d11_device.cpp
+++ b/src/d3d11/d3d11_device.cpp
@@ -11,21 +11,6 @@
 #include "d3d11_texture.h"
 #include "d3d11_view.h"
 
-// These were copied from d3d11.h
-// For some ridiculous reason, we cannot use the structures
-// directly, although others from the same header work.
-typedef struct D3D11_FEATURE_DATA_THREADING {
-    BOOL DriverConcurrentCreates;
-    BOOL DriverCommandLists;
-} D3D11_FEATURE_DATA_THREADING;
-typedef struct D3D11_FEATURE_DATA_DOUBLES {
-    BOOL DoublePrecisionFloatShaderOps;
-} D3D11_FEATURE_DATA_DOUBLES;
-typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
-    DXGI_FORMAT InFormat;
-    UINT OutFormatSupport;
-} D3D11_FEATURE_DATA_FORMAT_SUPPORT;
-
 namespace dxvk {
   
   D3D11Device::D3D11Device(
@@ -268,7 +253,7 @@ namespace dxvk {
       
       try {
         *ppSRView = ref(new D3D11ShaderResourceView(
-          this, pResource, desc, nullptr,
+          this, pResource, desc,
           m_dxvkDevice->createImageView(
             textureInfo.image, viewInfo)));
         return S_OK;
@@ -372,7 +357,7 @@ namespace dxvk {
     
     try {
       *ppRTView = ref(new D3D11RenderTargetView(
-        this, pResource, desc, nullptr,
+        this, pResource, desc,
         m_dxvkDevice->createImageView(
           textureInfo.image, viewInfo)));
       return S_OK;
@@ -466,7 +451,7 @@ namespace dxvk {
     
     try {
       *ppDepthStencilView = ref(new D3D11DepthStencilView(
-        this, pResource, desc, nullptr,
+        this, pResource, desc,
         m_dxvkDevice->createImageView(
           textureInfo.image, viewInfo)));
       return S_OK;
diff --git a/src/d3d11/d3d11_include.h b/src/d3d11/d3d11_include.h
index c84a35018..add052af2 100644
--- a/src/d3d11/d3d11_include.h
+++ b/src/d3d11/d3d11_include.h
@@ -3,3 +3,24 @@
 #include "../dxgi/dxgi_include.h"
 
 #include <d3d11_1.h>
+
+// This is not defined in the mingw headers
+#ifndef D3D11_1_UAV_SLOT_COUNT
+#define D3D11_1_UAV_SLOT_COUNT 64
+#endif
+
+// These were copied from d3d11.h
+// For some strange reason, we cannot use the structures
+// directly, although others from the same header work.
+typedef struct D3D11_FEATURE_DATA_THREADING {
+    BOOL DriverConcurrentCreates;
+    BOOL DriverCommandLists;
+} D3D11_FEATURE_DATA_THREADING;
+typedef struct D3D11_FEATURE_DATA_DOUBLES {
+    BOOL DoublePrecisionFloatShaderOps;
+} D3D11_FEATURE_DATA_DOUBLES;
+typedef struct D3D11_FEATURE_DATA_FORMAT_SUPPORT {
+    DXGI_FORMAT InFormat;
+    UINT OutFormatSupport;
+} D3D11_FEATURE_DATA_FORMAT_SUPPORT;
+
diff --git a/src/d3d11/d3d11_view.h b/src/d3d11/d3d11_view.h
index 4364a0adc..da0ff062f 100644
--- a/src/d3d11/d3d11_view.h
+++ b/src/d3d11/d3d11_view.h
@@ -26,10 +26,17 @@ namespace dxvk {
             D3D11Device*                      device,
             ID3D11Resource*                   resource,
       const DescType&                         desc,
-      const Rc<DxvkBufferView>&               bufferView,
+      const Rc<DxvkBufferView>&               bufferView)
+    : m_device(device), m_resource(resource),
+      m_desc(desc), m_bufferView(bufferView) { }
+    
+    D3D11ResourceView(
+            D3D11Device*                      device,
+            ID3D11Resource*                   resource,
+      const DescType&                         desc,
       const Rc<DxvkImageView>&                imageView)
-    : m_device(device), m_resource(resource), m_desc(desc),
-      m_bufferView(bufferView), m_imageView(imageView) { }
+    : m_device(device), m_resource(resource),
+      m_desc(desc), m_imageView(imageView) { }
     
     HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) final {
       COM_QUERY_IFACE(riid, ppvObject, IUnknown);