diff --git a/drivers/d3d12/SCsub b/drivers/d3d12/SCsub index 4a1dfc25dc5..f87887cc258 100644 --- a/drivers/d3d12/SCsub +++ b/drivers/d3d12/SCsub @@ -162,7 +162,9 @@ else: env.Append(CCFLAGS=["-Wno-unknown-pragmas"]) # This is needed since rendering_device_d3d12.cpp needs to include some Mesa internals. -env_d3d12_rdd.Prepend(CPPEXTPATH=mesa_private_inc_paths) +# FIXME: Should be CPPEXTPATH, but doing so introduces an include-order bug when combined with +# godot-nir-static; this necessitates warning macro wrappers. See #106376. +env_d3d12_rdd.Prepend(CPPPATH=mesa_private_inc_paths) # For the same reason as above, the defines must be the same as in the 3rd-party code itself. env_d3d12_rdd.Append(CPPDEFINES=extra_defines) diff --git a/drivers/d3d12/rendering_context_driver_d3d12.cpp b/drivers/d3d12/rendering_context_driver_d3d12.cpp index fbb66c3183d..59710b565fc 100644 --- a/drivers/d3d12/rendering_context_driver_d3d12.cpp +++ b/drivers/d3d12/rendering_context_driver_d3d12.cpp @@ -39,8 +39,23 @@ #include "core/version.h" #include "servers/rendering/rendering_device.h" +GODOT_GCC_WARNING_PUSH +GODOT_GCC_WARNING_IGNORE("-Wmissing-field-initializers") +GODOT_GCC_WARNING_IGNORE("-Wnon-virtual-dtor") +GODOT_GCC_WARNING_IGNORE("-Wshadow") +GODOT_GCC_WARNING_IGNORE("-Wswitch") +GODOT_CLANG_WARNING_PUSH +GODOT_CLANG_WARNING_IGNORE("-Wmissing-field-initializers") +GODOT_CLANG_WARNING_IGNORE("-Wnon-virtual-dtor") +GODOT_CLANG_WARNING_IGNORE("-Wstring-plus-int") +GODOT_CLANG_WARNING_IGNORE("-Wswitch") +GODOT_MSVC_WARNING_PUSH + #include +GODOT_GCC_WARNING_POP +GODOT_CLANG_WARNING_POP + #if !defined(_MSC_VER) #include diff --git a/drivers/d3d12/rendering_device_driver_d3d12.cpp b/drivers/d3d12/rendering_device_driver_d3d12.cpp index f2a1ff64f3f..8b04ad4af73 100644 --- a/drivers/d3d12/rendering_device_driver_d3d12.cpp +++ b/drivers/d3d12/rendering_device_driver_d3d12.cpp @@ -40,6 +40,24 @@ #include "d3d12_godot_nir_bridge.h" #include "rendering_context_driver_d3d12.h" +GODOT_GCC_WARNING_PUSH +GODOT_GCC_WARNING_IGNORE("-Wimplicit-fallthrough") +GODOT_GCC_WARNING_IGNORE("-Wlogical-not-parentheses") +GODOT_GCC_WARNING_IGNORE("-Wmissing-field-initializers") +GODOT_GCC_WARNING_IGNORE("-Wnon-virtual-dtor") +GODOT_GCC_WARNING_IGNORE("-Wshadow") +GODOT_GCC_WARNING_IGNORE("-Wswitch") +GODOT_CLANG_WARNING_PUSH +GODOT_CLANG_WARNING_IGNORE("-Wimplicit-fallthrough") +GODOT_CLANG_WARNING_IGNORE("-Wlogical-not-parentheses") +GODOT_CLANG_WARNING_IGNORE("-Wmissing-field-initializers") +GODOT_CLANG_WARNING_IGNORE("-Wnon-virtual-dtor") +GODOT_CLANG_WARNING_IGNORE("-Wstring-plus-int") +GODOT_CLANG_WARNING_IGNORE("-Wswitch") +GODOT_MSVC_WARNING_PUSH +GODOT_MSVC_WARNING_IGNORE(4200) // "nonstandard extension used: zero-sized array in struct/union". +GODOT_MSVC_WARNING_IGNORE(4806) // "'&': unsafe operation: no value of type 'bool' promoted to type 'uint32_t' can equal the given constant". + #include #include #include @@ -47,6 +65,10 @@ extern "C" { #include } +GODOT_GCC_WARNING_POP +GODOT_CLANG_WARNING_POP +GODOT_MSVC_WARNING_POP + #if !defined(_MSC_VER) #include diff --git a/drivers/d3d12/rendering_shader_container_d3d12.cpp b/drivers/d3d12/rendering_shader_container_d3d12.cpp index 34cb0ff2724..7e4b0e1a874 100644 --- a/drivers/d3d12/rendering_shader_container_d3d12.cpp +++ b/drivers/d3d12/rendering_shader_container_d3d12.cpp @@ -41,26 +41,10 @@ #define __REQUIRED_RPCNDR_H_VERSION__ 475 #endif -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wnon-virtual-dtor" -#pragma GCC diagnostic ignored "-Wshadow" -#pragma GCC diagnostic ignored "-Wswitch" -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic ignored "-Wimplicit-fallthrough" -#elif defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wnon-virtual-dtor" -#pragma clang diagnostic ignored "-Wstring-plus-int" -#pragma clang diagnostic ignored "-Wswitch" -#pragma clang diagnostic ignored "-Wmissing-field-initializers" -#pragma clang diagnostic ignored "-Wimplicit-fallthrough" -#endif - -#include "d3dx12.h" +#include #include #define D3D12MA_D3D12_HEADERS_ALREADY_INCLUDED -#include "D3D12MemAlloc.h" +#include #include @@ -69,29 +53,34 @@ #undef MemoryBarrier #endif -// No point in fighting warnings in Mesa. -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4200) // "nonstandard extension used: zero-sized array in struct/union". -#pragma warning(disable : 4806) // "'&': unsafe operation: no value of type 'bool' promoted to type 'uint32_t' can equal the given constant". -#endif +GODOT_GCC_WARNING_PUSH +GODOT_GCC_WARNING_IGNORE("-Wimplicit-fallthrough") +GODOT_GCC_WARNING_IGNORE("-Wlogical-not-parentheses") +GODOT_GCC_WARNING_IGNORE("-Wmissing-field-initializers") +GODOT_GCC_WARNING_IGNORE("-Wnon-virtual-dtor") +GODOT_GCC_WARNING_IGNORE("-Wshadow") +GODOT_GCC_WARNING_IGNORE("-Wswitch") +GODOT_CLANG_WARNING_PUSH +GODOT_CLANG_WARNING_IGNORE("-Wimplicit-fallthrough") +GODOT_CLANG_WARNING_IGNORE("-Wlogical-not-parentheses") +GODOT_CLANG_WARNING_IGNORE("-Wmissing-field-initializers") +GODOT_CLANG_WARNING_IGNORE("-Wnon-virtual-dtor") +GODOT_CLANG_WARNING_IGNORE("-Wstring-plus-int") +GODOT_CLANG_WARNING_IGNORE("-Wswitch") +GODOT_MSVC_WARNING_PUSH +GODOT_MSVC_WARNING_IGNORE(4200) // "nonstandard extension used: zero-sized array in struct/union". +GODOT_MSVC_WARNING_IGNORE(4806) // "'&': unsafe operation: no value of type 'bool' promoted to type 'uint32_t' can equal the given constant". -#include "nir_spirv.h" -#include "nir_to_dxil.h" -#include "spirv_to_dxil.h" +#include +#include +#include extern "C" { -#include "dxil_spirv_nir.h" +#include } -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC diagnostic pop -#elif defined(__clang__) -#pragma clang diagnostic pop -#endif - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif +GODOT_GCC_WARNING_POP +GODOT_CLANG_WARNING_POP +GODOT_MSVC_WARNING_POP static D3D12_SHADER_VISIBILITY stages_to_d3d12_visibility(uint32_t p_stages_mask) { switch (p_stages_mask) {