glformats: add _mesa_base_format_component_count
authorJordan Justen <jordan.l.justen@intel.com>
Fri, 28 Dec 2012 00:45:13 +0000 (16:45 -0800)
committerJordan Justen <jordan.l.justen@intel.com>
Sat, 12 Jan 2013 09:44:25 +0000 (01:44 -0800)
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/glformats.c
src/mesa/main/glformats.h

index 5683d4b0a1a62fdb1d710ef17d4f481038c7a7dc..fb69421c086769c7aef849801b529bfb34044ef4 100644 (file)
@@ -1057,6 +1057,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.
index d1208ef4ffe3d311d6246c459f0feafefd440210..fe604ddc9730fb465fc4984de00ed28d73964b42 100644 (file)
@@ -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);