summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2014-07-15 09:54:08 +0800
committerChia-I Wu <olvaffe@gmail.com>2014-07-15 12:00:15 +0800
commitc25fe88ebf0939ac1972cc0994819c27408ca59e (patch)
tree94c04035371645eb8b6e760512a065c025b0f260
parent81d7f33e30e7f54c5b721085057a53f9cd958fe2 (diff)
ilo: raise texture size limits
Report the hardware limits now that max-texture-size piglit test has been fixed.
-rw-r--r--src/gallium/drivers/ilo/ilo_resource.c9
-rw-r--r--src/gallium/drivers/ilo/ilo_screen.c17
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: