[Mesa-dev] [PATCH v4 5/5] panfrost: Add support for KHR_partial_update()
Boris Brezillon
boris.brezillon at collabora.com
Wed Jun 26 19:33:18 UTC 2019
On Wed, 26 Jun 2019 12:19:28 -0700
Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com> wrote:
> > > > + /* We set the damage extent to the full resource size but keep the
> > > > + * damage box empty so that the FB content is reloaded by default.
> > > > + */
> > >
> > > ....English, please? Francais, s'il te plait? I'm not too familiar with
> > > winsys or the extension -- what's the difference between damage extent
> > > and damage box?
> >
> > Yeah, reading the comment again I realize it's not clear at all. The
> > damage extent is the quad covering all damage rects (even if they don't
> > intersect or only partially intersect). The damage box is actually the
> > biggest damage rect (rect1 in the following example):
> >
> > _______________________
> > | | |
> > |__________ | rect 2 |
> > | | |_________|
> > | rect 1 |______ |
> > | |rect3 | |
> > |_________|______|_____|
> >
> > damage extent
>
> Hmm, ok.
>
> > > If aligning to 32x32 but not 16x16 works, that's probably masking over a
> > > bug somewhere else in the code.
> >
> > I wish I could come with a better explanation, but I couldn't find
> > anything explaining why this alignment is requirement or spot any
> > obvious bugs in the code :-/.
>
> Hmmmm. what was the symptom?
The symptom is, black areas around the damage rect when the rendering
area (the area you define in mali_payload_fragment) is not
32x32-aligned. If you want to test it, remove the "* 2" in the code and
run weston+desktop-shell (the partial_update() logic has been merged
earlier today, so you just have to build master) and start a terminal.
> Also, maybe try with the commit I pushed to
> the `tile-aligned` branch on gitlab.fd.o/alyssa/mesa
Will try it. Thanks.
>
> > Oops, I fear intersection of non-32x32-aligned regions is not safe, it's
> > just that I didn't test this case :-). Note that union would not be
> > a problem here, because the intersection is applied last (just before
> > drawing the wallpaper). That's only true if we assume the intersection
> > func aligns things on 32x32 pixels of course (which is not the case
> > right now).
>
> I'm not sure I follow why the intersection of, say, 16x16 aligned
> regions (that are not also 32x32 aligned) shouldn't work?
I'm not saying it shouldn't work, just saying it doesn't work in
practice :P.
> 16x16 *is* the
> tile size for all intents and purposes here; 32x32 only comes up in
> hierarchical tiling which is irrelevant to this code (and in fact, we
> can disable hierarchical tiling entirely if I need to make my point even
> clearer ;P Just poking fun)
As I said, I wish I had a better understanding of the issue, but that's
not the case :-(.
More information about the mesa-dev
mailing list