Re: [Mesa-dev] [PATCH 08/11] radeonsi: fix memory exhaustion issue with DCC statistics gathering with DRI2

2018-06-29 Thread Dylan Baker
Quoting Marek Olšák (2018-06-29 09:48:08)
> On Fri, Jun 29, 2018 at 11:40 AM, Dylan Baker  wrote:
> > Quoting Marek Olšák (2018-06-18 16:33:09)
> >> From: Marek Olšák 
> >>
> >> Cc: 18.1 
> >> ---
> >>  src/gallium/drivers/radeonsi/si_blit.c | 30 +++---
> >>  1 file changed, 27 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/src/gallium/drivers/radeonsi/si_blit.c 
> >> b/src/gallium/drivers/radeonsi/si_blit.c
> >> index fe059b36577..93cf7fe9001 100644
> >> --- a/src/gallium/drivers/radeonsi/si_blit.c
> >> +++ b/src/gallium/drivers/radeonsi/si_blit.c
> >> @@ -1320,23 +1320,47 @@ static void si_flush_resource(struct pipe_context 
> >> *ctx,
> >> if (rtex->dcc_separate_buffer && !rtex->separate_dcc_dirty)
> >> return;
> >>
> >> if (!rtex->is_depth && (rtex->cmask.size || rtex->dcc_offset)) {
> >> si_blit_decompress_color(sctx, rtex, 0, res->last_level,
> >>  0, util_max_layer(res, 0),
> >>  rtex->dcc_separate_buffer != 
> >> NULL);
> >> }
> >>
> >> /* Always do the analysis even if DCC is disabled at the moment. */
> >> -   if (rtex->dcc_gather_statistics && rtex->separate_dcc_dirty) {
> >> -   rtex->separate_dcc_dirty = false;
> >> -   vi_separate_dcc_process_and_reset_stats(ctx, rtex);
> >> +   if (rtex->dcc_gather_statistics) {
> >> +   bool separate_dcc_dirty = rtex->separate_dcc_dirty;
> >> +
> >> +   /* If the color buffer hasn't been unbound and fast clear 
> >> hasn't
> >> +* been used, separate_dcc_dirty is false, but there may 
> >> have been
> >> +* new rendering. Check if the color buffer is bound and 
> >> assume
> >> +* it's dirty.
> >> +*
> >> +* Note that DRI2 never unbinds window colorbuffers, which 
> >> means
> >> +* the DCC pipeline statistics query would never be re-set 
> >> and would
> >> +* keep adding new results until all free memory is 
> >> exhausted if we
> >> +* didn't do this.
> >> +*/
> >> +   if (!separate_dcc_dirty) {
> >> +   for (unsigned i = 0; i < 
> >> sctx->framebuffer.state.nr_cbufs; i++) {
> >> +   if (sctx->framebuffer.state.cbufs[i] &&
> >> +   
> >> sctx->framebuffer.state.cbufs[i]->texture == res) {
> >> +   separate_dcc_dirty = true;
> >> +   break;
> >> +   }
> >> +   }
> >> +   }
> >> +
> >> +   if (separate_dcc_dirty) {
> >> +   rtex->separate_dcc_dirty = false;
> >> +   vi_separate_dcc_process_and_reset_stats(ctx, rtex);
> >> +   }
> >> }
> >>  }
> >>
> >>  void si_decompress_dcc(struct si_context *sctx, struct r600_texture *rtex)
> >>  {
> >> if (!rtex->dcc_offset)
> >> return;
> >>
> >> si_blit_decompress_color(sctx, rtex, 0, 
> >> rtex->buffer.b.b.last_level,
> >>  0, util_max_layer(&rtex->buffer.b.b, 0),
> >> --
> >> 2.17.1
> >>
> >> ___
> >> mesa-dev mailing list
> >> mesa-dev@lists.freedesktop.org
> >> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> >
> > Hi Marek,
> >
> > This didn't apply cleanly to 18.1 because of
> > 1ba87f4438069964af6548f4fa05386be999f4de (radeonsi: rename r600_texture ->
> > si_texture, rxxx -> xxx or sxxx), I've attempted to rebase the commit by
> > changing "tex" to "rtex", please take a look at the commit in staging/18.1 
> > in
> > the main tree or 18.1-proposed in my tree and let me know if it looks good 
> > to
> > you.
> 
> Yes, it looks good. Thanks.
> 
> Marek

Thank you.


signature.asc
Description: signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 08/11] radeonsi: fix memory exhaustion issue with DCC statistics gathering with DRI2

2018-06-29 Thread Marek Olšák
On Fri, Jun 29, 2018 at 11:40 AM, Dylan Baker  wrote:
> Quoting Marek Olšák (2018-06-18 16:33:09)
>> From: Marek Olšák 
>>
>> Cc: 18.1 
>> ---
>>  src/gallium/drivers/radeonsi/si_blit.c | 30 +++---
>>  1 file changed, 27 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/gallium/drivers/radeonsi/si_blit.c 
>> b/src/gallium/drivers/radeonsi/si_blit.c
>> index fe059b36577..93cf7fe9001 100644
>> --- a/src/gallium/drivers/radeonsi/si_blit.c
>> +++ b/src/gallium/drivers/radeonsi/si_blit.c
>> @@ -1320,23 +1320,47 @@ static void si_flush_resource(struct pipe_context 
>> *ctx,
>> if (rtex->dcc_separate_buffer && !rtex->separate_dcc_dirty)
>> return;
>>
>> if (!rtex->is_depth && (rtex->cmask.size || rtex->dcc_offset)) {
>> si_blit_decompress_color(sctx, rtex, 0, res->last_level,
>>  0, util_max_layer(res, 0),
>>  rtex->dcc_separate_buffer != NULL);
>> }
>>
>> /* Always do the analysis even if DCC is disabled at the moment. */
>> -   if (rtex->dcc_gather_statistics && rtex->separate_dcc_dirty) {
>> -   rtex->separate_dcc_dirty = false;
>> -   vi_separate_dcc_process_and_reset_stats(ctx, rtex);
>> +   if (rtex->dcc_gather_statistics) {
>> +   bool separate_dcc_dirty = rtex->separate_dcc_dirty;
>> +
>> +   /* If the color buffer hasn't been unbound and fast clear 
>> hasn't
>> +* been used, separate_dcc_dirty is false, but there may 
>> have been
>> +* new rendering. Check if the color buffer is bound and 
>> assume
>> +* it's dirty.
>> +*
>> +* Note that DRI2 never unbinds window colorbuffers, which 
>> means
>> +* the DCC pipeline statistics query would never be re-set 
>> and would
>> +* keep adding new results until all free memory is 
>> exhausted if we
>> +* didn't do this.
>> +*/
>> +   if (!separate_dcc_dirty) {
>> +   for (unsigned i = 0; i < 
>> sctx->framebuffer.state.nr_cbufs; i++) {
>> +   if (sctx->framebuffer.state.cbufs[i] &&
>> +   
>> sctx->framebuffer.state.cbufs[i]->texture == res) {
>> +   separate_dcc_dirty = true;
>> +   break;
>> +   }
>> +   }
>> +   }
>> +
>> +   if (separate_dcc_dirty) {
>> +   rtex->separate_dcc_dirty = false;
>> +   vi_separate_dcc_process_and_reset_stats(ctx, rtex);
>> +   }
>> }
>>  }
>>
>>  void si_decompress_dcc(struct si_context *sctx, struct r600_texture *rtex)
>>  {
>> if (!rtex->dcc_offset)
>> return;
>>
>> si_blit_decompress_color(sctx, rtex, 0, rtex->buffer.b.b.last_level,
>>  0, util_max_layer(&rtex->buffer.b.b, 0),
>> --
>> 2.17.1
>>
>> ___
>> mesa-dev mailing list
>> mesa-dev@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
> Hi Marek,
>
> This didn't apply cleanly to 18.1 because of
> 1ba87f4438069964af6548f4fa05386be999f4de (radeonsi: rename r600_texture ->
> si_texture, rxxx -> xxx or sxxx), I've attempted to rebase the commit by
> changing "tex" to "rtex", please take a look at the commit in staging/18.1 in
> the main tree or 18.1-proposed in my tree and let me know if it looks good to
> you.

Yes, it looks good. Thanks.

Marek
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 08/11] radeonsi: fix memory exhaustion issue with DCC statistics gathering with DRI2

2018-06-29 Thread Dylan Baker
Quoting Marek Olšák (2018-06-18 16:33:09)
> From: Marek Olšák 
> 
> Cc: 18.1 
> ---
>  src/gallium/drivers/radeonsi/si_blit.c | 30 +++---
>  1 file changed, 27 insertions(+), 3 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeonsi/si_blit.c 
> b/src/gallium/drivers/radeonsi/si_blit.c
> index fe059b36577..93cf7fe9001 100644
> --- a/src/gallium/drivers/radeonsi/si_blit.c
> +++ b/src/gallium/drivers/radeonsi/si_blit.c
> @@ -1320,23 +1320,47 @@ static void si_flush_resource(struct pipe_context 
> *ctx,
> if (rtex->dcc_separate_buffer && !rtex->separate_dcc_dirty)
> return;
>  
> if (!rtex->is_depth && (rtex->cmask.size || rtex->dcc_offset)) {
> si_blit_decompress_color(sctx, rtex, 0, res->last_level,
>  0, util_max_layer(res, 0),
>  rtex->dcc_separate_buffer != NULL);
> }
>  
> /* Always do the analysis even if DCC is disabled at the moment. */
> -   if (rtex->dcc_gather_statistics && rtex->separate_dcc_dirty) {
> -   rtex->separate_dcc_dirty = false;
> -   vi_separate_dcc_process_and_reset_stats(ctx, rtex);
> +   if (rtex->dcc_gather_statistics) {
> +   bool separate_dcc_dirty = rtex->separate_dcc_dirty;
> +
> +   /* If the color buffer hasn't been unbound and fast clear 
> hasn't
> +* been used, separate_dcc_dirty is false, but there may have 
> been
> +* new rendering. Check if the color buffer is bound and 
> assume
> +* it's dirty.
> +*
> +* Note that DRI2 never unbinds window colorbuffers, which 
> means
> +* the DCC pipeline statistics query would never be re-set 
> and would
> +* keep adding new results until all free memory is exhausted 
> if we
> +* didn't do this.
> +*/
> +   if (!separate_dcc_dirty) {
> +   for (unsigned i = 0; i < 
> sctx->framebuffer.state.nr_cbufs; i++) {
> +   if (sctx->framebuffer.state.cbufs[i] &&
> +   sctx->framebuffer.state.cbufs[i]->texture 
> == res) {
> +   separate_dcc_dirty = true;
> +   break;
> +   }
> +   }
> +   }
> +
> +   if (separate_dcc_dirty) {
> +   rtex->separate_dcc_dirty = false;
> +   vi_separate_dcc_process_and_reset_stats(ctx, rtex);
> +   }
> }
>  }
>  
>  void si_decompress_dcc(struct si_context *sctx, struct r600_texture *rtex)
>  {
> if (!rtex->dcc_offset)
> return;
>  
> si_blit_decompress_color(sctx, rtex, 0, rtex->buffer.b.b.last_level,
>  0, util_max_layer(&rtex->buffer.b.b, 0),
> -- 
> 2.17.1
> 
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Hi Marek,

This didn't apply cleanly to 18.1 because of
1ba87f4438069964af6548f4fa05386be999f4de (radeonsi: rename r600_texture ->
si_texture, rxxx -> xxx or sxxx), I've attempted to rebase the commit by
changing "tex" to "rtex", please take a look at the commit in staging/18.1 in
the main tree or 18.1-proposed in my tree and let me know if it looks good to
you.

Dylan


signature.asc
Description: signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev