Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 43 +++++++++++++++++---------- 1 file changed, 27 insertions(+), 16 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index ee63477..7a2ec69 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -2176,23 +2176,40 @@ intel_miptree_used_for_rendering(const struct brw_context *brw, } } -bool -intel_miptree_resolve_color(struct brw_context *brw, - struct intel_mipmap_tree *mt, - unsigned level, unsigned layer, - int flags) +static bool +intel_miptree_needs_color_resolve(const struct brw_context *brw, + const struct intel_mipmap_tree *mt, + int flags) { if (mt->no_msrt_mcs) return false; - intel_miptree_check_color_resolve(mt, level, layer); + const bool is_lossless_compressed = + intel_miptree_is_lossless_compressed(brw, mt); /* From gen9 onwards there is new compression scheme for single sampled * surfaces called "lossless compressed". These don't need to be always * resolved. */ - if ((flags & INTEL_MIPTREE_IGNORE_CCS_E) && - intel_miptree_is_lossless_compressed(brw, mt)) + if ((flags & INTEL_MIPTREE_IGNORE_CCS_E) && is_lossless_compressed) + return false; + + /* Fast color clear resolves only make sense for non-MSAA buffers. */ + if (mt->msaa_layout != INTEL_MSAA_LAYOUT_NONE && !is_lossless_compressed) + return false; + + return true; +} + +bool +intel_miptree_resolve_color(struct brw_context *brw, + struct intel_mipmap_tree *mt, + unsigned level, unsigned layer, + int flags) +{ + intel_miptree_check_color_resolve(mt, level, layer); + + if (!intel_miptree_needs_color_resolve(brw, mt, flags)) return false; switch (mt->fast_clear_state) { @@ -2201,14 +2218,8 @@ intel_miptree_resolve_color(struct brw_context *brw, return false; case INTEL_FAST_CLEAR_STATE_UNRESOLVED: case INTEL_FAST_CLEAR_STATE_CLEAR: - /* Fast color clear resolves only make sense for non-MSAA buffers. */ - if (mt->msaa_layout == INTEL_MSAA_LAYOUT_NONE || - intel_miptree_is_lossless_compressed(brw, mt)) { - brw_blorp_resolve_color(brw, mt, level, layer); - return true; - } else { - return false; - } + brw_blorp_resolve_color(brw, mt, level, layer); + return true; default: unreachable("Invalid fast clear state"); } -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev