X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Fglsl%2Fvalidate.cpp;h=5a28fcb6abca0ec042dda6f41aff0f5d6067053d;hb=ee6bbd30f8b4c7e9d73124272cc0eec03093ddec;hp=4c135892056c1e82b3c33ca0536232202a05ac69;hpb=abcd1fa06f9fab27c5934b4069523dd009862b18;p=libs%2Fgl.git diff --git a/source/glsl/validate.cpp b/source/glsl/validate.cpp index 4c135892..5a28fcb6 100644 --- a/source/glsl/validate.cpp +++ b/source/glsl/validate.cpp @@ -60,6 +60,11 @@ void DeclarationValidator::apply(Stage &s, const Features &f) if(!have_output_vertex_count) error(*global_err_node, "No vertex count qualifier found on output"); } + else if(s.type==Stage::COMPUTE) + { + if(!have_workgroup_size) + error(*global_err_node, "No workgroup size qualifier found"); + } } const char *DeclarationValidator::describe_variable(ScopeType scope) @@ -193,7 +198,11 @@ void DeclarationValidator::visit(Layout &layout) value = false; } else if(q.name=="local_size_x" || q.name=="local_size_y" || q.name=="local_size_z") + { allowed = (stage->type==Stage::COMPUTE && iface_layout && iface_layout->interface=="in"); + if(allowed) + have_workgroup_size = true; + } else if(q.name=="rgba32f" || q.name=="rgba16f" || q.name=="rg32f" || q.name=="rg16f" || q.name=="r32f" || q.name=="r16f" || q.name=="rgba16" || q.name=="rgba8" || q.name=="rg16" || q.name=="rg8" || q.name=="r16" || q.name=="r8" || q.name=="rgba16_snorm" || q.name=="rgba8_snorm" || q.name=="rg16_snorm" || q.name=="rg8_snorm" || q.name=="r16_snorm" || q.name=="r8_snorm")