VirtualBox

Changeset 106942 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Nov 11, 2024 7:51:58 PM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165868
Message:

3D: Initialise only MAP and GBO interfaces if VMSVGA2dGBO extradata is set. bugref:10580

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp

    r106287 r106942  
    67046704        VMSVGA3DINTERFACE *p = &a3dInterface[i];
    67056705
     6706        if (pThis->svga.fVMSVGA2dGBO &&
     6707            RTStrCmp(p->pcszName, VMSVGA3D_BACKEND_INTERFACE_NAME_MAP) &&
     6708            RTStrCmp(p->pcszName, VMSVGA3D_BACKEND_INTERFACE_NAME_GBO))
     6709        {
     6710            continue;
     6711        }
     6712
    67066713        int rc2 = pBackend->pfnQueryInterface(pThisCC, p->pcszName, NULL, p->cbFuncs);
    67076714        if (RT_SUCCESS(rc2))
     
    67926799
    67936800# ifdef VBOX_WITH_VMSVGA3D
    6794   if (pThisCC->svga.pSvgaR3State->pFuncs3D)
     6801    if (pThisCC->svga.pSvgaR3State->pFuncs3D)
    67956802        *pu32DeviceCaps |= SVGA_CAP_3D;
    67966803# endif
     
    70747081    RT_ZERO(au32FailedCapsBitmap);
    70757082
    7076     for (unsigned i = 0; i < RT_ELEMENTS(pThis->svga.au32DevCaps); ++i)
    7077     {
    7078         uint32_t val = 0;
    7079         int rc = vmsvga3dQueryCaps(pThisCC, (SVGA3dDevCapIndex)i, &val);
    7080         if (RT_SUCCESS(rc))
    7081             pThis->svga.au32DevCaps[i] = val;
    7082         else
    7083         {
    7084             ASMBitSet(au32FailedCapsBitmap, i);
    7085             pThis->svga.au32DevCaps[i] = 0;
    7086         }
    7087     }
    7088 
    7089     vmsvgaR3Censor3DCaps(pThis, pThisCC);
     7083    if (!pThis->svga.fVMSVGA2dGBO)
     7084    {
     7085        for (unsigned i = 0; i <= RT_ELEMENTS(pThis->svga.au32DevCaps); ++i)
     7086        {
     7087            uint32_t val = 0;
     7088            int rc = vmsvga3dQueryCaps(pThisCC, (SVGA3dDevCapIndex)i, &val);
     7089            if (RT_SUCCESS(rc))
     7090                pThis->svga.au32DevCaps[i] = val;
     7091            else
     7092            {
     7093                ASMBitSet(au32FailedCapsBitmap, i);
     7094                pThis->svga.au32DevCaps[i] = 0;
     7095            }
     7096        }
     7097
     7098        vmsvgaR3Censor3DCaps(pThis, pThisCC);
     7099    }
     7100    else
     7101    {
     7102        pThis->svga.au32DevCaps[SVGA3D_DEVCAP_MAX_TEXTURE_WIDTH]  = 4096;
     7103        pThis->svga.au32DevCaps[SVGA3D_DEVCAP_MAX_TEXTURE_HEIGHT] = 4096;
     7104        pThis->svga.au32DevCaps[SVGA3D_DEVCAP_DXFMT_X8R8G8B8] = 0x3f7;
     7105    }
    70907106
    70917107    bool const fSavedBuffering = RTLogRelSetBuffering(true);
     
    76927708    if (pThis->svga.f3DEnabled || pThis->svga.fVMSVGA2dGBO)
    76937709    {
     7710        int rc = VINF_SUCCESS;
     7711
    76947712        PVMSVGAR3STATE pSVGAState = pThisCC->svga.pSvgaR3State;
    7695         int rc = pSVGAState->pFuncs3D->pfnPowerOn(pDevIns, pThis, pThisCC);
     7713        if (pSVGAState->pFuncs3D)
     7714            rc = pSVGAState->pFuncs3D->pfnPowerOn(pDevIns, pThis, pThisCC);
     7715
    76967716        if (RT_SUCCESS(rc))
    76977717        {
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