252 lines
9.9 KiB
C
Executable File
252 lines
9.9 KiB
C
Executable File
// Tencent is pleased to support the open source community by making ncnn available.
|
|
//
|
|
// Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
|
|
//
|
|
// Licensed under the BSD 3-Clause License (the "License"); you may not use this file except
|
|
// in compliance with the License. You may obtain a copy of the License at
|
|
//
|
|
// https://opensource.org/licenses/BSD-3-Clause
|
|
//
|
|
// 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 NCNN_VULKAN_HEADER_FIX_H
|
|
#define NCNN_VULKAN_HEADER_FIX_H
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
// This header contains new structure and function declearation to fix build with old vulkan sdk
|
|
|
|
#if VK_HEADER_VERSION < 70
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES (VkStructureType)1000094000
|
|
typedef enum VkSubgroupFeatureFlagBits
|
|
{
|
|
VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
|
|
VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
|
|
VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
|
|
VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
|
|
VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
|
|
VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
|
|
VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
|
|
VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
|
|
VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
|
|
VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
|
|
} VkSubgroupFeatureFlagBits;
|
|
typedef VkFlags VkSubgroupFeatureFlags;
|
|
typedef struct VkPhysicalDeviceSubgroupProperties
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t subgroupSize;
|
|
VkShaderStageFlags supportedStages;
|
|
VkSubgroupFeatureFlags supportedOperations;
|
|
VkBool32 quadOperationsInAllStages;
|
|
} VkPhysicalDeviceSubgroupProperties;
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES (VkStructureType)1000168000
|
|
#define VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT (VkStructureType)1000168001
|
|
typedef struct VkPhysicalDeviceMaintenance3Properties
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t maxPerSetDescriptors;
|
|
VkDeviceSize maxMemoryAllocationSize;
|
|
} VkPhysicalDeviceMaintenance3Properties;
|
|
typedef struct VkDescriptorSetLayoutSupport
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkBool32 supported;
|
|
} VkDescriptorSetLayoutSupport;
|
|
typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
|
|
typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
|
|
typedef void(VKAPI_PTR* PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
|
|
#endif // VK_HEADER_VERSION < 70
|
|
|
|
#if VK_HEADER_VERSION < 80
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR (VkStructureType)1000177000
|
|
typedef struct VkPhysicalDevice8BitStorageFeaturesKHR
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkBool32 storageBuffer8BitAccess;
|
|
VkBool32 uniformAndStorageBuffer8BitAccess;
|
|
VkBool32 storagePushConstant8;
|
|
} VkPhysicalDevice8BitStorageFeaturesKHR;
|
|
#define VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR (VkStructureType)1000109000
|
|
#define VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR (VkStructureType)1000109001
|
|
#define VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR (VkStructureType)1000109002
|
|
#define VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR (VkStructureType)1000109003
|
|
#define VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR (VkStructureType)1000109004
|
|
#define VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR (VkStructureType)1000109005
|
|
#define VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR (VkStructureType)1000109006
|
|
typedef struct VkAttachmentDescription2KHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkAttachmentDescriptionFlags flags;
|
|
VkFormat format;
|
|
VkSampleCountFlagBits samples;
|
|
VkAttachmentLoadOp loadOp;
|
|
VkAttachmentStoreOp storeOp;
|
|
VkAttachmentLoadOp stencilLoadOp;
|
|
VkAttachmentStoreOp stencilStoreOp;
|
|
VkImageLayout initialLayout;
|
|
VkImageLayout finalLayout;
|
|
} VkAttachmentDescription2KHR;
|
|
typedef struct VkAttachmentReference2KHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t attachment;
|
|
VkImageLayout layout;
|
|
VkImageAspectFlags aspectMask;
|
|
} VkAttachmentReference2KHR;
|
|
typedef struct VkSubpassDescription2KHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkSubpassDescriptionFlags flags;
|
|
VkPipelineBindPoint pipelineBindPoint;
|
|
uint32_t viewMask;
|
|
uint32_t inputAttachmentCount;
|
|
const VkAttachmentReference2KHR* pInputAttachments;
|
|
uint32_t colorAttachmentCount;
|
|
const VkAttachmentReference2KHR* pColorAttachments;
|
|
const VkAttachmentReference2KHR* pResolveAttachments;
|
|
const VkAttachmentReference2KHR* pDepthStencilAttachment;
|
|
uint32_t preserveAttachmentCount;
|
|
const uint32_t* pPreserveAttachments;
|
|
} VkSubpassDescription2KHR;
|
|
typedef struct VkSubpassDependency2KHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
uint32_t srcSubpass;
|
|
uint32_t dstSubpass;
|
|
VkPipelineStageFlags srcStageMask;
|
|
VkPipelineStageFlags dstStageMask;
|
|
VkAccessFlags srcAccessMask;
|
|
VkAccessFlags dstAccessMask;
|
|
VkDependencyFlags dependencyFlags;
|
|
int32_t viewOffset;
|
|
} VkSubpassDependency2KHR;
|
|
typedef struct VkRenderPassCreateInfo2KHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkRenderPassCreateFlags flags;
|
|
uint32_t attachmentCount;
|
|
const VkAttachmentDescription2KHR* pAttachments;
|
|
uint32_t subpassCount;
|
|
const VkSubpassDescription2KHR* pSubpasses;
|
|
uint32_t dependencyCount;
|
|
const VkSubpassDependency2KHR* pDependencies;
|
|
uint32_t correlatedViewMaskCount;
|
|
const uint32_t* pCorrelatedViewMasks;
|
|
} VkRenderPassCreateInfo2KHR;
|
|
typedef struct VkSubpassBeginInfoKHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
VkSubpassContents contents;
|
|
} VkSubpassBeginInfoKHR;
|
|
|
|
typedef struct VkSubpassEndInfoKHR
|
|
{
|
|
VkStructureType sType;
|
|
const void* pNext;
|
|
} VkSubpassEndInfoKHR;
|
|
typedef VkResult(VKAPI_PTR* PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
|
|
typedef void(VKAPI_PTR* PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfoKHR* pSubpassBeginInfo);
|
|
typedef void(VKAPI_PTR* PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR* pSubpassBeginInfo, const VkSubpassEndInfoKHR* pSubpassEndInfo);
|
|
typedef void(VKAPI_PTR* PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR* pSubpassEndInfo);
|
|
#endif // VK_HEADER_VERSION < 80
|
|
|
|
#if VK_HEADER_VERSION < 95
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR (VkStructureType)1000082000
|
|
typedef struct VkPhysicalDeviceFloat16Int8FeaturesKHR
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkBool32 shaderFloat16;
|
|
VkBool32 shaderInt8;
|
|
} VkPhysicalDeviceFloat16Int8FeaturesKHR;
|
|
#endif // VK_HEADER_VERSION < 95
|
|
|
|
#if VK_HEADER_VERSION < 97
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT (VkStructureType)1000237000
|
|
typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkDeviceSize heapBudget[VK_MAX_MEMORY_HEAPS];
|
|
VkDeviceSize heapUsage[VK_MAX_MEMORY_HEAPS];
|
|
} VkPhysicalDeviceMemoryBudgetPropertiesEXT;
|
|
#endif // VK_HEADER_VERSION < 97
|
|
|
|
#if VK_HEADER_VERSION < 101
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV (VkStructureType)1000249000
|
|
#define VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV (VkStructureType)1000249001
|
|
#define VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV (VkStructureType)1000249002
|
|
typedef enum VkComponentTypeNV
|
|
{
|
|
VK_COMPONENT_TYPE_FLOAT16_NV = 0,
|
|
VK_COMPONENT_TYPE_FLOAT32_NV = 1,
|
|
VK_COMPONENT_TYPE_FLOAT64_NV = 2,
|
|
VK_COMPONENT_TYPE_SINT8_NV = 3,
|
|
VK_COMPONENT_TYPE_SINT16_NV = 4,
|
|
VK_COMPONENT_TYPE_SINT32_NV = 5,
|
|
VK_COMPONENT_TYPE_SINT64_NV = 6,
|
|
VK_COMPONENT_TYPE_UINT8_NV = 7,
|
|
VK_COMPONENT_TYPE_UINT16_NV = 8,
|
|
VK_COMPONENT_TYPE_UINT32_NV = 9,
|
|
VK_COMPONENT_TYPE_UINT64_NV = 10,
|
|
VK_COMPONENT_TYPE_BEGIN_RANGE_NV = VK_COMPONENT_TYPE_FLOAT16_NV,
|
|
VK_COMPONENT_TYPE_END_RANGE_NV = VK_COMPONENT_TYPE_UINT64_NV,
|
|
VK_COMPONENT_TYPE_RANGE_SIZE_NV = (VK_COMPONENT_TYPE_UINT64_NV - VK_COMPONENT_TYPE_FLOAT16_NV + 1),
|
|
VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
|
|
} VkComponentTypeNV;
|
|
typedef enum VkScopeNV
|
|
{
|
|
VK_SCOPE_DEVICE_NV = 1,
|
|
VK_SCOPE_WORKGROUP_NV = 2,
|
|
VK_SCOPE_SUBGROUP_NV = 3,
|
|
VK_SCOPE_QUEUE_FAMILY_NV = 5,
|
|
VK_SCOPE_BEGIN_RANGE_NV = VK_SCOPE_DEVICE_NV,
|
|
VK_SCOPE_END_RANGE_NV = VK_SCOPE_QUEUE_FAMILY_NV,
|
|
VK_SCOPE_RANGE_SIZE_NV = (VK_SCOPE_QUEUE_FAMILY_NV - VK_SCOPE_DEVICE_NV + 1),
|
|
VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF
|
|
} VkScopeNV;
|
|
typedef struct VkCooperativeMatrixPropertiesNV
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
uint32_t MSize;
|
|
uint32_t NSize;
|
|
uint32_t KSize;
|
|
VkComponentTypeNV AType;
|
|
VkComponentTypeNV BType;
|
|
VkComponentTypeNV CType;
|
|
VkComponentTypeNV DType;
|
|
VkScopeNV scope;
|
|
} VkCooperativeMatrixPropertiesNV;
|
|
typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkBool32 cooperativeMatrix;
|
|
VkBool32 cooperativeMatrixRobustBufferAccess;
|
|
} VkPhysicalDeviceCooperativeMatrixFeaturesNV;
|
|
typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV
|
|
{
|
|
VkStructureType sType;
|
|
void* pNext;
|
|
VkShaderStageFlags cooperativeMatrixSupportedStages;
|
|
} VkPhysicalDeviceCooperativeMatrixPropertiesNV;
|
|
typedef VkResult(VKAPI_PTR* PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
|
|
#endif // VK_HEADER_VERSION < 101
|
|
|
|
#endif // NCNN_VULKAN_HEADER_FIX_H
|