Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Wed, Jun 19, 2019 at 4:42 AM Thomas Hellström (VMware) < tho...@shipmail.org> wrote: > From: Thomas Hellstrom <thellst...@vmware.com> > > For svga, the use of persistent / coherent maps is typically slightly > slower than without them. It's probably a bit case-dependent and > possible to tune, but for now, make sure we can disable those. > > Signed-off-by: Thomas Hellstrom <thellst...@vmware.com> > Reviewed-by: Brian Paul <bri...@vmware.com> > --- > src/gallium/auxiliary/util/u_upload_mgr.c | 14 ++++++++++++-- > src/gallium/auxiliary/util/u_upload_mgr.h | 4 ++++ > 2 files changed, 16 insertions(+), 2 deletions(-) > > diff --git a/src/gallium/auxiliary/util/u_upload_mgr.c > b/src/gallium/auxiliary/util/u_upload_mgr.c > index c2c0ba957e3..73f6cae0b6d 100644 > --- a/src/gallium/auxiliary/util/u_upload_mgr.c > +++ b/src/gallium/auxiliary/util/u_upload_mgr.c > @@ -106,8 +106,10 @@ u_upload_clone(struct pipe_context *pipe, struct > u_upload_mgr *upload) > struct u_upload_mgr *result = u_upload_create(pipe, > upload->default_size, > upload->bind, > upload->usage, > upload->flags); > - if (upload->map_persistent && > - upload->map_flags & PIPE_TRANSFER_FLUSH_EXPLICIT) > + if (!upload->map_persistent && result->map_persistent) > + u_upload_disable_persistent(result); > + else if (upload->map_persistent && > + upload->map_flags & PIPE_TRANSFER_FLUSH_EXPLICIT) > u_upload_enable_flush_explicit(result); > > return result; > @@ -121,6 +123,14 @@ u_upload_enable_flush_explicit(struct u_upload_mgr > *upload) > upload->map_flags |= PIPE_TRANSFER_FLUSH_EXPLICIT; > } > > +void > +u_upload_disable_persistent(struct u_upload_mgr *upload) > +{ > + upload->map_persistent = FALSE; > + upload->map_flags &= ~(PIPE_TRANSFER_COHERENT | > PIPE_TRANSFER_PERSISTENT); > + upload->map_flags |= PIPE_TRANSFER_FLUSH_EXPLICIT; > +} > + > static void > upload_unmap_internal(struct u_upload_mgr *upload, boolean destroying) > { > diff --git a/src/gallium/auxiliary/util/u_upload_mgr.h > b/src/gallium/auxiliary/util/u_upload_mgr.h > index 80832016272..6a4a60963fe 100644 > --- a/src/gallium/auxiliary/util/u_upload_mgr.h > +++ b/src/gallium/auxiliary/util/u_upload_mgr.h > @@ -73,6 +73,10 @@ u_upload_clone(struct pipe_context *pipe, struct > u_upload_mgr *upload); > void > u_upload_enable_flush_explicit(struct u_upload_mgr *upload); > > +/** Whether to avoid persistent mappings where available */ > +void > +u_upload_disable_persistent(struct u_upload_mgr *upload); > + > /** > * Destroy the upload manager. > */ > -- > 2.20.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev