VirtualBox

Ignore:
Timestamp:
Jul 10, 2009 5:29:38 PM (16 years ago)
Author:
vboxsync
Message:

video hw accel: overlay support (not debugged yet), better colorkey & flip support impl in guest driver & QGLFramebuffer (not debugged yet)

File:
1 edited

Legend:

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

    r21414 r21490  
    408408    uint32_t upper() const {return mUpper; }
    409409    uint32_t lower() const {return mLower; }
     410
     411    bool operator==(const VBoxVHWAColorKey & other) const { return mUpper == other.mUpper && mLower == other.mLower; }
    410412private:
    411413    uint32_t mUpper;
    412414    uint32_t mLower;
    413415};
     416
     417//class VBoxVHWAColorKeyRef
     418//{
     419//public:
     420//    VBoxVHWAColorKeyRef() : mValid(false){}
     421//
     422//    bool isValid() {return mValid; }
     423//
     424//    VBoxVHWAColorKey * ckey() { isVreturn mpCKey; }
     425//    const VBoxVHWAColorKey * constckey() const { return mpCKey; }
     426//
     427//    void invalidate() { mValid = false; }
     428//    void set(VBoxVHWAColorKey * pKey) { mValid = false; }
     429//
     430//private:
     431//    VBoxVHWAColorKey * mpCKey;
     432//    bool mValid;
     433//};
    414434
    415435class VBoxVHWAColorComponent
     
    508528
    509529    int blt(const QRect * aDstRect, VBoxVHWASurfaceBase * aSrtSurface, const QRect * aSrcRect, const VBoxVHWAColorKey * pDstCKeyOverride, const VBoxVHWAColorKey * pSrcCKeyOverride);
     530    int overlay(VBoxVHWASurfaceBase * aOverlaySurface);
    510531
    511532    virtual int lock(const QRect * pRect, uint32_t flags);
     
    541562    ulong  bytesPerLine() { return mBytesPerLine; }
    542563
    543     const VBoxVHWAColorKey * dstBltCKey() { return mDstBltCKeyValid ? &mDstBltCKey : NULL; }
    544     const VBoxVHWAColorKey * srcBltCKey() { return mSrcBltCKeyValid ? &mSrcBltCKey : NULL; }
    545     const VBoxVHWAColorKey * dstOverlayCKey() { return mDstOverlayCKeyValid ? &mDstOverlayCKey : NULL; }
    546     const VBoxVHWAColorKey * srcOverlayCKey() { return mSrcOverlayCKeyValid ? &mSrcOverlayCKey : NULL; }
     564    const VBoxVHWAColorKey * dstBltCKey() const { return mpDstBltCKey; }
     565    const VBoxVHWAColorKey * srcBltCKey() const { return mpSrcBltCKey; }
     566    const VBoxVHWAColorKey * dstOverlayCKey() const { return mpDstOverlayCKey; }
     567    const VBoxVHWAColorKey * defaultSrcOverlayCKey() const { return mpDefaultSrcOverlayCKey; }
     568    const VBoxVHWAColorKey * defaultDstOverlayCKey() const { return mpDefaultDstOverlayCKey; }
     569    const VBoxVHWAColorKey * srcOverlayCKey() const { return mpSrcOverlayCKey; }
     570    void resetDefaultSrcOverlayCKey() { mpSrcOverlayCKey = mpDefaultSrcOverlayCKey; }
     571    void resetDefaultDstOverlayCKey() { mpDstOverlayCKey = mpDefaultDstOverlayCKey; }
     572
     573    void setDstBltCKey(const VBoxVHWAColorKey * ckey)
     574    {
     575        if(ckey)
     576        {
     577            mDstBltCKey = *ckey;
     578            mpDstBltCKey = &mDstBltCKey;
     579        }
     580        else
     581        {
     582            mpDstBltCKey = NULL;
     583        }
     584    }
     585
     586    void setSrcBltCKey(const VBoxVHWAColorKey * ckey)
     587    {
     588        if(ckey)
     589        {
     590            mSrcBltCKey = *ckey;
     591            mpSrcBltCKey = &mSrcBltCKey;
     592        }
     593        else
     594        {
     595            mpSrcBltCKey = NULL;
     596        }
     597    }
     598
     599    void setDefaultDstOverlayCKey(const VBoxVHWAColorKey * ckey)
     600    {
     601        if(ckey)
     602        {
     603            mDefaultDstOverlayCKey = *ckey;
     604            mpDefaultDstOverlayCKey = &mDefaultDstOverlayCKey;
     605        }
     606        else
     607        {
     608            mpDefaultDstOverlayCKey = NULL;
     609        }
     610    }
     611
     612    void setDefaultSrcOverlayCKey(const VBoxVHWAColorKey * ckey)
     613    {
     614        if(ckey)
     615        {
     616            mDefaultSrcOverlayCKey = *ckey;
     617            mpDefaultSrcOverlayCKey = &mDefaultSrcOverlayCKey;
     618        }
     619        else
     620        {
     621            mpDefaultSrcOverlayCKey = NULL;
     622        }
     623    }
     624
     625    void setOverriddenDstOverlayCKey(const VBoxVHWAColorKey * ckey)
     626    {
     627        if(ckey)
     628        {
     629            mOverriddenDstOverlayCKey = *ckey;
     630            mpDstOverlayCKey = &mOverriddenDstOverlayCKey;
     631        }
     632        else
     633        {
     634            mpDstOverlayCKey = NULL;
     635        }
     636    }
     637
     638    void setOverriddenSrcOverlayCKey(const VBoxVHWAColorKey * ckey)
     639    {
     640        if(ckey)
     641        {
     642            mOverriddenSrcOverlayCKey = *ckey;
     643            mpSrcOverlayCKey = &mOverriddenSrcOverlayCKey;
     644        }
     645        else
     646        {
     647            mpSrcOverlayCKey = NULL;
     648        }
     649    }
     650
     651
    547652    const VBoxVHWAColorFormat & colorFormat() {return mColorFormat; }
    548653
     
    562667
    563668    bool isYInverted() {return mIsYInverted; }
     669
     670    bool isHidden() {return mIsHidden; }
     671    void setHidden(bool hidden) { mIsHidden = hidden; }
    564672
    565673    int invert();
     
    586694    void synch(const QRect * aRect);
    587695
     696    int performBlt(const QRect * pDstRect, VBoxVHWASurfaceBase * pSrcSurface, const QRect * pSrcRect, const VBoxVHWAColorKey * pDstCKey, const VBoxVHWAColorKey * pSrcCKey, bool blt);
     697
    588698//    void doTex2FB(const QRect * aRect);
    589699    void doTex2FB(const QRect * pDstRect, const QRect * pSrcRect);
     
    608718
    609719    VBoxVHWAColorFormat mColorFormat;
     720
     721    VBoxVHWAColorKey *mpSrcBltCKey;
     722    VBoxVHWAColorKey *mpDstBltCKey;
     723    VBoxVHWAColorKey *mpSrcOverlayCKey;
     724    VBoxVHWAColorKey *mpDstOverlayCKey;
     725
     726    VBoxVHWAColorKey *mpDefaultDstOverlayCKey;
     727    VBoxVHWAColorKey *mpDefaultSrcOverlayCKey;
     728
    610729    VBoxVHWAColorKey mSrcBltCKey;
    611730    VBoxVHWAColorKey mDstBltCKey;
    612     VBoxVHWAColorKey mSrcOverlayCKey;
    613     VBoxVHWAColorKey mDstOverlayCKey;
    614     bool mSrcBltCKeyValid;
    615     bool mDstBltCKeyValid;
    616     bool mSrcOverlayCKeyValid;
    617     bool mDstOverlayCKeyValid;
     731    VBoxVHWAColorKey mOverriddenSrcOverlayCKey;
     732    VBoxVHWAColorKey mOverriddenDstOverlayCKey;
     733    VBoxVHWAColorKey mDefaultDstOverlayCKey;
     734    VBoxVHWAColorKey mDefaultSrcOverlayCKey;
     735
     736
    618737    GLenum mFormat;
    619738    GLint  mInternalFormat;
     
    641760    bool mIsYInverted;
    642761
     762    bool mIsHidden;
     763
    643764//    bool mIsOverlay;
    644765
     
    670791    {
    671792        return mSurfVGA;
     793    }
     794
     795    VBoxVHWASurfaceBase * getPrimary()
     796    {
     797        return mSurfPrimary;
    672798    }
    673799
     
    715841             it != mOverlays.end(); ++ it)
    716842        {
    717             (*it)->performDisplay();
     843            mSurfPrimary->overlay(*it);
    718844        }
    719845    }
     
    781907                mInverted = false;
    782908            }
     909        }
     910    }
     911
     912    void makeCurrent(class VBoxVHWASurfaceBase *aContext, bool mInverted)
     913    {
     914        if(mInverted)
     915        {
     916            makeYInvertedCurrent(aContext);
     917        }
     918        else
     919        {
     920            makeCurrent(aContext);
    783921        }
    784922    }
     
    9091047    int vhwaSurfaceBlt(struct _VBOXVHWACMD_SURF_BLT *pCmd);
    9101048    int vhwaSurfaceFlip(struct _VBOXVHWACMD_SURF_FLIP *pCmd);
     1049    int vhwaSurfaceOverlayUpdate(struct _VBOXVHWACMD_SURF_OVERLAY_UPDATE *pCmf);
     1050    int vhwaSurfaceOverlaySetPosition(struct _VBOXVHWACMD_SURF_OVERLAY_SETPOSITION *pCmd);
     1051    int vhwaSurfaceColorkeySet(struct _VBOXVHWACMD_SURF_COLORKEY_SET *pCmd);
    9111052    int vhwaQueryInfo1(struct _VBOXVHWACMD_QUERYINFO1 *pCmd);
    9121053    int vhwaQueryInfo2(struct _VBOXVHWACMD_QUERYINFO2 *pCmd);
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