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
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)
{
return error(GL_INVALID_VALUE);
......@@ -4569,11 +4564,47 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum
return error(GL_INVALID_OPERATION);
}
egl::GLint clientVersion = context->getClientVersion();
switch(internalformat)
{
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
if(clientVersion < 3)
{
return error(GL_INVALID_ENUM);
}
// fall through
case GL_DEPTH_COMPONENT16:
context->setRenderbufferStorage(new es2::Depthbuffer(width, height, samples));
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_RGB5_A1:
case GL_RGB565:
......@@ -4584,6 +4615,12 @@ void RenderbufferStorageMultisampleANGLE(GLenum target, GLsizei samples, GLenum
case GL_STENCIL_INDEX8:
context->setRenderbufferStorage(new es2::Stencilbuffer(width, height, samples));
break;
case GL_DEPTH32F_STENCIL8:
if(clientVersion < 3)
{
return error(GL_INVALID_ENUM);
}
// fall through
case GL_DEPTH24_STENCIL8_OES:
context->setRenderbufferStorage(new es2::DepthStencilbuffer(width, height, samples));
break;
......
......@@ -1396,11 +1396,6 @@ GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisample(GLenum target, GLsi
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)
{
return error(GL_INVALID_VALUE);
......
......@@ -351,12 +351,38 @@ namespace es2
{
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_RGB5_A1:
case GL_RGB565:
case GL_RGB8_OES:
case GL_RGBA8_OES:
return true;
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
case GL_DEPTH32F_STENCIL8:
case GL_DEPTH_COMPONENT16:
case GL_STENCIL_INDEX8:
case GL_DEPTH24_STENCIL8_OES:
......@@ -372,10 +398,36 @@ namespace es2
{
switch(internalformat)
{
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
case GL_DEPTH32F_STENCIL8:
case GL_DEPTH_COMPONENT16:
case GL_DEPTH24_STENCIL8_OES:
return true;
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_RGB5_A1:
case GL_RGB565:
......@@ -393,15 +445,41 @@ namespace es2
{
switch(internalformat)
{
case GL_DEPTH32F_STENCIL8:
case GL_STENCIL_INDEX8:
case GL_DEPTH24_STENCIL8_OES:
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_RGB5_A1:
case GL_RGB565:
case GL_RGB8_OES:
case GL_RGBA8_OES:
case GL_DEPTH_COMPONENT16:
case GL_DEPTH_COMPONENT24:
case GL_DEPTH_COMPONENT32F:
return false;
default:
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