Commit Graph

3226 Commits

Author SHA1 Message Date
dan sinclair c8a85aa5a9 [wgsl-reader] Add stride support.
This CL adds stride support to the WGSL reader.

Bug: tint:178
Change-Id: Id6b5163438e562a371255ad3fb992d0a716543e7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/26040
Reviewed-by: David Neto <dneto@google.com>
2020-07-30 16:50:25 +00:00
dan sinclair ac4a2894fe [wgsl-writer] Emit array stride decoration.
This CL adds array stride decorations to the WGSL writer.

Bug: tint:179
Change-Id: I39d7625e1bdc876bbf9a83da7af76eb98bd09c28
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/26002
Reviewed-by: David Neto <dneto@google.com>
2020-07-30 16:48:36 +00:00
Idan Raiter a8e4e2ad5d Add BlockStatement insert and non-const global_variables
Insert will be used for adding code at the beginning of a function, and
non-const global_variables to edit decorations.

Bug: dawn:480
Change-Id: I9fbb0210a95b8488c9ce6d9a536a68f169b0cc33
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25850
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-07-30 13:59:00 +00:00
Sarah Mashayekhi a3f9778ee6 [Validator] Using pointers instead of refs
Change-Id: I19a1cd27b6cbbc5d5d88a46bc5dd43c66a318b7f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/26004
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-30 02:27:03 +00:00
dan sinclair f961850988 [hlsl-writer] Add member accessor emission.
This CL adds emitting MemberAccessorExpressions to the HLSL backend.

Bug: tint:7
Change-Id: Ic6c99232e98322c8145700d5f1a3a8314cf60feb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25844
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 19:12:19 +00:00
dan sinclair 7cf1979667 [hlsl-writer] Add AsExpression to the HLSL backend.
This CL adds as casts to the HLSL backend.

Bug: tint:7
Change-Id: I599527d665a3ec1ab6cf80b4f550f7aee8fdf294
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25843
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 19:11:15 +00:00
dan sinclair d450a920d5 [hlsl-writer] Add BlockStatement support.
This CL adds support for BlockStatement to the HLSL backend.

Bug: tint:7
Change-Id: I953a1b85a05cd84e8e296d677204ae9b5a3ae669
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25860
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 19:06:46 +00:00
dan sinclair cda5af0fa2 [hlsl-writer] Emit discard.
This CL adds the discard statement to the HLSL writer.

Bug: tint:7, tint:166
Change-Id: I292e9b97a1246c9b79a9660ec229ff7855aeb2a9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25842
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 18:56:50 +00:00
dan sinclair ec007b98c7 [hlsl-writer] Emit array accessors.
This CL adds array accessor expressions to the HLSL backend.

Bug: tint:7
Change-Id: I46d60f5d8ef74fee2a2f4da48c2d792969bfa365
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25820
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 18:56:35 +00:00
dan sinclair 0e48082549 [hlsl-writer] Add alias type support.
This CL adds support for emitting type aliases to the HLSL backend.

Bug: tint:7
Change-Id: Ibd2c2d3bbe6c9a86033e379b4e1cb494259b4df2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25800
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-07-29 18:56:25 +00:00
dan sinclair 4a11b5600d [hlsl-writer] Add constructor emission.
This CL adds scalar and type constructor emission to the HLSL backend.

Bug: tint:7
Change-Id: I2b402b7eb66f266c3a111c9b07502ef17cc1a679
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25726
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 18:50:18 +00:00
dan sinclair 4551a31050 Add hlsl writer tests to BUILD.gn
The check to add the HLSL tests if needed into the BUILD.gn test list
was missing. This CL adds it.

Bug: tint:7
Change-Id: I662bc49fb4f88543cfb9b3b315deb5a678d169b4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/26001
Reviewed-by: Ryan Harrison <rharrison@google.com>
2020-07-29 18:50:06 +00:00
dan sinclair 8cce7cece8 [hlsl-writer] Add type emission.
This Cl adds the start of type emission to the HLSL backend.

Bug: tint:7
Change-Id: I403635080841c63382afe162ac80ae2be30b4faa
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25780
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 18:30:44 +00:00
dan sinclair bf4614e252 Update some language usage.
This CL updates a few bits of language to be inline with the Android
respectful code rules [1].

1- https://source.android.com/setup/contribute/respectful-code

Change-Id: Ia35b58d9003df64eeb1e9196c9c194f8955c11c1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25941
Reviewed-by: David Neto <dneto@google.com>
2020-07-29 17:49:01 +00:00
David Neto d35e4e1bbe [spirv-reader] Only support column-major matrices
- drop ColMajor, MatrixStride member decoration
- RowMajor matrix decoration is an error

Bug: tint:3, tint:99, tint:31
Change-Id: I7eb1ec53813a4b1ada971e8725dc91ffdf97bd43
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25920
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-29 16:04:23 +00:00
Ryan Harrison c5cd8f5bd3 Remove binutils from DEPS and pull in changes to build.gni from Dawn
Change-Id: Id9855ccf133b50f406443c37b74f12ff1d9206fe
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25560
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-28 17:57:53 +00:00
Ryan Harrison 88f0ae369f Get 'gn gen --check' passing
BUG=tint:123

Change-Id: I0b13be1e0ecd4a4fa5a20160276cb9af47495410
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25862
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-28 15:59:17 +00:00
Idan Raiter e018cefdce Fix Tint ninja build
Rebasing I saw chromium style issue with auto pointers and a missing BUILD.gn file.

Change-Id: I7666595664b5eb95f681b3d2edd1d84df7d6fe63
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25848
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-28 15:04:07 +00:00
dan sinclair e8c12f32f9 Remove StatementList.
This CL removes the StatementList define now that BlockStatement is used
everywhere.

Bug: tint:130
Change-Id: Id51de13cd1ca0cd69023523c762fe719bc2da999
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25725
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair cfdc5995ec [spirv-reader] Update to create BlockStatements
This CL updates the SPIR-V Reader to create BlockStatements instead of
StatementLists.

Bug: tint:136
Change-Id: I957019446ca00306187de701f86ae3e0dd5c5eb8
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25740
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair f751501c35 [wgsl-reader] Update to create BlockStatements
This CL updates the WGSL Reader to create BlockStatements instead of
StatementLists.

Bug: tint:135
Change-Id: Ifda394023553a625dad67be7d4e0dc815292282a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25724
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 37c0970d51 Convert LoopStatement to use BlockStatement.
This CL converts the LoopStatement class to using a BlockStatement
internally. All usages have been updated execept for the two readers.

Bug: tint:130
Change-Id: Ied4b82f0ef49c7b92caa040bcf73050093022df7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25723
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 77040b85d9 Convert IfStatement and ElseStatement to use BlockStatement.
This CL converts the IfStatement and ElseStatement classes to using a
BlockStatement internally. All usages have been updated execept for the
two readers.

Bug: tint:130
Change-Id: I59a5b92f22f35f27f17e005aa9b266f4a2b0ef25
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25722
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 7c2fa1e7bc Convert CaseStatement to use BlockStatement.
This CL converts the CaseStatement class to using a BlockStatement
internally. All usages have been updated execept for the two readers.

Bug: tint:130
Change-Id: Idb9114230f7d9eb0f2208af635316edb0a0e8f99
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25721
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 4069f3357d Convert Function to use BlockStatement.
This CL converts the Function class to using a BlockStatement
internally. All usages have been updated execept for the two readers.

Bug: tint:130
Change-Id: I7159cf2d3ed5cb8a34d51fbe848b88f0e5479605
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25720
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 0975dd5663 [spirv-writer] Add BlockStatement emission.
This CL adds BlockStatement support to the spirv-writer. The type
determiner is also updated as needed.

Bug: tint:134
Change-Id: I91e08c3acafd67401a010fff21abde7feec46e8e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25609
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair cd182b137e [msl-writer] Emit BlockStatement.
This CL adds BlockStatement emission to the MSL backend.

Bug: tint:132
Change-Id: Ie64c02b81760787f6d8aa8833b9756ede3deddf9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25608
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 21f8e253a0 [wgsl-writer] Add emission of BlockStatement.
This CL adds BlockStatement writting to the WGSL writer.

Bug: tint:131
Change-Id: I6d1d286134311cea13e19c7381ed344da8205199
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25607
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 775cb51794 [ast] Add BlockStatement
This CL adds a BlockStatement to wrap the statements in a given block.

Bug: tint:130
Change-Id: Idc2389e001d9d87ef7f45dcd8aa90bbd27ff7dce
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25606
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-27 15:25:00 +00:00
dan sinclair 99ad0e8c94 [msl-writer] Emit intrinsics.
This CL adds intrinsics to the MSL backend.

Bug: tint:8, tint:159
Change-Id: I03e3c4bdf234ec4ca437ab1b1a0d4835e3342b0c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25500
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:39:23 +00:00
dan sinclair 8f3c6356d4 Remove KillStatement
This CL removes the KillStatement from the AST and replaces all test
usage with DiscardStatement.

Bug: tint:169
Change-Id: Ie68dd3cdd54056f144d10506f05cc1f6903d1cda
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25605
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:33:50 +00:00
dan sinclair 23508f4339 [spirv-reader] Convert from KillStatement to DiscardStatement
This CL changes the SPIRV-Reader to generate DiscardStatements instead
of KillStatements for an OpKill.

Bug: tint:168
Change-Id: Ic4223b614c822c6ad449f61aedaddc9605c42535
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25642
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:33:35 +00:00
dan sinclair f75f2cd22e [wgsl-reader] Add `discard` parsing.
This CL adds parsing of the `discard` keyword to the WGSL reader.

