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 ...@@ -71,6 +71,7 @@ class WindowSurfaceCGL : public SurfaceGL
Surface mSurfaces[2]; Surface mSurfaces[2];
int mCurrentSurface; int mCurrentSurface;
GLuint mFramebuffer; GLuint mFramebuffer;
GLuint mDSRenderbuffer;
}; };
} }
......
...@@ -147,7 +147,8 @@ WindowSurfaceCGL::WindowSurfaceCGL(RendererGL *renderer, ...@@ -147,7 +147,8 @@ WindowSurfaceCGL::WindowSurfaceCGL(RendererGL *renderer,
mStateManager(renderer->getStateManager()), mStateManager(renderer->getStateManager()),
mDisplayLink(nullptr), mDisplayLink(nullptr),
mCurrentSurface(0), mCurrentSurface(0),
mFramebuffer(0) mFramebuffer(0),
mDSRenderbuffer(0)
{ {
for (auto &surface : mSurfaces) for (auto &surface : mSurfaces)
{ {
...@@ -164,6 +165,12 @@ WindowSurfaceCGL::~WindowSurfaceCGL() ...@@ -164,6 +165,12 @@ WindowSurfaceCGL::~WindowSurfaceCGL()
mFramebuffer = 0; mFramebuffer = 0;
} }
if (mDSRenderbuffer != 0)
{
mFunctions->deleteRenderbuffers(1, &mDSRenderbuffer);
mDSRenderbuffer = 0;
}
for (auto &surface : mSurfaces) for (auto &surface : mSurfaces)
{ {
freeSurfaceData(&surface); freeSurfaceData(&surface);
...@@ -186,10 +193,16 @@ egl::Error WindowSurfaceCGL::initialize() ...@@ -186,10 +193,16 @@ egl::Error WindowSurfaceCGL::initialize()
initializeSurfaceData(&surface, width, height); 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); mFunctions->genFramebuffers(1, &mFramebuffer);
mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebuffer); mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebuffer);
mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_RECTANGLE_ARB, mFunctions->framebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_RECTANGLE_ARB,
mSurfaces[0].texture, 0); mSurfaces[0].texture, 0);
mFunctions->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER,
mDSRenderbuffer);
mDisplayLink = new DisplayLink; mDisplayLink = new DisplayLink;
mDisplayLink->start(); 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