[Mesa-stable] [Mesa-dev] [PATCH] mesa: enable GL_TEXTURE_LOD_BIAS set/get v2
Ian Romanick
idr at freedesktop.org
Wed Nov 20 09:45:19 PST 2013
On 11/20/2013 09:08 AM, Kenneth Graunke wrote:
> On 11/20/2013 03:27 AM, Tapani Pälli wrote:
>> Earlier comments suggest this was removed from GL core spec but it is
>> still there. Enabling makes 'texture_lod_bias_getter' Khronos
>> conformance tests pass, also removes some errors from Metro Last Light
>> game which is using this API.
>>
>> v2: leave NOTE comment (Ian)
>>
>> Cc: "9.0 9.1 9.2 10.0" <mesa-stable at lists.freedesktop.org>
>> Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
>> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>> Signed-off-by: Tapani Pälli <tapani.palli at intel.com>
>> ---
>> src/mesa/main/texparam.c | 16 ++++++++--------
>> 1 file changed, 8 insertions(+), 8 deletions(-)
>>
>> diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c
>> index d56b7d9..f77e7f6 100644
>> --- a/src/mesa/main/texparam.c
>> +++ b/src/mesa/main/texparam.c
>> @@ -684,11 +684,8 @@ set_tex_parameterf(struct gl_context *ctx,
>> return GL_FALSE;
>>
>> case GL_TEXTURE_LOD_BIAS:
>> - /* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias.
>> - * It was removed in core-profile, and it has never existed in OpenGL
>> - * ES.
>> - */
>> - if (ctx->API != API_OPENGL_COMPAT)
>> + /* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias. */
>> + if (_mesa_is_gles(ctx))
>> goto invalid_pname;
>>
>> if (!target_allows_setting_sampler_parameters(texObj->Target))
>> @@ -1513,7 +1510,7 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params )
>> *params = (GLfloat) obj->DepthMode;
>> break;
>> case GL_TEXTURE_LOD_BIAS:
>> - if (ctx->API != API_OPENGL_COMPAT)
>> + if (_mesa_is_gles(ctx))
>> goto invalid_pname;
>>
>> *params = obj->Sampler.LodBias;
>> @@ -1701,10 +1698,13 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params )
>> *params = (GLint) obj->DepthMode;
>> break;
>> case GL_TEXTURE_LOD_BIAS:
>> - if (ctx->API != API_OPENGL_COMPAT)
>> + if (_mesa_is_gles(ctx))
>> goto invalid_pname;
>>
>> - *params = (GLint) obj->Sampler.LodBias;
>> + /* GL spec 'Data Conversions' section specifies that floating-point
>> + * value in integer Get function is rounded to nearest integer
>> + */
>> + *params = (GLint) roundf(obj->Sampler.LodBias);
>
> Yikes! I missed this change in the original patch.
>
> The call to roundf here is definitely wrong. If you look above, you'll
> find...
>
> void GLAPIENTRY
> _mesa_GetTexLevelParameterfv( GLenum target, GLint level,
> GLenum pname, GLfloat *params )
> {
> GLint iparam;
> _mesa_GetTexLevelParameteriv( target, level, pname, &iparam );
> *params = (GLfloat) iparam;
> }
>
> ...so, your change means that we'll always round to the nearest integer,
> even for GetTexLevelParameterfv.
But his patch modifies GetTexParameter. There are already separate
paths for GetTexParameterfv and GetTexParameteriv. Note the last two
hunks of the patch.
> I think you should drop the roundf change from this patch, making it
> entirely about exposing the values. Later patches can fix the values.
>
> The other thing that concerns me is that there are other floating point
> values being returned, and none of them have this roundf treatment.
> Assuming the justification in your comment is correct (I haven't
> checked), then they'd all be wrong, and all need to be fixed.
I don't see anything in _mesa_GetTexParameteriv that's incorrectly
handling floats. The only other floats that I noticed were colors or
other values that get returned as fixed-point. Did you notice anything
specific? Or were you looking at GetTexLevelParameteriv? :)
>> break;
>> case GL_TEXTURE_CROP_RECT_OES:
>> if (ctx->API != API_OPENGLES || !ctx->Extensions.OES_draw_texture)
>>
More information about the mesa-stable
mailing list