From 99b2c5786ca3892406e06df500b61cdd35f1a86e Mon Sep 17 00:00:00 2001 From: Xi Ruoyao Date: Wed, 23 Jul 2025 03:33:54 +0000 Subject: [PATCH] Bug 1977549: Refine -mlasx usage for LoongArch a=RyanVM To allow running Firefox on processors without LASX (for example Loongson 2K3000; note that LSX is guaranteed for LoongArch desktop processors but LASX is not), only use -mlasx on the source files those a runtime check for LASX guards. The runtime check is in SkOpts.cpp and it's enabled after removing -mlasx for this translation unit, if LASX is available at runtime the code in SkOpts_lasx.cpp will be needed to configure Skia to use LASX. Thus we need to add SkOpts_lasx.cpp into the list of sources to build. Original Revision: https://phabricator.services.mozilla.com/D257490 Differential Revision: https://phabricator.services.mozilla.com/D257825 --- gfx/skia/generate_mozbuild.py | 9 +++++++-- gfx/skia/moz.build | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gfx/skia/generate_mozbuild.py b/gfx/skia/generate_mozbuild.py index c44410310e87..d7677cfcac06 100755 --- a/gfx/skia/generate_mozbuild.py +++ b/gfx/skia/generate_mozbuild.py @@ -28,8 +28,6 @@ if CONFIG['MOZ_OPTIMIZE']: skia_opt_flags += ['-O2'] elif CONFIG['CC_TYPE'] in ('clang', 'gcc'): skia_opt_flags += ['-O3'] -if CONFIG['TARGET_CPU'] == 'loongarch64': - skia_opt_flags += ['-mlasx'] """ @@ -123,6 +121,13 @@ if CONFIG['TARGET_CPU'] == 'loongarch64': else: # gcc, clang8 for loongarch64. CXXFLAGS += ['-flax-vector-conversions'] + + SOURCES += ['skia/src/opts/SkOpts_lasx.cpp'] + SOURCES['skia/src/opts/SkOpts_lasx.cpp'].flags += skia_opt_flags + SOURCES['skia/src/core/SkBitmapProcState_opts_lasx.cpp'].flags += ['-mlasx'] + SOURCES['skia/src/core/SkBlitRow_opts_lasx.cpp'].flags += ['-mlasx'] + SOURCES['skia/src/core/SkSwizzler_opts_lasx.cpp'].flags += ['-mlasx'] + SOURCES['skia/src/opts/SkOpts_lasx.cpp'].flags += ['-mlasx'] """ import json diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build index b09617175ffc..ed6a66462be2 100644 --- a/gfx/skia/moz.build +++ b/gfx/skia/moz.build @@ -21,8 +21,6 @@ if CONFIG['MOZ_OPTIMIZE']: skia_opt_flags += ['-O2'] elif CONFIG['CC_TYPE'] in ('clang', 'gcc'): skia_opt_flags += ['-O3'] -if CONFIG['TARGET_CPU'] == 'loongarch64': - skia_opt_flags += ['-mlasx'] UNIFIED_SOURCES += [ 'skia/src/base/SkArenaAlloc.cpp', @@ -670,3 +668,10 @@ if CONFIG['TARGET_CPU'] == 'loongarch64': else: # gcc, clang8 for loongarch64. CXXFLAGS += ['-flax-vector-conversions'] + + SOURCES += ['skia/src/opts/SkOpts_lasx.cpp'] + SOURCES['skia/src/opts/SkOpts_lasx.cpp'].flags += skia_opt_flags + SOURCES['skia/src/core/SkBitmapProcState_opts_lasx.cpp'].flags += ['-mlasx'] + SOURCES['skia/src/core/SkBlitRow_opts_lasx.cpp'].flags += ['-mlasx'] + SOURCES['skia/src/core/SkSwizzler_opts_lasx.cpp'].flags += ['-mlasx'] + SOURCES['skia/src/opts/SkOpts_lasx.cpp'].flags += ['-mlasx']