VirtualBox

Changeset 47566 in vbox for trunk/src/VBox/GuestHost


Ignore:
Timestamp:
Aug 6, 2013 10:20:23 PM (11 years ago)
Author:
vboxsync
Message:

crOpenGL/wddm: TexPresent fixes, irq handling fix

Location:
trunk/src/VBox/GuestHost/OpenGL
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h

    r47485 r47566  
    209209    VBOXVR_SCR_COMPOSITOR_ENTRY CEntry;
    210210    VBOXVR_SCR_COMPOSITOR_ENTRY RootVrCEntry;
    211     void *pvUserData1;
    212     void *pvUserData2;
    213211} CR_DISPLAY_ENTRY, *PCR_DISPLAY_ENTRY;
    214212/**/
     
    349347/* DISPLAY */
    350348
     349#define CR_DENTRY_FROM_CENTRY(_pCentry) ((CR_DISPLAY_ENTRY*)((uint8_t*)(_pCentry) - RT_OFFSETOF(CR_DISPLAY_ENTRY, CEntry)))
     350
     351
    351352/* @todo:
    352353 * 1. use compositor stored inside mural to use current MuralFBO and window-related API
     
    359360} CR_DISPLAY, *PCR_DISPLAY;
    360361
    361 int CrDpInit(PCR_DISPLAY pDisplay);
    362 void CrDpTerm(PCR_DISPLAY pDisplay);
    363 void CrDpResize(PCR_DISPLAY pDisplay, int32_t xPos, int32_t yPos, uint32_t width, uint32_t height);
    364 void CrDpEntryInit(PCR_DISPLAY_ENTRY pEntry, const VBOXVR_TEXTURE *pTextureData, void *pvUserData);
    365 void CrDpEntryCleanup(PCR_DISPLAY pDisplay, PCR_DISPLAY_ENTRY pEntry);
    366 int CrDpEntryRegionsSet(PCR_DISPLAY pDisplay, PCR_DISPLAY_ENTRY pEntry, const RTPOINT *pPos, uint32_t cRegions, const RTRECT *paRegions);
    367 int CrDpEntryRegionsAdd(PCR_DISPLAY pDisplay, PCR_DISPLAY_ENTRY pEntry, const RTPOINT *pPos, uint32_t cRegions, const RTRECT *paRegions);
    368 void CrDpEntryRegionsClear(PCR_DISPLAY pDisplay);
    369 DECLINLINE(bool) CrDpEntryIsUsed(PCR_DISPLAY_ENTRY pEntry)
    370 {
    371     return CrVrScrCompositorEntryIsInList(&pEntry->CEntry);
    372 }
    373 
    374 DECLINLINE(CRMuralInfo*) CrDpGetMural(PCR_DISPLAY pDisplay)
    375 {
    376     return &pDisplay->Mural;
    377 }
    378362
    379363typedef struct CR_DISPLAY_ENTRY_MAP
    380364{
    381     CRHashTable * pTextureMap;
     365    CRHashTable * pTexIdToDemInfoMap;
    382366} CR_DISPLAY_ENTRY_MAP, *PCR_DISPLAY_ENTRY_MAP;
    383367
    384 int CrDemInit(PCR_DISPLAY_ENTRY_MAP pMap);
    385 void CrDemTerm(PCR_DISPLAY_ENTRY_MAP pMap);
    386 PCR_DISPLAY_ENTRY CrDemEntryAcquire(PCR_DISPLAY_ENTRY_MAP pMap, GLuint idTexture);
    387 void CrDemEntryRelease(PCR_DISPLAY_ENTRY pEntry);
    388 //void CrDemEntryDestroy(PCR_DISPLAY_ENTRY_MAP pMap, GLuint idTexture);
    389368
    390369/* */
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_version.h

    r47116 r47566  
    3737/* dummy windows and contexts have 0 external IDs, so never get stored to the state */
    3838#define SHCROGL_SSM_VERSION_WITH_FIXED_DUMMYIDS                     39
    39 #define SHCROGL_SSM_VERSION                                         39
     39#define SHCROGL_SSM_VERSION_WITH_SCREEN_INFO                        40
     40#define SHCROGL_SSM_VERSION                                         40
    4041
    4142/* These define the Chromium release number.
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_vreg.h

    r46966 r47566  
    400400VBOXVREGDECL(int) CrVrScrCompositorEntryRemove(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry);
    401401VBOXVREGDECL(void) CrVrScrCompositorEntryFlagsSet(PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry, uint32_t fFlags);
    402 VBOXVREGDECL(uint32_t) CrVrScrCompositorEntryFlagsGet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry);
     402VBOXVREGDECL(uint32_t) CrVrScrCompositorEntryFlagsCombinedGet(PVBOXVR_SCR_COMPOSITOR pCompositor, PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry);
     403DECLINLINE(uint32_t) CrVrScrCompositorEntryFlagsGet(PVBOXVR_SCR_COMPOSITOR_ENTRY pEntry)
     404{
     405    return pEntry->fFlags;
     406}
     407
    403408VBOXVREGDECL(void) CrVrScrCompositorInit(PVBOXVR_SCR_COMPOSITOR pCompositor);
    404409VBOXVREGDECL(void) CrVrScrCompositorClear(PVBOXVR_SCR_COMPOSITOR pCompositor);
  • 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.

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