[Mesa-dev] [PATCH 5/7] st/mesa: fix handling the fallback texture
Miklós Máté
mtmkls at gmail.com
Thu Feb 25 15:35:58 UTC 2016
On 02/25/2016 02:40 AM, Brian Paul wrote:
> On 02/24/2016 04:35 PM, Miklós Máté wrote:
>> This fixes post-processing in SW:KotOR.
>
> Can you elaborate on exactly what's happening and why this change
> fixes things?
Sometimes no texture is bound during the post-processing, which results
in msamp=0, and segfault a few lines later.
>
>
>>
>> v2: fix const-ness
>>
>> Signed-off-by: Miklós Máté <mtmkls at gmail.com>
>> ---
>> src/mesa/state_tracker/st_atom_sampler.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/mesa/state_tracker/st_atom_sampler.c
>> b/src/mesa/state_tracker/st_atom_sampler.c
>> index 82dcf5e..52187d0 100644
>> --- a/src/mesa/state_tracker/st_atom_sampler.c
>> +++ b/src/mesa/state_tracker/st_atom_sampler.c
>> @@ -133,7 +133,7 @@ convert_sampler(struct st_context *st,
>> {
>> const struct gl_texture_object *texobj;
>> struct gl_context *ctx = st->ctx;
>> - struct gl_sampler_object *msamp;
>> + const struct gl_sampler_object *msamp;
>> GLenum texBaseFormat;
>>
>> texobj = ctx->Texture.Unit[texUnit]._Current;
>> @@ -144,6 +144,10 @@ convert_sampler(struct st_context *st,
>> texBaseFormat = _mesa_texture_base_format(texobj);
>>
>> msamp = _mesa_get_samplerobj(ctx, texUnit);
>> + if (!msamp) {
>> + /* handle the fallback texture */
>> + msamp = &texobj->Sampler;
>> + }
>>
>> memset(sampler, 0, sizeof(*sampler));
>> sampler->wrap_s = gl_wrap_xlate(msamp->WrapS);
>>
>
> I'm guessing that _mesa_get_samplerobj() returns NULL only if there's
> no currently active texture for the given unit. If so, maybe the
> msamp assignment should get moved into the earlier "if (!texobj)" test.
Yes, you're right. I now moved the assignment.
MM
More information about the mesa-dev
mailing list