summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2024-07-23 02:22:32 -0700
committerGitHub <noreply@github.com>2024-07-23 02:22:32 -0700
commit15f091aabf5b6f8d37d292dab150395d8a37d644 (patch)
treec2a421ca1b4332f9f9b9d3690140e4c28db3b261 /docs
parent4ae58a720e6f8d63ff5c74fd14f630137dfd0c0c (diff)
Add Metal to user-guide/09-targets.md (#4703)
* Add Metal to user-guide/09-targets.md Partially resolves #4262 The description of "Parameter passing" part for Metal is related to PR #4022
Diffstat (limited to 'docs')
-rw-r--r--docs/user-guide/09-targets.md22
-rw-r--r--docs/user-guide/toc.html3
2 files changed, 24 insertions, 1 deletions
diff --git a/docs/user-guide/09-targets.md b/docs/user-guide/09-targets.md
index 61735d4bb..e1219a39d 100644
--- a/docs/user-guide/09-targets.md
+++ b/docs/user-guide/09-targets.md
@@ -296,6 +296,28 @@ The binding index of a parameter is the zero-based index of the slot (of the app
Note that while OpenGL and Vulkan both use binding indices for shader parameters like textures, the semantics of those are different because OpenGL uses distinct slots for passing buffers and textures.
For OpenGL it is legal to have a texture that uses `binding=2` and a buffer that uses `binding=2` in the same kernel, because those are indices of distinct kinds of slots, while this scenario would typically be invalid for Vulkan.
+Metal
+-----
+
+> #### Note ####
+> Slang support for Metal is a work in progress.
+
+Metal is a shading language exclusive on Apple slicons. The functionality from Metal is similar to DX12 or Vulkan with more or less features.
+
+### Pipelines
+
+Metal includes rasterization, compute, and ray tracing pipelines with the same set of stages as described for D3D12 above.
+
+> #### Note ####
+> Ray-tracing and Mesh support for Metal is a work in progress.
+
+### Parameter Passing
+
+Metal uses slots for binding resources, and it has three types of bindings: buffer, texture and sampler.
+In addition, it has argument buffer which is itself a buffer, but any further resource members of the argument buffer does not occupy any explicit binding points, and instead set via an offset within the buffer referred to as id in the metal spec.
+
+Note that Metal 3.1 currently doesn't support arrays of buffers.
+
CUDA and OptiX
--------------
diff --git a/docs/user-guide/toc.html b/docs/user-guide/toc.html
index c1915e5dc..ca6aac92a 100644
--- a/docs/user-guide/toc.html
+++ b/docs/user-guide/toc.html
@@ -39,7 +39,7 @@
<li data-link="convenience-features#operator-overloading"><span>Operator Overloading</span></li>
<li data-link="convenience-features#subscript-operator"><span>Subscript Operator</span></li>
<li data-link="convenience-features#optionalt-type"><span>`Optional&lt;T&gt;` type</span></li>
-<li data-link="convenience-features#if_let-syntax"><span>`if_let` syntax</span></li>
+<li data-link="convenience-features#if-let-syntax"><span>`if_let` syntax</span></li>
<li data-link="convenience-features#reinterprett-operation"><span>`reinterpret&lt;T&gt;` operation</span></li>
<li data-link="convenience-features#pointers-limited"><span>Pointers (limited)</span></li>
<li data-link="convenience-features#struct-inheritance-limited"><span>`struct` inheritance (limited)</span></li>
@@ -126,6 +126,7 @@
<li data-link="targets#direct3d-12"><span>Direct3D 12</span></li>
<li data-link="targets#vulkan"><span>Vulkan</span></li>
<li data-link="targets#opengl"><span>OpenGL</span></li>
+<li data-link="targets#metal"><span>Metal</span></li>
<li data-link="targets#cuda-and-optix"><span>CUDA and OptiX</span></li>
<li data-link="targets#cpu-compute"><span>CPU Compute</span></li>
<li data-link="targets#summary"><span>Summary</span></li>