@@ -165,6 +165,8 @@ gckKERNEL_Construct(
165165 kernel -> dvfs = gcvNULL ;
166166#endif
167167
168+ kernel -> vidmemMutex = gcvNULL ;
169+
168170 /* Initialize the gckKERNEL object. */
169171 kernel -> object .type = gcvOBJ_KERNEL ;
170172 kernel -> os = Os ;
@@ -297,6 +299,9 @@ gckKERNEL_Construct(
297299 gcmkONERROR (gckOS_CreateSyncTimeline (Os , & kernel -> timeline ));
298300#endif
299301
302+ /* Construct a video memory mutex. */
303+ gcmkONERROR (gckOS_CreateMutex (Os , & kernel -> vidmemMutex ));
304+
300305 /* Return pointer to the gckKERNEL object. */
301306 * Kernel = kernel ;
302307
@@ -518,6 +523,8 @@ gckKERNEL_Destroy(
518523 gcmkVERIFY_OK (gckOS_DestroySyncTimeline (Kernel -> os , Kernel -> timeline ));
519524#endif
520525
526+ gcmkVERIFY_OK (gckOS_DeleteMutex (Kernel -> os , Kernel -> vidmemMutex ));
527+
521528 /* Mark the gckKERNEL object as unknown. */
522529 Kernel -> object .type = gcvOBJ_UNKNOWN ;
523530
@@ -767,7 +774,7 @@ _AllocateMemory(
767774 {
768775 gckOS_Print ("gpu virtual memory 0x%x cannot be allocated for external use !\n" , physAddr );
769776
770- gcmkONERROR (gckVIDMEM_Free (node ));
777+ gcmkONERROR (gckVIDMEM_Free (Kernel , node ));
771778
772779 node = gcvNULL ;
773780 }
@@ -797,7 +804,8 @@ _AllocateMemory(
797804 if (gcmIS_SUCCESS (status ))
798805 {
799806 /* Allocate memory. */
800- status = gckVIDMEM_AllocateLinear (videoMemory ,
807+ status = gckVIDMEM_AllocateLinear (Kernel ,
808+ videoMemory ,
801809 Bytes ,
802810 Alignment ,
803811 Type ,
@@ -1251,7 +1259,7 @@ gckKERNEL_Dispatch(
12511259#endif
12521260 /* Free video memory. */
12531261 gcmkONERROR (
1254- gckVIDMEM_Free (node ));
1262+ gckVIDMEM_Free (Kernel , node ));
12551263
12561264 gcmkONERROR (
12571265 gckKERNEL_RemoveProcessDB (Kernel ,
0 commit comments