Commit Graph

801 Commits

Author SHA1 Message Date
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
David Neto d71e80b710 [spirv-reader] Add README.md
Bug: tint:3
Change-Id: Ie711f7bdbb870c9f370ce777653884c5942a0622
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25260
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-07-21 17:11:50 +00:00
David Neto 28d0f4b905 [spirv-reader] Support function call returning void
Bug: tint:3, tint:99
Change-Id: I6fe6d06d79115e6b3b0adb800f21c4704795dc15
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25360
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-21 16:08:56 +00:00
dan sinclair a0b73e8aca [hlsl-writer] Add assignment statement.
This CL adds the assign statement emission to the HLSL backend.

Bug: tint:7
Change-Id: I3e46ac09170ea1af7444ae89267a82e1d1c42c52
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25224
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 15:58:56 +00:00
dan sinclair 41aa1a1ed8 [hlsl-writer] Add switch statement support
This CL adds emission of switch statements to the HLSL backend.

Bug: tint:7
Change-Id: Ie6f41031878a1f5a945f9310429d28fb0e4a98c8
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25223
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 15:58:50 +00:00
dan sinclair 557a0f8e63 [hlsl-writer] Emit case statements.
This CL adds emission of case statements to the HLSL backend.

Bug: tint:7
Change-Id: I5d0dd7ecfe4ef032a03777c29f3d0d00e584a93a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25222
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 15:58:43 +00:00
dan sinclair 6dab73b5c6 [hlsl-writer] Emit unary operators.
This CL emits unary operators from the HLSL backend.

Bug: tint:7
Change-Id: I997d89d62d279fc7440ba6045c56e290ec7601c1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25221
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 15:58:36 +00:00
dan sinclair abfdd22acc [hlsl-writer] Emit break, return and continue.
This CL updates the HLSL writer to emit break, return and continue
statements.

Bug: tint:7
Change-Id: I03eafc343e57e9e8d1efaf930023099d6f85fc57
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25220
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 15:58:29 +00:00
dan sinclair dee9136c20 [hlsl-writer] Add binary operator emission.
Emits the binary operators.

Bug: tint:7
Change-Id: I6f4fce3b6fb646b8340e39538b041715a676ac28
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25164
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 15:58:20 +00:00
dan sinclair fbbc617888 Parse void function call.
This CL updates the WGSL parser to handle a void function call.

Fixes: tint:45
Change-Id: If5b2a4b9e62f0b10e0f2e2e10c0ca2586c5268e8
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25322
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2020-07-21 15:13:36 +00:00
dan sinclair e5228407f4 [hlsl-writer] Add emission of identifiers
This CL adds identifier emission and an HLSL namer to guard against
names using reserved words.

Bug: tint:7
Change-Id: Id3d73ff683048c26ac99451d21c3dd7ef3c620a3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25001
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 14:51:33 +00:00
dan sinclair b44fe3c034 Emit call statements from the various backends.
This CL adds emission of CallStatement to the various backends.

Bug: tint:45
Change-Id: Ia2bdf0433f136c516ecccdcbc64a5365094220af
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25281
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 13:44:27 +00:00
dan sinclair 50080b74e1 Type determine the call statement.
This CL adds type determination for the call statement.

Bug: tint:45
Change-Id: I2460fe6c6103bdf7e5d0367cded1d78ca5d671d6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25321
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 13:42:13 +00:00
dan sinclair 2e40491467 Add a call ast statement.
This CL adds CallStatement to the AST to allow wrapping a CallExpression
into a statement.

Bug: tint:45
Change-Id: I5a9525514344fcc2cf9900eb2cd78c1fb94ca2ef
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25320
Reviewed-by: David Neto <dneto@google.com>
2020-07-21 13:42:05 +00:00
David Neto 0a56a103be [spirv-reader] Support select over scalars and vectors
Still TODO: OpSelect over arrays and structures, as permitted in SPIR-V 1.4

Bug: tint:3, tint:99
Change-Id: I70f6c8a43ea3339cd715813c6eb0128d66ff0df8
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25301
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-21 13:36:25 +00:00
David Neto d6b024b66d Add missing Doxygen comments on two methods.
Bug: tint:3
Change-Id: I5cb5c3ce078951363279ccc999074c0c46dfad6e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25300
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-20 23:31:56 +00:00
David Neto c29bad28ad [spirv-reader] Support function calls, except returning void
Functions returning void are blocked on https://crbug.com/tint/45

Change-Id: I15ec9cf0e267571bbfab921c678a59e25d0e3619
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25280
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-20 22:19:01 +00:00
dan sinclair feffa9d887 [hlsl-writer] Scaffold the HLSL backend.
This CL adds the scaffolding for the HLSL backend.

Bug: tint:7
Change-Id: Iaf9f5159bc409f3ac71fcec281229258bdfa021b
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25000
Reviewed-by: David Neto <dneto@google.com>
2020-07-20 22:13:37 +00:00
dan sinclair 5dee499c57 [msl-writer] Emit storage buffers.
This Cl adds the emission of storage buffers to the MSL backend.

Bug: tint:8
Change-Id: I6923926b36e73f2e351443cf1d2bf6d70873bc9a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25264
Reviewed-by: David Neto <dneto@google.com>
2020-07-20 22:13:20 +00:00
dan sinclair 26c8a216e8 [msl-writer] Add import emission.
This CL adds emission of import function calls to the MSL backend.

Bug: tint:8
Change-Id: Ib8b8638b11caee2ff3557d551447b215ef2a4c69
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25262
Reviewed-by: David Neto <dneto@google.com>
2020-07-20 22:13:00 +00:00
David Neto 747e80a9b3 [spirv-reader] Drop NonWritable NonReadable for now
Pending WGSL issue https://github.com/gpuweb/gpuweb/issues/935

Bug: tint:3, tint:99
Change-Id: I90771e6e0c6a2f109fd6e361d79adea273ca7bc6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25261
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-20 20:00:10 +00:00
Ryan Harrison c8af502c01 Fix issues with BUILD.gn
Couple of little style issues, and a path to a file that was incorrect.

Change-Id: I21d1a4ca41bc36163602378086989ac712f54469
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25265
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-20 19:54:23 +00:00
dan sinclair 18c85f52e4 [msl-writer] Cleanups and refactors.
This CL cleans up some interfaces and methods in the MSL generator and
generator impl classes.

Bug: tint:8
Change-Id: I9aabeb1ecb69baeaa9cb6bbc15e313806923dddc
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25163
Reviewed-by: David Neto <dneto@google.com>
2020-07-20 17:27:58 +00:00
dan sinclair f1c3fb7670 [msl-writer] Handle uniform buffers.
This CL adds support for handling uniform data. Currently the uniform is
added to a buffer where the number is the binding value. This will need
to be updated to accept the correct mapping from the embedder.

Bug: tint:8
Change-Id: Icccccbe599a9555defa6136e384745f4093df020
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25104
Reviewed-by: David Neto <dneto@google.com>
2020-07-20 13:46:32 +00:00
David Neto e6c575538a [spirv-reader] Support DescriptorSet and Binding
Bug: tint:3
Change-Id: I92d44cc59883d3834aedd2529ab5e20b49d6eb31
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/25200
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-20 13:24:58 +00:00
David Neto 6982c22eee [spirv-reader] Handle old-style storage buffers
Old way:
  - struct decorated with BufferBlock
  - Uniform storage class

New way
  - struct decorated with Block
  - StorageBuffer storage class

Also fixes the result type for an access chain.

Bug: tint:99
Change-Id: I2324ba94bb19b369d206313de798bdfec6099fe0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/24605
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-07-20 13:24:26 +00:00