From: Jason Ekstrand Date: Fri, 19 Aug 2016 10:49:45 +0000 (-0700) Subject: i965: Roll brw_get_ccs_resolve_rect into blorp_ccs_resolve X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c8ff36228d6f5d48f700437e4a5520d8b6de13ab;p=mesa.git i965: Roll brw_get_ccs_resolve_rect into blorp_ccs_resolve Signed-off-by: Jason Ekstrand Reviewed-by: Topi Pohjolainen --- diff --git a/src/mesa/drivers/dri/i965/blorp_clear.c b/src/mesa/drivers/dri/i965/blorp_clear.c index 9f57d9a7775..60e40e9771e 100644 --- a/src/mesa/drivers/dri/i965/blorp_clear.c +++ b/src/mesa/drivers/dri/i965/blorp_clear.c @@ -171,9 +171,35 @@ brw_blorp_ccs_resolve(struct blorp_batch *batch, brw_blorp_surface_info_init(batch->blorp, ¶ms.dst, surf, 0 /* level */, 0 /* layer */, format, true); - brw_get_ccs_resolve_rect(batch->blorp->isl_dev, ¶ms.dst.aux_surf, - ¶ms.x0, ¶ms.y0, - ¶ms.x1, ¶ms.y1); + /* From the Ivy Bridge PRM, Vol2 Part1 11.9 "Render Target Resolve": + * + * A rectangle primitive must be scaled down by the following factors + * with respect to render target being resolved. + * + * The scaledown factors in the table that follows are related to the block + * size of the CCS format. For IVB and HSW, we divide by two, for BDW we + * 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); + assert(aux_fmtl->txc == ISL_TXC_CCS); + + unsigned x_scaledown, y_scaledown; + if (ISL_DEV_GEN(batch->blorp->isl_dev) >= 9) { + x_scaledown = aux_fmtl->bw * 8; + y_scaledown = aux_fmtl->bh * 8; + } else if (ISL_DEV_GEN(batch->blorp->isl_dev) >= 8) { + x_scaledown = aux_fmtl->bw * 8; + y_scaledown = aux_fmtl->bh * 16; + } else { + x_scaledown = aux_fmtl->bw / 2; + y_scaledown = aux_fmtl->bh / 2; + } + params.x0 = params.y0 = 0; + params.x1 = params.dst.aux_surf.logical_level0_px.width; + params.y1 = params.dst.aux_surf.logical_level0_px.height; + 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) { if (params.dst.aux_usage == ISL_AUX_USAGE_CCS_E) diff --git a/src/mesa/drivers/dri/i965/brw_meta_util.c b/src/mesa/drivers/dri/i965/brw_meta_util.c index bc3a62d6319..52b7be4b693 100644 --- a/src/mesa/drivers/dri/i965/brw_meta_util.c +++ b/src/mesa/drivers/dri/i965/brw_meta_util.c @@ -563,39 +563,3 @@ brw_get_fast_clear_rect(const struct isl_device *dev, *x1 = ALIGN(*x1, x_align) / x_scaledown; *y1 = ALIGN(*y1, y_align) / y_scaledown; } - -void -brw_get_ccs_resolve_rect(const struct isl_device *dev, - const struct isl_surf *ccs_surf, - unsigned *x0, unsigned *y0, - unsigned *x1, unsigned *y1) -{ - unsigned x_scaledown, y_scaledown; - - /* From the Ivy Bridge PRM, Vol2 Part1 11.9 "Render Target Resolve": - * - * A rectangle primitive must be scaled down by the following factors - * with respect to render target being resolved. - * - * The scaledown factors in the table that follows are related to the block - * size of the CCS format. For IVB and HSW, we divide by two, for BDW we - * multiply by 8 and 16. On Sky Lake, we multiply by 8. - */ - const struct isl_format_layout *fmtl = - isl_format_get_layout(ccs_surf->format); - assert(fmtl->txc == ISL_TXC_CCS); - - if (ISL_DEV_GEN(dev) >= 9) { - x_scaledown = fmtl->bw * 8; - y_scaledown = fmtl->bh * 8; - } else if (ISL_DEV_GEN(dev) >= 8) { - x_scaledown = fmtl->bw * 8; - y_scaledown = fmtl->bh * 16; - } else { - x_scaledown = fmtl->bw / 2; - y_scaledown = fmtl->bh / 2; - } - *x0 = *y0 = 0; - *x1 = ALIGN(ccs_surf->logical_level0_px.width, x_scaledown) / x_scaledown; - *y1 = ALIGN(ccs_surf->logical_level0_px.height, y_scaledown) / y_scaledown; -} diff --git a/src/mesa/drivers/dri/i965/brw_meta_util.h b/src/mesa/drivers/dri/i965/brw_meta_util.h index 79a777f991b..d5172373331 100644 --- a/src/mesa/drivers/dri/i965/brw_meta_util.h +++ b/src/mesa/drivers/dri/i965/brw_meta_util.h @@ -48,12 +48,6 @@ brw_get_fast_clear_rect(const struct isl_device *dev, unsigned *x0, unsigned *y0, unsigned *x1, unsigned *y1); -void -brw_get_ccs_resolve_rect(const struct isl_device *dev, - const struct isl_surf *ccs_surf, - unsigned *x0, unsigned *y0, - unsigned *x1, unsigned *y1); - bool brw_meta_set_fast_clear_color(struct brw_context *brw, struct intel_mipmap_tree *mt,