diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/call/builtin/utils.ts')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/call/builtin/utils.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/call/builtin/utils.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/call/builtin/utils.ts new file mode 100644 index 0000000000..9cbee00939 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/execution/expression/call/builtin/utils.ts @@ -0,0 +1,45 @@ +/** + * Generates the boundary entries for the given number of dimensions + * + * @param numDimensions: The number of dimensions to generate for + * @returns an array of generated coord boundaries + */ +export function generateCoordBoundaries(numDimensions: number) { + const ret = ['in-bounds']; + + if (numDimensions < 1 || numDimensions > 3) { + throw new Error(`invalid numDimensions: ${numDimensions}`); + } + + const name = 'xyz'; + for (let i = 0; i < numDimensions; ++i) { + for (const j of ['min', 'max']) { + for (const k of ['wrap', 'boundary']) { + ret.push(`${name[i]}-${j}-${k}`); + } + } + } + + return ret; +} + +/** + * Generates a set of offset values to attempt in the range [-9, 8]. + * + * @param numDimensions: The number of dimensions to generate for + * @return an array of generated offset values + */ +export function generateOffsets(numDimensions: number) { + if (numDimensions < 2 || numDimensions > 3) { + throw new Error(`generateOffsets: invalid numDimensions: ${numDimensions}`); + } + const ret: Array<undefined | Array<number>> = [undefined]; + for (const val of [-9, -8, 0, 1, 7, 8]) { + const v = []; + for (let i = 0; i < numDimensions; ++i) { + v.push(val); + } + ret.push(v); + } + return ret; +} |