VirtualBox

Ignore:
Timestamp:
May 12, 2022 11:40:51 AM (3 years ago)
Author:
vboxsync
Message:

Devices/Graphics: patch shader resource types; new commands: bugref:9830

File:
1 edited

Legend:

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

    r94928 r94989  
    13841384static int vmsvga3dBmpWrite(const char *pszFilename, VMSVGA3D_MAPPED_SURFACE const *pMap)
    13851385{
    1386     if (pMap->cbBlock != 4 && pMap->format != SVGA3D_R16G16B16A16_FLOAT)
     1386    if (pMap->cbBlock != 4 && pMap->cbBlock != 1 && pMap->format != SVGA3D_R16G16B16A16_FLOAT)
    13871387        return VERR_NOT_SUPPORTED;
    13881388
     
    14221422        {
    14231423            fwrite(s, 1, pMap->cbRow, f);
     1424
     1425            s += pMap->cbRowPitch;
     1426        }
     1427    }
     1428    else if (pMap->cbBlock == 1)
     1429    {
     1430        const uint8_t *s = (uint8_t *)pMap->pvData;
     1431        for (uint32_t iRow = 0; iRow < pMap->cRows; ++iRow)
     1432        {
     1433            for (int32_t x = 0; x < w; ++x)
     1434            {
     1435                uint32_t u32Pixel = s[x];
     1436                fwrite(&u32Pixel, 1, 4, f);
     1437            }
    14241438
    14251439            s += pMap->cbRowPitch;
     
    25192533{
    25202534#ifdef VMSVGA3D_DX
    2521     DEBUG_BREAKPOINT_TEST();
    2522     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2523     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2524     return vmsvga3dDXSetPredication(pThisCC, idDXContext);
     2535    //DEBUG_BREAKPOINT_TEST();
     2536    RT_NOREF(cbCmd);
     2537    return vmsvga3dDXSetPredication(pThisCC, idDXContext, pCmd);
    25252538#else
    25262539    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    33793392
    33803393/* SVGA_3D_CMD_DX_MOB_FENCE_64 1216 */
    3381 static int vmsvga3dCmdDXMobFence64(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXMobFence64 const *pCmd, uint32_t cbCmd)
    3382 {
    3383 #ifdef VMSVGA3D_DX
    3384     DEBUG_BREAKPOINT_TEST();
    3385     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    3386     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    3387     return vmsvga3dDXMobFence64(pThisCC, idDXContext);
     3394static int vmsvga3dCmdDXMobFence64(PVGASTATECC pThisCC, SVGA3dCmdDXMobFence64 const *pCmd, uint32_t cbCmd)
     3395{
     3396#ifdef VMSVGA3D_DX
     3397    //DEBUG_BREAKPOINT_TEST();
     3398    PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
     3399    RT_NOREF(cbCmd);
     3400
     3401    PVMSVGAMOB pMob = vmsvgaR3MobGet(pSvgaR3State, pCmd->mobId);
     3402    ASSERT_GUEST_RETURN(pMob, VERR_INVALID_PARAMETER);
     3403
     3404    int rc = vmsvgaR3MobWrite(pSvgaR3State, pMob, pCmd->mobOffset, &pCmd->value, sizeof(pCmd->value));
     3405    ASSERT_GUEST_RETURN(RT_SUCCESS(rc), rc);
     3406
     3407    return VINF_SUCCESS;
    33883408#else
    33893409    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    56035623        SVGA3dCmdDXMobFence64 *pCmd = (SVGA3dCmdDXMobFence64 *)pvCmd;
    56045624        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    5605         rcParse = vmsvga3dCmdDXMobFence64(pThisCC, idDXContext, pCmd, cbCmd);
     5625        rcParse = vmsvga3dCmdDXMobFence64(pThisCC, pCmd, cbCmd);
    56065626        break;
    56075627    }
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