Commit Graph

184 Commits

Author SHA1 Message Date
Stephen White a52abab38c Nuke SPIRV-Cross.
Change-Id: I1fc58d50ba3999e3a9b6f4e30a0799be301893de
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/79481
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2022-02-11 00:45:51 +00:00
Stephen White 25b3ed12e3 Enable the Tint/GLSL backend in the CMake build.
Don't build the Tint samples, because they require glslang.

Change-Id: I04ac6bb313fa8926bd161b91488d30c2c26ebb67
Bug: dawn:1217
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/79660
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2022-02-08 15:32:00 +00:00
Stephen White 89c730dbf3 GLSL: only build glslang if we're building samples.
We'll need this to build the GLSL backend in Dawn, since we don't want
glslang there.

Bug: tint:1217
Change-Id: Ied44ca89286c1d53a2e58a7083f0bfb859976770
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/79500
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2022-02-07 16:05:36 +00:00
Corentin Wallez facbc82d6c Revert "Roll third_party/glfw/ 947731113..df8d7bc89 (184 commits)"
This reverts commit 6c9a5920ea.

Reason for revert: Doesn't roll properly in Chromium.

Original change's description:
> Roll third_party/glfw/ 947731113..df8d7bc89 (184 commits)
>
> 9477311130..df8d7bc892
>
> $ git log 947731113..df8d7bc89 --date=short --no-merges --format='%ad %ae %s'
> 2021-12-31 elmindreda Wayland: Clean up modifier key event handler
> 2021-12-31 elmindreda Wayland: Clean up key translation
> 2021-12-30 elmindreda Wayland: Fix text input not following key repeat
> 2021-12-30 elmindreda Wayland: Clean up key event handler
> 2021-12-30 elmindreda Wayland: Require xkbcommon 0.5.0 or greater
> 2021-12-30 elmindreda Wayland: Clean up text input
> 2021-12-30 elmindreda Clean up internal Unicode code point handling
> 2021-12-29 elmindreda Wayland: Implement key name support
> 2021-12-30 elmindreda Move UTF-8 encoding to shared code
> 2021-12-30 elmindreda Wayland: Fix keys reported as wrong or unknown key
> 2021-12-28 elmindreda Wayland: Fix GLFW_VISIBLE affecting full screen
> 2021-12-28 elmindreda Fix gamma test not checking for NULL return value
> 2021-12-28 elmindreda Wayland: Fix missing damage event on window show
> 2021-12-28 elmindreda Wayland: Fix window not visible after initial swap
> 2021-12-27 elmindreda Wayland: Remove window monitor array pre-alloc
> 2021-12-27 elmindreda Wayland: Remove superfluous initialize to NULL
> 2021-12-27 elmindreda Wayland: Move window title cloning to creation
> 2021-12-27 elmindreda Wayland: Gather framebuffer transparency logic
> 2021-12-27 elmindreda Wayland: Move surface creation function
> 2021-12-26 elmindreda Wayland: Fix repeated key not released on defocus
> 2021-12-27 elmindreda Wayland: Control key repeat via timerfd state
> 2021-12-26 elmindreda Wayland: Clean up event pump
> 2021-12-30 linkmauve Wayland: Use correct action on fallback decoration
> 2021-12-27 elmindreda Wayland: Document delayed window showing
> 2021-12-26 elmindreda Update docs for specific Vulkan surface extensions
> 2021-12-22 elmindreda X11: Fix sonames for loaded libraries on OpenBSD
> 2021-12-22 elmindreda Add hiding and showing to interactive window test
> 2020-07-12 jason Wayland: Fix window hiding
> 2021-12-22 elmindreda Wayland: Fix key repeat continuing when refocused
> 2021-12-22 elmindreda Wayland: Fix duplicate focus event on activation
> 2021-12-14 linkmauve EGL: Use EGL_EXT_present_opaque when available
> 2021-12-14 linkmauve Wayland: Continue poll() if timerfd can’t be read
> 2020-06-05 lattis Wayland: Set O_NONBLOCK on repeat timerfd
> 2021-12-09 elmindreda X11: Add extension header paths to CMake target
> 2021-12-08 elmindreda Fix initial windowed mode size for test
> 2021-12-05 59504965+InKryption Add missing errors section for glfwGetGamepadName
> 2021-12-01 elmindreda Win32: Handle content scale error on creation
> 2021-12-01 elmindreda Win32: Fix bad content scale on monitor disconnect
> 2021-11-30 elmindreda Formatting
> 2021-11-30 elmindreda Cleanup
> 2021-11-02 elmindreda Add credits and update changelog
> 2021-10-31 stephen X11: Fix undefined behavior in glfwSetWindowIcon
> 2021-11-15 stephen Fix docs calling GLFW_CONTEXT_REVISION a hint
> 2021-11-16 elmindreda Gather Null specific platform selection logic
> 2021-11-09 elmindreda Update comments for global mutable data
> 2021-10-28 luzpaz Fix source comment typo
> 2021-11-25 elmindreda Add credit
> 2021-11-22 59504965+InKryption Add missing error to glfwGetClipboardString docs
> 2021-11-22 elmindreda Add credit
> 2021-11-18 jeebjp Cocoa: Use MACH_PORT_NULL for default IOKit port
> (...)
> 2021-07-14 elmindreda Add credit
> 2021-07-07 david.v.mckay realizing "as you would" is platform dependent
> 2021-07-07 david.v.mckay Clarify "as you would" for beginners.
> 2021-06-25 elmindreda Remove errors for gamepad element mismatch
> 2021-06-23 lazylumpster+github Consistent subsections in compile guide
> 2021-06-22 elmindreda Wayland: Fix missing constant on FreeBSD
> 2021-06-22 elmindreda Wayland: Fix case of epollshim find module name
> 2021-06-15 elmindreda Add missing changelog entry
> 2021-06-14 elmindreda Add notes on getting the HDC of a window on Win32
> 2021-06-09 elmindreda Fix some documentation URLs still using http:
> 2021-06-09 elmindreda Update IRC network to Libera.Chat
> 2021-06-09 elmindreda Add 'latest' branch to all CI builds
> 2021-06-09 elmindreda Move VS 2019 builds from AppVeyor to GH Actions
> 2021-06-07 elmindreda Migrate from Travis CI to GitHub Actions
> 2021-06-07 elmindreda Fix numeric conversion warnings in example
> 2021-05-14 elmindreda EGL: Fix creation of single-buffered windows
> 2021-05-14 elmindreda Move single/double-buffer filtering to backends
> 2021-05-13 elmindreda Skip initial buffer swap when single-buffered
> 2021-05-13 elmindreda Make GLFW_DOUBLEBUFFER a window attribute
> 2021-05-13 elmindreda Make monitor and joystick names static strings
> 2021-05-13 elmindreda Remove claim that EGL is not supported on macOS
> 2021-05-12 elmindreda Clarify documentation for hints
> 2021-05-12 elmindreda Fix header version macro descriptions in docs
> 2021-04-20 elmindreda Win32: Always define UNICODE and _UNICODE
> 2021-04-16 elmindreda Win32: Fix macros being enabled for other backends
> 2021-04-22 elmindreda Fix description of video mode ordering in docs
> 2021-04-15 konstantin Fix hardcoded runtime destination in CMake install
> 2021-04-12 elmindreda Win32: Fix compilation with standalone LLVM
> 2021-04-12 elmindreda Replace GL_ARB_debug_output in comments
> 2021-04-12 elmindreda Replace GL_ARB_debug_output in context guide
> 2021-04-11 elmindreda Add Vulkan device presentation support to glfwinfo
> 2021-04-11 elmindreda Add window surface creation to glfwinfo
> 2020-12-10 elmindreda Fix grammar in MoltenVK support docs
> 2021-04-11 elmindreda Add GLFW_X11_XCB_VULKAN_SURFACE flag to glfwinfo
> 2020-12-10 elmindreda Add docs for GLFW_X11_XCB_VULKAN_SURFACE
> 2020-10-23 caramelli.devel Add GLFW_X11_XCB_VULKAN_SURFACE init hint
> 2020-10-12 elmindreda Update USE_MSVC_RUNTIME_LIBRARY_DLL for CMake 3.15
> 2021-03-21 elmindreda Fix implicit double-to-float in linmath.h
> 2021-03-19 elmindreda Add issue number to changelog
> 2021-03-19 elmindreda Remove deprecated Doxygen tag
> 2021-03-15 elmindreda Win32: Add warning when option will have no effect
> 2020-08-20 elmindreda Ignore cached state when setting window attributes
> 2021-03-10 elmindreda Update linmath.h
> 2021-03-09 elmindreda Win32: Add MinGW-w64 detection to version string
> 2021-03-08 elmindreda X11: Fix attribs not applied on leaving fullscreen
> 2021-02-17 elmindreda Update changelog
> 2021-02-09 elmindreda Wayland: Move DPI fallback work to output done
> 2021-01-20 elmindreda Win32: Fix content area rescaling on older systems
> 2021-01-19 elmindreda Win32: Fix full screen windows affected by scaling
> 2021-02-10 elmindreda Cocoa: Fix console apps getting a dock icon
>
> Created with:
>   roll-dep third_party/glfw
>
> Bug: dawn:1246
> Change-Id: If6357019587d43bebc9eea79d8a5af0bf81d4734
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/75421
> Reviewed-by: Loko Kung <lokokung@google.com>
> Reviewed-by: Austin Eng <enga@chromium.org>
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>

TBR=cwallez@chromium.org,enga@chromium.org,lokokung@google.com

Change-Id: Iab8c93e4cb2b4b905a84c339ea47a5fbd4408caa
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: dawn:1246
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/77942
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2022-01-25 14:22:05 +00:00
Corentin Wallez 6c9a5920ea Roll third_party/glfw/ 947731113..df8d7bc89 (184 commits)
9477311130..df8d7bc892

$ git log 947731113..df8d7bc89 --date=short --no-merges --format='%ad %ae %s'
2021-12-31 elmindreda Wayland: Clean up modifier key event handler
2021-12-31 elmindreda Wayland: Clean up key translation
2021-12-30 elmindreda Wayland: Fix text input not following key repeat
2021-12-30 elmindreda Wayland: Clean up key event handler
2021-12-30 elmindreda Wayland: Require xkbcommon 0.5.0 or greater
2021-12-30 elmindreda Wayland: Clean up text input
2021-12-30 elmindreda Clean up internal Unicode code point handling
2021-12-29 elmindreda Wayland: Implement key name support
2021-12-30 elmindreda Move UTF-8 encoding to shared code
2021-12-30 elmindreda Wayland: Fix keys reported as wrong or unknown key
2021-12-28 elmindreda Wayland: Fix GLFW_VISIBLE affecting full screen
2021-12-28 elmindreda Fix gamma test not checking for NULL return value
2021-12-28 elmindreda Wayland: Fix missing damage event on window show
2021-12-28 elmindreda Wayland: Fix window not visible after initial swap
2021-12-27 elmindreda Wayland: Remove window monitor array pre-alloc
2021-12-27 elmindreda Wayland: Remove superfluous initialize to NULL
2021-12-27 elmindreda Wayland: Move window title cloning to creation
2021-12-27 elmindreda Wayland: Gather framebuffer transparency logic
2021-12-27 elmindreda Wayland: Move surface creation function
2021-12-26 elmindreda Wayland: Fix repeated key not released on defocus
2021-12-27 elmindreda Wayland: Control key repeat via timerfd state
2021-12-26 elmindreda Wayland: Clean up event pump
2021-12-30 linkmauve Wayland: Use correct action on fallback decoration
2021-12-27 elmindreda Wayland: Document delayed window showing
2021-12-26 elmindreda Update docs for specific Vulkan surface extensions
2021-12-22 elmindreda X11: Fix sonames for loaded libraries on OpenBSD
2021-12-22 elmindreda Add hiding and showing to interactive window test
2020-07-12 jason Wayland: Fix window hiding
2021-12-22 elmindreda Wayland: Fix key repeat continuing when refocused
2021-12-22 elmindreda Wayland: Fix duplicate focus event on activation
2021-12-14 linkmauve EGL: Use EGL_EXT_present_opaque when available
2021-12-14 linkmauve Wayland: Continue poll() if timerfd can’t be read
2020-06-05 lattis Wayland: Set O_NONBLOCK on repeat timerfd
2021-12-09 elmindreda X11: Add extension header paths to CMake target
2021-12-08 elmindreda Fix initial windowed mode size for test
2021-12-05 59504965+InKryption Add missing errors section for glfwGetGamepadName
2021-12-01 elmindreda Win32: Handle content scale error on creation
2021-12-01 elmindreda Win32: Fix bad content scale on monitor disconnect
2021-11-30 elmindreda Formatting
2021-11-30 elmindreda Cleanup
2021-11-02 elmindreda Add credits and update changelog
2021-10-31 stephen X11: Fix undefined behavior in glfwSetWindowIcon
2021-11-15 stephen Fix docs calling GLFW_CONTEXT_REVISION a hint
2021-11-16 elmindreda Gather Null specific platform selection logic
2021-11-09 elmindreda Update comments for global mutable data
2021-10-28 luzpaz Fix source comment typo
2021-11-25 elmindreda Add credit
2021-11-22 59504965+InKryption Add missing error to glfwGetClipboardString docs
2021-11-22 elmindreda Add credit
2021-11-18 jeebjp Cocoa: Use MACH_PORT_NULL for default IOKit port
(...)
2021-07-14 elmindreda Add credit
2021-07-07 david.v.mckay realizing "as you would" is platform dependent
2021-07-07 david.v.mckay Clarify "as you would" for beginners.
2021-06-25 elmindreda Remove errors for gamepad element mismatch
2021-06-23 lazylumpster+github Consistent subsections in compile guide
2021-06-22 elmindreda Wayland: Fix missing constant on FreeBSD
2021-06-22 elmindreda Wayland: Fix case of epollshim find module name
2021-06-15 elmindreda Add missing changelog entry
2021-06-14 elmindreda Add notes on getting the HDC of a window on Win32
2021-06-09 elmindreda Fix some documentation URLs still using http:
2021-06-09 elmindreda Update IRC network to Libera.Chat
2021-06-09 elmindreda Add 'latest' branch to all CI builds
2021-06-09 elmindreda Move VS 2019 builds from AppVeyor to GH Actions
2021-06-07 elmindreda Migrate from Travis CI to GitHub Actions
2021-06-07 elmindreda Fix numeric conversion warnings in example
2021-05-14 elmindreda EGL: Fix creation of single-buffered windows
2021-05-14 elmindreda Move single/double-buffer filtering to backends
2021-05-13 elmindreda Skip initial buffer swap when single-buffered
2021-05-13 elmindreda Make GLFW_DOUBLEBUFFER a window attribute
2021-05-13 elmindreda Make monitor and joystick names static strings
2021-05-13 elmindreda Remove claim that EGL is not supported on macOS
2021-05-12 elmindreda Clarify documentation for hints
2021-05-12 elmindreda Fix header version macro descriptions in docs
2021-04-20 elmindreda Win32: Always define UNICODE and _UNICODE
2021-04-16 elmindreda Win32: Fix macros being enabled for other backends
2021-04-22 elmindreda Fix description of video mode ordering in docs
2021-04-15 konstantin Fix hardcoded runtime destination in CMake install
2021-04-12 elmindreda Win32: Fix compilation with standalone LLVM
2021-04-12 elmindreda Replace GL_ARB_debug_output in comments
2021-04-12 elmindreda Replace GL_ARB_debug_output in context guide
2021-04-11 elmindreda Add Vulkan device presentation support to glfwinfo
2021-04-11 elmindreda Add window surface creation to glfwinfo
2020-12-10 elmindreda Fix grammar in MoltenVK support docs
2021-04-11 elmindreda Add GLFW_X11_XCB_VULKAN_SURFACE flag to glfwinfo
2020-12-10 elmindreda Add docs for GLFW_X11_XCB_VULKAN_SURFACE
2020-10-23 caramelli.devel Add GLFW_X11_XCB_VULKAN_SURFACE init hint
2020-10-12 elmindreda Update USE_MSVC_RUNTIME_LIBRARY_DLL for CMake 3.15
2021-03-21 elmindreda Fix implicit double-to-float in linmath.h
2021-03-19 elmindreda Add issue number to changelog
2021-03-19 elmindreda Remove deprecated Doxygen tag
2021-03-15 elmindreda Win32: Add warning when option will have no effect
2020-08-20 elmindreda Ignore cached state when setting window attributes
2021-03-10 elmindreda Update linmath.h
2021-03-09 elmindreda Win32: Add MinGW-w64 detection to version string
2021-03-08 elmindreda X11: Fix attribs not applied on leaving fullscreen
2021-02-17 elmindreda Update changelog
2021-02-09 elmindreda Wayland: Move DPI fallback work to output done
2021-01-20 elmindreda Win32: Fix content area rescaling on older systems
2021-01-19 elmindreda Win32: Fix full screen windows affected by scaling
2021-02-10 elmindreda Cocoa: Fix console apps getting a dock icon

Created with:
  roll-dep third_party/glfw

Bug: dawn:1246
Change-Id: If6357019587d43bebc9eea79d8a5af0bf81d4734
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/75421
Reviewed-by: Loko Kung <lokokung@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2022-01-25 08:49:17 +00:00
Ben Clayton be2362b18c benchmarks: Add a basic set of benchmarks
Add google benchmark to the DEPs.

