[Mesa-dev] [PATCH 3/3] android: aco: add support for libmesa_aco

Mauro Rossi issor.oruam at gmail.com
Fri Sep 27 07:56:36 UTC 2019


Hi,
for this 3rd patch I'm in contact with John Stultz

Could you please give me both some advice on how to perform Merge Request
(newbie)

I have pushed an android_aco branch in my gitlab repo with account
issor.oruam (same used in mesa)
but I'm not able to perform Merge Request/Compare branches between source
issor.oruam/mesa branch android_aco
and the mesa/mesa branch master

Is it mandatory that I push to a mesa/mesa branch android_aco to be able to
perform MR/Compare to master?
Thanks for the info/help

Mauro

On Sun, Sep 22, 2019 at 12:00 PM Mauro Rossi <issor.oruam at gmail.com> wrote:

> Android building rules are added in src/amd/Android.compiler.mk
> libmesa_aco static library is built conditionally to radeonsi
> as done for vulkan.radv module
>
> This will prevent Android build errors for non x86 systems
>
> filter-out compiler/aco_instruction_selection_setup.cpp source,
> as already included by compiler/aco_instruction_selection.cpp
> and would cause several multiple definition linker errors
>
> NOTE: libLLVM requires AMDGPU Disassembler to build radv with aco
>
> Fixes: 93c8ebf ("aco: Initial commit of independent AMD compiler")
> Fixes: a70a998 ("radv/aco: Setup alternate path in RADV to support the
> experimental ACO compiler")
> Signed-off-by: Mauro Rossi <issor.oruam at gmail.com>
> ---
>  src/amd/Android.compiler.mk | 93 +++++++++++++++++++++++++++++++++++++
>  src/amd/Android.mk          |  1 +
>  src/amd/Makefile.sources    | 32 +++++++++++++
>  src/amd/vulkan/Android.mk   |  4 +-
>  4 files changed, 129 insertions(+), 1 deletion(-)
>  create mode 100644 src/amd/Android.compiler.mk
>
> diff --git a/src/amd/Android.compiler.mk b/src/amd/Android.compiler.mk
> new file mode 100644
> index 0000000000..a62c93d9d3
> --- /dev/null
> +++ b/src/amd/Android.compiler.mk
> @@ -0,0 +1,93 @@
> +# Copyright © 2018 Valve Corporation
> +# Copyright © 2019 Mauro Rossi issor.oruam at gmail.com
> +
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the
> "Software"),
> +# to deal in the Software without restriction, including without
> limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the
> next
> +# paragraph) shall be included in all copies or substantial portions of
> the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
> OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> DEALINGS
> +# IN THE SOFTWARE.
> +
> +LOCAL_PATH := $(call my-dir)
> +
> +include $(LOCAL_PATH)/Makefile.sources
> +
> +# ---------------------------------------
> +# Build libmesa_aco
> +# ---------------------------------------
> +
> +include $(CLEAR_VARS)
> +
> +LOCAL_MODULE := libmesa_aco
> +
> +# filter-out compiler/aco_instruction_selection_setup.cpp because
> +# it's already included by compiler/aco_instruction_selection.cpp
> +LOCAL_SRC_FILES := \
> +       $(filter-out compiler/aco_instruction_selection_setup.cpp,
> $(ACO_FILES))
> +
> +LOCAL_CFLAGS += -DFORCE_BUILD_AMDGPU   # instructs LLVM to declare
> LLVMInitializeAMDGPU* functions
> +
> +LOCAL_CPPFLAGS += -Wall -std=c++14
> +
> +# generate sources
> +LOCAL_MODULE_CLASS := STATIC_LIBRARIES
> +intermediates := $(call local-generated-sources-dir)
> +LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/,
> $(ACO_GENERATED_FILES))
> +
> +ACO_OPCODES_H_SCRIPT := $(MESA_TOP)/src/amd/compiler/aco_opcodes_h.py
> +ACO_OPCODES_CPP_SCRIPT := $(MESA_TOP)/src/amd/compiler/aco_opcodes_cpp.py
> +ACO_BUILDER_H_SCRIPT := $(MESA_TOP)/src/amd/compiler/aco_builder_h.py
> +
> +ACO_DEPS := $(MESA_TOP)/src/amd/compiler/aco_opcodes.py
> +
> +$(intermediates)/compiler/aco_opcodes.h: $(ACO_OPCODES_H_SCRIPT)
> $(ACO_DEPS)
> +       @mkdir -p $(dir $@)
> +       @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
> +       $(hide) $(MESA_PYTHON2) $(ACO_OPCODES_H_SCRIPT) > $@ || ($(RM) $@;
> false)
> +
> +$(intermediates)/compiler/aco_opcodes.cpp: $(ACO_OPCODES_CPP_SCRIPT)
> $(ACO_DEPS)
> +       @mkdir -p $(dir $@)
> +       @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
> +       $(hide) $(MESA_PYTHON2) $(ACO_OPCODES_CPP_SCRIPT) > $@ || ($(RM)
> $@; false)
> +
> +$(intermediates)/compiler/aco_builder.h: $(ACO_BUILDER_H_SCRIPT)
> $(ACO_DEPS)
> +       @mkdir -p $(dir $@)
> +       @echo "Gen Header: $(PRIVATE_MODULE) <= $(notdir $(@))"
> +       $(hide) $(MESA_PYTHON2) $(ACO_BUILDER_H_SCRIPT) > $@ || ($(RM) $@;
> false)
> +
> +LOCAL_C_INCLUDES := \
> +       $(MESA_TOP)/src/amd \
> +       $(MESA_TOP)/src/amd/common \
> +       $(MESA_TOP)/src/amd/compiler \
> +       $(MESA_TOP)/src/compiler/nir \
> +       $(MESA_TOP)/src/mapi \
> +       $(MESA_TOP)/src/mesa \
> +       $(intermediates)/compiler
> +
> +LOCAL_EXPORT_C_INCLUDE_DIRS := \
> +       $(MESA_TOP)/src/amd/compiler \
> +       $(intermediates)/compiler
> +
> +LOCAL_SHARED_LIBRARIES := \
> +       libdrm_amdgpu
> +
> +LOCAL_STATIC_LIBRARIES := \
> +       libmesa_amd_common \
> +       libmesa_nir
> +
> +$(call mesa-build-with-llvm)
> +
> +include $(MESA_COMMON_MK)
> +include $(BUILD_STATIC_LIBRARY)
> diff --git a/src/amd/Android.mk b/src/amd/Android.mk
> index e40e7da01b..c9dbeafde1 100644
> --- a/src/amd/Android.mk
> +++ b/src/amd/Android.mk
> @@ -28,5 +28,6 @@ include $(LOCAL_PATH)/Makefile.sources
>  include $(LOCAL_PATH)/Android.addrlib.mk
>  include $(LOCAL_PATH)/Android.common.mk
>  ifneq ($(filter radeonsi,$(BOARD_GPU_DRIVERS)),)
> +include $(LOCAL_PATH)/Android.compiler.mk
>  include $(LOCAL_PATH)/vulkan/Android.mk
>  endif
> diff --git a/src/amd/Makefile.sources b/src/amd/Makefile.sources
> index 8ebcd8803d..22f71bf175 100644
> --- a/src/amd/Makefile.sources
> +++ b/src/amd/Makefile.sources
> @@ -71,3 +71,35 @@ AMD_DEBUG_FILES = \
>  AMD_GENERATED_FILES = \
>         common/amdgfxregs.h \
>         common/sid_tables.h
> +
> +ACO_FILES = \
> +       compiler/aco_dead_code_analysis.cpp \
> +       compiler/aco_dominance.cpp \
> +       compiler/aco_instruction_selection.cpp \
> +       compiler/aco_instruction_selection_setup.cpp \
> +       compiler/aco_interface.cpp \
> +       compiler/aco_interface.h \
> +       compiler/aco_ir.h \
> +       compiler/aco_assembler.cpp \
> +       compiler/aco_insert_exec_mask.cpp \
> +       compiler/aco_insert_NOPs.cpp \
> +       compiler/aco_insert_waitcnt.cpp \
> +       compiler/aco_reduce_assign.cpp \
> +       compiler/aco_register_allocation.cpp \
> +       compiler/aco_live_var_analysis.cpp \
> +       compiler/aco_lower_bool_phis.cpp \
> +       compiler/aco_lower_to_hw_instr.cpp \
> +       compiler/aco_optimizer.cpp \
> +       compiler/aco_opt_value_numbering.cpp \
> +       compiler/aco_print_asm.cpp \
> +       compiler/aco_print_ir.cpp \
> +       compiler/aco_scheduler.cpp \
> +       compiler/aco_ssa_elimination.cpp \
> +       compiler/aco_spill.cpp \
> +       compiler/aco_util.h \
> +       compiler/aco_validate.cpp
> +
> +ACO_GENERATED_FILES = \
> +       compiler/aco_builder.h \
> +       compiler/aco_opcodes.cpp \
> +       compiler/aco_opcodes.h
> diff --git a/src/amd/vulkan/Android.mk b/src/amd/vulkan/Android.mk
> index d0002b8aac..f01e10f900 100644
> --- a/src/amd/vulkan/Android.mk
> +++ b/src/amd/vulkan/Android.mk
> @@ -67,6 +67,7 @@ $(call mesa-build-with-llvm)
>  LOCAL_C_INCLUDES := $(RADV_COMMON_INCLUDES)
>
>  LOCAL_STATIC_LIBRARIES := \
> +       libmesa_aco \
>         libmesa_amd_common \
>         libmesa_nir \
>         libmesa_util \
> @@ -167,7 +168,8 @@ LOCAL_WHOLE_STATIC_LIBRARIES := \
>         libmesa_amdgpu_addrlib \
>         libmesa_amd_common \
>         libmesa_radv_common \
> -       libmesa_vulkan_util
> +       libmesa_vulkan_util \
> +       libmesa_aco
>
>  LOCAL_SHARED_LIBRARIES += $(RADV_SHARED_LIBRARIES) libz libsync liblog
>
> --
> 2.20.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190927/b0ec1e76/attachment-0001.html>


More information about the mesa-dev mailing list