| # Chromium Internal Input Attachments | |
| The `chromium_internal_input_attachments` extension adds support for input attachment global variables to WGSL. | |
| This is similar to Vulkan's `subpassInput` variable. | |
| ## Status | |
| Input attachments support in Tint is highly experimental and only meant to be used in internal transforms at this stage. | |
| This extension is only relevant to SPIRV backend atm. | |
| Specification work in the WebGPU group hasn't started. | |
| ## Pseudo-specification | |
| This extension adds: | |
| - A new `input_attachment<T>` type in the `handle` address space, where `T` is `u32`, `i32` or `f32`. It's only allowed on module-scoped variable declarations. | |
| - This will be mapped to `OpTypeImage` with Dim=`SubpassData` in SPIRV. | |
| - A new `input_attachment_index(n)` attribute where `n` is a `u32` or `i32` with a positive value. Unlike `binding` which specifies the binding point in a BindGroup, this attribute specifies the index of the input attachment in the render pass descriptor. This is required for `input_attachment<T>` type. | |
| - This is equivalent to `InputAttachmentIndex` decoration in SPIRV. | |
| - A new `inputAttachmentLoad` builtin function with signature: | |
| `inputAttachmentLoad(input_attachment<T>) -> vec4<T>` | |
| - This will emit `OpImageRead` function call in SPIRV. | |
| - All of the above are only available in fragment state. | |
| ## Example usage | |
| ``` | |
| @group(0) @binding(0) @input_attachment_index(0) | |
| var input_tex : input_attachment<f32>; | |
| @fragment fn main() -> @location(0) vec4f { | |
| return inputAttachmentLoad(input_tex); | |
| } | |
| ``` |