[Mesa-dev] [PATCH 25/27] i965: Use partial resolves for CCS buffers being scanned out
Pohjolainen, Topi
topi.pohjolainen at gmail.com
Sat Dec 10 14:24:46 UTC 2016
On Thu, Dec 01, 2016 at 02:10:06PM -0800, Ben Widawsky wrote:
> From: Ben Widawsky <ben at bwidawsk.net>
>
> On Gen9 hardware, the display engine is able to scanout a compressed
> framebuffer by providing an offset to auxiliary compression information.
> Unfortunately, the hardware is incapable of doing the same thing for the
> fast clear color.
>
> To mitigate this, the hardware introduced a new resolve type called a
> partial resolve. The partial resolve will only do a resolve of the fast
> clear color and leave the rest of the compressed data alone.
>
> This patch enables using this resolve type for cases where the
> framebuffer will be passed along to the kernel for display.
>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
> ---
> src/mesa/drivers/dri/i965/brw_context.c | 3 ++-
> src/mesa/drivers/dri/i965/intel_mipmap_tree.c | 4 ++--
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
> index cfd7a54..2bc2e94 100644
> --- a/src/mesa/drivers/dri/i965/brw_context.c
> +++ b/src/mesa/drivers/dri/i965/brw_context.c
> @@ -1359,7 +1359,8 @@ intel_resolve_for_dri2_flush(struct brw_context *brw,
> if (rb->mt->num_samples <= 1) {
> assert(rb->mt_layer == 0 && rb->mt_level == 0 &&
> rb->layer_count == 1);
> - intel_miptree_resolve_color(brw, rb->mt, 0, 0, 1, 0);
I'm now in a territory that I don't know that well and just need to ask
random questions. How do we know this is destined for display directly and not
for non-gpu compositing?
> + intel_miptree_resolve_color(brw, rb->mt, 0, 0, 1,
> + INTEL_RESOLVE_HINT_CLEAR_COLOR);
> } else {
> intel_renderbuffer_downsample(brw, rb);
> }
> diff --git a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> index dd71a06..b79de08 100644
> --- a/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> +++ b/src/mesa/drivers/dri/i965/intel_mipmap_tree.c
> @@ -2399,8 +2399,8 @@ intel_miptree_make_shareable(struct brw_context *brw,
> assert(mt->msaa_layout == INTEL_MSAA_LAYOUT_NONE || mt->num_samples <= 1);
>
> if (mt->mcs_buf) {
Shouldn't we here at least check for scanout?
> - intel_miptree_all_slices_resolve_color(brw, mt, 0);
> - mt->no_ccs = true;
> + intel_miptree_all_slices_resolve_color(brw, mt,
> + INTEL_RESOLVE_HINT_CLEAR_COLOR);
> }
> }
>
> --
> 2.10.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list