Implement a basic set of benchmarks for each of the writers and the WGSL parser.

Add build rules for CMake. GN build rules TODO.

Add a simple go tool (ported from Marl) to diff two benchmarks. Less
noisy than the one provided by google benchmark.

Bug: tint:1378
Change-Id: I73cf92c5d9fd2d3bfac8f264864fd774afbd5d01
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/76840
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
2022-01-18 18:58:16 +00:00
James Price 38197e7b13 cmake: Always build Tint as a static library
The shared library build of Tint is currently broken with CMake, since
we set -fvisibility=hidden and do not export any of Tint's publicly
used APIs.

Change-Id: I63518fbd13e2adbf17aba79114c66d1567b8268b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/75780
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
2022-01-11 16:34:55 +00:00
Corentin Wallez 5bd9445127 Remove CubeReflection and the dependency on GLM
Bug: None
Change-Id: Ie0948a8c14751777754360d276ce212507b74642
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/72581
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-12-14 08:42:36 +00:00
Corentin Wallez 959f1da637 Roll Vulkan headers to 1.2.201
Also delete vulkan.hpp that we don't use, and vulkan_fuchsia_extras that
have since then been upstreamed.

Also updates the fuchsia external import code to use the non-temp
extension.

Bug: dawn:221

Change-Id: I23e1bfedc5a18731be1e58d0bae1bddf6b0f45fa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/71601
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Loko Kung <lokokung@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-12-02 20:27:58 +00:00
Ben Clayton 1affadcab7 CMake: Disable Tint's GLSL writer
Currently enabling this build target requires a dependency on glslang, which Dawn does not provide.
Just disable this target while we figure how we want to tackle this.

Bug: tint:1217
Change-Id: I79f2ef6e1b007e69ad4aa0d40500b0d1c6a52d6f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/66605
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-10-15 19:10:23 +00:00
Stephen White 7cf3b28a87 GLSL writer: validate all entry points with glslang.
Generate and validate all entry points individually.
This is required since GLSL has separate shader files, and
can only have a single "main" entry point.

Bug: tint:1217
Change-Id: Ie5cb510aaef3b7c8a7573f5fa9446815284afecb
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/61920
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-10-14 14:39:36 +00:00
Aleksi Sapon 9a10674bb9 CMake: fix third parties when dawn is a sub-build
Set BUILD_TESTING to OFF, mainly so Abseil doesn't build its tests,
which aren't configured properly for sub-builds.

Use CMAKE_CURRENT_BINARY_DIR instead of CMAKE_BINARY_DIR, so third
parties are built in the same directory as the rest of dawn.

Change-Id: I51a2c0887bfb42c1c21223c41bfcbd2816e34034
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/65080
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-09-28 16:48:01 +00:00
Ben Clayton 30eeac7578 CMake: Simplify overriding of options / settings
Outer projects can just set() the option / setting before calling add_subdirectory() on Dawn.

Also provide a build directory for Dawn's third_party dependencies. Allows the outer project to specify a third_party directory that's out of the dawn tree.

Change-Id: I04c5f12b362ee9c9488b7b78a6aa5fa6f55dec98
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/64743
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-09-24 10:38:18 +00:00
Brandon Jones a04663c13d Added Abseil as a third-party dependency (Take 2)
Another attempt at https://dawn-review.googlesource.com/c/dawn/+/63780
Depends on https://skia-review.googlesource.com/c/skia/+/451638

This version of the CL fixes the Cmake and Skia compatibility issues
from the previous CL.

Bug: dawn:563
Change-Id: I41a7ee0aef1924df08a9be41e94effb7cd0025df
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/64600
Commit-Queue: Brandon Jones <bajones@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-09-23 20:36:03 +00:00
Ben Clayton 0ecd67a3fa CMake: Fix build when DAWN_BUILD_EXAMPLES=0
glfw is used by several `src/utils/*.cpp` files, regardless of whether examples are being built or not.

Change-Id: Iba90fbf96e254979c72acf792af3cb86d889f5db
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/64742
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-09-23 20:13:53 +00:00
Ben Clayton c19329c832 CMake: Only require SPIRV-Cross when enabling OpenGL backend
Change-Id: Ie6be1301c3f2f9877a9dfb04ab5025559b90d926
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/64741
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-09-23 19:24:43 +00:00
Ben Clayton d1c6f83341 CMake: Massage CMakeLists for use by NodeJS bindings
Allow the third_party directory to be controlled by the outer sub-project.

Change-Id: I11030c75254c264c1955150bdf1983771b33b614
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/64500
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
2021-09-20 19:47:05 +00:00
Shrek Shao 2f8f2518e5 Revert "Added Abseil as a third-party dependency"
This reverts commit 020d69905e.

Reason for revert: Causing Dawn Skia roll build fails

https://task-scheduler.skia.org/job/AZXXBm9h9ozj3kKiRJM5

Original change's description:
> Added Abseil as a third-party dependency
>
> Using the version in the Chromium repo in order to make use of the .gn
> files it contains.
>
> Doing so also appears to require us to switch where we pull googletest
> from so that the directory structure matches what the Abseil build
> config expects. Fortunately this doesn't seem to cause issues in our
> tests.
>
> Bug: dawn:563
> Change-Id: I55831ad33f282b3d8b03b67826fd2776e5602d89
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/63780
> Reviewed-by: Austin Eng <enga@chromium.org>
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>
> Auto-Submit: Brandon Jones <bajones@chromium.org>

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: dawn:563
Change-Id: I0fc4e5fc73ab9b0887591135ec01adde990edd6f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/64361
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
2021-09-15 19:22:19 +00:00
Brandon Jones 020d69905e Added Abseil as a third-party dependency
Using the version in the Chromium repo in order to make use of the .gn
files it contains.

Doing so also appears to require us to switch where we pull googletest
from so that the directory structure matches what the Abseil build
config expects. Fortunately this doesn't seem to cause issues in our
tests.

Bug: dawn:563
Change-Id: I55831ad33f282b3d8b03b67826fd2776e5602d89
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/63780
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Brandon Jones <bajones@chromium.org>
2021-09-14 16:56:15 +00:00
Alastair Donaldson 66b979d7fb Override CMake cache for fuzzer options
Enabling particular fuzzers requires that certain other CMake options
are enabled. For example, enabling the SPIR-V Tools fuzzer requires
enabling the CMake option for building spirv-fuzz. This change uses the
FORCE parameter to force the CMake cache to be overridden in such cases.
The change also adds FORCE to other options where it seems appropriate,
and improves some doc strings associated with CMake options.

Fixes: tint:1024
Change-Id: Ia72ddc0b3af625bb21ff1cc1c7121185ec3908b6
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/59204
Auto-Submit: Alastair Donaldson <afdx@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Vasyl Teliman <vasniktel@gmail.com>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Alastair Donaldson <afdx@google.com>
2021-07-22 10:14:34 +00:00
Vasyl Teliman c6bcab02fd Implement AST fuzzer
This change implements a new fuzzer. It mutates a WGSL shader by traversing
the AST of a program and applying various transformations that might or might not
be semantics preserving.

Change-Id: I6b144bd1067444c3f0b815ba1a646aaf6e739b52
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/52160
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Vasyl Teliman <vasniktel@gmail.com>
Reviewed-by: Alastair Donaldson <allydonaldson@googlemail.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-07-13 12:01:25 +00:00
Vasyl Teliman 0b3611b8c8 Add spirv-tools fuzzer
This change adds a new tint fuzzer that uses SPIRV-Tools to fuzz SPIR-V binaries.
The fuzzer works on a corpus of SPIR-V shaders. For each shader from the corpus it uses
one of `spirv-fuzz`, `spirv-reduce` or `spirv-opt` to mutate and then runs the shader through
the Tint compiler in two steps:
- Converts the mutated shader to WGSL.
- Converts WGSL to some target language specified in the CLI arguments.

The list of all supported CLI arguments and their description is in the cli.h file.

Change-Id: I95c0741b78ccc600dd9a73c371d520bdf7814352
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41945
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Vasyl Teliman <vasniktel@gmail.com>
Reviewed-by: David Neto <dneto@google.com>
Reviewed-by: Alastair Donaldson <allydonaldson@googlemail.com>
2021-06-24 18:10:46 +00:00
Corentin Wallez 9037669b2e Remove the dependency on shaderc and glslang.
With all tests converted to WGSL we only use shaderc to assemble SPIRV
assembly to binary. shaderc requires glslang but we don't use it at all.
By using SPIRV-Tools directly to assemble SPIR-V, we can remove both the
shaderc and glslang dependencies.

Bug: dawn:572
Bug: chromium:1150045
Change-Id: I1588428dfb9478e7b724478bec662d002ee920e0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/45765
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-03-24 16:02:13 +00:00
Corentin Wallez a9439199b7 Use Tint/WGSL unconditionally
Bug: dawn:706
Change-Id: I102c37e67e7833bb7441ed8a355a4411bd7b9fb9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/45421
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-03-22 21:23:36 +00:00
Aleksi Sapon 9f6bc4e3a9 CMake fix
Add missing source files to CMakeLists.txt (introduced in e3f10e3d8e).

Change-Id: Iac013e6119e9401a2b94a43220ca8f11d86f82dd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/43961
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
2021-03-11 16:27:00 +00:00
Antonio Maiorano 6ce58becd2 Fix VS clang-cl build
* Disable "undefined-var-template" in code, rather than in build files
* Add back some missing headers required when building in this context
* Make sure gtest/gmock do not override the default runtime library

Change-Id: I12c05943fc1d2dee4733ae70db7da026f67e0dad
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/44180
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
2021-03-09 21:51:50 +00:00
dan sinclair 4e6b52a21b Revert "Use upstream SPIRV-Cross GN files."
This reverts commit 9fdbb74072.

Reason for revert: The SPIRV-Cross GN files have a bug which is fixed upstream, but Skia is on an old version of SPIRV-Cross so they don't have the fix. So, the build fails when rolling Dawn into Skia complaining about unknown `-fno-exceptions` on the windows bots. Need Skia to either move to vulkan-deps, or roll their spirv-cross forward before this can re-land.

Original change's description:
> Use upstream SPIRV-Cross GN files.
>
> Previously spirv-cross didn't have its own sources files but this
> changed recently so we should use them. This will ultimately allow
> sharing targets between multiple components in Chromium.
>
> Bug: chromium:1179277
> Change-Id: Ib4bb1884b9ba9c4c3804e96d8adbb8905c60c9a3
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41725
> Auto-Submit: Corentin Wallez <cwallez@chromium.org>
> Reviewed-by: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Austin Eng <enga@chromium.org>
> Commit-Queue: Corentin Wallez <cwallez@chromium.org>

Bug: chromium:1179277
Change-Id: If1003bafa7b35f502c08b2dab91dd3d416aab077
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/42420
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2021-02-24 18:34:21 +00:00
Corentin Wallez 9fdbb74072 Use upstream SPIRV-Cross GN files.
Previously spirv-cross didn't have its own sources files but this
changed recently so we should use them. This will ultimately allow
sharing targets between multiple components in Chromium.

Bug: chromium:1179277
Change-Id: Ib4bb1884b9ba9c4c3804e96d8adbb8905c60c9a3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/41725
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Peng Huang <penghuang@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2021-02-19 10:06:42 +00:00
dan sinclair c2118b0dcb Fixup build issues.
This CL adds some override decorations for various destructors and turns
of Werror for the spirv-tools build.

Change-Id: I10ac72cfaee247334f6db2918230283b1f975955
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/41420
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
Auto-Submit: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2021-02-10 16:57:24 +00:00
Stephen White 30959dd4d2 Fix libEGL.so.1 issue with ANGLE build.
On Linux, ANGLE only builds a libEGL.so, while GLFW expects to find
libEGL.so.1. The fix is to force GLFW to load libEGL.so instead.

Bug: dawn:447
Change-Id: I4baa5b175a093b5b5d7a5c121085db3006c0e097
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/39561
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2021-01-29 21:44:45 +00:00
Corentin Wallez 99d6c14a3b CMake: set DAWN_ENABLE_WGSL to ON by default.
Bug: dawn:605
Change-Id: Ie18e438b4db81c5197290afd02fb7392196cd1c6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35283
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Auto-Submit: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: dan sinclair <dsinclair@chromium.org>
2020-12-09 15:13:57 +00:00
Corentin Wallez f3717fa249 CMake: Add a flag to control whether to built tint_unittests
Bug: dawn:605
Change-Id: I03860c263746939112e03544fbc3579631423c37
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/35282
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-12-09 14:47:30 +00:00
Corentin Wallez e969861490 Roll vulkan-headers right before the ray tracing breakage.
The next commit in vulkan-headers contains breaking changes that removes
the provisional ray-tracing extension and add the final version of it.
To ease the roll past that, we first roll just before the breaking
changes.

A smaller scale breaking change required rolling the Vulkan Validation
Layers at the same time.

Roll third_party/vulkan-headers/ ced848d69..30e70cbd9 (11 commits)

ced848d699..30e70cbd98

$ git log ced848d69..30e70cbd9 --date=short --no-merges --format='%ad %ae %s'
2020-11-16 jdrouan Add GGP (Stadia) WSI platform support to vk_icd.h
2020-11-15 oddhack Update for Vulkan-Docs 1.2.161
2020-11-08 oddhack Update for Vulkan-Docs 1.2.160
2020-11-01 oddhack Update for Vulkan-Docs 1.2.159
2020-10-18 oddhack Update for Vulkan-Docs 1.2.158
2020-10-12 oddhack Update for Vulkan-Docs 1.2.157
2020-10-12 oddhack Update for Vulkan-Docs 1.2.157
2020-10-04 oddhack Update for Vulkan-Docs 1.2.156
2020-09-28 oddhack Update for Vulkan-Docs 1.2.155
2020-09-21 oddhack Update for Vulkan-Docs 1.2.154
2020-09-06 oddhack Update for Vulkan-Docs 1.2.153

Created with:
  roll-dep third_party/vulkan-headers

Roll third_party/vulkan-validation-layers/ e8b96e86f..8756b1cb9 (498 commits)

e8b96e86fe..8756b1cb93

