diff options
author | Nanley Chery <nanley.g.chery@intel.com> | 2018-05-02 20:05:08 -0700 |
---|---|---|
committer | Nanley Chery <nanley.g.chery@intel.com> | 2018-05-17 07:06:41 -0700 |
commit | 6c41a2ef3b72f9465646fea7ac941e8deb14444b (patch) | |
tree | 0e1472cf06445ac19350bfcba4979bf7c0aa09c0 | |
parent | beed9c4550c1c65fed97c539ade023a66a679d15 (diff) |
i965: Prepare to delete intel_miptree_alloc_ccs()
We're going to delete intel_miptree_alloc_ccs() in the next commit. With
that in mind, replace the use of this function in
do_single_blorp_clear() with intel_miptree_alloc_aux() and move the
delayed allocation logic to it's callers.
v2: Duplicate the delayed allocation comment (Topi Pohjolainen).
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_blorp.c | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 27 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/intel_mipmap_tree.h | 2 |
3 files changed, 16 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_blorp.c b/src/mesa/drivers/dri/i965/brw_blorp.c index f538cd03bc..2ea13bb743 100644 --- a/src/mesa/drivers/dri/i965/brw_blorp.c +++ b/src/mesa/drivers/dri/i965/brw_blorp.c @@ -1208,7 +1208,7 @@ do_single_blorp_clear(struct brw_context *brw, struct gl_framebuffer *fb, */ if (can_fast_clear && !irb->mt->aux_buf) { assert(irb->mt->aux_usage == ISL_AUX_USAGE_CCS_D); - if (!intel_miptree_alloc_ccs(brw, irb->mt)) { + if (!intel_miptree_alloc_aux(brw, irb->mt)) { /* There are a few reasons in addition to out-of-memory, that can * cause intel_miptree_alloc_non_msrt_mcs to fail. Try to recover by * falling back to non-fast clear. diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c index ccde5beb3c..a1834fe911 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c @@ -60,10 +60,6 @@ static void *intel_miptree_map_raw(struct brw_context *brw, static void intel_miptree_unmap_raw(struct intel_mipmap_tree *mt); static bool -intel_miptree_alloc_aux(struct brw_context *brw, - struct intel_mipmap_tree *mt); - -static bool intel_miptree_supports_mcs(struct brw_context *brw, const struct intel_mipmap_tree *mt) { @@ -791,7 +787,12 @@ intel_miptree_create(struct brw_context *brw, mt->offset = 0; - if (!intel_miptree_alloc_aux(brw, mt)) { + /* Create the auxiliary surface up-front. CCS_D, on the other hand, can only + * compress clear color so we wait until an actual fast-clear to allocate + * it. + */ + if (mt->aux_usage != ISL_AUX_USAGE_CCS_D && + !intel_miptree_alloc_aux(brw, mt)) { intel_miptree_release(&mt); return NULL; } @@ -882,7 +883,12 @@ intel_miptree_create_for_bo(struct brw_context *brw, if (!(flags & MIPTREE_CREATE_NO_AUX)) { intel_miptree_choose_aux_usage(brw, mt); - if (!intel_miptree_alloc_aux(brw, mt)) { + /* Create the auxiliary surface up-front. CCS_D, on the other hand, can + * only compress clear color so we wait until an actual fast-clear to + * allocate it. + */ + if (mt->aux_usage != ISL_AUX_USAGE_CCS_D && + !intel_miptree_alloc_aux(brw, mt)) { intel_miptree_release(&mt); return NULL; } @@ -1776,7 +1782,7 @@ intel_miptree_alloc_mcs(struct brw_context *brw, return true; } -bool +static bool intel_miptree_alloc_ccs(struct brw_context *brw, struct intel_mipmap_tree *mt) { @@ -1897,7 +1903,7 @@ intel_miptree_alloc_hiz(struct brw_context *brw, * create the auxiliary surfaces up-front. CCS_D, on the other hand, can only * compress clear color so we wait until an actual fast-clear to allocate it. */ -static bool +bool intel_miptree_alloc_aux(struct brw_context *brw, struct intel_mipmap_tree *mt) { @@ -1919,11 +1925,6 @@ intel_miptree_alloc_aux(struct brw_context *brw, return true; case ISL_AUX_USAGE_CCS_D: - /* Since CCS_D can only compress clear color so we wait until an actual - * fast-clear to allocate it. - */ - return true; - case ISL_AUX_USAGE_CCS_E: assert(_mesa_is_format_color_format(mt->format)); assert(mt->surf.samples == 1); diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h index 9adcc5ab0c..aa360fcb35 100644 --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.h +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.h @@ -354,7 +354,7 @@ struct intel_mipmap_tree }; bool -intel_miptree_alloc_ccs(struct brw_context *brw, +intel_miptree_alloc_aux(struct brw_context *brw, struct intel_mipmap_tree *mt); enum intel_miptree_create_flags { |