[Mesa-dev] [PATCH] i965: consider a 'base level' when calculating width0, height0, depth0
Kenneth Graunke
kenneth at whitecape.org
Thu Oct 11 18:58:40 UTC 2018
On Tuesday, October 2, 2018 9:16:01 AM PDT asimiklit.work at gmail.com wrote:
> From: Andrii Simiklit <andrii.simiklit at 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.simiklit at 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 <kenneth at 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),
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181011/b9b91ce2/attachment-0001.sig>
More information about the mesa-dev
mailing list