well, freedreno and vmware ddx still use XA.. they both could probably
be ported to use glamor instead, but that hasn't been done yet..

At least for freedreno with upstream drm/kms driver, one can just use
-modesetting ddx instead.  But that doesn't work w/ android fbdev
driver.  I need to check again w/ a more recent -modesetting+glamor,
but when I tried it a few months ago, there were some cases of
rendering corruption (but I didn't have time to debug and see whether
that was a freedreno issue or a glamor issue).

I wouldn't recommend new users of XA at this point, but I don't think
we are quite at the point where we can remove it.

BR,
-R

On Fri, Jul 10, 2015 at 7:12 AM, Marek Olšák <mar...@gmail.com> wrote:
> I wonder... do we still need XA considering that everybody can just
> use glamor instead?
>
> Marek
>
>
> On Wed, Jul 8, 2015 at 7:39 PM, Rob Clark <robdcl...@gmail.com> wrote:
>> From: Rob Clark <robcl...@freedesktop.org>
>>
>> XA was never unref'ing last_fence in the various call paths to
>> pipe->flush().  Add this to xa_context_flush() and update the other
>> open-coded calls to pipe->flush() to use xa_context_flush() instead.
>>
>> This fixes a memory leak reported with xf86-video-freedreno.
>>
>> Reported-by: Nicolas Dechesne <nicolas.deche...@linaro.org>
>> Cc: "10.5 10.6" <mesa-sta...@lists.freedesktop.org>
>> Signed-off-by: Rob Clark <robcl...@freedesktop.org>
>> ---
>>  src/gallium/state_trackers/xa/xa_context.c | 6 +++++-
>>  src/gallium/state_trackers/xa/xa_tracker.c | 2 +-
>>  src/gallium/state_trackers/xa/xa_yuv.c     | 2 +-
>>  3 files changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/xa/xa_context.c 
>> b/src/gallium/state_trackers/xa/xa_context.c
>> index fd49c82..ebfb290 100644
>> --- a/src/gallium/state_trackers/xa/xa_context.c
>> +++ b/src/gallium/state_trackers/xa/xa_context.c
>> @@ -37,7 +37,11 @@
>>  XA_EXPORT void
>>  xa_context_flush(struct xa_context *ctx)
>>  {
>> -       ctx->pipe->flush(ctx->pipe, &ctx->last_fence, 0);
>> +    if (ctx->last_fence) {
>> +        struct pipe_screen *screen = ctx->xa->screen;
>> +        screen->fence_reference(screen, &ctx->last_fence, NULL);
>> +    }
>> +    ctx->pipe->flush(ctx->pipe, &ctx->last_fence, 0);
>>  }
>>
>>  XA_EXPORT struct xa_context *
>> diff --git a/src/gallium/state_trackers/xa/xa_tracker.c 
>> b/src/gallium/state_trackers/xa/xa_tracker.c
>> index a384c1c..1df1da7 100644
>> --- a/src/gallium/state_trackers/xa/xa_tracker.c
>> +++ b/src/gallium/state_trackers/xa/xa_tracker.c
>> @@ -464,7 +464,7 @@ xa_surface_redefine(struct xa_surface *srf,
>>                         xa_min(save_height, template->height0), &src_box);
>>         pipe->resource_copy_region(pipe, texture,
>>                                    0, 0, 0, 0, srf->tex, 0, &src_box);
>> -       pipe->flush(pipe, &xa->default_ctx->last_fence, 0);
>> +       xa_context_flush(xa->default_ctx);
>>      }
>>
>>      pipe_resource_reference(&srf->tex, texture);
>> diff --git a/src/gallium/state_trackers/xa/xa_yuv.c 
>> b/src/gallium/state_trackers/xa/xa_yuv.c
>> index 1519639..97a1833 100644
>> --- a/src/gallium/state_trackers/xa/xa_yuv.c
>> +++ b/src/gallium/state_trackers/xa/xa_yuv.c
>> @@ -154,7 +154,7 @@ xa_yuv_planar_blit(struct xa_context *r,
>>         box++;
>>      }
>>
>> -    r->pipe->flush(r->pipe, &r->last_fence, 0);
>> +    xa_context_flush(r);
>>
>>      xa_ctx_sampler_views_destroy(r);
>>      xa_ctx_srf_destroy(r);
>> --
>> 2.4.3
>>
>> _______________________________________________
>> 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

Reply via email to