[Mesa-dev] [PATCH] meta: do fallback when texture is enabled for DrawPixels

Liu Aleaxander aleaxander at gmail.com
Fri May 4 18:39:31 PDT 2012


On Sat, May 5, 2012 at 2:56 AM, Eric Anholt <eric at anholt.net> wrote:
> On Fri, 4 May 2012 22:33:41 +0800, Liu Aleaxander <aleaxander at gmail.com> wrote:
>> From: Yuanhan Liu <yuanhan.liu at linux.intel.com>
>>
>> If there are already some texture unit enabled, a fallback is needed,
>> or the original texture stuff would not work.
>>
>> A much better way is to use multi-texture to handle this case: like
>> treat the pixels as texture 1 and the original texture as texture 2.
>> I haven't do much inverstigation on that way, but fallback is definitely
>> a much simpler and straight way.
>>
>> This would fix oglc mipsel test case.
>>
>> Signed-off-by: Yuanhan Liu <yuanhan.liu at linux.intel.com>
>> ---
>>  src/mesa/drivers/common/meta.c |   10 ++++++++++
>>  1 files changed, 10 insertions(+), 0 deletions(-)
>>
>> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
>> index 95336fc..c860f3c 100644
>> --- a/src/mesa/drivers/common/meta.c
>> +++ b/src/mesa/drivers/common/meta.c
>> @@ -2210,6 +2210,16 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
>>        fallback = GL_TRUE;
>>     }
>>
>> +   /*
>> +    * If there are already some texture unit enabled, a fallback is needed,
>> +    * or the original texture stuff would not work
>> +    *
>> +    * FIXME: we may use multi-texture to handle this case. But fallback is
>> +    * definitely a much simple and straight way.
>> +    */
>> +   if (ctx->Texture._EnabledUnits)
>> +      fallback = GL_TRUE;
>
> _EnabledUnits is computed state at texture state update time, right?

Yes.

> So
> you can't rely on it being correct here -- you'd need to
> _mesa_update_state(ctx) first.  I think it should go at the very top of
> the function, due to the _ImageTransferState check also relying on that.

But we already did _mesa_update_state at _mesa_DrawPixels() --->
_mesa_valid_to_render(). Thus I guess we don't need do that again, right?

Thanks,
Yuanhan Liu


More information about the mesa-dev mailing list