WebKit Bugzilla
Attachment 349039 Details for
Bug 188641
: [WHLSL] Inlining should be optional
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188641-20180906101730.patch (text/plain), 7.39 KB, created by
Thomas Denney
on 2018-09-06 10:17:31 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Thomas Denney
Created:
2018-09-06 10:17:31 PDT
Size:
7.39 KB
patch
obsolete
>Subversion Revision: 235739 >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 1a1e216449451bb436d1d73300f2df9e1161676a..07e1e22e55482eb4d019f56ab7083df79efd2022 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,26 @@ >+2018-09-06 Thomas Denney <tdenney@apple.com> >+ >+ [WHLSL] Inlining should be optional >+ https://bugs.webkit.org/show_bug.cgi?id=188641 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Inlining can now be configured via an optional parameter to prepare. >+ Inlining is disabled by default, but some late checks that previously >+ happened as part inlining are always performed. >+ >+ * WebGPUShadingLanguageRI/All.js: Add LateCheckerAndLayoutBuffer.js >+ * WebGPUShadingLanguageRI/Inline.js: >+ (_inlineFunction): Factored out compulsory stages, removed >+ StructLayoutBuilder because this is already done in prepare. >+ * WebGPUShadingLanguageRI/LateCheckAndLayoutBuffers.js: Ditto. >+ (lateCheckAndLayoutBuffers): >+ * WebGPUShadingLanguageRI/Prepare.js: >+ (let.prepare): Add optional parameter for inlining, disabled by default. >+ * WebGPUShadingLanguageRI/SPIRV.html: Add LateCheckerAndLayoutBuffer.js >+ * WebGPUShadingLanguageRI/Test.html: Ditto. >+ * WebGPUShadingLanguageRI/index.html: Ditto. >+ > 2018-09-06 Myles C. Maxfield <mmaxfield@apple.com> > > [WHLSL] The parser is too slow >diff --git a/Tools/WebGPUShadingLanguageRI/All.js b/Tools/WebGPUShadingLanguageRI/All.js >index 0a5885161a403d09aeaa1fe5e1043adfe612565f..3c2c48742001115a1713483a1f23ce28668bb9c6 100644 >--- a/Tools/WebGPUShadingLanguageRI/All.js >+++ b/Tools/WebGPUShadingLanguageRI/All.js >@@ -102,6 +102,7 @@ load("Inliner.js"); > load("IntLiteral.js"); > load("IntLiteralType.js"); > load("Intrinsics.js"); >+load("LateCheckAndLayoutBuffers.js"); > load("LateChecker.js"); > load("Lexer.js"); > load("LexerToken.js"); >diff --git a/Tools/WebGPUShadingLanguageRI/Inline.js b/Tools/WebGPUShadingLanguageRI/Inline.js >index 8ba9ad74e7c2a70367225214719a61fb7fbfa3c5..5e9f81dd1b51871fd7c71553558c9cb76de0b01b 100644 >--- a/Tools/WebGPUShadingLanguageRI/Inline.js >+++ b/Tools/WebGPUShadingLanguageRI/Inline.js >@@ -36,16 +36,7 @@ function _inlineFunction(program, func, visiting) > { > if (func.inlined || func.isNative) > return; >- >- func.visit(new LateChecker()); >- >- // This is the precise time when we can build EBuffers in order to get them to be uniqued by >- // type instantiation but nothing else. >- func.visit(new StructLayoutBuilder()); >- func.visit(new EBufferBuilder(program)); >- > func.rewrite(new Inliner(program, func, visiting)); >- > func.inlined = true; > } > >diff --git a/Tools/WebGPUShadingLanguageRI/LateCheckAndLayoutBuffers.js b/Tools/WebGPUShadingLanguageRI/LateCheckAndLayoutBuffers.js >new file mode 100644 >index 0000000000000000000000000000000000000000..f5b35bb80e14d16e26031a70af1c9c386b05c641 >--- /dev/null >+++ b/Tools/WebGPUShadingLanguageRI/LateCheckAndLayoutBuffers.js >@@ -0,0 +1,37 @@ >+/* >+ * Copyright (C) 2018 Apple Inc. All rights reserved. >+ * >+ * Redistribution and use in source and binary forms, with or without >+ * modification, are permitted provided that the following conditions >+ * are met: >+ * 1. Redistributions of source code must retain the above copyright >+ * notice, this list of conditions and the following disclaimer. >+ * 2. Redistributions in binary form must reproduce the above copyright >+ * notice, this list of conditions and the following disclaimer in the >+ * documentation and/or other materials provided with the distribution. >+ * >+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY >+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE >+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR >+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, >+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, >+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR >+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY >+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT >+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE >+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. >+ */ >+"use strict"; >+ >+function lateCheckAndLayoutBuffers(program) >+{ >+ for (let funcList of program.functions.values()) { >+ for (let func of funcList) { >+ if (func.isNative) >+ continue; >+ func.visit(new LateChecker()); >+ func.visit(new EBufferBuilder()); >+ } >+ } >+} >\ No newline at end of file >diff --git a/Tools/WebGPUShadingLanguageRI/Prepare.js b/Tools/WebGPUShadingLanguageRI/Prepare.js >index 834592d36f3457dfa86b5751bb7262472a3f0a2d..6644e2cf5ebab2adf49def81890b4376dabba334 100644 >--- a/Tools/WebGPUShadingLanguageRI/Prepare.js >+++ b/Tools/WebGPUShadingLanguageRI/Prepare.js >@@ -26,7 +26,7 @@ > > let prepare = (() => { > let standardProgram; >- return function(origin, lineNumberOffset, text) { >+ return function(origin, lineNumberOffset, text, shouldInline = false) { > if (!standardProgram) { > standardProgram = new Program(); > let firstLineOfStandardLibrary = 28; // See StandardLibrary.js. >@@ -68,7 +68,9 @@ let prepare = (() => { > checkTypesWithArguments(program); > findHighZombies(program); > program.visit(new StructLayoutBuilder()); >- inline(program); >+ lateCheckAndLayoutBuffers(program); >+ if (shouldInline) >+ inline(program); > > return program; > }; >diff --git a/Tools/WebGPUShadingLanguageRI/SPIRV.html b/Tools/WebGPUShadingLanguageRI/SPIRV.html >index 804cd9abda6d5c3bec03be2582aa3f23f007a188..0d2371005e710cdc60f033da5a511c49ae005c36 100644 >--- a/Tools/WebGPUShadingLanguageRI/SPIRV.html >+++ b/Tools/WebGPUShadingLanguageRI/SPIRV.html >@@ -85,6 +85,7 @@ td { > <script src="IntLiteral.js"></script> > <script src="IntLiteralType.js"></script> > <script src="Intrinsics.js"></script> >+ <script src="LateCheckAndLayoutBuffers.js"></script> > <script src="LateChecker.js"></script> > <script src="Lexer.js"></script> > <script src="LexerToken.js"></script> >diff --git a/Tools/WebGPUShadingLanguageRI/Test.html b/Tools/WebGPUShadingLanguageRI/Test.html >index f5ea3d90198dcdb87131f92c250c743304b66ac0..c12e5d99dc74a6f1901c95df91d34a05ae855e1c 100644 >--- a/Tools/WebGPUShadingLanguageRI/Test.html >+++ b/Tools/WebGPUShadingLanguageRI/Test.html >@@ -80,6 +80,7 @@ > <script src="IntLiteralType.js"></script> > <script src="Intrinsics.js"></script> > <script src="LateChecker.js"></script> >+<script src="LateCheckAndLayoutBuffers.js"></script> > <script src="Lexer.js"></script> > <script src="LexerToken.js"></script> > <script src="LiteralTypeChecker.js"></script> >diff --git a/Tools/WebGPUShadingLanguageRI/index.html b/Tools/WebGPUShadingLanguageRI/index.html >index dfc90c4c2394395458865c4a8d65486870c26234..24415f33a1709b2e0e6d5bece67aa895306b89be 100644 >--- a/Tools/WebGPUShadingLanguageRI/index.html >+++ b/Tools/WebGPUShadingLanguageRI/index.html >@@ -79,6 +79,7 @@ > <script src="IntLiteral.js"></script> > <script src="IntLiteralType.js"></script> > <script src="Intrinsics.js"></script> >+<script src="LateCheckAndLayoutBuffers.js"></script> > <script src="LateChecker.js"></script> > <script src="Lexer.js"></script> > <script src="LexerToken.js"></script>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188641
:
349039
|
349352
|
349357