Merge branch '7.8'
[mesa.git] / src / gallium / drivers / cell / ppu / cell_screen.c
index f5528a7ec6b910838fdf5679579ac142db1eb7b8..42045744060a09f420f6b0e09c7f3286c87e2f8d 100644 (file)
@@ -97,6 +97,8 @@ cell_get_param(struct pipe_screen *screen, int param)
    case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
       return 0;
+   case PIPE_CAP_BLEND_EQUATION_SEPARATE:
+      return 1;
    default:
       return 0;
    }
@@ -136,12 +138,6 @@ cell_is_format_supported( struct pipe_screen *screen,
                           unsigned tex_usage, 
                           unsigned geom_flags )
 {
-   struct sw_winsys *winsys = cell_screen(screen)->winsys;
-
-   if (format == PIPE_FORMAT_DXT5_RGBA ||
-       format == PIPE_FORMAT_A8B8G8R8_SRGB)
-      return FALSE;
-
    if (tex_usage & (PIPE_TEXTURE_USAGE_DISPLAY_TARGET |
                     PIPE_TEXTURE_USAGE_SCANOUT |
                     PIPE_TEXTURE_USAGE_SHARED)) {
@@ -149,9 +145,16 @@ cell_is_format_supported( struct pipe_screen *screen,
          return FALSE;
    }
 
-   /* This is often a lie.  Pull in logic from llvmpipe to fix.
-    */
-   return TRUE;
+   /* only a few formats are known to work at this time */
+   switch (format) {
+   case PIPE_FORMAT_Z24S8_UNORM:
+   case PIPE_FORMAT_Z24X8_UNORM:
+   case PIPE_FORMAT_B8G8R8A8_UNORM:
+   case PIPE_FORMAT_I8_UNORM:
+      return TRUE;
+   default:
+      return FALSE;
+   }
 }