static bool isVBoxWDDMCrHgsmi(void) { #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST) PVBOXUHGSMI pHgsmi = VBoxCrHgsmiCreate(); if (pHgsmi) { VBoxCrHgsmiDestroy(pHgsmi); return true; } #endif return false; }
static int vboxCrHgsmiInitPerform(VBOXDISPKMT_CALLBACKS *pCallbacks) { HRESULT hr = vboxDispKmtCallbacksInit(pCallbacks); /*Assert(hr == S_OK);*/ if (hr == S_OK) { /* check if we can create the hgsmi */ PVBOXUHGSMI pHgsmi = VBoxCrHgsmiCreate(); if (pHgsmi) { /* yes, we can, so this is wddm mode */ VBoxCrHgsmiDestroy(pHgsmi); Log(("CrHgsmi: WDDM mode supported\n")); return 1; } vboxDispKmtCallbacksTerm(pCallbacks); } Log(("CrHgsmi: unsupported\n")); return -1; }
HGLRC APIENTRY DrvCreateContext(HDC hdc) { char dpyName[MAX_DPY_NAME]; ContextInfo *context; #if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST) PVBOXUHGSMI pHgsmi = NULL; #endif CR_DDI_PROLOGUE(); crDebug( "DrvCreateContext(0x%x) called.", hdc); stubInit(); CRASSERT(stub.contextTable); sprintf(dpyName, "%d", hdc); #ifndef VBOX_CROGL_USE_VBITS_SUPERSET if (stub.haveNativeOpenGL) desiredVisual |= ComputeVisBits( hdc ); #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) , pHgsmi #endif ); if (!context) return 0; return (HGLRC) context->id; }