Restrict multisampling to normalized unsigned and float formats.
Surface::resolve() currently only supports these formats. Also this
change reuses the GetColorComponentType() utility function instead of
using a separate switch. Effectively, signed normalized formats now
return 0 samples.
Change-Id: I839ffa89a63d8e1b0a40913d3b1ad13e2ce0b5a8
Reviewed-on: https://swiftshader-review.googlesource.com/16389
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index e6dfcb5..5a11b0b 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -3764,39 +3764,13 @@
return error(GL_INVALID_ENUM);
}
- // Integer types have no multisampling
GLint numMultisampleCounts = NUM_MULTISAMPLE_COUNTS;
- switch(internalformat)
+
+ // Integer types have no multisampling
+ GLenum type = GetColorComponentType(internalformat);
+ if(type != GL_UNSIGNED_NORMALIZED && type != GL_FLOAT)
{
- case GL_R8UI:
- case GL_R8I:
- case GL_R16UI:
- case GL_R16I:
- case GL_R32UI:
- case GL_R32I:
- case GL_RG8UI:
- case GL_RG8I:
- case GL_RG16UI:
- case GL_RG16I:
- case GL_RG32UI:
- case GL_RG32I:
- case GL_RGB8UI:
- case GL_RGB8I:
- case GL_RGB16UI:
- case GL_RGB16I:
- case GL_RGB32UI:
- case GL_RGB32I:
- case GL_RGBA8UI:
- case GL_RGBA8I:
- case GL_RGB10_A2UI:
- case GL_RGBA16UI:
- case GL_RGBA16I:
- case GL_RGBA32UI:
- case GL_RGBA32I:
numMultisampleCounts = 0;
- break;
- default:
- break;
}
switch(pname)