From a3a04ed6f3617ab7891f827fae8a9dd8e67596bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tapani=20P=C3=A4lli?= Date: Fri, 5 Aug 2022 11:00:27 +0300 Subject: [PATCH] glsl: add check for too large atomic counter buffer offset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes upcoming CTS test for atomic counter buffer offsets. "It's being clarified that placing an atomic counter into a buffer at such an offset that the buffer is too large results in a compilation error." https://gitlab.khronos.org/Tracker/vk-gl-cts/-/issues/3124 Signed-off-by: Tapani Pälli Reviewed-by: Timothy Arceri Part-of: --- src/compiler/glsl/ast_to_hir.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 68eb84eba66..a61fe1d56d9 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -3862,6 +3862,10 @@ apply_layout_qualifier_to_variable(const struct ast_type_qualifier *qual, _mesa_glsl_error(loc, state, "misaligned atomic counter offset"); + if (*offset >= state->Const.MaxAtomicCounterBufferSize) + _mesa_glsl_error(loc, state, + "offset > max atomic counter buffer size"); + var->data.offset = *offset; *offset += var->type->atomic_size();