[Mesa-dev] [PATCH] r600g/radeonsi: unreference previous fence in flush

Jerome Glisse j.glisse at gmail.com
Mon Mar 4 11:11:13 PST 2013


On Mon, Mar 4, 2013 at 2:05 PM, Michel Dänzer <michel at daenzer.net> wrote:
> On Mon, 2013-03-04 at 13:17 -0500, j.glisse at gmail.com wrote:
>> From: Jerome Glisse <jglisse at redhat.com>
>>
>> Some code calling the flush function gave a fence pointer that point
>> to an old fence and should be unreference to avoid leaking fence.
>>
>> Candidate for 9.1
>>
>> Signed-off-by: Jerome Glisse <jglisse at redhat.com>
>> ---
>>  src/gallium/drivers/r600/r600_pipe.c         | 8 +++++---
>>  src/gallium/drivers/radeonsi/radeonsi_pipe.c | 9 ++++++---
>>  2 files changed, 11 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
>> index 78002ae..4bcfc67 100644
>> --- a/src/gallium/drivers/r600/r600_pipe.c
>> +++ b/src/gallium/drivers/r600/r600_pipe.c
>> @@ -145,12 +145,14 @@ static void r600_flush_from_st(struct pipe_context *ctx,
>>                              enum pipe_flush_flags flags)
>>  {
>>       struct r600_context *rctx = (struct r600_context *)ctx;
>> -     struct r600_fence **rfence = (struct r600_fence**)fence;
>> +     struct r600_fence *rfence;
>>       unsigned fflags;
>>
>>       fflags = flags & PIPE_FLUSH_END_OF_FRAME ? RADEON_FLUSH_END_OF_FRAME : 0;
>> -     if (rfence) {
>> -             *rfence = r600_create_fence(rctx);
>> +     if (fence) {
>> +             rfence = r600_create_fence(rctx);
>> +             ctx->screen->fence_reference(ctx->screen, fence,
>> +                                             (struct pipe_fence_handle *)rfence);
>
> This change increases the reference count of the returned fence from 1
> to 2. I don't think that's correct, but if it is, the change should be
> amended with an explanation why.
>

No i have uncommited change in my tree. I will probably resend with
the xa patchset.

Jerome


More information about the mesa-dev mailing list