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) ...@@ -1213,7 +1213,14 @@ void Context::bindReadFramebuffer(GLuint framebuffer)
{ {
if(!getFramebuffer(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; mState.readFramebuffer = framebuffer;
...@@ -1223,7 +1230,14 @@ void Context::bindDrawFramebuffer(GLuint framebuffer) ...@@ -1223,7 +1230,14 @@ void Context::bindDrawFramebuffer(GLuint framebuffer)
{ {
if(!getFramebuffer(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; mState.drawFramebuffer = framebuffer;
......
...@@ -39,8 +39,8 @@ Framebuffer::Framebuffer() ...@@ -39,8 +39,8 @@ Framebuffer::Framebuffer()
mDepthbufferType = GL_NONE; mDepthbufferType = GL_NONE;
mStencilbufferType = GL_NONE; mStencilbufferType = GL_NONE;
readBuffer = GL_BACK; readBuffer = GL_COLOR_ATTACHMENT0;
drawBuffer[0] = GL_BACK; drawBuffer[0] = GL_COLOR_ATTACHMENT0;
for(int i = 1; i < MAX_COLOR_ATTACHMENTS; ++i) for(int i = 1; i < MAX_COLOR_ATTACHMENTS; ++i)
{ {
drawBuffer[i] = GL_NONE; drawBuffer[i] = GL_NONE;
...@@ -678,12 +678,20 @@ GLuint Framebuffer::getReadBufferIndex() const ...@@ -678,12 +678,20 @@ GLuint Framebuffer::getReadBufferIndex() const
} }
} }
DefaultFramebuffer::DefaultFramebuffer()
{
readBuffer = GL_BACK;
drawBuffer[0] = GL_BACK;
}
DefaultFramebuffer::DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil) DefaultFramebuffer::DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil)
{ {
GLenum defaultRenderbufferType = egl::getClientVersion() < 3 ? GL_RENDERBUFFER : GL_FRAMEBUFFER_DEFAULT; GLenum defaultRenderbufferType = egl::getClientVersion() < 3 ? GL_RENDERBUFFER : GL_FRAMEBUFFER_DEFAULT;
mColorbufferPointer[0] = new Renderbuffer(0, colorbuffer); mColorbufferPointer[0] = new Renderbuffer(0, colorbuffer);
mColorbufferType[0] = defaultRenderbufferType; mColorbufferType[0] = defaultRenderbufferType;
readBuffer = GL_BACK;
drawBuffer[0] = GL_BACK;
for(int i = 1; i < MAX_COLOR_ATTACHMENTS; i++) for(int i = 1; i < MAX_COLOR_ATTACHMENTS; i++)
{ {
mColorbufferPointer[i] = nullptr; mColorbufferPointer[i] = nullptr;
......
...@@ -110,6 +110,7 @@ private: ...@@ -110,6 +110,7 @@ private:
class DefaultFramebuffer : public Framebuffer class DefaultFramebuffer : public Framebuffer
{ {
public: public:
DefaultFramebuffer();
DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil); DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil);
bool isDefaultFramebuffer() const override { return true; } 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