digitalmars.D.announce - Dcompute on OpenGL / HLSL compute
- Nicholas Wilson (30/30) Sep 08 2021 I'm happy to announce that I've managed to generate OpenGL
I'm happy to announce that I've managed to generate OpenGL compute shaders from the OpenCL compilation pipeline. Through the use of https://github.com/KhronosGroup/SPIRV-Cross the means that we can generate GLSL, HLSL and MSL source The setup and compilation steps is very janky at the moment but does produce legit looking GLSL/HLSL. I say looks, because I lack the means to run it at the moment. This will hopefully become less janky in the future. To produce a compute shader source you will need: ldc built with https://github.com/KhronosGroup/SPIRV-LLVM-Translator as with the regular means of producing OpenCL SPIR-V, https://github.com/google/clspv/ with https://github.com/google/clspv/pull/764 applied to convert the OpenCL SPIR-V to OpenGL compute SPIR-V and https://github.com/KhronosGroup/SPIRV-Cross to convert the resulting GL compute SPIR-V to HLSL/MSL if desired. The full compilation steps are then (I did say it was janky): ``` ldc2 --mdcompute-targets=ocl-200 -m32 ./kernel.d other_files.d -Iother_imports llvm-spirv -r kernels_ocl200_32.spv llvm-dis kernels_ocl200_32.bc clspv -x=ir kernels_ocl200_32.ll spirv-cross --hlsl a.spv --output a.hlsl ``` 32-bit mode for ldc is required because only 32-bit OpenCL SPIR-V can be converted into OpenGL compute SPIR-V. If `-m32` doesn't work the you may have to supply an equivalent `-mtriple`
Sep 08 2021