Commit Graph

731 Commits

Author SHA1 Message Date
dan sinclair 0f49753f35 Add reset method to the generators.
This CL allows the backend generators to be reset so they can be re-run
again.

Bug: tint:211
Change-Id: I67b0c650d0ab4615130777becc513099247339c9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28043
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-09-03 01:02:06 +00:00
dan sinclair 836027e327 Move generators to unique pointers.
This Cl will setup the code to allow a Reset method to be added to the
generators.

Bug: tint:211
Change-Id: I41c3aaf0daf832729aea9c76500e297ae32d7f5e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28042
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-09-03 00:58:46 +00:00
Sarah Mashayekhi bab2a4dd96 [validation] Add disabled tests for validating switch statements
This CL adds 6 unit tests for validating switch statements.
v-switch01: switch statement selector expression must be of a scalar integer type
v-switch02: switch statement must have exactly one default clause
v-switch03: the case selector values must have the same type as the selector expression
v-switch04: a literal value must not appear more than once in the case selectors for a switch statement
v-switch05: a fallthrough statement must not appear as the last statement in last clause of a switch

Bug: tint: 6
Change-Id: I0283afec22e56097b6f63c8455da23b87dfe26dc
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27740
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-09-02 19:58:06 +00:00
Tomek Ponitka fd3ca9ee47 [wgsl-reader] Parsing sampled texture type
Bug: tint:147
Change-Id: I21c864dd63c2003797c78758358ab4134cd8ff31
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28002
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-09-02 15:52:15 +00:00
dan sinclair 17b2b246c1 [hlsl-writer] Simplify generated logical and/or expressions.
This Cl simplifes the generated code for logical and/or expressions to
assign the LHS and RHS directly instead of using if statements.

Bug: tint:192
Change-Id: I358e07007510cf8df151a100fda678c1c299cf4f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28040
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2020-09-02 15:13:25 +00:00
dan sinclair 2b5c9b23af [hlsl-writer] Simplify logical and/or code.
This CL unifies the logical and/or HLSL code as it was mostly duplicate
code.

Bug: tint:192
Change-Id: Ied050afb0b054a9ccda1c8896edabf78deaa3709
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27921
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2020-09-02 15:09:55 +00:00
dan sinclair 593824c9d3 [hlsl-writer] More logical and/or tests.
This Cl adds more tests for the logical and/or expansion based on the
various statements and expressions where the expansion can happen.

Bug: tint:192
Change-Id: I143cf80402dc70e2fb89b6a41914cbbe167b5a96
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27920
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-09-02 15:06:35 +00:00
dan sinclair b39c77e370 [hlsl-writer] Emit LogicalAnd and LogicalOr operations
This Cl emits the required code to handle LogicalAnd and LogicalOr short
circuting in HLSL.

Bug: tint:192
Change-Id: I30a88c207f7864e0a3c856d2dae1420c7ff35eb4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27782
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
2020-09-02 15:02:45 +00:00
dan sinclair a0842b50b9 [hlsl-writer] Support pre stream in if/else statements.
This CL updates the if and else statement support to output the pre
streams in the proper places.

Bug: tint:192
Change-Id: If217de7f838fc033823987e20ba7efc5cd6108ff
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27781
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2020-09-02 14:29:05 +00:00
dan sinclair b95fc538ed [hlsl-writer] Emit pre strings
This Cl updates the various statements to emit any pre strings which are
generated when emitting the statements.

Bug: tint:192
Change-Id: Ieb2e621a500c5d91a0b6a2938eabe8e2ffdd11d1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27800
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-09-02 14:21:05 +00:00
dan sinclair ddb05a3679 [hlsl-writer] Update all expressions to take a pre stream.
This Cl updates all of the expression methods to accept a pre stream.
The prestream is used to output code _before_ the statement which is
executing the expression. This will allow for unwrapping logical and and
or expressions and emitting them prior to their expression.

