Changeset 54582 in vbox for trunk/src/VBox
- Timestamp:
- Mar 2, 2015 3:42:16 PM (10 years ago)
- svn:sync-xref-src-repo-rev:
- 98721
- Location:
- trunk/src/VBox
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h
r53103 r54582 561 561 extern DECLEXPORT(void) crVBoxServerCalloutEnable(VBOXCRCMDCTL *pCtl); 562 562 extern DECLEXPORT(void) crVBoxServerCalloutDisable(); 563 extern DECLEXPORT(void) crServerSetUnscaledHiDPI(bool fEnable); 563 564 564 565 #ifdef VBOX_WITH_CRHGSMI -
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r53894 r54582 1395 1395 break; 1396 1396 } 1397 1398 case SHCRGL_HOST_FN_SET_UNSCALED_HIDPI: 1399 { 1400 /* Verify parameter count and types. */ 1401 if (cParms != 1 1402 || paParms[0].type != VBOX_HGCM_SVC_PARM_PTR 1403 || paParms[0].u.pointer.size != sizeof(CRVBOXHGCMSETUNSCALEDHIDPIOUTPUT) 1404 || !paParms[0].u.pointer.addr) 1405 { 1406 WARN(("invalid parameter")); 1407 rc = VERR_INVALID_PARAMETER; 1408 break; 1409 } 1410 1411 CRVBOXHGCMSETUNSCALEDHIDPIOUTPUT *pData = (CRVBOXHGCMSETUNSCALEDHIDPIOUTPUT *)paParms[0].u.pointer.addr; 1412 crServerSetUnscaledHiDPI(pData->fUnscaledHiDPI); 1413 LogRel(("OpenGL: Set OpenGL scale policy on HiDPI displays (fUnscaledHiDPI=%d).\n", pData->fUnscaledHiDPI)); 1414 break; 1415 } 1416 1397 1417 default: 1398 1418 WARN(("svcHostCallPerform: unexpected u32Function %d", u32Function)); -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
r53550 r54582 2541 2541 } 2542 2542 2543 DECLEXPORT(void) crServerSetUnscaledHiDPI(bool fEnable) 2544 { 2545 renderspuSetUnscaledHiDPI(fEnable); 2546 } 2547 2543 2548 static void crVBoxServerReparentMuralCB(unsigned long key, void *data1, void *data2) 2544 2549 { -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c
r52641 r54582 1868 1868 } 1869 1869 1870 DECLEXPORT(void) renderspuSetUnscaledHiDPI(bool fEnable) 1871 { 1872 render_spu.fUnscaledHiDPI = fEnable; 1873 } 1874 1870 1875 #define FILLIN( NAME, FUNC ) \ 1871 1876 table[i].name = crStrdup(NAME); \ -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.h
r52560 r54582 348 348 # endif 349 349 #endif /* RT_OS_DARWIN */ 350 /* If TRUE, render should tell window server to prevent artificial content 351 * up-scaling when displayed on HiDPI monitor. */ 352 bool fUnscaledHiDPI; 350 353 } RenderSPU; 351 354 … … 495 498 DECLEXPORT(void) renderspuSetWindowId(uint64_t winId); 496 499 DECLEXPORT(void) renderspuReparentWindow(GLint window); 500 DECLEXPORT(void) renderspuSetUnscaledHiDPI(bool fEnable); 497 501 #ifdef __cplusplus 498 502 } -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa_helper.m
r54466 r54582 1429 1429 1430 1430 self = [super initWithFrame:frame]; 1431 #ifdef VBOX_WITH_CONFIGURABLE_HIDPI_SCALING 1432 [self performSelector:@selector(setWantsBestResolutionOpenGLSurface:) withObject: (id)YES]; 1431 #if defined(VBOX_WITH_CONFIGURABLE_HIDPI_SCALING) && !defined(IN_VMSVGA3D) 1432 crDebug("HiDPI: up-scaling is %s on NSView init.", render_spu.fUnscaledHiDPI ? "OFF" : "ON"); 1433 if (render_spu.fUnscaledHiDPI) 1434 [self performSelector:@selector(setWantsBestResolutionOpenGLSurface:) withObject: (id)YES]; 1433 1435 #endif 1434 1436 … … 2366 2368 2367 2369 float backingStretchFactor = 1.; 2368 #if def VBOX_WITH_CONFIGURABLE_HIDPI_SCALING2370 #if defined(VBOX_WITH_CONFIGURABLE_HIDPI_SCALING) && !defined(IN_VMSVGA3D) 2369 2371 /* Adjust viewport according to current NSView's backing store parameters. */ 2370 NSRect regularBounds = [self bounds]; 2371 NSRect backingBounds = [self safeConvertRectToBacking:®ularBounds]; 2372 glViewport(0, 0, backingBounds.size.width, backingBounds.size.height); 2373 2374 /* Update strech factor in order to satisfy current NSView's backing store parameters. */ 2375 backingStretchFactor = [self safeGetBackingScaleFactor]; 2372 crDebug("HiDPI: vboxPresentToViewCS: up-scaling is %s.", render_spu.fUnscaledHiDPI ? "OFF" : "ON"); 2373 if (render_spu.fUnscaledHiDPI) 2374 { 2375 NSRect regularBounds = [self bounds]; 2376 NSRect backingBounds = [self safeConvertRectToBacking:®ularBounds]; 2377 glViewport(0, 0, backingBounds.size.width, backingBounds.size.height); 2378 2379 /* Update stretch factor in order to satisfy current NSView's backing store parameters. */ 2380 backingStretchFactor = [self safeGetBackingScaleFactor]; 2381 } 2382 else 2383 backingStretchFactor = 1.; 2376 2384 #endif 2377 2385 -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r54486 r54582 15795 15795 <interface 15796 15796 name="IDisplay" extends="$unknown" 15797 uuid=" 772FBD91-65B5-4CFB-814C-E40E61AC7070"15797 uuid="04AA5E91-3816-4990-8C52-59939307E5EF" 15798 15798 wsmap="managed" 15799 15799 wrap-hint-server-addinterfaces="IEventListener" … … 16104 16104 <param name="u32ScaleFactorWMultiplied" type="unsigned long" dir="in"/> 16105 16105 <param name="u32ScaleFactorHMultiplied" type="unsigned long" dir="in"/> 16106 </method> 16107 16108 <method name="notifyHiDPIOutputPolicyChange"> 16109 <desc> 16110 Notify OpenGL HGCM host service about HiDPI monitor scaling policy change. 16111 </desc> 16112 <param name="fUnscaledHiDPI" type="boolean" dir="in"/> 16106 16113 </method> 16107 16114 -
trunk/src/VBox/Main/include/DisplayImpl.h
r54495 r54582 267 267 ULONG aScaleFactorWMultiplied, 268 268 ULONG aScaleFactorHMultiplied); 269 virtual HRESULT notifyHiDPIOutputPolicyChange(BOOL fUnscaledHiDPI); 269 270 270 271 // Wrapped IEventListener properties -
trunk/src/VBox/Main/src-client/DisplayImpl.cpp
r54567 r54582 3565 3565 #else 3566 3566 AssertMsgFailed(("Attempt to specify OpenGL content scale factor while corresponding functionality is disabled.")); 3567 return E_UNEXPECTED; 3568 #endif /* VBOX_WITH_HGCM && VBOX_WITH_CROGL */ 3569 } 3570 3571 HRESULT Display::notifyHiDPIOutputPolicyChange(BOOL fUnscaledHiDPI) 3572 { 3573 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 3574 HRESULT hr = E_UNEXPECTED; 3575 3576 /* 3D acceleration enabled in VM config. */ 3577 if (mfIsCr3DEnabled) 3578 { 3579 /* VBoxSharedCrOpenGL HGCM host service is running. */ 3580 if (mhCrOglSvc) 3581 { 3582 VMMDev *pVMMDev = mParent->i_getVMMDev(); 3583 if (pVMMDev) 3584 { 3585 VBOXCRCMDCTL_HGCM *pCtl; 3586 pCtl = (VBOXCRCMDCTL_HGCM *)RTMemAlloc(sizeof(CRVBOXHGCMSETUNSCALEDHIDPIOUTPUT) + sizeof(VBOXCRCMDCTL_HGCM)); 3587 if (pCtl) 3588 { 3589 CRVBOXHGCMSETUNSCALEDHIDPIOUTPUT *pData = (CRVBOXHGCMSETUNSCALEDHIDPIOUTPUT *)(pCtl + 1); 3590 int rc; 3591 3592 pData->fUnscaledHiDPI = fUnscaledHiDPI; 3593 3594 pCtl->Hdr.enmType = VBOXCRCMDCTL_TYPE_HGCM; 3595 pCtl->Hdr.u32Function = SHCRGL_HOST_FN_SET_UNSCALED_HIDPI; 3596 pCtl->aParms[0].type = VBOX_HGCM_SVC_PARM_PTR; 3597 pCtl->aParms[0].u.pointer.addr = pData; 3598 pCtl->aParms[0].u.pointer.size = sizeof(*pData); 3599 3600 rc = i_crCtlSubmitSync(&pCtl->Hdr, sizeof(*pCtl)); 3601 if (RT_FAILURE(rc)) 3602 AssertMsgFailed(("crCtlSubmitSync failed (rc=%Rrc)\n", rc)); 3603 else 3604 hr = S_OK; 3605 3606 RTMemFree(pCtl); 3607 } 3608 else 3609 { 3610 LogRel(("Running out of memory on attempt to notify OpenGL about HiDPI output scaling policy change. Ignored.\n")); 3611 hr = E_OUTOFMEMORY; 3612 } 3613 } 3614 else 3615 LogRel(("Internal error occurred on attempt to notify OpenGL about HiDPI output scaling policy change. Ignored.\n")); 3616 } 3617 else 3618 LogRel(("Attempt to notify OpenGL about HiDPI output scaling policy change while corresponding HGCM host service not yet runing. Ignored.\n")); 3619 } 3620 else 3621 { 3622 hr = S_OK; 3623 /* Need an interface like this here (and the #ifdefs needs adjusting): 3624 PPDMIDISPLAYPORT pUpPort = mpDrv ? mpDrv->pUpPort : NULL; 3625 if (pUpPort && pUpPort->pfnSetScaleFactor) 3626 pUpPort->pfnSetScaleFactor(pUpPort, aScreeId, aScaleFactorWMultiplied, aScaleFactorHMultiplied); */ 3627 } 3628 3629 return hr; 3630 #else 3631 AssertMsgFailed(("Attempt to notify OpenGL about HiDPI output scaling policy change while corresponding functionality is disabled.")); 3567 3632 return E_UNEXPECTED; 3568 3633 #endif /* VBOX_WITH_HGCM && VBOX_WITH_CROGL */
Note:
See TracChangeset
for help on using the changeset viewer.