summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJordan Justen <[email protected]>2012-12-27 16:45:13 -0800
committerJordan Justen <[email protected]>2013-01-12 01:44:25 -0800
commit89e07ccf613e6a5f65acc597ce888d4c12014647 (patch)
tree2d22d5750da2edcf03667abb982b70d4a3256c93 /src
parent6d63b6e50371afdcfe6dc7a4239380d07bc8e727 (diff)
glformats: add _mesa_base_format_component_count
Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/mesa/main/glformats.c26
-rw-r--r--src/mesa/main/glformats.h3
2 files changed, 29 insertions, 0 deletions
diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c
index 5683d4b0a1a..fb69421c086 100644
--- a/src/mesa/main/glformats.c
+++ b/src/mesa/main/glformats.c
@@ -1058,6 +1058,32 @@ _mesa_base_format_has_channel(GLenum base_format, GLenum pname)
/**
+ * Returns the number of channels/components for a base format.
+ */
+GLint
+_mesa_base_format_component_count(GLenum base_format)
+{
+ switch (base_format) {
+ case GL_RED:
+ case GL_ALPHA:
+ case GL_INTENSITY:
+ case GL_DEPTH_COMPONENT:
+ return 1;
+ case GL_RG:
+ case GL_LUMINANCE_ALPHA:
+ case GL_DEPTH_STENCIL:
+ return 2;
+ case GL_RGB:
+ return 3;
+ case GL_RGBA:
+ return 4;
+ default:
+ return -1;
+ }
+}
+
+
+/**
* If format is a generic compressed format, return the corresponding
* non-compressed format. For other formats, return the format as-is.
*/
diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h
index d1208ef4ffe..fe604ddc973 100644
--- a/src/mesa/main/glformats.h
+++ b/src/mesa/main/glformats.h
@@ -100,6 +100,9 @@ _mesa_base_format_to_integer_format(GLenum format);
extern GLboolean
_mesa_base_format_has_channel(GLenum base_format, GLenum pname);
+extern GLint
+_mesa_base_format_component_count(GLenum base_format);
+
extern GLenum
_mesa_generic_compressed_format_to_uncompressed_format(GLenum format);