From a492eb0e1f08311bfa47f46c660144e7bc8a6c0e Mon Sep 17 00:00:00 2001 From: Greg Daniel Date: Wed, 6 Dec 2017 15:32:16 -0500 Subject: Add define to use customize vulkan header. Bug: skia: Change-Id: Ia87c81a54603a02b2f8f51a735bf173a49afe6c7 Reviewed-on: https://skia-review.googlesource.com/81121 Commit-Queue: Greg Daniel Reviewed-by: Brian Salomon --- BUILD.gn | 25 ++++++++++++++++----- include/gpu/vk/GrVkDefines.h | 49 ++++++++++++++++++++++++------------------ tools/gpu/vk/GrVulkanDefines.h | 33 ++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 26 deletions(-) create mode 100644 tools/gpu/vk/GrVulkanDefines.h diff --git a/BUILD.gn b/BUILD.gn index cffa2c2716..2e0e1bfae2 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -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" ] diff --git a/include/gpu/vk/GrVkDefines.h b/include/gpu/vk/GrVkDefines.h index 058ac236d0..be269e6b46 100644 --- a/include/gpu/vk/GrVkDefines.h +++ b/include/gpu/vk/GrVkDefines.h @@ -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 +# include +#endif // SK_VULKAN_HEADER #define SKIA_REQUIRED_VULKAN_HEADER_VERSION 17 #if VK_HEADER_VERSION < SKIA_REQUIRED_VULKAN_HEADER_VERSION diff --git a/tools/gpu/vk/GrVulkanDefines.h b/tools/gpu/vk/GrVulkanDefines.h new file mode 100644 index 0000000000..192f1c5abc --- /dev/null +++ b/tools/gpu/vk/GrVulkanDefines.h @@ -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 + +#endif -- cgit v1.2.3