NV_shader_atomic_fp16_vector
This commit is contained in:
parent
9fd0fcd737
commit
48702616ec
12 changed files with 937 additions and 28 deletions
|
|
@ -1465,6 +1465,20 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"\n");
|
||||
}
|
||||
|
||||
// NV_shader_atomic_fp16_vector
|
||||
if (profile != EEsProfile && version >= 430) {
|
||||
commonBuiltins.append(
|
||||
"f16vec2 atomicAdd(coherent volatile inout f16vec2, f16vec2);"
|
||||
"f16vec4 atomicAdd(coherent volatile inout f16vec4, f16vec4);"
|
||||
"f16vec2 atomicMin(coherent volatile inout f16vec2, f16vec2);"
|
||||
"f16vec4 atomicMin(coherent volatile inout f16vec4, f16vec4);"
|
||||
"f16vec2 atomicMax(coherent volatile inout f16vec2, f16vec2);"
|
||||
"f16vec4 atomicMax(coherent volatile inout f16vec4, f16vec4);"
|
||||
"f16vec2 atomicExchange(coherent volatile inout f16vec2, f16vec2);"
|
||||
"f16vec4 atomicExchange(coherent volatile inout f16vec4, f16vec4);"
|
||||
"\n");
|
||||
}
|
||||
|
||||
if ((profile == EEsProfile && version >= 300) ||
|
||||
(profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding
|
||||
commonBuiltins.append(
|
||||
|
|
@ -6678,6 +6692,34 @@ void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int
|
|||
commonBuiltins.append(imageParams);
|
||||
commonBuiltins.append(", float);\n");
|
||||
}
|
||||
|
||||
// GL_NV_shader_atomic_fp16_vector
|
||||
if (profile != EEsProfile && version >= 430) {
|
||||
const int numFp16Builtins = 4;
|
||||
const char* atomicFp16Func[numFp16Builtins] = {
|
||||
" imageAtomicAdd(volatile coherent ",
|
||||
" imageAtomicMin(volatile coherent ",
|
||||
" imageAtomicMax(volatile coherent ",
|
||||
" imageAtomicExchange(volatile coherent "
|
||||
};
|
||||
const int numFp16DataTypes = 2;
|
||||
const char* atomicFp16DataTypes[numFp16DataTypes] = {
|
||||
"f16vec2",
|
||||
"f16vec4"
|
||||
};
|
||||
// Loop twice to add prototypes with/without scope/semantics
|
||||
for (int j = 0; j < numFp16DataTypes; ++j) {
|
||||
for (int i = 0; i < numFp16Builtins; ++i) {
|
||||
commonBuiltins.append(atomicFp16DataTypes[j]);
|
||||
commonBuiltins.append(atomicFp16Func[i]);
|
||||
commonBuiltins.append(imageParams);
|
||||
commonBuiltins.append(", ");
|
||||
commonBuiltins.append(atomicFp16DataTypes[j]);
|
||||
commonBuiltins.append(");\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (profile != EEsProfile && version >= 450) {
|
||||
commonBuiltins.append("float imageAtomicAdd(volatile coherent ");
|
||||
commonBuiltins.append(imageParams);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue