diff --git a/Source/SharpDX.Direct3D11/DeviceContext.ComputeShaderStage.cs b/Source/SharpDX.Direct3D11/DeviceContext.ComputeShaderStage.cs index 660c6d955..c29cf363e 100644 --- a/Source/SharpDX.Direct3D11/DeviceContext.ComputeShaderStage.cs +++ b/Source/SharpDX.Direct3D11/DeviceContext.ComputeShaderStage.cs @@ -105,5 +105,16 @@ public unsafe void SetUnorderedAccessViews(int startSlot, SharpDX.Direct3D11.Uno fixed (void* puav = uavInitialCounts) SetUnorderedAccessViews(startSlot, unorderedAccessViews != null ? unorderedAccessViews.Length : 0, (IntPtr)unorderedAccessViewsOut_, (IntPtr)puav); } + + /// + /// Sets an array of views for an unordered resource. + /// + /// Index of the first element in the zero-based array to begin setting. + /// A reference to an array of references to be set by the method. + public unsafe void SetUnorderedAccessViews(int startSlot, ComArray unorderedAccessViews, int[] uavInitialCounts) + { + fixed (void* puav = uavInitialCounts) + SetUnorderedAccessViews(startSlot, unorderedAccessViews == null ? 0 : unorderedAccessViews.Length, unorderedAccessViews.NativePointer, (IntPtr)puav); + } } } \ No newline at end of file diff --git a/Source/SharpDX.Direct3D11/DeviceContext.OutputMergerStage.cs b/Source/SharpDX.Direct3D11/DeviceContext.OutputMergerStage.cs index 847b53c55..15691199e 100644 --- a/Source/SharpDX.Direct3D11/DeviceContext.OutputMergerStage.cs +++ b/Source/SharpDX.Direct3D11/DeviceContext.OutputMergerStage.cs @@ -122,7 +122,8 @@ public UnorderedAccessView[] GetUnorderedAccessViews(int startSlot, int count) var temp = new UnorderedAccessView[count]; DepthStencilView depthStencilView; GetRenderTargetsAndUnorderedAccessViews(0, new RenderTargetView[0], out depthStencilView, startSlot, count, temp); - depthStencilView.Dispose(); + if (depthStencilView != null) + depthStencilView.Dispose(); return temp; }