VirtualBox

Ignore:
Timestamp:
Jun 9, 2011 3:25:30 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
72190
Message:

Wddm/3D: fixed random screen corruption when running 3d apps under aero on win7

Location:
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c

    r33988 r37394  
    231231    else {
    232232        oldMural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, cr_server.currentWindow);
    233         if (oldMural && oldMural->bUseFBO
    234             && crServerSupportRedirMuralFBO()
    235             && !crStateGetCurrent()->framebufferobject.drawFB)
    236         {
    237             cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
     233        if (oldMural && oldMural->bUseFBO && crServerSupportRedirMuralFBO())
     234        {
     235            if (!crStateGetCurrent()->framebufferobject.drawFB)
     236            {
     237                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, 0);
     238            }
     239            if (!crStateGetCurrent()->framebufferobject.readFB)
     240            {
     241                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_READ_FRAMEBUFFER, 0);
     242            }
    238243        }
    239244
     
    306311        if (!crStateGetCurrent()->framebufferobject.drawFB)
    307312        {
    308             cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_FRAMEBUFFER_EXT, mural->bUseFBO ? mural->idFBO:0);
    309         }
    310     }
    311 }
    312 
     313            cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, mural->bUseFBO ? mural->idFBO:0);
     314        }
     315        if (!crStateGetCurrent()->framebufferobject.readFB)
     316        {
     317            cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_READ_FRAMEBUFFER, mural->bUseFBO ? mural->idFBO:0);
     318        }
     319    }
     320}
     321
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.c

    r36845 r37394  
    224224        if (!crStateGetCurrent()->framebufferobject.drawFB)
    225225        {
    226             cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_FRAMEBUFFER_EXT, mural->idFBO);
     226            cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, mural->idFBO);
     227        }
     228        if (!crStateGetCurrent()->framebufferobject.readFB)
     229        {
     230            cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_READ_FRAMEBUFFER, mural->idFBO);
    227231        }
    228232    }
     
    231235        cr_server.head_spu->dispatch_table.WindowShow(mural->spuWindow, mural->bVisible);
    232236
    233         if (mural->bUseFBO && crServerSupportRedirMuralFBO()
    234             && !crStateGetCurrent()->framebufferobject.drawFB)
    235         {
    236             cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
     237        if (mural->bUseFBO && crServerSupportRedirMuralFBO())
     238        {
     239            if (!crStateGetCurrent()->framebufferobject.drawFB)
     240            {
     241                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, 0);
     242            }
     243            if (!crStateGetCurrent()->framebufferobject.readFB)
     244            {
     245                cr_server.head_spu->dispatch_table.BindFramebufferEXT(GL_READ_FRAMEBUFFER, 0);
     246            }
    237247        }
    238248    }
     
    312322
    313323    uid = ctx->framebufferobject.drawFB ? ctx->framebufferobject.drawFB->hwid:0;
    314     gl->BindFramebufferEXT(GL_FRAMEBUFFER_EXT, uid);
     324    gl->BindFramebufferEXT(GL_DRAW_FRAMEBUFFER, uid);
     325
     326    uid = ctx->framebufferobject.readFB ? ctx->framebufferobject.readFB->hwid:0;
     327    gl->BindFramebufferEXT(GL_READ_FRAMEBUFFER, uid);
    315328
    316329    if (crStateIsBufferBound(GL_PIXEL_UNPACK_BUFFER_ARB))
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