| From 702d89aec2bd5a4c587988b56ec7736866a21a68 Mon Sep 17 00:00:00 2001 |
| From: Lepton Wu <lepton@chromium.org> |
| Date: Mon, 29 Jul 2019 12:37:41 -0700 |
| Subject: [PATCH] Revert "mesa: Enable asm unconditionally, now that |
| gen_matypes is gone." |
| |
| This reverts commit 20294dceebc23236e33b22578245f7e6f41b6997. |
| --- |
| Android.common.mk | 3 + |
| Android.mk | 7 +++ |
| meson.build | 94 +++++++++++++++++++---------- |
| meson_options.txt | 6 ++ |
| src/mesa/Android.libmesa_dricore.mk | 2 + |
| src/mesa/Android.libmesa_st_mesa.mk | 2 + |
| 6 files changed, 81 insertions(+), 33 deletions(-) |
| |
| diff --git a/Android.common.mk b/Android.common.mk |
| index 825b60381d0..327f13f5a38 100644 |
| --- a/Android.common.mk |
| +++ b/Android.common.mk |
| @@ -103,9 +103,12 @@ ifeq ($(shell test $(PLATFORM_SDK_VERSION) -ge 26 && echo true),true) |
| LOCAL_CFLAGS += -DHAVE_SYS_SHM_H |
| endif |
| |
| +ifeq ($(strip $(MESA_ENABLE_ASM)),true) |
| ifeq ($(TARGET_ARCH),x86) |
| LOCAL_CFLAGS += \ |
| -DUSE_X86_ASM |
| + |
| +endif |
| endif |
| ifeq ($(ARCH_ARM_HAVE_NEON),true) |
| LOCAL_CFLAGS_arm += -DUSE_ARM_ASM |
| diff --git a/Android.mk b/Android.mk |
| index 8d274e56836..5fe028c6d19 100644 |
| --- a/Android.mk |
| +++ b/Android.mk |
| @@ -83,6 +83,13 @@ endif |
| |
| $(foreach d, $(MESA_BUILD_CLASSIC) $(MESA_BUILD_GALLIUM), $(eval $(d) := true)) |
| |
| +# host and target must be the same arch to generate matypes.h |
| +ifeq ($(TARGET_ARCH),$(HOST_ARCH)) |
| +MESA_ENABLE_ASM := true |
| +else |
| +MESA_ENABLE_ASM := false |
| +endif |
| + |
| ifneq ($(filter true, $(HAVE_GALLIUM_RADEONSI)),) |
| MESA_ENABLE_LLVM := true |
| endif |
| diff --git a/meson.build b/meson.build |
| index f4c013a5319..6483970029d 100644 |
| --- a/meson.build |
| +++ b/meson.build |
| @@ -49,6 +49,7 @@ with_vulkan_icd_dir = get_option('vulkan-icd-dir') |
| with_tests = get_option('build-tests') |
| with_valgrind = get_option('valgrind') |
| with_libunwind = get_option('libunwind') |
| +with_asm = get_option('asm') |
| with_glx_read_only_text = get_option('glx-read-only-text') |
| with_glx_direct = get_option('glx-direct') |
| with_osmesa = get_option('osmesa') |
| @@ -978,41 +979,68 @@ endif |
| |
| # TODO: shared/static? Is this even worth doing? |
| |
| +# When cross compiling we generally need to turn off the use of assembly, |
| +# because mesa's assembly relies on building an executable for the host system, |
| +# and running it to get information about struct sizes. There is at least one |
| +# case of cross compiling where we can use asm, and that's x86_64 -> x86 when |
| +# host OS == build OS, since in that case the build machine can run the host's |
| +# binaries. |
| +if with_asm and meson.is_cross_build() |
| + if build_machine.system() != host_machine.system() |
| + # TODO: It may be possible to do this with an exe_wrapper (like wine). |
| + message('Cross compiling from one OS to another, disabling assembly.') |
| + with_asm = false |
| + elif not (build_machine.cpu_family().startswith('x86') and host_machine.cpu_family() == 'x86') |
| + # FIXME: Gentoo always sets -m32 for x86_64 -> x86 builds, resulting in an |
| + # x86 -> x86 cross compile. We use startswith rather than == to handle this |
| + # case. |
| + # TODO: There may be other cases where the 64 bit version of the |
| + # architecture can run 32 bit binaries (aarch64 and armv7 for example) |
| + message(''' |
| + Cross compiling to different architectures, and the host cannot run |
| + the build machine's binaries. Disabling assembly. |
| + ''') |
| + with_asm = false |
| + endif |
| +endif |
| + |
| with_asm_arch = '' |
| -if host_machine.cpu_family() == 'x86' |
| - if system_has_kms_drm or host_machine.system() == 'gnu' |
| - with_asm_arch = 'x86' |
| - pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM', |
| - '-DUSE_SSE_ASM'] |
| - |
| - if with_glx_read_only_text |
| - pre_args += ['-DGLX_X86_READONLY_TEXT'] |
| +if with_asm |
| + if host_machine.cpu_family() == 'x86' |
| + if system_has_kms_drm or host_machine.system() == 'gnu' |
| + with_asm_arch = 'x86' |
| + pre_args += ['-DUSE_X86_ASM', '-DUSE_MMX_ASM', '-DUSE_3DNOW_ASM', |
| + '-DUSE_SSE_ASM'] |
| + |
| + if with_glx_read_only_text |
| + pre_args += ['-DGLX_X86_READONLY_TEXT'] |
| + endif |
| + endif |
| + elif host_machine.cpu_family() == 'x86_64' |
| + if system_has_kms_drm |
| + with_asm_arch = 'x86_64' |
| + pre_args += ['-DUSE_X86_64_ASM'] |
| + endif |
| + elif host_machine.cpu_family() == 'arm' |
| + if system_has_kms_drm |
| + with_asm_arch = 'arm' |
| + pre_args += ['-DUSE_ARM_ASM'] |
| + endif |
| + elif host_machine.cpu_family() == 'aarch64' |
| + if system_has_kms_drm |
| + with_asm_arch = 'aarch64' |
| + pre_args += ['-DUSE_AARCH64_ASM'] |
| + endif |
| + elif host_machine.cpu_family() == 'sparc64' |
| + if system_has_kms_drm |
| + with_asm_arch = 'sparc' |
| + pre_args += ['-DUSE_SPARC_ASM'] |
| + endif |
| + elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little' |
| + if system_has_kms_drm |
| + with_asm_arch = 'ppc64le' |
| + pre_args += ['-DUSE_PPC64LE_ASM'] |
| endif |
| - endif |
| -elif host_machine.cpu_family() == 'x86_64' |
| - if system_has_kms_drm |
| - with_asm_arch = 'x86_64' |
| - pre_args += ['-DUSE_X86_64_ASM'] |
| - endif |
| -elif host_machine.cpu_family() == 'arm' |
| - if system_has_kms_drm |
| - with_asm_arch = 'arm' |
| - pre_args += ['-DUSE_ARM_ASM'] |
| - endif |
| -elif host_machine.cpu_family() == 'aarch64' |
| - if system_has_kms_drm |
| - with_asm_arch = 'aarch64' |
| - pre_args += ['-DUSE_AARCH64_ASM'] |
| - endif |
| -elif host_machine.cpu_family() == 'sparc64' |
| - if system_has_kms_drm |
| - with_asm_arch = 'sparc' |
| - pre_args += ['-DUSE_SPARC_ASM'] |
| - endif |
| -elif host_machine.cpu_family().startswith('ppc64') and host_machine.endian() == 'little' |
| - if system_has_kms_drm |
| - with_asm_arch = 'ppc64le' |
| - pre_args += ['-DUSE_PPC64LE_ASM'] |
| endif |
| endif |
| |
| diff --git a/meson_options.txt b/meson_options.txt |
| index b768c15053c..5040284c3bc 100644 |
| --- a/meson_options.txt |
| +++ b/meson_options.txt |
| @@ -227,6 +227,12 @@ option( |
| value : false, |
| description : 'Enable GLVND support.' |
| ) |
| +option( |
| + 'asm', |
| + type : 'boolean', |
| + value : true, |
| + description : 'Build assembly code if possible' |
| +) |
| option( |
| 'glx-read-only-text', |
| type : 'boolean', |
| diff --git a/src/mesa/Android.libmesa_dricore.mk b/src/mesa/Android.libmesa_dricore.mk |
| index 8eb6aabe836..792117767b4 100644 |
| --- a/src/mesa/Android.libmesa_dricore.mk |
| +++ b/src/mesa/Android.libmesa_dricore.mk |
| @@ -39,9 +39,11 @@ LOCAL_MODULE_CLASS := STATIC_LIBRARIES |
| LOCAL_SRC_FILES := \ |
| $(MESA_FILES) |
| |
| +ifeq ($(strip $(MESA_ENABLE_ASM)),true) |
| ifeq ($(TARGET_ARCH),x86) |
| LOCAL_SRC_FILES += $(X86_FILES) |
| endif # x86 |
| +endif # MESA_ENABLE_ASM |
| |
| ifeq ($(ARCH_X86_HAVE_SSE4_1),true) |
| LOCAL_WHOLE_STATIC_LIBRARIES := \ |
| diff --git a/src/mesa/Android.libmesa_st_mesa.mk b/src/mesa/Android.libmesa_st_mesa.mk |
| index 16153a3c5bd..ddfd03059c5 100644 |
| --- a/src/mesa/Android.libmesa_st_mesa.mk |
| +++ b/src/mesa/Android.libmesa_st_mesa.mk |
| @@ -42,9 +42,11 @@ LOCAL_GENERATED_SOURCES := \ |
| $(MESA_GEN_GLSL_H) \ |
| $(MESA_GEN_NIR_H) |
| |
| +ifeq ($(strip $(MESA_ENABLE_ASM)),true) |
| ifeq ($(TARGET_ARCH),x86) |
| LOCAL_SRC_FILES += $(X86_FILES) |
| endif # x86 |
| +endif # MESA_ENABLE_ASM |
| |
| ifeq ($(ARCH_X86_HAVE_SSE4_1),true) |
| LOCAL_WHOLE_STATIC_LIBRARIES := \ |
| -- |
| 2.22.0.709.g102302147b-goog |
| |