From c1b93964036ff5f98ad8ff9b7859ca309314d73b Mon Sep 17 00:00:00 2001 From: Qiang Yu Date: Wed, 20 Aug 2025 12:21:54 +0800 Subject: [PATCH] mesa: fix glTexPageCommitmentARB and glTexturePageCommitmentEXT level check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gl_texture_object._MaxLevel is not set at this point. Follow the level check of texsubimage_error_check() now. Fixes: 90415c1a3a4 ("mesa: implement glTexPageCommitmentARB/glTexturePageCommitmentEXT") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13730 Reviewed-by: Marek Olšák Part-of: --- src/mesa/main/texobj.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 813aee59f7b..06eee4c4918 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -2413,13 +2413,17 @@ texture_page_commitment(struct gl_context *ctx, GLenum target, return; } - if (level < 0 || level > tex_obj->_MaxLevel) { + if (level < 0 || level >= _mesa_max_texture_levels(ctx, target)) { /* Not in error list of ARB_sparse_texture. */ _mesa_error(ctx, GL_INVALID_VALUE, "%s(level %d)", func, level); return; } - struct gl_texture_image *image = tex_obj->Image[0][level]; + struct gl_texture_image *image = _mesa_select_tex_image(tex_obj, target, level); + if (!image) { + _mesa_error(ctx, GL_INVALID_OPERATION, "%s(no image for level %d)", func, level); + return; + } int max_depth = image->Depth; if (target == GL_TEXTURE_CUBE_MAP)