Bug: tint:192
Change-Id: Ifb24e7b8964948a3893185710f17177aaec2a2c9
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27780
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-09-02 14:19:45 +00:00
Tomek Ponitka 4beff41b7d [wgsl-reader] Parsing texture sampler types
Change-Id: I6a29d81deca40e89cf5b8ca95cf0373af3dd16b7
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28005
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-09-02 14:16:35 +00:00
dan sinclair f6e5c936b9 Fixup doxygen comment
Change-Id: I5ee292a4c408dc7ce368b2f078422ebce61dbf1f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27860
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2020-09-02 14:16:25 +00:00
Tomek Ponitka cbd1ef8523 [wgsl-reader] Parsing depth texture type
Change-Id: Ie886c85db52b934331abe2d5675d9d0e6cdd7210
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28001
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-09-02 14:06:45 +00:00
Tomek Ponitka c354200889 [wgsl-reader] Parsing sampler type
Change-Id: I58a3218a5d0b7ccbe6422340c94cdf3dc1bdf17a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28000
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-09-02 13:26:15 +00:00
Ryan Harrison 464928ed91 Add missing include patch
This missing in Dawn was being shadowed by spvc also including it.

BUG=dawn:521

Change-Id: I609cfcca74821ad07c0fd9e6fadf2c22fba40df0
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27901
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-09-01 21:29:06 +00:00
Tomek Ponitka 18a54647b7 [spirv-writer] Generate sampler type
Change-Id: I587cf7430711d8009becf76f7630091f32ed3490
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27840
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-09-01 14:20:24 +00:00
Ryan Harrison 11eda3cc3e Rolling 5 dependencies
Roll build/ aae8259e7..b1d8cdddd (59 commits)

aae8259e75..b1d8cdddd3

$ git log aae8259e7..b1d8cdddd --date=short --no-merges --format='%ad %ae %s'
2020-08-31 pkotwicz Update renamed PRESUBMIT function in docs
2020-08-31 chromium-autoroll Roll Fuchsia SDK from 0.20200831.0.1 to 0.20200831.1.1
2020-08-31 chromium-autoroll Roll Fuchsia SDK from 0.20200830.3.1 to 0.20200831.0.1
2020-08-31 wenbinzhang Revert "Rename wrapper_scripts for generated_script tests in MB."
2020-08-30 chromium-autoroll Roll Fuchsia SDK from 0.20200830.1.1 to 0.20200830.3.1
2020-08-30 chromium-autoroll Roll Fuchsia SDK from 0.20200830.0.1 to 0.20200830.1.1
2020-08-30 chromium-autoroll Roll Fuchsia SDK from 0.20200829.3.1 to 0.20200830.0.1
2020-08-30 chromium-autoroll Roll Fuchsia SDK from 0.20200829.2.1 to 0.20200829.3.1
2020-08-29 chromium-autoroll Roll Fuchsia SDK from 0.20200829.1.1 to 0.20200829.2.1
2020-08-29 chromium-autoroll Roll Fuchsia SDK from 0.20200828.3.1 to 0.20200829.1.1
2020-08-29 dpranke Add xvfb logic to all windowed test launcher targets.
2020-08-29 magchen Revert "Reland "Reland "X11 and Ozone: enable use_x11 and use_ozone"""
2020-08-28 chromium-autoroll Roll Fuchsia SDK from 0.20200828.1.1 to 0.20200828.3.1
2020-08-28 nharper Revert "Enable whole-program devirtualization for arm64 Android build."
2020-08-28 bjoyce Add result sink for test uploads.
2020-08-28 msisov Reland "Reland "X11 and Ozone: enable use_x11 and use_ozone""
2020-08-28 dpranke Rename wrapper_scripts for generated_script tests in MB.
2020-08-28 chromium-autoroll Roll Fuchsia SDK from 0.20200828.0.1 to 0.20200828.1.1
2020-08-28 benmason Revert "Update TrichromeChrome version code."
2020-08-28 chromium-autoroll Roll Fuchsia SDK from 0.20200827.3.2 to 0.20200828.0.1
2020-08-28 dewittj [AAR] Re-enable info file asserts.
2020-08-28 thomasanderson Reland "Roll sysroots"
2020-08-28 chromium-autoroll Roll Fuchsia SDK from 0.20200826.2.2 to 0.20200827.3.2
2020-08-27 smaier Removing extract_assets from android_aar_prebuilt
2020-08-27 msisov Reland "linux sysroot: fix libwayland-client-symbols file."
2020-08-27 chonggu [Fuchsia] Switch to dynamic loading of loosely-coupled target modules.
2020-08-27 waynepie [Fuchsia] Add recommended command-line to get access to /dev/kvm
2020-08-27 wez [fuchsia] Use virtio-net-pci for both ARM64 and x64 emulation.
2020-08-27 thomasanderson Revert "Roll sysroots"
2020-08-27 agrieve Revert "Android: Enable vertical class merging in R8"
2020-08-27 sclittle Revert "linux sysroot: fix libwayland-client-symbols file."
2020-08-27 thomasanderson Roll sysroots
2020-08-27 msisov linux sysroot: fix libwayland-client-symbols file.
2020-08-27 msisov Revert "Reland "X11 and Ozone: enable use_x11 and use_ozone""
2020-08-27 agrieve Remove unused constant build_utils.JAVA_PATH
2020-08-26 chromium-autoroll Roll Fuchsia SDK from 0.20200826.1.1 to 0.20200826.2.2
2020-08-26 chromium-autoroll Roll Fuchsia SDK from 0.20200826.0.1 to 0.20200826.1.1
2020-08-26 yukishiino base/allocator: Fix android_cronet build with PA-Everywhere
2020-08-26 msisov Reland "X11 and Ozone: enable use_x11 and use_ozone"
2020-08-26 wuwang Replaces uncommon char in file name for filesystem compatibility.
2020-08-26 chromium-autoroll Roll Fuchsia SDK from 0.20200825.3.1 to 0.20200826.0.1
2020-08-26 mark mac/arm64: Update to Xcode 12b6 (12A8189n)
2020-08-26 kouhei Specify libtinfo5 legacy package for building on Ubuntu 20.04
2020-08-25 chromium-autoroll Roll Fuchsia SDK from 0.20200825.1.1 to 0.20200825.3.1
2020-08-25 caseq Revert "X11 and Ozone: enable use_x11 and use_ozone"
2020-08-25 smaier Ignoring raw resources in HardcodeSharedLibraryDynamicAttributes
2020-08-25 msisov X11 and Ozone: enable use_x11 and use_ozone
2020-08-25 thestig Fix outdated comment in install-build-deps.sh.
2020-08-25 thestig install-build-deps: select between lib32gcc1 and lib32gcc-s1 as needed.
2020-08-25 wnwen Android: Ignore AppCompatResource lint warning
2020-08-25 msisov lacros: don't set pangocairo
2020-08-25 chromium-autoroll Roll Fuchsia SDK from 0.20200825.0.1 to 0.20200825.1.1
2020-08-25 agrieve Android: Enable vertical class merging in R8
2020-08-25 chromium-autoroll Roll Fuchsia SDK from 0.20200824.3.1 to 0.20200825.0.1
2020-08-25 brucedawson Handle toolchains with/without ..\.. in variables
2020-08-25 nbilling Implement DWARF Fission support in Chrome Android.
2020-08-25 caseq Fix headless build broken after #800929
2020-08-24 chromium-autoroll Roll Fuchsia SDK from 0.20200824.2.1 to 0.20200824.3.1
2020-08-24 chromium-autoroll Roll Fuchsia SDK from 0.20200824.0.1 to 0.20200824.2.1

Roll testing/ 3a36cd6d9..2691851e4 (48 commits)

3a36cd6d92..2691851e49

