From 89a4d9ae67e82913af71a93611f396530a05f61d Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 24 May 2024 21:47:57 +0200
Subject: [PATCH] cmake+d3d12: d3d12 now builds succesfully on older Windows
SDKs, so simplify the checks
---
CMakeLists.txt | 9 +--------
src/render/direct3d12/SDL_render_d3d12.c | 8 +++++---
2 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4284bf4e1d4d4..7db1aab8f5544 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1869,14 +1869,7 @@ elseif(WINDOWS)
check_include_file(d3d9.h HAVE_D3D_H)
check_include_file(d3d11_1.h HAVE_D3D11_H)
- check_c_source_compiles("
- #include <winsdkver.h>
- #include <sdkddkver.h>
- #include <d3d12.h>
- ID3D12Device1 *device;
- #if WDK_NTDDI_VERSION > 0x0A000008
- int main(int argc, char **argv) { return 0; }
- #endif" HAVE_D3D12_H)
+ check_include_file(d3d12.h HAVE_D3D12_H)
check_include_file(ddraw.h HAVE_DDRAW_H)
check_include_file(dsound.h HAVE_DSOUND_H)
check_include_file(dinput.h HAVE_DINPUT_H)
diff --git a/src/render/direct3d12/SDL_render_d3d12.c b/src/render/direct3d12/SDL_render_d3d12.c
index ffb7996e00c50..9f08a0de1b626 100644
--- a/src/render/direct3d12/SDL_render_d3d12.c
+++ b/src/render/direct3d12/SDL_render_d3d12.c
@@ -42,6 +42,7 @@
#include <dxgi1_6.h>
#include <dxgidebug.h>
#include <d3d12sdklayers.h>
+#include <sdkddkver.h>
#endif
#include "SDL_shaders_d3d12.h"
@@ -75,15 +76,16 @@
#endif
/*
- * Older Windows SDK headers declare some d3d12 functions with the wrong function prototype.
+ * Older MS Windows SDK headers declare some d3d12 functions with the wrong function prototype.
* - ID3D12Heap::GetDesc
* - ID3D12Resource::GetDesc
* - ID3D12DescriptorHeap::GetDesc
* (and 9 more)
- * */
+ * This is fixed in SDKs since WDK_NTDDI_VERSION >= NTDDI_WIN10_FE (0x0A00000A)
+ */
#if !(defined(__MINGW32__) || defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES)) \
- && (!defined(D3D12_SDK_VERSION) || D3D12_SDK_VERSION < 3)
+ && (WDK_NTDDI_VERSION < 0x0A00000A)
#define D3D_CALL_RET_ID3D12DescriptorHeap_GetCPUDescriptorHandleForHeapStart(THIS, ...) do { \
void (STDMETHODCALLTYPE * func)(ID3D12DescriptorHeap * This, D3D12_CPU_DESCRIPTOR_HANDLE * Handle) = \