diff --git a/src/webgpu/util/device_pool.ts b/src/webgpu/util/device_pool.ts index d0d1e6c0b6b5..8f734c75aec7 100644 --- a/src/webgpu/util/device_pool.ts +++ b/src/webgpu/util/device_pool.ts @@ -22,7 +22,7 @@ class FeaturesNotSupported extends Error {} export class TestOOMedShouldAttemptGC extends Error {} export class DevicePool { - private holders: 'uninitialized' | 'failed' | DescriptorToHolderMap = 'uninitialized'; + private holders = new DescriptorToHolderMap(); async requestAdapter(recorder: TestCaseRecorder) { const gpu = getGPU(recorder); @@ -36,28 +36,7 @@ export class DevicePool { adapter: GPUAdapter, descriptor?: UncanonicalizedDeviceDescriptor ): Promise { - let holder; - if (this.holders === 'uninitialized') { - this.holders = new DescriptorToHolderMap(); - } - - let errorMessage = ''; - if (this.holders !== 'failed') { - try { - holder = await this.holders.getOrCreate(adapter, descriptor); - } catch (ex) { - this.holders = 'failed'; - if (ex instanceof Error) { - errorMessage = ` with ${ex.name} "${ex.message}"`; - } - } - } - - assert( - this.holders !== 'failed', - `WebGPU device failed to initialize${errorMessage}; not retrying` - ); - assert(!!holder); + const holder = await this.holders.getOrCreate(adapter, descriptor); assert(holder.state === 'free', 'Device was in use on DevicePool.acquire'); holder.state = 'acquired'; holder.beginTestScope();