$ git log 3a36cd6d9..2691851e4 --date=short --no-merges --format='%ad %ae %s'
2020-08-31 jonahr Reduce webgl testing load on Mac Pro
2020-08-31 wenbinzhang Revert "Rename wrapper_scripts for generated_script tests in MB."
2020-08-29 dpranke Add xvfb logic to all windowed test launcher targets.
2020-08-29 zhaoyangli [iOS][infra] Run tests in iOS14 runtimes on ios-simulator-full-configs
2020-08-28 dpranke Rename wrapper_scripts for generated_script tests in MB.
2020-08-28 rmhasan skew tests, weblayer: Use temporary CIPD package tags
2020-08-28 wuwang Disable chrome_java_test_wpr_tests on Marshmallow 64 bit Tester
2020-08-27 dpranke Rework command handling for MB generated_scripts.
2020-08-27 svenzheng [lacros] Disable some content_browsertests
2020-08-27 zhaoyangli [iOS][infra] Remove iOS14 tester pool "chromium.tests.ios14" config.
2020-08-27 livvielin Enable HTTPDangerWarning by default
2020-08-27 cyan [Tab Groups Collapse] Add field trial testing config.
2020-08-27 fdoray Revert "[blink scheduler] Add OptOutWebRTCFromAllThrottling to testing config."
2020-08-27 ajuma [iOS] Add field trial testing config for real-time Safe Browsing
2020-08-27 javierrobles [iOS][Biometric-Auth] Add experiment config
2020-08-27 schwering [Autofill] Field trial config for user-filled-override fix.
2020-08-27 schwering [Autofill] Launched company-name blacklisting experiments.
2020-08-27 jinsukkim Enable gesturenav flaky test on android-pie-x86-fyi-rel
2020-08-26 dom Delay competing low priority requests in the renderer
2020-08-26 szager Add fieldtrial config for CompositeCrossOriginIframes
2020-08-26 rmhasan Change indents in variants.pyl to match other .pyl files
2020-08-26 sgilhuly Add test names to parameterized cc_unittests
2020-08-26 zhaoyangli [infra] Roll iOS bots to Xcode 12 beta 6 12a8189n.
2020-08-26 chonggu [Fuchsia] Enable more gpu integration tests on Fuchsia CI and CQ
2020-08-26 sgilhuly Enable TranslucentRectangles test on SkiaRenderer Dawn
2020-08-26 thestig Remove EnableCustomMacPaperSizes feature flag.
2020-08-26 mohsen Removed field trial config for DisableLatencyRecoveryDesktop
2020-08-26 yaoxia Field trial testing config for FlocIdComputedEventLogging
2020-08-26 jdeblasio [MIX-DL] Update field trial testing config
2020-08-26 rmhasan skew testing: Add variants.pyl owners
2020-08-25 dtseng Adds support for EventFrom action in desktop tree
2020-08-25 estaab Relax requirement to run web tests on Mac 10.13 bots with GPUs.
2020-08-25 svenzheng [lacros] Disable some flaky browser and interactive ui tests
2020-08-25 hypan Revert "android: Temporarily remove content_browsertests from L CQ builder"
2020-08-25 kmilka Add SharingHub to fieldtrial testing config
2020-08-25 twellington Reland "Disable P/CompositorImplBrowserTestRefreshRate.VideoPreference on M x86"
2020-08-25 hypan Revert "Disable P/CompositorImplBrowserTestRefreshRate.VideoPreference on M x86"
2020-08-25 hypan android: Increase the expiration for builders Android WebView {N,O} (dbg)
2020-08-25 gbeaty Set compile targets for chromium builders in test specs.
2020-08-25 sinansahin [Offline indicator v2] Add field trial testing entry
2020-08-25 vovoy Enable CrOSUserSpaceLowMemoryNotification by default
2020-08-24 svenzheng [lacros] Run components_unittests on CQ
2020-08-24 twellington Disable P/CompositorImplBrowserTestRefreshRate.VideoPreference on M x86
2020-08-24 michaelbai Support simulation of internal-profile reporting
2020-08-24 mcrouse [LiteVideo] Fieldtrial updated for beta experiment.
2020-08-24 johnchen [Perf] Configure android-pixel4a_power-perf bot
2020-08-24 jeffyoon Reland "[ios] noncq to run tests on 14.0 simulators"
2020-08-24 rmhasan weblayer: Add skew tests for new versions released in beta

Roll third_party/googletest/ 1e315c5b1..df6b75949 (1 commit)

1e315c5b1a..df6b75949b

$ git log 1e315c5b1..df6b75949 --date=short --no-merges --format='%ad %ae %s'
2020-08-26 absl-team Googletest export

Roll third_party/spirv-tools/ 4dd122392..8a0ebd40f (14 commits)

4dd122392f..8a0ebd40f8

