Edit

kc3-lang/angle/src/common/vulkan/BUILD.gn

Branch :

  • Show log

    Commit

  • Author : Peng Huang
    Date : 2021-01-26 20:06:24
    Hash : 122a1cc5
    Message : Fix several vulkan backend problem on Android. * Load AHardwarebuffer API dynamically, so vulkan backend can be built with old NDK, but can work with newer android releases. * Do not link with libvulkan on android. * Expose EGL_ANDROID_get_native_client_buffer extension with vulkan backend. Bug: chromium:1170339 Change-Id: Idf7f6867a86ae40ba6d57a86e419c610ba404ba8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2653506 Reviewed-by: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Peng Huang <penghuang@chromium.org>

  • src/common/vulkan/BUILD.gn
  • # Copyright 2020 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.
    
    import("//build_overrides/swiftshader.gni")
    import("../../../gni/angle.gni")
    
    assert(angle_enable_vulkan)
    
    config("angle_vulkan_headers_config") {
      if (angle_shared_libvulkan) {
        defines = [ "ANGLE_SHARED_LIBVULKAN=1" ]
      }
    }
    
    angle_source_set("angle_vulkan_headers") {
      sources = [
        "vk_ext_provoking_vertex.h",
        "vk_google_filtering_precision.h",
        "vk_headers.h",
      ]
      if (angle_shared_libvulkan) {
        public_deps = [ "$angle_root/src/third_party/volk:volk" ]
      } else {
        public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ]
      }
      public_configs = [ ":angle_vulkan_headers_config" ]
    }
    
    group("angle_vulkan_entry_points") {
      public_deps = [ ":angle_vulkan_headers" ]
      if (is_fuchsia) {
        public_deps += [
          "$angle_root/src/common/fuchsia_egl",
          "//third_party/fuchsia-sdk:vulkan_base",
          "//third_party/fuchsia-sdk/sdk/pkg/vulkan",
        ]
      } else if (!is_android && !is_ggp) {
        if (angle_shared_libvulkan) {
          data_deps = [ "$angle_vulkan_loader_dir:libvulkan" ]
        } else {
          deps = [ "$angle_vulkan_loader_dir:libvulkan" ]
        }
      }
    }
    
    angle_source_set("vulkan") {
      sources = [
        "vulkan_icd.cpp",
        "vulkan_icd.h",
      ]
    
      public_deps = [
        ":angle_vulkan_entry_points",
        "$angle_root:angle_common",
      ]
    
      configs += [ "$angle_root:angle_no_cfi_icall" ]
    
      defines = [
        "ANGLE_VK_LAYERS_DIR=\"$angle_data_dir\"",
        "ANGLE_VK_MOCK_ICD_JSON=\"$angle_data_dir/VkICD_mock_icd.json\"",
      ]
    
      deps = []
      data_deps = []
    
      if (!is_android && !is_fuchsia && !is_ggp) {
        if (angle_shared_libvulkan) {
          data_deps += [ "$angle_vulkan_loader_dir:libvulkan" ]
        } else {
          deps += [ "$angle_vulkan_loader_dir:libvulkan" ]
        }
        data_deps += [ "$angle_vulkan_tools_dir:VkICD_mock_icd" ]
      }
    
      if (angle_enable_swiftshader) {
        import("$swiftshader_dir/src/Vulkan/vulkan.gni")
        _sws_icd = "./$swiftshader_icd_file_name"
        if (is_win) {
          _sws_icd = ".\\\\$swiftshader_icd_file_name"
        }
    
        defines += [ "ANGLE_VK_SWIFTSHADER_ICD_JSON=\"${_sws_icd}\"" ]
    
        data_deps += [
          "$swiftshader_dir/src/Vulkan:icd_file",
          "$swiftshader_dir/src/Vulkan:swiftshader_libvulkan",
        ]
      }
    }
    
    if (angle_enable_vulkan_validation_layers) {
      group("vulkan_validation_layers") {
        data_deps = []
        if (is_fuchsia) {
          data_deps += [ "//third_party/fuchsia-sdk:vulkan_validation" ]
        } else {
          data_deps +=
              [ "$angle_vulkan_validation_layers_dir:vulkan_validation_layers" ]
          if (!is_android) {
            data_deps +=
                [ "$angle_vulkan_validation_layers_dir:vulkan_gen_json_files" ]
          }
        }
      }
    }