feat(wgsl): Add wgsl support

This commit is contained in:
Danielkonge 2024-05-26 17:25:38 +02:00
parent 6bfbaef4a4
commit 6d3371d66c
3 changed files with 108 additions and 0 deletions

View file

@ -100,6 +100,7 @@
---@field vim (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field vimdoc (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field vue (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field wgsl (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field yaml (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---@field zig (rainbow_delimiters.strategy | fun(bufnr: integer): rainbow_delimiters.strategy?)?
---User defined language, not part of rainbow_delimiters support
@ -167,6 +168,7 @@
---@field vim (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field vimdoc (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field vue (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field wgsl (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field yaml (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---@field zig (('rainbow-delimiters' | string) | fun(bufnr: integer): ('rainbow-delimiters' | string))?
---User defined language, not part of rainbow_delimiters support
@ -234,6 +236,7 @@
---@field vim (integer | fun(bufnr: integer): integer)?
---@field vimdoc (integer | fun(bufnr: integer): integer)?
---@field vue (integer | fun(bufnr: integer): integer)?
---@field wgsl (integer | fun(bufnr: integer): integer)?
---@field yaml (integer | fun(bufnr: integer): integer)?
---@field zig (integer | fun(bufnr: integer): integer)?
---User defined language, not part of rainbow_delimiters support
@ -301,6 +304,7 @@
---| 'vim'
---| 'vimdoc'
---| 'vue'
---| 'wgsl'
---| 'yaml'
---| 'zig'
---User defined language, not part of rainbow_delimiters support

View file

@ -0,0 +1,47 @@
(argument_list_expression
"(" @delimiter
")" @delimiter @sentinel) @container
(attribute
"(" @delimiter
")" @delimiter @sentinel) @container
(compound_statement
"{" @delimiter
"}" @delimiter @sentinel) @container
(function_declaration
"(" @delimiter
")" @delimiter @sentinel) @container
(for_statement
"(" @delimiter
")" @delimiter @sentinel) @container
(loop_statement
"{" @delimiter
"}" @delimiter @sentinel) @container
(parenthesized_expression
"(" @delimiter
")" @delimiter @sentinel) @container
(postfix_expression
"[" @delimiter
"]" @delimiter @sentinel) @container
(struct_declaration
"{" @delimiter
"}" @delimiter @sentinel) @container
(subscript_expression
"[" @delimiter
"]" @delimiter @sentinel) @container
(type_declaration
"<" @delimiter
">" @delimiter @sentinel) @container
(variable_qualifier
"<" @delimiter
">" @delimiter @sentinel) @container

View file

@ -0,0 +1,57 @@
@group(0)
@binding(0)
var<storage, read> array_1: array<u32, 10>;
@group(0)
@binding(1)
var<uniform> array_2: array<vec4<u32>, 256>;
@group(1)
@binding(0)
var<storage, read_write> array_3: array<vec2<f32>, 100>;
struct MyStruct {
x: f32,
y: f32,
i: u32,
j: u32,
}
fn next_bit_string_same_hamming_weight(bit_string: u32) -> u32 {
let t = bit_string | (bit_string - 1u); // bit_string with least significant 0 set to 1
let tmp = (~t & (0u - ~t)) - 1u;
return (t+1) | (tmp >> (countTrailingZeros(bit_string) + 1u));
}
fn function_with_loop(a: u32, b_ptr: ptr<function, u32>) {
var bits = a;
loop {
if (bits & 3u) == 0u {
return;
} else {
bits = bits - 1u;
*b_ptr += 1u;
}
}
}
@compute
@workgroup_size(32)
fn main(
@builtin(global_invocation_id) global_id: vec3<u32>,
) {
let start = 10 * global_id.x;
if (global_id.x >= 10) { return; }
var a = array_1[global_id.x];
let end = start + 10;
for (var id = start; id < end; id += 1u) {
if (id >= 100) { return; }
var b = array_3[id].x;
array_3[id].y = a + b;
}
}