blob: 9b5b69779d357438f9d1aaa48b8689041cc12947 [file] [log] [blame]
# 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.
import("//build/python/python_action.gni")
import("//build/python/python_binary.gni")
import("mesa-gn/mesa.gni")
config("common_config") {
defines = [
"LOG_TAG=\"gfxstream_vulkan\"",
"GOLDFISH_NO_GL",
"VK_GFXSTREAM_STRUCTURE_TYPE_EXT",
"VK_USE_PLATFORM_FUCHSIA",
"PAGE_SIZE=4096",
]
if (is_debug) {
defines += [ "DEBUG=1" ]
}
include_dirs = [
"../common/opengl/include",
"android-emu",
"GoldfishAddressSpace/include",
"iostream/include",
"gralloc_cb/include",
"qemupipe/include",
"qemupipe/include-types",
"OpenglCodecCommon",
"OpenglCodecCommon/include",
"OpenglSystemCommon",
"renderControl_enc",
"vulkan_enc",
"$mesa_source_root/include",
"platform/include",
]
if (target_os == "fuchsia") {
include_dirs += [ "fuchsia/include" ]
}
cflags_cc = [
"-Wno-conversion",
"-Wno-newline-eof",
"-Wno-pessimizing-move",
"-Wno-sign-compare",
"-Wno-unused-function",
"-Wno-unused-value",
"-Wno-unused-variable",
"-Wno-unused-but-set-parameter",
"-Wno-unused-but-set-variable",
]
}
python_binary("vk_entrypoints_gen_bin") {
main_source = "$mesa_source_root/src/vulkan/util/vk_entrypoints_gen.py"
sources = [
"$mesa_source_root/src/vulkan/util/vk_entrypoints.py",
"$mesa_source_root/src/vulkan/util/vk_extensions.py",
]
deps = [ "//third_party/mako" ]
}
config("gfxstream_vk_entrypoints_config") {
include_dirs = [ "$target_gen_dir" ]
}
python_action("gfxstream_vk_entrypoints") {
public_configs = [ ":gfxstream_vk_entrypoints_config" ]
binary_label = ":vk_entrypoints_gen_bin"
sources = [ mesa_vk_xml ]
h_file = "$target_gen_dir/gfxstream_vk_entrypoints.h"
c_file = "$target_gen_dir/gfxstream_vk_entrypoints.c"
outputs = [
h_file,
c_file,
]
args = [
"--xml",
rebase_path(mesa_vk_xml, root_build_dir),
"--proto",
"--weak",
"--out-h",
rebase_path(h_file, root_build_dir),
"--out-c",
rebase_path(c_file, root_build_dir),
"--prefix",
"gfxstream_vk",
"--beta",
"false",
]
}
# These sources require access to the Fuchsia goldfish protocols.
source_set("goldfish_srcs") {
configs += [ ":common_config" ]
sources = [
"vulkan/gfxstream_vk_fuchsia.cpp",
"vulkan_enc/ResourceTracker.cpp",
"vulkan_enc/ResourceTracker.h",
]
public_deps = [
"$mesa_build_root/src/vulkan/runtime",
"$mesa_build_root/src/vulkan/util",
"//sdk/fidl/fuchsia.hardware.goldfish:fuchsia.hardware.goldfish_cpp",
"//sdk/fidl/fuchsia.logger:fuchsia.logger_cpp",
"//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
"//sdk/lib/syslog/structured_backend",
"//third_party/Vulkan-Headers:vulkan_headers",
"//zircon/system/ulib/async:async-cpp",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/trace:trace-with-static-engine",
"//zircon/system/ulib/trace-provider:trace-provider-with-static-engine",
"//zircon/system/ulib/zx",
"//zircon/system/ulib/zxio",
]
deps = [ ":gfxstream_vk_entrypoints" ]
defines = [
"QEMU_PIPE_PATH=\"/loader-gpu-devices/class/goldfish-pipe/000\"",
"GOLDFISH_ADDRESS_SPACE_DEVICE_NAME=\"/loader-gpu-devices/class/goldfish-address-space/000\"",
]
}
loadable_module("libvulkan_gfxstream") {
configs += [ ":common_config" ]
deps = [
":gfxstream_vk_entrypoints",
"$mesa_build_root/src/vulkan/runtime",
]
sources = [
"$target_gen_dir/gfxstream_vk_entrypoints.c",
"GoldfishAddressSpace/AddressSpaceStream.cpp",
"GoldfishAddressSpace/VirtioGpuAddressSpaceStream.cpp",
"OpenglCodecCommon/ChecksumCalculator.cpp",
"OpenglCodecCommon/ChecksumCalculator.h",
"OpenglCodecCommon/glUtils.cpp",
"OpenglCodecCommon/glUtils.h",
"OpenglSystemCommon/HostConnection.cpp",
"OpenglSystemCommon/HostConnection.h",
"OpenglSystemCommon/ProcessPipe.cpp",
"OpenglSystemCommon/ProcessPipe.h",
"OpenglSystemCommon/QemuPipeStream.cpp",
"OpenglSystemCommon/QemuPipeStream.h",
"OpenglSystemCommon/ThreadInfo.cpp",
"OpenglSystemCommon/ThreadInfo.h",
"OpenglSystemCommon/VirtioGpuPipeStream.cpp",
"android-emu/aemu/base/AlignedBuf.cpp",
"android-emu/aemu/base/AlignedBuf.h",
"android-emu/aemu/base/Allocator.h",
"android-emu/aemu/base/AndroidHealthMonitor.cpp",
"android-emu/aemu/base/AndroidHealthMonitor.h",
"android-emu/aemu/base/AndroidHealthMonitorConsumer.h",
"android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.cpp",
"android-emu/aemu/base/AndroidHealthMonitorConsumerBasic.h",
"android-emu/aemu/base/AndroidSubAllocator.cpp",
"android-emu/aemu/base/AndroidSubAllocator.h",
"android-emu/aemu/base/BumpPool.h",
"android-emu/aemu/base/Pool.cpp",
"android-emu/aemu/base/Pool.h",
"android-emu/aemu/base/Process.cpp",
"android-emu/aemu/base/Process.h",
"android-emu/aemu/base/Tracing.cpp",
"android-emu/aemu/base/Tracing.h",
"android-emu/aemu/base/files/MemStream.cpp",
"android-emu/aemu/base/files/MemStream.h",
"android-emu/aemu/base/files/Stream.cpp",
"android-emu/aemu/base/files/Stream.h",
"android-emu/aemu/base/files/StreamSerializing.cpp",
"android-emu/aemu/base/files/StreamSerializing.h",
"android-emu/aemu/base/fit/Defer.h",
"android-emu/aemu/base/fit/Function.h",
"android-emu/aemu/base/fit/FunctionInternal.h",
"android-emu/aemu/base/fit/Nullable.h",
"android-emu/aemu/base/fit/ThreadChecker.h",
"android-emu/aemu/base/fit/ThreadSafety.h",
"android-emu/aemu/base/fit/UtilityInternal.h",
"android-emu/aemu/base/ring_buffer.c",
"android-emu/aemu/base/synchronization/AndroidConditionVariable.h",
"android-emu/aemu/base/synchronization/AndroidLock.h",
"android-emu/aemu/base/synchronization/AndroidMessageChannel.cpp",
"android-emu/aemu/base/synchronization/AndroidMessageChannel.h",
"android-emu/aemu/base/testing/TestClock.h",
"android-emu/aemu/base/threads/AndroidFunctorThread.cpp",
"android-emu/aemu/base/threads/AndroidFunctorThread.h",
"android-emu/aemu/base/threads/AndroidThread.h",
"android-emu/aemu/base/threads/AndroidThreadStore.h",
"android-emu/aemu/base/threads/AndroidThreadTypes.h",
"android-emu/aemu/base/threads/AndroidThread_pthread.cpp",
"android-emu/aemu/base/threads/AndroidWorkPool.cpp",
"android-emu/aemu/base/threads/AndroidWorkPool.h",
"gralloc_cb/include/gralloc_cb_bp.h",
"platform/VirtGpu.cpp",
"platform/include/VirtGpu.h",
"platform/stub/StubSync.cpp",
"platform/stub/StubVirtGpuBlob.cpp",
"platform/stub/StubVirtGpuBlobMapping.cpp",
"platform/stub/StubVirtGpuDevice.cpp",
"qemupipe/include-types/qemu_pipe_types_bp.h",
"qemupipe/include/qemu_pipe_bp.h",
"qemupipe/qemu_pipe_common.cpp",
"qemupipe/qemu_pipe_guest.cpp",
"renderControl_enc/renderControl_enc.cpp",
"renderControl_enc/renderControl_enc.h",
"vulkan/gfxstream_vk_device.cpp",
"vulkan/gfxstream_vk_wsi_stub.cpp",
"vulkan_enc/CommandBufferStagingStream.cpp",
"vulkan_enc/CommandBufferStagingStream.h",
"vulkan_enc/DescriptorSetVirtualization.cpp",
"vulkan_enc/DescriptorSetVirtualization.h",
"vulkan_enc/HostVisibleMemoryVirtualization.cpp",
"vulkan_enc/HostVisibleMemoryVirtualization.h",
"vulkan_enc/Resources.cpp",
"vulkan_enc/Resources.h",
"vulkan_enc/Validation.cpp",
"vulkan_enc/Validation.h",
"vulkan_enc/VkEncoder.cpp",
"vulkan_enc/VkEncoder.h",
"vulkan_enc/VulkanHandleMapping.cpp",
"vulkan_enc/VulkanHandleMapping.h",
"vulkan_enc/VulkanStreamGuest.cpp",
"vulkan_enc/VulkanStreamGuest.h",
"vulkan_enc/func_table.cpp",
"vulkan_enc/func_table.h",
"vulkan_enc/gfxstream_vk_private.cpp",
"vulkan_enc/gfxstream_vk_private.h",
"vulkan_enc/goldfish_vk_counting_guest.cpp",
"vulkan_enc/goldfish_vk_counting_guest.h",
"vulkan_enc/goldfish_vk_deepcopy_guest.cpp",
"vulkan_enc/goldfish_vk_deepcopy_guest.h",
"vulkan_enc/goldfish_vk_extension_structs_guest.cpp",
"vulkan_enc/goldfish_vk_extension_structs_guest.h",
"vulkan_enc/goldfish_vk_marshaling_guest.cpp",
"vulkan_enc/goldfish_vk_marshaling_guest.h",
"vulkan_enc/goldfish_vk_reserved_marshaling_guest.cpp",
"vulkan_enc/goldfish_vk_reserved_marshaling_guest.h",
"vulkan_enc/goldfish_vk_transform_guest.cpp",
"vulkan_enc/goldfish_vk_transform_guest.h",
"vulkan_enc/vulkan_gfxstream.h",
"vulkan_enc/vulkan_gfxstream_structure_type.h",
]
if (target_os == "fuchsia") {
sources -= [
"OpenglSystemCommon/QemuPipeStream.cpp",
"platform/stub/StubVirtGpuBlob.cpp",
"platform/stub/StubVirtGpuBlobMapping.cpp",
"platform/stub/StubVirtGpuDevice.cpp",
"qemupipe/qemu_pipe_common.cpp",
"qemupipe/qemu_pipe_guest.cpp",
]
sources += [
"OpenglSystemCommon/TraceProviderFuchsia.cpp",
"OpenglSystemCommon/TraceProviderFuchsia.h",
"fuchsia/fuchsia_stdio.cc",
"fuchsia/port.cc",
"fuchsia/service_connector.cc",
"platform/fuchsia/FuchsiaVirtGpuBlob.cpp",
"platform/fuchsia/FuchsiaVirtGpuBlobMapping.cpp",
"platform/fuchsia/FuchsiaVirtGpuDevice.cpp",
"platform/fuchsia/os_dirent_fuchsia.cpp",
]
include_dirs = [
"fuchsia/include",
"platform/include",
"//third_party/Vulkan-Headers/include",
]
deps += [
":goldfish_srcs",
"//sdk/fidl/fuchsia.logger:fuchsia.logger_cpp",
"//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_cpp",
"//src/graphics/lib/magma/src/libmagma",
"//src/zircon/lib/zircon",
"//zircon/system/ulib/trace:trace-with-static-engine",
"//zircon/system/ulib/zx",
"//zircon/system/ulib/zxio",
]
public_deps = [ "//third_party/Vulkan-Headers:vulkan_headers" ]
# Vulkan ICDs on Fuchsia are only allowed to depend on (parts of) libc
# and libzircon, and no other shared libraries.
assert_no_deps = [
"//sdk/lib/fdio",
"//zircon/system/ulib/async-default",
]
}
}