RESOLVED FIXED275010
[WGSL] api,operation,compute_pipeline,overrides:computed:* does not pass
https://bugs.webkit.org/show_bug.cgi?id=275010
Summary [WGSL] api,operation,compute_pipeline,overrides:computed:* does not pass
Mike Wyrzykowski
Reported 2024-05-31 18:04:29 PDT
This test was added two days ago to the CTS. It triggers a RELEASE_ASSERT(is<Target>(source)); in downcast https://gpuweb.github.io/cts/standalone/?q=webgpu:api,operation,compute_pipeline,overrides:computed:* WGSL source is this: override c0: f32 = 0.; override c1: f32 = 0.; override c2: f32 = c0 * c1; struct Buf { data : array<u32, 3>, } @group(0) @binding(0) var<storage, read_write> buf : Buf; @compute @workgroup_size(1) fn main() { buf.data[0] = u32(c0); buf.data[1] = u32(c1); buf.data[2] = u32(c2); } Backtrace: (lldb) bt frame #0: 0x000000010a924d54 WebGPU`WTFCrashWithInfo(line=96, file="/Volumes/Data/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/TypeCasts.h", function="match_constness_t<Source, Target> &WTF::downcast(Source &) [Target = const WGSL::AST::IdentifierExpression, Source = const WGSL::AST::Expression]", counter=2) at Assertions.h:818:5 frame #1: 0x000000010ad5a988 WebGPU`_ZN3WTF8downcastIKN4WGSL3AST20IdentifierExpressionEKNS2_10ExpressionEEERNSt3__111conditionalIXsr3stdE10is_const_vIT0_EENS7_9add_constIT_E4typeEu14__remove_constISB_EE4typeERS9_(source=0x000000015e060408) at TypeCasts.h:96:5 * frame #2: 0x000000010ad5a76c WebGPU`WGSL::evaluate(expression=0x000000015e060408, constants=0x000000016e7b9b48) at WGSL.cpp:149:40 frame #3: 0x000000010a9d1710 WebGPU`_ZN6WebGPU13createLibraryEPU19objcproto9MTLDevice11objc_objectRKNS_12ShaderModuleEPNS_14PipelineLayoutERKN3WTF6StringEP8NSStringjPK17WGPUConstantEntryRNS7_7HashMapIjNSG_IjyNS7_11DefaultHashIjEENS7_29UnsignedWithZeroKeyHashTraitsIjEENS7_10HashTraitsIyEENS7_15HashTableTraitsEEESI_SK_NSL_ISO_EESN_EEPU15__autoreleasingP7NSError(device=0x0000000112d1ffd0, shaderModule=0x00000001060ec4e0, pipelineLayout=0x00000001060bc0e0, untransformedEntryPoint=0x000000016e7b9f38, label="", constantCount=2, constants=0x0000000106088720, mininumBufferSizes=0x000000016e7b9f08, error=0x000000016e7b9e70) at Pipeline.mm:75:30 frame #4: 0x000000010a99fd6c WebGPU`WebGPU::Device::createComputePipeline(this=0x00000001060ac580, descriptor=0x000000016e7ba198, isAsync=true) at ComputePipeline.mm:88:34 frame #5: 0x000000010a9a1588 WebGPU`WebGPU::Device::createComputePipelineAsync(this=0x00000001060ac580, descriptor=0x000000016e7ba198, callback=0x000000016e7ba080) at ComputePipeline.mm:129:29 frame #6: 0x000000010a9b25b8 WebGPU`wgpuDeviceCreateComputePipelineAsync(device=0x00000001060ac580, descriptor=0x000000016e7ba198, callback=(actual=0x000000032dc4b448 WebCore`WebCore::WebGPU::createComputePipelineAsyncCallback(WGPUCreatePipelineAsyncStatus, WGPUComputePipelineImpl*, WTF::String&&, void*) at WebGPUDeviceImpl.cpp:573), userdata=0x0000000168c3c5e0) at Device.mm:898:29 frame #7: 0x000000032dc4b0b0 WebCore`WebCore::WebGPU::DeviceImpl::createComputePipelineAsync(WebCore::WebGPU::ComputePipelineDescriptor const&, WTF::CompletionHandler<void (WTF::RefPtr<WebCore::WebGPU::ComputePipeline, WTF::RawPtrTraits<WebCore::WebGPU::ComputePipeline>, WTF::DefaultRefDerefTraits<WebCore::WebGPU::ComputePipeline>>&&, WTF::String&&)>&&)::$_7::operator()(this=0x000000016e7ba2a8, backingDescriptor=0x000000016e7ba198) at WebGPUDeviceImpl.cpp:588:9 frame #8: 0x000000032dc3da10 WebCore`auto WebCore::WebGPU::convertToBacking<WebCore::WebGPU::DeviceImpl::createComputePipelineAsync(WebCore::WebGPU::ComputePipelineDescriptor const&, WTF::CompletionHandler<void (WTF::RefPtr<WebCore::WebGPU::ComputePipeline, WTF::RawPtrTraits<WebCore::WebGPU::ComputePipeline>, WTF::DefaultRefDerefTraits<WebCore::WebGPU::ComputePipeline>>&&, WTF::String&&)>&&)::$_7>(descriptor=0x000000016e7ba3a0, convertToBackingContext=0x00000001060b8100, callback=0x000000016e7ba2a8) at WebGPUDeviceImpl.cpp:364:12 frame #9: 0x000000032dc3d760 WebCore`WebCore::WebGPU::DeviceImpl::createComputePipelineAsync(this=0x0000000106128100, descriptor=0x000000016e7ba3a0, callback=0x000000016e7ba370) at WebGPUDeviceImpl.cpp:581:5 frame #10: 0x0000000122a66eec WebKit`WebKit::RemoteDevice::createComputePipelineAsync(this=0x00000001061000c0, descriptor=0x000000016e7ba640, identifier=WebKit::WebGPUIdentifier @ 0x000000016e7ba408, callback=0x000000016e7ba618) at RemoteDevice.cpp:286:16
Attachments
Radar WebKit Bug Importer
Comment 1 2024-05-31 18:06:00 PDT
Mike Wyrzykowski
Comment 2 2024-10-25 16:19:00 PDT
This no longer crashes, but the test does not pass
Tadeu Zagallo
Comment 3 2026-01-22 05:36:50 PST
EWS
Comment 4 2026-01-27 22:53:42 PST
Committed 306328@main (98bebfefcf92): <https://commits.webkit.org/306328@main> Reviewed commits have been landed. Closing PR #57042 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.