diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-03-26 16:15:39 -0600 |
|---|---|---|
| committer | Chia-I Wu <olv@lunarg.com> | 2015-04-16 17:33:26 +0800 |
| commit | 19f71a159e0da00bf845f103a76cc0bf04a78868 (patch) | |
| tree | d9a6abdc67af5b0202b9c04f7677a24dd4340fe3 /layers/mem_tracker.cpp | |
| parent | 752eb8e937a67c4a0241966752524af5849e3be2 (diff) | |
| download | usermoji-19f71a159e0da00bf845f103a76cc0bf04a78868.tar.xz | |
mem_tracker: Report PRESENTABLE_IMAGE_MEMORY obj
Diffstat (limited to 'layers/mem_tracker.cpp')
| -rw-r--r-- | layers/mem_tracker.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 9d703c6c..5c44f9d3 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -478,7 +478,7 @@ static bool32_t checkCBCompleted(const XGL_CMD_BUFFER cb) return result; } -static bool32_t freeMemObjInfo(XGL_GPU_MEMORY mem) +static bool32_t freeMemObjInfo(XGL_GPU_MEMORY mem, bool internal) { bool32_t result = XGL_TRUE; // Parse global list to find info w/ mem @@ -489,7 +489,7 @@ static bool32_t freeMemObjInfo(XGL_GPU_MEMORY mem) layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, mem, 0, MEMTRACK_INVALID_MEM_OBJ, "MEM", str); result = XGL_FALSE; } else { - if (pInfo->allocInfo.allocationSize == 0) { + if (pInfo->allocInfo.allocationSize == 0 && !internal) { char str[1024]; sprintf(str, "Attempting to free memory associated with a Presentable Image, %p, this should not be explicitly freed\n", (void*)mem); layerCbMsg(XGL_DBG_MSG_WARNING, XGL_VALIDATION_LEVEL_0, mem, 0, MEMTRACK_INVALID_MEM_OBJ, "MEM", str); @@ -919,7 +919,7 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglFreeMemory(XGL_GPU_MEMORY mem) * all API objects referencing it and that it is not referenced by any queued command buffers */ loader_platform_thread_lock_mutex(&globalLock); - if (XGL_FALSE == freeMemObjInfo(mem)) { + if (XGL_FALSE == freeMemObjInfo(mem, false)) { char str[1024]; sprintf(str, "Issue while freeing mem obj %p", (void*)mem); layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, mem, 0, MEMTRACK_FREE_MEM_ERROR, "MEM", str); @@ -1008,8 +1008,9 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglDestroyObject(XGL_OBJECT object) if (0 == pDelInfo->pMemObjInfo->allocInfo.allocationSize) { // Wsi allocated memory has NULL allocInfo w/ 0 size XGL_GPU_MEMORY memToFree = pDelInfo->pMemObjInfo->mem; clearObjectBinding(object); - freeMemObjInfo(memToFree); - } else { + freeMemObjInfo(memToFree, true); + } + else { char str[1024]; sprintf(str, "Destroying obj %p that is still bound to memory object %p\nYou should first clear binding by calling xglBindObjectMemory(%p, 0, XGL_NULL_HANDLE, 0)", object, (void*)pDelInfo->pMemObjInfo->mem, object); layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, object, 0, MEMTRACK_DESTROY_OBJECT_ERROR, "MEM", str); |
