|  | # 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); | 
|  | } | 
|  | ``` |