$ git log 4dd122392..8a0ebd40f --date=short --no-merges --format='%ad %ae %s'
2020-08-31 jaebaek Correctly replace debug lexical scope of instruction (#3718)
2020-08-28 afdx spirv-fuzz: Remove opaque pointer design pattern (#3755)
2020-08-27 stefanomil spirv-fuzz: Create synonym via OpPhi and existing synonyms (#3701)
2020-08-27 stefanomil Add LoopNestingDepth function to StructuredCFGAnalysis (#3754)
2020-08-27 afdx spirv-fuzz: Do not make synonyms of void result ids (#3747)
2020-08-26 greg Do not register DebugFunction for functions optimized away. (#3749)
2020-08-26 jaebaek Handle DebugScope in compact-ids pass (#3724)
2020-08-26 afdx spirv-fuzz: Overflow ids (#3734)
2020-08-25 greg Fix DebugNoScope to not output InlinedAt operand. (#3748)
2020-08-25 vasniktel spirv-fuzz: Split the fact manager into multiple files (#3699)
2020-08-25 andreperezmaselco.developer spirv-fuzz: Add inline function transformation (#3517)
2020-08-25 vasniktel spirv-fuzz: Fix MaybeGetZeroConstant (#3740)
2020-08-24 greg Fix SSA-rewrite to remove DebugDeclare for variables without loads (#3719)
2020-08-24 stevenperron Add undef for inlined void function (#3720)

Roll tools/clang/ 9784c4f72..fcef86e30 (7 commits)

9784c4f72a..fcef86e30a

$ git log 9784c4f72..fcef86e30 --date=short --no-merges --format='%ad %ae %s'
2020-08-31 hans blink_gc_plugin: Update stack_allocated test expectations
2020-08-28 hans Fix the blink_gc_plugin tests after crrev.com/802490
2020-08-28 yukiy Remove a template param of LinkedHashSet in stub
2020-08-27 hans Roll clang llvmorg-12-init-3492-ga1caa302-1 : llvmorg-12-init-4187-g33ce275f-1.
2020-08-25 hans Clang build.py: Update gnuwin version to 14
2020-08-24 thakis clang upload script: Run mac-arm64-rel try bot on compiler rolls.
2020-08-24 thakis clang upload script: sort cq-include-trybots footer alphabetically

Created with:
  roll-dep build buildtools testing third_party/googletest third_party/gpuweb-cts third_party/spirv-headers third_party/spirv-tools tools/clang

Change-Id: I0f041fc70616672a715e6a8e63e988e947cc59ff
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27762
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 19:16:04 +00:00
David Neto 7653485162 [spirv-reader] Set some source locations
Set source location on function variable declarations, const
declarations, and most normal instructions.

Bug: tint:3
Change-Id: I469afcdf1b7d8f6d1e64617189a6fa329056737f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27700
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 18:52:54 +00:00
Tomek Ponitka 3588406b78 [spirv-writer] Generate texture type
Change-Id: I9a3c75af1c5243f400cd98780736860e68b709ea
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27580
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 16:11:44 +00:00
Tomek Ponitka 6803529d58 [spirv-writer] Convert ast image format types to spv
Change-Id: I987e729a607e69294c472b7667eae82c7339a0df
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27640
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 15:49:43 +00:00
Tomek Ponitka 1a61fc4dc7 [type-determination] Adding builtin texture operations
That includes texture_load, texture_sample, texture_sample_level,
texture_sample_bias, texture_sample_compare. Also determining the
result type.

Change-Id: I9e6fb19964fa171ee9b0594633b2dfe95e3e38b1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27360
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 15:24:54 +00:00
Tomek Ponitka a454ef9024 [ast] Determining subtype of StorageTextureType
It's determined at the beginning of TypeDeterminer::Determine().

Bug: tint:141
Change-Id: I761199db0c9813dbd42c6cb4ecb3532d1a39f49f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27460
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 15:11:23 +00:00
dan sinclair 764110d675 [msl-writer][hlsl-writer] Pull loop variables out with continuing.
If there is a continuing block we pull the variables declared in the
loop up into the scope outside the loop. This allows those variables to
be used in the continuing block.

We pull out all variables instead of detecting ones which are only used
in continuing as that's easier and still correct.

Bug: tint:187, tint:186
Change-Id: I1de0e36111a236ff04a323cf9777bc79e67afa77
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27620
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-08-31 14:15:51 +00:00
David Neto 5a75a174d6 [spirv-reader] Uses in phis count as uses
This is required so we actually emit values that are only used
in phis.

Bug: tint:3, tint:215
Change-Id: I9d957a697839b8d09246905c3f28064f0bc01731
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27701
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-31 14:05:51 +00:00
David Neto c5d65cc917 [spirv-reader] Don't hoist pointers that are already in scope.
Bug: tint:3, tint:213
Change-Id: I79410c670b8690c1f1ea86b7b9427f272a4ebbbb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27720
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-29 16:11:02 +00:00
David Neto 6c2a7b712c [spirv-reader] Track line numbers
If OpLine debug instructions are present, use their line and column
numbers.  Otherwise, use the instruction number as the line number, starting
counting from 1.

Bug: tint:3
Change-Id: Ia46c10732922b80b5737b13af1ef71f4259a3555
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27680
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-28 20:38:02 +00:00
David Neto 25b856aa64 [spirv-reader] Avoid certain hoisting cases
If a definition occurs in the first block of an IfSelection or
SwitchSelection, then it should count as belonging to the scope of the
parent of that if or switch selection.  This prevents some bad hoisting
decisions.

Bug: tint:3, tint:213
Change-Id: I89df5e8cbc163577e19e78c2bf393eb1eec4a0aa
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27660
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: David Neto <dneto@google.com>
2020-08-28 19:58:12 +00:00
David Neto fed63103f5 [spirv-reader] Follow non-canonicalized SPIR-V type for composite extract
Follow the actual SPIR-V type when computing a composite extract
instad of the canonicalized view in the optimizer's type manager.
Do this so we can generate the correct member name for a struct,
rather than using the member name for the other representative
struct type. The optimizer's type canonicalizer is insensitive to
struct member names.

Prompted by tint:213, for which the original case was an
access chain.

Bug: tint:3, tint:213
Change-Id: I8705c7ee655fe47c8b7a3658db524fe18833efdb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27603
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-28 16:28:42 +00:00
David Neto 53b1c39036 [spirv-reader] Follow non-canonicalized SPIR-V type for access chains
Follow the actual SPIR-V type when computing an access chain expression,
instead of the canonicalized view in the optimizer's type manager.
Do this so we can generate the correct member name for a struct,
rather than using the member name for the other representative
struct type. The optimizer's type canonicalizer is insensitive to
struct member names.

Fixes tint:213

Bug: tint:3, tint:213
Change-Id: I88ec42a4cb049b011a59d5522e4cb39bc181a4fb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27602
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-28 15:49:31 +00:00
dan sinclair 46252ec3ba [wgsl-parser] Consume empty struct closing brace.
This CL updates the WGSL parser to consume the closing } of an empty
struct.

Bug: tint:218
Change-Id: I0b17d2178b1b4b7f44fcf007da867db07dc2a6ae
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27600
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-27 18:17:10 +00:00
Sarah Mashayekhi 5f915f1f92 [validation] check if at least one of vertex, fragment or compute shader is peresent
Bug: tint: 6
Change-Id: I826d951c374409699082f38fb65225f5b4a83f2d
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27483
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-27 18:05:00 +00:00
Sarah Mashayekhi 4bc38c3f63 [validation] Add a helper function to create a fake entry point
Change-Id: I234c04315bec006597caed38f1872baf348a3651
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27482
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-27 17:59:20 +00:00
dan sinclair 8d72a2bc4e Add missing doc comments.
This cl adds some missing doc comments.

Change-Id: Ic5452c2f9a40ddcc4642062a338f602632f3e057
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27520
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: David Neto <dneto@google.com>
2020-08-26 20:38:46 +00:00
dan sinclair 63b007d34f [hlsl-writer] Move test helper to a template.
This CL updates TestHelper to be a templated class and converts the test
suites into using statements based off that template.

Bug: tint:7
Change-Id: I747434e7c6a8ecae353df448f06153e982dcec44
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27500
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2020-08-26 20:02:26 +00:00
dan sinclair 663be30b55 [hlsl-writer] Support matrices in storage buffers.
This CL adds the needed code to load matrix data from a storage buffer.

Bug: tint:7
Change-Id: I850b03adc7fa957b7babbad40d07ec3544b0617f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27442
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
2020-08-26 19:55:46 +00:00
dan sinclair fea2636945 [hlsl-writer] Emit numthreads for compute shaders.
This CL adds the numthreads annotation when emitting compute shaders.

Bug: tint:7
Change-Id: Ie0f47adfca0a0684f701f280958163b3da0019b4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27480
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2020-08-26 19:24:26 +00:00
dan sinclair 42b0e2d5af [hlsl-writer] Emit zero matrix values.
This CL extends the zero emission to support matrices.

Bug: tint:7
Change-Id: I7e39a68c83edb096fc4b365c66539e8a8b7cb1db
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27443
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-08-26 19:24:16 +00:00
dan sinclair 04746d930d [hlsl-writer] Extract storage buffer index generation.
This CL extracts the index string for a storage buffer access.

Bug: tint:7
Change-Id: Ibc0d7dd5b532bbd6141cce4a82495732452d1414
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27441
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-08-26 19:22:56 +00:00
dan sinclair 43915bd0a1 Emit structs when emitting the aliases.
This Cl updates the AST dump command to emit struct members after
emitting the type alias.

Change-Id: I5e0c3d8f2cc56525586646c613839c2e014d471f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27320
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-08-26 19:09:26 +00:00
dan sinclair df503f0e85 [hlsl-writer] Refactor output emission.
This CL updates the HLSL backend to take the output stream as a
parameter. This is needed because there are cases where we have to
generate the resulting stream out of order. This will allow that to
happen.

Bug: tint:7
Change-Id: Id1877a07e536a84da0555f207d1030588d44c034
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27440
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: David Neto <dneto@google.com>
2020-08-26 19:05:46 +00:00
dan sinclair bdb86723e8 [hlsl-writer] StorageBuffer support.
This Cl adds support for storage buffers to the HLSL backend.

Bug: tint:7
Change-Id: I7adb655de8ccfcb6771fa661ff205c543b4efe66
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27001
Reviewed-by: David Neto <dneto@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-25 21:22:37 +00:00
Sarah Mashayekhi fc1327f1d9 [validation] implement the pair of entry point stage and name must be unique
This CL implements the following rule:
v-0020: The pair of <entry point name, pipeline stage> must be unique in the module

Bug: tint: 6
Change-Id: Id0c50438861b251d48a9f8dcb8a23556327c965c
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27380
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
2020-08-25 21:22:07 +00:00
Sarah Mashayekhi 6a0e28b624 [valdiation] Add disable test for v-0020, the <entry point name, pipeline stage> must be unique
Bug: tint: 6
Change-Id: I3fa9c1427ee99c9a442369516ddef0c11f33304f
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27280
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-25 16:06:24 +00:00
Sarah Mashayekhi 4fb431c90e [validation] validates if global variables have a storage class
This CL moves the global variables checks to a function
Adds tests and checks for validation rule v-0022:
Global variables must have a storage class.

Bug: tint: 6
Change-Id: I2f2cd7df6e849bfd1ddfbca35568c6fc3345efa6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27283
Commit-Queue: Sarah Mashayekhi <sarahmashay@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-25 15:04:53 +00:00
dan sinclair deea295fc1 [wgsl-parser] Set max recursion depth on const_expr
The `const_expr` can recurse into itself if there are type declarations
inside the const_expr (e.g. vec2<f32>(f32(1.0), f32(2.0))). Currently
there is no limit on the amount of recursion which can be triggered.

This CL sets a limit of 128 nested type declarations at which point an
error will be emitted.

Bug: chromium:1112144
Change-Id: Ifae45034dc9de35aed78ba8eddf584a46c7a55ce
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27340
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
2020-08-25 14:58:33 +00:00
Ryan Harrison a291fc1e7f Ran 'git cl format' over an empty CL
Change-Id: Ied8585a4d266900925a81836db45f7525cd5f628
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27181
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-25 14:55:53 +00:00
Sarah Mashayekhi 3765a24060 [validation] clean up: using ValidatorImpl member instead of creating one
Change-Id: I9a35319a33b5c9c0508d1fdc38c8678ca204b4ce
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27285
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-25 14:09:03 +00:00
Sarah Mashayekhi 3fad211a8f [validation] Add a validator test helper class
Change-Id: I12d225dbbda3ceffda6f0f0dbf264a6a6b249fb2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27284
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-25 14:06:05 +00:00
Tomek Ponitka 63a5aa7d58 [wgsl-reader] Adding for loops
Implementing ParserImpl::for_stmt(). Also adding
for_stmt and body_stmt to ParserImpl::statement().

Bug: tint:138
Change-Id: Idc3f901648ca115f4d94b3614a940263ef841282
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/27261
Commit-Queue: Tomek Ponitka <tommek@google.com>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-08-24 18:22:22 +00:00