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<[email protected]>
Signed-off-by: Marek Olšák<[email protected]>
---
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
_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to