On Tuesday, October 2, 2018 9:16:01 AM PDT asimiklit.w...@gmail.com wrote: > From: Andrii Simiklit <andrii.simik...@globallogic.com> > > 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 <andrii.simik...@globallogic.com> > --- > .../drivers/dri/i965/intel_tex_validate.c | 26 ++++++++++++++++++- > 1 file changed, 25 insertions(+), 1 deletion(-)
I believe this patch is correct - we're assembling things into a new miptree, which we start at level 0 - so we need the sizes for level 0. Alternatively, we might be able to pass validate_first_level instead of 0 when calling intel_miptree_create, to make one that's only good up until the new base...and have to re-assemble it the next time they change the base. It would save memory potentially. But more copies. I don't have a strong preference which is better. Please do make a Piglit or dEQP test for this. Reviewed-by: Kenneth Graunke <kenn...@whitecape.org> > diff --git a/src/mesa/drivers/dri/i965/intel_tex_validate.c > b/src/mesa/drivers/dri/i965/intel_tex_validate.c > index 72ce83c7ce..37aa8f43ec 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), >
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev