[Mesa-dev] [PATCH] anv/blorp: sample input attachments with resolves on BDW
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Wed Mar 22 14:38:38 UTC 2017
On Tue, 2017-03-21 at 16:34 +0100, Samuel Iglesias Gonsálvez wrote:
>
> On 21/03/17 16:14, Jason Ekstrand wrote:
> > On Tue, Mar 21, 2017 at 7:23 AM, Samuel Iglesias Gonsálvez
> > <siglesias at igalia.com <mailto:siglesias at igalia.com>> wrote:
> >
> > Input attachments are clear-color aware on Sky Lake, so we
> > can frequently sample from them with no resolves at all.
> > However
> > on Broadwell we still need to do a a resolve between the
> > subpass
> > that writes and the subpass that reads.
> >
> >
> > In theory, we shouldn't always need to do a resolve. Broadwell is
> > supposed (maybe it doesn't work?) to support sampling from fast-
> > cleared
> > buffers and I thought it was hooked up correctly. Is this only an
> > issue
> > for certain clear colors? I have a feeling there's something more
> > subtle going on here.
> >
>
> OK, I will investigate further.
>
The value of the clear colors is irrelevant except if the image's clear
color is the same than attachment's clear color, probably
because sampling from fast-cleared buffers is not working and it has
already the clear color it expects. Once they are different, the tests
always fail.
However, I think I have found something:
According to BDW PRM, vol02d, RenderSurface::Auxiliary Surface Mode,
the only available values are AUX_NONE (0x0), AUX_MCS (0x1),
AUX_APPEND (0x2), AUX_HIZ (0x3), the rest are reserved.
AUX_MCS is only if the Auxiliary surface is an MCS (Multisample Control
Surface). This is different in gen9+: set the mode to AUX_CCS_D (0x1)
when the Auxiliary surface is a CCS (Color Control Surface) with
compression disabled or an MCS with compression enabled, depending on
Number of Multisamples.
Inside color_attachment_compute_aux_usage() we are setting both aux
surface usage and input aux usage to ISL_AUX_USAGE_CCS_D for BDW, but I
think we need to do it only if it is a MCS (maybe set both to
ISL_AUX_USAGE_MCS would be better?) and, if not, set the latter to
ISL_AUX_USAGE_NONE in order to force the resolve in
ccs_resolve_attachment() (see the first else-if of this patch).
What do you think?
Sam
>
> >
> > Fixes 16 tests on BDW:
> >
> > dEQP-VK.renderpass.formats.*.input.clear.store.self_dep*
> >
> > Signed-off-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com
> > <mailto:siglesias at igalia.com>>
> > ---
> > src/intel/vulkan/anv_blorp.c | 9 ++++++---
> > 1 file changed, 6 insertions(+), 3 deletions(-)
> >
> > diff --git a/src/intel/vulkan/anv_blorp.c
> > b/src/intel/vulkan/anv_blorp.c
> > index 1f4fec5f35b..2fa56f49d18 100644
> > --- a/src/intel/vulkan/anv_blorp.c
> > +++ b/src/intel/vulkan/anv_blorp.c
> > @@ -1504,10 +1504,13 @@ ccs_resolve_attachment(struct
> > anv_cmd_buffer
> > *cmd_buffer,
> > */
> > }
> > } else if (usage & ANV_SUBPASS_USAGE_INPUT) {
> > - /* Input attachments are clear-color aware so, at least
> > on
> > Sky Lake, we
> > - * can frequently sample from them with no resolves at
> > all.
> > + /* Input attachments are clear-color aware on Sky Lake,
> > so we
> > + * can frequently sample from them with no resolves at
> > all.
> > However
> > + * on Broadwell we still need to do resolves.
> > */
> > - if (att_state->aux_usage != att_state->input_aux_usage)
> > {
> > + if (cmd_buffer->device->info.gen < 9) {
> > + resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_FULL;
> > + } else if (att_state->aux_usage != att_state-
> > >input_aux_usage) {
> > assert(att_state->input_aux_usage ==
> > ISL_AUX_USAGE_NONE);
> > resolve_op = BLORP_FAST_CLEAR_OP_RESOLVE_FULL;
> > } else if (!att_state->clear_color_is_zero_one) {
> > --
> > 2.11.0
> >
> >
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170322/147b72e9/attachment.sig>
More information about the mesa-dev
mailing list