[Nouveau] [Mesa-stable] [PATCH 2/2] nv50: zero out unbound samplers
Ilia Mirkin
imirkin at alum.mit.edu
Sat Aug 30 16:34:25 PDT 2014
On Sat, Aug 30, 2014 at 7:30 PM, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> On 30/08/14 23:02, Ilia Mirkin wrote:
>> Samplers are only defined up to num_samplers, so set all samplers above
>> nr to NULL so that we don't try to read them again later.
>>
> Would it be worth doing a similar thing with the unlocked samplers below the
> nr mark ? It seems to me that we might be leaking nv50->samplers[s][i], or
> perhaps I'm missing something ?
Can you elaborate? sampler_state_create/delete deal with allocation
and deallocation. samplers starts out as NULL. I'm just making sure
that a subsequent call with a larger number of samplers doesn't try to
unlock potentially-deleted samplers.
-ilia
>
> -Emil
>
>> Tested-by: Christian Ruppert <idl0r at qasl.de>
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> Cc: "10.2 10.3" <mesa-stable at lists.freedesktop.org>
>> ---
>> src/gallium/drivers/nouveau/nv50/nv50_state.c | 7 +++++--
>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_state.c b/src/gallium/drivers/nouveau/nv50/nv50_state.c
>> index 48bc079..cf84f88 100644
>> --- a/src/gallium/drivers/nouveau/nv50/nv50_state.c
>> +++ b/src/gallium/drivers/nouveau/nv50/nv50_state.c
>> @@ -585,9 +585,12 @@ nv50_stage_sampler_states_bind(struct nv50_context *nv50, int s,
>> nv50_screen_tsc_unlock(nv50->screen, old);
>> }
>> assert(nv50->num_samplers[s] <= PIPE_MAX_SAMPLERS);
>> - for (; i < nv50->num_samplers[s]; ++i)
>> - if (nv50->samplers[s][i])
>> + for (; i < nv50->num_samplers[s]; ++i) {
>> + if (nv50->samplers[s][i]) {
>> nv50_screen_tsc_unlock(nv50->screen, nv50->samplers[s][i]);
>> + nv50->samplers[s][i] = NULL;
>> + }
>> + }
>>
>> nv50->num_samplers[s] = nr;
>>
>>
>
More information about the Nouveau
mailing list