The package rpms/godot.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/godot.git/commit/?id=074857846cdcf3e....
Change: -%ifarch x86_64
Thanks.
Full change: ============
commit 074857846cdcf3ef47db117ebdf15f0969e4ec47 Author: Rémi Verschelde rverschelde@gmail.com Date: Tue Jun 15 18:17:40 2021 +0200
Version 3.3.2-stable
Embree (raycast module) now available for aarch64.
diff --git a/.gitignore b/.gitignore index 92f9829..d0bebdb 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ /godot-3.2.3-stable.tar.xz.sha256 /godot-3.3-stable.tar.xz /godot-3.3-stable.tar.xz.sha256 +/godot-3.3.2-stable.tar.xz +/godot-3.3.2-stable.tar.xz.sha256 diff --git a/0001-CPU-lightmapper-environment-energy-fixes.patch b/0001-CPU-lightmapper-environment-energy-fixes.patch deleted file mode 100644 index 3856ec2..0000000 --- a/0001-CPU-lightmapper-environment-energy-fixes.patch +++ /dev/null @@ -1,177 +0,0 @@ -From 33d6b1f68f807e0d25430c269f4c34e134bbdfa4 Mon Sep 17 00:00:00 2001 -From: JFonS joan.fonssanchez@gmail.com -Date: Thu, 22 Apr 2021 15:01:25 +0200 -Subject: [PATCH] CPU lightmapper environment energy fixes. - -* Better handling of the scene's environment energy in the lightmapper - bakes. -* Fixed a bug where ProceduralSky::get_panorama() returned a reference - instead of a copy. -* Removed includes to Embree's internal header files. - -(cherry picked from commit 2db2d1153d2deb8490c0ca5ad0f094077f382f28) ---- - modules/raycast/lightmap_raycaster.cpp | 30 +++++++++++--------------- - scene/3d/baked_lightmap.cpp | 19 ++++++++++++---- - scene/3d/baked_lightmap.h | 2 +- - scene/resources/sky.cpp | 4 ++-- - scene/resources/sky.h | 2 +- - 5 files changed, 31 insertions(+), 26 deletions(-) - -diff --git a/modules/raycast/lightmap_raycaster.cpp b/modules/raycast/lightmap_raycaster.cpp -index 29334b7cb0..fac4385d77 100644 ---- a/modules/raycast/lightmap_raycaster.cpp -+++ b/modules/raycast/lightmap_raycaster.cpp -@@ -30,12 +30,7 @@ - - #include "lightmap_raycaster.h" - --// From Embree. --#include <math/vec2.h> --#include <math/vec3.h> --#include <xmmintrin.h> -- --using namespace embree; -+#include <pmmintrin.h> - - LightmapRaycaster *LightmapRaycasterEmbree::create_embree_raycaster() { - return memnew(LightmapRaycasterEmbree); -@@ -135,25 +130,24 @@ void LightmapRaycasterEmbree::add_mesh(const Vector<Vector3> &p_vertices, const - - ERR_FAIL_COND(vertex_count % 3 != 0); - ERR_FAIL_COND(vertex_count != p_uv2s.size()); -+ ERR_FAIL_COND(!p_normals.empty() && vertex_count != p_normals.size()); - -- Vec3fa *embree_vertices = (Vec3fa *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, sizeof(Vec3fa), vertex_count); -- Vec2fa *embree_light_uvs = (Vec2fa *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 0, RTC_FORMAT_FLOAT2, sizeof(Vec2fa), vertex_count); -- uint32_t *embree_triangles = (uint32_t *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, sizeof(uint32_t) * 3, vertex_count / 3); -+ Vector3 *embree_vertices = (Vector3 *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_VERTEX, 0, RTC_FORMAT_FLOAT3, sizeof(Vector3), vertex_count); -+ copymem(embree_vertices, p_vertices.ptr(), sizeof(Vector3) * vertex_count); - -- Vec3fa *embree_normals = nullptr; -- if (!p_normals.empty()) { -- embree_normals = (Vec3fa *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 1, RTC_FORMAT_FLOAT3, sizeof(Vec3fa), vertex_count); -- } -+ Vector2 *embree_light_uvs = (Vector2 *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 0, RTC_FORMAT_FLOAT2, sizeof(Vector2), vertex_count); -+ copymem(embree_light_uvs, p_uv2s.ptr(), sizeof(Vector2) * vertex_count); - -+ uint32_t *embree_triangles = (uint32_t *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_INDEX, 0, RTC_FORMAT_UINT3, sizeof(uint32_t) * 3, vertex_count / 3); - for (int i = 0; i < vertex_count; i++) { -- embree_vertices[i] = Vec3fa(p_vertices[i].x, p_vertices[i].y, p_vertices[i].z); -- embree_light_uvs[i] = Vec2fa(p_uv2s[i].x, p_uv2s[i].y); -- if (embree_normals != nullptr) { -- embree_normals[i] = Vec3fa(p_normals[i].x, p_normals[i].y, p_normals[i].z); -- } - embree_triangles[i] = i; - } - -+ if (!p_normals.empty()) { -+ Vector3 *embree_normals = (Vector3 *)rtcSetNewGeometryBuffer(embree_mesh, RTC_BUFFER_TYPE_VERTEX_ATTRIBUTE, 1, RTC_FORMAT_FLOAT3, sizeof(Vector3), vertex_count); -+ copymem(embree_normals, p_normals.ptr(), sizeof(Vector3) * vertex_count); -+ } -+ - rtcCommitGeometry(embree_mesh); - rtcSetGeometryIntersectFilterFunction(embree_mesh, filter_function); - rtcSetGeometryUserData(embree_mesh, this); -diff --git a/scene/3d/baked_lightmap.cpp b/scene/3d/baked_lightmap.cpp -index 67c201c3e5..af044fccdb 100644 ---- a/scene/3d/baked_lightmap.cpp -+++ b/scene/3d/baked_lightmap.cpp -@@ -810,7 +810,7 @@ BakedLightmap::BakeError BakedLightmap::bake(Node *p_from_node, String p_data_sa - } break; - case ENVIRONMENT_MODE_CUSTOM_SKY: { - if (environment_custom_sky.is_valid()) { -- environment_image = _get_irradiance_from_sky(environment_custom_sky, Vector2i(128, 64)); -+ environment_image = _get_irradiance_from_sky(environment_custom_sky, environment_custom_energy, Vector2i(128, 64)); - environment_xform.set_euler(environment_custom_sky_rotation_degrees * Math_PI / 180.0); - } - -@@ -1233,7 +1233,7 @@ void BakedLightmap::_clear_lightmaps() { - } - } - --Ref<Image> BakedLightmap::_get_irradiance_from_sky(Ref<Sky> p_sky, Vector2i p_size) { -+Ref<Image> BakedLightmap::_get_irradiance_from_sky(Ref<Sky> p_sky, float p_energy, Vector2i p_size) { - if (p_sky.is_null()) { - return Ref<Image>(); - } -@@ -1245,7 +1245,7 @@ Ref<Image> BakedLightmap::_get_irradiance_from_sky(Ref<Sky> p_sky, Vector2i p_si - } - Ref<ProceduralSky> procedural = p_sky; - if (procedural.is_valid()) { -- sky_image = procedural->get_panorama(); -+ sky_image = procedural->get_data(); - } - - if (sky_image.is_null()) { -@@ -1254,6 +1254,17 @@ Ref<Image> BakedLightmap::_get_irradiance_from_sky(Ref<Sky> p_sky, Vector2i p_si - - sky_image->convert(Image::FORMAT_RGBF); - sky_image->resize(p_size.x, p_size.y, Image::INTERPOLATE_CUBIC); -+ -+ if (p_energy != 1.0) { -+ sky_image->lock(); -+ for (int i = 0; i < p_size.y; i++) { -+ for (int j = 0; j < p_size.x; j++) { -+ sky_image->set_pixel(j, i, sky_image->get_pixel(j, i) * p_energy); -+ } -+ } -+ sky_image->unlock(); -+ } -+ - return sky_image; - } - -@@ -1261,7 +1272,7 @@ Ref<Image> BakedLightmap::_get_irradiance_map(Ref<Environment> p_env, Vector2i p - Environment::BGMode bg_mode = p_env->get_background(); - switch (bg_mode) { - case Environment::BG_SKY: { -- return _get_irradiance_from_sky(p_env->get_sky(), Vector2i(128, 64)); -+ return _get_irradiance_from_sky(p_env->get_sky(), p_env->get_bg_energy(), Vector2i(128, 64)); - } - case Environment::BG_CLEAR_COLOR: - case Environment::BG_COLOR: { -diff --git a/scene/3d/baked_lightmap.h b/scene/3d/baked_lightmap.h -index 6f8f0b8f98..09791b5d2a 100644 ---- a/scene/3d/baked_lightmap.h -+++ b/scene/3d/baked_lightmap.h -@@ -187,7 +187,7 @@ private: - void _clear_lightmaps(); - - void _get_material_images(const MeshesFound &p_found_mesh, Lightmapper::MeshData &r_mesh_data, Vector<Ref<Texture> > &r_albedo_textures, Vector<Ref<Texture> > &r_emission_textures); -- Ref<Image> _get_irradiance_from_sky(Ref<Sky> p_sky, Vector2i p_size); -+ Ref<Image> _get_irradiance_from_sky(Ref<Sky> p_sky, float p_energy, Vector2i p_size); - Ref<Image> _get_irradiance_map(Ref<Environment> p_env, Vector2i p_size); - void _find_meshes_and_lights(Node *p_at_node, Vector<MeshesFound> &meshes, Vector<LightsFound> &lights); - Vector2i _compute_lightmap_size(const MeshesFound &p_mesh); -diff --git a/scene/resources/sky.cpp b/scene/resources/sky.cpp -index 0db92f2132..0bad4a2ed0 100644 ---- a/scene/resources/sky.cpp -+++ b/scene/resources/sky.cpp -@@ -390,8 +390,8 @@ ProceduralSky::TextureSize ProceduralSky::get_texture_size() const { - return texture_size; - } - --Ref<Image> ProceduralSky::get_panorama() const { -- return panorama; -+Ref<Image> ProceduralSky::get_data() const { -+ return panorama->duplicate(); - } - - RID ProceduralSky::get_rid() const { -diff --git a/scene/resources/sky.h b/scene/resources/sky.h -index 5b5e6c7017..0cfd00bcda 100644 ---- a/scene/resources/sky.h -+++ b/scene/resources/sky.h -@@ -190,7 +190,7 @@ public: - void set_texture_size(TextureSize p_size); - TextureSize get_texture_size() const; - -- Ref<Image> get_panorama() const; -+ Ref<Image> get_data() const; - - virtual RID get_rid() const; - --- -2.31.1 - diff --git a/0001-Linux-Don-t-attempt-linking-embree3-on-non-tools-lin.patch b/0001-Linux-Don-t-attempt-linking-embree3-on-non-tools-lin.patch deleted file mode 100644 index d85191c..0000000 --- a/0001-Linux-Don-t-attempt-linking-embree3-on-non-tools-lin.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 162c78f9dca3669f84c837356730a5d33a63060b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= rverschelde@gmail.com -Date: Fri, 23 Apr 2021 10:25:51 +0200 -Subject: [PATCH] Linux: Don't attempt linking embree3 on non-tools, link it - for headless too - -`tech_debt++`, that's what we get for not taking the time to cleanup all this -and do it right... - -Follow-up to #48073 and #48102. - -(cherry picked from commit a14b51df924cbdd915f46571b396d6b9ac6e84ff) ---- - platform/server/detect.py | 7 +++++++ - platform/x11/detect.py | 2 +- - 2 files changed, 8 insertions(+), 1 deletion(-) - -diff --git a/platform/server/detect.py b/platform/server/detect.py -index 59eb3dc5cb..49fbdedd3f 100644 ---- a/platform/server/detect.py -+++ b/platform/server/detect.py -@@ -222,6 +222,13 @@ def configure(env): - if not env["builtin_pcre2"]: - env.ParseConfig("pkg-config libpcre2-32 --cflags --libs") - -+ # Embree is only compatible with x86_64. Yet another unreliable hack that will break -+ # cross-compilation, this will really need to be handle better. Thankfully only affects -+ # people who disable builtin_embree (likely distro packagers). -+ if env["tools"] and not env["builtin_embree"] and (is64 and platform.machine() == "x86_64"): -+ # No pkgconfig file so far, hardcode expected lib name. -+ env.Append(LIBS=["embree3"]) -+ - ## Flags - - # Linkflags below this line should typically stay the last ones -diff --git a/platform/x11/detect.py b/platform/x11/detect.py -index ada0669a69..1a52044150 100644 ---- a/platform/x11/detect.py -+++ b/platform/x11/detect.py -@@ -313,7 +313,7 @@ def configure(env): - # Embree is only compatible with x86_64. Yet another unreliable hack that will break - # cross-compilation, this will really need to be handle better. Thankfully only affects - # people who disable builtin_embree (likely distro packagers). -- if not env["builtin_embree"] and (is64 and platform.machine() == "x86_64"): -+ if env["tools"] and not env["builtin_embree"] and (is64 and platform.machine() == "x86_64"): - # No pkgconfig file so far, hardcode expected lib name. - env.Append(LIBS=["embree3"]) - --- -2.31.1 - diff --git a/0001-Linux-Fix-embree-unbundling-on-aarch64.patch b/0001-Linux-Fix-embree-unbundling-on-aarch64.patch new file mode 100644 index 0000000..883fc4e --- /dev/null +++ b/0001-Linux-Fix-embree-unbundling-on-aarch64.patch @@ -0,0 +1,30 @@ +From 752ed768fa00841a5b7be8592fd34f4c283802c5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= rverschelde@gmail.com +Date: Mon, 24 May 2021 21:10:43 +0200 +Subject: [PATCH] Linux: Fix embree unbundling on aarch64 + +Embree supports aarch64 since version 3.13.0. +--- + platform/x11/detect.py | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/platform/x11/detect.py b/platform/x11/detect.py +index 3b7eacd8ca..542223ef96 100644 +--- a/platform/x11/detect.py ++++ b/platform/x11/detect.py +@@ -310,10 +310,8 @@ def configure(env): + if not env["builtin_pcre2"]: + env.ParseConfig("pkg-config libpcre2-32 --cflags --libs") + +- # Embree is only compatible with x86_64. Yet another unreliable hack that will break +- # cross-compilation, this will really need to be handle better. Thankfully only affects +- # people who disable builtin_embree (likely distro packagers). +- if env["tools"] and not env["builtin_embree"] and (is64 and platform.machine() == "x86_64"): ++ # Embree is only used in tools build on x86_64 and aarch64. ++ if env["tools"] and not env["builtin_embree"] and is64: + # No pkgconfig file so far, hardcode expected lib name. + env.Append(LIBS=["embree3"]) + +-- +2.31.1 + diff --git a/0001-embree-Allow-building-against-system-library-on-Linu.patch b/0001-embree-Allow-building-against-system-library-on-Linu.patch deleted file mode 100644 index 699f8d9..0000000 --- a/0001-embree-Allow-building-against-system-library-on-Linu.patch +++ /dev/null @@ -1,224 +0,0 @@ -From 66625962bff3b83caae324d6e9d402e2bfacc48f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= rverschelde@gmail.com -Date: Thu, 22 Apr 2021 02:03:43 +0200 -Subject: [PATCH] embree: Allow building against system library on Linux - -(cherry picked from commit b266cc2315f2d8fb1615e2c4f18558e602a7a700) ---- - SConstruct | 1 + - modules/raycast/SCsub | 165 +++++++++++++++++++++-------------------- - platform/x11/detect.py | 4 + - 3 files changed, 90 insertions(+), 80 deletions(-) - -diff --git a/SConstruct b/SConstruct -index c30f53308b..7abe58ba49 100644 ---- a/SConstruct -+++ b/SConstruct -@@ -151,6 +151,7 @@ opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise e - # Thirdparty libraries - opts.Add(BoolVariable("builtin_bullet", "Use the built-in Bullet library", True)) - opts.Add(BoolVariable("builtin_certs", "Use the built-in SSL certificates bundles", True)) -+opts.Add(BoolVariable("builtin_embree", "Use the built-in Embree library", True)) - opts.Add(BoolVariable("builtin_enet", "Use the built-in ENet library", True)) - opts.Add(BoolVariable("builtin_freetype", "Use the built-in FreeType library", True)) - opts.Add(BoolVariable("builtin_libogg", "Use the built-in libogg library", True)) -diff --git a/modules/raycast/SCsub b/modules/raycast/SCsub -index 789d7d3251..e6808d76ba 100644 ---- a/modules/raycast/SCsub -+++ b/modules/raycast/SCsub -@@ -3,92 +3,97 @@ - Import("env") - Import("env_modules") - --embree_src = [ -- "common/sys/sysinfo.cpp", -- "common/sys/alloc.cpp", -- "common/sys/filename.cpp", -- "common/sys/library.cpp", -- "common/sys/thread.cpp", -- "common/sys/string.cpp", -- "common/sys/regression.cpp", -- "common/sys/mutex.cpp", -- "common/sys/condition.cpp", -- "common/sys/barrier.cpp", -- "common/math/constants.cpp", -- "common/simd/sse.cpp", -- "common/lexers/stringstream.cpp", -- "common/lexers/tokenstream.cpp", -- "common/tasking/taskschedulerinternal.cpp", -- "common/algorithms/parallel_for.cpp", -- "common/algorithms/parallel_reduce.cpp", -- "common/algorithms/parallel_prefix_sum.cpp", -- "common/algorithms/parallel_for_for.cpp", -- "common/algorithms/parallel_for_for_prefix_sum.cpp", -- "common/algorithms/parallel_partition.cpp", -- "common/algorithms/parallel_sort.cpp", -- "common/algorithms/parallel_set.cpp", -- "common/algorithms/parallel_map.cpp", -- "common/algorithms/parallel_filter.cpp", -- "kernels/common/device.cpp", -- "kernels/common/stat.cpp", -- "kernels/common/acceln.cpp", -- "kernels/common/accelset.cpp", -- "kernels/common/state.cpp", -- "kernels/common/rtcore.cpp", -- "kernels/common/rtcore_builder.cpp", -- "kernels/common/scene.cpp", -- "kernels/common/alloc.cpp", -- "kernels/common/geometry.cpp", -- "kernels/common/scene_triangle_mesh.cpp", -- "kernels/geometry/primitive4.cpp", -- "kernels/builders/primrefgen.cpp", -- "kernels/bvh/bvh.cpp", -- "kernels/bvh/bvh_statistics.cpp", -- "kernels/bvh/bvh4_factory.cpp", -- "kernels/bvh/bvh8_factory.cpp", -- "kernels/bvh/bvh_collider.cpp", -- "kernels/bvh/bvh_rotate.cpp", -- "kernels/bvh/bvh_refit.cpp", -- "kernels/bvh/bvh_builder.cpp", -- "kernels/bvh/bvh_builder_morton.cpp", -- "kernels/bvh/bvh_builder_sah.cpp", -- "kernels/bvh/bvh_builder_sah_spatial.cpp", -- "kernels/bvh/bvh_builder_sah_mb.cpp", -- "kernels/bvh/bvh_builder_twolevel.cpp", -- "kernels/bvh/bvh_intersector1_bvh4.cpp", --] -+env_raycast = env_modules.Clone() -+ -+# Thirdparty source files - --embree_dir = "#thirdparty/embree/" -+if env["builtin_embree"]: -+ thirdparty_dir = "#thirdparty/embree/" - --env_embree = env_modules.Clone() --embree_sources = [embree_dir + file for file in embree_src] --env_embree.Prepend(CPPPATH=[embree_dir, embree_dir + "include"]) --env_embree.Append( -- CPPFLAGS=[ -- "-DEMBREE_TARGET_SSE2", -- "-DEMBREE_LOWEST_ISA", -- "-DTASKING_INTERNAL", -- "-DNDEBUG", -- "-D__SSE2__", -- "-D__SSE__", -+ embree_src = [ -+ "common/sys/sysinfo.cpp", -+ "common/sys/alloc.cpp", -+ "common/sys/filename.cpp", -+ "common/sys/library.cpp", -+ "common/sys/thread.cpp", -+ "common/sys/string.cpp", -+ "common/sys/regression.cpp", -+ "common/sys/mutex.cpp", -+ "common/sys/condition.cpp", -+ "common/sys/barrier.cpp", -+ "common/math/constants.cpp", -+ "common/simd/sse.cpp", -+ "common/lexers/stringstream.cpp", -+ "common/lexers/tokenstream.cpp", -+ "common/tasking/taskschedulerinternal.cpp", -+ "common/algorithms/parallel_for.cpp", -+ "common/algorithms/parallel_reduce.cpp", -+ "common/algorithms/parallel_prefix_sum.cpp", -+ "common/algorithms/parallel_for_for.cpp", -+ "common/algorithms/parallel_for_for_prefix_sum.cpp", -+ "common/algorithms/parallel_partition.cpp", -+ "common/algorithms/parallel_sort.cpp", -+ "common/algorithms/parallel_set.cpp", -+ "common/algorithms/parallel_map.cpp", -+ "common/algorithms/parallel_filter.cpp", -+ "kernels/common/device.cpp", -+ "kernels/common/stat.cpp", -+ "kernels/common/acceln.cpp", -+ "kernels/common/accelset.cpp", -+ "kernels/common/state.cpp", -+ "kernels/common/rtcore.cpp", -+ "kernels/common/rtcore_builder.cpp", -+ "kernels/common/scene.cpp", -+ "kernels/common/alloc.cpp", -+ "kernels/common/geometry.cpp", -+ "kernels/common/scene_triangle_mesh.cpp", -+ "kernels/geometry/primitive4.cpp", -+ "kernels/builders/primrefgen.cpp", -+ "kernels/bvh/bvh.cpp", -+ "kernels/bvh/bvh_statistics.cpp", -+ "kernels/bvh/bvh4_factory.cpp", -+ "kernels/bvh/bvh8_factory.cpp", -+ "kernels/bvh/bvh_collider.cpp", -+ "kernels/bvh/bvh_rotate.cpp", -+ "kernels/bvh/bvh_refit.cpp", -+ "kernels/bvh/bvh_builder.cpp", -+ "kernels/bvh/bvh_builder_morton.cpp", -+ "kernels/bvh/bvh_builder_sah.cpp", -+ "kernels/bvh/bvh_builder_sah_spatial.cpp", -+ "kernels/bvh/bvh_builder_sah_mb.cpp", -+ "kernels/bvh/bvh_builder_twolevel.cpp", -+ "kernels/bvh/bvh_intersector1_bvh4.cpp", - ] --) - --if not env_embree.msvc: -- env_embree.Append(CPPFLAGS=["-msse2", "-mxsave"]) -- if env["platform"] == "windows": -- env_embree.Append(CPPFLAGS=["-mstackrealign"]) -+ thirdparty_sources = [thirdparty_dir + file for file in embree_src] - --if env["platform"] == "windows": -- if env.msvc: -- env.Append(LINKFLAGS=["psapi.lib"]) -- else: -- env.Append(LIBS=["psapi"]) -+ env_raycast.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "include"]) -+ env_raycast.Append( -+ CPPDEFINES=[ -+ "EMBREE_TARGET_SSE2", -+ "EMBREE_LOWEST_ISA", -+ "TASKING_INTERNAL", -+ "NDEBUG", -+ "__SSE2__", -+ "__SSE__", -+ ] -+ ) - --env_embree.disable_warnings() --env_embree.add_source_files(env.modules_sources, embree_sources) -+ if not env.msvc: -+ env_raycast.Append(CPPFLAGS=["-msse2", "-mxsave"]) -+ if env["platform"] == "windows": -+ env_raycast.Append(CPPFLAGS=["-mstackrealign"]) -+ -+ if env["platform"] == "windows": -+ if env.msvc: -+ env.Append(LINKFLAGS=["psapi.lib"]) -+ else: -+ env.Append(LIBS=["psapi"]) -+ -+ env_thirdparty = env_raycast.Clone() -+ env_thirdparty.disable_warnings() -+ env_thirdparty.add_source_files(env.modules_sources, thirdparty_sources) - --env_raycast = env_modules.Clone() --env_raycast.Prepend(CPPPATH=[embree_dir, embree_dir + "include", embree_dir + "common"]) - -+# Godot source files - env_raycast.add_source_files(env.modules_sources, "*.cpp") -diff --git a/platform/x11/detect.py b/platform/x11/detect.py -index ba5fb30d2e..7513bd701f 100644 ---- a/platform/x11/detect.py -+++ b/platform/x11/detect.py -@@ -310,6 +310,10 @@ def configure(env): - if not env["builtin_pcre2"]: - env.ParseConfig("pkg-config libpcre2-32 --cflags --libs") - -+ if not env["builtin_embree"]: -+ # No pkgconfig file so far, hardcode expected lib name. -+ env.Append(LIBS=["embree3"]) -+ - ## Flags - - if os.system("pkg-config --exists alsa") == 0: # 0 means found --- -2.31.1 - diff --git a/0001-fbx-Fix-include-for-zlib-that-broke-unbundling.patch b/0001-fbx-Fix-include-for-zlib-that-broke-unbundling.patch deleted file mode 100644 index 3743587..0000000 --- a/0001-fbx-Fix-include-for-zlib-that-broke-unbundling.patch +++ /dev/null @@ -1,44 +0,0 @@ -From b616f41573ce56e872f73f160345da8a86504375 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= rverschelde@gmail.com -Date: Thu, 22 Apr 2021 02:18:44 +0200 -Subject: [PATCH] fbx: Fix include for zlib that broke unbundling - -It's possible to link against system zlib on Linux, so we should use system paths. - -(cherry picked from commit 93b74061387075909d1b4d29b0e5b2924e06f7d7) ---- - modules/fbx/SCsub | 3 +++ - modules/fbx/fbx_parser/FBXParser.cpp | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/modules/fbx/SCsub b/modules/fbx/SCsub -index 84220a66fa..0311fddfee 100644 ---- a/modules/fbx/SCsub -+++ b/modules/fbx/SCsub -@@ -8,6 +8,9 @@ env_fbx = env_modules.Clone() - # Make includes relative to the folder path specified here so our includes are clean - env_fbx.Prepend(CPPPATH=["#modules/fbx/"]) - -+if env["builtin_zlib"]: -+ env_fbx.Prepend(CPPPATH=["#thirdparty/zlib/"]) -+ - # Godot's own source files - env_fbx.add_source_files(env.modules_sources, "tools/*.cpp") - env_fbx.add_source_files(env.modules_sources, "data/*.cpp") -diff --git a/modules/fbx/fbx_parser/FBXParser.cpp b/modules/fbx/fbx_parser/FBXParser.cpp -index 0d737eb272..e9e44d94bf 100644 ---- a/modules/fbx/fbx_parser/FBXParser.cpp -+++ b/modules/fbx/fbx_parser/FBXParser.cpp -@@ -74,8 +74,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * @brief Implementation of the FBX parser and the rudimentary DOM that we use - */ - --#include "thirdparty/zlib/zlib.h" - #include <stdlib.h> /* strtol */ -+#include <zlib.h> - - #include "ByteSwapper.h" - #include "FBXParseTools.h" --- -2.31.1 - diff --git a/0001-lightmapper-Disable-build-if-raycast-module-can-t-bu.patch b/0001-lightmapper-Disable-build-if-raycast-module-can-t-bu.patch deleted file mode 100644 index cc7ab76..0000000 --- a/0001-lightmapper-Disable-build-if-raycast-module-can-t-bu.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 4e1360ac5922d3da9e2d2bcf67be22bb723efa92 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= rverschelde@gmail.com -Date: Thu, 22 Apr 2021 18:53:43 +0200 -Subject: [PATCH] lightmapper: Disable build if raycast module can't build - -We need to propagate the hacky checks from the raycast config to the -lightmapper config, as the failure of a `can_build()` check is not notified to -other modules (which might even be checked further depending on the processing -order in SConstruct). - -A more thorough fix would be to change SConstruct to do two loops on modules: -one to check `can_build()` and disable modules which can't build, then another -one to rechecked `can_build()` with the new lineup and do further config. -But there would be more risk for regressions than with this ad hoc hack. - -Similar story for the `platform/x11/detect.py` change... oh my eyes :( - -(cherry picked from commit a2c68d9da71053efa3ca7de6162aa71bc3651b92) ---- - modules/lightmapper_cpu/config.py | 25 ++++++++++++++++++++++++- - platform/x11/detect.py | 5 ++++- - 2 files changed, 28 insertions(+), 2 deletions(-) - -diff --git a/modules/lightmapper_cpu/config.py b/modules/lightmapper_cpu/config.py -index d01c1726dd..0b8837aa4e 100644 ---- a/modules/lightmapper_cpu/config.py -+++ b/modules/lightmapper_cpu/config.py -@@ -1,5 +1,28 @@ - def can_build(env, platform): -- return env["tools"] and env["module_raycast_enabled"] -+ if not env["tools"] or not env["module_raycast_enabled"]: -+ return False -+ -+ # Depends on raycast module (embree), but we can't have access to the result of -+ # `can_build()` for that module, so we need to duplicate that code as a short-term -+ # solution. -+ -+ # Embree requires at least SSE2 to be available, so 32-bit and ARM64 builds are -+ # not supported. -+ # It's also only relevant for tools build and desktop platforms, -+ # as doing lightmap generation on Android or HTML5 would be a bit far-fetched. -+ supported_platform = platform in ["x11", "osx", "windows", "server"] -+ supported_bits = env["bits"] == "64" -+ supported_arch = env["arch"] != "arm64" -+ -+ # Hack to disable on Linux arm64. This won't work well for cross-compilation (checks -+ # host, not target) and would need a more thorough fix by refactoring our arch and -+ # bits-handling code. -+ from platform import machine -+ -+ if platform == "x11" and machine() != "x86_64": -+ supported_arch = False -+ -+ return supported_platform and supported_bits and supported_arch - - - def configure(env): -diff --git a/platform/x11/detect.py b/platform/x11/detect.py -index 7513bd701f..ada0669a69 100644 ---- a/platform/x11/detect.py -+++ b/platform/x11/detect.py -@@ -310,7 +310,10 @@ def configure(env): - if not env["builtin_pcre2"]: - env.ParseConfig("pkg-config libpcre2-32 --cflags --libs") - -- if not env["builtin_embree"]: -+ # Embree is only compatible with x86_64. Yet another unreliable hack that will break -+ # cross-compilation, this will really need to be handle better. Thankfully only affects -+ # people who disable builtin_embree (likely distro packagers). -+ if not env["builtin_embree"] and (is64 and platform.machine() == "x86_64"): - # No pkgconfig file so far, hardcode expected lib name. - env.Append(LIBS=["embree3"]) - --- -2.31.1 - diff --git a/godot.spec b/godot.spec index effb076..c3e75be 100644 --- a/godot.spec +++ b/godot.spec @@ -11,7 +11,7 @@ %define rdnsname org.godotengine.Godot
Name: godot -Version: 3.3 +Version: 3.3.2 Release: %{?prerel:0.%{status}.}1%{?dist} Summary: Multi-platform 2D and 3D game engine with a feature-rich editor %if 0%{?mageia} @@ -22,13 +22,8 @@ License: MIT and CC-BY and ASL 2.0 and BSD and zlib and OFL and Bitstream URL: https://godotengine.org Source0: https://downloads.tuxfamily.org/godotengine/%%7Bversion%7D/%%7B?prerel:%%7Bs... Source1: https://downloads.tuxfamily.org/godotengine/%%7Bversion%7D/%%7B?prerel:%%7Bs... -# Backport from 3.3 branch to fix unbundling zlib in new fbx parser. -Patch0: 0001-fbx-Fix-include-for-zlib-that-broke-unbundling.patch -# Backports from 3.3 branch to allow (and fix) unbundling embree. -Patch1: 0001-CPU-lightmapper-environment-energy-fixes.patch -Patch2: 0001-embree-Allow-building-against-system-library-on-Linu.patch -Patch3: 0001-lightmapper-Disable-build-if-raycast-module-can-t-bu.patch -Patch4: 0001-Linux-Don-t-attempt-linking-embree3-on-non-tools-lin.patch +# https://github.com/godotengine/godot/pull/49044 +Patch0: 0001-Linux-Fix-embree-unbundling-on-aarch64.patch
# Upstream does not support those arches (for now) ExcludeArch: ppc64 ppc64le s390x @@ -75,8 +70,7 @@ BuildRequires: scons BuildRequires: python3-scons %endif
-# Embree is x86_64 only, Godot's buildsystem handles that properly. -%ifarch x86_64 +%ifarch aarch64 x86_64 BuildRequires: embree-devel %endif
@@ -221,7 +215,7 @@ by pointing to the location of the game's data package. %build # Needs to be in %%build so that system_libs stays in scope # We don't unbundle enet and minizip as they have necessary custom changes -to_unbundle="freetype libogg libpng libtheora libvorbis libvpx libwebp mbedtls miniupnpc opus pcre2 zlib zstd" +to_unbundle="embree freetype libogg libpng libtheora libvorbis libvpx libwebp mbedtls miniupnpc opus pcre2 zlib zstd"
%if %{system_bullet} to_unbundle+=" bullet" @@ -229,9 +223,6 @@ to_unbundle+=" bullet" %if %{system_libwslay} to_unbundle+=" wslay" %endif -%ifarch x86_64 -to_unbundle+=" embree" -%endif
system_libs="" for lib in $to_unbundle; do @@ -239,10 +230,10 @@ for lib in $to_unbundle; do rm -rf thirdparty/$lib done
-# Those modules require embree and oidn which are x86_64 only. Godot's own logic to disable -# them on other arches is a bit brittle when it comes to cross-compiling currently. +# The denoise module depends on OIDN which is x86_64 only (in the vendored version). +# Godot's own logic to disable it on other arches is a bit brittle when it comes to cross-compiling currently. %ifnarch x86_64 -%define disable_modules module_denoise_enabled=no module_lightmapper_cpu_enabled=no module_raycast_enabled=no +%define disable_modules module_denoise_enabled=no %endif
%define _scons scons-3 %{?_smp_mflags} "CCFLAGS=%{?build_cflags}" "LINKFLAGS=%{?build_ldflags}" $system_libs use_lto=yes use_static_cpp=no progress=no %{?disable_modules} @@ -304,6 +295,10 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/%{rdnsname}.desktop appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/%{rdnsname}.appdata.xml
%changelog +* Tue Jun 15 2021 Rémi Verschelde akien@fedoraproject.org - 3.3.2-1 +- Version 3.3.2-stable +- Embree (raycast module) now available for aarch64 + * Fri Apr 23 2021 Rémi Verschelde akien@fedoraproject.org - 3.3-1 - Version 3.3-stable - New lightmapper (x86_64 only) uses embree (system) and oidn (bundled) diff --git a/sources b/sources index 42b73dd..c203d66 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (godot-3.3-stable.tar.xz) = 953c041f2569fc858598f4e442b836157ed1069debc5fe71041a1edf76b83228d23731965aae9f7a6dbf2a66316bad29f34f06cf2c0d4fc8d444d0774d066313 -SHA512 (godot-3.3-stable.tar.xz.sha256) = 84e6c3e493d1ad3a0336de7ee55350891e01e1b7e445e61500e7460685a47544883958e713f93c884bdd45f94fedf1ca98173fe1295bcaab4b8ad1b4cdeb44d8 +SHA512 (godot-3.3.2-stable.tar.xz) = 90806b99065f8916ddda81e21d01d6e9fee0a9a778793ffb8db13accda3bbb5ebee8a98ecf0f0b7a4e3b647cfceba6674d8e234725736cd0fadc74f77e8f64d5 +SHA512 (godot-3.3.2-stable.tar.xz.sha256) = e38a22c6557bd4e60480f703497a35d07411727364b43dbdcf237e43b857edc64c282a76bc24280790ac18f0d614f984ef2523b66977c621e170c69f568e7dc7