Commit 50cd39ef by Corentin Wallez

WindowSurfaceCGL: add a depth-stencil buffer

In our EGL config we advertise a depth-stencil buffer but do not provide it. This fixes a lot of end2end tests that were relying on the presence of the depth buffer. BUG=angleproject:891 Change-Id: I48e0eb27753ee64c08bf51b8ec13bfe20360332d Reviewed-on: https://chromium-review.googlesource.com/298861Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarCorentin Wallez <cwallez@chromium.org>
parent c38ae7df
......@@ -71,6 +71,7 @@ class WindowSurfaceCGL : public SurfaceGL
Surface mSurfaces[2];
int mCurrentSurface;
GLuint mFramebuffer;
GLuint mDSRenderbuffer;
};
}
......
......@@ -147,7 +147,8 @@ WindowSurfaceCGL::WindowSurfaceCGL(RendererGL *renderer,
mStateManager(renderer->getStateManager()),
mDisplayLink(nullptr),
mCurrentSurface(0),
mFramebuffer(0)
mFramebuffer(0),
mDSRenderbuffer(0)
{
for (auto &surface : mSurfaces)
{
......@@ -164,6 +165,12 @@ WindowSurfaceCGL::~WindowSurfaceCGL()
mFramebuffer = 0;
}
if (mDSRenderbuffer != 0)
{
mFunctions->deleteRenderbuffers(1, &mDSRenderbuffer);
mDSRenderbuffer = 0;
}
for (auto &surface : mSurfaces)
{
freeSurfaceData(&surface);
......@@ -186,10 +193,16 @@ egl::Error WindowSurfaceCGL::initialize()
initializeSurfaceData(&surface, width, height);
}
mFunctions->genRenderbuffers(1, &mDSRenderbuffer);
mStateManager->bindRenderbuffer(GL_RENDERBUFFER, mDSRenderbuffer);
mFunctions->renderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);
mFunctions->genFramebuffers(1, &mFramebuffer);
mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_RECTANGLE_ARB,
mSurfaces[0].texture, 0);
mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER,
mDSRenderbuffer);
mDisplayLink = new DisplayLink;
mDisplayLink->start();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment