d3d11-Deferred_Context: Allow NULL pointer for initial count in OMSetRenderTargetsAndUnorderedAccessViews.

Thanks Michael Müller.
This commit is contained in:
Sebastian Lackner 2017-10-02 13:54:56 +02:00
parent c3167b37c2
commit b67879cfb2

View File

@ -1,4 +1,4 @@
From 1aa986214da6fd1cd63daa9868ff21609881f560 Mon Sep 17 00:00:00 2001
From bce549e905b052637153e5846491626083d3fac2 Mon Sep 17 00:00:00 2001
From: Johannes Specht <jojos_band@gmx.net>
Date: Mon, 4 Sep 2017 03:07:13 +0200
Subject: d3d11: Implement OMSetRenderTargetsAndUnorderedAccessViews for
@ -9,7 +9,7 @@ Subject: d3d11: Implement OMSetRenderTargetsAndUnorderedAccessViews for
1 file changed, 75 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index 4a159a2ff7b..34f646231a5 100644
index 2aec0dde260..b513bda5ad3 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -40,6 +40,7 @@ enum deferred_cmd
@ -79,7 +79,7 @@ index 4a159a2ff7b..34f646231a5 100644
case DEFERRED_COPYRESOURCE:
{
ID3D11DeviceContext_CopyResource(iface,
@@ -4443,12 +4482,46 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargetsAndUnorde
@@ -4397,12 +4436,46 @@ static void STDMETHODCALLTYPE d3d11_deferred_context_OMSetRenderTargetsAndUnorde
UINT unordered_access_view_start_slot, UINT unordered_access_view_count,
ID3D11UnorderedAccessView *const *unordered_access_views, const UINT *initial_counts)
{
@ -111,8 +111,8 @@ index 4a159a2ff7b..34f646231a5 100644
+ call->render_targets_and_unordered_access_views_info.render_target_views = (void *)(call + 1);
+ call->render_targets_and_unordered_access_views_info.unordered_access_views =
+ (void *)&call->render_targets_and_unordered_access_views_info.render_target_views[render_target_view_count];
+ call->render_targets_and_unordered_access_views_info.initial_counts =
+ (void *)&call->render_targets_and_unordered_access_views_info.unordered_access_views[unordered_access_view_count];
+ call->render_targets_and_unordered_access_views_info.initial_counts = initial_counts ?
+ (void *)&call->render_targets_and_unordered_access_views_info.unordered_access_views[unordered_access_view_count] : NULL;
+
+ for (i = 0; i < render_target_view_count; i++)
+ {
@ -123,7 +123,7 @@ index 4a159a2ff7b..34f646231a5 100644
+ {
+ if (unordered_access_views[i]) ID3D11UnorderedAccessView_AddRef(unordered_access_views[i]);
+ call->render_targets_and_unordered_access_views_info.unordered_access_views[i] = unordered_access_views[i];
+ call->render_targets_and_unordered_access_views_info.initial_counts[i] = initial_counts[i];
+ if (initial_counts) call->render_targets_and_unordered_access_views_info.initial_counts[i] = initial_counts[i];
+ }
}