[Mesa-dev] [PATCH] freedreno: actually mark SSBOs as being written

Rob Clark robdclark at gmail.com
Mon Sep 25 16:08:14 UTC 2017


I think this is reasonable in the short term.. and looks like it was
what I intended to do, so:

Reviewed-by: Rob Clark <robdclark at gmail.com>

Doing better would require shuffling things around a bit so we could
look up the shader variant.  Possibly moving some of this bookkeeping
into helper fxns that are called back from per-gen backend would be
better.. idk..

BR,
-R

On Mon, Sep 25, 2017 at 11:15 AM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> We do, based on the program... an ssbo may be marked as readonly. Not
> sure if it's worth-while retrieving that info though.
>
> On Mon, Sep 25, 2017 at 11:12 AM, Tomeu Vizoso
> <tomeu.vizoso at collabora.com> wrote:
>> As the comments say, we don't have a way of knowing for sure that they
>> will be only read, so mark them as written.
>>
>> Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
>> ---
>>  src/gallium/drivers/freedreno/freedreno_draw.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/gallium/drivers/freedreno/freedreno_draw.c b/src/gallium/drivers/freedreno/freedreno_draw.c
>> index f2ccfc585488..fa23a480f25b 100644
>> --- a/src/gallium/drivers/freedreno/freedreno_draw.c
>> +++ b/src/gallium/drivers/freedreno/freedreno_draw.c
>> @@ -163,7 +163,7 @@ fd_draw_vbo(struct pipe_context *pctx, const struct pipe_draw_info *info)
>>          * read vs written, so just assume the worst
>>          */
>>         foreach_bit(i, ctx->shaderbuf[PIPE_SHADER_FRAGMENT].enabled_mask)
>> -               resource_read(batch, ctx->shaderbuf[PIPE_SHADER_FRAGMENT].sb[i].buffer);
>> +               resource_written(batch, ctx->shaderbuf[PIPE_SHADER_FRAGMENT].sb[i].buffer);
>>
>>         foreach_bit(i, ctx->constbuf[PIPE_SHADER_VERTEX].enabled_mask)
>>                 resource_read(batch, ctx->constbuf[PIPE_SHADER_VERTEX].cb[i].buffer);
>> @@ -438,7 +438,7 @@ fd_launch_grid(struct pipe_context *pctx, const struct pipe_grid_info *info)
>>          * read vs written, so just assume the worst
>>          */
>>         foreach_bit(i, ctx->shaderbuf[PIPE_SHADER_COMPUTE].enabled_mask)
>> -               resource_read(batch, ctx->shaderbuf[PIPE_SHADER_COMPUTE].sb[i].buffer);
>> +               resource_written(batch, ctx->shaderbuf[PIPE_SHADER_COMPUTE].sb[i].buffer);
>>
>>         /* UBO's are read */
>>         foreach_bit(i, ctx->constbuf[PIPE_SHADER_COMPUTE].enabled_mask)
>> --
>> 2.13.5
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list