VirtualBox

Ignore:
Timestamp:
Sep 11, 2009 10:37:45 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
52217
Message:

video hw accel: allow only primary and overlay surfaces

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/include/VBoxFBOverlay.h

    r22921 r22951  
    2828#include <iprt/critsect.h>
    2929
     30#define VBOXVHWA_ALLOW_PRIMARY_AND_OVERLAY_ONLY 1
     31
    3032#ifdef DEBUG
    3133#include "iprt/stream.h"
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp

    r22921 r22951  
    32363236        return VINF_SUCCESS;
    32373237    }
    3238 
     3238#ifdef VBOXVHWA_ALLOW_PRIMARY_AND_OVERLAY_ONLY
    32393239    if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN)
    32403240    {
     
    32453245        return VINF_SUCCESS;
    32463246    }
     3247#endif
    32473248
    32483249    if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_PRIMARYSURFACE)
    32493250    {
    3250         pCmd->u.out.ErrInfo = 0;
     3251        if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_COMPLEX)
     3252        {
     3253#ifdef DEBUG_misha
     3254            Assert(0);
     3255#endif
     3256            pCmd->u.out.ErrInfo = -1;
     3257        }
     3258        else
     3259        {
     3260            pCmd->u.out.ErrInfo = 0;
     3261        }
    32513262        return VINF_SUCCESS;
    32523263    }
    32533264
    3254 
    3255     Assert(/*pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN
    3256             || */ pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OVERLAY);
     3265#ifdef VBOXVHWA_ALLOW_PRIMARY_AND_OVERLAY_ONLY
     3266    if((pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OVERLAY) == 0)
     3267    {
     3268#ifdef DEBUGVHWASTRICT
     3269        Assert(0);
     3270#endif
     3271        pCmd->u.out.ErrInfo = -1;
     3272        return VINF_SUCCESS;
     3273    }
     3274#endif
    32573275
    32583276    if(pCmd->u.in.bIsDifferentPixelFormat)
     
    33383356    VBoxVHWASurfaceBase *surf = NULL;
    33393357//    VBoxVHWAColorFormat *pFormat = NULL, Format;
     3358    bool bNoPBO = false;
    33403359    bool bPrimary = false;
    33413360
     
    33673386    if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_PRIMARYSURFACE)
    33683387    {
     3388        bNoPBO = true;
    33693389        bPrimary = true;
    33703390        VBoxVHWASurfaceBase * pVga = vboxGetVGASurface();
    33713391
    3372         if(pVga->handle() == VBOXVHWA_SURFHANDLE_INVALID)
     3392        Assert((pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN) == 0);
     3393        if(pVga->handle() == VBOXVHWA_SURFHANDLE_INVALID
     3394                && (pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN) == 0)
    33733395        {
    33743396            Assert(pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_RGB);
     
    34033425        }
    34043426    }
     3427    else if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OFFSCREENPLAIN)
     3428    {
     3429        bNoPBO = true;
     3430    }
    34053431
    34063432    if(!surf)
     
    34213447                        format,
    34223448                        pSrcBltCKey, pDstBltCKey, pSrcOverlayCKey, pDstOverlayCKey,
    3423                         bPrimary);
     3449                        bNoPBO);
    34243450        }
    34253451        else if(pCmd->SurfInfo.PixelFormat.flags & VBOXVHWA_PF_FOURCC)
     
    34363462                                    format,
    34373463                                    pSrcBltCKey, pDstBltCKey, pSrcOverlayCKey, pDstOverlayCKey,
    3438                                     bPrimary);
     3464                                    bNoPBO);
    34393465        }
    34403466        else
     
    34503476        if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_OVERLAY)
    34513477        {
    3452             Assert(!bPrimary);
     3478#ifdef DEBUG_misha
     3479            Assert(!bNoPBO);
     3480#endif
    34533481
    34543482            if(!mConstructingList)
     
    34663494            }
    34673495        }
    3468         else if(bPrimary)
     3496        else
    34693497        {
    34703498            VBoxVHWASurfaceBase * pVga = vboxGetVGASurface();
     
    34763504            Assert(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_VISIBLE);
    34773505#endif
    3478 //            if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_VISIBLE)
     3506            if(bPrimary)
    34793507            {
    34803508                Assert(surf->getComplexList() == mDisplay.getVGA()->getComplexList());
     
    34823510                mDisplay.updateVGA(surf);
    34833511            }
    3484         }
    3485         else if(pCmd->SurfInfo.surfCaps & VBOXVHWA_SCAPS_COMPLEX)
    3486         {
    3487             //TODO: impl fullscreen mode support
    3488             Assert(0);
    3489         }
    3490         else
    3491         {
    3492             Assert(0);
    34933512        }
    34943513    }
     
    39924011        pCmd->u.out.surfaceCaps =
    39934012                            VBOXVHWA_SCAPS_PRIMARYSURFACE
    3994                     //        | VBOXVHWA_SCAPS_OFFSCREENPLAIN
     4013#ifndef VBOXVHWA_ALLOW_PRIMARY_AND_OVERLAY_ONLY
     4014                            | VBOXVHWA_SCAPS_OFFSCREENPLAIN
     4015#endif
    39954016                            | VBOXVHWA_SCAPS_FLIP
    39964017                            | VBOXVHWA_SCAPS_LOCALVIDMEM
Note: See TracChangeset for help on using the changeset viewer.

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