From 3bc016bb6caa15c3bb16053cd9e2e601703080ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Wed, 2 Apr 2025 18:01:12 +0300 Subject: [PATCH] mesa: clamp texbuf query size to MAX_TEXTURE_BUFFER_SIZE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes upcoming CTS test checking for clamping. Cc: mesa-stable Signed-off-by: Tapani Pälli Reviewed-by: Erik Faye-Lund Reviewed-by: Marek Olšák Part-of: --- src/mesa/main/texparam.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 747bc29355c..80a350d7ef5 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -1997,8 +1997,15 @@ get_tex_level_parameter_buffer(struct gl_context *ctx, *params = bo->Name; break; case GL_TEXTURE_WIDTH: - *params = ((texObj->BufferSize == -1) ? bo->Size : texObj->BufferSize) - / bytes; + /* From OpenGL 4.6 spec "8.9 Buffer Textures": + * + * "The number of texels in the texture image is then clamped to an + * implementation-dependent limit, the value of + * MAX_TEXTURE_BUFFER_SIZE." + */ + *params = CLAMP(((texObj->BufferSize == -1) ? + bo->Size : texObj->BufferSize) / bytes, + 0, ctx->Const.MaxTextureBufferSize); break; case GL_TEXTURE_HEIGHT: case GL_TEXTURE_DEPTH: