r600g: only set PIPE_BIND_BLENDABLE if colorbuffer rendering is supported
authorMarek Olšák <marek.olsak@amd.com>
Sat, 23 Aug 2014 09:18:43 +0000 (11:18 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Mon, 25 Aug 2014 11:12:24 +0000 (13:12 +0200)
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600_state.c

index 841ad0c8d3406a04d0364c958997e9bca25518be..9f0e82dd1c08c6e585ce8ac3ed55557dd7cb3a07 100644 (file)
@@ -227,11 +227,6 @@ 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,
@@ -276,13 +271,17 @@ boolean evergreen_is_format_supported(struct pipe_screen *screen,
        if ((usage & (PIPE_BIND_RENDER_TARGET |
                      PIPE_BIND_DISPLAY_TARGET |
                      PIPE_BIND_SCANOUT |
-                     PIPE_BIND_SHARED)) &&
+                     PIPE_BIND_SHARED |
+                     PIPE_BIND_BLENDABLE)) &&
            r600_is_colorbuffer_format_supported(rscreen->b.chip_class, format)) {
                retval |= usage &
                          (PIPE_BIND_RENDER_TARGET |
                           PIPE_BIND_DISPLAY_TARGET |
                           PIPE_BIND_SCANOUT |
                           PIPE_BIND_SHARED);
+               if (!util_format_is_pure_integer(format) &&
+                   !util_format_is_depth_or_stencil(format))
+                       retval |= usage & PIPE_BIND_BLENDABLE;
        }
 
        if ((usage & PIPE_BIND_DEPTH_STENCIL) &&
@@ -300,10 +299,6 @@ 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 607b199cf2ff54c20802c28ad29a9ac2fac1b905..d9342d4de68031ce9cdf19f77a3429ce3a4c38a7 100644 (file)
@@ -157,11 +157,6 @@ 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,
@@ -216,13 +211,17 @@ boolean r600_is_format_supported(struct pipe_screen *screen,
        if ((usage & (PIPE_BIND_RENDER_TARGET |
                      PIPE_BIND_DISPLAY_TARGET |
                      PIPE_BIND_SCANOUT |
-                     PIPE_BIND_SHARED)) &&
+                     PIPE_BIND_SHARED |
+                     PIPE_BIND_BLENDABLE)) &&
            r600_is_colorbuffer_format_supported(rscreen->b.chip_class, format)) {
                retval |= usage &
                          (PIPE_BIND_RENDER_TARGET |
                           PIPE_BIND_DISPLAY_TARGET |
                           PIPE_BIND_SCANOUT |
                           PIPE_BIND_SHARED);
+               if (!util_format_is_pure_integer(format) &&
+                   !util_format_is_depth_or_stencil(format))
+                       retval |= usage & PIPE_BIND_BLENDABLE;
        }
 
        if ((usage & PIPE_BIND_DEPTH_STENCIL) &&
@@ -240,10 +239,6 @@ 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;
 }