Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8364b025cf0649b2f3a4eae233a496cac9e0e232
https://github.com/WebKit/WebKit/commit/8364b025cf0649b2f3a4eae233a496cac9e0e232
Author: Tadeu Zagallo <[email protected]>
Date: 2023-05-18 (Thu, 18 May 2023)
Changed paths:
M Source/WebGPU/WGSL/EntryPointRewriter.cpp
Log Message:
-----------
[WGSL] EntryPointRewriter is skipping materializations
https://bugs.webkit.org/show_bug.cgi?id=256966
rdar://109515526
Reviewed by Mike Wyrzykowski and Dan Glastonbury.
The EntryPointRewriter would return early when `m_parameters` was empty.
`m_parameters`
holds parameters that were moved into the stage_in struct. Before early
returning, it
also called `appendBuiltins`, which inserted all the built-in inputs into
function's
parameters, whether those were already parameters to begin with, or were
hoisted from
a struct parameter, since Metal doesn't allow built-ins in structs. However, we
were
missing that we could have an empty `m_parameters`, but still have values in
`m_materializations`,
which holds the operations we might need to reconstruct struct arguments whose
fields
got hoisted into the function's top-level parameters. To make the code less
error-prone,
I removed the early return and instead conditionally apply each of the steps:
append the
built-in parameters, construct the stage_in struct and materialize
(user-defined) struct
inputs.
* Source/WebGPU/WGSL/EntryPointRewriter.cpp:
(WGSL::EntryPointRewriter::rewrite):
Canonical link: https://commits.webkit.org/264232@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes