google / google/shaderc

glslc: GL_NV_shader_atomic_fp16_vector requires float16 arithmetic type

Open
#1,450 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.