VirtualBox

Changeset 87904 in vbox


Ignore:
Timestamp:
Mar 1, 2021 6:14:51 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
142990
Message:

DevVGA,DisplayImpl.cpp,pdmifs.h: Don't require EMT for pfnUpdateDisplayAll and pfnCopyRect. (Prep for moving real clock timers to thread.) bugref:9943

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/pdmifs.h

    r84740 r87904  
    521521     * @param   pInterface          Pointer to this interface.
    522522     * @param   fFailOnResize       Fail is a resize is pending.
    523      * @thread  The emulation thread.
     523     * @thread  The emulation thread - bird sees no need for EMT here!
    524524     */
    525525    DECLR3CALLBACKMEMBER(int, pfnUpdateDisplayAll,(PPDMIDISPLAYPORT pInterface, bool fFailOnResize));
     
    646646     * @param   cbDstLine           The line length of the destination frame buffer.
    647647     * @param   cDstBitsPerPixel    The pixel depth of the destination.
    648      * @thread  The emulation thread.
     648     * @thread  The emulation thread - bird sees no need for EMT here!
    649649     */
    650650    DECLR3CALLBACKMEMBER(int, pfnCopyRect,(PPDMIDISPLAYPORT pInterface, uint32_t cx, uint32_t cy,
     
    807807     *
    808808     * @param   pInterface          Pointer to this interface.
    809      * @thread  The emulation thread.
     809     * @thread  The emulation thread or timer queue thread.
    810810     */
    811811    DECLR3CALLBACKMEMBER(void, pfnRefresh,(PPDMIDISPLAYCONNECTOR pInterface));
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r87773 r87904  
    47384738    PPDMDEVINS  pDevIns = pThisCC->pDevIns;
    47394739    PVGASTATE   pThis   = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    4740     PDMDEV_ASSERT_EMT(pDevIns);
    47414740
    47424741    int rc = PDMDevHlpCritSectEnter(pDevIns, &pThis->CritSect, VERR_SEM_BUSY);
     
    47854784 * Internal vgaR3PortUpdateDisplayAll worker called under pThis->CritSect.
    47864785 */
     4786/** @todo Why the 'vboxR3' prefix? */
    47874787static int vboxR3UpdateDisplayAllInternal(PPDMDEVINS pDevIns, PVGASTATE pThis, PVGASTATECC pThisCC, bool fFailOnResize)
    47884788{
    47894789# ifdef VBOX_WITH_VMSVGA
    4790     if (    !pThis->svga.fEnabled
    4791         ||  pThis->svga.fTraces)
    4792     {
     4790    if (   !pThis->svga.fEnabled
     4791        || pThis->svga.fTraces)
    47934792# endif
    4794     /* The dirty bits array has been just cleared, reset handlers as well. */
    4795     if (pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS)
    4796         PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
    4797 # ifdef VBOX_WITH_VMSVGA
    4798     }
    4799 # endif
     4793    {
     4794        /* The dirty bits array has been just cleared, reset handlers as well. */
     4795        if (pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS)
     4796            PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
     4797    }
    48004798    if (pThis->fRemappedVGA)
    48014799    {
     
    48194817    PPDMDEVINS  pDevIns = pThisCC->pDevIns;
    48204818    PVGASTATE   pThis   = PDMDEVINS_2_DATA(pDevIns, PVGASTATE);
    4821     PDMDEV_ASSERT_EMT(pDevIns);
    48224819
    48234820    /* This is called both in VBVA mode and normal modes. */
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r85368 r87904  
    976976#ifndef VBOX_WITH_HGSMI
    977977    if (!mVideoAccelLegacy.fVideoAccelEnabled)
    978     {
    979978#else
    980979    if (!mVideoAccelLegacy.fVideoAccelEnabled && !maFramebuffers[uScreenId].fVBVAEnabled)
    981     {
    982 #endif /* VBOX_WITH_HGSMI */
     980#endif
     981    {
    983982        /* When VBVA is enabled, the VRDP server is informed
    984983         * either in VideoAccelFlush or displayVBVAUpdateProcess.
     
    23062305}
    23072306
     2307/** @todo r=bird: cannot quite see why this would be required to run on an
     2308 *        EMT any more.  It's not an issue in the COM methods, but for the
     2309 *        VGA device interface it is an issue, see querySourceBitmap. */
    23082310/*static*/ DECLCALLBACK(int) Display::i_InvalidateAndUpdateEMT(Display *pDisplay, unsigned uId, bool fUpdateAll)
    23092311{
     
    25692571
    25702572        if (fInvalidate)
     2573#if 1 /* bird: Cannot see why this needs to run on an EMT. It deadlocks now with timer callback moving to non-EMT worker threads. */
     2574            Display::i_InvalidateAndUpdateEMT(this, aScreenId, false /*fUpdateAll*/);
     2575#else
    25712576            VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::i_InvalidateAndUpdateEMT,
    25722577                             3, this, aScreenId, false);
     2578#endif
    25732579    }
    25742580
Note: See TracChangeset for help on using the changeset viewer.

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