VirtualBox

Changeset 55761 in vbox for trunk


Ignore:
Timestamp:
May 8, 2015 5:57:05 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
100187
Message:

3D: saving state: use separate buffers for DEPTH and STENCIL data. Needs more testing.

Location:
trunk/src/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h

    r54582 r55761  
    256256    GLint iCurReadBuffer;
    257257
    258     GLuint idDepthStencilRB;
     258    GLuint idDepthRB;
     259    GLuint idStencilRB;
    259260    GLuint fboWidth, fboHeight;
    260261
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c

    r55758 r55761  
    13081308        pEl = &pData->aElements[pData->cElements];
    13091309        pEl->idFBO = pMural && pMural->fRedirected ? pMural->aidFBOs[CR_SERVER_FBO_FB_IDX(pMural)] : 0;
    1310         pEl->enmBuffer = 0; /* we do not care */
     1310        pEl->enmBuffer = pMural ? pMural->idDepthRB : 0;
    13111311        pEl->posX = 0;
    13121312        pEl->posY = 0;
     
    13381338        pEl = &pData->aElements[pData->cElements];
    13391339        pEl->idFBO = pMural && pMural->fRedirected ? pMural->aidFBOs[CR_SERVER_FBO_FB_IDX(pMural)] : 0;
    1340         pEl->enmBuffer = 0; /* we do not care */
     1340        pEl->enmBuffer = pMural ? pMural->idDepthRB : 0;
    13411341        pEl->posX = 0;
    13421342        pEl->posY = 0;
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.cpp

    r52486 r55761  
    543543    }
    544544
    545     /*Depth&Stencil*/
    546     gl->GenRenderbuffersEXT(1, &mural->idDepthStencilRB);
    547     gl->BindRenderbufferEXT(GL_RENDERBUFFER_EXT, mural->idDepthStencilRB);
    548     gl->RenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH24_STENCIL8_EXT,
     545    /* Depth. */
     546    gl->GenRenderbuffersEXT(1, &mural->idDepthRB);
     547    gl->BindRenderbufferEXT(GL_RENDERBUFFER_EXT, mural->idDepthRB);
     548    gl->RenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
     549                           mural->width, mural->height);
     550
     551    /* Stencil. */
     552    gl->GenRenderbuffersEXT(1, &mural->idStencilRB);
     553    gl->BindRenderbufferEXT(GL_RENDERBUFFER_EXT, mural->idStencilRB);
     554    gl->RenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_STENCIL_INDEX,
    549555                           mural->width, mural->height);
    550556
     
    558564                                    GL_TEXTURE_2D, mural->aidColorTexs[i], 0);
    559565        gl->FramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
    560                                        GL_RENDERBUFFER_EXT, mural->idDepthStencilRB);
     566                                       GL_RENDERBUFFER_EXT, mural->idDepthRB);
    561567        gl->FramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,
    562                                        GL_RENDERBUFFER_EXT, mural->idDepthStencilRB);
     568                                       GL_RENDERBUFFER_EXT, mural->idStencilRB);
    563569
    564570        status = gl->CheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
     
    619625        }
    620626
    621         cr_server.head_spu->dispatch_table.DeleteRenderbuffersEXT(1, &mural->idDepthStencilRB);
    622         mural->idDepthStencilRB = 0;
     627        cr_server.head_spu->dispatch_table.DeleteRenderbuffersEXT(1, &mural->idDepthRB);
     628        mural->idDepthRB = 0;
     629
     630        cr_server.head_spu->dispatch_table.DeleteRenderbuffersEXT(1, &mural->idStencilRB);
     631        mural->idStencilRB = 0;
    623632
    624633        for (i = 0; i < mural->cBuffers; ++i)
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