Check-in vulkan.h into third_party and use that instead of local sdk vulkan.h

This change is needed since once we start getting support for varrying of extensions
and newer version support in general, we need a common vulkan header to compile off of.
Otherwise we will run into problems if clients have older headers that don't include
functions/symbols we are trying to use.

Additionally it has the benefit of not needing to add if SK_VULKAN around code in
include which wants to use vulkan symbols.

This is a reland of the reverted cl: https://skia-review.googlesource.com/13804

Bug: skia:
Change-Id: I9023e80e60d2f2ebbdc8e794ec46d6f5c5c7c917
Reviewed-on: https://skia-review.googlesource.com/13874
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
This commit is contained in:
Greg Daniel 2017-04-19 16:39:45 -04:00 committed by Skia Commit-Bot
parent d0ce148ed4
commit c819e66993
6 changed files with 5950 additions and 24 deletions

View File

@ -54,13 +54,6 @@ declare_args() {
} else {
skia_use_vulkan = skia_vulkan_sdk != ""
}
if (is_win) {
skia_vulkan_headers_path = "$skia_vulkan_sdk/Include"
} else if (is_fuchsia) {
skia_vulkan_headers_path = "$fuchsia_vulkan_sdk/include"
} else {
skia_vulkan_headers_path = "$skia_vulkan_sdk/include"
}
}
# Our tools require static linking (they use non-exported symbols).
@ -82,7 +75,7 @@ skia_public_includes = [
"include/svg",
"include/utils",
"include/utils/mac",
skia_vulkan_headers_path,
"third_party/vulkan",
]
# Skia public API, generally provided by :skia.
@ -750,15 +743,8 @@ if (skia_enable_tools) {
public_configs = [ ":skia.h_config" ]
skia_h = "$target_gen_dir/skia.h"
script = "gn/find_headers.py"
if (skia_use_vulkan) {
use_vulkan_string = "True"
} else {
use_vulkan_string = "False"
}
args = [
rebase_path(skia_h, root_build_dir),
use_vulkan_string,
] + rebase_path(skia_public_includes - [ skia_vulkan_headers_path ])
args = [ rebase_path(skia_h, root_build_dir) ] +
rebase_path(skia_public_includes)
depfile = "$skia_h.deps"
outputs = [
skia_h,

View File

@ -15,8 +15,7 @@ import sys
# very same mechanism Ninja uses to know which .h files affect which .cpp files.
skia_h = sys.argv[1]
use_vulkan = eval(sys.argv[2])
include_dirs = sys.argv[3:]
include_dirs = sys.argv[2:]
blacklist = {
"GrGLConfig_chrome.h",
@ -27,9 +26,8 @@ headers = []
for directory in include_dirs:
for d, _, files in os.walk(directory):
for f in files:
if not d.endswith('vk') or use_vulkan:
if f.endswith('.h') and f not in blacklist:
headers.append(os.path.join(d,f))
if f.endswith('.h') and f not in blacklist:
headers.append(os.path.join(d,f))
headers.sort()
with open(skia_h, "w") as f:

View File

@ -33,6 +33,6 @@
# pragma error "Macros unexpectedly defined."
#endif
#include <vulkan/vulkan.h>
#include <vulkan.h>
#endif

120
third_party/vulkan/vk_platform.h vendored Normal file
View File

@ -0,0 +1,120 @@
//
// File: vk_platform.h
//
/*
** Copyright (c) 2014-2017 The Khronos Group Inc.
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
#ifndef VK_PLATFORM_H_
#define VK_PLATFORM_H_
#ifdef __cplusplus
extern "C"
{
#endif // __cplusplus
/*
***************************************************************************************************
* Platform-specific directives and type declarations
***************************************************************************************************
*/
/* Platform-specific calling convention macros.
*
* Platforms should define these so that Vulkan clients call Vulkan commands
* with the same calling conventions that the Vulkan implementation expects.
*
* VKAPI_ATTR - Placed before the return type in function declarations.
* Useful for C++11 and GCC/Clang-style function attribute syntax.
* VKAPI_CALL - Placed after the return type in function declarations.
* Useful for MSVC-style calling convention syntax.
* VKAPI_PTR - Placed between the '(' and '*' in function pointer types.
*
* Function declaration: VKAPI_ATTR void VKAPI_CALL vkCommand(void);
* Function pointer type: typedef void (VKAPI_PTR *PFN_vkCommand)(void);
*/
#if defined(_WIN32)
// On Windows, Vulkan commands use the stdcall convention
#define VKAPI_ATTR
#define VKAPI_CALL __stdcall
#define VKAPI_PTR VKAPI_CALL
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
#error "Vulkan isn't supported for the 'armeabi' NDK ABI"
#elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
// On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
// calling convention, i.e. float parameters are passed in registers. This
// is true even if the rest of the application passes floats on the stack,
// as it does by default when compiling for the armeabi-v7a NDK ABI.
#define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
#define VKAPI_CALL
#define VKAPI_PTR VKAPI_ATTR
#else
// On other platforms, use the default calling convention
#define VKAPI_ATTR
#define VKAPI_CALL
#define VKAPI_PTR
#endif
#include <stddef.h>
#if !defined(VK_NO_STDINT_H)
#if defined(_MSC_VER) && (_MSC_VER < 1600)
typedef signed __int8 int8_t;
typedef unsigned __int8 uint8_t;
typedef signed __int16 int16_t;
typedef unsigned __int16 uint16_t;
typedef signed __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
#include <stdint.h>
#endif
#endif // !defined(VK_NO_STDINT_H)
#ifdef __cplusplus
} // extern "C"
#endif // __cplusplus
// Platform-specific headers required by platform window system extensions.
// These are enabled prior to #including "vulkan.h". The same enable then
// controls inclusion of the extension interfaces in vulkan.h.
#ifdef VK_USE_PLATFORM_ANDROID_KHR
struct ANativeWindow;
#endif
#ifdef VK_USE_PLATFORM_MIR_KHR
#include <mir_toolkit/client_types.h>
#endif
#ifdef VK_USE_PLATFORM_WAYLAND_KHR
#include <wayland-client.h>
#endif
#ifdef VK_USE_PLATFORM_WIN32_KHR
#include <windows.h>
#endif
#ifdef VK_USE_PLATFORM_XLIB_KHR
#include <X11/Xlib.h>
#endif
#ifdef VK_USE_PLATFORM_XCB_KHR
#include <xcb/xcb.h>
#endif
#endif

5822
third_party/vulkan/vulkan.h vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,7 @@
#include "vk/GrVkInterface.h"
#include "vk/GrVkUtil.h"
#include <vulkan/vulkan.h>
#include <vulkan.h>
namespace {
/**