r600g: check for PIPE_BIND_BLENDABLE in is_format_supported
authorChristoph Bumiller <christoph.bumiller@speed.at>
Fri, 16 May 2014 23:20:14 +0000 (01:20 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 2 Jun 2014 10:49:03 +0000 (12:49 +0200)
v2: added !util_format_is_depth_or_stencil(format)

Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600_state.c

index 7b1a44b635cb293ddaebc97de486a5d3a23ced52..5824fe0418ac0905cac31bd035e0ad4f50424a21 100644 (file)
@@ -227,6 +227,11 @@ static bool r600_is_zs_format_supported(enum pipe_format format)
        return r600_translate_dbformat(format) != ~0U;
 }
 
+static inline bool r600_is_blending_supported(enum pipe_format format)
+{
+       return !(util_format_is_pure_integer(format) || util_format_is_depth_or_stencil(format));
+}
+
 boolean evergreen_is_format_supported(struct pipe_screen *screen,
                                      enum pipe_format format,
                                      enum pipe_texture_target target,
@@ -295,6 +300,10 @@ boolean evergreen_is_format_supported(struct pipe_screen *screen,
        if (usage & PIPE_BIND_TRANSFER_WRITE)
                retval |= PIPE_BIND_TRANSFER_WRITE;
 
+       if ((usage & PIPE_BIND_BLENDABLE) &&
+           r600_is_blending_supported(format))
+               retval |= PIPE_BIND_BLENDABLE;
+
        return retval == usage;
 }
 
index a0ba1318e2c647cbd681030d4435a2a6f48dfdfc..31d7bd045192318829fff3096eaf1b6d3b23ce87 100644 (file)
@@ -157,6 +157,11 @@ static bool r600_is_zs_format_supported(enum pipe_format format)
        return r600_translate_dbformat(format) != ~0U;
 }
 
+static inline bool r600_is_blending_supported(enum pipe_format format)
+{
+       return !(util_format_is_pure_integer(format) || util_format_is_depth_or_stencil(format));
+}
+
 boolean r600_is_format_supported(struct pipe_screen *screen,
                                 enum pipe_format format,
                                 enum pipe_texture_target target,
@@ -235,6 +240,10 @@ boolean r600_is_format_supported(struct pipe_screen *screen,
        if (usage & PIPE_BIND_TRANSFER_WRITE)
                retval |= PIPE_BIND_TRANSFER_WRITE;
 
+       if ((usage & PIPE_BIND_BLENDABLE) &&
+           r600_is_blending_supported(format))
+               retval |= PIPE_BIND_BLENDABLE;
+
        return retval == usage;
 }