summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorSam Lantinga <slouken@libsdl.org>2021-01-01 11:12:30 -0800
committerSam Lantinga <slouken@libsdl.org>2021-01-01 11:12:30 -0800
commite3e825c1353137a038eddca0c5697ae0297c64fd (patch)
treeb6d37c9bf4ab0f8fbec80c2d90234c6306662c5f /src/render
parentbec624ca0ea13f33e29bcb0ae464d5bb281e7132 (diff)
downloadsdl-e3e825c1353137a038eddca0c5697ae0297c64fd.tar.gz
Added SDL_RenderGetD3D11Device() to get access to the device associated with the D3D11 renderer
Diffstat (limited to 'src/render')
-rw-r--r--src/render/direct3d11/SDL_render_d3d11.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c
index 3ceb1a83f..060c74c41 100644
--- a/src/render/direct3d11/SDL_render_d3d11.c
+++ b/src/render/direct3d11/SDL_render_d3d11.c
@@ -20,6 +20,9 @@
*/
#include "../../SDL_internal.h"
+#include "SDL_render.h"
+#include "SDL_system.h"
+
#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
#define COBJMACROS
@@ -2595,4 +2598,30 @@ SDL_RenderDriver D3D11_RenderDriver = {
#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
+#ifdef __WIN32__
+/* This function needs to always exist on Windows, for the Dynamic API. */
+ID3D11Device *
+SDL_RenderGetD3D11Device(SDL_Renderer * renderer)
+{
+ ID3D11Device *device = NULL;
+
+#if SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED
+ D3D11_RenderData *data = (D3D11_RenderData *) renderer->driverdata;
+
+ /* Make sure that this is a D3D renderer */
+ if (renderer->DestroyRenderer != D3D11_DestroyRenderer) {
+ SDL_SetError("Renderer is not a D3D11 renderer");
+ return NULL;
+ }
+
+ device = (ID3D11Device *)data->d3dDevice;
+ if (device) {
+ ID3D11Device_AddRef(device);
+ }
+#endif /* SDL_VIDEO_RENDER_D3D11 && !SDL_RENDER_DISABLED */
+
+ return device;
+}
+#endif /* __WIN32__ */
+
/* vi: set ts=4 sw=4 expandtab: */