From afb7ec7a4018744e83db66948e5a09c6a6f065af Mon Sep 17 00:00:00 2001 From: Greg Daniel Date: Thu, 7 Dec 2017 12:48:30 -0500 Subject: Revert "Revert "Add define to use customize vulkan header."" This reverts commit b351817588baf94ac725e35f10ee1d5ff8178834. Reason for revert: Relanding with android fixes Original change's description: > Revert "Add define to use customize vulkan header." > > This reverts commit a492eb0e1f08311bfa47f46c660144e7bc8a6c0e. > > Reason for revert: Breaking Android roll (b/c builds tools?) > > Original change's description: > > 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 > > TBR=egdaniel@google.com,bsalomon@google.com > > Change-Id: I80a685bf88af909865f274ffc61686be57e8c313 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: skia: > Reviewed-on: https://skia-review.googlesource.com/81740 > Reviewed-by: Brian Salomon > Commit-Queue: Brian Salomon TBR=egdaniel@google.com,bsalomon@google.com Change-Id: Ia701e884bfa3799dc73002f892feb2ecafe9da12 Reviewed-on: https://skia-review.googlesource.com/81742 Reviewed-by: Derek Sollenberger Reviewed-by: Greg Daniel Commit-Queue: Greg Daniel --- BUILD.gn | 25 ++++++++--- gn/gn_to_bp.py | 6 +++ include/gpu/vk/GrVkDefines.h | 49 ++++++++++++---------- .../android/vulkan/Skia_Vulkan_Android.h | 23 ++++++++++ tools/gpu/vk/GrVulkanDefines.h | 33 +++++++++++++++ 5 files changed, 110 insertions(+), 26 deletions(-) create mode 100644 platform_tools/android/vulkan/Skia_Vulkan_Android.h create mode 100644 tools/gpu/vk/GrVulkanDefines.h diff --git a/BUILD.gn b/BUILD.gn index cffa2c2716..131bf0b6fc 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 (is_skia_dev_build && 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 (is_skia_dev_build) { + 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/gn/gn_to_bp.py b/gn/gn_to_bp.py index 20260926a9..3a1238bf20 100644 --- a/gn/gn_to_bp.py +++ b/gn/gn_to_bp.py @@ -177,6 +177,7 @@ gn_args = { 'skia_use_vulkan': 'true', 'target_cpu': '"none"', 'target_os': '"android"', + 'skia_vulkan_header': '"Skia_Vulkan_Android.h"', } gn_args = ' '.join(sorted('%s=%s' % (k,v) for (k,v) in gn_args.iteritems())) @@ -241,6 +242,11 @@ cflags_cc.add("-fexceptions") cflags = sorted(cflags) cflags.insert(0, "-U_FORTIFY_SOURCE") +# We need to add the include path to the vulkan defines and header file set in +# then skia_vulkan_header gn arg that is used for framework builds. +local_includes.add("platform_tools/android/vulkan") +export_includes.add("platform_tools/android/vulkan") + # Most defines go into SkUserConfig.h, where they're seen by Skia and its users. defines = [str(d) for d in js['targets']['//:skia']['defines']] defines.remove('NDEBUG') # Let the Android build control this. 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/platform_tools/android/vulkan/Skia_Vulkan_Android.h b/platform_tools/android/vulkan/Skia_Vulkan_Android.h new file mode 100644 index 0000000000..b0749810f0 --- /dev/null +++ b/platform_tools/android/vulkan/Skia_Vulkan_Android.h @@ -0,0 +1,23 @@ +/* + * 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 Skia_Vulkan_Android_DEFINED +#define Skia_Vulkan_Android_DEFINED + +#if !defined(SK_BUILD_FOR_ANDROID) +#error "Must be building for android to use this header" +#endif +#if !defined(VK_USE_PLATFORM_ANDROID_KHR) +# define VK_USE_PLATFORM_ANDROID_KHR +#endif + +#include + +#endif + + + 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