glslc: GL_NV_shader_atomic_fp16_vector requires float16 arithmetic type
- Dominant language
- C++
- Stars
- 2.2k
- Forks
- 445
- Avg merge
- 11h 6m
- Merged PRs (30d)
- 6
Description
The `imageAtomic` functions added by `GL_NV_shader_atomic_fp16_vector` require the argument to be cast to f16vec4, however by default that throws the following error:
```
error: 'built-in function: float16 types can only be in uniform block or buffer storage' : required extension not requested: Possible extensions include:
GL_AMD_gpu_shader_half_float
GL_EXT_shader_explicit_arithmetic_types
GL_EXT_shader_explicit_arithmetic_types_float16
```
Enabling `GL_EXT_shader_explicit_arithmetic_types_float16` does fix the error, however it leads to a validation error during runtime because my GTX 970 doesn't support arithmetic float16 operations.
This might be an oversight in the spec (I'm not sure if the generated SPIR-V is even valid if it doesn't declare Float16 support) but in case it's not, using f16vec4 as a constructor in `imageAtomic` should not throw an error with `GL_NV_shader_atomic_fp16_vector` and/or `GL_EXT_shader_16bit_storage`.
Contributor guide
Assessment
This issue has not been assessed yet.