diff options
| author | Chris Forbes <chrisf@ijw.co.nz> | 2015-06-22 17:21:59 +1200 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2015-07-07 14:54:05 +1200 |
| commit | faa91734d9f29abfd0f5dcbe9b5fc41f13b36046 (patch) | |
| tree | 5288e6eb2c950c26826812f399173e4301291b56 /include | |
| parent | c0ff6d2f78350922f81f9103496503662ca4df62 (diff) | |
| download | usermoji-faa91734d9f29abfd0f5dcbe9b5fc41f13b36046.tar.xz | |
vulkan.h: Split attachment and image clears (#13914, v126)
- Add bit flags for image aspects.
- Replace VkRect with VkRect2D and VkRect3D.
- Rename vkCmdClearDepthStencil to vkCmdClearDepthStencilImage
- Add vkCmdClearColorAttachment and vkCmdClearDepthStencilAttachment
Remaining to be done:
- Actually implement vkCmdClearColorAttachment,
vkCmdClearDepthStencilAttachment in the Intel ICD
- Enforce renderpass interactions: CmdClear*Attachment may only be
called within a renderpass; CmdClear*Image may only be called outside
a renderpass.
Signed-off-by: Chris Forbes <chrisf@ijw.co.nz>
Diffstat (limited to 'include')
| -rw-r--r-- | include/vkLayer.h | 4 | ||||
| -rw-r--r-- | include/vulkan.h | 46 |
2 files changed, 43 insertions, 7 deletions
diff --git a/include/vkLayer.h b/include/vkLayer.h index 64673545..85c41d6e 100644 --- a/include/vkLayer.h +++ b/include/vkLayer.h @@ -107,7 +107,9 @@ typedef struct VkLayerDispatchTable_ PFN_vkCmdUpdateBuffer CmdUpdateBuffer; PFN_vkCmdFillBuffer CmdFillBuffer; PFN_vkCmdClearColorImage CmdClearColorImage; - PFN_vkCmdClearDepthStencil CmdClearDepthStencil; + PFN_vkCmdClearDepthStencilImage CmdClearDepthStencilImage; + PFN_vkCmdClearColorAttachment CmdClearColorAttachment; + PFN_vkCmdClearDepthStencilAttachment CmdClearDepthStencilAttachment; PFN_vkCmdResolveImage CmdResolveImage; PFN_vkCmdSetEvent CmdSetEvent; PFN_vkCmdResetEvent CmdResetEvent; diff --git a/include/vulkan.h b/include/vulkan.h index 1517d4c8..b023b69c 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -1073,6 +1073,15 @@ typedef enum { typedef VkFlags VkPipelineStageFlags; +// Image aspect flags +typedef VkFlags VkImageAspectFlags; +typedef enum VkImageAspectFlagBits_ +{ + VK_IMAGE_ASPECT_COLOR_BIT = VK_BIT(0), + VK_IMAGE_ASPECT_DEPTH_BIT = VK_BIT(1), + VK_IMAGE_ASPECT_STENCIL_BIT = VK_BIT(2), +} VkImageAspectFlagBits; + // Query control flags typedef VkFlags VkQueryControlFlags; typedef enum VkQueryControlFlagBits_ @@ -1179,11 +1188,17 @@ typedef struct VkViewport_ float maxDepth; } VkViewport; -typedef struct VkRect_ +typedef struct VkRect2D_ { VkOffset2D offset; VkExtent2D extent; -} VkRect; +} VkRect2D; + +typedef struct VkRect3D_ +{ + VkOffset3D offset; + VkExtent3D extent; +} VkRect3D; typedef struct VkChannelMapping_ { @@ -1975,7 +1990,7 @@ typedef struct VkDynamicVpStateCreateInfo_ const void* pNext; // Pointer to next structure uint32_t viewportAndScissorCount; // number of entries in pViewports and pScissors const VkViewport* pViewports; - const VkRect* pScissors; + const VkRect2D* pScissors; } VkDynamicVpStateCreateInfo; typedef struct VkDynamicRsStateCreateInfo_ @@ -2052,7 +2067,7 @@ typedef struct VkRenderPassCreateInfo_ VkStructureType sType; // Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO const void* pNext; // Pointer to next structure - VkRect renderArea; + VkRect2D renderArea; uint32_t colorAttachmentCount; VkExtent2D extent; uint32_t sampleCount; @@ -2239,7 +2254,9 @@ typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkIm 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, const VkClearColor* pColor, 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_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 VkClearColor* 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, VkPipelineStageFlags stageMask); typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask); @@ -2823,7 +2840,7 @@ void VKAPI vkCmdClearColorImage( uint32_t rangeCount, const VkImageSubresourceRange* pRanges); -void VKAPI vkCmdClearDepthStencil( +void VKAPI vkCmdClearDepthStencilImage( VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, @@ -2832,6 +2849,23 @@ void VKAPI vkCmdClearDepthStencil( uint32_t rangeCount, const VkImageSubresourceRange* pRanges); +void VKAPI vkCmdClearColorAttachment( + VkCmdBuffer cmdBuffer, + uint32_t colorAttachment, + VkImageLayout imageLayout, + const VkClearColor* 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, |
