diff options
Diffstat (limited to 'thirdparty')
| -rw-r--r-- | thirdparty/README.md | 6 | ||||
| -rw-r--r-- | thirdparty/mbedtls/library/timing.c | 4 | ||||
| -rw-r--r-- | thirdparty/minimp3/minimp3.h | 23 | ||||
| -rw-r--r-- | thirdparty/spirv-reflect/patches/zero-calloc.patch | 28 | ||||
| -rw-r--r-- | thirdparty/spirv-reflect/spirv_reflect.c | 16 |
5 files changed, 71 insertions, 6 deletions
diff --git a/thirdparty/README.md b/thirdparty/README.md index 4514217dd8..ffc8137819 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -345,6 +345,9 @@ File extracted from upstream release tarball: - Added 2 files `godot_core_mbedtls_platform.c` and `godot_core_mbedtls_config.h` providing configuration for light bundling with core. +Some changes have been made in order to fix Windows on ARM build errors. +They are marked with `// -- GODOT start --` and `// -- GODOT end --` + ## meshoptimizer @@ -375,6 +378,9 @@ Files extracted from upstream repository: - `minimp3_ex.h` - `LICENSE` +Some changes have been made in order to fix Windows on ARM build errors. +They are marked with `// -- GODOT start --` and `// -- GODOT end --` + ## miniupnpc diff --git a/thirdparty/mbedtls/library/timing.c b/thirdparty/mbedtls/library/timing.c index 57bc9bcc12..78bfa10cfb 100644 --- a/thirdparty/mbedtls/library/timing.c +++ b/thirdparty/mbedtls/library/timing.c @@ -195,8 +195,10 @@ unsigned long mbedtls_timing_hardclock( void ) #endif /* !HAVE_HARDCLOCK && MBEDTLS_HAVE_ASM && __GNUC__ && __ia64__ */ -#if !defined(HAVE_HARDCLOCK) && defined(_MSC_VER) && \ +// -- GODOT start -- +#if !defined(HAVE_HARDCLOCK) && defined(_WIN32) && \ !defined(EFIX64) && !defined(EFI32) +// -- GODOT end -- #define HAVE_HARDCLOCK diff --git a/thirdparty/minimp3/minimp3.h b/thirdparty/minimp3/minimp3.h index 3220ae1a85..2a9975cc86 100644 --- a/thirdparty/minimp3/minimp3.h +++ b/thirdparty/minimp3/minimp3.h @@ -1566,7 +1566,18 @@ static void mp3d_synth(float *xl, mp3d_sample_t *dstl, int nch, float *lins) #else /* MINIMP3_FLOAT_OUTPUT */ +// -- GODOT start -- +#if defined(_MSC_VER) && (defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_ARM)) + static f4 g_scale; + g_scale = vsetq_lane_f32(1.0f/32768.0f, g_scale, 0); + g_scale = vsetq_lane_f32(1.0f/32768.0f, g_scale, 1); + g_scale = vsetq_lane_f32(1.0f/32768.0f, g_scale, 2); + g_scale = vsetq_lane_f32(1.0f/32768.0f, g_scale, 3); +#else static const f4 g_scale = { 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f, 1.0f/32768.0f }; +#endif +// -- GODOT end -- + a = VMUL(a, g_scale); b = VMUL(b, g_scale); #if HAVE_SSE @@ -1813,7 +1824,19 @@ void mp3dec_f32_to_s16(const float *in, int16_t *out, int num_samples) int aligned_count = num_samples & ~7; for(; i < aligned_count; i += 8) { + +// -- GODOT start -- +#if defined(_MSC_VER) && (defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_ARM)) + static f4 g_scale; + g_scale = vsetq_lane_f32(32768.0f, g_scale, 0); + g_scale = vsetq_lane_f32(32768.0f, g_scale, 1); + g_scale = vsetq_lane_f32(32768.0f, g_scale, 2); + g_scale = vsetq_lane_f32(32768.0f, g_scale, 3); +#else static const f4 g_scale = { 32768.0f, 32768.0f, 32768.0f, 32768.0f }; +#endif +// -- GODOT end -- + f4 a = VMUL(VLD(&in[i ]), g_scale); f4 b = VMUL(VLD(&in[i+4]), g_scale); #if HAVE_SSE diff --git a/thirdparty/spirv-reflect/patches/zero-calloc.patch b/thirdparty/spirv-reflect/patches/zero-calloc.patch new file mode 100644 index 0000000000..796fe1266a --- /dev/null +++ b/thirdparty/spirv-reflect/patches/zero-calloc.patch @@ -0,0 +1,28 @@ +diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c +index c174ae1900..11ccbdee3a 100644 +--- a/thirdparty/spirv-reflect/spirv_reflect.c ++++ b/thirdparty/spirv-reflect/spirv_reflect.c +@@ -3322,12 +3322,18 @@ static SpvReflectResult ParseExecutionModes( + } + for (size_t entry_point_idx = 0; entry_point_idx < p_module->entry_point_count; ++entry_point_idx) { + SpvReflectEntryPoint* p_entry_point = &p_module->entry_points[entry_point_idx]; +- p_entry_point->execution_modes = +- (SpvExecutionMode*)calloc(p_entry_point->execution_mode_count, sizeof(*p_entry_point->execution_modes)); +- if (IsNull(p_entry_point->execution_modes)) { +- SafeFree(indices); +- return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; ++// -- GODOT begin -- ++ if (p_entry_point->execution_mode_count > 0) { ++// -- GODOT end -- ++ p_entry_point->execution_modes = ++ (SpvExecutionMode*)calloc(p_entry_point->execution_mode_count, sizeof(*p_entry_point->execution_modes)); ++ if (IsNull(p_entry_point->execution_modes)) { ++ SafeFree(indices); ++ return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; ++ } ++// -- GODOT begin -- + } ++// -- GODOT end -- + } + + for (size_t node_idx = 0; node_idx < p_parser->node_count; ++node_idx) { diff --git a/thirdparty/spirv-reflect/spirv_reflect.c b/thirdparty/spirv-reflect/spirv_reflect.c index c174ae1900..11ccbdee3a 100644 --- a/thirdparty/spirv-reflect/spirv_reflect.c +++ b/thirdparty/spirv-reflect/spirv_reflect.c @@ -3322,12 +3322,18 @@ static SpvReflectResult ParseExecutionModes( } for (size_t entry_point_idx = 0; entry_point_idx < p_module->entry_point_count; ++entry_point_idx) { SpvReflectEntryPoint* p_entry_point = &p_module->entry_points[entry_point_idx]; - p_entry_point->execution_modes = - (SpvExecutionMode*)calloc(p_entry_point->execution_mode_count, sizeof(*p_entry_point->execution_modes)); - if (IsNull(p_entry_point->execution_modes)) { - SafeFree(indices); - return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; +// -- GODOT begin -- + if (p_entry_point->execution_mode_count > 0) { +// -- GODOT end -- + p_entry_point->execution_modes = + (SpvExecutionMode*)calloc(p_entry_point->execution_mode_count, sizeof(*p_entry_point->execution_modes)); + if (IsNull(p_entry_point->execution_modes)) { + SafeFree(indices); + return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED; + } +// -- GODOT begin -- } +// -- GODOT end -- } for (size_t node_idx = 0; node_idx < p_parser->node_count; ++node_idx) { |
