title: Metal for Linux; How to create a shader compiler, given a GPU document
body: <p>Is there any open source project trying to implement Apple's Metal shading language specification <a href="https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf" rel="nofollow noreferrer">https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf</a> for <code>Linux</code>? I am a <code>C++</code> habitat; not liking <code>Vulkan</code> much.</p>
  <p>Does Apple's Metal compiler compiles the shader into an intermediate representation like <code>SPIR-V</code>. I even don't know much about <code>SPIR-V</code>. I even don't know much about <code>GPU</code> hardware implementation but I know how <code>SIMD</code> is achieved in GPUs for various transforms. Does it have some instruction set like <code>CPU</code>? Is SPIR-V different from an instruction set?</p>
  <p>I got my MacBook's i5-5257u processor architecture document; I want to implement Metal shading language specification for Linux; I have just written a software 3D graphics renderer.</p>
  <p>An answer with brief on various GPU interface components that should go into a <code>Fragment</code>, <code>Vertex</code>, <code>Geometry</code> shader compiler should fit here.</p>