[Vulkan] Vulkan controller moved to the API
[platform/core/uifw/dali-core.git] / dali / graphics / vulkan / scripts / shader-gen.sh
1 #!/bin/bash
2
3
4 . setenv-local
5
6 shaders_dir=./dali-core/dali/graphics/vulkan/shaders
7 generated_dir=./dali-core/dali/graphics/vulkan/generated
8
9 shaders="
10 ${shaders_dir}/basic-shader.vert|VSH_CODE|vert
11 ${shaders_dir}/basic-shader.frag|FSH_CODE|frag
12 ${shaders_dir}/image-visual-shader.vert|VSH_IMAGE_VISUAL_CODE|vert
13 ${shaders_dir}/image-visual-shader.frag|FSH_IMAGE_VISUAL_CODE|frag"
14
15 echo "// Autogenerated" > ${generated_dir}/spv-shaders-gen.h
16 echo -e "#ifndef SPV_GENERATED_HEADER
17 #define SPV_GENERATED_HEADER
18 #include <vector>\n#include <cstdint>\n\n" >> ${generated_dir}/spv-shaders-gen.h
19
20 echo "// Autogenerated" > ${generated_dir}/spv-shaders-gen.cpp
21 echo "#include \"spv-shaders-gen.h\"" > ${generated_dir}/spv-shaders-gen.cpp
22 echo "#pragma GCC diagnostic push
23 #pragma GCC diagnostic ignored \"-Wlarger-than=\"" >> ${generated_dir}/spv-shaders-gen.cpp
24
25 for f in ${shaders} ; do
26     fname=$(echo $f | awk -F '|' '{print $1}')
27     varname=$(echo $f | awk -F '|' '{print $2}')
28     stagename=$(echo $f | awk -F '|' '{print $3}')
29     out=/tmp/$(basename ${fname}).spv
30     ${VULKAN_SDK}/bin/glslangValidator -V1.0 -S ${stagename} ${fname} -o ${out}
31     echo "std::vector<uint8_t> $varname = {" >> ${generated_dir}/spv-shaders-gen.cpp
32     xxd -i ${out} | tail -n +2 | head -n -2 >> ${generated_dir}/spv-shaders-gen.cpp
33     echo "};" >> ${generated_dir}/spv-shaders-gen.cpp
34     echo "extern std::vector<uint8_t> $varname;" >> ${generated_dir}/spv-shaders-gen.h
35
36     echo "/*" >> ${generated_dir}/spv-shaders-gen.h
37     cat $fname >> ${generated_dir}/spv-shaders-gen.h
38     echo -e "*/\n\n" >> ${generated_dir}/spv-shaders-gen.h
39
40 done
41
42 echo "#pragma GCC diagnostic pop" >> ${generated_dir}/spv-shaders-gen.cpp
43
44 echo -e "#endif // SPV_GENERATED_HEADER\n\n" >> ${generated_dir}/spv-shaders-gen.h
45
46
47
48
49