$ git log e8b96e86f..8756b1cb9 --date=short --no-merges --format='%ad %ae %s'
2020-11-25 mark threading: Check DevWaitIdle ext sync on all device queues
2020-11-25 s.fricke layers: Label VU 04563
2020-11-25 locke tests: Fix wrong descriptor type
2020-11-24 locke layers: Skip some CMD_TYPE
2020-11-23 mark tests: Add some checks for imageFormatMaybeLinear & 02259
2020-11-20 mark stateless: Calculate correct state for 02257, add 02259
2020-11-17 mark corechecks: Use named initializing for vuid structs
2020-11-17 mark drawdispatch: Use named initializing for DrawDispatch structs
2020-11-12 mark corechecks: Moved some #defines to static consts
2020-11-12 mark cmddraw: Align non-CF'd source
2020-11-19 locke layers: Attachment lifetime
2020-10-27 locke tests: Test protected, instance index, filter cubic
2020-10-26 locke layers: Validate filter cubic
2020-10-26 locke layers: Set enum for push constat byte state
2020-10-26 locke layers: Move validation for both image and sampler
2020-10-25 locke layers: Change map lastBound into array
2020-10-20 locke layers: Find Sampler in CmdBind
2020-10-23 locke layers: Validate maxMultiviewInstanceIndex
2020-11-18 locke layers: Save shared_ptr
2020-10-23 locke layers: Protected command buffer
2020-11-23 tony layers: Fix spirv-headers known good
2020-11-19 marky build: Fix clang warnings
2020-11-18 shannon build: Update known-good files for 1.2.161 header
2020-11-16 jeremyg syncval: Use correct raster order for depth/stencil resolve
2020-11-16 mark lifetimes: Correct for non-device parent objects
2020-11-13 shannon build: Reconcile VUIDs for 1.2.160 header
2020-11-13 shannon build: Update known-good files for 1.2.160 header
2020-11-16 locke tests: Using depth stencil image in both
2020-11-16 locke layers: VUID 02687 to 04584
2020-11-11 karl tests: Add test for destroyed buffer during draw validate
2020-11-11 karl layers: Remove duplicate handles from Descriptor subclasses
2020-11-16 mark repo: Update issue templates
2020-11-16 mark repo: Update issue templates
2020-11-13 pankratz layers: Removed duplicate type declaration
2020-11-13 mark scripts: Suppress warning for empty difflist
2020-11-12 mark scripts: Remove format checking shell scripts
2020-11-11 mark scripts: Add python format-checking script and update travis
2020-11-05 mark tests: Add oldSwapchain-from-different-device test
2020-11-09 mark threading: Make swapchain objects traceable to parent
2020-11-10 mark tests: Added specialuse extension BP tests
2020-11-10 mark practices: Add checking of specialuse extensions
2020-11-09 mark practices: Check for specialuse extensions and warn
2020-11-09 mark practices: Added specialuse extension table
2020-11-10 karl layers: Fix typedef and spelling
2020-11-09 jeremyg syncval: Convert enum SyncStageAccessFlags to a std::bitset
2020-11-09 jeremyg syncval: Change generated lookup tables to be const.
2020-11-06 marshall tests: Test queue retirement over timeline semaphores
2020-11-06 marshall layers: Fix queue retirement via waited-on timeline semaphores
2020-11-06 rgarcia layers: Check nullDescriptor when validating vertex attributes
2020-11-02 shannon build: Update known-good files for 1.2.159 header
(...)
2020-04-07 jzulauf layers: Add support for fake device memory address
2020-04-07 locke syncval: Refactor Image encoder/generator
2020-04-06 jzulauf syncval: Cleanup/Refactor AccessContext
2020-04-03 jzulauf layers: Add range operator + and copy constructor
2020-03-20 jzulauf layers: Add subpass transition info to RP state
2020-04-03 jzulauf syncval: Clean up and bugfix Access state resolve
2020-03-25 locke syncval: Change offset generator to image generator
2020-03-17 locke syncval: Add default constructors for Encoders
2020-03-19 jzulauf syncval: Clean attachment first/last for RP creation
2020-03-18 jzulauf syncval: Add end renderpass access context resolve
2020-03-10 jzulauf syncval: Change hazard check to use resolved map.
2020-03-10 locke syncval: Add function name to hazard log messages
2020-03-04 locke tests: Test copy buffer image and blit hazards
2020-03-02 locke syncval: Add copy buffer image and blit entry points
2020-02-28 locke syncval: Use new generator in synchronization
2020-03-04 locke tests: Fix test synchronization errors
2020-03-02 locke syncval: Add dest image adjustment for compressed
2020-02-27 locke syncval: Add new RangeEncoder and RangeGenerator
2020-03-09 jzulauf syncval: Add context interface for detect/update
2020-02-21 jzulauf layers: Enhance Subpass DAG tree information
2020-02-10 jzulauf syncval: Adding race hazard support
2020-02-03 jzulauf syncval: Add logical stage extension to exec scope
2020-01-31 jzulauf sync: Add earlier/later stage maps to codegen
2020-01-23 jzulauf syncval: Add image layout transition hazard checks
2019-12-26 jzulauf tests: Add first image sync tests
2019-12-26 jzulauf syncval: Add image sync validation for CopyImage
2019-12-26 jzulauf tests: Add more flexible interface to VkImageObj
2019-12-18 jzulauf tests: Add testcases for buffer region copies
2019-09-30 jzulauf syncval: Init Sync Val Resource Hazard
2020-07-03 s.fricke tests: Add Protected Resource VUIDs
2020-07-03 s.fricke layers: Add Protected Resource VUIDs
2020-07-09 timvp build: Add a virtual dtor to AspectParameters
2020-07-08 jan-harald.fredriksen tests: Add VUID 04059
2020-07-08 jan-harald.fredriksen layers: Add VUID 04059
2020-07-09 s.fricke tests: Add YCbCr Swizzle VUIDs
2020-07-04 s.fricke layers: Add YCbCr Swizzle VUIDs
2020-07-09 tony layers: Remove leftover enum
2020-07-08 liyl chassis: Fix memory leaks
2020-07-02 lionel.g.landwerlin layers: fix image/view with modifier format feature storage
2020-07-06 shannon build: Fix VUID inconsistencies for 1.2.146 header
2020-07-06 shannon build: Update known-good files for 1.2.146 header
2020-07-08 tony layers: Fix log message
2020-07-07 tony gpu: Fix enabling of required features
2020-07-07 tony tests: Add PhysicalDeviceFeatures to device profile api
2020-07-03 s.fricke layers: Move some sparse VU to stateless
2020-07-08 40687079+rumblehhh Update BUILD.md to use correct helper.cmake path
2020-07-02 s.fricke tests: Add VUID 02711
2020-07-01 s.fricke layers: Add VUID 02711
2020-07-06 mark objtracker: Don't report undestroyable objects
2020-07-01 mark threading: Audit VkDisplay, VkDisplayMode object handling

Created with:
  roll-dep third_party/vulkan-validation-layers

Change-Id: Ie55286cecb8b7d0163a629968786195d211ea662

Bug: chromium:1153258
Change-Id: I0bb6a910c5a7d3f13731097abb1fe4b8de38c6d0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/34143
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
2020-11-27 15:30:07 +00:00
dan sinclair bb3d7981ec CMake updates.
This CL updates the CMake file to allow building Dawn with WGSL support
enabled. A few other required fixes are included.

Bug: None
Change-Id: I11a09710f0ad075a07e23c44ff884826850655e7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30841
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-10-23 13:10:20 +00:00
dan sinclair ecd46ab123 Use CMAKE_CURRENT_SOURCE_DIR for third_party/khronos.
The third_party/khronos folder is directly commited into the Dawn repo.
This means it isn't really move-able to a different third_party folder
but it still uses the `DAWN_THIRD_PARTY_DIR` variable. This makes it
difficult to change where the rest of the third party code lives.

This CL changes the `third_party/khronos` references to use
`CMAKE_CURRENT_SOURCE_DIR` instead of `DAWN_THIRD_PARTY_DIR`.

Change-Id: I791bf3dc25e8149da44bbf686b5cdcfd5f4a392e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/30620
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-10-20 17:43:00 +00:00
Corentin Wallez bf7fc62175 Roll our copy of the Vulkan headers.
Bug: None
Change-Id: I6d24e9ef21b8c00c5e50d65fdd0c454ae16a42ba
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/29601
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-10-07 16:47:23 +00:00
dan sinclair 28ae1471bf Exclude spirv-tools from the all build target.
This CL moves spirv-tools so that it will only build what is requested.
This means that the tool binaries will not be built as part of tint as
they aren't needed.

Change-Id: Idd89b45facbe835948c57fe6dda6068657a2f822
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/29660
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
2020-10-07 15:55:13 +00:00
Aleksi Sapon 97b880e6ff Add missing CMake spirv-cross dependency
Also add a missing SPIRV-Tool link

Change-Id: I0d81b6878f09017147b9ccbe21a5784383535ba9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28280
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-09-09 16:39:00 +00:00
Aleksi Sapon 0a1061da0c Fix CMake build with MSVC
Bug: None

Change-Id: I061984e649f89e92e2769fd8aba141bbfdc0d4bb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28144
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-09-09 07:08:38 +00:00
Ryan Harrison 2cdb9f1ed1 Remove SPVC toggles and excise remaining references
BUG=dawn:521

Change-Id: Ib6428ca366a70d73096f9b4442c1b7fb69a539ba
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/28142
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-09-03 18:39:37 +00:00
Ryan Harrison c35e2ba379 Remove usages of SPVC
Remove all usages of SPVC from the code and update the fuzzers. Some
of the include paths and deps came transitively from spvc, so needed
to update build rules.

This patch does NOT remove the flags related to spvc usage, they are
just no-ops as the moment. After this patch lands I will remove the
usage of those flags from the bots, then remove the flags.

BUG=dawn:521

Change-Id: I0d7c3e28f79354c78f00c48b6a383b823094a069
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/27900
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-09-02 22:09:08 +00:00
Kai Ninomiya 01aeca22a9 Add .clang-format files and format more files
The .clang-format files tell clang-format to ignore certain directories
(replacing code in lint_clang_format.sh which will be removed).

$ git ls-tree -r master --name-only | grep '\.\(c\|h\|cpp\|gn\|gni\|mm\|m\|py\)$' | xargs ./append-space-to-files
$ git checkout -- generator/templates third_party/khronos/{KHR,vulkan}
$ git cl format --full --python

Followed by manual reformatting of a few things in Python for
readability.

Bug: none
Change-Id: I4c9e472cc9a5cd80c07286e808f4e597cfef5428
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/24785
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-07-15 19:51:17 +00:00
Sylvain Defresne 212c5bd9b2 Convert GN libs lists to frameworks
GN recently added support for Apple frameworks to link, rather than
overloading the libs lists. This pulls .frameworks out of the libs
lists, so that GN can stop supporting .frameworks in libs in the
future.

Bug: chromium:1052560
Change-Id: I0b57a3c4c995887a57937317db30b67cf7a7f0f7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/24281
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-07-15 09:59:46 +00:00
David Neto 5b46d71ae7 Enable Tint as part of a larger CMake project
- Add googletest and spirv-tools local builds only if their CMake targets
  are not already configured.
- Add local spirv-headers as an include directory only if the associated
  CMake directory does not already point to a directory.

