[webkit-changes] [WebKit/WebKit] 8364b0: [WGSL] EntryPointRewriter is skipping materializat...

Tadeu Zagallo noreply at github.com
Thu May 18 23:11:06 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 8364b025cf0649b2f3a4eae233a496cac9e0e232
      https://github.com/WebKit/WebKit/commit/8364b025cf0649b2f3a4eae233a496cac9e0e232
  Author: Tadeu Zagallo <tzagallo at apple.com>
  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




More information about the webkit-changes mailing list