[Mesa-dev] [PATCH (9.1)] Revert "r600g: re-enable handling of DISCARD_RANGE, improving performance"

Aaron Watry awatry at gmail.com
Wed Feb 20 17:22:32 PST 2013


I've managed to capture a trace that loads TF2 to the menu and reproduces
some of the flickering.  I haven't managed to capture any gameplay yet due
to an error in CD Key authentication due to how I'm launching the game.

URL:
http://www.watrys.net/tf2_menu.trace.xz

--Aaron


On Wed, Feb 20, 2013 at 1:33 PM, Marek Olšák <maraeo at gmail.com> wrote:

> Well, I really wonder why it doesn't work with TF2. We have a lot of
> piglit tests for DISCARD_RANGE (AKA INVALIDATE_RANGE in GL) and the
> copy-buffer functionality and they all pass. There are actually 3
> different implementations of copy-buffer: streamout, CP DMA, and async
> DMA. It's highly unlikely that all 3 would be broken in the same way.
> Other apps like openra also draw their GUI while using DISCARD_RANGE
> to discard old data and there is no issue.
>
> I need an apitrace to debug this. I wouldn't like to disable
> DISCARD_RANGE just because of TF2, because everything else seems to be
> working without any issues and because the performance regression can
> turn out to be a show-stopper for some other apps.
>
> Marek
>
> On Sun, Feb 17, 2013 at 6:25 PM, Andreas Boll
> <andreas.boll.dev at gmail.com> wrote:
> > This reverts commit 1eedebc65b02130ef7a27062a1ed67972a317a08.
> >
> > Until we have a proper fix disable DISCARD_RANGE for now.
> > It fixes the garbled ui in TF2.
> >
> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58042
> >
> > Cc: Marek Olšák <maraeo at gmail.com>
> > ---
> >  src/gallium/drivers/r600/r600_buffer.c |    2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/src/gallium/drivers/r600/r600_buffer.c
> b/src/gallium/drivers/r600/r600_buffer.c
> > index 6df0d91..82630af 100644
> > --- a/src/gallium/drivers/r600/r600_buffer.c
> > +++ b/src/gallium/drivers/r600/r600_buffer.c
> > @@ -137,6 +137,7 @@ static void *r600_buffer_transfer_map(struct
> pipe_context *ctx,
> >                         r600_set_constants_dirty_if_bound(rctx, rbuffer);
> >                 }
> >         }
> > +#if 0 /* this is broken (see Bug 53130) */
> >         else if ((usage & PIPE_TRANSFER_DISCARD_RANGE) &&
> >                  !(usage & PIPE_TRANSFER_UNSYNCHRONIZED) &&
> >                  rctx->screen->has_streamout &&
> > @@ -161,6 +162,7 @@ static void *r600_buffer_transfer_map(struct
> pipe_context *ctx,
> >                         }
> >                 }
> >         }
> > +#endif
> >
> >         /* mmap and synchronize with rings */
> >         data = r600_buffer_mmap_sync_with_rings(rctx, rbuffer, usage);
> > --
> > 1.7.10.4
> >
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130220/368b3a22/attachment.html>


More information about the mesa-dev mailing list