1.2 KiB
Chromium Experimental Push Constant
The chromium_experimental_push_constant
extension adds support for push constant global variables to WGSL.
Push constants are small amounts of data that are passed to the shader and are expected to be more lightweight to set / modify than uniform buffer bindings.
The concept of push constant comes from Vulkan but D3D12 has similar "root constants".
Metal doesn't have the same concept but push constants can be efficiently implemented with the setBytes
family of command encoder methods.
Status
Push constant support in Tint is highly experimental and only meant to be used in internal transforms at this stage. Specification work in the WebGPU group hasn't started.
Pseudo-specification
This extension adds a new push_constant
address space that's only allowed on global variable declarations.
Push constant variables must only contain 32bit data types (or aggregates of such types).
Push constant variable declarations must not have an initializer.
It is an error for a entry point to statically use more than one push_constant
variable.
Example usage
var<push_constant> draw_id : u32;
@fragment fn main() -> u32 {
return draw_id;
}