VirtualBox

Changeset 77370 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Feb 20, 2019 8:04:38 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
128917
Message:

Device/Graphics, pdm, Main, Front-ends: infrastructure for host software cursor.
bugref:9376: Complete hardware cursor implementation in VMSVGA.
This change provides the infrastructure for letting front-ends report to the
graphics device that they are able to render a pointer cursor at any location,
not just where the host cursor is, and for the device to ask them to do this.
It also provides mediation in Main/Display between multiple front-ends and the
device, and tells the guest that we can always render the cursor. In a
follow-up change the device is expected to add support for rendering the
cursor itself into the frame-buffer image it provides to the front-end if not
all attached front-ends are capable of rendering it.

Location:
trunk/src/VBox/Devices/Graphics
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA.h

    r76985 r77370  
    585585                                       uint32_t dy, uint32_t fEnabled,
    586586                                       uint32_t fNotifyGuest);
    587 DECLCALLBACK(void) vbvaPortReportHostCursorCapabilities(PPDMIDISPLAYPORT pInterface, uint32_t fCapabilitiesAdded,
    588                                                         uint32_t fCapabilitiesRemoved);
     587DECLCALLBACK(void) vbvaPortReportHostCursorCapabilities(PPDMIDISPLAYPORT pInterface, bool fSupportsRenderCursor, bool fSupportsMoveCursor);
    589588DECLCALLBACK(void) vbvaPortReportHostCursorPosition(PPDMIDISPLAYPORT pInterface, uint32_t x, uint32_t y);
    590589
  • trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp

    r77130 r77370  
    28342834}
    28352835
    2836 DECLCALLBACK(void) vbvaPortReportHostCursorCapabilities(PPDMIDISPLAYPORT pInterface, uint32_t fCapabilitiesAdded,
    2837                                                         uint32_t fCapabilitiesRemoved)
    2838 {
     2836DECLCALLBACK(void) vbvaPortReportHostCursorCapabilities(PPDMIDISPLAYPORT pInterface, bool fSupportsRenderCursor, bool fSupportsMoveCursor)
     2837{
     2838    LogRelFlowFunc(("fSupportsRenderCursor=%RTbool, fSupportsMoveCursor=%RTbool\n",
     2839                    fSupportsRenderCursor, fSupportsMoveCursor));
     2840#if 0
    28392841    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
    28402842    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
     2843    NOREF(fSupportsMoveCursor);
    28412844    AssertRC(rc);
    2842     pThis->fHostCursorCapabilities |= fCapabilitiesAdded;
    2843     pThis->fHostCursorCapabilities &= ~fCapabilitiesRemoved;
     2845    pThis->fHostCursorCapabilities = fSupportsRenderCursor ? VBOX_VBVA_CURSOR_CAPABILITY_HARDWARE : 0;
    28442846    if (pThis->fGuestCaps & VBVACAPS_IRQ && pThis->fGuestCaps & VBVACAPS_DISABLE_CURSOR_INTEGRATION)
    28452847        VBVARaiseIrq(pThis, HGSMIHOSTFLAGS_CURSOR_CAPABILITIES);
    28462848    PDMCritSectLeave(&pThis->CritSect);
     2849#else
     2850    RT_NOREF(pInterface, fSupportsRenderCursor, fSupportsMoveCursor);
     2851#endif
    28472852}
    28482853
     
    28852890             pCtx->fPaused = true;
    28862891             memset(pCtx->aModeHints, ~0, sizeof(pCtx->aModeHints));
    2887              pVGAState->fHostCursorCapabilities = 0;
     2892             pVGAState->fHostCursorCapabilities = VBOX_VBVA_CURSOR_CAPABILITY_HARDWARE;
    28882893         }
    28892894     }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette