[webkit-changes] [WebKit/WebKit] 30a16f: [WGSL] Fix arrayLength when using pointer variables
Tadeu Zagallo
noreply at github.com
Thu Feb 15 04:11:02 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 30a16f3e2486b1627e6249729e8e837b584cac19
https://github.com/WebKit/WebKit/commit/30a16f3e2486b1627e6249729e8e837b584cac19
Author: Tadeu Zagallo <tzagallo at 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
More information about the webkit-changes
mailing list