private void CopyR32_UInt_UAVToExistingSRV(UnorderedAccessView uav, ShaderResourceView srv)
        {
            var device = this.DeviceManager.Direct3DDevice;

            int width, height;

            using (var t = uav.ResourceAs <Texture2D>())
            {
                width  = t.Description.Width;
                height = t.Description.Height;

                if (t.Description.Format != Format.R32_UInt)
                {
                    throw new ArgumentException("The provided UAV does not use the format R32_Uint", "uav");
                }

                using (var t2 = srv.ResourceAs <Texture2D>())
                {
                    if (t2.Description.Format != Format.R8G8B8A8_Typeless)
                    {
                        throw new ArgumentException("Currently only supporting R8G8B8A8_Typeless SRVs", "srv");
                    }

                    this.DeviceManager.Direct3DDevice.ImmediateContext.CopyResource(t, t2);
                }
            }
        }
        private void CopyUAVToSRV(ShaderResourceView srv, UnorderedAccessView uav)
        {
            var device = this.DeviceManager.Direct3DDevice;

            using (var t = srv.ResourceAs <Texture2D>())
            {
                using (var t2 = uav.ResourceAs <Texture2D>())
                {
                    // Copy the texture for the resource to the typeless texture
                    device.ImmediateContext.CopyResource(t, t2);
                }
            }
        }