Change-Id: I53ebb0d8fdf7703e8219000b78c75c30859c91a4
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/24020
Reviewed-by: dan sinclair <dsinclair@google.com>
2020-06-26 22:29:27 +00:00
Corentin Wallez 75f55bfaa3 Fix and enable -Wgnu-anonymous-struct
Bug: dawn:394
Change-Id: I7753b7daff2beaeb67fe6cbb54b002ddbe077f6f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/20701
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-04-30 16:01:08 +00:00
Corentin Wallez e642b1d959 Fix and enable -Wnested-anon-types
Bug: dawn:394
Change-Id: I51b533c07f21bcacd22a058cf4a080b9b2b853f7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/20700
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-04-30 15:58:28 +00:00
Corentin Wallez 42450c6d1c Fix the CMake build because of CMP0077
Prior to CMake 3.12 option() is a cache variable operation which meant
that the overriding of third_party project variables in
third_party/CMakeLists.txt needs to write to the cache.

Also remove a couple extra commas that were causing warnings.

Bug: None
Change-Id: I35efce70cf3e0cb923ebdbad654b2b9883b8f734
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19280
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-04-10 17:04:31 +00:00
Corentin Wallez d11cc3961a Split third_party/BUILD.gn in per-project files.
Bug: chromium:1064305

Change-Id: I6fc2da97e20865b62ff34a9d1c3f42120ac90348
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19202
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-04-10 08:24:00 +00:00
Corentin Wallez b31015b836 Split examples, test and utils in their own BUILD.gn
The basic change was to copy-paste targets in the new BUILD.gn files and
fixup paths / add includes. There's a couple more changes that had to be
done at the same time:

 - Multiple files need to know if GLFW is supported so the variable was
moved to dawn_features.gni.
 - The gtest_and_gmock target used to abstract between Dawn's copy of
GTest/GMock is only needed by tests and was moved in src/tests/BUILD.gn.
 - A leftover dawn_end2end_tests target is left in the main BUILD.gn
file that is an exact copy of the on in src/tests/BUILD.gn. This is
because the GN path is hardcoded in Chromium's isolate_map.pyl that also
can't support GN groups. The only way to move a target I could figure
out was to duplicate it temporarily.

Bug: chromium:1064305
Change-Id: I96820e9d6510b8c9b9112c3e6cd8df2413f04287
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19201
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-04-10 08:20:10 +00:00
Zhenyao Mo d9d9d1ec73 Make the Vulkan Validation Layers an optional dependency.
The build_overrides directory for the VVL will default to "" which
causes support for them to be skipped if the dependents don't set the
dawn_vulkan_validation_layers_dir variable.

Bug: chromium:1064305
Change-Id: I0a31f5d1d55982b5c953ce8ac6542d38829eedb5
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19085
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@google.com>
2020-04-08 20:00:12 +00:00
Corentin Wallez 2d10e954ce BUILD.gn: rename libdawn_native/wire to dawn_native/wire
This helps take advantage of the GN feature where when a directory is
used as a target name, like //foo/bar/baz, the //foo/bar/baz:baz target
is used automatically.

Bug: chromium:1064305
Change-Id: I2e2d9f308fda1b811482026962ab0770ac45e988
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/18862
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-04-07 07:44:00 +00:00
Corentin Wallez ba53617f6f Vulkan: Load functions for surface extensions we support.
Previously the surface extensions were only enabled so we could import
VkSurfaceKHR's created from GLFW. To implement the webgpu.h
surface-based swapchains, we are going to use the extension entrypoints
too.

This changes vulkan_platform.h to set defines that make vulkan.h expose
the entrypoints and datatypes for all the Vulkan extensions we might
care about for a given compilation configuration.

Bug: dawn:269
Change-Id: If4202ff5e31c816eccb5f5381bd36b660a3b6c5b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/17964
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-03-27 16:50:59 +00:00
dan sinclair 4b71b9ed2b Expand build flags for Tint.
This CL extends the build options to Tint to make the various readers
and writers all optional.

Change-Id: I913e1830b1bb2243eff5deb4b8079ba592dd52e1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/16801
Reviewed-by: David Neto <dneto@google.com>
2020-03-18 14:08:48 +00:00
Corentin Wallez 35645a601a Roll Dawn's copy of the Vulkan headers.
Bug: None
TBR=enga@chromium.org
Change-Id: I5c5ff19601b6506c9e2ff7b852a4b97b3eb5d70f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/16440
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: David Turner <digit@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-03-04 12:23:54 +00:00
Dan Sinclair 6e581895a5 Initial commit 2020-03-02 15:47:43 -05:00
Corentin Wallez 33466973bc CMake: Add support for the D3D12 backend
Bug: dawn:333
Change-Id: I61defcd7d5a66fc728c92d1e702ed09b5c84968f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/16000
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-02-24 13:27:28 +00:00
Corentin Wallez d353ca0881 CMake: Add support for the Vulkan backend
Bug: dawn:333
Change-Id: Id509e5f06862d6fee517ef47c40418077ccf4759
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15941
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-02-18 02:12:35 +00:00
Corentin Wallez 215b5370bc CMake: Add support for the OpenGL backend
Bug: dawn:333
Change-Id: Ic5386dc2fda3ba21f1437ee0b2c3f508ffb9dff7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15940
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-02-15 00:39:13 +00:00
Corentin Wallez 7fe6efba4a Add initial CMakeLists.txt files
Adds CMake support for:
 - Generating the Dawn headers and C++ wrappers
 - libdawn_wire
 - libdawn_native with the Metal backend for now
 - All the examples.

Bug: dawn:333

Change-Id: I6ffbe090b0bd21d6a805c03a507ad51fda0275ca
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15720
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
2020-02-05 17:16:05 +00:00
Ryan Harrison 77f6db7a0b Fix BUILD.gn issues for Android & Fuschia
BUG=dawn:287

Change-Id: If39e1211cedefa5d02f1ea2f3ae00f6195e1e916
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14141
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-11-28 19:48:45 +00:00
Ryan Harrison 22e73a5b28 Use spvc's rules for spirv-cross
Switch over to using the rule for building spirv-cross from spvc. This
allows GN to avoid double symbol issues in future patches.

Roll third_party/shaderc/ 1d6155d86..30f0559dd (2 commits)

1d6155d867..30f0559dd2

