VirtualBox

Changeset 23646 in vbox for trunk/src


Ignore:
Timestamp:
Oct 9, 2009 12:51:05 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53346
Message:

video 2d accel: move program start/stop outside display list to satisfy old ATI drivers

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

Legend:

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

    r23588 r23646  
    586586    void deleteDisplay();
    587587
    588     int createDisplay(VBoxVHWASurfaceBase *pPrimary, GLuint *pDisplay);
    589     void doDisplay(VBoxVHWASurfaceBase *pPrimary, VBoxVHWAGlProgramVHWA * pProgram, bool bBindDst);
     588    int createDisplay(VBoxVHWASurfaceBase *pPrimary, GLuint *pDisplay, class VBoxVHWAGlProgram ** ppProgram);
     589    void doDisplay(VBoxVHWASurfaceBase *pPrimary, bool bProgram, bool bBindDst);
    590590    bool synchTexMem(const QRect * aRect);
    591591
     
    605605
    606606    GLuint mVisibleDisplay;
     607    class VBoxVHWAGlProgram * mpProgram;
    607608
    608609    bool mVisibleDisplayInitialized;
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp

    r23630 r23646  
    18281828                    bool bVGA) :
    18291829                mRect(0,0,aSize.width(),aSize.height()),
     1830                mpProgram(NULL),
    18301831                mVisibleDisplayInitialized(false),
    18311832                mAddress(NULL),
     
    28242825            glDeleteLists(mVisibleDisplay, 1);
    28252826        }
     2827        if(mpProgram)
     2828        {
     2829            mpProgram = NULL;
     2830        }
    28262831        mVisibleDisplayInitialized = false;
    28272832    }
    28282833}
    28292834
    2830 void VBoxVHWASurfaceBase::doDisplay(VBoxVHWASurfaceBase *pPrimary, VBoxVHWAGlProgramVHWA * pProgram, bool bBindDst)
     2835void VBoxVHWASurfaceBase::doDisplay(VBoxVHWASurfaceBase *pPrimary, bool bProgram, bool bBindDst)
    28312836{
    28322837    bool bInvokeMultiTex2 = false;
    28332838
    2834     if(pProgram)
    2835     {
    2836         pProgram->start();
     2839    if(bProgram)
     2840    {
     2841//        pProgram->start();
    28372842
    28382843//            if(pSrcCKey != NULL)
     
    29022907    }
    29032908
    2904     if(pProgram)
    2905     {
    2906         pProgram->stop();
    2907     }
    2908 }
    2909 
    2910 int VBoxVHWASurfaceBase::createDisplay(VBoxVHWASurfaceBase *pPrimary, GLuint *pDisplay)
     2909//    if(pProgram)
     2910//    {
     2911//        pProgram->stop();
     2912//    }
     2913}
     2914
     2915int VBoxVHWASurfaceBase::createDisplay(VBoxVHWASurfaceBase *pPrimary, GLuint *pDisplay, class VBoxVHWAGlProgram ** ppProgram)
    29112916{
    29122917    if(mVisibleTargRect.isEmpty())
     
    29682973            glNewList(display, GL_COMPILE);
    29692974
    2970             doDisplay(pPrimary, pProgram, pDstCKey != NULL);
     2975            doDisplay(pPrimary, pProgram != 0, pDstCKey != NULL);
    29712976
    29722977            glEndList();
    29732978            VBOXQGL_ASSERTNOERR();
    29742979            *pDisplay = display;
     2980            *ppProgram = pProgram;
    29752981            return VINF_SUCCESS;
    29762982        }
     
    29892995    deleteDisplay();
    29902996
    2991     int rc = createDisplay(pPrimary, &mVisibleDisplay);
     2997    int rc = createDisplay(pPrimary, &mVisibleDisplay, &mpProgram);
    29922998    if(RT_SUCCESS(rc))
    29932999    {
    29943000        mVisibleDisplayInitialized = true;
     3001    }
     3002    else
     3003    {
     3004        mVisibleDisplayInitialized = false;
    29953005    }
    29963006}
     
    30583068        }
    30593069
    3060         doDisplay(pPrimary, pProgram, pDstCKey != NULL);
     3070        if(pProgram)
     3071            pProgram->start();
     3072        doDisplay(pPrimary, pProgram != 0, pDstCKey != NULL);
     3073        if(pProgram)
     3074            pProgram->stop();
     3075
    30613076
    30623077//        doDisplay(pPrimary, NULL, false);
     
    30643079    else
    30653080    {
     3081        if(mpProgram)
     3082            mpProgram->start();
    30663083        VBOXQGL_CHECKERR(
    30673084                glCallList(mVisibleDisplay);
    30683085                );
     3086        if(mpProgram)
     3087            mpProgram->stop();
     3088
    30693089    }
    30703090
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