gallium: New pf_has_alpha utility function.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Fri, 5 Sep 2008 01:26:30 +0000 (10:26 +0900)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Fri, 5 Sep 2008 01:31:38 +0000 (10:31 +0900)
src/gallium/include/pipe/p_format.h

index d9aa5792a440b642f0b40b15df83a97425aa85e6..97a4c8c510b396e30e98ba65cac2076d0cd78d64 100644 (file)
@@ -531,6 +531,35 @@ pf_is_ycbcr( enum pipe_format format )
    return pf_layout(format) == PIPE_FORMAT_LAYOUT_YCBCR ? TRUE : FALSE;
 }
 
+static INLINE boolean 
+pf_has_alpha( enum pipe_format format )
+{
+   switch (pf_layout(format)) {
+   case PIPE_FORMAT_LAYOUT_RGBAZS:
+   case PIPE_FORMAT_LAYOUT_MIXED:
+      /* FIXME: pf_get_component_bits( PIPE_FORMAT_A8L8_UNORM, PIPE_FORMAT_COMP_A ) should not return 0 right? */
+      if(format == PIPE_FORMAT_A8_UNORM || 
+         format == PIPE_FORMAT_A8L8_UNORM || 
+         format == PIPE_FORMAT_A8_L8_SRGB)
+         return TRUE;
+      return pf_get_component_bits( format, PIPE_FORMAT_COMP_A ) ? TRUE : FALSE;
+   case PIPE_FORMAT_LAYOUT_YCBCR:
+      return FALSE; 
+   case PIPE_FORMAT_LAYOUT_DXT:
+      switch (format) {
+      case PIPE_FORMAT_DXT1_RGBA:
+      case PIPE_FORMAT_DXT3_RGBA:
+      case PIPE_FORMAT_DXT5_RGBA:
+         return TRUE;
+      default:
+         return FALSE;
+      }
+   default:
+      assert( 0 );
+      return FALSE;
+   }
+}
+
 #ifdef __cplusplus
 }
 #endif