Edit

kc3-lang/angle/src/libANGLE/renderer/vulkan/BUILD.gn

Branch :

  • Show log

    Commit

  • Author : Shahbaz Youssefi
    Date : 2021-09-02 22:41:40
    Hash : 458389f2
    Message : Vulkan: Support Linux dma-bufs This change adds support for EGL_EXT_image_dma_buf_import and EGL_EXT_image_dma_buf_import_modifiers on top of Vulkan's VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier. Bug: angleproject:6248 Change-Id: I581987f88e9ddcf351dc721f499f63912dca05f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3145610 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>

  • src/libANGLE/renderer/vulkan/BUILD.gn
  • # Copyright 2019 The ANGLE Project Authors. All rights reserved.
    # Use of this source code is governed by a BSD-style license that can be
    # found in the LICENSE file.
    #
    # This file houses the build configuration for the ANGLE Vulkan back-end.
    
    import("//build/config/dcheck_always_on.gni")
    import("//build_overrides/swiftshader.gni")
    import("../../../../gni/angle.gni")
    
    assert(angle_enable_vulkan)
    
    declare_args() {
      # Enable custom (cpu-side) secondary command buffers
      angle_enable_custom_vulkan_cmd_buffers = true
    
      # Enable Vulkan GPU trace event capability
      angle_enable_vulkan_gpu_trace_events = false
    }
    
    _vulkan_backend_sources = [
      "BufferVk.cpp",
      "BufferVk.h",
      "CommandProcessor.cpp",
      "CommandProcessor.h",
      "CompilerVk.cpp",
      "CompilerVk.h",
      "ContextVk.cpp",
      "ContextVk.h",
      "DebugAnnotatorVk.cpp",
      "DebugAnnotatorVk.h",
      "DeviceVk.cpp",
      "DeviceVk.h",
      "DisplayVk.cpp",
      "DisplayVk.h",
      "DisplayVk_api.h",
      "FenceNVVk.cpp",
      "FenceNVVk.h",
      "FramebufferVk.cpp",
      "FramebufferVk.h",
      "GlslangWrapperVk.cpp",
      "GlslangWrapperVk.h",
      "ImageVk.cpp",
      "ImageVk.h",
      "MemoryObjectVk.cpp",
      "MemoryObjectVk.h",
      "OverlayVk.cpp",
      "OverlayVk.h",
      "PersistentCommandPool.cpp",
      "PersistentCommandPool.h",
      "ProgramExecutableVk.cpp",
      "ProgramExecutableVk.h",
      "ProgramPipelineVk.cpp",
      "ProgramPipelineVk.h",
      "ProgramVk.cpp",
      "ProgramVk.h",
      "QueryVk.cpp",
      "QueryVk.h",
      "RenderTargetVk.cpp",
      "RenderTargetVk.h",
      "RenderbufferVk.cpp",
      "RenderbufferVk.h",
      "RendererVk.cpp",
      "RendererVk.h",
      "ResourceVk.cpp",
      "ResourceVk.h",
      "SamplerVk.cpp",
      "SamplerVk.h",
      "SecondaryCommandBuffer.cpp",
      "SecondaryCommandBuffer.h",
      "SemaphoreVk.cpp",
      "SemaphoreVk.h",
      "ShaderVk.cpp",
      "ShaderVk.h",
      "SurfaceVk.cpp",
      "SurfaceVk.h",
      "SyncVk.cpp",
      "SyncVk.h",
      "TextureVk.cpp",
      "TextureVk.h",
      "TransformFeedbackVk.cpp",
      "TransformFeedbackVk.h",
      "UtilsVk.cpp",
      "UtilsVk.h",
      "VertexArrayVk.cpp",
      "VertexArrayVk.h",
      "android/vk_android_utils.cpp",
      "android/vk_android_utils.h",
      "vk_cache_utils.cpp",
      "vk_cache_utils.h",
      "vk_caps_utils.cpp",
      "vk_caps_utils.h",
      "vk_format_table_autogen.cpp",
      "vk_format_utils.cpp",
      "vk_format_utils.h",
      "vk_helpers.cpp",
      "vk_helpers.h",
      "vk_internal_shaders_autogen.cpp",
      "vk_internal_shaders_autogen.h",
      "vk_mandatory_format_support_table_autogen.cpp",
      "vk_utils.cpp",
      "vk_utils.h",
      "vk_wrapper.h",
    ]
    
    if (angle_enable_cl) {
      _vulkan_backend_sources += [
        "CLCommandQueueVk.cpp",
        "CLCommandQueueVk.h",
        "CLContextVk.cpp",
        "CLContextVk.h",
        "CLDeviceVk.cpp",
        "CLDeviceVk.h",
        "CLEventVk.cpp",
        "CLEventVk.h",
        "CLKernelVk.cpp",
        "CLKernelVk.h",
        "CLMemoryVk.cpp",
        "CLMemoryVk.h",
        "CLPlatformVk.cpp",
        "CLPlatformVk.h",
        "CLProgramVk.cpp",
        "CLProgramVk.h",
        "CLSamplerVk.cpp",
        "CLSamplerVk.h",
        "cl_types.h",
      ]
    }
    
    if (angle_use_vulkan_null_display) {
      _vulkan_backend_sources += [
        "null/DisplayVkNull.cpp",
        "null/DisplayVkNull.h",
        "null/WindowSurfaceVkNull.cpp",
        "null/WindowSurfaceVkNull.h",
      ]
    }
    
    if (is_linux) {
      _vulkan_backend_sources += [
        "linux/DisplayVkLinux.cpp",
        "linux/DisplayVkLinux.h",
        "linux/DmaBufImageSiblingVkLinux.cpp",
        "linux/DmaBufImageSiblingVkLinux.h",
        "linux/display/DisplayVkSimple.cpp",
        "linux/display/DisplayVkSimple.h",
        "linux/display/WindowSurfaceVkSimple.cpp",
        "linux/display/WindowSurfaceVkSimple.h",
        "linux/headless/DisplayVkHeadless.cpp",
        "linux/headless/DisplayVkHeadless.h",
        "linux/headless/WindowSurfaceVkHeadless.cpp",
        "linux/headless/WindowSurfaceVkHeadless.h",
      ]
    }
    
    if (is_android) {
      _vulkan_backend_sources += [
        "android/AHBFunctions.cpp",
        "android/AHBFunctions.h",
        "android/DisplayVkAndroid.cpp",
        "android/DisplayVkAndroid.h",
        "android/HardwareBufferImageSiblingVkAndroid.cpp",
        "android/HardwareBufferImageSiblingVkAndroid.h",
        "android/WindowSurfaceVkAndroid.cpp",
        "android/WindowSurfaceVkAndroid.h",
      ]
    }
    
    if (is_win) {
      _vulkan_backend_sources += [
        "win32/DisplayVkWin32.cpp",
        "win32/DisplayVkWin32.h",
        "win32/WindowSurfaceVkWin32.cpp",
        "win32/WindowSurfaceVkWin32.h",
      ]
    }
    
    if (angle_use_x11) {
      _vulkan_backend_sources += [
        "linux/xcb/DisplayVkXcb.cpp",
        "linux/xcb/DisplayVkXcb.h",
        "linux/xcb/WindowSurfaceVkXcb.cpp",
        "linux/xcb/WindowSurfaceVkXcb.h",
      ]
    }
    
    if (is_fuchsia) {
      _vulkan_backend_sources += [
        "fuchsia/DisplayVkFuchsia.cpp",
        "fuchsia/DisplayVkFuchsia.h",
        "fuchsia/WindowSurfaceVkFuchsia.cpp",
        "fuchsia/WindowSurfaceVkFuchsia.h",
      ]
    }
    
    if (is_ggp) {
      _vulkan_backend_sources += [
        "ggp/DisplayVkGGP.cpp",
        "ggp/DisplayVkGGP.h",
        "ggp/WindowSurfaceVkGGP.cpp",
        "ggp/WindowSurfaceVkGGP.h",
      ]
    }
    
    if (is_mac) {
      _vulkan_backend_sources += [
        "mac/DisplayVkMac.h",
        "mac/DisplayVkMac.mm",
        "mac/IOSurfaceSurfaceVkMac.h",
        "mac/IOSurfaceSurfaceVkMac.mm",
        "mac/WindowSurfaceVkMac.h",
        "mac/WindowSurfaceVkMac.mm",
      ]
    }
    
    config("angle_vulkan_backend_config") {
      defines = [ "ANGLE_ENABLE_VULKAN" ]
      if (angle_enable_swiftshader) {
        defines += [ "ANGLE_ENABLE_SWIFTSHADER" ]
      }
      if (angle_enable_custom_vulkan_cmd_buffers) {
        defines += [ "ANGLE_USE_CUSTOM_VULKAN_CMD_BUFFERS=1" ]
      }
      if (angle_enable_vulkan_gpu_trace_events) {
        defines += [ "ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS=1" ]
      }
      if (angle_enable_vulkan_validation_layers) {
        defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS" ]
      }
    }
    
    angle_source_set("angle_vk_mem_alloc_wrapper") {
      deps = [
        "$angle_root/src/common/vulkan:angle_vulkan_headers",
        "$angle_vulkan_memory_allocator_dir",
      ]
      configs += [ "$angle_root:angle_no_cfi_unrelated_cast" ]
      sources = [
        "vk_mem_alloc_wrapper.cpp",
        "vk_mem_alloc_wrapper.h",
      ]
      if (is_clang) {
        cflags_cc = [
          "-Wno-extra-semi-stmt",
          "-Wno-missing-field-initializers",
          "-Wno-suggest-destructor-override",
          "-Wno-suggest-override",
        ]
      }
    }
    
    angle_source_set("angle_vulkan_backend") {
      sources = _vulkan_backend_sources
      libs = []
      deps = [
        ":angle_vk_mem_alloc_wrapper",
        "$angle_root:angle_abseil",
        "$angle_root:angle_compression",
        "$angle_root:angle_gpu_info_util",
        "$angle_root:angle_image_util",
        "$angle_root/src/common/spirv:angle_spirv_builder",
        "$angle_spirv_headers_dir:spv_headers",
      ]
    
      public_deps = [
        "$angle_root:angle_glslang_wrapper",
        "$angle_root:libANGLE_headers",
        "$angle_root/src/common/vulkan",
        "$angle_root/src/common/vulkan:angle_libvulkan_loader",
        "$angle_root/src/common/vulkan:angle_vulkan_entry_points",
        "$angle_root/src/common/vulkan:angle_vulkan_headers",
      ]
      public_configs = [ ":angle_vulkan_backend_config" ]
    
      data_deps = []
    
      defines = []
    
      if (angle_enable_vulkan_validation_layers) {
        defines += [ "ANGLE_ENABLE_VULKAN_VALIDATION_LAYERS_BY_DEFAULT" ]
        data_deps += [ "$angle_root/src/common/vulkan:vulkan_validation_layers" ]
      }
    
      if (is_linux) {
        deps += [ "$angle_root/src/common/linux:angle_dma_buf" ]
      }
    
      if (is_fuchsia) {
        public_deps += [ "$angle_root/src/common/fuchsia_egl:backend" ]
      }
    
      # Include generated shaders.
      import("vk_internal_shaders_autogen.gni")
      sources += angle_vulkan_internal_shaders
    }