$ git log 1d6155d86..30f0559dd --date=short --no-merges --format='%ad %ae %s'
2019-11-27 rharrison Remove spvc's dependency on shaderc's util library (#914)
2019-11-27 rharrison Clean up how include dirs are propegated for spirv_cross (#912)

Created with:
  roll-dep third_party/shaderc

BUG=dawn:281

Change-Id: I49cf237dcab884e84180f83cbbb21acfa549fe61
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14121
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-11-28 17:14:55 +00:00
Ryan Harrison 2559fc0b84 Removing for_fuzzers target
Also update shaderc override to be the correct directory

BUG=dawn:285

Change-Id: I021755bbc8f50daa65b6964f3e42d395b51bb94a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14080
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-11-27 15:07:53 +00:00
Ryan Harrison 80d71ecd12 Remove build rules for spvc support & spirv-cross fuzzers
Disabling this while refactoring how dependencies are set up to avoid
breaking various builds and rolls.

BUG=dawn:285

Change-Id: Iaca2614fb73277a1ea850f90a487693cd4c54fcb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14040
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-11-26 17:42:51 +00:00
Ryan Harrison 48bf745b96 Revert "Convert spvc build flag to a runtime toggle"
This reverts commit 1954436fe2.

Reason for revert:
The shaderc side of this multi-patch brings in a dependency on glslang, which uses a static initializer, which chromium doesn't like.

Original change's description:
> Convert spvc build flag to a runtime toggle
> 
> Also moves some of the spirv_cross code into the main library that was
> feature guarded, since spvc requires it.
> 
> BUG=dawn:281
> 
> Change-Id: I482d1d5a5c851956d3815bad90665c52a1ea15bb
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13860
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>

TBR=cwallez@chromium.org,kainino@chromium.org,enga@chromium.org,rharrison@chromium.org

Change-Id: Ia9a025fb4440c96874d1b45776a9f97023ca591d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: dawn:281
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13941
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-11-21 20:31:05 +00:00
Ryan Harrison 1954436fe2 Convert spvc build flag to a runtime toggle
Also moves some of the spirv_cross code into the main library that was
feature guarded, since spvc requires it.

BUG=dawn:281

Change-Id: I482d1d5a5c851956d3815bad90665c52a1ea15bb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13860
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-11-21 18:08:15 +00:00
Ryan Harrison 8f3dc5836b Add in flag for using spvc instead of direct spriv-cross access
Currently does nothing interesting, future CLs will flesh out the
functionality.

BUG=dawn:281

Change-Id: I89750a45ff5a42a13e1494cafd433bb7ef719b10
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13841
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-11-20 18:10:11 +00:00
Elly Fong-Jones 39b4b38f4f mac newsdk: build glfw with -Wno-objc-multiple-method-names
It invokes [NSObject center] which is ambiguous as of the 10.15 SDK.
For now, ignore the ambiguity; a proper upstream fix to glfw will
happen later.

Bug: chromium:973128
Change-Id: Ia0b4186294b16928f55d0a3417c7840e50e8754b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13260
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-11-08 19:16:10 +00:00
Le Quyen dbf9f7c39c Fix conflicts between ANGLE & Dawn's spirv-cross build config
Recently, BUILD.gn has been added to spirv-cross repo:
https://github.com/KhronosGroup/SPIRV-Cross/blob/master/gn/BUILD.gn

However, it is incomplete, currently only inlcudes small config needed
by ANGLE's metal backend.

When building ANGLE and Dawn together with chromium, errors were thrown:
ERROR at //third_party/spirv-cross/spirv-cross/spirv_common.hpp:21:11: Include not allowed.
#include "spirv_cross_containers.hpp"
          ^-------------------------
It is not in any dependency of
  //third_party/dawn/third_party:spirv_cross
The include file is in the target(s):
  //third_party/spirv-cross/spirv-cross/gn:spirv_cross_sources
which should somehow be reachable.
___________________
ERROR at //third_party/spirv-cross/spirv-cross/spirv_common.hpp:22:11: Include not allowed.
#include "spirv_cross_error_handling.hpp"
          ^-----------------------------
It is not in any dependency of
  //third_party/dawn/third_party:spirv_cross

Bug: angleproject:2634
Change-Id: Idb328643db0b765ab228ee7d59d7996b6e6073e4
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/13020
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2019-11-05 09:36:15 +00:00
Ryan Harrison d561448d0d Add build time flag to control enabling SPIRV-Cross reflection
This adds a flag to enable using the reflection compiler from
SPIRV-Cross, and also updates the build rules to make sure that the
GLSL compiler is also present when using reflection, since the
reflection compiler subclassess the GLSL compiler.

BUG=dawn:231

Change-Id: I4e227cb955a3bb794d906dabdadffdaca001352b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11920
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-10-07 15:47:27 +00:00
Ryan Harrison cc47878116 Adding missing reflection API sources to SPIRV-Cross targets
BUG=dawn:231

Change-Id: Id037b8c6179ff1582b05a4923447ab292a0e1258
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11820
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2019-10-04 15:55:42 +00:00
Corentin Wallez 785ec66b66 BUILD.gn: Correctly skip GLFW on ChromeOS
ChromeOS has is_linux = true so the code to skip compiling GLFW on
ChromeOS didn't work correctly.

BUG=dawn:221
BUG=chromium:1002895

Change-Id: Ifbf8527407ad20b4368531da1d7653ce620d37be
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11200
Reviewed-by: Mitsuru Oshima <oshima@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Ahmed Fakhry <afakhry@google.com>
Commit-Queue: Austin Eng <enga@chromium.org>
2019-09-12 16:33:31 +00:00
Corentin Wallez fad96f6e59 BUILD.gn: Only expose the GLFW target on platforms that support it
Due to the way GN target discovery works, glfw would get discovered in
Fuchsia / Android / ChromeOS builds when it isn't supported causing
compilation failures. This changes third_party/BUILD.gn so that glfw
targets are only created on supported platforms. It also changes
dawn_glfw in BUILD.gn to be more robust to building on all platforms.

Bug=dawn:221
BUG=chromium:1002895

Change-Id: I8f40b06f680094406d24e9a6dea44b128e59b854
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11160
Reviewed-by: David Turner <digit@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2019-09-11 16:53:46 +00:00
David 'Digit' Turner f60522f5a4 [fuchsia] Fix Chromium build.
For some unknown reason, during the Chromium build, the
third_party/dawn/third_party:glfw always get rebuilt even when
nothing actually references is (as is the case for "is_fuchsia ==
true").

This ends up in a build failure, since glfw doesn't support this
platform. See [1] for an example.

This CL is a work-around that makes the library empty for Fuchsia
instead. Note that this is never linked into anything so should
not be an issue for any Chromium-related code either.

[1] https://chromium-review.googlesource.com/c/chromium/src/+/1795302

Bug=dawn:221

Change-Id: Ia4344e93b01722b3dd0cddf70a5d13a5b71488b7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/11041
Commit-Queue: David Turner <digit@google.com>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-09-10 13:01:59 +00:00
David 'Digit' Turner 882ff72742 [fuchsia] Add headers containing extra vulkan definitions.
The Fuchsia platforms relies on a number of Vulkan extensions
that have not been upstreamed to Khronos yet, and thus are not
part of the official Vulkan headers (i.e. <vulkan/vulkan.h>).

This CL adds a new header under src/common/ that contains these
declarations, extracted from the Fuchsia source tree, and ensures
they are included automatically from <common/vulkan_platform.h>

This is necessary to support certain features when building
Dawn on Fuchsia.

IMPORTANT NOTE: Some of the things declared in this header will
change once everything is upstreamed, which will require updating
the source code using them. For example,

  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_TEMP_ZIRCON_EVENT_BIT_FUCHSIA

Will likely be renamed officially as:

  VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT

And will be assigned a new value by Khronos.

BUG=dawn:221
Change-Id: If88a1dd06083a01d7b34b5cf5ab93f4e3f3681eb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/10940
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: David Turner <digit@google.com>
2019-09-09 16:48:58 +00:00
Corentin Wallez f5c44772a6 Use the agreed upon include path for spirv-cross.
Everyone using spirv-cross includes its headers via <spirv_msl.hpp> for
example. Make Dawn match that convention so it can play better with the
setup used by other projects.

Still leave <spirv-cross/spirv_msl.hpp> working for now because it is
used by shaderc_spvc. A follow up CL to that repo will do the same
change.

BUG=

Change-Id: I9dc590a809d7ba733113b07930a285acfca64a66
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/10801
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2019-09-04 08:47:14 +00:00
Brian Ho 0ebd54cf38 Update BUILD flags to support Chrome OS
This CL updates a few flags to support Chrome OS:

- Disables the OpenGL backend on Chrome OS builds.
- Removes the X11 dependency for Chrome OS builds because we do not
support X11.
- Removes the XCB dependency (again, no X11).

BUG=chromium:993457
TEST=e2e and unit tests build and pass on Intel Chrome OS devices

Change-Id: I1cb06453ccc94d1b68a6998ea635bddd6fb7b5ad
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/10100
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2019-08-13 22:45:14 +00:00
David 'Digit' Turner ee0fa175a3 Update Vulkan headers to v1.1.115
This updates the content of third_party/khronos/vulkan
to match the upstream v1.1.115 headers.

+ update third_party:vulkan_headers to define the VK_USE_PLATFORM_XXX
  macros directly, since this better matches the upstream BUILD.gn
  file behaviour.

NOTE: A better patch would use a DEPS entry to get the Vulkan
      headers. That's exactly what [1] does, but fails to
      integrate with Chromium due to its messy situation
      regarding the use of vulkan headers.

      Once the Chromium situation is fixed, it will be possible
      to remove third_party/khronos/vulkan entirely and rely
      on a DEPS entry.

[1] https://dawn-review.googlesource.com/c/dawn/+/9080

BUG=NONE

Change-Id: Id9a3be3e079119368236c0323823e36bec1a056d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/9082
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-07-17 14:48:27 +00:00
Corentin Wallez 8f4046b0b6 Remove glad and replace it with our own GL header
This completely removes the dependency on glad by generating the GL
headers from gl.xml directly.

This requires adding khrplatform.h so all Khronos dependencies are
gathered in third_party/khronos.

Also removes a stray CMakeLists.txt that was still hanging out.

BUG=dawn:165

Change-Id: Ia64bc51bc8b18c6b48613918e2f309f7405ecb3b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/8163
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2019-06-17 09:17:29 +00:00
Corentin Wallez df69f24824 OpenGL: Don't use glad to load OpenGL entrypoints
This makes the OpenGL entry points loaded at Adapter creation from the
getProcAddress passed in the DiscoveryOptions and update all GL calls in
the backend to go through the new OpenGLFunctions object.

A code generator is added that generates the function loader and list of
GL procs from Khronos' gl.xml file but we can't get rid of glad yet
because it is used to have the PROC typedefs and enum values.

BUG=dawn:165

Change-Id: I2a583d79752f55877fa4190846f5be16cf91651a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/7983
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2019-06-13 10:22:32 +00:00
Corentin Wallez 3dc8bf4c6f Update glad for Desktop GL 4.6 and GLES 3.2
This is necessary because we currently use GLAD to generate all the
OpenGL enums and proc typedef that we use.

BUG=dawn:165

Change-Id: Ie1b88fd676421703e9af63dafe6dee168c600d4d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/7982
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2019-06-12 21:59:42 +00:00
Austin Eng f3f5bf480d Remove glTFViewer from samples
Bug: dawn:152
Change-Id: I5bd36f4ae56889bf12652f8a201a7f7be5e2d25d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/7360
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2019-05-18 03:14:46 +00:00
Frank Henigman 9a9b837519 Roll all SPIR-V dependencies together.
Function name changed in shaderc.
SPIRV-Cross split up into additional files.

BUG=chromium:951016

Change-Id: I49abb0a163fefdd61b7d6352e57e2a10f519abd9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/6440
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2019-04-11 14:52:55 +00:00
Austin Eng 8d79f78c78 Remove GLVersion from GLAD header and make it static
Bug: chromium:877147
Change-Id: I9635fdf977dd13658a957bd247e453f3b6511dca
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/5520
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2019-03-11 21:20:42 +00:00
Austin Eng c8eff1c1e1 Remove export of GLVersion from GLAD
This symbol conflicts with a duplicate symbol when we link Dawn into
Chromium on Linux.

Bug: chromium:877147
Change-Id: Iadf8ac81760085a04d82ea9116e367a1bd17cd4d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/5260
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2019-03-04 23:41:28 +00:00
Corentin Wallez d56f8d2e05 Remove Chrome-specific configs for GLFW and GLM
BUG=chromium:935641
BUG=chromium:935704

Change-Id: I3ebe97beb330ff8e446a54c218f4c34001259b33
Reviewed-on: https://dawn-review.googlesource.com/c/5061
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2019-02-26 09:55:23 +00:00
Corentin Wallez fd3717fa7c Fix the build with only the OpenGL and Null backends enabled
BUG=chromium:914375

Change-Id: I07dbdbdb7518ac6b9800483f570fe97c16f08ee1
Reviewed-on: https://dawn-review.googlesource.com/c/3243
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-12-14 08:28:55 +00:00
Stephen White 0f50114b3c Disable/avoid some warnings.
Implement DAWN_DECLARE_UNUSED macro to avoid -Wunneeded-internal-declaration
warning.

Change-Id: I4d087d2b09b74e35ba7ea69533df2c5adef4ef82
Reviewed-on: https://dawn-review.googlesource.com/c/2943
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
2018-12-06 19:01:22 +00:00
Stephen White 9fca812285 Minor clang-format on third_party/BUILD.gn.
Just reorders some files.

Change-Id: I58845fe72fb8381fff32b0d81bb0561d6656c7be
Reviewed-on: https://dawn-review.googlesource.com/c/2900
Commit-Queue: Stephen White <senorblanco@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-12-04 19:44:52 +00:00
Corentin Wallez 391c8a9224 Roll GLFW to pick up macOS Mojave fixes
BUG=dawn:35

Change-Id: Id9f71ab3a6023b21883d1b3d2f8afcebcf5b2f71
Reviewed-on: https://dawn-review.googlesource.com/c/2480
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2018-11-19 10:21:23 +00:00
Ryan Harrison 9854295ff6 Add fuzzers for SPIRV-Cross
This CL adds in fuzzers for SPIRV-Cross for HLSL, GLSL, and MSL
outputs. These fuzzers live in Dawn because there is not appropriate
location in the Chromium source repo for them and it is unlikely they
would be land-able in the SPIRV-Cross repo, because it is not coupled
with Chromium's build system and thus Clusterfuzz so would be
effectively dead code. Dawn depends on this code, but it is also
integrated into the Chromium build system, so this was the best place
I could find for them

The code under fuzz unfortunately uses exceptions/aborting as its
error reporting mechanism. This is an acknowledge short coming and
there are efforts to remove this behaviour. To work around this and
reduce the number of false positives found by the fuzzers, a signal
trap has been implemented which will be removed once the code under
fuzz has been updated.

The trap replaces the existing signal handler and silencing signals
while running the code under test. This allows the code under test to
call abort() and not crash the fuzzing process. Theoretically, only
SIGABRT should need to be trapped, but something is causing the signal
from abort() to be converted to SIGSEGV when running under ASAN.

This signal trap has been tested with the fuzzing/sanitizers by
intentionally inserting bad calls that will occur after a few thousand
test cases. It was confirmed that the fuzzer detected the issue and
stops fuzzing.

The alternate to implementing this signal trap would be to turn on
exceptions for the fuzzer. This was attempted, but proved to be
fruitless due to what was reported as an ODR issue, but couldn't
couldn't be silenced. The likely underlying issue was a pre-built
library or other object being built without exceptions was causing
different versions of symbols or the exception version of the standard
library not being instrumented by ASAN. Given the majority of Chromium
eco-system turns off exceptions, fixing this issue would not be
helpful to the larger community and was looking like it would require
significant effort.

BUG=chromium:903380

Change-Id: I63a5595383f99b7a0e150d72bb04c89b8d722631
Reviewed-on: https://dawn-review.googlesource.com/c/2260
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Max Moroz <mmoroz@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2018-11-12 12:20:21 +00:00
Corentin Wallez 146edf5bec Remove support for CMake builds
This also removes support for Travis and AppVeyor, as well as git
submodules for dependencies.

It also adjusts .gitignore to include dependencies (submodules are
implicitly ignored but are removed in this commit).

Finally, removes some CMake-specific code from the code generator.

BUG=

Change-Id: I4ebc04e530a574b412ef0ca81e4672db01f0ed92
Reviewed-on: https://dawn-review.googlesource.com/c/2040
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-31 10:53:11 +00:00
Corentin Wallez e92ad5bb89 Build with a different gtest harness when in Chromium
Running test in a Chromium build requires using their gtest and gmock
targets as well as a harness that is in //base. Since we want to run
Dawn tests on the Chromium GPU bots, we need to support two
configurations both building tests standalone and in Chromium.

BUG=chromium:870747

Change-Id: I862e62a607e193a27562ece0f1f6d46d8728e446
Reviewed-on: https://dawn-review.googlesource.com/c/2080
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-31 10:49:21 +00:00
Corentin Wallez 5aac265dcb Roll glslang and shaderc
These new versions contain the fix for not having static libraries
with no sources depending on source sets in their BUILD.gn

BUG=chromium:870747

Change-Id: Ib979d5ee581f37db22347f0f725086a9b9833d07
Reviewed-on: https://dawn-review.googlesource.com/c/1900
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-23 12:50:10 +00:00
Corentin Wallez 16092faa16 Roll shaderc and glslang and use their BUILD.gn
This rolls glslang and shaderc to be able to use their BUILD.gn files,
and also rolls SPIRV-Tools and spirv-headers to have compatible
versions.

BUG=chromium:870747

Change-Id: I13c615f6f3d148c9b69f06547992bf5910e04e62
Reviewed-on: https://dawn-review.googlesource.com/c/1680
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-10-04 17:17:57 +00:00
Corentin Wallez 299ce6c69c BUILD.gn: Make SPIRV-Cross includes relative to repo.
BUG=chromium:870747

Change-Id: I9dfdc4f88b0f17b9c2a4e102610d9eb125087bba
Reviewed-on: https://dawn-review.googlesource.com/1642
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2018-09-25 21:50:44 +00:00
Corentin Wallez 21d8438ad6 Validate SPIR-V code when creating ShaderModules
This integrates spirv-val in dawn_native so that regular and
WebGPU-specific validation of shaders is done.

Also adds tests to check OpUndef is correctly rejected so we know
WebGPU-specific validation is working.

Change-Id: If49d276c98bca8cd3c6c1a420903fe34923a2942
2018-09-07 05:41:25 -04:00
Corentin Wallez ae62847f1c Roll SPIRV-Tools
Change-Id: I0b30e4d2b0a142bb073e61329a49a517629e3234
2018-09-07 05:41:25 -04:00
Corentin Wallez ec72443bf1 GN: Fix MSVC compilation
third_party/BUILD.gn was adding compile flags to suppress failures that
were GCC/Clang specific and caused MSVC to error out. Replace them by
suppression using MSVC's flags.

Change-Id: Ia25ae315dcf8904dbfd8eff877065a24e8c88769
2018-08-29 17:33:10 -04:00
Corentin Wallez 0fa2feb96a Roll SPIRV-Cross and use upstream repo.
In the DEPS file we are going to use Chromium's mirror of
github.com/KhronosGroup/SPIRV-Cross so we need to adjust .gitmodules to
point to it instead of Kangz/SPIRV-Cross. Also take that opportunity to
roll SPIRV-Cross.

Change-Id: I4f53a4fc54f5b1b9a754ac55e976c81e5eeabeb2
2018-08-24 12:28:28 -04:00
Corentin Wallez 5b61abce09 Fix Windows compilation using GN and clang-cl.
This includes a bunch of fixes for clang warnings in Windows specific
code that was only compiled by MSVC previously. This also tidies up some
BUILD.gn issues on Windows.
2018-08-14 21:42:32 +02:00