Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 30a16f3e2486b1627e6249729e8e837b584cac19
      
https://github.com/WebKit/WebKit/commit/30a16f3e2486b1627e6249729e8e837b584cac19
  Author: Tadeu Zagallo <tzaga...@apple.com>
  Date:   2024-02-15 (Thu, 15 Feb 2024)

  Changed paths:
    M Source/WebGPU/WGSL/GlobalVariableRewriter.cpp
    M Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp
    M Source/WebGPU/WGSL/PointerRewriter.cpp

  Log Message:
  -----------
  [WGSL] Fix arrayLength when using pointer variables
https://bugs.webkit.org/show_bug.cgi?id=269371
rdar://122293523

Reviewed by Mike Wyrzykowski.

We eliminate pointer variables by replacing references to the variables with the
variable initializer expression. This caused a few issues with the global 
variable
rewriter:
- since we see multiple pointers to the same ast node, we can end up replacing 
it
  multiple times. In order to fix that we wrap the initializer in an identity 
expression
  and handle that nin the rewriter.
- avoid rewriting the array when we encounter an arrayLength call, since that 
is unnecessary
- finally, we assert that we should never encounter calls to arrayLength in the 
final
  program. All of those should have been rewritten, and the code it generated 
was not correct

* Source/WebGPU/WGSL/GlobalVariableRewriter.cpp:
(WGSL::RewriteGlobalVariables::pack):
(WGSL::RewriteGlobalVariables::getPacking):
(WGSL::RewriteGlobalVariables::readVariable const):
(WGSL::RewriteGlobalVariables::readVariable): Deleted.
* Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp:
(WGSL::Metal::emitArrayLength):
* Source/WebGPU/WGSL/PointerRewriter.cpp:
(WGSL::PointerRewriter::visit):

Canonical link: https://commits.webkit.org/274712@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to