From b768560e498468c343e32d11b6a54414ba8c151f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Fri, 3 Mar 2017 01:30:37 +0100 Subject: [PATCH] d3d11: Print FIXME() about ignoring initial UAV count values only when necessary. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/d3d11/device.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c index 6269c68739a..958dcfe9418 100644 --- a/dlls/d3d11/device.c +++ b/dlls/d3d11/device.c @@ -654,9 +654,6 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetRenderTargetsAndUnord if (unordered_access_view_count != D3D11_KEEP_UNORDERED_ACCESS_VIEWS) { - if (initial_counts) - FIXME("Ignoring initial counts.\n"); - wined3d_mutex_lock(); for (i = 0; i < unordered_access_view_start_slot; ++i) { @@ -667,6 +664,12 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_OMSetRenderTargetsAndUnord struct d3d11_unordered_access_view *view = unsafe_impl_from_ID3D11UnorderedAccessView(unordered_access_views[i]); + if (initial_counts && view && view->desc.ViewDimension == D3D11_UAV_DIMENSION_BUFFER + && (view->desc.u.Buffer.Flags & (D3D11_BUFFER_UAV_FLAG_APPEND | D3D11_BUFFER_UAV_FLAG_COUNTER)) + && initial_counts[i] != ~(UINT)0) + FIXME("Ignoring initial count %u for slot %u.\n", + initial_counts[i], unordered_access_view_start_slot + i); + wined3d_device_set_unordered_access_view(device->wined3d_device, unordered_access_view_start_slot + i, view ? view->wined3d_view : NULL); @@ -1226,14 +1229,16 @@ static void STDMETHODCALLTYPE d3d11_immediate_context_CSSetUnorderedAccessViews( TRACE("iface %p, start_slot %u, view_count %u, views %p, initial_counts %p.\n", iface, start_slot, view_count, views, initial_counts); - if (initial_counts) - FIXME("Ignoring initial counts.\n"); - wined3d_mutex_lock(); for (i = 0; i < view_count; ++i) { struct d3d11_unordered_access_view *view = unsafe_impl_from_ID3D11UnorderedAccessView(views[i]); + if (initial_counts && view && view->desc.ViewDimension == D3D11_UAV_DIMENSION_BUFFER + && (view->desc.u.Buffer.Flags & (D3D11_BUFFER_UAV_FLAG_APPEND | D3D11_BUFFER_UAV_FLAG_COUNTER)) + && initial_counts[i] != ~(UINT)0) + FIXME("Ignoring initial count %u for slot %u.\n", initial_counts[i], start_slot + i); + wined3d_device_set_cs_uav(device->wined3d_device, start_slot + i, view ? view->wined3d_view : NULL); }