VirtualBox

Changeset 50149 in vbox for trunk/src/VBox/Devices/Graphics


Ignore:
Timestamp:
Jan 21, 2014 6:18:36 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
91701
Message:

crOpenGL: bugfixes

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

Legend:

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

    r50126 r50149  
    593593int      VBVAUpdateDisplay (PVGASTATE pVGAState);
    594594void     VBVAReset (PVGASTATE pVGAState);
     595int      VBVAGetScreenInfo(PVGASTATE pVGAState, unsigned uScreenId, struct VBVAINFOSCREEN *pScreen, void **ppvVram);
    595596
    596597bool VBVAIsEnabled(PVGASTATE pVGAState);
    597598
    598599void VBVARaiseIrq (PVGASTATE pVGAState, uint32_t fFlags);
     600void VBVARaiseIrqNoWait(PVGASTATE pVGAState, uint32_t fFlags);
    599601
    600602/* @return host-guest flags that were set on reset
  • trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp

    r49507 r50149  
    19181918#if defined(VBOX_WITH_HGSMI) && (defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_WITH_VDMA) || defined(VBOX_WITH_WDDM))
    19191919    PVGASTATE pVGAState = (PVGASTATE)pvCallback;
    1920     VBVARaiseIrq (pVGAState, 0);
     1920    VBVARaiseIrqNoWait (pVGAState, 0);
    19211921#else
    19221922    NOREF(pvCallback);
     
    24362436    pVGAState->pHGSMI = NULL;
    24372437}
     2438
     2439int VBVAGetScreenInfo(PVGASTATE pVGAState, unsigned uScreenId, struct VBVAINFOSCREEN *pScreen, void **ppvVram)
     2440{
     2441    PPDMDEVINS pDevIns = pVGAState->pDevInsR3;
     2442    PHGSMIINSTANCE pIns = pVGAState->pHGSMI;
     2443    VBVACONTEXT *pCtx = (VBVACONTEXT *)HGSMIContext (pIns);
     2444    int rc = PDMCritSectEnter(&pVGAState->CritSect, VERR_SEM_BUSY);
     2445    if (RT_SUCCESS(rc))
     2446    {
     2447        if (uScreenId < pCtx->cViews)
     2448        {
     2449            VBVAVIEW *pView = &pCtx->aViews[uScreenId];
     2450            if (pView->pVBVA)
     2451            {
     2452                uint8_t *pu8VRAM = pVGAState->vram_ptrR3 + pView->view.u32ViewOffset;
     2453                *pScreen = pView->screen;
     2454                *ppvVram = (void*)pu8VRAM;
     2455                rc = VINF_SUCCESS;
     2456            }
     2457            else
     2458            {
     2459                /* pretend disabled */
     2460                memset(pScreen, 0, sizeof (*pScreen));
     2461                pScreen->u16Flags = VBVA_SCREEN_F_DISABLED;
     2462                pScreen->u32ViewIndex = uScreenId;
     2463                *ppvVram = NULL;
     2464                rc = VINF_SUCCESS;
     2465            }
     2466        }
     2467        else
     2468            rc = VERR_INVALID_PARAMETER;
     2469
     2470        PDMCritSectLeave(&pVGAState->CritSect);
     2471    }
     2472    return rc;
     2473}
  • trunk/src/VBox/Devices/Graphics/DevVGA_VDMA.cpp

    r49519 r50149  
    356356}
    357357
     358static DECLCALLBACK(int) vboxVDMACrCmdCltDmGet(HVBOXCRCMDCLT hClt, uint32_t idScreen, struct VBVAINFOSCREEN *pScreen, void **ppvVram)
     359{
     360    struct VBOXVDMAHOST *pVdma = hClt;
     361    PVGASTATE pVGAState = pVdma->pVGAState;
     362
     363    return VBVAGetScreenInfo(pVGAState, idScreen, pScreen, ppvVram);
     364}
     365
    358366static int vboxVDMACrCtlHgsmiSetup(struct VBOXVDMAHOST *pVdma)
    359367{
     
    366374        CltInfo.hClient = pVdma;
    367375        CltInfo.pfnCmdGet = vboxVDMACrCmdCltCmdGet;
     376        CltInfo.pfnDmGet = vboxVDMACrCmdCltDmGet;
    368377        PVGASTATE pVGAState = pVdma->pVGAState;
    369378        pCmd->pvVRamBase = pVGAState->vram_ptrR3;
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