Commit 8536a44a by Alexis Hetu Committed by Alexis Hétu

Default drawBuffer/readBuffer for non default Framebuffer

drawBuffer and readBuffer default to GL_BACK in the default Framebuffer, but for all other Framebuffer objects, the default value should have been GL_COLOR_ATTACHMENT0. Fixes all failures in dEQP-GLES3.functional.state_query.integers* Change-Id: I060db67c50561d2678d57de1d7067bd7f8d2a53a Reviewed-on: https://swiftshader-review.googlesource.com/14948Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 6f28403a
......@@ -1213,7 +1213,14 @@ void Context::bindReadFramebuffer(GLuint framebuffer)
{
if(!getFramebuffer(framebuffer))
{
mFramebufferNameSpace.insert(framebuffer, new Framebuffer());
if(framebuffer == 0)
{
mFramebufferNameSpace.insert(framebuffer, new DefaultFramebuffer());
}
else
{
mFramebufferNameSpace.insert(framebuffer, new Framebuffer());
}
}
mState.readFramebuffer = framebuffer;
......@@ -1223,7 +1230,14 @@ void Context::bindDrawFramebuffer(GLuint framebuffer)
{
if(!getFramebuffer(framebuffer))
{
mFramebufferNameSpace.insert(framebuffer, new Framebuffer());
if(framebuffer == 0)
{
mFramebufferNameSpace.insert(framebuffer, new DefaultFramebuffer());
}
else
{
mFramebufferNameSpace.insert(framebuffer, new Framebuffer());
}
}
mState.drawFramebuffer = framebuffer;
......
......@@ -39,8 +39,8 @@ Framebuffer::Framebuffer()
mDepthbufferType = GL_NONE;
mStencilbufferType = GL_NONE;
readBuffer = GL_BACK;
drawBuffer[0] = GL_BACK;
readBuffer = GL_COLOR_ATTACHMENT0;
drawBuffer[0] = GL_COLOR_ATTACHMENT0;
for(int i = 1; i < MAX_COLOR_ATTACHMENTS; ++i)
{
drawBuffer[i] = GL_NONE;
......@@ -678,12 +678,20 @@ GLuint Framebuffer::getReadBufferIndex() const
}
}
DefaultFramebuffer::DefaultFramebuffer()
{
readBuffer = GL_BACK;
drawBuffer[0] = GL_BACK;
}
DefaultFramebuffer::DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil)
{
GLenum defaultRenderbufferType = egl::getClientVersion() < 3 ? GL_RENDERBUFFER : GL_FRAMEBUFFER_DEFAULT;
mColorbufferPointer[0] = new Renderbuffer(0, colorbuffer);
mColorbufferType[0] = defaultRenderbufferType;
readBuffer = GL_BACK;
drawBuffer[0] = GL_BACK;
for(int i = 1; i < MAX_COLOR_ATTACHMENTS; i++)
{
mColorbufferPointer[i] = nullptr;
......
......@@ -110,6 +110,7 @@ private:
class DefaultFramebuffer : public Framebuffer
{
public:
DefaultFramebuffer();
DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil);
bool isDefaultFramebuffer() const override { return true; }
......
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