In Vulkan, all pipelines require corresponding SPIR-V (intermediate) binaries.
We write (a lot of) GLSL (.comp) and compile them to SPIR-V (.spv) during build.
As far as I know, GLSL doesn't have library (import/include) system, so that there are so many duplicated codes.
Additionally, there is no template nor generics, therefore if we want to support other data type such as 16bit float, we have to write all supported operation codes once again.
Apparently, we need better frontend language and/or build system for SPIR-V generation, otherwise we cannot maintain them.
In Vulkan, all pipelines require corresponding SPIR-V (intermediate) binaries. We write (a lot of) GLSL (
.comp
) and compile them to SPIR-V (.spv
) during build.As far as I know, GLSL doesn't have library (import/include) system, so that there are so many duplicated codes.
Additionally, there is no template nor generics, therefore if we want to support other data type such as 16bit float, we have to write all supported operation codes once again.
Apparently, we need better frontend language and/or build system for SPIR-V generation, otherwise we cannot maintain them.