On Wed, 2015-03-04 at 14:36 +0000, BogDan wrote: > Hello folks, > > > Probably is a little bit too early, but I'd like to ask if there is > any chance to use gcc to produce SPIR-V [1]. > It will be just great if we'll be able to write our shaders in e.g. > C/C++/(any language supported by gcc) and use GCC to compile them as > SPIR-V! > It will be fantastic to use only one compiler collection for CPU and > for GPU compute&graphics! > > Cheers, > > BogDan. > [1] https://www.khronos.org/registry/spir-v/
I work on gcc, but in a former life I was a game developer [1], so this piqued my interest :) A few questions: (A) Does SPIR-V have an assembler? The URL you posted talks about it being a binary format, but the example in there shows a "disassembled" textual form. The reason I ask is that the internals of gcc's backend expect to be writing out "assembler", which then goes through an assembler program to produce a binary. In theory I guess one could have the "assembler" format generated by the backend be binary, but it's likely to be *much* easier to hack on if there's an intermediate textual form. (B) Are you thinking about this for primarly ahead-of-time compilation, or are you interested in just-in-time compilation to SPIR-V? I ask since I maintain the new "libgccjit" feature in GCC 5. One of the current assumptions in libgccjit is that host==target, but I hope to relax that for gcc 6 so that libgccjit could e.g. generate code for a GPU. Another gcc 6 possibility could be multi-target support for libgccjit, so that you can populate a gcc_jit_context with code, then have it generate machine code for both the CPU and for the GPU (mostly just thinking aloud here). (C) (probably most important) Is a SPIR-V backend something you'd be up for working on? Any other volunteers out there? (Maybe a GSoC thing?) Dave [1] e.g. http://en.wikipedia.org/wiki/Aliens_versus_Predator_% 281999_video_game%29