Re: [Mesa-dev] [PATCH] r600g/radeonsi: Map transfer staging texture unsynchronized when possible
On 15.04.2014 19:40, Marek Olšák wrote: > The staging texture should always be idle, so I guess this just skips > the needless GEM_WAIT_IDLE call? Yes, exactly. Apparently that can incur a significant cost in some cases. > Reviewed-by: Marek Olšák Thank you, pushed. -- Earthling Michel Dänzer| http://www.amd.com Libre software enthusiast |Mesa and X developer ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] r600g/radeonsi: Map transfer staging texture unsynchronized when possible
The staging texture should always be idle, so I guess this just skips the needless GEM_WAIT_IDLE call? Reviewed-by: Marek Olšák Marek On Tue, Apr 15, 2014 at 7:46 AM, Michel Dänzer wrote: > From: Michel Dänzer > > The transfer staging texture is always freshly allocated, so for write-only > transfers we don't need to explicitly wait for the BO to become idle. > > Squeezes a few hundered MB/s more out of x11perf -shmput500 with glamor. > > Signed-off-by: Michel Dänzer > --- > src/gallium/drivers/radeon/r600_texture.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/src/gallium/drivers/radeon/r600_texture.c > b/src/gallium/drivers/radeon/r600_texture.c > index 293eeaa..c410543 100644 > --- a/src/gallium/drivers/radeon/r600_texture.c > +++ b/src/gallium/drivers/radeon/r600_texture.c > @@ -1039,6 +1039,8 @@ static void *r600_texture_transfer_map(struct > pipe_context *ctx, > > if (trans->staging) { > buf = trans->staging; > + if (!rtex->is_depth && !(usage & PIPE_TRANSFER_READ)) > + usage |= PIPE_TRANSFER_UNSYNCHRONIZED; > } else { > buf = &rtex->resource; > } > -- > 1.9.0 > > ___ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] r600g/radeonsi: Map transfer staging texture unsynchronized when possible
From: Michel Dänzer The transfer staging texture is always freshly allocated, so for write-only transfers we don't need to explicitly wait for the BO to become idle. Squeezes a few hundered MB/s more out of x11perf -shmput500 with glamor. Signed-off-by: Michel Dänzer --- src/gallium/drivers/radeon/r600_texture.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/radeon/r600_texture.c b/src/gallium/drivers/radeon/r600_texture.c index 293eeaa..c410543 100644 --- a/src/gallium/drivers/radeon/r600_texture.c +++ b/src/gallium/drivers/radeon/r600_texture.c @@ -1039,6 +1039,8 @@ static void *r600_texture_transfer_map(struct pipe_context *ctx, if (trans->staging) { buf = trans->staging; + if (!rtex->is_depth && !(usage & PIPE_TRANSFER_READ)) + usage |= PIPE_TRANSFER_UNSYNCHRONIZED; } else { buf = &rtex->resource; } -- 1.9.0 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev