VirtualBox

Ignore:
Timestamp:
Aug 6, 2013 10:20:23 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
87766
Message:

crOpenGL/wddm: TexPresent fixes, irq handling fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/util/vreg.cpp

    r46966 r47566  
    17491749    Assert(cRects);
    17501750    Assert(cRects <= pData->cRects);
    1751     int rc = VBoxVrListRectsGet(&pCEntry->Vr, cRects, pEntry->paDstRects);
     1751    int rc = VBoxVrListRectsGet(&pCEntry->Vr, cRects, pEntry->paDstUnstretchedRects);
    17521752    AssertRC(rc);
    17531753
    1754     memcpy(pEntry->paDstUnstretchedRects, pEntry->paDstRects, cRects * sizeof (*pEntry->paDstUnstretchedRects));
    1755 
    17561754    if (!pEntry->Pos.x && !pEntry->Pos.y)
    17571755    {
    1758         memcpy(pEntry->paSrcRects, pEntry->paDstRects, cRects * sizeof (*pEntry->paSrcRects));
     1756        memcpy(pEntry->paSrcRects, pEntry->paDstUnstretchedRects, cRects * sizeof (*pEntry->paSrcRects));
    17591757    }
    17601758    else
     
    17621760        for (uint32_t i = 0; i < cRects; ++i)
    17631761        {
    1764             pEntry->paSrcRects[i].xLeft = (int32_t)((pEntry->paDstRects[i].xLeft - pEntry->Pos.x));
    1765             pEntry->paSrcRects[i].yTop = (int32_t)((pEntry->paDstRects[i].yTop - pEntry->Pos.y));
    1766             pEntry->paSrcRects[i].xRight = (int32_t)((pEntry->paDstRects[i].xRight - pEntry->Pos.x));
    1767             pEntry->paSrcRects[i].yBottom = (int32_t)((pEntry->paDstRects[i].yBottom - pEntry->Pos.y));
     1762            pEntry->paSrcRects[i].xLeft = (int32_t)((pEntry->paDstUnstretchedRects[i].xLeft - pEntry->Pos.x));
     1763            pEntry->paSrcRects[i].yTop = (int32_t)((pEntry->paDstUnstretchedRects[i].yTop - pEntry->Pos.y));
     1764            pEntry->paSrcRects[i].xRight = (int32_t)((pEntry->paDstUnstretchedRects[i].xRight - pEntry->Pos.x));
     1765            pEntry->paSrcRects[i].yBottom = (int32_t)((pEntry->paDstUnstretchedRects[i].yBottom - pEntry->Pos.y));
    17681766        }
    17691767    }
     
    17761774            if (pCompositor->StretchX != 1.)
    17771775            {
    1778                 pEntry->paDstRects[i].xLeft = (int32_t)(pEntry->paDstRects[i].xLeft * pCompositor->StretchX);
    1779                 pEntry->paDstRects[i].xRight = (int32_t)(pEntry->paDstRects[i].xRight * pCompositor->StretchX);
     1776                pEntry->paDstRects[i].xLeft = (int32_t)(pEntry->paDstUnstretchedRects[i].xLeft * pCompositor->StretchX);
     1777                pEntry->paDstRects[i].xRight = (int32_t)(pEntry->paDstUnstretchedRects[i].xRight * pCompositor->StretchX);
    17801778            }
    17811779            if (pCompositor->StretchY != 1.)
    17821780            {
    1783                 pEntry->paDstRects[i].yTop = (int32_t)(pEntry->paDstRects[i].yTop * pCompositor->StretchY);
    1784                 pEntry->paDstRects[i].yBottom = (int32_t)(pEntry->paDstRects[i].yBottom * pCompositor->StretchY);
    1785             }
    1786         }
    1787     }
    1788 
     1781                pEntry->paDstRects[i].yTop = (int32_t)(pEntry->paDstUnstretchedRects[i].yTop * pCompositor->StretchY);
     1782                pEntry->paDstRects[i].yBottom = (int32_t)(pEntry->paDstUnstretchedRects[i].yBottom * pCompositor->StretchY);
     1783            }
     1784        }
     1785    }
     1786    else
     1787#endif
     1788    {
     1789        memcpy(pEntry->paDstRects, pEntry->paDstUnstretchedRects, cRects * sizeof (*pEntry->paDstUnstretchedRects));
     1790    }
     1791
     1792#if 0//ndef IN_RING0
    17891793    bool canZeroX = (pCompositor->StretchX < 1.);
    17901794    bool canZeroY = (pCompositor->StretchY < 1.);
     
    17951799        for (iOrig = 0, iNew = 0; iOrig < cRects; ++iOrig)
    17961800        {
    1797             PRTRECT pOrigRect = &pEntry->paSrcRects[iOrig];
    1798             if (pOrigRect->xLeft == pOrigRect->xRight
    1799                     || pOrigRect->yTop == pOrigRect->yBottom)
     1801            PRTRECT pOrigRect = &pEntry->paDstRects[iOrig];
     1802            if (pOrigRect->xLeft != pOrigRect->xRight
     1803                    && pOrigRect->yTop != pOrigRect->yBottom)
    18001804                continue;
    18011805
     
    22942298}
    22952299
    2296 VBOXVREGDECL(uint32_t) CrVrScrCompositorEntryFlagsGet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry)
     2300VBOXVREGDECL(uint32_t) CrVrScrCompositorEntryFlagsCombinedGet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry)
    22972301{
    22982302    return CRBLT_FOP_COMBINE(pCompositor->fFlags, pEntry->fFlags);
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