diff options
author | Marek Olšák <[email protected]> | 2014-08-23 11:18:43 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-08-25 13:12:24 +0200 |
commit | 770719eb821f96688c7efa12dc42805590f984ef (patch) | |
tree | 9890f97ca8d4baf71125473175b1602a5e703486 /src | |
parent | bc0ae40616a89e748c165aa2963c712f7640fb0a (diff) |
r600g: only set PIPE_BIND_BLENDABLE if colorbuffer rendering is supported
Reviewed-by: Michel Dänzer <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/r600/evergreen_state.c | 15 | ||||
-rw-r--r-- | src/gallium/drivers/r600/r600_state.c | 15 |
2 files changed, 10 insertions, 20 deletions
diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 841ad0c8d34..9f0e82dd1c0 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -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; } diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 607b199cf2f..d9342d4de68 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -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; } |