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 /loader | |
| 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 'loader')
| -rw-r--r-- | loader/gpa_helper.h | 8 | ||||
| -rw-r--r-- | loader/table_ops.h | 12 | ||||
| -rw-r--r-- | loader/trampoline.c | 22 |
3 files changed, 35 insertions, 7 deletions
diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h index 1ead95c7..26eefc6e 100644 --- a/loader/gpa_helper.h +++ b/loader/gpa_helper.h @@ -223,8 +223,12 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkCmdFillBuffer; if (!strcmp(name, "CmdClearColorImage")) return (void*) vkCmdClearColorImage; - if (!strcmp(name, "CmdClearDepthStencil")) - return (void*) vkCmdClearDepthStencil; + if (!strcmp(name, "CmdClearDepthStencilImage")) + return (void*) vkCmdClearDepthStencilImage; + if (!strcmp(name, "CmdClearColorAttachment")) + return (void*) vkCmdClearColorAttachment; + if (!strcmp(name, "CmdClearDepthStencilAttachment")) + return (void*) vkCmdClearDepthStencilAttachment; if (!strcmp(name, "CmdResolveImage")) return (void*) vkCmdResolveImage; if (!strcmp(name, "CmdSetEvent")) diff --git a/loader/table_ops.h b/loader/table_ops.h index 52cb9c12..39370f36 100644 --- a/loader/table_ops.h +++ b/loader/table_ops.h @@ -116,7 +116,9 @@ static inline void loader_init_device_dispatch_table(VkLayerDispatchTable *table table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) gpa(dev, "vkCmdUpdateBuffer"); table->CmdFillBuffer = (PFN_vkCmdFillBuffer) gpa(dev, "vkCmdFillBuffer"); table->CmdClearColorImage = (PFN_vkCmdClearColorImage) gpa(dev, "vkCmdClearColorImage"); - table->CmdClearDepthStencil = (PFN_vkCmdClearDepthStencil) gpa(dev, "vkCmdClearDepthStencil"); + table->CmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage) gpa(dev, "vkCmdClearDepthStencilImage"); + table->CmdClearColorAttachment = (PFN_vkCmdClearColorAttachment) gpa(dev, "vkCmdClearColorAttachment"); + table->CmdClearDepthStencilAttachment = (PFN_vkCmdClearDepthStencilAttachment) gpa(dev, "vkCmdClearDepthStencilAttachment"); table->CmdResolveImage = (PFN_vkCmdResolveImage) gpa(dev, "vkCmdResolveImage"); table->CmdSetEvent = (PFN_vkCmdSetEvent) gpa(dev, "vkCmdSetEvent"); table->CmdResetEvent = (PFN_vkCmdResetEvent) gpa(dev, "vkCmdResetEvent"); @@ -309,8 +311,12 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->CmdFillBuffer; if (!strcmp(name, "CmdClearColorImage")) return (void *) table->CmdClearColorImage; - if (!strcmp(name, "CmdClearDepthStencil")) - return (void *) table->CmdClearDepthStencil; + if (!strcmp(name, "CmdClearDepthStencilImage")) + return (void *) table->CmdClearDepthStencilImage; + if (!strcmp(name, "CmdClearColorAttachment")) + return (void *) table->CmdClearColorAttachment; + if (!strcmp(name, "CmdClearDepthStencilAttachment")) + return (void *) table->CmdClearDepthStencilAttachment; if (!strcmp(name, "CmdResolveImage")) return (void *) table->CmdResolveImage; if (!strcmp(name, "CmdSetEvent")) diff --git a/loader/trampoline.c b/loader/trampoline.c index 242f04e0..ef8e4f5e 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -999,13 +999,31 @@ LOADER_EXPORT void VKAPI vkCmdClearColorImage(VkCmdBuffer cmdBuffer, VkImage ima disp->CmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges); } -LOADER_EXPORT void VKAPI vkCmdClearDepthStencil(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) +LOADER_EXPORT void VKAPI vkCmdClearDepthStencilImage(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(cmdBuffer); - disp->CmdClearDepthStencil(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges); + disp->CmdClearDepthStencilImage(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges); +} + +LOADER_EXPORT void VKAPI vkCmdClearColorAttachment(VkCmdBuffer cmdBuffer, uint32_t colorAttachment, VkImageLayout imageLayout, const VkClearColor* pColor, uint32_t rectCount, const VkRect3D* pRects) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(cmdBuffer); + + disp->CmdClearColorAttachment(cmdBuffer, colorAttachment, imageLayout, pColor, rectCount, pRects); +} + +LOADER_EXPORT void VKAPI vkCmdClearDepthStencilAttachment(VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rectCount, const VkRect3D* pRects) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(cmdBuffer); + + disp->CmdClearDepthStencilAttachment(cmdBuffer, imageAspectMask, imageLayout, depth, stencil, rectCount, pRects); } LOADER_EXPORT void VKAPI vkCmdResolveImage(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageResolve* pRegions) |
