Add define to use customize vulkan header.

Bug: skia:
Change-Id: Ia87c81a54603a02b2f8f51a735bf173a49afe6c7
Reviewed-on: https://skia-review.googlesource.com/81121
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
This commit is contained in:
Greg Daniel 2017-12-06 15:32:16 -05:00 committed by Skia Commit-Bot
parent bbfe515474
commit a492eb0e1f
3 changed files with 81 additions and 26 deletions

View File

@ -40,6 +40,7 @@ declare_args() {
skia_enable_spirv_validation = is_skia_dev_build && is_debug
skia_enable_tools = is_skia_dev_build
skia_enable_vulkan_debug_layers = is_skia_dev_build && is_debug
skia_vulkan_header = ""
skia_vulkan_sdk = getenv("VULKAN_SDK")
skia_qt_path = getenv("QT_PATH")
skia_compile_processors = false
@ -63,13 +64,13 @@ declare_args() {
}
}
declare_args() {
skia_vulkan_headers = ""
skia_tools_vulkan_header_dir = ""
if (skia_use_vulkan) {
# When buliding on Android we get the header via the NDK so no need for any extra path.
if (is_fuchsia) {
skia_vulkan_headers = "$fuchsia_vulkan_sdk/include"
skia_tools_vulkan_header_dir = "$fuchsia_vulkan_sdk/include"
} else if (is_linux || is_win) {
skia_vulkan_headers = "$skia_vulkan_sdk/include"
skia_tools_vulkan_header_dir = "$skia_vulkan_sdk/include"
}
}
}
@ -114,8 +115,8 @@ if (skia_use_metal) {
# Skia public API, generally provided by :skia.
config("skia_public") {
include_dirs = skia_public_includes
if (skia_vulkan_headers != "") {
include_dirs += [ skia_vulkan_headers ]
if (skia_tools_vulkan_header_dir != "") {
include_dirs += [ skia_tools_vulkan_header_dir ]
}
defines = []
if (is_component_build) {
@ -178,6 +179,9 @@ config("skia_private") {
lib_dirs = []
if (skia_enable_gpu) {
include_dirs += [ "src/gpu" ]
if (skia_enable_tools && skia_use_vulkan) {
include_dirs += [ "tools/gpu/vk" ]
}
}
if (skia_use_angle) {
defines += [ "SK_ANGLE" ]
@ -581,6 +585,13 @@ optional("gpu") {
if (skia_enable_vulkan_debug_layers) {
public_defines += [ "SK_ENABLE_VK_LAYERS" ]
}
if (skia_vulkan_header != "") {
public_defines += [ "SK_VULKAN_HEADER=\"$skia_vulkan_header\"" ]
} else {
if (skia_enable_tools) {
public_defines += [ "SK_VULKAN_HEADER=\"GrVulkanDefines.h\"" ]
}
}
}
if (skia_enable_spirv_validation) {
deps += [ "//third_party/spirv-tools" ]
@ -887,6 +898,10 @@ if (skia_enable_tools) {
config("skia.h_config") {
include_dirs = [ "$target_gen_dir" ]
if (skia_use_vulkan) {
# So we can get the header which includes vulkan
include_dirs += [ "tools/gpu/vk" ]
}
}
action("skia.h") {
public_configs = [ ":skia.h_config" ]

View File

@ -11,33 +11,40 @@
#ifdef SK_VULKAN
#if defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_WIN32)
# if !defined(VK_USE_PLATFORM_WIN32_KHR)
# define VK_USE_PLATFORM_WIN32_KHR
# endif
#elif defined(SK_BUILD_FOR_ANDROID)
# if !defined(VK_USE_PLATFORM_ANDROID_KHR)
# define VK_USE_PLATFORM_ANDROID_KHR
# endif
#elif defined(SK_BUILD_FOR_UNIX)
# if defined(__Fuchsia__)
# if !defined(VK_USE_PLATFORM_MAGMA_KHR)
# define VK_USE_PLATFORM_MAGMA_KHR
#ifdef SK_VULKAN_HEADER
#include SK_VULKAN_HEADER
#else
// This is deprecated and all clients should define their own custum header shim that sets up
// defines and includes the vulkan.h header. Then they should define SK_VULKAN_HEADER or set the
// skia_vulkan_header in gn to point to their custom header.
# if defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_WIN32)
# if !defined(VK_USE_PLATFORM_WIN32_KHR)
# define VK_USE_PLATFORM_WIN32_KHR
# endif
# else
# if !defined(VK_USE_PLATFORM_XCB_KHR)
# define VK_USE_PLATFORM_XCB_KHR
# elif defined(SK_BUILD_FOR_ANDROID)
# if !defined(VK_USE_PLATFORM_ANDROID_KHR)
# define VK_USE_PLATFORM_ANDROID_KHR
# endif
# endif
#endif
# elif defined(SK_BUILD_FOR_UNIX)
# if defined(__Fuchsia__)
# if !defined(VK_USE_PLATFORM_MAGMA_KHR)
# define VK_USE_PLATFORM_MAGMA_KHR
# endif
# else
# if !defined(VK_USE_PLATFORM_XCB_KHR)
# define VK_USE_PLATFORM_XCB_KHR
# endif
# endif
# endif
// We create our own function table and never directly call any functions via vk*(). So no need to
// include the prototype functions.
#if !defined(VK_NO_PROTOTYPES) && !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
#define VK_NO_PROTOTYPES
#endif
# if !defined(VK_NO_PROTOTYPES) && !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
# define VK_NO_PROTOTYPES
# endif
#include <vulkan/vulkan.h>
# include <vulkan/vulkan.h>
#endif // SK_VULKAN_HEADER
#define SKIA_REQUIRED_VULKAN_HEADER_VERSION 17
#if VK_HEADER_VERSION < SKIA_REQUIRED_VULKAN_HEADER_VERSION

View File

@ -0,0 +1,33 @@
/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef GrVulkanDefines_DEFINED
#define GrVulkanDefines_DEFINED
#if defined(SK_BUILD_FOR_WIN) || defined(SK_BUILD_FOR_WIN32)
# if !defined(VK_USE_PLATFORM_WIN32_KHR)
# define VK_USE_PLATFORM_WIN32_KHR
# endif
#elif defined(SK_BUILD_FOR_ANDROID)
# if !defined(VK_USE_PLATFORM_ANDROID_KHR)
# define VK_USE_PLATFORM_ANDROID_KHR
# endif
#elif defined(SK_BUILD_FOR_UNIX)
# if !defined(VK_USE_PLATFORM_XCB_KHR)
# define VK_USE_PLATFORM_XCB_KHR
# endif
#endif
// We create our own function table and never directly call any functions via vk*(). So no need to
// include the prototype functions.
#if !defined(VK_NO_PROTOTYPES)
#define VK_NO_PROTOTYPES
#endif
#include <vulkan/vulkan.h>
#endif