Mesa (10.5): common: Correct texture init for meta pbo uploads and downloads.

Emil Velikov evelikov at kemper.freedesktop.org
Sat Feb 28 00:18:08 UTC 2015


Module: Mesa
Branch: 10.5
Commit: 9e5af14163d5c4a782356c2b4787b2d5091ce5d3
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9e5af14163d5c4a782356c2b4787b2d5091ce5d3

Author: Laura Ekstrand <laura at jlekstrand.net>
Date:   Tue Feb 24 13:29:11 2015 -0800

common: Correct texture init for meta pbo uploads and downloads.

This moves the line setting immutability for the texture to after
_mesa_initialize_texture_object so that the initializer function will not
cancel it out. Moreover, because of the ARB_texture_view extension, immutable
textures must have NumLayers > 0, or depth will equal (0-1)=0xFFFFFFFF during
SURFACE_STATE setup, which triggers assertions.

v2: Review from Kenneth Graunke:
   - Include more explanation in the commit message.
   - Make texture setup bug fixes into a separate patch.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

Cc: "10.4, 10.5" <mesa-stable at lists.freedesktop.org>
(cherry picked from commit 06084652fefe49c3d6bf1b476ff74ff602fdc22a)

---

 src/mesa/drivers/common/meta_tex_subimage.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/mesa/drivers/common/meta_tex_subimage.c b/src/mesa/drivers/common/meta_tex_subimage.c
index 68c8273..2d2b9d8 100644
--- a/src/mesa/drivers/common/meta_tex_subimage.c
+++ b/src/mesa/drivers/common/meta_tex_subimage.c
@@ -100,8 +100,11 @@ create_texture_for_pbo(struct gl_context *ctx, bool create_pbo,
    _mesa_GenTextures(1, tmp_tex);
    tex_obj = _mesa_lookup_texture(ctx, *tmp_tex);
    tex_obj->Target = depth > 1 ? GL_TEXTURE_2D_ARRAY : GL_TEXTURE_2D;
-   tex_obj->Immutable = GL_TRUE;
    _mesa_initialize_texture_object(ctx, tex_obj, *tmp_tex, GL_TEXTURE_2D);
+   /* This must be set after _mesa_initialize_texture_object, not before. */
+   tex_obj->Immutable = GL_TRUE;
+   /* This is required for interactions with ARB_texture_view. */
+   tex_obj->NumLayers = 1;
 
    internal_format = _mesa_get_format_base_format(pbo_format);
 




More information about the mesa-commit mailing list