Returns the (case+subcase) parameters for this test function invocation.
GPUQueue for the test to use. (Same as t.device.queue.)
Gets the test fixture's shared state. This object is shared between subcases within the same testcase.
Gets a device with the adapter a requested limit and checks that that limit is correct or that the device failed to create if the requested limit is beyond the maximum supported by the device.
Optional extraLimits: LimitsRequestOptional features: GPUFeatureName[]Gets a device with the adapter a requested limit and checks that that limit is correct or that the device failed to create if the requested limit is beyond the maximum supported by the device.
Optional extraLimits: LimitsRequestOptional features: GPUFeatureName[]Call the given function and check no WebGPU errors are leaked.
Emulate a texture to buffer copy by using a compute shader to load texture values of a subregion of a 2d texture and write to a storage buffer. For sample count == 1, the buffer contains extent[0] * extent[1] of the sample. For sample count > 1, the buffer contains extent[0] * extent[1] * (N = sampleCount) values sorted in the order of their sample index [0, sampleCount - 1]
This can be useful when the texture to buffer copy is not available to the texture format e.g. (depth24plus), or when the texture is multisampled.
MAINTENANCE_TODO: extend texture dimension to 1d and 3d.
storage buffer containing the copied value from the texture.
Returns a GPUCommandEncoder, GPUComputePassEncoder, GPURenderPassEncoder, or
GPURenderBundleEncoder, and a finish method returning a GPUCommandBuffer.
Allows testing methods which have the same signature across multiple encoder interfaces.
Optional attachmentOptional occlusionOptional targets?: GPUTextureView[]g.test('popDebugGroup')
.params(u => u.combine('encoderType', kEncoderTypes))
.fn(t => {
const { encoder, finish } = t.createEncoder(t.params.encoderType);
encoder.popDebugGroup();
});
g.test('writeTimestamp')
.params(u => u.combine('encoderType', ['non-pass', 'compute pass', 'render pass'] as const)
.fn(t => {
const { encoder, finish } = t.createEncoder(t.params.encoderType);
// Encoder type is inferred, so `writeTimestamp` can be used even though it doesn't exist
// on GPURenderBundleEncoder.
encoder.writeTimestamp(args);
});
Wraps an async function, passing it an Error object recording the original stack trace.
The async work will be implicitly waited upon before reporting a test status.
Expect that a condition is true.
Note: You can pass a boolean condition, or a function that returns a boolean. The advantage to passing a function is that if it's short it is self documenting.
t.expect(size >= maxSize); // prints Expect OK: t.expect(() => size >= maxSize) // prints Expect OK: () => size >= maxSize
Optional msg: stringExpect a buffer to consist exclusively of rows of some repeated expected value. The size of
expectedValue must be 1, 2, or any multiple of 4 bytes. Rows in the buffer are expected to be
zero-padded out to bytesPerRow. minBytesPerRow is the number of bytes per row that contain
actual (non-padding) data and must be an exact multiple of the byte-length of expectedValue.
Expect a GPUBuffer's contents to equal the values in the provided TypedArray.
Optional method?: "map" | "copy"Optional mode?: "fail" | "warn"Expect a GPUBuffer's contents to pass the provided check.
A library of checks can be found in webgpu/util/check_contents.
Optional method?: "map" | "copy"Optional mode?: "fail" | "warn"Optional srcIf the argument is an Error, fail (or warn). If it's undefined, no-op.
If the argument is an array, apply the above behavior on each of elements.
Optional mode?: "fail" | "warn"Optional niceExpect an entire GPUTexture to have a single color at the given mip level (defaults to 0). MAINTENANCE_TODO: Remove this and/or replace it with a helper in TextureTestMixin.
Optional dimension?: GPUTextureDimensionOptional layout?: LayoutOptionsOptional slice?: numberTake a single pixel of a 2D texture, interpret it using a TypedArray of the expected type,
and expect each value in that array to be between the corresponding "expected" values
(either a[i] <= actual[i] <= b[i] or a[i] >= actual[i] => b[i]).
MAINTENANCE_TODO: Remove this once there is a way to deal with undefined lerp-ed values.
Optional checkOptional generateOptional layout?: LayoutOptionsOptional slice?: numberExpect a validation error or exception inside the callback.
Tests should always do just one WebGPU call in the callback, to make sure that's what's tested.
Readonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly maxReadonly minReadonly minreturns true if the langFeature is supported
Creates a buffer with the contents of some TypedArray. The buffer size will always be aligned to 4 as we set mappedAtCreation === true when creating the buffer.
MAINTENANCE_TODO: Several call sites would be simplified if this took ArrayBuffer as well.
Snapshot the current contents of a range of a GPUBuffer, and return them as a TypedArray. Also provides a cleanup() function to unmap and destroy the staging buffer.
Optional method?: "map" | "copy"Optional srcExpect that the provided promise rejects, with the provided exception name.
Expect that the provided function throws (if true or string) or not (if false).
If a string is provided, expect that the throw exception has that name.
MAINTENANCE_TODO: Change to string | false so the exception name is always checked.
Skips this test case if the langFeature is not supported.
Skips this test case if the langFeature is supported.
Creates a device with the limit defined by LimitValueTest. If the limit of over the maximum we expect an exception If the device is created then we call a test function, checking that the function does not leak any GPU errors.
Optional extraLimits: LimitsRequestCreates a device with a specific limit. If the limit of over the maximum we expect an exception If the device is created then we call a test function, checking that the function does not leak any GPU errors.
Optional extraLimits: LimitsRequestOptional features: GPUFeatureName[]Calls a function that might expect a validation error. if shouldError is true then expect a validation error, if shouldError is false then ignore out-of-memory errors.
Tests a method on GPUBindingCommandsMixin The function pass will be called with the passEncoder and a bindGroup
Test a method on GPURenderCommandsMixin or GPUBindingCommandsMixin The function will be called with the passEncoder.
Static MakeGenerated using TypeDoc
Base fixture for WebGPU tests.
This class is a Fixture + a getter that returns a GPUDevice as well as helpers that use that device.