[Mesa-dev] [PATCH 6/8] radeonsi: use WRITE_DATA for small glBufferSubData sizes
Marek Olšák
maraeo at gmail.com
Sat Jan 19 01:44:37 UTC 2019
FYI, I'm squashing this patch into patch 8.
Marek
On Fri, Jan 18, 2019 at 8:23 PM Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
wrote:
> Ack, patches 1-6 are
>
> Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
>
> On Sat, Jan 19, 2019 at 2:08 AM Marek Olšák <maraeo at gmail.com> wrote:
> >
> > On Fri, Jan 18, 2019 at 6:05 PM Bas Nieuwenhuizen <
> bas at basnieuwenhuizen.nl> wrote:
> >>
> >> On Fri, Jan 18, 2019 at 5:44 PM Marek Olšák <maraeo at gmail.com> wrote:
> >> >
> >> > From: Marek Olšák <marek.olsak at amd.com>
> >> >
> >> > ---
> >> > src/gallium/drivers/radeonsi/si_buffer.c | 27
> ++++++++++++++++++++++++
> >> > src/gallium/drivers/radeonsi/si_pipe.h | 1 +
> >> > 2 files changed, 28 insertions(+)
> >> >
> >> > diff --git a/src/gallium/drivers/radeonsi/si_buffer.c
> b/src/gallium/drivers/radeonsi/si_buffer.c
> >> > index 4766cf4bdfa..a1e421b8b0d 100644
> >> > --- a/src/gallium/drivers/radeonsi/si_buffer.c
> >> > +++ b/src/gallium/drivers/radeonsi/si_buffer.c
> >> > @@ -16,20 +16,22 @@
> >> > * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
> >> > * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
> >> > * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO
> EVENT SHALL
> >> > * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
> >> > * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR
> >> > * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE
> >> > * USE OR OTHER DEALINGS IN THE SOFTWARE.
> >> > */
> >> >
> >> > #include "radeonsi/si_pipe.h"
> >> > +#include "sid.h"
> >> > +
> >> > #include "util/u_memory.h"
> >> > #include "util/u_upload_mgr.h"
> >> > #include "util/u_transfer.h"
> >> > #include <inttypes.h>
> >> > #include <stdio.h>
> >> >
> >> > bool si_rings_is_buffer_referenced(struct si_context *sctx,
> >> > struct pb_buffer *buf,
> >> > enum radeon_bo_usage usage)
> >> > {
> >> > @@ -506,20 +508,38 @@ static void *si_buffer_transfer_map(struct
> pipe_context *ctx,
> >> > data = si_buffer_map_sync_with_rings(sctx, rbuffer, usage);
> >> > if (!data) {
> >> > return NULL;
> >> > }
> >> > data += box->x;
> >> >
> >> > return si_buffer_get_transfer(ctx, resource, usage, box,
> >> > ptransfer, data, NULL, 0);
> >> > }
> >> >
> >> > +static void si_buffer_write_data(struct si_context *sctx, struct
> r600_resource *buf,
> >> > + unsigned offset, unsigned size,
> const void *data)
> >> > +{
> >> > + struct radeon_cmdbuf *cs = sctx->gfx_cs;
> >> > +
> >> > + si_need_gfx_cs_space(sctx);
> >> > +
> >> > + sctx->flags |= SI_CONTEXT_PS_PARTIAL_FLUSH |
> >> > + SI_CONTEXT_CS_PARTIAL_FLUSH |
> >> > + si_get_flush_flags(sctx, SI_COHERENCY_SHADER,
> L2_LRU);
> >> > + si_emit_cache_flush(sctx);
> >>
> >> Maybe only do the cache flush if the buffer is referenced by the
> >> current cmd buffer?
> >
> >
> > We can't do that, because 2 consecutive IBs can execute simultaneously
> for a moment.
> >
> > Marek
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190118/678133f5/attachment-0001.html>
More information about the mesa-dev
mailing list