aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChris Forbes <chrisf@ijw.co.nz>2015-06-22 17:21:59 +1200
committerChris Forbes <chrisf@ijw.co.nz>2015-07-07 14:54:05 +1200
commitfaa91734d9f29abfd0f5dcbe9b5fc41f13b36046 (patch)
tree5288e6eb2c950c26826812f399173e4301291b56 /include
parentc0ff6d2f78350922f81f9103496503662ca4df62 (diff)
downloadusermoji-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.h4
-rw-r--r--include/vulkan.h46
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,