Bug: tint:167
Change-Id: Iff91076a65715131f5f0f9bd1c8b6bf3a37cd3c7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25604
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:33:13 +00:00
dan sinclair d81bebcfcc [wgsl-writer] Add DiscardStatement support
This CL adds the DiscardStatement to the WGSL writer.

Bug: tint:165
Change-Id: I012bc030482e097fd9a957ed96f15d8360f621a5
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25603
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:33:04 +00:00
dan sinclair a9696b511f [msl-writer] Emit DiscardStatement.
This CL adds the DiscardStatement to the MSL backend.

Bug: tint:164
Change-Id: I1e201d3b6a167690af7bb799e1c93e48232f4a0a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25602
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:32:54 +00:00
dan sinclair 6a61d4127e [spirv-writer] Add DiscardStatement support.
This CL updates the spirv-writer to emit the DiscardStatement as an
OpKill.

Bug: tint:163
Change-Id: Ic2514ee8a4ef7ef0220fc2e1145f8df0c3d32069
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25641
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 14:32:44 +00:00
dan sinclair b4374c271e [ast] Add DiscardStatement AST node.
This CL adds DiscardStatement to the AST.

Bug: tint:162
Change-Id: I1905023eb8297d9a983884e77c6a2267fd43a076
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25601
Reviewed-by: David Neto <dneto@google.com>
2020-07-25 03:34:33 +00:00
Sarah Mashayekhi ce973e355c [validation] Add a disabled test for re-assigning a constant.
Bug:6
Change-Id: Ic2cd1d0eed82354e605e15aec2ba350c15773e51
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25522
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-24 14:50:51 +00:00
dan sinclair 095523020a Fixup some doc and compile issues.
Change-Id: I75547e3fb4e1e4be08bde08f0bcfcf7e979791e7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25640
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-24 00:11:53 +00:00
Sarah Mashayekhi 591fe919c2 [validation] implement invalidate assignment to a different type.
Bug:6
Change-Id: I5bd98731a5827e5a6aa1761dd18e7e116dd68544
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25524
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-23 23:49:52 +00:00
dan sinclair 453eb97a30 Handle review feedback.
This CL implements review feedback from previous CL.

Change-Id: I913c09d11b4eeb1831494653c38227387775b346
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25600
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2020-07-23 15:51:02 +00:00
dan sinclair 429aa812a0 Add simple test runner.
This CL adds a script to run tint over the shaders in a given folder and
attempt to generate the WGSL, HLSL, MSL and SPIRV-ASM shaders. The
GPUWeb CTS is added to third_party and the validation folder set as the
default folder to execute.

Change-Id: I63a0af056416e2f99ed8e3f92f9e2ca31c2b3e49
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25561
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
2020-07-23 15:01:37 +00:00
Ryan Harrison 7a0b734864 Fix BUILD.gn builds
Change-Id: I4e54b30497e064061baff2dcc205b68db87bee2c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25540
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-22 20:41:12 +00:00
dan sinclair b522fb343a [msl-writer] Only emit in/out structs if function call requires.
This CL updates the EmitCall method to only ouptut the input and output
struct name if there are in/out variables used in the function.

Bug: tint:107
Change-Id: Ic0c7722c8796c2f9baa3515cb46be0568f9e1ac3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25400
Reviewed-by: David Neto <dneto@google.com>
2020-07-22 20:02:08 +00:00
Ryan Harrison 433670b576 Add usage of main from chromium when part of a chromium build
BUG=tint:123

Change-Id: Ic7a8694cefd0dbee2a1855e84f4ffaaf75ad6e7a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25520
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2020-07-22 17:36:39 +00:00
dan sinclair 9a2b692b1c Add return to simple test
Change-Id: I0432724f3b77912ec547a0700c022f9dbbca7d36
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25460
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-22 13:41:04 +00:00
Sarah Mashayekhi fbf4506356 [validation] Add a disabled test for assignment statement.
Bug: tint:6
Change-Id: I37fe9f69917a007b9e3325de324e719637b192e8
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25420
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-07-22 12:59:19 +00:00
David Neto b6f0299964 [spirv-reader] Support OpAny, OpAll, OpIsInf, OpIsNan
Bug: tint:3, tint:121
Change-Id: I1a6a2d45684c28a0e03ad4b208dc6b2f737da694
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25422
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-22 12:58:31 +00:00
dan sinclair e3de74fd2b [spirv-writer] Emit select intrinsic.
This CL adds the select intrinsic to the SPIR-V backend.

Bug: tint:106
Change-Id: Ib5b4c1f25ff8620055f75f0291a949a950a50b7f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25381
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 17:44:44 +00:00
dan sinclair 16a2ea11d3 Add type determination for the select intrinsic.
This CL adds type determination for a `select` intrinsic.

Bug: tint:106
Change-Id: Ie5c051cb42c72ae732579e3064561a4544a90473
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25380
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 17:44:44 +00:00