Index: /trunk/src/VBox/Additions/common/crOpenGL/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/Makefile.kmk	(revision 55824)
+++ /trunk/src/VBox/Additions/common/crOpenGL/Makefile.kmk	(revision 55825)
@@ -207,4 +207,9 @@
 	$(VBOX_LIB_OGL_CRUTIL) \
 	$(PATH_STAGE_LIB)/additions/VBoxOGLspuload$(VBOX_SUFF_LIB)
+
+VBoxOGL_LIBS.win += \
+	$(PATH_STAGE_LIB)/additions/VBoxDispMpLogger$(VBOX_SUFF_LIB) \
+	$(PATH_STAGE_LIB)/additions/VBoxCrHgsmi$(VBOX_SUFF_LIB)
+
 if1of ($(KBUILD_TARGET), linux solaris freebsd)
  VBoxOGL_LIBS += \
@@ -242,4 +247,10 @@
 	$(VBOX_LIB_OGL_CRUTIL_X86) \
 	$(PATH_STAGE_LIB)/additions/VBoxOGLspuload-x86$(VBOX_SUFF_LIB)
+
+VBoxOGL-x86_LIBS.win += \
+	$(PATH_STAGE_LIB)/additions/VBoxDispMpLogger-x86$(VBOX_SUFF_LIB) \
+	$(PATH_STAGE_LIB)/additions/VBoxCrHgsmi-x86$(VBOX_SUFF_LIB)
+
+
 VBoxOGL-x86_SOURCES.win = $(subst cropengl.def,cropengl-x86.def,$(VBoxOGL_SOURCES.win))
 VBoxOGL-x86_CLEAN.win = $(subst cropengl.def,cropengl-x86.def,$(VBoxOGL_CLEAN.win))
Index: /trunk/src/VBox/Additions/common/crOpenGL/icd_drv.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/icd_drv.c	(revision 55824)
+++ /trunk/src/VBox/Additions/common/crOpenGL/icd_drv.c	(revision 55825)
@@ -22,4 +22,9 @@
 #include "stub.h"
 #include "cr_mem.h"
+
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+# include <VBox/VBoxCrHgsmi.h>
+# include <VBox/VBoxUhgsmi.h>
+#endif
 
 #include <windows.h>
@@ -155,4 +160,7 @@
     char dpyName[MAX_DPY_NAME];
     ContextInfo *context;
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+    PVBOXUHGSMI pHgsmi = NULL;
+#endif
 
     CR_DDI_PROLOGUE();
@@ -170,7 +178,11 @@
 #endif
 
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+    pHgsmi = VBoxCrHgsmiCreate();
+#endif
+
     context = stubNewContext(dpyName, desiredVisual, UNDECIDED, 0
 #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
-        , NULL
+        , pHgsmi
 #endif
             );
@@ -301,8 +313,30 @@
 BOOL APIENTRY DrvDeleteContext(HGLRC hglrc)
 {
-    CR_DDI_PROLOGUE();
-    /*crDebug( "DrvDeleteContext(0x%x) called", hglrc );*/
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+    ContextInfo *pContext;
+    PVBOXUHGSMI pHgsmi = NULL;
+#endif
+
+    CR_DDI_PROLOGUE();
+    crDebug( "DrvDeleteContext(0x%x) called", hglrc );
+
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+    crHashtableLock(stub.contextTable);
+
+    pContext = (ContextInfo *) crHashtableSearch(stub.contextTable, (unsigned long) hglrc);
+    if (pContext)
+        pHgsmi = pContext->pHgsmi;
+
+    crHashtableUnlock(stub.contextTable);
+#endif
+
     stubDestroyContext( (unsigned long) hglrc );
-    return 1;
+
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+    if (pHgsmi)
+        VBoxCrHgsmiDestroy(pHgsmi);
+#endif
+
+    return true;
 }
 
Index: /trunk/src/VBox/Additions/common/crOpenGL/load.c
===================================================================
--- /trunk/src/VBox/Additions/common/crOpenGL/load.c	(revision 55824)
+++ /trunk/src/VBox/Additions/common/crOpenGL/load.c	(revision 55825)
@@ -1460,4 +1460,7 @@
         }
 
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+        VBoxCrHgsmiInit();
+#endif
         break;
     }
@@ -1474,4 +1477,9 @@
         }
 
+        
+#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
+        VBoxCrHgsmiTerm();
+#endif
+
         stubSPUSafeTearDown();
 
