meta: Actually initialize ImmutableLevels to 1.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 14 Jul 2017 03:43:57 +0000 (20:43 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 17 Jul 2017 08:37:51 +0000 (01:37 -0700)
Otherwise, ImmutableLevels is 0, which is an illegal value.  Later,
_mesa_meta_setup_sampler will use _mesa_texture_parameteriv to set

   texObj->MaxLevel = CLAMP(params[0], texObj->BaseLevel,
                            texObj->ImmutableLevels - 1);

which turns into a completely bogus CLAMP(value, 0, -1)...where the
upper bound is smaller than the lower bound.  This ends up being -1
today due to the way CLAMP is implemented, which is a bogus MaxLevel.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/common/meta_tex_subimage.c

index b8c422bfb726bc27aabf7ba1ec44c2a84dc03c76..e0284a3f07dba4bc8a2e06ec267154a35f58fda6 100644 (file)
@@ -136,6 +136,7 @@ create_texture_for_pbo(struct gl_context *ctx,
    _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;
+   tex_obj->ImmutableLevels = 1;
    /* This is required for interactions with ARB_texture_view. */
    tex_obj->NumLayers = 1;