VirtualBox

Changeset 27754 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Mar 26, 2010 4:43:43 PM (15 years ago)
Author:
vboxsync
Message:

Main/Display, Devices/Graphics: added a generic guest VRAM->Framebuffer copy function (xTracker 4655).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/DisplayImpl.cpp

    r27751 r27754  
    927927            mpDrv->pUpPort->pfnSetRenderVRAM (mpDrv->pUpPort, pFBInfo->fDefaultFormat);
    928928        }
     929        else if (!pFBInfo->pFramebuffer.isNull())
     930        {
     931            BOOL usesGuestVRAM = FALSE;
     932            pFBInfo->pFramebuffer->COMGETTER(UsesGuestVRAM) (&usesGuestVRAM);
     933
     934            pFBInfo->fDefaultFormat = (usesGuestVRAM == FALSE);
     935        }
     936        LogFlow(("[%d]: default format %d\n", uScreenId, pFBInfo->fDefaultFormat));
    929937
    930938#ifdef DEBUG_sunlover
     
    33083316        if (pFBInfo->fDefaultFormat)
    33093317        {
    3310             pDrv->pUpPort->pfnUpdateDisplayRect (pDrv->pUpPort, pCmd->x, pCmd->y, pCmd->w, pCmd->h);
     3318            if (uScreenId == VBOX_VIDEO_PRIMARY_SCREEN)
     3319            {
     3320                pDrv->pUpPort->pfnUpdateDisplayRect (pDrv->pUpPort, pCmd->x, pCmd->y, pCmd->w, pCmd->h);
     3321            }
     3322            else if (!pFBInfo->pFramebuffer.isNull())
     3323            {
     3324                /* Render VRAM content to the framebuffer. */
     3325                BYTE *address = NULL;
     3326                HRESULT hrc = pFBInfo->pFramebuffer->COMGETTER(Address) (&address);
     3327                if (SUCCEEDED(hrc) && address != NULL)
     3328                {
     3329                    pDrv->pUpPort->pfnUpdateDisplayRectEx (pDrv->pUpPort,
     3330                                                           pCmd->x - pFBInfo->xOrigin, pCmd->y - pFBInfo->yOrigin, pCmd->w, pCmd->h,
     3331                                                           pFBInfo->pu8FramebufferVRAM, pFBInfo->w, pFBInfo->h,
     3332                                                           pFBInfo->u32LineSize, pFBInfo->u16BitsPerPixel,
     3333                                                           address, pFBInfo->w, pFBInfo->h,
     3334                                                           pFBInfo->w * 4, 32);
     3335                }
     3336            }
    33113337            pThis->handleDisplayUpdate (pCmd->x + pFBInfo->xOrigin,
    33123338                                        pCmd->y + pFBInfo->yOrigin, pCmd->w, pCmd->h);
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