From ba0ba9ef16499f197639d22b1ae96b1c41b16704 Mon Sep 17 00:00:00 2001
From: Ethan Lee <[EMAIL REDACTED]>
Date: Fri, 8 Apr 2022 01:20:36 -0400
Subject: [PATCH] direct3d11: Set the swapchain target immediately after
creating it.
Fixes #4782
---
src/render/direct3d11/SDL_render_d3d11.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c
index 89e2ee544ea..714ca2e77aa 100644
--- a/src/render/direct3d11/SDL_render_d3d11.c
+++ b/src/render/direct3d11/SDL_render_d3d11.c
@@ -998,6 +998,16 @@ D3D11_CreateWindowSizeDependentResources(SDL_Renderer * renderer)
goto done;
}
+ /* Set the swap chain target immediately, so that a target is always set
+ * even before we get to SetDrawState. Without this it's possible to hit
+ * null references in places like ReadPixels!
+ */
+ ID3D11DeviceContext_OMSetRenderTargets(data->d3dContext,
+ 1,
+ &data->mainRenderTargetView,
+ NULL
+ );
+
data->viewportDirty = SDL_TRUE;
done: