summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers
diff options
context:
space:
mode:
authorAndrii Simiklit <[email protected]>2018-10-02 19:16:01 +0300
committerKenneth Graunke <[email protected]>2019-02-07 21:40:50 -0800
commit2b7d5c32178d93695a8a7a9bf6509933ab7c1002 (patch)
tree6fa64aef98de45a2f4b6899e26c16c5d6df0b7f0 /src/mesa/drivers
parent26aa460940f6222565ad5eb40a21c2377c59c3a6 (diff)
i965: consider a 'base level' when calculating width0, height0, depth0
I guess that when we calculating the width0, height0, depth0 to use for function 'intel_miptree_create' we need to consider the 'base level' like it is done in the 'intel_miptree_create_for_teximage' function. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107987 Signed-off-by: Andrii Simiklit <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r--src/mesa/drivers/dri/i965/intel_tex_validate.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c b/src/mesa/drivers/dri/i965/intel_tex_validate.c
index 72ce83c7ced..37aa8f43ec9 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_validate.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_validate.c
@@ -119,8 +119,32 @@ intel_finalize_mipmap_tree(struct brw_context *brw,
/* May need to create a new tree:
*/
if (!intelObj->mt) {
+ const unsigned level = firstImage->base.Base.Level;
intel_get_image_dims(&firstImage->base.Base, &width, &height, &depth);
-
+ /* Figure out image dimensions at start level. */
+ switch(intelObj->base.Target) {
+ case GL_TEXTURE_2D_MULTISAMPLE:
+ case GL_TEXTURE_2D_MULTISAMPLE_ARRAY:
+ case GL_TEXTURE_RECTANGLE:
+ case GL_TEXTURE_EXTERNAL_OES:
+ assert(level == 0);
+ break;
+ case GL_TEXTURE_3D:
+ depth = depth << level;
+ /* Fall through */
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_2D_ARRAY:
+ case GL_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_CUBE_MAP_ARRAY:
+ height = height << level;
+ /* Fall through */
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_1D_ARRAY:
+ width = width << level;
+ break;
+ default:
+ unreachable("Unexpected target");
+ }
perf_debug("Creating new %s %dx%dx%d %d-level miptree to handle "
"finalized texture miptree.\n",
_mesa_get_format_name(firstImage->base.Base.TexFormat),