Bug 211363

Summary: GPUTexture objects are returned with “null” native Metal textures backing them when the “usage” flag is not set correctly.
Product: WebKit Reporter: gvinals
Component: WebGPUAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   

Description gvinals 2020-05-03 17:45:01 PDT
GPUTexture objects are returned with “null” native Metal textures backing them when the “usage” flag is not set correctly. For example, you can set usage to 0 or a random number and a GPUTexture will still be returned by device.createTexture(…). This texture is also able to create a GPUTextureView.

Unfortunately after that many internal errors may happen that can be very tricky to debug for application developers. 

For example if we always return a null GPUTexture with no Metal texture backing it:

Ref<WebGPUTexture> WebGPUDevice::createTexture(const GPUTextureDescriptor& descriptor) const
{
    auto texture = m_device->tryCreateTexture(descriptor);
    return WebGPUTexture::create(nullptr);
}

The tests under LayoutTests/webgpu/textures-textureviews.html will still all pass.
Comment 1 Radar WebKit Bug Importer 2020-05-03 17:45:26 PDT
<rdar://problem/62822180>