2016-03-28 14:03:06 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright 2016 Google Inc.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
|
|
* found in the LICENSE file.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef GrVkDefines_DEFINED
|
|
|
|
#define GrVkDefines_DEFINED
|
|
|
|
|
2018-06-14 20:27:40 +00:00
|
|
|
#include "SkTypes.h"
|
|
|
|
|
2017-05-01 13:50:58 +00:00
|
|
|
#ifdef SK_VULKAN
|
|
|
|
|
2017-12-07 17:48:30 +00:00
|
|
|
#ifdef SK_VULKAN_HEADER
|
2018-05-22 14:48:08 +00:00
|
|
|
#include SK_VULKAN_HEADER // IWYU pragma: export
|
2017-12-07 17:48:30 +00:00
|
|
|
#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.
|
2018-01-24 17:42:55 +00:00
|
|
|
# if defined(SK_BUILD_FOR_WIN)
|
2017-12-07 17:48:30 +00:00
|
|
|
# if !defined(VK_USE_PLATFORM_WIN32_KHR)
|
|
|
|
# define VK_USE_PLATFORM_WIN32_KHR
|
2017-04-05 16:52:55 +00:00
|
|
|
# endif
|
2017-12-07 17:48:30 +00:00
|
|
|
# elif defined(SK_BUILD_FOR_ANDROID)
|
|
|
|
# if !defined(VK_USE_PLATFORM_ANDROID_KHR)
|
|
|
|
# define VK_USE_PLATFORM_ANDROID_KHR
|
2017-04-05 16:52:55 +00:00
|
|
|
# endif
|
2017-12-07 17:48:30 +00:00
|
|
|
# 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
|
2016-05-11 17:09:18 +00:00
|
|
|
|
2017-11-10 15:11:57 +00:00
|
|
|
// We create our own function table and never directly call any functions via vk*(). So no need to
|
|
|
|
// include the prototype functions.
|
2017-12-07 17:48:30 +00:00
|
|
|
# if !defined(VK_NO_PROTOTYPES) && !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
|
|
|
|
# define VK_NO_PROTOTYPES
|
|
|
|
# endif
|
2017-11-10 15:11:57 +00:00
|
|
|
|
2018-05-22 14:48:08 +00:00
|
|
|
# include <vulkan/vulkan.h> // IWYU pragma: export
|
2017-12-07 17:48:30 +00:00
|
|
|
#endif // SK_VULKAN_HEADER
|
2017-04-25 17:38:26 +00:00
|
|
|
|
|
|
|
#define SKIA_REQUIRED_VULKAN_HEADER_VERSION 17
|
|
|
|
#if VK_HEADER_VERSION < SKIA_REQUIRED_VULKAN_HEADER_VERSION
|
|
|
|
#error "Vulkan header version is too low"
|
|
|
|
#endif
|
2016-03-28 14:03:06 +00:00
|
|
|
|
2018-05-29 14:46:51 +00:00
|
|
|
// The AMD VulkanMemoryAllocator needs the objects from this extension to be declared.
|
|
|
|
#ifndef VK_KHR_get_memory_requirements2
|
|
|
|
|
|
|
|
#define VK_KHR_get_memory_requirements2 1
|
|
|
|
#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
|
|
|
|
#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
|
|
|
|
|
|
|
|
typedef struct VkBufferMemoryRequirementsInfo2KHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
VkBuffer buffer;
|
|
|
|
} VkBufferMemoryRequirementsInfo2KHR;
|
|
|
|
|
|
|
|
typedef struct VkImageMemoryRequirementsInfo2KHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
VkImage image;
|
|
|
|
} VkImageMemoryRequirementsInfo2KHR;
|
|
|
|
|
|
|
|
typedef struct VkImageSparseMemoryRequirementsInfo2KHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
VkImage image;
|
|
|
|
} VkImageSparseMemoryRequirementsInfo2KHR;
|
|
|
|
|
|
|
|
typedef struct VkMemoryRequirements2KHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
void* pNext;
|
|
|
|
VkMemoryRequirements memoryRequirements;
|
|
|
|
} VkMemoryRequirements2KHR;
|
|
|
|
|
|
|
|
typedef struct VkSparseImageMemoryRequirements2KHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
void* pNext;
|
|
|
|
VkSparseImageMemoryRequirements memoryRequirements;
|
|
|
|
} VkSparseImageMemoryRequirements2KHR;
|
|
|
|
|
|
|
|
|
|
|
|
typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
|
|
|
|
typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2KHR* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
|
|
|
|
typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements);
|
|
|
|
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = (VkStructureType) 1000146000;
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = (VkStructureType) 1000146001;
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = (VkStructureType) 1000146002;
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = (VkStructureType) 1000146003;
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = (VkStructureType) 1000146004;
|
|
|
|
|
|
|
|
#endif // VK_KHR_get_memory_requirements2
|
|
|
|
|
|
|
|
// Also needed for VulkanMemoryAllocator
|
|
|
|
#ifndef VK_KHR_dedicated_allocation
|
|
|
|
|
|
|
|
#define VK_KHR_dedicated_allocation 1
|
|
|
|
#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
|
|
|
|
#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
|
|
|
|
|
|
|
|
typedef struct VkMemoryDedicatedRequirementsKHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
void* pNext;
|
|
|
|
VkBool32 prefersDedicatedAllocation;
|
|
|
|
VkBool32 requiresDedicatedAllocation;
|
|
|
|
} VkMemoryDedicatedRequirementsKHR;
|
|
|
|
|
|
|
|
typedef struct VkMemoryDedicatedAllocateInfoKHR {
|
|
|
|
VkStructureType sType;
|
|
|
|
const void* pNext;
|
|
|
|
VkImage image;
|
|
|
|
VkBuffer buffer;
|
|
|
|
} VkMemoryDedicatedAllocateInfoKHR;
|
|
|
|
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = (VkStructureType) 1000127000;
|
|
|
|
static constexpr VkStructureType VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = (VkStructureType) 1000127001;
|
|
|
|
|
|
|
|
#endif // VK_KHR_dedicated_allocation
|
|
|
|
|
2017-11-02 16:56:09 +00:00
|
|
|
#endif
|
2017-11-01 23:15:06 +00:00
|
|
|
|
2017-11-02 16:56:09 +00:00
|
|
|
#endif
|