From 8f2c41c8ef33f2dcd8ce0066e747354eac974ff8 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: (cherry picked from commit c1b93964036ff5f98ad8ff9b7859ca309314d73b) --- .pick_status.json | 2 +- src/mesa/main/texobj.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index d9f73f7b944..5bb65a87558 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -5244,7 +5244,7 @@ "description": "mesa: fix glTexPageCommitmentARB and glTexturePageCommitmentEXT level check", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "90415c1a3a4b987a9cf38a44a094eea9f27d0b9c", "notes": null diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 927ff199e04..00b4b4dcf8f 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)