X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Fvalidate.cpp;h=d669b2370e08bbb9032d02d308a6377210dd0fa4;hb=30c7ba8f7fd08c13562c86bf651bdc3ec8d30ab5;hp=883b950ff07f2e46d9aa0037ddfce2fa2719c425;hpb=89f26eba675defb38542faacacde6b9d4a2248c5;p=libs%2Fgl.git diff --git a/source/glsl/validate.cpp b/source/glsl/validate.cpp index 883b950f..d669b237 100644 --- a/source/glsl/validate.cpp +++ b/source/glsl/validate.cpp @@ -156,6 +156,22 @@ void DeclarationValidator::visit(Layout &layout) allowed = (iface_block && !variable && iface_block->interface=="uniform"); 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"); + 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") + { + allowed = variable; + value = false; + if(allowed) + { + const TypeDeclaration *base_type = get_ultimate_base_type(variable->type_declaration); + const ImageTypeDeclaration *image = dynamic_cast(base_type); + allowed = (image && !image->sampled); + err_descr = (image ? "sampled image" : "non-image variable"); + } + } if(!allowed) {