]> git.tdb.fi Git - libs/gl.git/commitdiff
Fix validation of std140 and std430 layout qualifiers
authorMikko Rasa <tdb@tdb.fi>
Thu, 28 Dec 2023 21:12:22 +0000 (23:12 +0200)
committerMikko Rasa <tdb@tdb.fi>
Fri, 29 Dec 2023 07:32:39 +0000 (09:32 +0200)
They're allowed on buffer blocks as well, and std430 isn't allowed on
uniform blocks.  Also recognize the packed qualifier.

source/glsl/validate.cpp

index 778c8b803a9475c8a571b9bf6b7e7af2cb258439..7f24a216feecb0bb11fd23856ce111e8d478ac23 100644 (file)
@@ -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")
                {