From 14b62e46835fdbb044796db3d22892c2cd1bfebe Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Sun, 8 Mar 2015 17:02:18 -0600 Subject: xgl: Add xglCmdBlitImage entry point Part one of adding support for abitrary scaled blits and format conversions. Just interface here. Functionality to follow. bug #13071 alpha rev: r29665 --- layers/draw_state.c | 17 +++++++++++++++++ layers/mem_tracker.cpp | 11 +++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) (limited to 'layers') diff --git a/layers/draw_state.c b/layers/draw_state.c index 9fa0cc2a..c655b572 100644 --- a/layers/draw_state.c +++ b/layers/draw_state.c @@ -2340,6 +2340,23 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE nextTable.CmdCopyImage(cmdBuffer, srcImage, destImage, regionCount, pRegions); } +XGL_LAYER_EXPORT void XGLAPI xglCmdBlitImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE_LAYOUT srcLayout, + XGL_IMAGE destImage, XGL_IMAGE_LAYOUT destLayout, + uint32_t regionCount, const XGL_IMAGE_BLIT* pRegions) +{ + GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer); + if (pCB) { + updateCBTracking(cmdBuffer); + addCmd(pCB, CMD_COPYIMAGE); + } + else { + char str[1024]; + sprintf(str, "Attempt to use CmdBuffer %p that doesn't exist!", (void*)cmdBuffer); + layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, cmdBuffer, 0, DRAWSTATE_INVALID_CMD_BUFFER, "DS", str); + } + nextTable.CmdBlitImage(cmdBuffer, srcImage, srcLayout, destImage, destLayout, 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) { GLOBAL_CB_NODE* pCB = getCBNode(cmdBuffer); diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index c68dc977..768c60b4 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -1473,8 +1473,15 @@ XGL_LAYER_EXPORT void XGLAPI xglCmdCopyImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE nextTable.CmdCopyImage(cmdBuffer, srcImage, destImage, 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 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) +{ + // TODO : Each image will have mem mapping so track them + nextTable.CmdBlitImage(cmdBuffer, srcImage, srcLayout, destImage, destLayout, 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) { // TODO : Track this loader_platform_thread_lock_mutex(&globalLock); -- cgit v1.2.3