@@ -24,6 +24,7 @@ implicitly supported.
2424
2525 "DirectX / HLSL", ".hlsl", "crosstl/translator/codegen/directx_codegen.py", "native", "crosstl/backend/DirectX", "tests/test_translator/test_codegen/test_directx_codegen.py, tests/test_backend/test_directx", "1071", "291", "Microsoft Learn HLSL reference; HLSL specification project"
2626 "OpenGL / GLSL", ".glsl", "crosstl/translator/codegen/GLSL_codegen.py", "native", "crosstl/backend/GLSL", "tests/test_translator/test_codegen/test_GLSL_codegen.py, tests/test_backend/test_GLSL", "1167", "177", "GLSL 4.60 specification; OpenGL registry"
27+ "WebGL / GLSL ES", ".webgl.glsl", "crosstl/translator/codegen/webgl_codegen.py", "target-only", "", "tests/test_translator/test_codegen/test_webgl_codegen.py", "7", "6", "WebGL 2.0 specification; OpenGL ES Shading Language 3.00 specification"
2728 "Metal", ".metal", "crosstl/translator/codegen/metal_codegen.py", "native", "crosstl/backend/Metal", "tests/test_translator/test_codegen/test_metal_codegen.py, tests/test_backend/test_metal", "962", "492", "Apple Metal resources; Metal Shading Language specification"
2829 "Vulkan SPIR-V", ".spvasm", "crosstl/translator/codegen/SPIRV_codegen.py", "native", "crosstl/backend/SPIRV", "tests/test_translator/test_codegen/test_SPIRV_codegen.py, tests/test_backend/test_SPIRV", "972", "36", "SPIR-V unified grammar; Khronos SPIR-V headers"
2930 "CUDA", ".cu", "crosstl/translator/codegen/cuda_codegen.py", "native", "crosstl/backend/CUDA", "tests/test_translator/test_codegen/test_CUDA_codegen.py, tests/test_backend/test_CUDA", "778", "194", "CUDA C++ programming guide"
@@ -37,6 +38,7 @@ implicitly supported.
3738
3839 "DirectX / HLSL", "42", "0", "1", "0", "0", "0"
3940 "OpenGL / GLSL", "42", "0", "1", "0", "0", "0"
41+ "WebGL / GLSL ES", "13", "0", "21", "9", "0", "0"
4042 "Metal", "41", "0", "2", "0", "0", "0"
4143 "Vulkan SPIR-V", "42", "0", "1", "0", "0", "0"
4244 "CUDA", "37", "0", "6", "0", "0", "0"
@@ -68,83 +70,83 @@ Feature Matrix
6870Each category below uses the status codes from the legend.
6971
7072.. csv-table :: target
71- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
73+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
7274
73- "CrossGL to target code generation", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
75+ "CrossGL to target code generation", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
7476
7577.. csv-table :: source
76- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
78+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
7779
78- "Native source to CrossGL", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
79- "Native lexer coverage", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
80- "Native preprocessor handling", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
80+ "Native source to CrossGL", "Y", "Y", "R", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
81+ "Native lexer coverage", "Y", "Y", "R", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
82+ "Native preprocessor handling", "Y", "Y", "R", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
8183
8284.. csv-table :: stages
83- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
85+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
8486
85- "Vertex stage", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
86- "Fragment/pixel stage", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
87- "Compute stage", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
88- "Geometry stage", "Y", "Y", "D", "Y", "D", "D", "D", "D", "Y"
89- "Tessellation stages", "Y", "D", "D", "Y", "D", "D", "D", "D", "Y"
90- "Mesh/task/amplification stages", "Y", "Y", "Y", "Y", "D", "D", "D", "D", "D"
91- "Ray tracing stages", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
87+ "Vertex stage", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
88+ "Fragment/pixel stage", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
89+ "Compute stage", "Y", "Y", "R", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
90+ "Geometry stage", "Y", "Y", "R", " D", "Y", "D", "D", "D", "D", "Y"
91+ "Tessellation stages", "Y", "D", "R", " D", "Y", "D", "D", "D", "D", "Y"
92+ "Mesh/task/amplification stages", "Y", "Y", "R", " Y", "Y", "D", "D", "D", "D", "D"
93+ "Ray tracing stages", "Y", "Y", "R", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
9294
9395.. csv-table :: stage I/O
94- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
96+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
9597
96- "Stage parameter semantics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
97- "Direct function return semantics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
98- "Struct member semantics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
98+ "Stage parameter semantics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
99+ "Direct function return semantics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
100+ "Struct member semantics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
99101
100102.. csv-table :: resources
101- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
103+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
102104
103- "Explicit and automatic resource bindings", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
104- "Constant/uniform buffers", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
105- "Structured/storage buffers", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
106- "Resource arrays", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
107- "Texture and sampler object model", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
108- "GLSL buffer block lowering", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
109- "Resource memory qualifiers", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
105+ "Explicit and automatic resource bindings", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
106+ "Constant/uniform buffers", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
107+ "Structured/storage buffers", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
108+ "Resource arrays", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
109+ "Texture and sampler object model", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
110+ "GLSL buffer block lowering", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
111+ "Resource memory qualifiers", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
110112
111113.. csv-table :: textures
112- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
113-
114- "Texture sampling", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
115- "Texture LOD, gradient, and offset operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
116- "Projected texture operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
117- "Texture gather operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
118- "Shadow compare texture operations", "Y", "Y", "Y", "Y", "D", "D", "Y", "Y", "Y"
119- "Texture query operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
120- "Texel fetch operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
121- "Multisample texture operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
122- "Advanced texture operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
114+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
115+
116+ "Texture sampling", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
117+ "Texture LOD, gradient, and offset operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
118+ "Projected texture operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
119+ "Texture gather operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
120+ "Shadow compare texture operations", "Y", "Y", "D", " Y", "Y", "D", "D", "Y", "Y", "Y"
121+ "Texture query operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
122+ "Texel fetch operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
123+ "Multisample texture operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
124+ "Advanced texture operations", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
123125
124126.. csv-table :: images
125- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
127+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
126128
127- "Storage image load/store", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
128- "Image atomics", "Y", "Y", "Y", "Y", "D", "D", "Y", "Y", "Y"
129- "Multisample storage images", "D", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
129+ "Storage image load/store", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
130+ "Image atomics", "Y", "Y", "D", " Y", "Y", "D", "D", "Y", "Y", "Y"
131+ "Multisample storage images", "D", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
130132
131133.. csv-table :: language
132- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
133-
134- "Struct declarations and construction", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
135- "Array declarations and access", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
136- "Function declarations and calls", "Y", "Y", "Y", "D", "D", "D", "D", "Y", "D"
137- "Control flow", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
138- "Synchronization and memory barriers", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
139- "Wave/subgroup intrinsics", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
140- "Match/pattern lowering", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
141- "Vector and matrix expressions", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
142- "Bitwise operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
134+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
135+
136+ "Struct declarations and construction", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
137+ "Array declarations and access", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
138+ "Function declarations and calls", "Y", "Y", "Y", "Y", " D", "D", "D", "D", "Y", "D"
139+ "Control flow", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
140+ "Synchronization and memory barriers", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
141+ "Wave/subgroup intrinsics", "Y", "Y", "R", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
142+ "Match/pattern lowering", "Y", "Y", "D", " Y", "Y", "Y", "Y", "Y", "Y", "Y"
143+ "Vector and matrix expressions", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
144+ "Bitwise operations", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
143145
144146.. csv-table :: validation
145- :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
147+ :header: "Feature", "DirectX / HLSL", "OpenGL / GLSL", "WebGL / GLSL ES", " Metal", "Vulkan SPIR-V", "CUDA", "HIP", "Mojo", "Rust", "Slang"
146148
147- "Invalid shader shape validation", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
149+ "Invalid shader shape validation", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y", "Y"
148150
149151Backlog
150152-------
@@ -170,6 +172,8 @@ changes must be reviewed and committed in the source catalog.
170172 "DirectX / HLSL", "HLSL specification project", "https://microsoft.github.io/hlsl-specs/"
171173 "OpenGL / GLSL", "GLSL 4.60 specification", "https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/main/specs/gl/GLSLangSpec.4.60.html"
172174 "OpenGL / GLSL", "OpenGL registry", "https://github.com/KhronosGroup/OpenGL-Registry"
175+ "WebGL / GLSL ES", "WebGL 2.0 specification", "https://registry.khronos.org/webgl/specs/latest/2.0/"
176+ "WebGL / GLSL ES", "OpenGL ES Shading Language 3.00 specification", "https://registry.khronos.org/OpenGL/specs/es/3.0/GLSL_ES_Specification_3.00.pdf"
173177 "Metal", "Apple Metal resources", "https://developer.apple.com/metal/resources/"
174178 "Metal", "Metal Shading Language specification", "https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf"
175179 "Vulkan SPIR-V", "SPIR-V unified grammar", "https://raw.githubusercontent.com/KhronosGroup/SPIRV-Headers/main/include/spirv/unified1/spirv.core.grammar.json"
0 commit comments