[Mesa-dev] [PATCH] mesa: raise maximum viewport and texture size to 8192

Brian Paul brianp at vmware.com
Wed Nov 24 11:10:45 PST 2010


On 11/24/2010 10:20 AM, Brian Paul wrote:
> On 11/24/2010 05:23 AM, Marek Olšák wrote:
>> In order to be able to create and render to textures of size 8192x8192
>> on r600 and nv50, including 3D textures like 8192x4x4.
>>
>> Two new piglit tests have been added to test this: fbo-maxsize and
>> tex3d-maxsize.
>>
>> Driver status:
>> swrast passes fbo-maxsize and segfaults in tex3d-maxsize.
>> softpipe and r300g pass both.
>> (r300g returns GL_OUT_OF_MEMORY in tex3d-maxsize).
>>
>> Cc: Brian Paul<brianp at vmware.com>
>> Signed-off-by: Marek Olšák<maraeo at gmail.com>
>> ---
>> src/mesa/main/config.h | 14 +++++++-------
>> 1 files changed, 7 insertions(+), 7 deletions(-)
>>
>> diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h
>> index 0f2d1a8..5388069 100644
>> --- a/src/mesa/main/config.h
>> +++ b/src/mesa/main/config.h
>> @@ -98,16 +98,16 @@
>> #define MAX_COLOR_TABLE_SIZE 256
>>
>> /** Number of 1D/2D texture mipmap levels */
>> -#define MAX_TEXTURE_LEVELS 13
>> +#define MAX_TEXTURE_LEVELS 14
>>
>> /** Number of 3D texture mipmap levels */
>> -#define MAX_3D_TEXTURE_LEVELS 9
>> +#define MAX_3D_TEXTURE_LEVELS 14
>>
>> /** Number of cube texture mipmap levels - GL_ARB_texture_cube_map */
>> -#define MAX_CUBE_TEXTURE_LEVELS 13
>> +#define MAX_CUBE_TEXTURE_LEVELS 14
>>
>> /** Maximum rectangular texture size - GL_NV_texture_rectangle */
>> -#define MAX_TEXTURE_RECT_SIZE 4096
>> +#define MAX_TEXTURE_RECT_SIZE 8192
>>
>> /** Maximum number of layers in a 1D or 2D array texture -
>> GL_MESA_texture_array */
>> #define MAX_ARRAY_TEXTURE_LAYERS 64
>> @@ -140,11 +140,11 @@
>> */
>>
>> #ifndef MAX_WIDTH
>> -# define MAX_WIDTH 4096
>> +# define MAX_WIDTH 8192
>> #endif
>> /** Maximum viewport/image height */
>> #ifndef MAX_HEIGHT
>> -# define MAX_HEIGHT 4096
>> +# define MAX_HEIGHT 8192
>> #endif
>>
>> /** Maxmimum size for CVA. May be overridden by the drivers. */
>> @@ -168,7 +168,7 @@
>> #define MAX_TEXTURE_MAX_ANISOTROPY 16.0
>>
>> /** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */
>> -#define MAX_TEXTURE_LOD_BIAS 12.0
>> +#define MAX_TEXTURE_LOD_BIAS 13.0
>>
>> /** For any program target/extension */
>> /*@{*/
>
> I'm OK w/ increasing the limits but there's a few other issues that need
> to be fixed before this patch can be applied. I'm working on it now...

Here's a more elaborate patch.

It checks if the memory used by the texture is less than some limit. 
If the limit is exceeded, GL_OUT_OF_MEMORY is generated (unless it's a 
proxy texture).  This lets us advertise GL_MAX_3D_TEXTURE_SIZE to be 
8K (or larger) while preventing actual 8Kx8Kx8K textures but allowing 
8Kx32x16, for example.  This could have been implemented in each of 
the drivers using the ctx->Driver.TestProxyImage() hook but this patch 
avoids all that redundant code.

I'll leave it up to driver maintainers to set the new 
ctx->Const.MaxTextureMBytes field to a reasonable driver.  The default 
is currently 1GB.

The max texture size is also bumped up to 16K, Alex.

Ideally, we should also have a piglit test that exercises 
rasterization with the max possible texture/surface size to see if the 
fixed point rasterization really falls apart as I fear.

If there's no comments/concerns I'll commit in a day or two.

I've also posted a patch to the tex3d-maxsize.c test to the piglit test.

-Brian


More information about the mesa-dev mailing list