// Call for any operation needing GLSL float16 data-type support. void TParseVersions::float16Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { requireExtensions(loc, 1, &E_GL_AMD_gpu_shader_half_float, "shader half float"); requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); profileRequires(loc, ECoreProfile, 450, nullptr, op); profileRequires(loc, ECompatibilityProfile, 450, nullptr, op); } }
// Call for any operation needing GLSL 64-bit integer data-type support. void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool builtIn) { if (! builtIn) { requireExtensions(loc, 1, &E_GL_ARB_gpu_shader_int64, "shader int64"); requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); profileRequires(loc, ECoreProfile, 450, nullptr, op); profileRequires(loc, ECompatibilityProfile, 450, nullptr, op); } }
// Call for any operation needing GLSL double data-type support. void TParseVersions::doubleCheck(const TSourceLoc& loc, const char* op) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); profileRequires(loc, ECoreProfile, 400, nullptr, op); profileRequires(loc, ECompatibilityProfile, 400, nullptr, op); }
// Call for any operation needing full GLSL integer data-type support. void TParseVersions::fullIntegerCheck(const TSourceLoc& loc, const char* op) { profileRequires(loc, ENoProfile, 130, nullptr, op); profileRequires(loc, EEsProfile, 300, nullptr, op); }
// entry point for the above that takes a single extension void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, const char* featureDesc) { profileRequires(loc, profileMask, minVersion, extension ? 1 : 0, &extension, featureDesc); }
// // Call for any operation needing GLSL double data-type support. // void TParseContext::doubleCheck(TSourceLoc loc, const char* op) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, op); profileRequires(loc, ECoreProfile, 400, nullptr, op); profileRequires(loc, ECompatibilityProfile, 400, nullptr, op); }
// // Call for any operation needing full GLSL integer data-type support. // void TParseContext::fullIntegerCheck(TSourceLoc loc, const char* op) { profileRequires(loc, ENoProfile, 130, nullptr, op); profileRequires(loc, EEsProfile, 300, nullptr, op); }