Add support for primitive culling layout qualifier. (#2220)
* Add support for primitive culling layout qualifier. * Add error checks for primitive flags and negative test.
This commit is contained in:
parent
eba1389a01
commit
59216d5cd8
9 changed files with 50 additions and 2 deletions
|
|
@ -5173,6 +5173,12 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (id == "primitive_culling") {
|
||||
requireExtensions(loc, 1, &E_GL_EXT_ray_flags_primitive_culling, "primitive culling");
|
||||
publicType.shaderQualifiers.layoutPrimitiveCulling = true;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), "");
|
||||
|
|
@ -6104,6 +6110,8 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua
|
|||
error(loc, message, "num_views", "");
|
||||
if (shaderQualifiers.interlockOrdering != EioNone)
|
||||
error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), "");
|
||||
if (shaderQualifiers.layoutPrimitiveCulling)
|
||||
error(loc, "can only be applied as standalone", "primitive_culling", "");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -8368,6 +8376,16 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
|
|||
{
|
||||
checkIoArraysConsistency(loc);
|
||||
}
|
||||
|
||||
if (publicType.shaderQualifiers.layoutPrimitiveCulling) {
|
||||
if (publicType.qualifier.storage != EvqTemporary)
|
||||
error(loc, "layout qualifier can not have storage qualifiers", "primitive_culling","", "");
|
||||
else {
|
||||
intermediate.setLayoutPrimitiveCulling();
|
||||
}
|
||||
// Exit early as further checks are not valid
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
const TQualifier& qualifier = publicType.qualifier;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue