WinRT: made the Direct3D 11.x 'Debug Layer' be enable-able in any app via a hint To enable the Debug Layer, set the hint, SDL_HINT_RENDER_DIRECT3D11_DEBUG to '1'. The Debug Layer will be turned off by default, both in Release and Debug builds (of SDL).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
diff --git a/include/SDL_hints.h b/include/SDL_hints.h
index 74b63ee..6e2a785 100644
--- a/include/SDL_hints.h
+++ b/include/SDL_hints.h
@@ -118,6 +118,20 @@ extern "C" {
#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
/**
+ * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
+ *
+ * This variable does not have any effect on the Direct3D 9 based renderer,
+ * which is used in Win32-based (aka Windows Desktop) apps.
+ *
+ * This variable can be set to the following values:
+ * "0" - Disable Debug Layer use
+ * "1" - Enable Debug Lyaer use
+ *
+ * By default, SDL does not use Direct3D Debug Layer.
+ */
+#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_HINT_RENDER_DIRECT3D11_DEBUG"
+
+/**
* \brief A variable controlling whether the X11 VidMode extension should be used.
*
* This variable can be set to the following values:
diff --git a/src/render/direct3d11/SDL_render_d3d11.cpp b/src/render/direct3d11/SDL_render_d3d11.cpp
index 292ecfb..eaae09e 100644
--- a/src/render/direct3d11/SDL_render_d3d11.cpp
+++ b/src/render/direct3d11/SDL_render_d3d11.cpp
@@ -35,7 +35,7 @@
extern "C" {
#include "../../core/windows/SDL_windows.h"
-//#include "SDL_hints.h"
+#include "SDL_hints.h"
//#include "SDL_loadso.h"
#include "SDL_system.h"
#include "SDL_syswm.h"
@@ -326,10 +326,13 @@ D3D11_CreateDeviceResources(SDL_Renderer * renderer)
// than the API default. It is required for compatibility with Direct2D.
UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT;
-#if defined(_DEBUG)
- // If the project is in a debug build, enable debugging via SDK Layers with this flag.
- creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
-#endif
+ // Make sure Direct3D's debugging feature gets used, if the app requests it.
+ const char *hint = SDL_GetHint(SDL_HINT_RENDER_DIRECT3D11_DEBUG);
+ if (hint) {
+ if (*hint == '1') {
+ creationFlags |= D3D11_CREATE_DEVICE_DEBUG;
+ }
+ }
// This array defines the set of DirectX hardware feature levels this app will support.
// Note the ordering should be preserved.