From c25fe88ebf0939ac1972cc0994819c27408ca59e Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 15 Jul 2014 09:54:08 +0800 Subject: [PATCH] ilo: raise texture size limits Report the hardware limits now that max-texture-size piglit test has been fixed. --- src/gallium/drivers/ilo/ilo_resource.c | 9 ++++++--- src/gallium/drivers/ilo/ilo_screen.c | 17 +++-------------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/gallium/drivers/ilo/ilo_resource.c b/src/gallium/drivers/ilo/ilo_resource.c index 61464a2c070..359c635b335 100644 --- a/src/gallium/drivers/ilo/ilo_resource.c +++ b/src/gallium/drivers/ilo/ilo_resource.c @@ -63,10 +63,13 @@ struct tex_layout { }; /* - * We do not know if we will fail until we try to allocate the bo. - * So just set a limit on the texture size. + * From the Ivy Bridge PRM, volume 1 part 1, page 105: + * + * "In addition to restrictions on maximum height, width, and depth, + * surfaces are also restricted to a maximum size in bytes. This + * maximum is 2 GB for all products and all surface types." */ -static const size_t max_resource_size = 1u << 30; +static const size_t max_resource_size = 1u << 31; static void tex_layout_init_qpitch(struct tex_layout *layout) diff --git a/src/gallium/drivers/ilo/ilo_screen.c b/src/gallium/drivers/ilo/ilo_screen.c index 4e4739c4504..e2a0e239600 100644 --- a/src/gallium/drivers/ilo/ilo_screen.c +++ b/src/gallium/drivers/ilo/ilo_screen.c @@ -309,23 +309,12 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param) * Max WxHxD for 2D and CUBE Max WxHxD for 3D * GEN6 8192x8192x512 2048x2048x2048 * GEN7 16384x16384x2048 2048x2048x2048 - * - * However, when the texutre size is large, things become unstable. We - * require the maximum texture size to be 2^30 bytes in - * screen->can_create_resource(). Since the maximum pixel size is 2^4 - * bytes (PIPE_FORMAT_R32G32B32A32_FLOAT), textures should not have more - * than 2^26 pixels. - * - * For 3D textures, we have to set the maximum number of levels to 9, - * which has at most 2^24 pixels. For 2D textures, we set it to 14, - * which has at most 2^26 pixels. And for cube textures, we has to set - * it to 12. */ - return 14; + return (is->dev.gen >= ILO_GEN(7)) ? 15 : 14; case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: - return 9; - case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: return 12; + case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: + return (is->dev.gen >= ILO_GEN(7)) ? 15 : 14; case PIPE_CAP_TEXTURE_MIRROR_CLAMP: return false; case PIPE_CAP_BLEND_EQUATION_SEPARATE: -- 2.30.2