On Mon, Nov 13, 2017 at 08:12:50AM -0800, Jason Ekstrand wrote: > The only reason why we needed that version was because the Vulkan driver > needed to be able to create the surface states so it could handle > indirect clear colors. Now that blorp handles them natively, there's no > need for the extra entrypoint. > --- > src/intel/blorp/blorp.h | 11 ------- > src/intel/blorp/blorp_clear.c | 70 > +++++++++++++------------------------------ > 2 files changed, 20 insertions(+), 61 deletions(-) >
This patch is Reviewed-by: Nanley Chery <nanley.g.ch...@intel.com> > diff --git a/src/intel/blorp/blorp.h b/src/intel/blorp/blorp.h > index 690e65f..a95b6a7 100644 > --- a/src/intel/blorp/blorp.h > +++ b/src/intel/blorp/blorp.h > @@ -207,17 +207,6 @@ blorp_ccs_resolve(struct blorp_batch *batch, > enum isl_format format, > enum blorp_fast_clear_op resolve_op); > > -/* Resolves subresources of the image subresource range specified in the > - * binding table. > - */ > -void > -blorp_ccs_resolve_attachment(struct blorp_batch *batch, > - const uint32_t binding_table_offset, > - struct blorp_surf * const surf, > - const uint32_t level, const uint32_t num_layers, > - const enum isl_format format, > - const enum blorp_fast_clear_op resolve_op); > - > void > blorp_mcs_partial_resolve(struct blorp_batch *batch, > struct blorp_surf *surf, > diff --git a/src/intel/blorp/blorp_clear.c b/src/intel/blorp/blorp_clear.c > index 56cc3dd..8e7bc9f 100644 > --- a/src/intel/blorp/blorp_clear.c > +++ b/src/intel/blorp/blorp_clear.c > @@ -715,17 +715,18 @@ blorp_clear_attachments(struct blorp_batch *batch, > batch->blorp->exec(batch, ¶ms); > } > > -static void > -prepare_ccs_resolve(struct blorp_batch * const batch, > - struct blorp_params * const params, > - const struct blorp_surf * const surf, > - const uint32_t level, const uint32_t layer, > - const enum isl_format format, > - const enum blorp_fast_clear_op resolve_op) > +void > +blorp_ccs_resolve(struct blorp_batch *batch, > + struct blorp_surf *surf, uint32_t level, > + uint32_t start_layer, uint32_t num_layers, > + enum isl_format format, > + enum blorp_fast_clear_op resolve_op) > { > - blorp_params_init(params); > - brw_blorp_surface_info_init(batch->blorp, ¶ms->dst, surf, > - level, layer, format, true); > + struct blorp_params params; > + > + blorp_params_init(¶ms); > + brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, > + level, start_layer, format, true); > > /* From the Ivy Bridge PRM, Vol2 Part1 11.9 "Render Target Resolve": > * > @@ -737,7 +738,7 @@ prepare_ccs_resolve(struct blorp_batch * const batch, > * multiply by 8 and 16. On Sky Lake, we multiply by 8. > */ > const struct isl_format_layout *aux_fmtl = > - isl_format_get_layout(params->dst.aux_surf.format); > + isl_format_get_layout(params.dst.aux_surf.format); > assert(aux_fmtl->txc == ISL_TXC_CCS); > > unsigned x_scaledown, y_scaledown; > @@ -751,11 +752,11 @@ prepare_ccs_resolve(struct blorp_batch * const batch, > x_scaledown = aux_fmtl->bw / 2; > y_scaledown = aux_fmtl->bh / 2; > } > - params->x0 = params->y0 = 0; > - params->x1 = minify(params->dst.aux_surf.logical_level0_px.width, level); > - params->y1 = minify(params->dst.aux_surf.logical_level0_px.height, level); > - params->x1 = ALIGN(params->x1, x_scaledown) / x_scaledown; > - params->y1 = ALIGN(params->y1, y_scaledown) / y_scaledown; > + params.x0 = params.y0 = 0; > + params.x1 = minify(params.dst.aux_surf.logical_level0_px.width, level); > + params.y1 = minify(params.dst.aux_surf.logical_level0_px.height, level); > + params.x1 = ALIGN(params.x1, x_scaledown) / x_scaledown; > + params.y1 = ALIGN(params.y1, y_scaledown) / y_scaledown; > > if (batch->blorp->isl_dev->info->gen >= 9) { > assert(resolve_op == BLORP_FAST_CLEAR_OP_RESOLVE_FULL || > @@ -764,7 +765,8 @@ prepare_ccs_resolve(struct blorp_batch * const batch, > /* Broadwell and earlier do not have a partial resolve */ > assert(resolve_op == BLORP_FAST_CLEAR_OP_RESOLVE_FULL); > } > - params->fast_clear_op = resolve_op; > + params.fast_clear_op = resolve_op; > + params.num_layers = num_layers; > > /* Note: there is no need to initialize push constants because it doesn't > * matter what data gets dispatched to the render target. However, we > must > @@ -772,40 +774,8 @@ prepare_ccs_resolve(struct blorp_batch * const batch, > * color" message. > */ > > - if (!blorp_params_get_clear_kernel(batch->blorp, params, true)) > + if (!blorp_params_get_clear_kernel(batch->blorp, ¶ms, true)) > return; > -} > - > -void > -blorp_ccs_resolve(struct blorp_batch *batch, > - struct blorp_surf *surf, uint32_t level, > - uint32_t start_layer, uint32_t num_layers, > - enum isl_format format, > - enum blorp_fast_clear_op resolve_op) > -{ > - struct blorp_params params; > - > - prepare_ccs_resolve(batch, ¶ms, surf, level, start_layer, > - format, resolve_op); > - params.num_layers = num_layers; > - > - batch->blorp->exec(batch, ¶ms); > -} > - > -void > -blorp_ccs_resolve_attachment(struct blorp_batch *batch, > - const uint32_t binding_table_offset, > - struct blorp_surf * const surf, > - const uint32_t level, const uint32_t num_layers, > - const enum isl_format format, > - const enum blorp_fast_clear_op resolve_op) > -{ > - struct blorp_params params; > - > - prepare_ccs_resolve(batch, ¶ms, surf, level, 0, format, resolve_op); > - params.use_pre_baked_binding_table = true; > - params.pre_baked_binding_table_offset = binding_table_offset; > - params.num_layers = num_layers; > > batch->blorp->exec(batch, ¶ms); > } > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev