From 1ba2f05bc039a19768d893a8ffa98488697a7b20 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Tue, 25 Oct 2016 10:48:12 -0700 Subject: intel/blorp: Take a fast_clear_op in ccs_resolve Eventually, we may want to just have a single blorp_ccs_op function that does both clears and resolves. For now we'll stick to just making the ccs_resolve function we have now a bit more configurable. Reviewed-by: Topi Pohjolainen --- src/mesa/drivers/dri/i965/brw_blorp.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/mesa/drivers') diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index 2771f1466db..95a2bb7bb3c 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -943,10 +943,23 @@ brw_blorp_resolve_color(struct brw_context *brw, struct intel_mipmap_tree *mt) unsigned level = 0; blorp_surf_for_miptree(brw, &surf, mt, true, &level, isl_tmp); + enum blorp_fast_clear_op resolve_op; + if (brw->gen >= 9) { + if (surf.aux_usage == ISL_AUX_USAGE_CCS_E) + resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_FULL; + else + resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_PARTIAL; + } else { + assert(surf.aux_usage == ISL_AUX_USAGE_CCS_D); + /* Broadwell and earlier do not have a partial resolve */ + resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_FULL; + } + struct blorp_batch batch; blorp_batch_init(&brw->blorp, &batch, brw, 0); blorp_ccs_resolve(&batch, &surf, 0 /* level */, 0 /* layer */, - brw_blorp_to_isl_format(brw, format, true)); + brw_blorp_to_isl_format(brw, format, true), + resolve_op); blorp_batch_finish(&batch); mt->fast_clear_state = INTEL_FAST_CLEAR_STATE_RESOLVED; -- cgit v1.2.3