Update Vulkan headers. Hack around another validation check (which I beleive to be bugged).

This commit is contained in:
Henrik Rydgard 2016-12-15 18:11:26 +01:00
parent aa964ea2e5
commit a2b49fd0e0
16 changed files with 1642 additions and 1042 deletions

View file

@ -168,7 +168,7 @@ VulkanContext::~VulkanContext() {
void TransitionToPresent(VkCommandBuffer cmd, VkImage image) { void TransitionToPresent(VkCommandBuffer cmd, VkImage image) {
VkImageMemoryBarrier prePresentBarrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER }; VkImageMemoryBarrier prePresentBarrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER };
prePresentBarrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; prePresentBarrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
prePresentBarrier.dstAccessMask = 0; prePresentBarrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT;
prePresentBarrier.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; prePresentBarrier.oldLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
prePresentBarrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; prePresentBarrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
prePresentBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED; prePresentBarrier.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
@ -185,7 +185,7 @@ void TransitionToPresent(VkCommandBuffer cmd, VkImage image) {
void TransitionFromPresent(VkCommandBuffer cmd, VkImage image) { void TransitionFromPresent(VkCommandBuffer cmd, VkImage image) {
VkImageMemoryBarrier prePresentBarrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER }; VkImageMemoryBarrier prePresentBarrier = { VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER };
prePresentBarrier.srcAccessMask = 0; prePresentBarrier.srcAccessMask = VK_ACCESS_MEMORY_READ_BIT;
prePresentBarrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; prePresentBarrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
prePresentBarrier.oldLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; prePresentBarrier.oldLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR;
prePresentBarrier.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; prePresentBarrier.newLayout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL;
@ -1282,39 +1282,43 @@ void TransitionImageLayout(VkCommandBuffer cmd, VkImage image, VkImageAspectFlag
image_memory_barrier.subresourceRange.levelCount = 1; image_memory_barrier.subresourceRange.levelCount = 1;
image_memory_barrier.subresourceRange.layerCount = 1; image_memory_barrier.subresourceRange.layerCount = 1;
if (old_image_layout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) { if (old_image_layout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) {
image_memory_barrier.srcAccessMask = VK_ACCESS_MEMORY_READ_BIT; image_memory_barrier.srcAccessMask |= VK_ACCESS_MEMORY_READ_BIT;
} }
if (old_image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) { if (old_image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) {
image_memory_barrier.srcAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT; image_memory_barrier.srcAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT;
} }
if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) { if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) {
if (old_image_layout == VK_IMAGE_LAYOUT_PREINITIALIZED) { if (old_image_layout == VK_IMAGE_LAYOUT_PREINITIALIZED) {
image_memory_barrier.srcAccessMask = VK_ACCESS_HOST_WRITE_BIT; image_memory_barrier.srcAccessMask |= VK_ACCESS_HOST_WRITE_BIT;
} }
image_memory_barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT; image_memory_barrier.dstAccessMask |= VK_ACCESS_TRANSFER_READ_BIT;
} }
if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) { if (new_image_layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) {
/* Make sure anything that was copying from this image has completed */ /* Make sure anything that was copying from this image has completed */
image_memory_barrier.dstAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; image_memory_barrier.dstAccessMask |= VK_ACCESS_TRANSFER_WRITE_BIT;
} }
if (new_image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) { if (new_image_layout == VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL) {
/* Make sure any Copy or CPU writes to image are flushed */ /* Make sure any Copy or CPU writes to image are flushed */
if (old_image_layout != VK_IMAGE_LAYOUT_UNDEFINED) { if (old_image_layout != VK_IMAGE_LAYOUT_UNDEFINED) {
image_memory_barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT; image_memory_barrier.srcAccessMask |= VK_ACCESS_TRANSFER_WRITE_BIT;
} }
image_memory_barrier.dstAccessMask = VK_ACCESS_SHADER_READ_BIT; image_memory_barrier.dstAccessMask |= VK_ACCESS_SHADER_READ_BIT;
} }
if (new_image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) { if (new_image_layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL) {
image_memory_barrier.dstAccessMask = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT; image_memory_barrier.dstAccessMask |= VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT;
} }
if (new_image_layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) { if (new_image_layout == VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL) {
image_memory_barrier.dstAccessMask = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT; image_memory_barrier.dstAccessMask |= VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT;
}
if (new_image_layout == VK_IMAGE_LAYOUT_PRESENT_SRC_KHR) {
image_memory_barrier.dstAccessMask |= VK_ACCESS_MEMORY_READ_BIT;
} }
VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;

View file

@ -50,7 +50,7 @@
#include "GPU/Vulkan/ShaderManagerVulkan.h" #include "GPU/Vulkan/ShaderManagerVulkan.h"
#include "GPU/Vulkan/VulkanUtil.h" #include "GPU/Vulkan/VulkanUtil.h"
const VkFormat framebufFormat = VK_FORMAT_R8G8B8A8_UNORM; const VkFormat framebufFormat = VK_FORMAT_B8G8R8A8_UNORM;
static const char tex_fs[] = R"(#version 400 static const char tex_fs[] = R"(#version 400
#extension GL_ARB_separate_shader_objects : enable #extension GL_ARB_separate_shader_objects : enable

View file

@ -131,8 +131,9 @@ static VkBool32 VKAPI_CALL Vulkan_Dbg(VkDebugReportFlagsEXT msgFlags, VkDebugRep
return false; return false;
if (msgCode == 7 && startsWith(pMsg, "You cannot transition the layout")) if (msgCode == 7 && startsWith(pMsg, "You cannot transition the layout"))
return false; return false;
//if (msgCode == 43 && startsWith(pMsg, "At Draw time the active render")) // This seems like a bogus result when submitting two command buffers in one go, one creating the image, the other one using it.
// return false; if (msgCode == 6 && startsWith(pMsg, "Cannot submit cmd buffer using image"))
return false;
if (msgCode == 44 && startsWith(pMsg, "At Draw time the active render")) if (msgCode == 44 && startsWith(pMsg, "At Draw time the active render"))
return false; return false;

View file

@ -28,7 +28,7 @@
#define GLSLstd450_H #define GLSLstd450_H
static const int GLSLstd450Version = 100; static const int GLSLstd450Version = 100;
static const int GLSLstd450Revision = 1; static const int GLSLstd450Revision = 3;
enum GLSLstd450 { enum GLSLstd450 {
GLSLstd450Bad = 0, // Don't use GLSLstd450Bad = 0, // Don't use

View file

@ -2,24 +2,17 @@
* Copyright (c) 2015-2016 Valve Corporation * Copyright (c) 2015-2016 Valve Corporation
* Copyright (c) 2015-2016 LunarG, Inc. * Copyright (c) 2015-2016 LunarG, Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Licensed under the Apache License, Version 2.0 (the "License");
* of this software and/or associated documentation files (the "Materials"), to * you may not use this file except in compliance with the License.
* deal in the Materials without restriction, including without limitation the * You may obtain a copy of the License at
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Materials, and to permit persons to whom the Materials are
* furnished to do so, subject to the following conditions:
* *
* The above copyright notice(s) and this permission notice shall be included in * http://www.apache.org/licenses/LICENSE-2.0
* all copies or substantial portions of the Materials.
* *
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * Unless required by applicable law or agreed to in writing, software
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * distributed under the License is distributed on an "AS IS" BASIS,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * limitations under the License.
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE
* USE OR OTHER DEALINGS IN THE MATERIALS.
* *
* Author: Cody Northrop <cody@lunarg.com> * Author: Cody Northrop <cody@lunarg.com>
*/ */

View file

@ -50,12 +50,12 @@
typedef unsigned int SpvId; typedef unsigned int SpvId;
#define SPV_VERSION 0x10000 #define SPV_VERSION 0x10100
#define SPV_REVISION 3 #define SPV_REVISION 4
static const unsigned int SpvMagicNumber = 0x07230203; static const unsigned int SpvMagicNumber = 0x07230203;
static const unsigned int SpvVersion = 0x00010000; static const unsigned int SpvVersion = 0x00010100;
static const unsigned int SpvRevision = 3; static const unsigned int SpvRevision = 4;
static const unsigned int SpvOpCodeMask = 0xffff; static const unsigned int SpvOpCodeMask = 0xffff;
static const unsigned int SpvWordCountShift = 16; static const unsigned int SpvWordCountShift = 16;
@ -65,6 +65,7 @@ typedef enum SpvSourceLanguage_ {
SpvSourceLanguageGLSL = 2, SpvSourceLanguageGLSL = 2,
SpvSourceLanguageOpenCL_C = 3, SpvSourceLanguageOpenCL_C = 3,
SpvSourceLanguageOpenCL_CPP = 4, SpvSourceLanguageOpenCL_CPP = 4,
SpvSourceLanguageMax = 0x7fffffff,
} SpvSourceLanguage; } SpvSourceLanguage;
typedef enum SpvExecutionModel_ { typedef enum SpvExecutionModel_ {
@ -75,18 +76,21 @@ typedef enum SpvExecutionModel_ {
SpvExecutionModelFragment = 4, SpvExecutionModelFragment = 4,
SpvExecutionModelGLCompute = 5, SpvExecutionModelGLCompute = 5,
SpvExecutionModelKernel = 6, SpvExecutionModelKernel = 6,
SpvExecutionModelMax = 0x7fffffff,
} SpvExecutionModel; } SpvExecutionModel;
typedef enum SpvAddressingModel_ { typedef enum SpvAddressingModel_ {
SpvAddressingModelLogical = 0, SpvAddressingModelLogical = 0,
SpvAddressingModelPhysical32 = 1, SpvAddressingModelPhysical32 = 1,
SpvAddressingModelPhysical64 = 2, SpvAddressingModelPhysical64 = 2,
SpvAddressingModelMax = 0x7fffffff,
} SpvAddressingModel; } SpvAddressingModel;
typedef enum SpvMemoryModel_ { typedef enum SpvMemoryModel_ {
SpvMemoryModelSimple = 0, SpvMemoryModelSimple = 0,
SpvMemoryModelGLSL450 = 1, SpvMemoryModelGLSL450 = 1,
SpvMemoryModelOpenCL = 2, SpvMemoryModelOpenCL = 2,
SpvMemoryModelMax = 0x7fffffff,
} SpvMemoryModel; } SpvMemoryModel;
typedef enum SpvExecutionMode_ { typedef enum SpvExecutionMode_ {
@ -121,6 +125,11 @@ typedef enum SpvExecutionMode_ {
SpvExecutionModeOutputTriangleStrip = 29, SpvExecutionModeOutputTriangleStrip = 29,
SpvExecutionModeVecTypeHint = 30, SpvExecutionModeVecTypeHint = 30,
SpvExecutionModeContractionOff = 31, SpvExecutionModeContractionOff = 31,
SpvExecutionModeInitializer = 33,
SpvExecutionModeFinalizer = 34,
SpvExecutionModeSubgroupSize = 35,
SpvExecutionModeSubgroupsPerWorkgroup = 36,
SpvExecutionModeMax = 0x7fffffff,
} SpvExecutionMode; } SpvExecutionMode;
typedef enum SpvStorageClass_ { typedef enum SpvStorageClass_ {
@ -136,6 +145,7 @@ typedef enum SpvStorageClass_ {
SpvStorageClassPushConstant = 9, SpvStorageClassPushConstant = 9,
SpvStorageClassAtomicCounter = 10, SpvStorageClassAtomicCounter = 10,
SpvStorageClassImage = 11, SpvStorageClassImage = 11,
SpvStorageClassMax = 0x7fffffff,
} SpvStorageClass; } SpvStorageClass;
typedef enum SpvDim_ { typedef enum SpvDim_ {
@ -146,6 +156,7 @@ typedef enum SpvDim_ {
SpvDimRect = 4, SpvDimRect = 4,
SpvDimBuffer = 5, SpvDimBuffer = 5,
SpvDimSubpassData = 6, SpvDimSubpassData = 6,
SpvDimMax = 0x7fffffff,
} SpvDim; } SpvDim;
typedef enum SpvSamplerAddressingMode_ { typedef enum SpvSamplerAddressingMode_ {
@ -154,11 +165,13 @@ typedef enum SpvSamplerAddressingMode_ {
SpvSamplerAddressingModeClamp = 2, SpvSamplerAddressingModeClamp = 2,
SpvSamplerAddressingModeRepeat = 3, SpvSamplerAddressingModeRepeat = 3,
SpvSamplerAddressingModeRepeatMirrored = 4, SpvSamplerAddressingModeRepeatMirrored = 4,
SpvSamplerAddressingModeMax = 0x7fffffff,
} SpvSamplerAddressingMode; } SpvSamplerAddressingMode;
typedef enum SpvSamplerFilterMode_ { typedef enum SpvSamplerFilterMode_ {
SpvSamplerFilterModeNearest = 0, SpvSamplerFilterModeNearest = 0,
SpvSamplerFilterModeLinear = 1, SpvSamplerFilterModeLinear = 1,
SpvSamplerFilterModeMax = 0x7fffffff,
} SpvSamplerFilterMode; } SpvSamplerFilterMode;
typedef enum SpvImageFormat_ { typedef enum SpvImageFormat_ {
@ -202,6 +215,7 @@ typedef enum SpvImageFormat_ {
SpvImageFormatRg8ui = 37, SpvImageFormatRg8ui = 37,
SpvImageFormatR16ui = 38, SpvImageFormatR16ui = 38,
SpvImageFormatR8ui = 39, SpvImageFormatR8ui = 39,
SpvImageFormatMax = 0x7fffffff,
} SpvImageFormat; } SpvImageFormat;
typedef enum SpvImageChannelOrder_ { typedef enum SpvImageChannelOrder_ {
@ -224,6 +238,8 @@ typedef enum SpvImageChannelOrder_ {
SpvImageChannelOrdersRGBx = 16, SpvImageChannelOrdersRGBx = 16,
SpvImageChannelOrdersRGBA = 17, SpvImageChannelOrdersRGBA = 17,
SpvImageChannelOrdersBGRA = 18, SpvImageChannelOrdersBGRA = 18,
SpvImageChannelOrderABGR = 19,
SpvImageChannelOrderMax = 0x7fffffff,
} SpvImageChannelOrder; } SpvImageChannelOrder;
typedef enum SpvImageChannelDataType_ { typedef enum SpvImageChannelDataType_ {
@ -244,6 +260,7 @@ typedef enum SpvImageChannelDataType_ {
SpvImageChannelDataTypeFloat = 14, SpvImageChannelDataTypeFloat = 14,
SpvImageChannelDataTypeUnormInt24 = 15, SpvImageChannelDataTypeUnormInt24 = 15,
SpvImageChannelDataTypeUnormInt101010_2 = 16, SpvImageChannelDataTypeUnormInt101010_2 = 16,
SpvImageChannelDataTypeMax = 0x7fffffff,
} SpvImageChannelDataType; } SpvImageChannelDataType;
typedef enum SpvImageOperandsShift_ { typedef enum SpvImageOperandsShift_ {
@ -255,6 +272,7 @@ typedef enum SpvImageOperandsShift_ {
SpvImageOperandsConstOffsetsShift = 5, SpvImageOperandsConstOffsetsShift = 5,
SpvImageOperandsSampleShift = 6, SpvImageOperandsSampleShift = 6,
SpvImageOperandsMinLodShift = 7, SpvImageOperandsMinLodShift = 7,
SpvImageOperandsMax = 0x7fffffff,
} SpvImageOperandsShift; } SpvImageOperandsShift;
typedef enum SpvImageOperandsMask_ { typedef enum SpvImageOperandsMask_ {
@ -275,6 +293,7 @@ typedef enum SpvFPFastMathModeShift_ {
SpvFPFastMathModeNSZShift = 2, SpvFPFastMathModeNSZShift = 2,
SpvFPFastMathModeAllowRecipShift = 3, SpvFPFastMathModeAllowRecipShift = 3,
SpvFPFastMathModeFastShift = 4, SpvFPFastMathModeFastShift = 4,
SpvFPFastMathModeMax = 0x7fffffff,
} SpvFPFastMathModeShift; } SpvFPFastMathModeShift;
typedef enum SpvFPFastMathModeMask_ { typedef enum SpvFPFastMathModeMask_ {
@ -291,17 +310,20 @@ typedef enum SpvFPRoundingMode_ {
SpvFPRoundingModeRTZ = 1, SpvFPRoundingModeRTZ = 1,
SpvFPRoundingModeRTP = 2, SpvFPRoundingModeRTP = 2,
SpvFPRoundingModeRTN = 3, SpvFPRoundingModeRTN = 3,
SpvFPRoundingModeMax = 0x7fffffff,
} SpvFPRoundingMode; } SpvFPRoundingMode;
typedef enum SpvLinkageType_ { typedef enum SpvLinkageType_ {
SpvLinkageTypeExport = 0, SpvLinkageTypeExport = 0,
SpvLinkageTypeImport = 1, SpvLinkageTypeImport = 1,
SpvLinkageTypeMax = 0x7fffffff,
} SpvLinkageType; } SpvLinkageType;
typedef enum SpvAccessQualifier_ { typedef enum SpvAccessQualifier_ {
SpvAccessQualifierReadOnly = 0, SpvAccessQualifierReadOnly = 0,
SpvAccessQualifierWriteOnly = 1, SpvAccessQualifierWriteOnly = 1,
SpvAccessQualifierReadWrite = 2, SpvAccessQualifierReadWrite = 2,
SpvAccessQualifierMax = 0x7fffffff,
} SpvAccessQualifier; } SpvAccessQualifier;
typedef enum SpvFunctionParameterAttribute_ { typedef enum SpvFunctionParameterAttribute_ {
@ -313,6 +335,7 @@ typedef enum SpvFunctionParameterAttribute_ {
SpvFunctionParameterAttributeNoCapture = 5, SpvFunctionParameterAttributeNoCapture = 5,
SpvFunctionParameterAttributeNoWrite = 6, SpvFunctionParameterAttributeNoWrite = 6,
SpvFunctionParameterAttributeNoReadWrite = 7, SpvFunctionParameterAttributeNoReadWrite = 7,
SpvFunctionParameterAttributeMax = 0x7fffffff,
} SpvFunctionParameterAttribute; } SpvFunctionParameterAttribute;
typedef enum SpvDecoration_ { typedef enum SpvDecoration_ {
@ -359,6 +382,8 @@ typedef enum SpvDecoration_ {
SpvDecorationNoContraction = 42, SpvDecorationNoContraction = 42,
SpvDecorationInputAttachmentIndex = 43, SpvDecorationInputAttachmentIndex = 43,
SpvDecorationAlignment = 44, SpvDecorationAlignment = 44,
SpvDecorationMaxByteOffset = 45,
SpvDecorationMax = 0x7fffffff,
} SpvDecoration; } SpvDecoration;
typedef enum SpvBuiltIn_ { typedef enum SpvBuiltIn_ {
@ -403,11 +428,21 @@ typedef enum SpvBuiltIn_ {
SpvBuiltInSubgroupLocalInvocationId = 41, SpvBuiltInSubgroupLocalInvocationId = 41,
SpvBuiltInVertexIndex = 42, SpvBuiltInVertexIndex = 42,
SpvBuiltInInstanceIndex = 43, SpvBuiltInInstanceIndex = 43,
SpvBuiltInSubgroupEqMaskKHR = 4416,
SpvBuiltInSubgroupGeMaskKHR = 4417,
SpvBuiltInSubgroupGtMaskKHR = 4418,
SpvBuiltInSubgroupLeMaskKHR = 4419,
SpvBuiltInSubgroupLtMaskKHR = 4420,
SpvBuiltInBaseVertex = 4424,
SpvBuiltInBaseInstance = 4425,
SpvBuiltInDrawIndex = 4426,
SpvBuiltInMax = 0x7fffffff,
} SpvBuiltIn; } SpvBuiltIn;
typedef enum SpvSelectionControlShift_ { typedef enum SpvSelectionControlShift_ {
SpvSelectionControlFlattenShift = 0, SpvSelectionControlFlattenShift = 0,
SpvSelectionControlDontFlattenShift = 1, SpvSelectionControlDontFlattenShift = 1,
SpvSelectionControlMax = 0x7fffffff,
} SpvSelectionControlShift; } SpvSelectionControlShift;
typedef enum SpvSelectionControlMask_ { typedef enum SpvSelectionControlMask_ {
@ -419,12 +454,17 @@ typedef enum SpvSelectionControlMask_ {
typedef enum SpvLoopControlShift_ { typedef enum SpvLoopControlShift_ {
SpvLoopControlUnrollShift = 0, SpvLoopControlUnrollShift = 0,
SpvLoopControlDontUnrollShift = 1, SpvLoopControlDontUnrollShift = 1,
SpvLoopControlDependencyInfiniteShift = 2,
SpvLoopControlDependencyLengthShift = 3,
SpvLoopControlMax = 0x7fffffff,
} SpvLoopControlShift; } SpvLoopControlShift;
typedef enum SpvLoopControlMask_ { typedef enum SpvLoopControlMask_ {
SpvLoopControlMaskNone = 0, SpvLoopControlMaskNone = 0,
SpvLoopControlUnrollMask = 0x00000001, SpvLoopControlUnrollMask = 0x00000001,
SpvLoopControlDontUnrollMask = 0x00000002, SpvLoopControlDontUnrollMask = 0x00000002,
SpvLoopControlDependencyInfiniteMask = 0x00000004,
SpvLoopControlDependencyLengthMask = 0x00000008,
} SpvLoopControlMask; } SpvLoopControlMask;
typedef enum SpvFunctionControlShift_ { typedef enum SpvFunctionControlShift_ {
@ -432,6 +472,7 @@ typedef enum SpvFunctionControlShift_ {
SpvFunctionControlDontInlineShift = 1, SpvFunctionControlDontInlineShift = 1,
SpvFunctionControlPureShift = 2, SpvFunctionControlPureShift = 2,
SpvFunctionControlConstShift = 3, SpvFunctionControlConstShift = 3,
SpvFunctionControlMax = 0x7fffffff,
} SpvFunctionControlShift; } SpvFunctionControlShift;
typedef enum SpvFunctionControlMask_ { typedef enum SpvFunctionControlMask_ {
@ -453,6 +494,7 @@ typedef enum SpvMemorySemanticsShift_ {
SpvMemorySemanticsCrossWorkgroupMemoryShift = 9, SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
SpvMemorySemanticsAtomicCounterMemoryShift = 10, SpvMemorySemanticsAtomicCounterMemoryShift = 10,
SpvMemorySemanticsImageMemoryShift = 11, SpvMemorySemanticsImageMemoryShift = 11,
SpvMemorySemanticsMax = 0x7fffffff,
} SpvMemorySemanticsShift; } SpvMemorySemanticsShift;
typedef enum SpvMemorySemanticsMask_ { typedef enum SpvMemorySemanticsMask_ {
@ -473,6 +515,7 @@ typedef enum SpvMemoryAccessShift_ {
SpvMemoryAccessVolatileShift = 0, SpvMemoryAccessVolatileShift = 0,
SpvMemoryAccessAlignedShift = 1, SpvMemoryAccessAlignedShift = 1,
SpvMemoryAccessNontemporalShift = 2, SpvMemoryAccessNontemporalShift = 2,
SpvMemoryAccessMax = 0x7fffffff,
} SpvMemoryAccessShift; } SpvMemoryAccessShift;
typedef enum SpvMemoryAccessMask_ { typedef enum SpvMemoryAccessMask_ {
@ -488,22 +531,26 @@ typedef enum SpvScope_ {
SpvScopeWorkgroup = 2, SpvScopeWorkgroup = 2,
SpvScopeSubgroup = 3, SpvScopeSubgroup = 3,
SpvScopeInvocation = 4, SpvScopeInvocation = 4,
SpvScopeMax = 0x7fffffff,
} SpvScope; } SpvScope;
typedef enum SpvGroupOperation_ { typedef enum SpvGroupOperation_ {
SpvGroupOperationReduce = 0, SpvGroupOperationReduce = 0,
SpvGroupOperationInclusiveScan = 1, SpvGroupOperationInclusiveScan = 1,
SpvGroupOperationExclusiveScan = 2, SpvGroupOperationExclusiveScan = 2,
SpvGroupOperationMax = 0x7fffffff,
} SpvGroupOperation; } SpvGroupOperation;
typedef enum SpvKernelEnqueueFlags_ { typedef enum SpvKernelEnqueueFlags_ {
SpvKernelEnqueueFlagsNoWait = 0, SpvKernelEnqueueFlagsNoWait = 0,
SpvKernelEnqueueFlagsWaitKernel = 1, SpvKernelEnqueueFlagsWaitKernel = 1,
SpvKernelEnqueueFlagsWaitWorkGroup = 2, SpvKernelEnqueueFlagsWaitWorkGroup = 2,
SpvKernelEnqueueFlagsMax = 0x7fffffff,
} SpvKernelEnqueueFlags; } SpvKernelEnqueueFlags;
typedef enum SpvKernelProfilingInfoShift_ { typedef enum SpvKernelProfilingInfoShift_ {
SpvKernelProfilingInfoCmdExecTimeShift = 0, SpvKernelProfilingInfoCmdExecTimeShift = 0,
SpvKernelProfilingInfoMax = 0x7fffffff,
} SpvKernelProfilingInfoShift; } SpvKernelProfilingInfoShift;
typedef enum SpvKernelProfilingInfoMask_ { typedef enum SpvKernelProfilingInfoMask_ {
@ -568,6 +615,12 @@ typedef enum SpvCapability_ {
SpvCapabilityStorageImageReadWithoutFormat = 55, SpvCapabilityStorageImageReadWithoutFormat = 55,
SpvCapabilityStorageImageWriteWithoutFormat = 56, SpvCapabilityStorageImageWriteWithoutFormat = 56,
SpvCapabilityMultiViewport = 57, SpvCapabilityMultiViewport = 57,
SpvCapabilitySubgroupDispatch = 58,
SpvCapabilityNamedBarrier = 59,
SpvCapabilityPipeStorage = 60,
SpvCapabilitySubgroupBallotKHR = 4423,
SpvCapabilityDrawParameters = 4427,
SpvCapabilityMax = 0x7fffffff,
} SpvCapability; } SpvCapability;
typedef enum SpvOp_ { typedef enum SpvOp_ {
@ -865,6 +918,19 @@ typedef enum SpvOp_ {
SpvOpAtomicFlagTestAndSet = 318, SpvOpAtomicFlagTestAndSet = 318,
SpvOpAtomicFlagClear = 319, SpvOpAtomicFlagClear = 319,
SpvOpImageSparseRead = 320, SpvOpImageSparseRead = 320,
SpvOpSizeOf = 321,
SpvOpTypePipeStorage = 322,
SpvOpConstantPipeStorage = 323,
SpvOpCreatePipeFromPipeStorage = 324,
SpvOpGetKernelLocalSizeForSubgroupCount = 325,
SpvOpGetKernelMaxNumSubgroups = 326,
SpvOpTypeNamedBarrier = 327,
SpvOpNamedBarrierInitialize = 328,
SpvOpMemoryNamedBarrier = 329,
SpvOpModuleProcessed = 330,
SpvOpSubgroupBallotKHR = 4421,
SpvOpSubgroupFirstInvocationKHR = 4422,
SpvOpMax = 0x7fffffff,
} SpvOp; } SpvOp;
#endif // #ifndef spirv_H #endif // #ifndef spirv_H

View file

@ -46,12 +46,12 @@ namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 0x10000 #define SPV_VERSION 0x10100
#define SPV_REVISION 3 #define SPV_REVISION 4
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000; static const unsigned int Version = 0x00010100;
static const unsigned int Revision = 3; static const unsigned int Revision = 4;
static const unsigned int OpCodeMask = 0xffff; static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
@ -61,6 +61,7 @@ enum SourceLanguage {
SourceLanguageGLSL = 2, SourceLanguageGLSL = 2,
SourceLanguageOpenCL_C = 3, SourceLanguageOpenCL_C = 3,
SourceLanguageOpenCL_CPP = 4, SourceLanguageOpenCL_CPP = 4,
SourceLanguageMax = 0x7fffffff,
}; };
enum ExecutionModel { enum ExecutionModel {
@ -71,18 +72,21 @@ enum ExecutionModel {
ExecutionModelFragment = 4, ExecutionModelFragment = 4,
ExecutionModelGLCompute = 5, ExecutionModelGLCompute = 5,
ExecutionModelKernel = 6, ExecutionModelKernel = 6,
ExecutionModelMax = 0x7fffffff,
}; };
enum AddressingModel { enum AddressingModel {
AddressingModelLogical = 0, AddressingModelLogical = 0,
AddressingModelPhysical32 = 1, AddressingModelPhysical32 = 1,
AddressingModelPhysical64 = 2, AddressingModelPhysical64 = 2,
AddressingModelMax = 0x7fffffff,
}; };
enum MemoryModel { enum MemoryModel {
MemoryModelSimple = 0, MemoryModelSimple = 0,
MemoryModelGLSL450 = 1, MemoryModelGLSL450 = 1,
MemoryModelOpenCL = 2, MemoryModelOpenCL = 2,
MemoryModelMax = 0x7fffffff,
}; };
enum ExecutionMode { enum ExecutionMode {
@ -117,6 +121,11 @@ enum ExecutionMode {
ExecutionModeOutputTriangleStrip = 29, ExecutionModeOutputTriangleStrip = 29,
ExecutionModeVecTypeHint = 30, ExecutionModeVecTypeHint = 30,
ExecutionModeContractionOff = 31, ExecutionModeContractionOff = 31,
ExecutionModeInitializer = 33,
ExecutionModeFinalizer = 34,
ExecutionModeSubgroupSize = 35,
ExecutionModeSubgroupsPerWorkgroup = 36,
ExecutionModeMax = 0x7fffffff,
}; };
enum StorageClass { enum StorageClass {
@ -132,6 +141,7 @@ enum StorageClass {
StorageClassPushConstant = 9, StorageClassPushConstant = 9,
StorageClassAtomicCounter = 10, StorageClassAtomicCounter = 10,
StorageClassImage = 11, StorageClassImage = 11,
StorageClassMax = 0x7fffffff,
}; };
enum Dim { enum Dim {
@ -142,6 +152,7 @@ enum Dim {
DimRect = 4, DimRect = 4,
DimBuffer = 5, DimBuffer = 5,
DimSubpassData = 6, DimSubpassData = 6,
DimMax = 0x7fffffff,
}; };
enum SamplerAddressingMode { enum SamplerAddressingMode {
@ -150,11 +161,13 @@ enum SamplerAddressingMode {
SamplerAddressingModeClamp = 2, SamplerAddressingModeClamp = 2,
SamplerAddressingModeRepeat = 3, SamplerAddressingModeRepeat = 3,
SamplerAddressingModeRepeatMirrored = 4, SamplerAddressingModeRepeatMirrored = 4,
SamplerAddressingModeMax = 0x7fffffff,
}; };
enum SamplerFilterMode { enum SamplerFilterMode {
SamplerFilterModeNearest = 0, SamplerFilterModeNearest = 0,
SamplerFilterModeLinear = 1, SamplerFilterModeLinear = 1,
SamplerFilterModeMax = 0x7fffffff,
}; };
enum ImageFormat { enum ImageFormat {
@ -198,6 +211,7 @@ enum ImageFormat {
ImageFormatRg8ui = 37, ImageFormatRg8ui = 37,
ImageFormatR16ui = 38, ImageFormatR16ui = 38,
ImageFormatR8ui = 39, ImageFormatR8ui = 39,
ImageFormatMax = 0x7fffffff,
}; };
enum ImageChannelOrder { enum ImageChannelOrder {
@ -220,6 +234,8 @@ enum ImageChannelOrder {
ImageChannelOrdersRGBx = 16, ImageChannelOrdersRGBx = 16,
ImageChannelOrdersRGBA = 17, ImageChannelOrdersRGBA = 17,
ImageChannelOrdersBGRA = 18, ImageChannelOrdersBGRA = 18,
ImageChannelOrderABGR = 19,
ImageChannelOrderMax = 0x7fffffff,
}; };
enum ImageChannelDataType { enum ImageChannelDataType {
@ -240,6 +256,7 @@ enum ImageChannelDataType {
ImageChannelDataTypeFloat = 14, ImageChannelDataTypeFloat = 14,
ImageChannelDataTypeUnormInt24 = 15, ImageChannelDataTypeUnormInt24 = 15,
ImageChannelDataTypeUnormInt101010_2 = 16, ImageChannelDataTypeUnormInt101010_2 = 16,
ImageChannelDataTypeMax = 0x7fffffff,
}; };
enum ImageOperandsShift { enum ImageOperandsShift {
@ -251,6 +268,7 @@ enum ImageOperandsShift {
ImageOperandsConstOffsetsShift = 5, ImageOperandsConstOffsetsShift = 5,
ImageOperandsSampleShift = 6, ImageOperandsSampleShift = 6,
ImageOperandsMinLodShift = 7, ImageOperandsMinLodShift = 7,
ImageOperandsMax = 0x7fffffff,
}; };
enum ImageOperandsMask { enum ImageOperandsMask {
@ -271,6 +289,7 @@ enum FPFastMathModeShift {
FPFastMathModeNSZShift = 2, FPFastMathModeNSZShift = 2,
FPFastMathModeAllowRecipShift = 3, FPFastMathModeAllowRecipShift = 3,
FPFastMathModeFastShift = 4, FPFastMathModeFastShift = 4,
FPFastMathModeMax = 0x7fffffff,
}; };
enum FPFastMathModeMask { enum FPFastMathModeMask {
@ -287,17 +306,20 @@ enum FPRoundingMode {
FPRoundingModeRTZ = 1, FPRoundingModeRTZ = 1,
FPRoundingModeRTP = 2, FPRoundingModeRTP = 2,
FPRoundingModeRTN = 3, FPRoundingModeRTN = 3,
FPRoundingModeMax = 0x7fffffff,
}; };
enum LinkageType { enum LinkageType {
LinkageTypeExport = 0, LinkageTypeExport = 0,
LinkageTypeImport = 1, LinkageTypeImport = 1,
LinkageTypeMax = 0x7fffffff,
}; };
enum AccessQualifier { enum AccessQualifier {
AccessQualifierReadOnly = 0, AccessQualifierReadOnly = 0,
AccessQualifierWriteOnly = 1, AccessQualifierWriteOnly = 1,
AccessQualifierReadWrite = 2, AccessQualifierReadWrite = 2,
AccessQualifierMax = 0x7fffffff,
}; };
enum FunctionParameterAttribute { enum FunctionParameterAttribute {
@ -309,6 +331,7 @@ enum FunctionParameterAttribute {
FunctionParameterAttributeNoCapture = 5, FunctionParameterAttributeNoCapture = 5,
FunctionParameterAttributeNoWrite = 6, FunctionParameterAttributeNoWrite = 6,
FunctionParameterAttributeNoReadWrite = 7, FunctionParameterAttributeNoReadWrite = 7,
FunctionParameterAttributeMax = 0x7fffffff,
}; };
enum Decoration { enum Decoration {
@ -355,6 +378,8 @@ enum Decoration {
DecorationNoContraction = 42, DecorationNoContraction = 42,
DecorationInputAttachmentIndex = 43, DecorationInputAttachmentIndex = 43,
DecorationAlignment = 44, DecorationAlignment = 44,
DecorationMaxByteOffset = 45,
DecorationMax = 0x7fffffff,
}; };
enum BuiltIn { enum BuiltIn {
@ -399,11 +424,21 @@ enum BuiltIn {
BuiltInSubgroupLocalInvocationId = 41, BuiltInSubgroupLocalInvocationId = 41,
BuiltInVertexIndex = 42, BuiltInVertexIndex = 42,
BuiltInInstanceIndex = 43, BuiltInInstanceIndex = 43,
BuiltInSubgroupEqMaskKHR = 4416,
BuiltInSubgroupGeMaskKHR = 4417,
BuiltInSubgroupGtMaskKHR = 4418,
BuiltInSubgroupLeMaskKHR = 4419,
BuiltInSubgroupLtMaskKHR = 4420,
BuiltInBaseVertex = 4424,
BuiltInBaseInstance = 4425,
BuiltInDrawIndex = 4426,
BuiltInMax = 0x7fffffff,
}; };
enum SelectionControlShift { enum SelectionControlShift {
SelectionControlFlattenShift = 0, SelectionControlFlattenShift = 0,
SelectionControlDontFlattenShift = 1, SelectionControlDontFlattenShift = 1,
SelectionControlMax = 0x7fffffff,
}; };
enum SelectionControlMask { enum SelectionControlMask {
@ -415,12 +450,17 @@ enum SelectionControlMask {
enum LoopControlShift { enum LoopControlShift {
LoopControlUnrollShift = 0, LoopControlUnrollShift = 0,
LoopControlDontUnrollShift = 1, LoopControlDontUnrollShift = 1,
LoopControlDependencyInfiniteShift = 2,
LoopControlDependencyLengthShift = 3,
LoopControlMax = 0x7fffffff,
}; };
enum LoopControlMask { enum LoopControlMask {
LoopControlMaskNone = 0, LoopControlMaskNone = 0,
LoopControlUnrollMask = 0x00000001, LoopControlUnrollMask = 0x00000001,
LoopControlDontUnrollMask = 0x00000002, LoopControlDontUnrollMask = 0x00000002,
LoopControlDependencyInfiniteMask = 0x00000004,
LoopControlDependencyLengthMask = 0x00000008,
}; };
enum FunctionControlShift { enum FunctionControlShift {
@ -428,6 +468,7 @@ enum FunctionControlShift {
FunctionControlDontInlineShift = 1, FunctionControlDontInlineShift = 1,
FunctionControlPureShift = 2, FunctionControlPureShift = 2,
FunctionControlConstShift = 3, FunctionControlConstShift = 3,
FunctionControlMax = 0x7fffffff,
}; };
enum FunctionControlMask { enum FunctionControlMask {
@ -449,6 +490,7 @@ enum MemorySemanticsShift {
MemorySemanticsCrossWorkgroupMemoryShift = 9, MemorySemanticsCrossWorkgroupMemoryShift = 9,
MemorySemanticsAtomicCounterMemoryShift = 10, MemorySemanticsAtomicCounterMemoryShift = 10,
MemorySemanticsImageMemoryShift = 11, MemorySemanticsImageMemoryShift = 11,
MemorySemanticsMax = 0x7fffffff,
}; };
enum MemorySemanticsMask { enum MemorySemanticsMask {
@ -469,6 +511,7 @@ enum MemoryAccessShift {
MemoryAccessVolatileShift = 0, MemoryAccessVolatileShift = 0,
MemoryAccessAlignedShift = 1, MemoryAccessAlignedShift = 1,
MemoryAccessNontemporalShift = 2, MemoryAccessNontemporalShift = 2,
MemoryAccessMax = 0x7fffffff,
}; };
enum MemoryAccessMask { enum MemoryAccessMask {
@ -484,22 +527,26 @@ enum Scope {
ScopeWorkgroup = 2, ScopeWorkgroup = 2,
ScopeSubgroup = 3, ScopeSubgroup = 3,
ScopeInvocation = 4, ScopeInvocation = 4,
ScopeMax = 0x7fffffff,
}; };
enum GroupOperation { enum GroupOperation {
GroupOperationReduce = 0, GroupOperationReduce = 0,
GroupOperationInclusiveScan = 1, GroupOperationInclusiveScan = 1,
GroupOperationExclusiveScan = 2, GroupOperationExclusiveScan = 2,
GroupOperationMax = 0x7fffffff,
}; };
enum KernelEnqueueFlags { enum KernelEnqueueFlags {
KernelEnqueueFlagsNoWait = 0, KernelEnqueueFlagsNoWait = 0,
KernelEnqueueFlagsWaitKernel = 1, KernelEnqueueFlagsWaitKernel = 1,
KernelEnqueueFlagsWaitWorkGroup = 2, KernelEnqueueFlagsWaitWorkGroup = 2,
KernelEnqueueFlagsMax = 0x7fffffff,
}; };
enum KernelProfilingInfoShift { enum KernelProfilingInfoShift {
KernelProfilingInfoCmdExecTimeShift = 0, KernelProfilingInfoCmdExecTimeShift = 0,
KernelProfilingInfoMax = 0x7fffffff,
}; };
enum KernelProfilingInfoMask { enum KernelProfilingInfoMask {
@ -564,6 +611,12 @@ enum Capability {
CapabilityStorageImageReadWithoutFormat = 55, CapabilityStorageImageReadWithoutFormat = 55,
CapabilityStorageImageWriteWithoutFormat = 56, CapabilityStorageImageWriteWithoutFormat = 56,
CapabilityMultiViewport = 57, CapabilityMultiViewport = 57,
CapabilitySubgroupDispatch = 58,
CapabilityNamedBarrier = 59,
CapabilityPipeStorage = 60,
CapabilitySubgroupBallotKHR = 4423,
CapabilityDrawParameters = 4427,
CapabilityMax = 0x7fffffff,
}; };
enum Op { enum Op {
@ -861,6 +914,19 @@ enum Op {
OpAtomicFlagTestAndSet = 318, OpAtomicFlagTestAndSet = 318,
OpAtomicFlagClear = 319, OpAtomicFlagClear = 319,
OpImageSparseRead = 320, OpImageSparseRead = 320,
OpSizeOf = 321,
OpTypePipeStorage = 322,
OpConstantPipeStorage = 323,
OpCreatePipeFromPipeStorage = 324,
OpGetKernelLocalSizeForSubgroupCount = 325,
OpGetKernelMaxNumSubgroups = 326,
OpTypeNamedBarrier = 327,
OpNamedBarrierInitialize = 328,
OpMemoryNamedBarrier = 329,
OpModuleProcessed = 330,
OpSubgroupBallotKHR = 4421,
OpSubgroupFirstInvocationKHR = 4422,
OpMax = 0x7fffffff,
}; };
// Overload operator| for mask bit combining // Overload operator| for mask bit combining
@ -877,3 +943,4 @@ inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfil
} // end namespace spv } // end namespace spv
#endif // #ifndef spirv_HPP #endif // #ifndef spirv_HPP

View file

@ -46,12 +46,12 @@ namespace spv {
typedef unsigned int Id; typedef unsigned int Id;
#define SPV_VERSION 0x10000 #define SPV_VERSION 0x10100
#define SPV_REVISION 3 #define SPV_REVISION 4
static const unsigned int MagicNumber = 0x07230203; static const unsigned int MagicNumber = 0x07230203;
static const unsigned int Version = 0x00010000; static const unsigned int Version = 0x00010100;
static const unsigned int Revision = 3; static const unsigned int Revision = 4;
static const unsigned int OpCodeMask = 0xffff; static const unsigned int OpCodeMask = 0xffff;
static const unsigned int WordCountShift = 16; static const unsigned int WordCountShift = 16;
@ -61,6 +61,7 @@ enum class SourceLanguage : unsigned {
GLSL = 2, GLSL = 2,
OpenCL_C = 3, OpenCL_C = 3,
OpenCL_CPP = 4, OpenCL_CPP = 4,
Max = 0x7fffffff,
}; };
enum class ExecutionModel : unsigned { enum class ExecutionModel : unsigned {
@ -71,18 +72,21 @@ enum class ExecutionModel : unsigned {
Fragment = 4, Fragment = 4,
GLCompute = 5, GLCompute = 5,
Kernel = 6, Kernel = 6,
Max = 0x7fffffff,
}; };
enum class AddressingModel : unsigned { enum class AddressingModel : unsigned {
Logical = 0, Logical = 0,
Physical32 = 1, Physical32 = 1,
Physical64 = 2, Physical64 = 2,
Max = 0x7fffffff,
}; };
enum class MemoryModel : unsigned { enum class MemoryModel : unsigned {
Simple = 0, Simple = 0,
GLSL450 = 1, GLSL450 = 1,
OpenCL = 2, OpenCL = 2,
Max = 0x7fffffff,
}; };
enum class ExecutionMode : unsigned { enum class ExecutionMode : unsigned {
@ -117,6 +121,11 @@ enum class ExecutionMode : unsigned {
OutputTriangleStrip = 29, OutputTriangleStrip = 29,
VecTypeHint = 30, VecTypeHint = 30,
ContractionOff = 31, ContractionOff = 31,
Initializer = 33,
Finalizer = 34,
SubgroupSize = 35,
SubgroupsPerWorkgroup = 36,
Max = 0x7fffffff,
}; };
enum class StorageClass : unsigned { enum class StorageClass : unsigned {
@ -132,6 +141,7 @@ enum class StorageClass : unsigned {
PushConstant = 9, PushConstant = 9,
AtomicCounter = 10, AtomicCounter = 10,
Image = 11, Image = 11,
Max = 0x7fffffff,
}; };
enum class Dim : unsigned { enum class Dim : unsigned {
@ -142,6 +152,7 @@ enum class Dim : unsigned {
Rect = 4, Rect = 4,
Buffer = 5, Buffer = 5,
SubpassData = 6, SubpassData = 6,
Max = 0x7fffffff,
}; };
enum class SamplerAddressingMode : unsigned { enum class SamplerAddressingMode : unsigned {
@ -150,11 +161,13 @@ enum class SamplerAddressingMode : unsigned {
Clamp = 2, Clamp = 2,
Repeat = 3, Repeat = 3,
RepeatMirrored = 4, RepeatMirrored = 4,
Max = 0x7fffffff,
}; };
enum class SamplerFilterMode : unsigned { enum class SamplerFilterMode : unsigned {
Nearest = 0, Nearest = 0,
Linear = 1, Linear = 1,
Max = 0x7fffffff,
}; };
enum class ImageFormat : unsigned { enum class ImageFormat : unsigned {
@ -198,6 +211,7 @@ enum class ImageFormat : unsigned {
Rg8ui = 37, Rg8ui = 37,
R16ui = 38, R16ui = 38,
R8ui = 39, R8ui = 39,
Max = 0x7fffffff,
}; };
enum class ImageChannelOrder : unsigned { enum class ImageChannelOrder : unsigned {
@ -220,6 +234,8 @@ enum class ImageChannelOrder : unsigned {
sRGBx = 16, sRGBx = 16,
sRGBA = 17, sRGBA = 17,
sBGRA = 18, sBGRA = 18,
ABGR = 19,
Max = 0x7fffffff,
}; };
enum class ImageChannelDataType : unsigned { enum class ImageChannelDataType : unsigned {
@ -240,6 +256,7 @@ enum class ImageChannelDataType : unsigned {
Float = 14, Float = 14,
UnormInt24 = 15, UnormInt24 = 15,
UnormInt101010_2 = 16, UnormInt101010_2 = 16,
Max = 0x7fffffff,
}; };
enum class ImageOperandsShift : unsigned { enum class ImageOperandsShift : unsigned {
@ -251,6 +268,7 @@ enum class ImageOperandsShift : unsigned {
ConstOffsets = 5, ConstOffsets = 5,
Sample = 6, Sample = 6,
MinLod = 7, MinLod = 7,
Max = 0x7fffffff,
}; };
enum class ImageOperandsMask : unsigned { enum class ImageOperandsMask : unsigned {
@ -271,6 +289,7 @@ enum class FPFastMathModeShift : unsigned {
NSZ = 2, NSZ = 2,
AllowRecip = 3, AllowRecip = 3,
Fast = 4, Fast = 4,
Max = 0x7fffffff,
}; };
enum class FPFastMathModeMask : unsigned { enum class FPFastMathModeMask : unsigned {
@ -287,17 +306,20 @@ enum class FPRoundingMode : unsigned {
RTZ = 1, RTZ = 1,
RTP = 2, RTP = 2,
RTN = 3, RTN = 3,
Max = 0x7fffffff,
}; };
enum class LinkageType : unsigned { enum class LinkageType : unsigned {
Export = 0, Export = 0,
Import = 1, Import = 1,
Max = 0x7fffffff,
}; };
enum class AccessQualifier : unsigned { enum class AccessQualifier : unsigned {
ReadOnly = 0, ReadOnly = 0,
WriteOnly = 1, WriteOnly = 1,
ReadWrite = 2, ReadWrite = 2,
Max = 0x7fffffff,
}; };
enum class FunctionParameterAttribute : unsigned { enum class FunctionParameterAttribute : unsigned {
@ -309,6 +331,7 @@ enum class FunctionParameterAttribute : unsigned {
NoCapture = 5, NoCapture = 5,
NoWrite = 6, NoWrite = 6,
NoReadWrite = 7, NoReadWrite = 7,
Max = 0x7fffffff,
}; };
enum class Decoration : unsigned { enum class Decoration : unsigned {
@ -355,6 +378,8 @@ enum class Decoration : unsigned {
NoContraction = 42, NoContraction = 42,
InputAttachmentIndex = 43, InputAttachmentIndex = 43,
Alignment = 44, Alignment = 44,
MaxByteOffset = 45,
Max = 0x7fffffff,
}; };
enum class BuiltIn : unsigned { enum class BuiltIn : unsigned {
@ -399,11 +424,21 @@ enum class BuiltIn : unsigned {
SubgroupLocalInvocationId = 41, SubgroupLocalInvocationId = 41,
VertexIndex = 42, VertexIndex = 42,
InstanceIndex = 43, InstanceIndex = 43,
SubgroupEqMaskKHR = 4416,
SubgroupGeMaskKHR = 4417,
SubgroupGtMaskKHR = 4418,
SubgroupLeMaskKHR = 4419,
SubgroupLtMaskKHR = 4420,
BaseVertex = 4424,
BaseInstance = 4425,
DrawIndex = 4426,
Max = 0x7fffffff,
}; };
enum class SelectionControlShift : unsigned { enum class SelectionControlShift : unsigned {
Flatten = 0, Flatten = 0,
DontFlatten = 1, DontFlatten = 1,
Max = 0x7fffffff,
}; };
enum class SelectionControlMask : unsigned { enum class SelectionControlMask : unsigned {
@ -415,12 +450,17 @@ enum class SelectionControlMask : unsigned {
enum class LoopControlShift : unsigned { enum class LoopControlShift : unsigned {
Unroll = 0, Unroll = 0,
DontUnroll = 1, DontUnroll = 1,
DependencyInfinite = 2,
DependencyLength = 3,
Max = 0x7fffffff,
}; };
enum class LoopControlMask : unsigned { enum class LoopControlMask : unsigned {
MaskNone = 0, MaskNone = 0,
Unroll = 0x00000001, Unroll = 0x00000001,
DontUnroll = 0x00000002, DontUnroll = 0x00000002,
DependencyInfinite = 0x00000004,
DependencyLength = 0x00000008,
}; };
enum class FunctionControlShift : unsigned { enum class FunctionControlShift : unsigned {
@ -428,6 +468,7 @@ enum class FunctionControlShift : unsigned {
DontInline = 1, DontInline = 1,
Pure = 2, Pure = 2,
Const = 3, Const = 3,
Max = 0x7fffffff,
}; };
enum class FunctionControlMask : unsigned { enum class FunctionControlMask : unsigned {
@ -449,6 +490,7 @@ enum class MemorySemanticsShift : unsigned {
CrossWorkgroupMemory = 9, CrossWorkgroupMemory = 9,
AtomicCounterMemory = 10, AtomicCounterMemory = 10,
ImageMemory = 11, ImageMemory = 11,
Max = 0x7fffffff,
}; };
enum class MemorySemanticsMask : unsigned { enum class MemorySemanticsMask : unsigned {
@ -469,6 +511,7 @@ enum class MemoryAccessShift : unsigned {
Volatile = 0, Volatile = 0,
Aligned = 1, Aligned = 1,
Nontemporal = 2, Nontemporal = 2,
Max = 0x7fffffff,
}; };
enum class MemoryAccessMask : unsigned { enum class MemoryAccessMask : unsigned {
@ -484,22 +527,26 @@ enum class Scope : unsigned {
Workgroup = 2, Workgroup = 2,
Subgroup = 3, Subgroup = 3,
Invocation = 4, Invocation = 4,
Max = 0x7fffffff,
}; };
enum class GroupOperation : unsigned { enum class GroupOperation : unsigned {
Reduce = 0, Reduce = 0,
InclusiveScan = 1, InclusiveScan = 1,
ExclusiveScan = 2, ExclusiveScan = 2,
Max = 0x7fffffff,
}; };
enum class KernelEnqueueFlags : unsigned { enum class KernelEnqueueFlags : unsigned {
NoWait = 0, NoWait = 0,
WaitKernel = 1, WaitKernel = 1,
WaitWorkGroup = 2, WaitWorkGroup = 2,
Max = 0x7fffffff,
}; };
enum class KernelProfilingInfoShift : unsigned { enum class KernelProfilingInfoShift : unsigned {
CmdExecTime = 0, CmdExecTime = 0,
Max = 0x7fffffff,
}; };
enum class KernelProfilingInfoMask : unsigned { enum class KernelProfilingInfoMask : unsigned {
@ -564,6 +611,12 @@ enum class Capability : unsigned {
StorageImageReadWithoutFormat = 55, StorageImageReadWithoutFormat = 55,
StorageImageWriteWithoutFormat = 56, StorageImageWriteWithoutFormat = 56,
MultiViewport = 57, MultiViewport = 57,
SubgroupDispatch = 58,
NamedBarrier = 59,
PipeStorage = 60,
SubgroupBallotKHR = 4423,
DrawParameters = 4427,
Max = 0x7fffffff,
}; };
enum class Op : unsigned { enum class Op : unsigned {
@ -861,6 +914,19 @@ enum class Op : unsigned {
OpAtomicFlagTestAndSet = 318, OpAtomicFlagTestAndSet = 318,
OpAtomicFlagClear = 319, OpAtomicFlagClear = 319,
OpImageSparseRead = 320, OpImageSparseRead = 320,
OpSizeOf = 321,
OpTypePipeStorage = 322,
OpConstantPipeStorage = 323,
OpCreatePipeFromPipeStorage = 324,
OpGetKernelLocalSizeForSubgroupCount = 325,
OpGetKernelMaxNumSubgroups = 326,
OpTypeNamedBarrier = 327,
OpNamedBarrierInitialize = 328,
OpMemoryNamedBarrier = 329,
OpModuleProcessed = 330,
OpSubgroupBallotKHR = 4421,
OpSubgroupFirstInvocationKHR = 4422,
Max = 0x7fffffff,
}; };
// Overload operator| for mask bit combining // Overload operator| for mask bit combining

View file

@ -51,8 +51,8 @@
] ]
], ],
"MagicNumber": 119734787, "MagicNumber": 119734787,
"Version": 65536, "Version": 65792,
"Revision": 3, "Revision": 4,
"OpCodeMask": 65535, "OpCodeMask": 65535,
"WordCountShift": 16 "WordCountShift": 16
}, },
@ -139,7 +139,11 @@
"OutputLineStrip": 28, "OutputLineStrip": 28,
"OutputTriangleStrip": 29, "OutputTriangleStrip": 29,
"VecTypeHint": 30, "VecTypeHint": 30,
"ContractionOff": 31 "ContractionOff": 31,
"Initializer": 33,
"Finalizer": 34,
"SubgroupSize": 35,
"SubgroupsPerWorkgroup": 36
} }
}, },
{ {
@ -266,7 +270,8 @@
"sRGB": 15, "sRGB": 15,
"sRGBx": 16, "sRGBx": 16,
"sRGBA": 17, "sRGBA": 17,
"sBGRA": 18 "sBGRA": 18,
"ABGR": 19
} }
}, },
{ {
@ -412,7 +417,8 @@
"LinkageAttributes": 41, "LinkageAttributes": 41,
"NoContraction": 42, "NoContraction": 42,
"InputAttachmentIndex": 43, "InputAttachmentIndex": 43,
"Alignment": 44 "Alignment": 44,
"MaxByteOffset": 45
} }
}, },
{ {
@ -460,7 +466,15 @@
"SubgroupId": 40, "SubgroupId": 40,
"SubgroupLocalInvocationId": 41, "SubgroupLocalInvocationId": 41,
"VertexIndex": 42, "VertexIndex": 42,
"InstanceIndex": 43 "InstanceIndex": 43,
"SubgroupEqMaskKHR": 4416,
"SubgroupGeMaskKHR": 4417,
"SubgroupGtMaskKHR": 4418,
"SubgroupLeMaskKHR": 4419,
"SubgroupLtMaskKHR": 4420,
"BaseVertex": 4424,
"BaseInstance": 4425,
"DrawIndex": 4426
} }
}, },
{ {
@ -478,7 +492,9 @@
"Values": "Values":
{ {
"Unroll": 0, "Unroll": 0,
"DontUnroll": 1 "DontUnroll": 1,
"DependencyInfinite": 2,
"DependencyLength": 3
} }
}, },
{ {
@ -619,7 +635,12 @@
"GeometryStreams": 54, "GeometryStreams": 54,
"StorageImageReadWithoutFormat": 55, "StorageImageReadWithoutFormat": 55,
"StorageImageWriteWithoutFormat": 56, "StorageImageWriteWithoutFormat": 56,
"MultiViewport": 57 "MultiViewport": 57,
"SubgroupDispatch": 58,
"NamedBarrier": 59,
"PipeStorage": 60,
"SubgroupBallotKHR": 4423,
"DrawParameters": 4427
} }
}, },
{ {
@ -920,7 +941,19 @@
"OpNoLine": 317, "OpNoLine": 317,
"OpAtomicFlagTestAndSet": 318, "OpAtomicFlagTestAndSet": 318,
"OpAtomicFlagClear": 319, "OpAtomicFlagClear": 319,
"OpImageSparseRead": 320 "OpImageSparseRead": 320,
"OpSizeOf": 321,
"OpTypePipeStorage": 322,
"OpConstantPipeStorage": 323,
"OpCreatePipeFromPipeStorage": 324,
"OpGetKernelLocalSizeForSubgroupCount": 325,
"OpGetKernelMaxNumSubgroups": 326,
"OpTypeNamedBarrier": 327,
"OpNamedBarrierInitialize": 328,
"OpMemoryNamedBarrier": 329,
"OpModuleProcessed": 330,
"OpSubgroupBallotKHR": 4421,
"OpSubgroupFirstInvocationKHR": 4422
} }
} }
] ]

View file

@ -41,8 +41,8 @@
spv = { spv = {
MagicNumber = 0x07230203, MagicNumber = 0x07230203,
Version = 0x00010000, Version = 0x00010100,
Revision = 3, Revision = 4,
OpCodeMask = 0xffff, OpCodeMask = 0xffff,
WordCountShift = 16, WordCountShift = 16,
@ -108,6 +108,10 @@ spv = {
OutputTriangleStrip = 29, OutputTriangleStrip = 29,
VecTypeHint = 30, VecTypeHint = 30,
ContractionOff = 31, ContractionOff = 31,
Initializer = 33,
Finalizer = 34,
SubgroupSize = 35,
SubgroupsPerWorkgroup = 36,
}, },
StorageClass = { StorageClass = {
@ -211,6 +215,7 @@ spv = {
sRGBx = 16, sRGBx = 16,
sRGBA = 17, sRGBA = 17,
sBGRA = 18, sBGRA = 18,
ABGR = 19,
}, },
ImageChannelDataType = { ImageChannelDataType = {
@ -346,6 +351,7 @@ spv = {
NoContraction = 42, NoContraction = 42,
InputAttachmentIndex = 43, InputAttachmentIndex = 43,
Alignment = 44, Alignment = 44,
MaxByteOffset = 45,
}, },
BuiltIn = { BuiltIn = {
@ -390,6 +396,14 @@ spv = {
SubgroupLocalInvocationId = 41, SubgroupLocalInvocationId = 41,
VertexIndex = 42, VertexIndex = 42,
InstanceIndex = 43, InstanceIndex = 43,
SubgroupEqMaskKHR = 4416,
SubgroupGeMaskKHR = 4417,
SubgroupGtMaskKHR = 4418,
SubgroupLeMaskKHR = 4419,
SubgroupLtMaskKHR = 4420,
BaseVertex = 4424,
BaseInstance = 4425,
DrawIndex = 4426,
}, },
SelectionControlShift = { SelectionControlShift = {
@ -406,12 +420,16 @@ spv = {
LoopControlShift = { LoopControlShift = {
Unroll = 0, Unroll = 0,
DontUnroll = 1, DontUnroll = 1,
DependencyInfinite = 2,
DependencyLength = 3,
}, },
LoopControlMask = { LoopControlMask = {
MaskNone = 0, MaskNone = 0,
Unroll = 0x00000001, Unroll = 0x00000001,
DontUnroll = 0x00000002, DontUnroll = 0x00000002,
DependencyInfinite = 0x00000004,
DependencyLength = 0x00000008,
}, },
FunctionControlShift = { FunctionControlShift = {
@ -555,6 +573,11 @@ spv = {
StorageImageReadWithoutFormat = 55, StorageImageReadWithoutFormat = 55,
StorageImageWriteWithoutFormat = 56, StorageImageWriteWithoutFormat = 56,
MultiViewport = 57, MultiViewport = 57,
SubgroupDispatch = 58,
NamedBarrier = 59,
PipeStorage = 60,
SubgroupBallotKHR = 4423,
DrawParameters = 4427,
}, },
Op = { Op = {
@ -852,6 +875,18 @@ spv = {
OpAtomicFlagTestAndSet = 318, OpAtomicFlagTestAndSet = 318,
OpAtomicFlagClear = 319, OpAtomicFlagClear = 319,
OpImageSparseRead = 320, OpImageSparseRead = 320,
OpSizeOf = 321,
OpTypePipeStorage = 322,
OpConstantPipeStorage = 323,
OpCreatePipeFromPipeStorage = 324,
OpGetKernelLocalSizeForSubgroupCount = 325,
OpGetKernelMaxNumSubgroups = 326,
OpTypeNamedBarrier = 327,
OpNamedBarrierInitialize = 328,
OpMemoryNamedBarrier = 329,
OpModuleProcessed = 330,
OpSubgroupBallotKHR = 4421,
OpSubgroupFirstInvocationKHR = 4422,
}, },
} }

File diff suppressed because it is too large Load diff

View file

@ -6,24 +6,17 @@
* Copyright (c) 2015-2016 Valve Corporation * Copyright (c) 2015-2016 Valve Corporation
* Copyright (c) 2015-2016 LunarG, Inc. * Copyright (c) 2015-2016 LunarG, Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Licensed under the Apache License, Version 2.0 (the "License");
* of this software and/or associated documentation files (the "Materials"), to * you may not use this file except in compliance with the License.
* deal in the Materials without restriction, including without limitation the * You may obtain a copy of the License at
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Materials, and to permit persons to whom the Materials are
* furnished to do so, subject to the following conditions:
* *
* The above copyright notice(s) and this permission notice shall be included in * http://www.apache.org/licenses/LICENSE-2.0
* all copies or substantial portions of the Materials.
* *
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * Unless required by applicable law or agreed to in writing, software
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * distributed under the License is distributed on an "AS IS" BASIS,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * limitations under the License.
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE
* USE OR OTHER DEALINGS IN THE MATERIALS.
* *
*/ */
@ -32,6 +25,12 @@
#include "vulkan.h" #include "vulkan.h"
/*
* Loader-ICD version negotiation API
*/
#define CURRENT_LOADER_ICD_INTERFACE_VERSION 3
#define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0
typedef VkResult (VKAPI_PTR *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t *pVersion);
/* /*
* The ICD must reserve space for a pointer for the loader's dispatch * The ICD must reserve space for a pointer for the loader's dispatch
* table, at the start of <each object>. * table, at the start of <each object>.
@ -40,7 +39,7 @@
#define ICD_LOADER_MAGIC 0x01CDC0DE #define ICD_LOADER_MAGIC 0x01CDC0DE
typedef union _VK_LOADER_DATA { typedef union {
uintptr_t loaderMagic; uintptr_t loaderMagic;
void *loaderData; void *loaderData;
} VK_LOADER_DATA; } VK_LOADER_DATA;
@ -59,7 +58,7 @@ static inline bool valid_loader_magic_value(void *pNewObject) {
* Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that * Windows and Linux ICDs will treat VkSurfaceKHR as a pointer to a struct that
* contains the platform-specific connection and surface information. * contains the platform-specific connection and surface information.
*/ */
typedef enum _VkIcdWsiPlatform { typedef enum {
VK_ICD_WSI_PLATFORM_MIR, VK_ICD_WSI_PLATFORM_MIR,
VK_ICD_WSI_PLATFORM_WAYLAND, VK_ICD_WSI_PLATFORM_WAYLAND,
VK_ICD_WSI_PLATFORM_WIN32, VK_ICD_WSI_PLATFORM_WIN32,
@ -68,12 +67,12 @@ typedef enum _VkIcdWsiPlatform {
VK_ICD_WSI_PLATFORM_DISPLAY VK_ICD_WSI_PLATFORM_DISPLAY
} VkIcdWsiPlatform; } VkIcdWsiPlatform;
typedef struct _VkIcdSurfaceBase { typedef struct {
VkIcdWsiPlatform platform; VkIcdWsiPlatform platform;
} VkIcdSurfaceBase; } VkIcdSurfaceBase;
#ifdef VK_USE_PLATFORM_MIR_KHR #ifdef VK_USE_PLATFORM_MIR_KHR
typedef struct _VkIcdSurfaceMir { typedef struct {
VkIcdSurfaceBase base; VkIcdSurfaceBase base;
MirConnection *connection; MirConnection *connection;
MirSurface *mirSurface; MirSurface *mirSurface;
@ -81,7 +80,7 @@ typedef struct _VkIcdSurfaceMir {
#endif // VK_USE_PLATFORM_MIR_KHR #endif // VK_USE_PLATFORM_MIR_KHR
#ifdef VK_USE_PLATFORM_WAYLAND_KHR #ifdef VK_USE_PLATFORM_WAYLAND_KHR
typedef struct _VkIcdSurfaceWayland { typedef struct {
VkIcdSurfaceBase base; VkIcdSurfaceBase base;
struct wl_display *display; struct wl_display *display;
struct wl_surface *surface; struct wl_surface *surface;
@ -89,7 +88,7 @@ typedef struct _VkIcdSurfaceWayland {
#endif // VK_USE_PLATFORM_WAYLAND_KHR #endif // VK_USE_PLATFORM_WAYLAND_KHR
#ifdef VK_USE_PLATFORM_WIN32_KHR #ifdef VK_USE_PLATFORM_WIN32_KHR
typedef struct _VkIcdSurfaceWin32 { typedef struct {
VkIcdSurfaceBase base; VkIcdSurfaceBase base;
HINSTANCE hinstance; HINSTANCE hinstance;
HWND hwnd; HWND hwnd;
@ -97,7 +96,7 @@ typedef struct _VkIcdSurfaceWin32 {
#endif // VK_USE_PLATFORM_WIN32_KHR #endif // VK_USE_PLATFORM_WIN32_KHR
#ifdef VK_USE_PLATFORM_XCB_KHR #ifdef VK_USE_PLATFORM_XCB_KHR
typedef struct _VkIcdSurfaceXcb { typedef struct {
VkIcdSurfaceBase base; VkIcdSurfaceBase base;
xcb_connection_t *connection; xcb_connection_t *connection;
xcb_window_t window; xcb_window_t window;
@ -105,14 +104,20 @@ typedef struct _VkIcdSurfaceXcb {
#endif // VK_USE_PLATFORM_XCB_KHR #endif // VK_USE_PLATFORM_XCB_KHR
#ifdef VK_USE_PLATFORM_XLIB_KHR #ifdef VK_USE_PLATFORM_XLIB_KHR
typedef struct _VkIcdSurfaceXlib { typedef struct {
VkIcdSurfaceBase base; VkIcdSurfaceBase base;
Display *dpy; Display *dpy;
Window window; Window window;
} VkIcdSurfaceXlib; } VkIcdSurfaceXlib;
#endif // VK_USE_PLATFORM_XLIB_KHR #endif // VK_USE_PLATFORM_XLIB_KHR
typedef struct _VkIcdSurfaceDisplay { #ifdef VK_USE_PLATFORM_ANDROID_KHR
typedef struct {
ANativeWindow* window;
} VkIcdSurfaceAndroid;
#endif //VK_USE_PLATFORM_ANDROID_KHR
typedef struct {
VkIcdSurfaceBase base; VkIcdSurfaceBase base;
VkDisplayModeKHR displayMode; VkDisplayModeKHR displayMode;
uint32_t planeIndex; uint32_t planeIndex;
@ -122,4 +127,5 @@ typedef struct _VkIcdSurfaceDisplay {
VkDisplayPlaneAlphaFlagBitsKHR alphaMode; VkDisplayPlaneAlphaFlagBitsKHR alphaMode;
VkExtent2D imageExtent; VkExtent2D imageExtent;
} VkIcdSurfaceDisplay; } VkIcdSurfaceDisplay;
#endif // VKICD_H #endif // VKICD_H

View file

@ -6,24 +6,17 @@
* Copyright (c) 2015-2016 Valve Corporation * Copyright (c) 2015-2016 Valve Corporation
* Copyright (c) 2015-2016 LunarG, Inc. * Copyright (c) 2015-2016 LunarG, Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Licensed under the Apache License, Version 2.0 (the "License");
* of this software and/or associated documentation files (the "Materials"), to * you may not use this file except in compliance with the License.
* deal in the Materials without restriction, including without limitation the * You may obtain a copy of the License at
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Materials, and to permit persons to whom the Materials are
* furnished to do so, subject to the following conditions:
* *
* The above copyright notice(s) and this permission notice shall be included in * http://www.apache.org/licenses/LICENSE-2.0
* all copies or substantial portions of the Materials.
* *
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * Unless required by applicable law or agreed to in writing, software
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * distributed under the License is distributed on an "AS IS" BASIS,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * limitations under the License.
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE
* USE OR OTHER DEALINGS IN THE MATERIALS.
* *
*/ */
@ -169,6 +162,17 @@ typedef struct VkLayerDispatchTable_ {
PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR; PFN_vkGetSwapchainImagesKHR GetSwapchainImagesKHR;
PFN_vkAcquireNextImageKHR AcquireNextImageKHR; PFN_vkAcquireNextImageKHR AcquireNextImageKHR;
PFN_vkQueuePresentKHR QueuePresentKHR; PFN_vkQueuePresentKHR QueuePresentKHR;
PFN_vkCmdDrawIndirectCountAMD CmdDrawIndirectCountAMD;
PFN_vkCmdDrawIndexedIndirectCountAMD CmdDrawIndexedIndirectCountAMD;
#ifdef VK_USE_PLATFORM_WIN32_KHR
PFN_vkGetMemoryWin32HandleNV GetMemoryWin32HandleNV;
#endif
PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR;
PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT;
PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT;
PFN_vkCmdDebugMarkerBeginEXT CmdDebugMarkerBeginEXT;
PFN_vkCmdDebugMarkerEndEXT CmdDebugMarkerEndEXT;
PFN_vkCmdDebugMarkerInsertEXT CmdDebugMarkerInsertEXT;
} VkLayerDispatchTable; } VkLayerDispatchTable;
typedef struct VkLayerInstanceDispatchTable_ { typedef struct VkLayerInstanceDispatchTable_ {
@ -239,31 +243,16 @@ typedef struct VkLayerInstanceDispatchTable_ {
GetDisplayPlaneCapabilitiesKHR; GetDisplayPlaneCapabilitiesKHR;
PFN_vkCreateDisplayPlaneSurfaceKHR PFN_vkCreateDisplayPlaneSurfaceKHR
CreateDisplayPlaneSurfaceKHR; CreateDisplayPlaneSurfaceKHR;
PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV
GetPhysicalDeviceExternalImageFormatPropertiesNV;
} VkLayerInstanceDispatchTable; } VkLayerInstanceDispatchTable;
// LL node for tree of dbg callback functions
typedef struct VkLayerDbgFunctionNode_ {
VkDebugReportCallbackEXT msgCallback;
PFN_vkDebugReportCallbackEXT pfnMsgCallback;
VkFlags msgFlags;
void *pUserData;
struct VkLayerDbgFunctionNode_ *pNext;
} VkLayerDbgFunctionNode;
typedef enum VkLayerDbgAction_ {
VK_DBG_LAYER_ACTION_IGNORE = 0x0,
VK_DBG_LAYER_ACTION_CALLBACK = 0x1,
VK_DBG_LAYER_ACTION_LOG_MSG = 0x2,
VK_DBG_LAYER_ACTION_BREAK = 0x4,
VK_DBG_LAYER_ACTION_DEBUG_OUTPUT = 0x8,
} VkLayerDbgAction;
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// CreateInstance and CreateDevice support structures // CreateInstance and CreateDevice support structures
/* Sub type of structure for instance and device loader ext of CreateInfo. /* Sub type of structure for instance and device loader ext of CreateInfo.
* When sType == VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO * When sType == VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
* or sType == VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO * or sType == VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
* then VkLayerFunction indicates struct type pointed to by pNext * then VkLayerFunction indicates struct type pointed to by pNext
*/ */
typedef enum VkLayerFunction_ { typedef enum VkLayerFunction_ {
@ -294,7 +283,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkSetDeviceLoaderData)(VkDevice device,
void *object); void *object);
typedef struct { typedef struct {
VkStructureType sType; // VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO
const void *pNext; const void *pNext;
VkLayerFunction function; VkLayerFunction function;
union { union {
@ -310,7 +299,7 @@ typedef struct VkLayerDeviceLink_ {
} VkLayerDeviceLink; } VkLayerDeviceLink;
typedef struct { typedef struct {
VkStructureType sType; // VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO VkStructureType sType; // VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO
const void *pNext; const void *pNext;
VkLayerFunction function; VkLayerFunction function;
union { union {

View file

@ -4,24 +4,17 @@
/* /*
** Copyright (c) 2014-2015 The Khronos Group Inc. ** Copyright (c) 2014-2015 The Khronos Group Inc.
** **
** Permission is hereby granted, free of charge, to any person obtaining a ** Licensed under the Apache License, Version 2.0 (the "License");
** copy of this software and/or associated documentation files (the ** you may not use this file except in compliance with the License.
** "Materials"), to deal in the Materials without restriction, including ** You may obtain a copy of the License at
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
** **
** The above copyright notice and this permission notice shall be included ** http://www.apache.org/licenses/LICENSE-2.0
** in all copies or substantial portions of the Materials.
** **
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** Unless required by applicable law or agreed to in writing, software
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** distributed under the License is distributed on an "AS IS" BASIS,
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** See the License for the specific language governing permissions and
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** limitations under the License.
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/ */
@ -58,13 +51,13 @@ extern "C"
#define VKAPI_ATTR #define VKAPI_ATTR
#define VKAPI_CALL __stdcall #define VKAPI_CALL __stdcall
#define VKAPI_PTR VKAPI_CALL #define VKAPI_PTR VKAPI_CALL
#elif defined(__ANDROID__) && defined(__ARM_EABI__) && !defined(__ARM_ARCH_7A__) #elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH < 7
// Android does not support Vulkan in native code using the "armeabi" ABI. #error "Vulkan isn't supported for the 'armeabi' NDK ABI"
#error "Vulkan requires the 'armeabi-v7a' or 'armeabi-v7a-hard' ABI on 32-bit ARM CPUs" #elif defined(__ANDROID__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7 && defined(__ARM_32BIT_STATE)
#elif defined(__ANDROID__) && defined(__ARM_ARCH_7A__) // On Android 32-bit ARM targets, Vulkan functions use the "hardfloat"
// On Android/ARMv7a, Vulkan functions use the armeabi-v7a-hard calling // calling convention, i.e. float parameters are passed in registers. This
// convention, even if the application's native code is compiled with the // is true even if the rest of the application passes floats on the stack,
// armeabi-v7a calling convention. // as it does by default when compiling for the armeabi-v7a NDK ABI.
#define VKAPI_ATTR __attribute__((pcs("aapcs-vfp"))) #define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
#define VKAPI_CALL #define VKAPI_CALL
#define VKAPI_PTR VKAPI_ATTR #define VKAPI_PTR VKAPI_ATTR

View file

@ -6,24 +6,17 @@
* Copyright (c) 2015-2016 Valve Corporation * Copyright (c) 2015-2016 Valve Corporation
* Copyright (c) 2015-2016 LunarG, Inc. * Copyright (c) 2015-2016 LunarG, Inc.
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Licensed under the Apache License, Version 2.0 (the "License");
* of this software and/or associated documentation files (the "Materials"), to * you may not use this file except in compliance with the License.
* deal in the Materials without restriction, including without limitation the * You may obtain a copy of the License at
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Materials, and to permit persons to whom the Materials are
* furnished to do so, subject to the following conditions:
* *
* The above copyright notice(s) and this permission notice shall be included in * http://www.apache.org/licenses/LICENSE-2.0
* all copies or substantial portions of the Materials.
* *
* THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * Unless required by applicable law or agreed to in writing, software
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * distributed under the License is distributed on an "AS IS" BASIS,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * limitations under the License.
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE
* USE OR OTHER DEALINGS IN THE MATERIALS.
*/ */
#ifndef VK_SDK_PLATFORM_H #ifndef VK_SDK_PLATFORM_H

View file

@ -8,24 +8,17 @@ extern "C" {
/* /*
** Copyright (c) 2015-2016 The Khronos Group Inc. ** Copyright (c) 2015-2016 The Khronos Group Inc.
** **
** Permission is hereby granted, free of charge, to any person obtaining a ** Licensed under the Apache License, Version 2.0 (the "License");
** copy of this software and/or associated documentation files (the ** you may not use this file except in compliance with the License.
** "Materials"), to deal in the Materials without restriction, including ** You may obtain a copy of the License at
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
** **
** The above copyright notice and this permission notice shall be included ** http://www.apache.org/licenses/LICENSE-2.0
** in all copies or substantial portions of the Materials.
** **
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ** Unless required by applicable law or agreed to in writing, software
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ** distributed under the License is distributed on an "AS IS" BASIS,
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ** See the License for the specific language governing permissions and
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ** limitations under the License.
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/ */
/* /*
@ -50,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file // Version of this file
#define VK_HEADER_VERSION 8 #define VK_HEADER_VERSION 33
#define VK_NULL_HANDLE 0 #define VK_NULL_HANDLE 0
@ -60,11 +53,13 @@ extern "C" {
#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
#else #else
#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
#endif #endif
#endif
@ -142,6 +137,7 @@ typedef enum VkResult {
VK_ERROR_INCOMPATIBLE_DRIVER = -9, VK_ERROR_INCOMPATIBLE_DRIVER = -9,
VK_ERROR_TOO_MANY_OBJECTS = -10, VK_ERROR_TOO_MANY_OBJECTS = -10,
VK_ERROR_FORMAT_NOT_SUPPORTED = -11, VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
VK_ERROR_FRAGMENTED_POOL = -12,
VK_ERROR_SURFACE_LOST_KHR = -1000000000, VK_ERROR_SURFACE_LOST_KHR = -1000000000,
VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
VK_SUBOPTIMAL_KHR = 1000001003, VK_SUBOPTIMAL_KHR = 1000001003,
@ -149,9 +145,9 @@ typedef enum VkResult {
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
VK_ERROR_INVALID_SHADER_NV = -1000012000, VK_ERROR_INVALID_SHADER_NV = -1000012000,
VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED, VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
VK_RESULT_END_RANGE = VK_INCOMPLETE, VK_RESULT_END_RANGE = VK_INCOMPLETE,
VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1), VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
VK_RESULT_MAX_ENUM = 0x7FFFFFFF VK_RESULT_MAX_ENUM = 0x7FFFFFFF
} VkResult; } VkResult;
@ -217,6 +213,19 @@ typedef enum VkStructureType {
VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
@ -429,6 +438,14 @@ typedef enum VkFormat {
VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED, VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK, VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1), VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
@ -2350,7 +2367,7 @@ typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkIm
typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions); typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData); typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data); typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
@ -3035,7 +3052,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
VkBuffer dstBuffer, VkBuffer dstBuffer,
VkDeviceSize dstOffset, VkDeviceSize dstOffset,
VkDeviceSize dataSize, VkDeviceSize dataSize,
const uint32_t* pData); const void* pData);
VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer( VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
VkCommandBuffer commandBuffer, VkCommandBuffer commandBuffer,
@ -3175,13 +3192,14 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
#define VK_KHR_SURFACE_SPEC_VERSION 25 #define VK_KHR_SURFACE_SPEC_VERSION 25
#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" #define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
#define VK_COLORSPACE_SRGB_NONLINEAR_KHR VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
typedef enum VkColorSpaceKHR { typedef enum VkColorSpaceKHR {
VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0, VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
VK_COLOR_SPACE_END_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1), VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
} VkColorSpaceKHR; } VkColorSpaceKHR;
@ -3278,7 +3296,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
#define VK_KHR_swapchain 1 #define VK_KHR_swapchain 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
#define VK_KHR_SWAPCHAIN_SPEC_VERSION 67 #define VK_KHR_SWAPCHAIN_SPEC_VERSION 68
#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" #define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
typedef VkFlags VkSwapchainCreateFlagsKHR; typedef VkFlags VkSwapchainCreateFlagsKHR;
@ -3434,7 +3452,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhys
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
@ -3717,7 +3735,7 @@ VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
#define VK_EXT_debug_report 1 #define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 2 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION 3
#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report" #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT #define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
@ -3835,6 +3853,307 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
#define VK_AMD_rasterization_order 1
#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
typedef enum VkRasterizationOrderAMD {
VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
} VkRasterizationOrderAMD;
typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
VkStructureType sType;
const void* pNext;
VkRasterizationOrderAMD rasterizationOrder;
} VkPipelineRasterizationStateRasterizationOrderAMD;
#define VK_AMD_shader_trinary_minmax 1
#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
#define VK_AMD_shader_explicit_vertex_parameter 1
#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
#define VK_EXT_debug_marker 1
#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 3
#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
typedef struct VkDebugMarkerObjectNameInfoEXT {
VkStructureType sType;
const void* pNext;
VkDebugReportObjectTypeEXT objectType;
uint64_t object;
const char* pObjectName;
} VkDebugMarkerObjectNameInfoEXT;
typedef struct VkDebugMarkerObjectTagInfoEXT {
VkStructureType sType;
const void* pNext;
VkDebugReportObjectTypeEXT objectType;
uint64_t object;
uint64_t tagName;
size_t tagSize;
const void* pTag;
} VkDebugMarkerObjectTagInfoEXT;
typedef struct VkDebugMarkerMarkerInfoEXT {
VkStructureType sType;
const void* pNext;
const char* pMarkerName;
float color[4];
} VkDebugMarkerMarkerInfoEXT;
typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo);
typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo);
typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
VkDevice device,
VkDebugMarkerObjectTagInfoEXT* pTagInfo);
VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
VkDevice device,
VkDebugMarkerObjectNameInfoEXT* pNameInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
VkCommandBuffer commandBuffer,
VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
VkCommandBuffer commandBuffer);
VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
VkCommandBuffer commandBuffer,
VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
#endif
#define VK_AMD_gcn_shader 1
#define VK_AMD_GCN_SHADER_SPEC_VERSION 1
#define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader"
#define VK_NV_dedicated_allocation 1
#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
typedef struct VkDedicatedAllocationImageCreateInfoNV {
VkStructureType sType;
const void* pNext;
VkBool32 dedicatedAllocation;
} VkDedicatedAllocationImageCreateInfoNV;
typedef struct VkDedicatedAllocationBufferCreateInfoNV {
VkStructureType sType;
const void* pNext;
VkBool32 dedicatedAllocation;
} VkDedicatedAllocationBufferCreateInfoNV;
typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
VkStructureType sType;
const void* pNext;
VkImage image;
VkBuffer buffer;
} VkDedicatedAllocationMemoryAllocateInfoNV;
#define VK_AMD_draw_indirect_count 1
#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
uint32_t stride);
VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
VkCommandBuffer commandBuffer,
VkBuffer buffer,
VkDeviceSize offset,
VkBuffer countBuffer,
VkDeviceSize countBufferOffset,
uint32_t maxDrawCount,
uint32_t stride);
#endif
#define VK_AMD_negative_viewport_height 1
#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
#define VK_AMD_gpu_shader_half_float 1
#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
#define VK_AMD_shader_ballot 1
#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
#define VK_IMG_format_pvrtc 1
#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
#define VK_NV_external_memory_capabilities 1
#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
} VkExternalMemoryHandleTypeFlagBitsNV;
typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
typedef enum VkExternalMemoryFeatureFlagBitsNV {
VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
} VkExternalMemoryFeatureFlagBitsNV;
typedef VkFlags VkExternalMemoryFeatureFlagsNV;
typedef struct VkExternalImageFormatPropertiesNV {
VkImageFormatProperties imageFormatProperties;
VkExternalMemoryFeatureFlagsNV externalMemoryFeatures;
VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
} VkExternalImageFormatPropertiesNV;
typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
VkPhysicalDevice physicalDevice,
VkFormat format,
VkImageType type,
VkImageTiling tiling,
VkImageUsageFlags usage,
VkImageCreateFlags flags,
VkExternalMemoryHandleTypeFlagsNV externalHandleType,
VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
#endif
#define VK_NV_external_memory 1
#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
typedef struct VkExternalMemoryImageCreateInfoNV {
VkStructureType sType;
const void* pNext;
VkExternalMemoryHandleTypeFlagsNV handleTypes;
} VkExternalMemoryImageCreateInfoNV;
typedef struct VkExportMemoryAllocateInfoNV {
VkStructureType sType;
const void* pNext;
VkExternalMemoryHandleTypeFlagsNV handleTypes;
} VkExportMemoryAllocateInfoNV;
#ifdef VK_USE_PLATFORM_WIN32_KHR
#define VK_NV_external_memory_win32 1
#define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
#define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
typedef struct VkImportMemoryWin32HandleInfoNV {
VkStructureType sType;
const void* pNext;
VkExternalMemoryHandleTypeFlagsNV handleType;
HANDLE handle;
} VkImportMemoryWin32HandleInfoNV;
typedef struct VkExportMemoryWin32HandleInfoNV {
VkStructureType sType;
const void* pNext;
const SECURITY_ATTRIBUTES* pAttributes;
DWORD dwAccess;
} VkExportMemoryWin32HandleInfoNV;
typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
#ifndef VK_NO_PROTOTYPES
VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
VkDevice device,
VkDeviceMemory memory,
VkExternalMemoryHandleTypeFlagsNV handleType,
HANDLE* pHandle);
#endif
#endif /* VK_USE_PLATFORM_WIN32_KHR */
#ifdef VK_USE_PLATFORM_WIN32_KHR
#define VK_NV_win32_keyed_mutex 1
#define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
#define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
VkStructureType sType;
const void* pNext;
uint32_t acquireCount;
const VkDeviceMemory* pAcquireSyncs;
const uint64_t* pAcquireKeys;
const uint32_t* pAcquireTimeoutMilliseconds;
uint32_t releaseCount;
const VkDeviceMemory* pReleaseSyncs;
const uint64_t* pReleaseKeys;
} VkWin32KeyedMutexAcquireReleaseInfoNV;
#endif /* VK_USE_PLATFORM_WIN32_KHR */
#define VK_EXT_validation_flags 1
#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
typedef enum VkValidationCheckEXT {
VK_VALIDATION_CHECK_ALL_EXT = 0,
VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_ALL_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
} VkValidationCheckEXT;
typedef struct VkValidationFlagsEXT {
VkStructureType sType;
const void* pNext;
uint32_t disabledValidationCheckCount;
VkValidationCheckEXT* pDisabledValidationChecks;
} VkValidationFlagsEXT;
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif