diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-03-25 11:25:10 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:33:26 +0800 |
| commit | 8e89a315187b983cf8ac6561b363e92a116881aa (patch) | |
| tree | 960eef26d3b578910fc3801dc2bf55fc3e60da37 /layers/mem_tracker.cpp | |
| parent | b974dc317ffa83614d739470ac9cebeb56a5e862 (diff) | |
| download | usermoji-8e89a315187b983cf8ac6561b363e92a116881aa.tar.xz | |
xgl: Add IMAGE_LAYOUT to Cmd*Image* calls
This is part 2 of bug #12904.
(2) Blit operations need to know what layout images are in. How do they figure that out?
- Added new parameter(s) specifying the image layout(s) to the following functions:
xglCmdCopyImage
xglCmdCopyBufferToImage
xglCmdCopyImageToBuffer
xglCmdClearColorImage
xglCmdClearColorImageRaw
xglCmdClearDepthStencilImage
xglCmdResolveImage
Diffstat (limited to 'layers/mem_tracker.cpp')
| -rw-r--r-- | layers/mem_tracker.cpp | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 768c60b4..72fae402 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -1466,22 +1466,28 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdCopyBuffer(XGL_CMD_BUFFER cmdBuffer, XGL_BUFF nextTable.CmdCopyBuffer(cmdBuffer, srcBuffer, destBuffer, regionCount, pRegions); } -XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE destImage, - uint32_t regionCount, const XGL_IMAGE_COPY* pRegions) +XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImage(XGL_CMD_BUFFER cmdBuffer, + XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcImageLayout, + XGL_IMAGE destImage, XGL_IMAGE_LAYOUT destImageLayout, + uint32_t regionCount, const XGL_IMAGE_COPY* pRegions) { // TODO : Each image will have mem mapping so track them - nextTable.CmdCopyImage(cmdBuffer, srcImage, destImage, regionCount, pRegions); + nextTable.CmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions); } -XGL_LAYER_EXPORT void XGLAPI xglCmdBlitImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcLayout, - XGL_IMAGE destImage, uint32_t regionCount, XGL_IMAGE_LAYOUT destLayout, - const XGL_IMAGE_BLIT* pRegions) +XGL_LAYER_EXPORT void XGLAPI xglCmdBlitImage(XGL_CMD_BUFFER cmdBuffer, + XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcImageLayout, + XGL_IMAGE destImage, XGL_IMAGE_LAYOUT destImageLayout, + uint32_t regionCount, const XGL_IMAGE_BLIT* pRegions) { // TODO : Each image will have mem mapping so track them - nextTable.CmdBlitImage(cmdBuffer, srcImage, srcLayout, destImage, destLayout, regionCount, pRegions); + nextTable.CmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions); } -XGL_LAYER_EXPORT void XGLAPI xglCmdCopyBufferToImage(XGL_CMD_BUFFER cmdBuffer, XGL_BUFFER srcBuffer, XGL_IMAGE destImage, uint32_t regionCount, const XGL_BUFFER_IMAGE_COPY* pRegions) +XGL_LAYER_EXPORT void XGLAPI xglCmdCopyBufferToImage(XGL_CMD_BUFFER cmdBuffer, + XGL_BUFFER srcBuffer, + XGL_IMAGE destImage, XGL_IMAGE_LAYOUT destImageLayout, + uint32_t regionCount, const XGL_BUFFER_IMAGE_COPY* pRegions) { // TODO : Track this loader_platform_thread_lock_mutex(&globalLock); @@ -1499,11 +1505,13 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdCopyBufferToImage(XGL_CMD_BUFFER cmdBuffer, X layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str); } loader_platform_thread_unlock_mutex(&globalLock); - nextTable.CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, regionCount, pRegions); + nextTable.CmdCopyBufferToImage(cmdBuffer, srcBuffer, destImage, destImageLayout, regionCount, pRegions); } -XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImageToBuffer(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_BUFFER destBuffer, - uint32_t regionCount, const XGL_BUFFER_IMAGE_COPY* pRegions) +XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImageToBuffer(XGL_CMD_BUFFER cmdBuffer, + XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcImageLayout, + XGL_BUFFER destBuffer, + uint32_t regionCount, const XGL_BUFFER_IMAGE_COPY* pRegions) { // TODO : Track this loader_platform_thread_lock_mutex(&globalLock); @@ -1520,7 +1528,7 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImageToBuffer(XGL_CMD_BUFFER cmdBuffer, X layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str); } loader_platform_thread_unlock_mutex(&globalLock); - nextTable.CmdCopyImageToBuffer(cmdBuffer, srcImage, destBuffer, regionCount, pRegions); + nextTable.CmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions); } XGL_LAYER_EXPORT void XGLAPI xglCmdCloneImageData(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcImageLayout, @@ -1570,7 +1578,10 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdFillBuffer(XGL_CMD_BUFFER cmdBuffer, XGL_BUFF nextTable.CmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data); } -XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, XGL_CLEAR_COLOR color, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges) +XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, + XGL_IMAGE image, XGL_IMAGE_LAYOUT imageLayout, + XGL_CLEAR_COLOR color, + uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges) { // TODO : Verify memory is in XGL_IMAGE_STATE_CLEAR state loader_platform_thread_lock_mutex(&globalLock); @@ -1581,10 +1592,13 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str); } loader_platform_thread_unlock_mutex(&globalLock); - nextTable.CmdClearColorImage(cmdBuffer, image, color, rangeCount, pRanges); + nextTable.CmdClearColorImage(cmdBuffer, image, imageLayout, color, rangeCount, pRanges); } -XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, float depth, uint32_t stencil, uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges) +XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, + XGL_IMAGE image, XGL_IMAGE_LAYOUT imageLayout, + float depth, uint32_t stencil, + uint32_t rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges) { // TODO : Verify memory is in XGL_IMAGE_STATE_CLEAR state loader_platform_thread_lock_mutex(&globalLock); @@ -1595,11 +1609,13 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, X layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str); } loader_platform_thread_unlock_mutex(&globalLock); - nextTable.CmdClearDepthStencil(cmdBuffer, image, depth, stencil, rangeCount, pRanges); + nextTable.CmdClearDepthStencil(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges); } -XGL_LAYER_EXPORT void XGLAPI xglCmdResolveImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE destImage, - uint32_t rectCount, const XGL_IMAGE_RESOLVE* pRects) +XGL_LAYER_EXPORT void XGLAPI xglCmdResolveImage(XGL_CMD_BUFFER cmdBuffer, + XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcImageLayout, + XGL_IMAGE destImage, XGL_IMAGE_LAYOUT destImageLayout, + uint32_t rectCount, const XGL_IMAGE_RESOLVE* pRects) { loader_platform_thread_lock_mutex(&globalLock); XGL_GPU_MEMORY mem = getMemBindingFromObject(srcImage); @@ -1615,7 +1631,7 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdResolveImage(XGL_CMD_BUFFER cmdBuffer, XGL_IM layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, MEMTRACK_MEMORY_BINDING_ERROR, "MEM", str); } loader_platform_thread_unlock_mutex(&globalLock); - nextTable.CmdResolveImage(cmdBuffer, srcImage, destImage, rectCount, pRects); + nextTable.CmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, rectCount, pRects); } XGL_LAYER_EXPORT void XGLAPI xglCmdBeginQuery(XGL_CMD_BUFFER cmdBuffer, XGL_QUERY_POOL queryPool, uint32_t slot, XGL_FLAGS flags) |
