diff options
author | Andrii Simiklit <[email protected]> | 2018-10-02 19:16:01 +0300 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2019-02-07 21:40:50 -0800 |
commit | 2b7d5c32178d93695a8a7a9bf6509933ab7c1002 (patch) | |
tree | 6fa64aef98de45a2f4b6899e26c16c5d6df0b7f0 /src/mesa/drivers | |
parent | 26aa460940f6222565ad5eb40a21c2377c59c3a6 (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.c | 26 |
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), |