From: Mikko Rasa Date: Thu, 28 Dec 2023 21:12:22 +0000 (+0200) Subject: Fix validation of std140 and std430 layout qualifiers X-Git-Url: https://git.tdb.fi/?a=commitdiff_plain;h=95f873cdea8c70ffc9881a7f0b7207f1547e74c9;p=libs%2Fgl.git Fix validation of std140 and std430 layout qualifiers They're allowed on buffer blocks as well, and std430 isn't allowed on uniform blocks. Also recognize the packed qualifier. --- diff --git a/source/glsl/validate.cpp b/source/glsl/validate.cpp index 778c8b80..7f24a216 100644 --- a/source/glsl/validate.cpp +++ b/source/glsl/validate.cpp @@ -209,10 +209,17 @@ void DeclarationValidator::visit(Layout &layout) allowed = (stage->type==Stage::TESS_EVAL && iface_layout && iface_layout->interface=="in"); value = false; } - else if(q.name=="std140" || q.name=="std430") + else if(q.name=="std140" || q.name=="packed") { - allowed = (iface_block && !variable && iface_block->interface=="uniform"); + allowed = (iface_block && !variable && (iface_block->interface=="uniform" || iface_block->interface=="buffer")); + value = false; + err_descr = "non-uniform interface block"; + } + else if(q.name=="std430") + { + allowed = (iface_block && !variable && iface_block->interface=="buffer"); value = false; + err_descr = "non-buffer interface block"; } else if(q.name=="column_major" || q.name=="row_major") {