X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=include%2Fvulkan%2Fvulkan.h;h=1af41e4bebaa3a5536f4d8249ff2498cfee4664a;hb=672590710b6ddbc5fd15323f4a04eb1c555fcd34;hp=8e00e83c87c8f52916d768c0c53f65bd13646b10;hpb=2b37fc28d11ecb006e3ee7b49275e11dc69482c3;p=mesa.git diff --git a/include/vulkan/vulkan.h b/include/vulkan/vulkan.h index 8e00e83c87c..1af41e4beba 100644 --- a/include/vulkan/vulkan.h +++ b/include/vulkan/vulkan.h @@ -56,8 +56,13 @@ extern "C" { #define VK_MAX_PHYSICAL_DEVICE_NAME 256 +#define VK_UUID_LENGTH 16 #define VK_MAX_EXTENSION_NAME 256 +#define VK_MAX_MEMORY_TYPES 32 +#define VK_MAX_MEMORY_HEAPS 16 #define VK_LOD_CLAMP_NONE MAX_FLOAT +#define VK_LAST_MIP_LEVEL UINT32_MAX +#define VK_LAST_ARRAY_SLICE UINT32_MAX #define VK_WHOLE_SIZE UINT64_MAX #define VK_TRUE 1 #define VK_FALSE 0 @@ -70,29 +75,31 @@ VK_DEFINE_DISP_SUBCLASS_HANDLE(VkDevice, VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkQueue, VkObject) VK_DEFINE_DISP_SUBCLASS_HANDLE(VkCmdBuffer, VkObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkNonDispatchable, VkObject) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkFence, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDeviceMemory, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkBuffer, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkBufferView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkImage, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkSemaphore, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkEvent, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkQueryPool, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkBufferView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkImageView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkColorAttachmentView, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDepthStencilView, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkShaderModule, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkShader, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipeline, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipelineCache, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipelineLayout, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkSampler, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorSet, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipeline, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorSetLayout, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkSampler, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorPool, VkNonDispatchable) +VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDescriptorSet, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicStateObject, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicVpState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicRsState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicCbState, VkDynamicStateObject) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDynamicDsState, VkDynamicStateObject) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkFence, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkSemaphore, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkEvent, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkQueryPool, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkFramebuffer, VkNonDispatchable) VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkRenderPass, VkNonDispatchable) @@ -115,9 +122,6 @@ VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkRenderPass, VkNonDispatchable) // This is a helper macro to define the value of flag bit enum values. #define VK_BIT(bit) (1 << (bit)) -// ------------------------------------------------------------------------------------------------ -// Enumerations - typedef enum { VK_SUCCESS = 0, VK_UNSUPPORTED = 1, @@ -163,7 +167,6 @@ typedef enum { VK_RESULT_MAX_ENUM = 0x7FFFFFFF } VkResult; -// Structure type enumerant typedef enum { VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1, @@ -191,7 +194,7 @@ typedef enum { VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 23, VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 24, VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 25, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO = 26, + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 26, VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO = 27, VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO = 28, VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO = 29, @@ -517,9 +520,12 @@ typedef enum { VK_IMAGE_VIEW_TYPE_2D = 1, VK_IMAGE_VIEW_TYPE_3D = 2, VK_IMAGE_VIEW_TYPE_CUBE = 3, + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D, - VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE, - VK_IMAGE_VIEW_TYPE_NUM = (VK_IMAGE_VIEW_TYPE_CUBE - VK_IMAGE_VIEW_TYPE_1D + 1), + VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, + VK_IMAGE_VIEW_TYPE_NUM = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1), VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF } VkImageViewType; @@ -836,12 +842,11 @@ typedef enum { } VkStateBindPoint; typedef enum { - VK_INDEX_TYPE_UINT8 = 0, - VK_INDEX_TYPE_UINT16 = 1, - VK_INDEX_TYPE_UINT32 = 2, - VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT8, + VK_INDEX_TYPE_UINT16 = 0, + VK_INDEX_TYPE_UINT32 = 1, + VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16, VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32, - VK_INDEX_TYPE_NUM = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT8 + 1), + VK_INDEX_TYPE_NUM = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1), VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF } VkIndexType; @@ -905,10 +910,9 @@ typedef VkFlags VkQueueFlags; typedef enum { VK_MEMORY_PROPERTY_DEVICE_ONLY = 0, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000001, - VK_MEMORY_PROPERTY_HOST_DEVICE_COHERENT_BIT = 0x00000002, + VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT = 0x00000002, VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT = 0x00000004, VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT = 0x00000008, - VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL = 0x00000010, } VkMemoryPropertyFlagBits; typedef VkFlags VkMemoryPropertyFlags; @@ -926,7 +930,7 @@ typedef VkFlags VkFenceCreateFlags; typedef VkFlags VkSemaphoreCreateFlags; typedef VkFlags VkEventCreateFlags; -typedef enum VkQueryPipelineStatisticFlagBits_ { +typedef enum { VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT = 0x00000001, VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT = 0x00000002, VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT = 0x00000004, @@ -942,9 +946,8 @@ typedef enum VkQueryPipelineStatisticFlagBits_ { typedef VkFlags VkQueryPipelineStatisticFlags; typedef enum { - VK_QUERY_RESULT_32_BIT = 0, + VK_QUERY_RESULT_DEFAULT = 0, VK_QUERY_RESULT_64_BIT = 0x00000001, - VK_QUERY_RESULT_NO_WAIT_BIT = 0, VK_QUERY_RESULT_WAIT_BIT = 0x00000002, VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, @@ -1031,6 +1034,26 @@ typedef enum { } VkCmdBufferOptimizeFlagBits; typedef VkFlags VkCmdBufferOptimizeFlags; +typedef enum { + VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, + VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, + VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, +} VkImageAspectFlagBits; +typedef VkFlags VkImageAspectFlags; + +typedef enum { + VK_PIPE_EVENT_TOP_OF_PIPE_BIT = 0x00000001, + VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE_BIT = 0x00000002, + VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE_BIT = 0x00000004, + VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE_BIT = 0x00000008, + VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE_BIT = 0x00000010, + VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE_BIT = 0x00000020, + VK_PIPE_EVENT_TRANSFER_COMPLETE_BIT = 0x00000040, + VK_PIPE_EVENT_COMMANDS_COMPLETE_BIT = 0x00000080, + VK_PIPE_EVENT_CPU_SIGNAL_BIT = 0x00000100, +} VkPipeEventFlagBits; +typedef VkFlags VkPipeEventFlags; + typedef enum { VK_QUERY_CONTROL_CONSERVATIVE_BIT = 0x00000001, } VkQueryControlFlagBits; @@ -1058,27 +1081,6 @@ typedef enum { } VkMemoryInputFlagBits; typedef VkFlags VkMemoryInputFlags; -typedef enum { - VK_PROVOKING_VERTEX_FIRST = 0x00000000, - VK_PROVOKING_VERTEX_LAST = 0x00000001, - - VK_ENUM_RANGE(PROVOKING_VERTEX, FIRST, LAST) -} VkProvokingVertex; - -typedef enum { - VK_COORDINATE_ORIGIN_UPPER_LEFT = 0x00000000, - VK_COORDINATE_ORIGIN_LOWER_LEFT = 0x00000001, - - VK_ENUM_RANGE(COORDINATE_ORIGIN, UPPER_LEFT, LOWER_LEFT) -} VkCoordinateOrigin; - -typedef enum { - VK_DEPTH_MODE_ZERO_TO_ONE = 0x00000000, - VK_DEPTH_MODE_NEGATIVE_ONE_TO_ONE = 0x00000001, - - VK_ENUM_RANGE(DEPTH_MODE, ZERO_TO_ONE, NEGATIVE_ONE_TO_ONE) -} VkDepthMode; - typedef enum { // Info type for vkGetPhysicalDeviceInfo() VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES = 0x00000000, @@ -1132,9 +1134,6 @@ typedef enum { VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE1_DISPLAY_BIT = VK_BIT(6), } VkPhysicalDeviceCompatibilityFlagBits; -// ------------------------------------------------------------------------------------------------ -// Vulkan structures - typedef struct { VkStructureType sType; const void* pNext; @@ -1237,12 +1236,6 @@ typedef struct { VkMemoryPropertyFlags memProps; } VkMemoryAllocInfo; -typedef struct { - VkStructureType sType; - const void* pNext; - VkDeviceMemory sharedMem; -} VkMemoryOpenInfo; - typedef struct { VkDeviceSize size; VkDeviceSize alignment; @@ -1284,16 +1277,9 @@ typedef struct { typedef struct { VkStructureType sType; const void* pNext; - uint32_t initialCount; VkSemaphoreCreateFlags flags; } VkSemaphoreCreateInfo; -typedef struct { - VkStructureType sType; - const void* pNext; - VkSemaphore sharedSemaphore; -} VkSemaphoreOpenInfo; - typedef struct { VkStructureType sType; const void* pNext; @@ -1340,10 +1326,6 @@ typedef struct { VkImageCreateFlags flags; } VkImageCreateInfo; -typedef struct { - VkImage originalImage; -} VkPeerImageOpenInfo; - typedef struct { VkDeviceSize offset; VkDeviceSize size; @@ -1460,15 +1442,13 @@ typedef struct { const VkVertexInputBindingDescription* pVertexBindingDescriptions; uint32_t attributeCount; const VkVertexInputAttributeDescription* pVertexAttributeDescriptions; -} VkPipelineVertexInputCreateInfo; +} VkPipelineVertexInputStateCreateInfo; typedef struct { VkStructureType sType; const void* pNext; VkPrimitiveTopology topology; - bool32_t disableVertexReuse; bool32_t primitiveRestartEnable; - uint32_t primitiveRestartIndex; } VkPipelineIaStateCreateInfo; typedef struct { @@ -1481,8 +1461,6 @@ typedef struct { VkStructureType sType; const void* pNext; uint32_t viewportCount; - VkCoordinateOrigin clipOrigin; - VkDepthMode depthMode; } VkPipelineVpStateCreateInfo; typedef struct { @@ -1490,9 +1468,6 @@ typedef struct { const void* pNext; bool32_t depthClipEnable; bool32_t rasterizerDiscardEnable; - bool32_t programPointSize; - VkCoordinateOrigin pointOrigin; - VkProvokingVertex provokingVertex; VkFillMode fillMode; VkCullMode cullMode; VkFrontFace frontFace; @@ -1591,7 +1566,7 @@ typedef struct { typedef struct { VkDescriptorType descriptorType; - uint32_t count; + uint32_t arraySize; VkShaderStageFlags stageFlags; const VkSampler* pImmutableSamplers; } VkDescriptorSetLayoutBinding; @@ -1637,14 +1612,14 @@ typedef struct { typedef struct { VkOffset2D offset; VkExtent2D extent; -} VkRect; +} VkRect2D; typedef struct { VkStructureType sType; const void* pNext; uint32_t viewportAndScissorCount; const VkViewport* pViewports; - const VkRect* pScissors; + const VkRect2D* pScissors; } VkDynamicVpStateCreateInfo; typedef struct { @@ -1653,8 +1628,6 @@ typedef struct { float depthBias; float depthBiasClamp; float slopeScaledDepthBias; - float pointSize; - float pointFadeThreshold; float lineWidth; } VkDynamicRsStateCreateInfo; @@ -1667,8 +1640,8 @@ typedef struct { typedef struct { VkStructureType sType; const void* pNext; - float minDepth; - float maxDepth; + float minDepthBounds; + float maxDepthBounds; uint32_t stencilReadMask; uint32_t stencilWriteMask; uint32_t stencilFrontRef; @@ -1697,23 +1670,16 @@ typedef struct { uint32_t layers; } VkFramebufferCreateInfo; -// Union allowing specification of floating point or raw color data. Actual value selected is based on image being cleared. -typedef union VkClearColorValue_ -{ - float floatColor[4]; - uint32_t rawColor[4]; +typedef union { + float f32[4]; + int32_t s32[4]; + uint32_t u32[4]; } VkClearColorValue; -typedef struct { - VkClearColorValue color; - bool32_t useRawValue; -} VkClearColor; - typedef struct { VkStructureType sType; const void* pNext; - - VkRect renderArea; + VkRect2D renderArea; uint32_t colorAttachmentCount; VkExtent2D extent; uint32_t sampleCount; @@ -1722,7 +1688,7 @@ typedef struct { const VkImageLayout* pColorLayouts; const VkAttachmentLoadOp* pColorLoadOps; const VkAttachmentStoreOp* pColorStoreOps; - const VkClearColor* pColorLoadClearValues; + const VkClearColorValue* pColorLoadClearValues; VkFormat depthStencilFormat; VkImageLayout depthStencilLayout; VkAttachmentLoadOp depthLoadOp; @@ -1776,6 +1742,11 @@ typedef struct { VkExtent3D imageExtent; } VkBufferImageCopy; +typedef struct { + VkOffset3D offset; + VkExtent3D extent; +} VkRect3D; + typedef struct { VkImageSubresource srcSubresource; VkOffset3D srcOffset; @@ -1831,7 +1802,6 @@ typedef struct { VkImageSubresourceRange subresourceRange; } VkImageMemoryBarrier; -// can be added to VkDeviceCreateInfo via pNext typedef struct { VkStructureType sType; const void* pNext; @@ -1930,8 +1900,6 @@ typedef struct { VkRenderPassBegin renderPassContinue; } VkCmdBufferGraphicsBeginInfo; -// ------------------------------------------------------------------------------------------------ -// API functions typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); typedef VkResult (VKAPI *PFN_vkDestroyInstance)(VkInstance instance); typedef VkResult (VKAPI *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices); @@ -2018,22 +1986,26 @@ typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions); typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const uint32_t* pData); typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, uint32_t data); -typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); -typedef void (VKAPI *PFN_vkCmdClearDepthStencil)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI *PFN_vkCmdClearDepthStencilImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +typedef void (VKAPI *PFN_vkCmdClearColorAttachment)(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rectCount, const VkRect3D* pRects); +typedef void (VKAPI *PFN_vkCmdClearDepthStencilAttachment)(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects); typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent); typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent); -typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, uint32_t memBarrierCount, const void** ppMemBarriers); -typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t pipeEventCount, const VkPipeEvent* pPipeEvents, uint32_t memBarrierCount, const void** ppMemBarriers); +typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, const void* const* ppMemBarriers); +typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, const void* const* ppMemBarriers); typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkQueryControlFlags flags); typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot); typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount); typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset); typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags); +typedef void (VKAPI *PFN_vkCmdPushConstants)(VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t start, uint32_t length, const void* values); typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer); typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass); typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin); -typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer, VkRenderPass renderPass); +typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer); +typedef void (VKAPI *PFN_vkCmdExecuteCommands)(VkCmdBuffer cmdBuffer, uint32_t cmdBuffersCount, const VkCmdBuffer* pCmdBuffers); #ifdef VK_PROTOTYPES VkResult VKAPI vkCreateInstance( @@ -2058,8 +2030,6 @@ void * VKAPI vkGetProcAddr( VkPhysicalDevice physicalDevice, const char* pName); -// Device functions - VkResult VKAPI vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, @@ -2273,8 +2243,6 @@ VkResult VKAPI vkGetImageSubresourceInfo( size_t* pDataSize, void* pData); -// Image view functions - VkResult VKAPI vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, @@ -2547,11 +2515,11 @@ void VKAPI vkCmdClearColorImage( VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, - VkClearColor color, + const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); -void VKAPI vkCmdClearDepthStencil( +void VKAPI vkCmdClearDepthStencilImage( VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, @@ -2560,6 +2528,23 @@ void VKAPI vkCmdClearDepthStencil( uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +void VKAPI vkCmdClearColorAttachment( + VkCmdBuffer cmdBuffer, + uint32_t colorAttachment, + VkImageLayout imageLayout, + const VkClearColorValue* pColor, + uint32_t rectCount, + const VkRect3D* pRects); + +void VKAPI vkCmdClearDepthStencilAttachment( + VkCmdBuffer cmdBuffer, + VkImageAspectFlags imageAspectMask, + VkImageLayout imageLayout, + float depth, + uint32_t stencil, + uint32_t rectCount, + const VkRect3D* pRects); + void VKAPI vkCmdResolveImage( VkCmdBuffer cmdBuffer, VkImage srcImage, @@ -2584,16 +2569,16 @@ void VKAPI vkCmdWaitEvents( VkWaitEvent waitEvent, uint32_t eventCount, const VkEvent* pEvents, + VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, - const void** ppMemBarriers); + const void* const* ppMemBarriers); void VKAPI vkCmdPipelineBarrier( VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, - uint32_t pipeEventCount, - const VkPipeEvent* pPipeEvents, + VkPipeEventFlags pipeEventMask, uint32_t memBarrierCount, - const void** ppMemBarriers); + const void* const* ppMemBarriers); void VKAPI vkCmdBeginQuery( VkCmdBuffer cmdBuffer, @@ -2628,14 +2613,25 @@ void VKAPI vkCmdCopyQueryPoolResults( VkDeviceSize destStride, VkQueryResultFlags flags); +void VKAPI vkCmdPushConstants( + VkCmdBuffer cmdBuffer, + VkPipelineLayout layout, + VkShaderStageFlags stageFlags, + uint32_t start, + uint32_t length, + const void* values); + void VKAPI vkCmdBeginRenderPass( VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin); void VKAPI vkCmdEndRenderPass( - VkCmdBuffer cmdBuffer, - VkRenderPass renderPass); + VkCmdBuffer cmdBuffer); +void VKAPI vkCmdExecuteCommands( + VkCmdBuffer cmdBuffer, + uint32_t cmdBuffersCount, + const VkCmdBuffer* pCmdBuffers); #endif #ifdef __cplusplus