summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoren Huang <b02279@freescale.com>2014-07-15 15:22:50 +0800
committerLoren Huang <b02279@freescale.com>2014-08-27 12:09:01 +0800
commit4cc465429628bf02b8b363e1ec6f8f97492ab1e3 (patch)
tree95c33b2261fd34a75d682ea806528390359af3f6
parent3fa0d011628af1cd4e93889d294c469e963cc0a1 (diff)
ENGR00315583 [#1209] fix random data corruption in GPU memory
GPU memory node should not be used after node structure is destoryed, that will cause random GPU memory data corruption issue in Android platform. the issue can be reproduced when run cts -p android.opengl repeatly(more than 100 times) Date: May 28, 2014 Signed-off-by: Xianzhong <b07117@freescale.com> Acked-by: Jason Liu (cherry picked from commit 36dbe12f0dbd01dd7ef10b52a9c508fa5d7d19d0)
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
index ccf0277c2bc5..d565800e13bf 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel.c
@@ -1260,14 +1260,6 @@ gckKERNEL_Dispatch(
node->VidMem.logical = gcvNULL;
}
#endif
- /* Free video memory. */
- gcmkONERROR(
- gckVIDMEM_Free(Kernel, node));
-
- gcmkONERROR(
- gckKERNEL_RemoveProcessDB(Kernel,
- processID, gcvDB_VIDEO_MEMORY,
- node));
if (node->VidMem.memory->object.type == gcvOBJ_VIDMEM)
{
@@ -1291,6 +1283,15 @@ gckKERNEL_Dispatch(
node));
}
+ /* Free video memory. */
+ gcmkONERROR(
+ gckVIDMEM_Free(Kernel, node));
+
+ gcmkONERROR(
+ gckKERNEL_RemoveProcessDB(Kernel,
+ processID, gcvDB_VIDEO_MEMORY,
+ node));
+
break;
case gcvHAL_LOCK_VIDEO_MEMORY: