505 lines
16 KiB
Text
505 lines
16 KiB
Text
// Mesa 3-D graphics library
|
|
//
|
|
// Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
|
|
// Copyright (C) 2010-2011 LunarG Inc.
|
|
//
|
|
// 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 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.
|
|
|
|
// *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS. PLEASE
|
|
// CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
|
|
// DEPENDING ON IT IN YOUR PROJECT. ***
|
|
|
|
package {
|
|
default_applicable_licenses: ["external_mesa3d_license"],
|
|
}
|
|
|
|
// Added automatically by a large-scale-change that took the approach of
|
|
// 'apply every license found to every target'. While this makes sure we respect
|
|
// every license restriction, it may not be entirely correct.
|
|
//
|
|
// e.g. GPL in an MIT project might only apply to the contrib/ directory.
|
|
//
|
|
// Please consider splitting the single license below into multiple licenses,
|
|
// taking care not to lose any license_kind information, and overriding the
|
|
// default license using the 'licenses: [...]' property on targets as needed.
|
|
//
|
|
// For unused files, consider creating a 'fileGroup' with "//visibility:private"
|
|
// to attach the license to, and including a comment whether the files may be
|
|
// used in the current project.
|
|
// See: http://go/android-license-faq
|
|
license {
|
|
name: "external_mesa3d_license",
|
|
visibility: [":__subpackages__"],
|
|
license_kinds: [
|
|
"SPDX-license-identifier-Apache-2.0",
|
|
"SPDX-license-identifier-BSD",
|
|
"SPDX-license-identifier-BSL-1.0",
|
|
"SPDX-license-identifier-GPL",
|
|
"SPDX-license-identifier-GPL-2.0",
|
|
"SPDX-license-identifier-ISC",
|
|
"SPDX-license-identifier-MIT",
|
|
"SPDX-license-identifier-Unlicense",
|
|
"legacy_by_exception_only", // by exception only
|
|
"legacy_notice",
|
|
"legacy_unencumbered",
|
|
],
|
|
license_text: [
|
|
"LICENSE",
|
|
],
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "mesa_version_defaults",
|
|
cflags: ["-DPACKAGE_VERSION=\"25.0.4\""],
|
|
}
|
|
|
|
python_binary_host {
|
|
name: "git_sha1_gen",
|
|
main: "bin/git_sha1_gen.py",
|
|
srcs: [
|
|
"bin/git_sha1_gen.py",
|
|
],
|
|
}
|
|
|
|
genrule {
|
|
name: "git_sha1_header",
|
|
out: ["git_sha1.h"],
|
|
tools: ["git_sha1_gen"],
|
|
cmd: "MESA_GIT_SHA1_OVERRIDE=(git-l33t9876) python3 $(location git_sha1_gen) " +
|
|
"--output $(location git_sha1.h)",
|
|
}
|
|
|
|
cc_defaults {
|
|
name: "mesa_flagged_defaults",
|
|
cflags: select(soong_config_variable("gfxstream", "mesa3d_platforms"), {
|
|
// Android surfaceless build
|
|
"none": [
|
|
"-UANDROID",
|
|
"-U__ANDROID__",
|
|
"-DLINUX_GUEST_BUILD",
|
|
],
|
|
// The default when variable is not set is Android
|
|
default: [
|
|
"-DVK_USE_PLATFORM_ANDROID_KHR",
|
|
],
|
|
}),
|
|
}
|
|
|
|
cc_library_headers {
|
|
name: "mesa_common_headers",
|
|
defaults: ["mesa_flagged_defaults"],
|
|
vendor_available: true,
|
|
host_supported: true,
|
|
export_include_dirs: [
|
|
"src",
|
|
"include",
|
|
],
|
|
visibility: [":__subpackages__"],
|
|
}
|
|
|
|
// This needs to be kept in sync with Android.common.mk
|
|
cc_defaults {
|
|
name: "mesa_common_defaults",
|
|
defaults: [
|
|
"mesa_version_defaults",
|
|
"mesa_flagged_defaults",
|
|
],
|
|
// uncomment to keep the debug symbols
|
|
// strip: { none: true, },
|
|
header_libs: ["mesa_common_headers"],
|
|
cflags: [
|
|
"-Wno-error",
|
|
"-Werror=incompatible-pointer-types",
|
|
"-Wno-unused-parameter",
|
|
"-Wno-pointer-arith",
|
|
"-Wno-missing-field-initializers",
|
|
"-Wno-initializer-overrides",
|
|
"-Wno-mismatched-tags",
|
|
// PACKAGE_VERSION is in mesa_version_defaults
|
|
"-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"",
|
|
// XXX: The following __STDC_*_MACROS defines should not be needed.
|
|
// It's likely due to a bug elsewhere, but let's temporarily add them
|
|
// here to fix the radeonsi build.
|
|
"-DENABLE_SHADER_CACHE",
|
|
"-D__STDC_CONSTANT_MACROS",
|
|
"-D__STDC_LIMIT_MACROS",
|
|
"-DHAVE___BUILTIN_EXPECT",
|
|
"-DHAVE___BUILTIN_FFS",
|
|
"-DHAVE___BUILTIN_FFSLL",
|
|
"-DHAVE_DLFCN_H",
|
|
"-DHAVE_FUNC_ATTRIBUTE_FLATTEN",
|
|
"-DHAVE_FUNC_ATTRIBUTE_UNUSED",
|
|
"-DHAVE_FUNC_ATTRIBUTE_FORMAT",
|
|
"-DHAVE_FUNC_ATTRIBUTE_PACKED",
|
|
"-DHAVE_FUNC_ATTRIBUTE_ALIAS",
|
|
"-DHAVE_FUNC_ATTRIBUTE_NORETURN",
|
|
"-DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL",
|
|
"-DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT",
|
|
"-DHAVE___BUILTIN_CTZ",
|
|
"-DHAVE___BUILTIN_POPCOUNT",
|
|
"-DHAVE___BUILTIN_POPCOUNTLL",
|
|
"-DHAVE___BUILTIN_CLZ",
|
|
"-DHAVE___BUILTIN_CLZLL",
|
|
"-DHAVE___BUILTIN_UNREACHABLE",
|
|
"-DHAVE_PERFETTO",
|
|
"-DANDROID_LIBPERFETTO",
|
|
"-DHAVE_PTHREAD=1",
|
|
"-DHAVE_DLADDR",
|
|
"-DHAVE_DL_ITERATE_PHDR",
|
|
"-DHAVE_LINUX_FUTEX_H",
|
|
"-DHAVE_ENDIAN_H",
|
|
"-DMAJOR_IN_SYSMACROS",
|
|
"-DMESA_DEBUG=0",
|
|
"-fvisibility=hidden",
|
|
"-fno-math-errno",
|
|
"-fno-trapping-math",
|
|
"-Werror",
|
|
"-Wno-#warnings",
|
|
"-Wno-asm-operand-widths",
|
|
"-Wno-cast-calling-convention",
|
|
"-Wno-constant-logical-operand",
|
|
"-Wno-enum-conversion",
|
|
"-Wno-format",
|
|
"-Wno-gnu-variable-sized-type-not-at-end",
|
|
"-Wno-implicit-fallthrough",
|
|
"-Wno-implicit-int",
|
|
"-Wno-incompatible-pointer-types",
|
|
"-Wno-missing-braces",
|
|
"-Wno-overloaded-virtual",
|
|
"-Wno-self-assign",
|
|
"-Wno-shift-negative-value",
|
|
"-Wno-sign-compare",
|
|
"-Wno-sometimes-uninitialized",
|
|
"-Wno-switch",
|
|
"-Wno-typedef-redefinition",
|
|
"-Wno-uninitialized",
|
|
"-Wno-implicit-const-int-float-conversion",
|
|
"-Wno-sync-alignment",
|
|
"-Wno-implicit-function-declaration",
|
|
"-Wno-constant-conversion",
|
|
"-DHAVE_TIMESPEC_GET",
|
|
"-DHAVE_STRUCT_TIMESPEC",
|
|
"-DMESA_LLVM_VERSION_STRING=\"16.0.0\"",
|
|
"-DDRAW_LLVM_AVAILABLE=1",
|
|
"-DHAVE_LIBDRM",
|
|
"-DHAVE_COMPRESSION",
|
|
"-DHAVE_ZSTD",
|
|
],
|
|
c_std: "c11",
|
|
shared_libs: ["libdrm"],
|
|
cppflags: [
|
|
"-D__STDC_CONSTANT_MACROS",
|
|
"-D__STDC_FORMAT_MACROS",
|
|
"-D__STDC_LIMIT_MACROS",
|
|
"-Wno-error=non-virtual-dtor",
|
|
"-Wno-non-virtual-dtor",
|
|
],
|
|
arch: {
|
|
arm: {
|
|
cflags: ["-DNO_FORMAT_ASM"],
|
|
},
|
|
arm64: {
|
|
cflags: ["-DNO_FORMAT_ASM"],
|
|
},
|
|
},
|
|
multilib: {
|
|
lib32: {
|
|
cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib/dri\""],
|
|
},
|
|
lib64: {
|
|
cflags: ["-DDEFAULT_DRIVER_DIR=\"/vendor/lib64/dri\""],
|
|
},
|
|
},
|
|
product_variables: {
|
|
platform_sdk_version: {
|
|
cflags: ["-DANDROID_API_LEVEL=%d"],
|
|
},
|
|
},
|
|
target: {
|
|
host: {
|
|
cflags: [
|
|
"-D_GNU_SOURCE",
|
|
"-DHAVE_SECURE_GETENV",
|
|
],
|
|
},
|
|
android: {
|
|
cflags: [
|
|
"-DHAVE_REALLOCARRAY",
|
|
],
|
|
},
|
|
linux_musl: {
|
|
cflags: [
|
|
"-DHAVE_REALLOCARRAY",
|
|
],
|
|
},
|
|
},
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Panfrost-specific defaults
|
|
// ---------------------------------------------------------------------------
|
|
|
|
cc_defaults {
|
|
name: "mesa3d_panfrost_defaults",
|
|
defaults: ["mesa_common_defaults"],
|
|
cflags: [
|
|
"-DHAVE_PANFROST",
|
|
"-DGALLIUM_PANFROST",
|
|
],
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Shared libraries for gallium DRI driver (Panfrost)
|
|
// ---------------------------------------------------------------------------
|
|
|
|
cc_library_static {
|
|
name: "mesa3d_panfrost_src_gallium_winsys_kmsro",
|
|
vendor: true,
|
|
defaults: ["mesa_common_defaults"],
|
|
header_libs: [
|
|
"mesa_gallium_headers",
|
|
],
|
|
srcs: [
|
|
"src/gallium/winsys/kmsro/drm/kmsro_drm_winsys.c",
|
|
],
|
|
}
|
|
|
|
cc_library_shared {
|
|
name: "libgallium_dri",
|
|
vendor: true,
|
|
stem: "libgallium_dri",
|
|
defaults: [
|
|
"mesa_common_defaults",
|
|
],
|
|
header_libs: [
|
|
"mesa_util_headers",
|
|
"mesa_gallium_headers",
|
|
"mesa_gallium_auxiliary_headers",
|
|
"mesa_gallium_winsys_headers",
|
|
"mesa_loader_headers",
|
|
"mesa_mesa_headers",
|
|
"mesa_panfrost_headers",
|
|
"mesa_panfrost_gallium_headers",
|
|
],
|
|
generated_headers: [
|
|
"git_sha1_header",
|
|
],
|
|
cflags: [
|
|
"-DGALLIUM_KMSRO",
|
|
"-DGALLIUM_PANFROST",
|
|
],
|
|
ldflags: [
|
|
"-Wl,--build-id=sha1",
|
|
],
|
|
srcs: [
|
|
"src/gallium/targets/dri/dri_target.c",
|
|
],
|
|
shared_libs: [
|
|
"libcutils",
|
|
"libdrm",
|
|
"libhardware",
|
|
"liblog",
|
|
"libnativewindow",
|
|
"libsync",
|
|
"libz",
|
|
],
|
|
whole_static_libs: [
|
|
"mesa3d_panfrost_src_gallium_drivers_panfrost",
|
|
"mesa3d_panfrost_src_gallium_winsys_panfrost",
|
|
],
|
|
static_libs: [
|
|
"mesa3d_panfrost_src_gallium_frontends_dri",
|
|
"mesa3d_panfrost_src_gallium_winsys_kmsro",
|
|
"mesa3d_panfrost_src_panfrost_shared",
|
|
"mesa3d_panfrost_src_panfrost_genxml",
|
|
"mesa_pipe_loader_static",
|
|
"mesa_gallium",
|
|
"mesa_util",
|
|
"mesa_nir",
|
|
"mesa_compiler",
|
|
"mesa_glsl",
|
|
"mesa_spirv",
|
|
"mesa_loader",
|
|
"mesa_util_format",
|
|
"mesa_blake3",
|
|
"mesa_wsw",
|
|
"mesa_ws_null",
|
|
"libperfetto_client_experimental",
|
|
"libLLVM16_swiftshader",
|
|
],
|
|
target: {
|
|
android: {
|
|
header_libs: [
|
|
"libnativebase_headers",
|
|
],
|
|
},
|
|
},
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Vulkan - PanVK driver
|
|
// ---------------------------------------------------------------------------
|
|
|
|
cc_defaults {
|
|
name: "mesa3d_panfrost_panvk_defaults",
|
|
defaults: ["mesa_common_defaults"],
|
|
cflags: [
|
|
"-DVK_USE_PLATFORM_ANDROID_KHR",
|
|
],
|
|
}
|
|
|
|
cc_library_shared {
|
|
name: "vulkan.panfrost",
|
|
vendor: true,
|
|
soc_specific: true,
|
|
relative_install_path: "hw",
|
|
stem: "vulkan.panfrost",
|
|
|
|
defaults: [
|
|
"mesa3d_panfrost_panvk_defaults",
|
|
],
|
|
|
|
srcs: [
|
|
"src/panfrost/vulkan/panvk_buffer.c",
|
|
"src/panfrost/vulkan/panvk_cmd_pool.c",
|
|
"src/panfrost/vulkan/panvk_device_memory.c",
|
|
"src/panfrost/vulkan/panvk_host_copy.c",
|
|
"src/panfrost/vulkan/panvk_image.c",
|
|
"src/panfrost/vulkan/panvk_instance.c",
|
|
"src/panfrost/vulkan/panvk_mempool.c",
|
|
"src/panfrost/vulkan/panvk_physical_device.c",
|
|
"src/panfrost/vulkan/panvk_priv_bo.c",
|
|
"src/panfrost/vulkan/panvk_utrace.c",
|
|
"src/panfrost/vulkan/panvk_utrace_perfetto.cc",
|
|
"src/panfrost/vulkan/panvk_wsi.c",
|
|
"src/panfrost/meson_generated/src/panfrost/vulkan/panvk_entrypoints.c",
|
|
"src/panfrost/meson_generated/src/panfrost/vulkan/panvk_tracepoints.c",
|
|
],
|
|
|
|
ldflags: [
|
|
"-Wl,--build-id=sha1",
|
|
"-Wl,-Bsymbolic",
|
|
],
|
|
|
|
shared_libs: [
|
|
"libcutils",
|
|
"libdrm",
|
|
"libhardware",
|
|
"liblog",
|
|
"libnativewindow",
|
|
"libsync",
|
|
"libui",
|
|
"libz",
|
|
],
|
|
|
|
static_libs: [
|
|
"libperfetto_client_experimental",
|
|
"mesa3d_panfrost_src_panfrost_shared",
|
|
"mesa3d_panfrost_src_panfrost_genxml",
|
|
"mesa3d_panfrost_src_panfrost_util",
|
|
"mesa3d_panfrost_src_panfrost_lib",
|
|
"mesa3d_panfrost_src_panfrost_lib_kmod",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v4",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v5",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v6",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v7",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v9",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v10",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v12",
|
|
"mesa3d_panfrost_src_panfrost_lib_arch_v13",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v5",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v6",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v7",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v9",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v10",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v12",
|
|
"mesa3d_panfrost_src_panfrost_lib_format_v13",
|
|
"mesa3d_panfrost_src_panfrost_midgard",
|
|
"mesa3d_panfrost_src_panfrost_compiler",
|
|
"mesa3d_panfrost_src_panfrost_perf",
|
|
"mesa_vulkan_util",
|
|
"mesa_vulkan_runtime",
|
|
"mesa_vulkan_wsi",
|
|
"mesa_util",
|
|
"mesa_util_c11",
|
|
"mesa_util_format",
|
|
"mesa_blake3",
|
|
"mesa_compiler",
|
|
"mesa_nir",
|
|
"mesa_glsl",
|
|
"mesa_spirv",
|
|
],
|
|
|
|
whole_static_libs: [
|
|
"mesa3d_panfrost_src_panfrost_vulkan_v6",
|
|
"mesa3d_panfrost_src_panfrost_vulkan_v7",
|
|
"mesa3d_panfrost_src_panfrost_vulkan_v10",
|
|
"mesa3d_panfrost_src_panfrost_vulkan_v12",
|
|
"mesa3d_panfrost_src_panfrost_vulkan_v13",
|
|
"mesa_vulkan_runtime",
|
|
"mesa_vulkan_wsi",
|
|
],
|
|
|
|
local_include_dirs: [
|
|
"include",
|
|
"include/android_stub",
|
|
"src",
|
|
"src/compiler",
|
|
"src/compiler/nir",
|
|
"src/panfrost",
|
|
"src/panfrost/compiler",
|
|
"src/panfrost/genxml",
|
|
"src/panfrost/lib",
|
|
"src/panfrost/libpan",
|
|
"src/panfrost/midgard",
|
|
"src/panfrost/shared",
|
|
"src/panfrost/vulkan",
|
|
"src/panfrost/vulkan/bifrost",
|
|
"src/panfrost/vulkan/jm",
|
|
"src/panfrost/vulkan/csf",
|
|
"src/vulkan/runtime",
|
|
"src/vulkan/runtime/bvh",
|
|
"src/vulkan/util",
|
|
"src/vulkan/wsi",
|
|
"src/panfrost/meson_generated/src",
|
|
"src/panfrost/meson_generated/src/compiler",
|
|
"src/panfrost/meson_generated/src/compiler/nir",
|
|
"src/panfrost/meson_generated/src/compiler/spirv",
|
|
"src/panfrost/meson_generated/src/panfrost",
|
|
"src/panfrost/meson_generated/src/panfrost/compiler",
|
|
"src/panfrost/meson_generated/src/panfrost/genxml",
|
|
"src/panfrost/meson_generated/src/panfrost/libpan",
|
|
"src/panfrost/meson_generated/src/panfrost/midgard",
|
|
"src/panfrost/meson_generated/src/panfrost/vulkan",
|
|
"src/panfrost/meson_generated/src/util",
|
|
"src/panfrost/meson_generated/src/util/format",
|
|
"src/panfrost/meson_generated/src/vulkan/runtime",
|
|
"src/panfrost/meson_generated/src/vulkan/util",
|
|
"src/panfrost/meson_generated/src/vulkan/wsi",
|
|
],
|
|
|
|
target: {
|
|
android: {
|
|
header_libs: [
|
|
"libnativebase_headers",
|
|
],
|
|
},
|
|
},
|
|
}
|
|
|