VirtualBox

Ignore:
Timestamp:
Nov 23, 2018 7:06:36 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
126894
Message:

DevVGA-SVGA3d-ogl.cpp: Z_DF16 is not supported by OpenGL; use texture for depth/stencil render targets.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp

    r75514 r75695  
    12281228    case SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8:
    12291229    case SVGA3D_DEVCAP_SURFACEFMT_Z_D24X8:
    1230     case SVGA3D_DEVCAP_SURFACEFMT_Z_DF16:
     1230    // case SVGA3D_DEVCAP_SURFACEFMT_Z_DF16:
    12311231    case SVGA3D_DEVCAP_SURFACEFMT_Z_DF24:
    12321232    case SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT:
     
    21082108{
    21092109    RT_NOREF(idAssociatedContext);
     2110
     2111    LogFunc(("sid=%x\n", pSurface->id));
    21102112
    21112113    uint32_t const numMipLevels = pSurface->faces[0].numMipLevels;
     
    25342536    switch (pSurface->surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK)
    25352537    {
     2538    case SVGA3D_SURFACE_HINT_TEXTURE | SVGA3D_SURFACE_HINT_DEPTHSTENCIL:
     2539    case SVGA3D_SURFACE_HINT_DEPTHSTENCIL:
    25362540    case SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_HINT_TEXTURE:
    25372541    case SVGA3D_SURFACE_CUBEMAP | SVGA3D_SURFACE_HINT_TEXTURE | SVGA3D_SURFACE_HINT_RENDERTARGET:
     
    26672671        break;
    26682672    }
    2669 
    2670     case SVGA3D_SURFACE_HINT_DEPTHSTENCIL:
    2671         AssertFailed(); /** @todo DMA SVGA3D_SURFACE_HINT_DEPTHSTENCIL */
    2672         break;
    26732673
    26742674    case SVGA3D_SURFACE_HINT_VERTEXBUFFER | SVGA3D_SURFACE_HINT_INDEXBUFFER:
     
    44204420    case SVGA3D_RT_STENCIL:
    44214421        AssertReturn(target.mipmap == 0, VERR_INVALID_PARAMETER);
     4422#if 1
     4423        /* A texture surface can be used as a render target to fill it and later on used as a texture. */
     4424        if (pRenderTarget->oglId.texture == OPENGL_INVALID_ID)
     4425        {
     4426            LogFunc(("create depth texture to be used as render target; surface id=%x type=%d format=%d -> create texture\n",
     4427                     target.sid, pRenderTarget->surfaceFlags, pRenderTarget->format));
     4428            int rc = vmsvga3dBackCreateTexture(pState, pContext, cid, pRenderTarget);
     4429            AssertRCReturn(rc, rc);
     4430        }
     4431
     4432        AssertReturn(pRenderTarget->oglId.texture != OPENGL_INVALID_ID, VERR_INVALID_PARAMETER);
     4433        Assert(!pRenderTarget->fDirty);
     4434
     4435        pRenderTarget->surfaceFlags |= SVGA3D_SURFACE_HINT_DEPTHSTENCIL;
     4436
     4437        pState->ext.glFramebufferTexture2D(GL_FRAMEBUFFER,
     4438                                           (type == SVGA3D_RT_DEPTH) ? GL_DEPTH_ATTACHMENT : GL_STENCIL_ATTACHMENT,
     4439                                           GL_TEXTURE_2D, pRenderTarget->oglId.texture, target.mipmap);
     4440        VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
     4441#else
    44224442        if (pRenderTarget->oglId.texture == OPENGL_INVALID_ID)
    44234443        {
     
    44574477                                              GL_RENDERBUFFER, pRenderTarget->oglId.renderbuffer);
    44584478        VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
     4479#endif
    44594480        break;
    44604481
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