summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2016-07-22 18:16:45 -0700
committerFrancisco Jerez <currojerez@riseup.net>2016-08-25 18:36:07 -0700
commit071665c16191e3738f4ee173398da45c008e005a (patch)
tree2bc91dd53626d98523cfabd3cc2e41685e8a53c4 /src/mesa/drivers/dri/i965/intel_mipmap_tree.c
parentf24e393bd5caee85994b00b93f141e6c4b99e273 (diff)
downloadexternal_mesa3d-071665c16191e3738f4ee173398da45c008e005a.zip
external_mesa3d-071665c16191e3738f4ee173398da45c008e005a.tar.gz
external_mesa3d-071665c16191e3738f4ee173398da45c008e005a.tar.bz2
i965: Return whether the miptree was resolved from intel_miptree_resolve_color().
This will allow optimizing out the cache flush in some cases when resolving wasn't necessary. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/intel_mipmap_tree.c')
-rw-r--r--src/mesa/drivers/dri/i965/intel_mipmap_tree.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
index 0836b92..24355c5 100644
--- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
+++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
@@ -2133,7 +2133,7 @@ intel_miptree_all_slices_resolve_depth(struct brw_context *brw,
}
-void
+bool
intel_miptree_resolve_color(struct brw_context *brw,
struct intel_mipmap_tree *mt,
int flags)
@@ -2144,21 +2144,25 @@ intel_miptree_resolve_color(struct brw_context *brw,
*/
if ((flags & INTEL_MIPTREE_IGNORE_CCS_E) &&
intel_miptree_is_lossless_compressed(brw, mt))
- return;
+ return false;
switch (mt->fast_clear_state) {
case INTEL_FAST_CLEAR_STATE_NO_MCS:
case INTEL_FAST_CLEAR_STATE_RESOLVED:
/* No resolve needed */
- break;
+ 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);
+ return true;
+ } else {
+ return false;
}
- break;
+ default:
+ unreachable("Invalid fast clear state");
}
}