[Mesa-dev] [PATCH] mesa: fix maximum supported texture size returned by glGetIntegrv

Jose Fonseca jfonseca at vmware.com
Fri Jan 27 00:57:01 PST 2012


This doesn't make sense from a mathematical POV. 

If the allowable size is

  2^floor(log2(MAX_XX_TEXTURE_SIZE)) + 2*bt

then it doesn't matter whether MAX_XX_TEXTURE_SIZE has or not the border with, as the allowable size is still the same for all common values of MAX_XX_TEXTURE_SIZE.

It would be very odd to define MAX_XX_TEXTURE_SIZE in terms of itself, as there would be a singularity for MAX_XX_TEXTURE_SIZE < 4 : no value of MAX_XX_TEXTURE_SIZE under four will satisfy the equation:

  MAX_XX_TEXTURE_SIZE = 2^floor(log2(MAX_XX_TEXTURE_SIZE)) + 2

If hypothetically one day the spec allowed higher maximum border sizes, it would be even worse.


My take is that the border does not need to be implicitly added to MAX_XX_TEXTURE_SIZE query, and the test/driver is wrong.



Also it doesn't match what NVIDIA produces:

$ glxinfo -l | grep SIZE
    GL_MAX_TEXTURE_SIZE = 16384
    GL_MAX_3D_TEXTURE_SIZE = 2048
    GL_ALIASED_POINT_SIZE_RANGE = 1, 63
    GL_SMOOTH_POINT_SIZE_RANGE = 1, 63
    GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 16384
    GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = 16384

Jose


----- Original Message -----
> As per OpenGL 3.0 specification section 3.9, page 187 in pdf the
> maximum
> allowable width, height, or depth of a texel array must be at least
> 2^(k−lod) + 2*bt for image arrays of level-of-detail (lod) 0 through
> k,
> where k is the log base 2 of MAX_3D_TEXTURE_SIZE, and bt is the
> maximum
> border width
> 
> Currently different values for maximum allowable texture size are
> returned
> by glGetIntegrv() and proxy textures. glGetIntegrv returns 2048 and
> proxy
> texture returns (2048 + 2)
> 
> This patch fixes Intel oglconform test case: max_values
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44970
> 
> Note: This is a candidate for mesa 8.0 branch.
> 
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
>  src/mesa/main/get.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index 5ad6012..4a70109 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -1507,7 +1507,8 @@ find_custom_value(struct gl_context *ctx, const
> struct value_desc *d, union valu
>     case GL_MAX_3D_TEXTURE_SIZE:
>     case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
>        p = (GLuint *) ((char *) ctx + d->offset);
> -      v->value_int = 1 << (*p - 1);
> +      /* GL 3.0: Add 2 pixels to accmodate border */
> +      v->value_int = 1 << (*p - 1) + 2;
>        break;
>  
>     case GL_SCISSOR_BOX:
> --
> 1.7.7.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list