diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pipeline/common.ts')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pipeline/common.ts | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pipeline/common.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pipeline/common.ts new file mode 100644 index 0000000000..93b0932042 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/webgpu/api/validation/render_pipeline/common.ts @@ -0,0 +1,68 @@ +import { kTextureFormatInfo } from '../../../format_info.js'; +import { + getFragmentShaderCodeWithOutput, + getPlainTypeInfo, + kDefaultVertexShaderCode, +} from '../../../util/shader.js'; +import { ValidationTest } from '../validation_test.js'; + +const values = [0, 1, 0, 1]; +export class CreateRenderPipelineValidationTest extends ValidationTest { + getDescriptor( + options: { + primitive?: GPUPrimitiveState; + targets?: GPUColorTargetState[]; + multisample?: GPUMultisampleState; + depthStencil?: GPUDepthStencilState; + fragmentShaderCode?: string; + noFragment?: boolean; + fragmentConstants?: Record<string, GPUPipelineConstantValue>; + } = {} + ): GPURenderPipelineDescriptor { + const defaultTargets: GPUColorTargetState[] = [{ format: 'rgba8unorm' }]; + const { + primitive = {}, + targets = defaultTargets, + multisample = {}, + depthStencil, + fragmentShaderCode = getFragmentShaderCodeWithOutput([ + { + values, + plainType: getPlainTypeInfo( + kTextureFormatInfo[targets[0] ? targets[0].format : 'rgba8unorm'].sampleType + ), + componentCount: 4, + }, + ]), + noFragment = false, + fragmentConstants = {}, + } = options; + + return { + vertex: { + module: this.device.createShaderModule({ + code: kDefaultVertexShaderCode, + }), + entryPoint: 'main', + }, + fragment: noFragment + ? undefined + : { + module: this.device.createShaderModule({ + code: fragmentShaderCode, + }), + entryPoint: 'main', + targets, + constants: fragmentConstants, + }, + layout: this.getPipelineLayout(), + primitive, + multisample, + depthStencil, + }; + } + + getPipelineLayout(): GPUPipelineLayout { + return this.device.createPipelineLayout({ bindGroupLayouts: [] }); + } +} |