Commit 8f60458c by Alexis Hetu Committed by Alexis Hétu

Update to RenderbufferStorage's supported format list

Added OpenGL ES 3.0 supported formats to the list of formats supported by glRenderbufferStorage(). Change-Id: Ifc73de17b678e2a5b782d2fe239d5442b98edd95 Reviewed-on: https://swiftshader-review.googlesource.com/3290Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 7aca320a
...@@ -4542,11 +4542,6 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum ...@@ -4542,11 +4542,6 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
if(!es2::IsColorRenderable(internalformat) && !es2::IsDepthRenderable(internalformat) && !es2::IsStencilRenderable(internalformat))
{
return error(GL_INVALID_ENUM);
}
if(width < 0 || height < 0 || samples < 0) if(width < 0 || height < 0 || samples < 0)
{ {
return error(GL_INVALID_VALUE); return error(GL_INVALID_VALUE);
...@@ -4569,11 +4564,47 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum ...@@ -4569,11 +4564,47 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum
return error(GL_INVALID_OPERATION); return error(GL_INVALID_OPERATION);
} }
egl::GLint clientVersion = context->getClientVersion();
switch(internalformat) switch(internalformat)
{ {
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
if(clientVersion < 3)
{
return error(GL_INVALID_ENUM);
}
// fall through
case GL_DEPTH_COMPONENT16: case GL_DEPTH_COMPONENT16:
context->setRenderbufferStorage(new es2::Depthbuffer(width, height, samples)); context->setRenderbufferStorage(new es2::Depthbuffer(width, height, samples));
break; break;
case GL_R8:
case GL_R8UI:
case GL_R8I:
case GL_R16UI:
case GL_R16I:
case GL_R32UI:
case GL_R32I:
case GL_RG8:
case GL_RG8UI:
case GL_RG8I:
case GL_RG16UI:
case GL_RG16I:
case GL_RG32UI:
case GL_RG32I:
case GL_SRGB8_ALPHA8:
case GL_RGB10_A2:
case GL_RGBA8UI:
case GL_RGBA8I:
case GL_RGB10_A2UI:
case GL_RGBA16UI:
case GL_RGBA16I:
case GL_RGBA32I:
case GL_RGBA32UI:
if(clientVersion < 3)
{
return error(GL_INVALID_ENUM);
}
// fall through
case GL_RGBA4: case GL_RGBA4:
case GL_RGB5_A1: case GL_RGB5_A1:
case GL_RGB565: case GL_RGB565:
...@@ -4584,6 +4615,12 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum ...@@ -4584,6 +4615,12 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum
case GL_STENCIL_INDEX8: case GL_STENCIL_INDEX8:
context->setRenderbufferStorage(new es2::Stencilbuffer(width, height, samples)); context->setRenderbufferStorage(new es2::Stencilbuffer(width, height, samples));
break; break;
case GL_DEPTH32F_STENCIL8:
if(clientVersion < 3)
{
return error(GL_INVALID_ENUM);
}
// fall through
case GL_DEPTH24_STENCIL8_OES: case GL_DEPTH24_STENCIL8_OES:
context->setRenderbufferStorage(new es2::DepthStencilbuffer(width, height, samples)); context->setRenderbufferStorage(new es2::DepthStencilbuffer(width, height, samples));
break; break;
......
...@@ -1396,11 +1396,6 @@ GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsi ...@@ -1396,11 +1396,6 @@ GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsi
return error(GL_INVALID_ENUM); return error(GL_INVALID_ENUM);
} }
if(!es2::IsColorRenderable(internalformat) && !es2::IsDepthRenderable(internalformat) && !es2::IsStencilRenderable(internalformat))
{
return error(GL_INVALID_ENUM);
}
if(width < 0 || height < 0 || samples < 0) if(width < 0 || height < 0 || samples < 0)
{ {
return error(GL_INVALID_VALUE); return error(GL_INVALID_VALUE);
......
...@@ -351,12 +351,38 @@ namespace es2 ...@@ -351,12 +351,38 @@ namespace es2
{ {
switch(internalformat) switch(internalformat)
{ {
case GL_R8:
case GL_R8UI:
case GL_R8I:
case GL_R16UI:
case GL_R16I:
case GL_R32UI:
case GL_R32I:
case GL_RG8:
case GL_RG8UI:
case GL_RG8I:
case GL_RG16UI:
case GL_RG16I:
case GL_RG32UI:
case GL_RG32I:
case GL_SRGB8_ALPHA8:
case GL_RGB10_A2:
case GL_RGBA8UI:
case GL_RGBA8I:
case GL_RGB10_A2UI:
case GL_RGBA16UI:
case GL_RGBA16I:
case GL_RGBA32I:
case GL_RGBA32UI:
case GL_RGBA4: case GL_RGBA4:
case GL_RGB5_A1: case GL_RGB5_A1:
case GL_RGB565: case GL_RGB565:
case GL_RGB8_OES: case GL_RGB8_OES:
case GL_RGBA8_OES: case GL_RGBA8_OES:
return true; return true;
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
case GL_DEPTH32F_STENCIL8:
case GL_DEPTH_COMPONENT16: case GL_DEPTH_COMPONENT16:
case GL_STENCIL_INDEX8: case GL_STENCIL_INDEX8:
case GL_DEPTH24_STENCIL8_OES: case GL_DEPTH24_STENCIL8_OES:
...@@ -372,10 +398,36 @@ namespace es2 ...@@ -372,10 +398,36 @@ namespace es2
{ {
switch(internalformat) switch(internalformat)
{ {
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
case GL_DEPTH32F_STENCIL8:
case GL_DEPTH_COMPONENT16: case GL_DEPTH_COMPONENT16:
case GL_DEPTH24_STENCIL8_OES: case GL_DEPTH24_STENCIL8_OES:
return true; return true;
case GL_STENCIL_INDEX8: case GL_STENCIL_INDEX8:
case GL_R8:
case GL_R8UI:
case GL_R8I:
case GL_R16UI:
case GL_R16I:
case GL_R32UI:
case GL_R32I:
case GL_RG8:
case GL_RG8UI:
case GL_RG8I:
case GL_RG16UI:
case GL_RG16I:
case GL_RG32UI:
case GL_RG32I:
case GL_SRGB8_ALPHA8:
case GL_RGB10_A2:
case GL_RGBA8UI:
case GL_RGBA8I:
case GL_RGB10_A2UI:
case GL_RGBA16UI:
case GL_RGBA16I:
case GL_RGBA32I:
case GL_RGBA32UI:
case GL_RGBA4: case GL_RGBA4:
case GL_RGB5_A1: case GL_RGB5_A1:
case GL_RGB565: case GL_RGB565:
...@@ -393,15 +445,41 @@ namespace es2 ...@@ -393,15 +445,41 @@ namespace es2
{ {
switch(internalformat) switch(internalformat)
{ {
case GL_DEPTH32F_STENCIL8:
case GL_STENCIL_INDEX8: case GL_STENCIL_INDEX8:
case GL_DEPTH24_STENCIL8_OES: case GL_DEPTH24_STENCIL8_OES:
return true; return true;
case GL_R8:
case GL_R8UI:
case GL_R8I:
case GL_R16UI:
case GL_R16I:
case GL_R32UI:
case GL_R32I:
case GL_RG8:
case GL_RG8UI:
case GL_RG8I:
case GL_RG16UI:
case GL_RG16I:
case GL_RG32UI:
case GL_RG32I:
case GL_SRGB8_ALPHA8:
case GL_RGB10_A2:
case GL_RGBA8UI:
case GL_RGBA8I:
case GL_RGB10_A2UI:
case GL_RGBA16UI:
case GL_RGBA16I:
case GL_RGBA32I:
case GL_RGBA32UI:
case GL_RGBA4: case GL_RGBA4:
case GL_RGB5_A1: case GL_RGB5_A1:
case GL_RGB565: case GL_RGB565:
case GL_RGB8_OES: case GL_RGB8_OES:
case GL_RGBA8_OES: case GL_RGBA8_OES:
case GL_DEPTH_COMPONENT16: case GL_DEPTH_COMPONENT16:
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
return false; return false;
default: default:
UNIMPLEMENTED(); UNIMPLEMENTED();
......
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