return;
}
-#ifdef NV_EXTENSIONS
- if (!checkShaderStageForNVExtensions(getCurrentLoc(), extension))
- return;
-#endif
+ // check if extension is used with correct shader stage
+ checkExtensionStage(getCurrentLoc(), extension);
// update the requested extension
updateExtensionBehavior(extension, behavior);
}
}
-#ifdef NV_EXTENSIONS
// Check if extension is used with correct shader stage.
-bool TParseVersions::checkShaderStageForNVExtensions(const TSourceLoc& loc, const char * const extension)
+void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * const extension)
{
- int lNumErrors = getNumErrors();
-
+#ifdef NV_EXTENSIONS
// GL_NV_mesh_shader extension is only allowed in task/mesh shaders
if (strcmp(extension, "GL_NV_mesh_shader") == 0)
requireStage(loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask),
"#extension GL_NV_mesh_shader");
-
- // TODO: need to add error checks for other nvidia turing extensions
-
- if (getNumErrors() > lNumErrors)
- return false;
- return true;
-}
#endif
+}
// Call for any operation needing full GLSL integer data-type support.
void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op)
virtual void requireSpv(const TSourceLoc&, const char* op);
virtual bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc);
virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior);
-#ifdef NV_EXTENSIONS
- virtual bool checkShaderStageForNVExtensions(const TSourceLoc&, const char* const extension);
-#endif
+ virtual void checkExtensionStage(const TSourceLoc&, const char* const extension);
virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...) = 0;