/* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package { // See: http://go/android-license-faq default_applicable_licenses: ["hardware_google_gfxstream_license"], } genrule { name: "gfxstream_vk_entrypoints_header", srcs: [":libmesa_vulkan_xml_gfxstream"], out: ["gfxstream_vk_entrypoints.h"], tools: ["vk_entrypoints_gen_gfxstream"], cmd: "python3 $(location vk_entrypoints_gen_gfxstream) --xml " + "$(location :libmesa_vulkan_xml_gfxstream) --proto --weak --out-h " + "$(location gfxstream_vk_entrypoints.h) --out-c " + "$(genDir)/placeholder.c --prefix gfxstream_vk --beta false", } genrule { name: "gfxstream_vk_entrypoints_impl", srcs: [":libmesa_vulkan_xml_gfxstream"], out: ["gfxstream_vk_entrypoints.c"], tools: ["vk_entrypoints_gen_gfxstream"], cmd: "python3 $(location vk_entrypoints_gen_gfxstream) --xml " + "$(location :libmesa_vulkan_xml_gfxstream) --proto --weak --out-h " + "$(genDir)/gfxstream_vk_entrypoints.h --out-c " + "$(location gfxstream_vk_entrypoints.c) --prefix gfxstream_vk " + "--beta false", } cc_library_static { name: "libgfxstream_guest_vulkan_entrypoints", host_supported: true, vendor: true, defaults: [ "mesa_common_defaults_gfxstream", ], header_libs: [ "mesa_common_headers_gfxstream", ], static_libs: [ "libmesa_vulkan_util_gfxstream", ], shared_libs: [ "libcutils", ], generated_headers: [ "gfxstream_vk_entrypoints_header", ], generated_sources: [ "gfxstream_vk_entrypoints_impl", ], ldflags: [ "-Wl,-Bsymbolic", "-Wl,--gc-sections", ], export_generated_headers: [ "gfxstream_vk_entrypoints_header", ], } cc_library_headers { name: "vulkan_enc_headers", export_include_dirs: ["."], host_supported: true, vendor_available: true, } filegroup { name: "vulkan_enc_impl", srcs: [ "AndroidHardwareBuffer.cpp", "CommandBufferStagingStream.cpp", "DescriptorSetVirtualization.cpp", "func_table.cpp", "goldfish_vk_counting_guest.cpp", "goldfish_vk_deepcopy_guest.cpp", "goldfish_vk_extension_structs_guest.cpp", "goldfish_vk_marshaling_guest.cpp", "goldfish_vk_reserved_marshaling_guest.cpp", "goldfish_vk_transform_guest.cpp", "HostVisibleMemoryVirtualization.cpp", "Resources.cpp", "ResourceTracker.cpp", "Validation.cpp", "VkEncoder.cpp", "VulkanHandleMapping.cpp", "VulkanStreamGuest.cpp", "gfxstream_vk_private.cpp", ], } cc_defaults { name: "libgfxstream_guest_vulkan_encoder_defaults", host_supported: true, vendor: true, defaults: [ "libgfxstream_guest_cc_defaults", ], header_libs: [ "libgfxstream_vulkan_headers", "libOpenglSystemCommonHeaders", "libgfxstream_guest_iostream", "libnativewindow_headers", "mesa_common_headers_gfxstream", ], generated_headers: [ "vk_cmd_queue_header_gfxstream", "vk_physical_device_features_header_gfxstream", "vk_physical_device_properties_header_gfxstream", "u_format_pack_header_gfxstream", ], shared_libs: [ "libcutils", "liblog", "libOpenglCodecCommon", ], static_libs: [ "libarect", "libdrm", "libgfxstream_androidemu_static", "libGoldfishAddressSpace", "libmesa_vulkan_util_gfxstream", "libmesa_vulkan_runtime_gfxstream", "libgfxstream_guest_android", "libgfxstream_guest_vulkan_entrypoints", "libmesa_util_gfxstream", "libmesa_util_format_gfxstream", "libmesa_util_c11_gfxstream", ], cflags: [ "-DLOG_TAG=\"goldfish_vulkan\"", "-DVK_ANDROID_native_buffer", "-DVK_EXT_device_memory_report", "-DVK_GOOGLE_gfxstream", "-DVK_NO_PROTOTYPES", "-DVK_USE_PLATFORM_ANDROID_KHR", "-fstrict-aliasing", "-Werror", "-Wno-missing-field-initializers", "-Wno-unused-parameter", "-DHAVE_PTHREAD=1", "-DHAVE_TIMESPEC_GET", "-DHAVE_STRUCT_TIMESPEC", ], srcs: [ ":vulkan_enc_impl", ], export_include_dirs: [ ".", ], ldflags: [ // Mesa always adds Bsymbolic when available (see 'ld_args_bsymbolic' in Meson build). Duplicate that // behavior here. '--gc-sections' has stronger justification: this lets drivers drop // shared code unused by that specific driver (particularly relevant for Vulkan drivers). "-Wl,-Bsymbolic", "-Wl,--gc-sections", ], target: { android: { shared_libs: [ "libnativewindow", ], header_libs: [ "hwvulkan_headers", ], }, }, } cc_library_static { name: "libvulkan_enc", defaults: [ "libgfxstream_guest_vulkan_encoder_defaults", ], static_libs: [ "libplatform", ], } cc_library_static { name: "libgfxstream_guest_vulkan_encoder_with_host", defaults: [ "libgfxstream_guest_vulkan_encoder_defaults", ], static_libs: [ "libgfxstream_platform_rutabaga", ], export_static_lib_headers: [ "libgfxstream_platform_rutabaga", ], target: { host: { compile_multilib: "64", }, android: { compile_multilib: "64", }, }, }