Commit Graph

1824 Commits

Author SHA1 Message Date
Natasha Lee 2fd6181929 Handle Device Lost for SwapChain
Bug: dawn:68
Change-Id: I16e00bb2e203e71fd0840b71bc027e6fbea4e52c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15723
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Natasha Lee <natlee@microsoft.com>
2020-02-11 21:30:25 +00:00
Corentin Wallez 713d9cbf93 webgpu.h: Fix WGPU_WHOLE_SIZE causing linking errors.
The symbol was not marked as static and would cause linking errors
because it would be defined in multiple translation units. Replace it
with a more traditional C-style #define.

Bug:
Change-Id: I19151884b7e8e171f829ffa47b1d119aff12ff99
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15740
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-02-10 20:25:36 +00:00
Corentin Wallez fb01a6024e Add missed file for the CMake build.
Bug: dawn:333
Change-Id: Ie966ec61f05c788bdb89a732bafe7f12c16e52cd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15860
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-02-07 23:46:30 +00:00
Ryan Harrison 6f3e8d8f0f Add flag to use spvc parser in tests
This also changes the name to be consistent with the option being set
in the spvc API.

BUG=dawn:335

Change-Id: I6f7431095493874e1fef0856e563f7f1225cfc21
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15780
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-02-07 16:30:27 +00:00
Ryan Harrison 28e054e8cb Turn off spvc being used by default
There appears to be issues with the CTS + spvc that are preventing
chromium to roll, so I am reverting spvc by default, until the CTS
issues are resolved.

BUG=dawn:337

Change-Id: I171ee5325b9afbf5d240a469009433105caf6ddb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15840
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-02-07 16:00:27 +00:00
Ryan Harrison 7f380d3d40 Turn on using spvc by default
BUG=dawn:291

Change-Id: I9ebf34388abc6f5ff443a430f5bd79507c095520
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15463
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-02-06 17:26:46 +00:00
Natasha Lee c30635174e Handle Device Lost for Fence and Queue::Signal
Bug: dawn:68
Change-Id: I5391d55f85fba7dce28b1df5bb06c2d9217dc72a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15420
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-02-06 00:56:35 +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
Kai Ninomiya 47b15048a1 Revert "Use libshaderc_spvc as a source_set, so complete_static_lib applies properly"
This reverts commit 97c3be2699.

Reason for revert: Breaks linking on MSVC

Original change's description:
> Use libshaderc_spvc as a source_set, so complete_static_lib applies properly
> 
> Brings the list of dependencies for a standalone Dawn app down from:
> 
>   obj/libdawn_native.a
>   obj/libdawn_utils.a
>   obj/src/dawn/libdawn_proc.a
>   obj/third_party/shaderc/libshaderc_spvc/spvc.o
>   obj/third_party/shaderc/libshaderc_spvc/spvc_private.o
>   obj/third_party/shaderc/libshaderc_spvc/spvcir_pass.o
>   obj/third_party/SPIRV-Tools/libspvtools_opt.a
> 
> to
> 
>   obj/libdawn_native.a
>   obj/src/dawn/libdawn_proc.a
> 
> Bug: dawn:327
> Change-Id: I74654b304a9cb5f2aff19e72aa6a8bf1eb708c15
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15481
> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
> Reviewed-by: Ryan Harrison <rharrison@chromium.org>
> Commit-Queue: Kai Ninomiya <kainino@chromium.org>

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

Change-Id: Ib6d17eccebf371b71e74f1857b50bb3cfd67595a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: dawn:327
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15722
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-02-04 02:48:43 +00:00
Bryan Bernhart 525ef86c2e Vulkan: attempt sub-allocation before direct allocation.
Falling-back to direct allocation ensures allocation failure returns OOM.
If no OOM, the resource could be left then used while in an invalid state.

BUG=chromium:1045811,chromium:1047220,chromium:1047048

Change-Id: I927962b1dc6a7422a7d6eac114d82f28a42794a2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15600
Commit-Queue: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-02-03 19:17:34 +00:00
Kai Ninomiya 97c3be2699 Use libshaderc_spvc as a source_set, so complete_static_lib applies properly
Brings the list of dependencies for a standalone Dawn app down from:

  obj/libdawn_native.a
  obj/libdawn_utils.a
  obj/src/dawn/libdawn_proc.a
  obj/third_party/shaderc/libshaderc_spvc/spvc.o
  obj/third_party/shaderc/libshaderc_spvc/spvc_private.o
  obj/third_party/shaderc/libshaderc_spvc/spvcir_pass.o
  obj/third_party/SPIRV-Tools/libspvtools_opt.a

to

  obj/libdawn_native.a
  obj/src/dawn/libdawn_proc.a

Bug: dawn:327
Change-Id: I74654b304a9cb5f2aff19e72aa6a8bf1eb708c15
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15481
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-02-03 18:55:44 +00:00
Ryan Harrison 176ff4b190 Rolling 4 dependencies
Roll third_party/SPIRV-Tools/ 1b3441036..a9624b4d5 (8 commits)

1b3441036a..a9624b4d5d

$ git log 1b3441036..a9624b4d5 --date=short --no-merges --format='%ad %ae %s'
2020-02-03 dnovillo Handle TimeAMD in AmdExtensionToKhrPass. (#3168)
2020-02-03 stevenperron Update CHANGES
2020-02-03 arseny.kapoulkine Implement constant folding for many transcendentals (#3166)
2020-01-30 afdx Fix typo in comment. (#3163)
2020-01-30 afdx spirv-fuzz: Arbitrary variable facts (#3165)
2020-01-29 afdx spirv-fuzz: Add outlining test (#3164)
2020-01-29 afdx spirv-fuzz: Make functions "livesafe" during donation (#3146)
2020-01-28 stevenperron Dead branch elim fix (#3160)

Roll third_party/glslang/ 07a55839e..5e86b28ff (2 commits)

07a55839ee..5e86b28ffb

$ git log 07a55839e..5e86b28ff --date=short --no-merges --format='%ad %ae %s'
2020-01-29 jbolz Use NOT ... VERSION_LESS instead of VERSION_GREATER_EQUAL
2020-01-28 jordan.l.justen standalone: Fix --help

Roll third_party/shaderc/ 0681dd61d..6d9f753c1 (5 commits)

0681dd61d3..6d9f753c1d

$ git log 0681dd61d..6d9f753c1 --date=short --no-merges --format='%ad %ae %s'
2020-01-30 rharrison Add documentation for Vulkan 1.2 and SPIR-V 1.5 (#980)
2020-01-30 dneto Better help for glslc -S (#978)
2020-01-29 rharrison Add back in deprecated APIs (#977)
2020-01-28 kainino1 Make a source_set for libshaderc_spvc (#976)
2020-01-27 rharrison Rolling 5 dependencies and updating expectations (#975)

Roll third_party/spirv-cross/ 68bf0f824..6b2add8e2 (4 commits)

68bf0f824c..6b2add8e2c

$ git log 68bf0f824..6b2add8e2 --date=short --no-merges --format='%ad %ae %s'
2020-02-03 post Use GNUInstallDirs for include path as well.
2020-02-01 orbea cmake: Don't hardcode the pkg-config file.
2020-02-01 orbea cmake: Use GNUInstallDirs.
2020-02-01 post CMake: Avoid warning when parent project uses VERSION in project().

Created with:
  roll-dep third_party/SPIRV-Tools third_party/glslang third_party/shaderc third_party/spirv-cross third_party/spirv-headers

Change-Id: If0ccbe8201ad572ce0bf8e29bb5520d995182645
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15700
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-02-03 18:31:52 +00:00
Corentin Wallez 43a0a815b8 Fix examples running with the wire.
The SampleUtils uses CreateSwapChain with a nullptr surface. This is
currently valid with implementation-based swapchains so the argument
should be tagged as optional.

Bug: dawn:269
Change-Id: Ic00d5a67fb038d2771174bb36f99b66b84f1a252
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15680
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-02-03 08:56:04 +00:00
Natasha Lee 2dd9ed0776 Handle Device Lost for Command Encoder Finish
Bug: dawn:68
Change-Id: I3449cdd9e69f3ae44a30f113fd88bd2fce2c94d7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15602
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-01-31 19:26:49 +00:00
Kai Ninomiya f44a809f9a Remove VK_DEFINE_NON_DISPATCHABLE_HANDLE magic, use explicit VkHandle wrapper
Overriding VK_DEFINE_NON_DISPATCHABLE_HANDLE changes the function
signatures of Vulkan functions, changing their ABI and making us
incompatible with real drivers. This removes that magic, and replaces it
with an explicit wrapper, VkHandle, which has much of the same
functionality as the original VkNonDispatchableHandle.

It adds definitions for dawn_native::vulkan::VkBuffer et al, which
shadow the native ::VkBuffer et al. This retains type safety throughout
the Vulkan backend without changing every single usage.

Notably, the following things had to change:
- An explicit conversion from VkBuffer* to ::VkBuffer* is needed for
  arrays. This is implemented as a reinterpret_cast, which is still
  safe as the new VkHandle still has the same memory layout properties
  as VkNonDispatchableHandle did.
- When pointing to a VkHandle as an output pointer, it's now necessary
  to explicitly get the native ::VkBuffer (via operator*) and point to
  it.

Previously reviewed on:
https://dawn-review.googlesource.com/c/dawn/+/15580

Bug: chromium:1046362
Change-Id: I7d34ec38a805025f92165ea9a7ee07ae5c182076
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15641
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-01-31 04:04:16 +00:00
Austin Eng 0a239045e3 [docs] Add documentation for Dawn's testing infrastructure
Bug: dawn:23
TBR: cwallez@chromium.org
Change-Id: I67a1794bfc959f76fd16f5b249364a02274e73e7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15601
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-01-31 03:28:56 +00:00
Kai Ninomiya f28d0ae614 Revert "Remove VK_DEFINE_NON_DISPATCHABLE_HANDLE magic, use explicit VkHandle wrapper"
This reverts commit 4e17d5c248.

Reason for revert: broken on chromeos

Original change's description:
> Remove VK_DEFINE_NON_DISPATCHABLE_HANDLE magic, use explicit VkHandle wrapper
> 
> Overriding VK_DEFINE_NON_DISPATCHABLE_HANDLE changes the function
> signatures of Vulkan functions, changing their ABI and making us
> incompatible with real drivers. This removes that magic, and replaces it
> with an explicit wrapper, VkHandle, which has much of the same
> functionality as the original VkNonDispatchableHandle.
> 
> It adds definitions for dawn_native::vulkan::VkBuffer et al, which
> shadow the native ::VkBuffer et al. This retains type safety throughout
> the Vulkan backend without changing every single usage.
> 
> Notably, the following things had to change:
> - An explicit conversion from VkBuffer* to ::VkBuffer* is needed for
>   arrays. This is implemented as a reinterpret_cast, which is still
>   safe as the new VkHandle still has the same memory layout properties
>   as VkNonDispatchableHandle did.
> - When pointing to a VkHandle as an output pointer, it's now necessary
>   to explicitly get the native ::VkBuffer (via operator*) and point to it.
> 
> Bug: chromium:1046362
> Change-Id: I9c5691b6e295aca1b46d4e3d0203956e4d570285
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15580
> Reviewed-by: Austin Eng <enga@chromium.org>
> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
> Commit-Queue: Kai Ninomiya <kainino@chromium.org>

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

Change-Id: I500df2e34fd0f245ad04c517ff028ddd7bb5a2bf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:1046362
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15620
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-01-31 02:09:06 +00:00
Kai Ninomiya 4e17d5c248 Remove VK_DEFINE_NON_DISPATCHABLE_HANDLE magic, use explicit VkHandle wrapper
Overriding VK_DEFINE_NON_DISPATCHABLE_HANDLE changes the function
signatures of Vulkan functions, changing their ABI and making us
incompatible with real drivers. This removes that magic, and replaces it
with an explicit wrapper, VkHandle, which has much of the same
functionality as the original VkNonDispatchableHandle.

It adds definitions for dawn_native::vulkan::VkBuffer et al, which
shadow the native ::VkBuffer et al. This retains type safety throughout
the Vulkan backend without changing every single usage.

Notably, the following things had to change:
- An explicit conversion from VkBuffer* to ::VkBuffer* is needed for
  arrays. This is implemented as a reinterpret_cast, which is still
  safe as the new VkHandle still has the same memory layout properties
  as VkNonDispatchableHandle did.
- When pointing to a VkHandle as an output pointer, it's now necessary
  to explicitly get the native ::VkBuffer (via operator*) and point to it.

Bug: chromium:1046362
Change-Id: I9c5691b6e295aca1b46d4e3d0203956e4d570285
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15580
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-01-31 01:30:56 +00:00
Ryan Harrison 1edaa1d1e1 Use the spvc translated version of the Vulkan shader
BUG=dawn:325

Change-Id: I66bed7fec65cadecc956878bf11fc204b66ad195
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15500
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-01-30 18:50:49 +00:00
Reid Kleckner 48e7da791f Use dict.items() instead of dict.iteritems() for py3 compat
iteritems() went away in Python 3.

R=kainino@chromium.org

Bug: 941669
Change-Id: I0c107aaa35bb1df7c126485c33c3d15cb77f03fe
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15560
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-01-30 01:25:08 +00:00
Mark Henderson 7d56022a64 Make Vulkan's surface config available before the swap chain is actually created/
Change-Id: I9da1c9f513d26aa95b40f97908bfc3a54c843053
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15541
Commit-Queue: Mark Henderson <mehe@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-01-29 23:11:17 +00:00
Kai Ninomiya 7b6246a2ad Generators for Emscripten
api_struct_info.json:
//* This generator is used to produce part of Emscripten's struct_info.json,
//* which is a list of struct fields that it uses to generate field offset
//* information for its own code generators.
//* https://github.com/emscripten-core/emscripten/blob/master/src/struct_info.json

library_webgpu_enum_tables.js:
//* This generator is used to produce the number-to-string mappings for
//* Emscripten's library_webgpu.js.
//* https://github.com/emscripten-core/emscripten/blob/master/src/library_webgpu.js

Change-Id: I4704509737cde4685a093eb484dd977e5a106d19
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15240
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-01-28 23:54:38 +00:00
Natasha Lee 74f5054ec9 Handle Device Lost for Buffer
Bug: dawn:68, chromium:1042998, chromium:1043468
Change-Id: I4faa46b0d2e8f814b9d353a75489d3c8ca0b2e89
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15340
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Natasha Lee <natlee@microsoft.com>
2020-01-28 22:18:58 +00:00
Ryan Harrison f329c78b6c Rolling 5 dependencies
Roll third_party/SPIRV-Tools/ 323a81fc5..1b3441036 (9 commits)

323a81fc5e..1b3441036a

$ git log 323a81fc5..1b3441036 --date=short --no-merges --format='%ad %ae %s'
2020-01-24 syoussefi Fix chromium build (#3152)
2020-01-24 dneto Clarify mapping of target env to SPIR-V version (#3150)
2020-01-24 greg Use dummy switch instead of dummy loop in MergeReturn pass. (#3151)
2020-01-23 alanbaker Fix structured exit validation (#3141)
2020-01-23 dneto Add spvParseVulkanEnv (#3142)
2020-01-23 jaebaek Handle conflict between debug info and existing validation rule (#3104)
2020-01-23 syoussefi Use spirv-headers' BUILD.gn (#3148)
2020-01-23 syoussefi Roll external/spirv-headers/ af64a9e82..dc77030ac (4 commits) (#3147)
2020-01-21 afdx spirv-fuzz: Refactoring and type-related fixes (#3144)

Roll third_party/glslang/ b0ada8035..07a55839e (15 commits)

b0ada80356..07a55839ee

$ git log b0ada8035..07a55839e --date=short --no-merges --format='%ad %ae %s'
2020-01-27 rharrison Use correct enum type in case statement
2020-01-27 cepheus Build: Fix more build warnings caused by PR #2038.
2020-01-26 cepheus Build warning: Fix #2062, missing enum value in a switch.
2020-01-08 sk Public: replaced tabs with spaces
2020-01-08 sk CInterface: replaced tabs with spaces
2019-12-30 sk CInterface: added static asserts to compare C/C++ enums
2019-12-30 sk Added LAST_ELEMENT_MARKER for every enum used in the C interface
2019-12-26 sk CInterface: replaced SH_ prefix with GLSLANG_
2019-12-25 sk CInterface: added glslang_program_SPIRV_get_ptr()
2019-12-25 sk CInterface: added files to CMakeLists.txt
2019-12-25 sk CInterface: added _BIT suffix to glslang_messages_t and glslang_reflection_options_t, fixed const-correctness
2019-12-25 sk CInterface: reformatted according to .clang-format rules
2019-12-24 sk Added original glslang_c_interface implementation by Viktor Latypov
2019-12-24 laddoc Add Tess machine dependent built-in variables initialization for GLES 3.2
2019-10-18 timo.suoranta Fixes for gcc 9 / -Werror=deprecated-copy

Roll third_party/shaderc/ a4f9acedf..0681dd61d (2 commits)

a4f9acedf3..0681dd61d3

$ git log a4f9acedf..0681dd61d --date=short --no-merges --format='%ad %ae %s'
2020-01-27 rharrison Remove deprecated APIs (#974)
2020-01-24 dneto Handle new Glslang profile enum in switch (#973)

Roll third_party/spirv-cross/ f9818f080..68bf0f824 (6 commits)

f9818f0804..68bf0f824c

$ git log f9818f080..68bf0f824 --date=short --no-merges --format='%ad %ae %s'
2020-01-27 post Compile fix on older compilers.
2020-01-27 post GLSL: Support GL_ARB_enchanced_layouts for XFB.
2020-01-25 cdavis MSL: Move inline uniform blocks to the end of the argument buffer.
2019-12-16 cdavis MSL: Support inline uniform blocks in argument buffers.
2020-01-23 post Make SmallVector noexcept.
2020-01-22 42098783+barath121 Typo at line 324

Roll third_party/spirv-headers/ 204cd131c..dc77030ac (2 commits)

204cd131c4..dc77030acc

$ git log 204cd131c..dc77030ac --date=short --no-merges --format='%ad %ae %s'
2020-01-20 dneto Fix the license to match LICENSE
2020-01-20 syoussefi Add BUILD.gn

Created with:
  roll-dep third_party/SPIRV-Tools third_party/glslang third_party/shaderc third_party/spirv-cross third_party/spirv-headers

Change-Id: I696c1facf47a03e03e09c72c4d44449a37c1b971
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15480
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-01-27 19:55:23 +00:00
Corentin Wallez d26ee85fba Implement the webgpu.h swapchains in the frontend and Null backend.
The state-tracking of the webgpu.h swapchain is a bit complicated
because contrary to implementation-based swapchains, they have more
guarantees and a "replacing mechanism". For example instead of hoping
the implementation-based swapchain resize automatically, the
surface-based swapchain needs to be replaced by a new swapchain and
invalidated.

This mechanism of invalidation also needs to be triggered when the last
reference to the surface is lost because we don't want to risk the
application destroying the window from under us.

Adds tests for all the cases of invalidation I could think of apart from
device loss.

Bug: dawn:269

Change-Id: Id515dbb640e13c6e30bb1f1e93b8e54f1e2bba4b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15400
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-01-25 10:05:40 +00:00
Austin Eng 0df4753ba6 Vulkan: Fix crashes on Device destruction if Device::Initialize fails
If Device creation fails, several things are just partially initialized
and the destroy sequence crashes dereferencing null data.

This commit marks the Vulkan device as lost until after it is created.
This avoids parts of the destroy sequence which are unecessary since
the Device was never successfully created and no commands are in flight.

Bug: chromium:1043095
Change-Id: I8e121709fa19b215e118a615b639380d1db1f3f2
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15460
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-25 09:35:50 +00:00
Corentin Wallez 13e2e139a5 Update WGPUChainedStruct usage to match webgpu.h
In the webgpu-headers PR it was decided that in the C header
WGPUChainedStruct would be included as a member instead of members being
inlined.

See https://github.com/webgpu-native/webgpu-headers/pull/30

Bug: dawn:160
Change-Id: I8caf91f3106578077c80778621a632411da44423
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15441
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-25 09:30:40 +00:00
Austin Eng eb1ca45df7 Fix Vulkan fuzzer on mac_libfuzzer_chrome_asan
This commit fixes two problems:
1) It includes testing/libfuzzer/libfuzzer_exports.h which exports
   the LLVMFuzzerInitialize symbol. On Mac, not doing so causes it
   to be removed by the linker.
2) It makes it so that dawn_use_swiftshader is enabled by default
   when fuzzing, and enabling swiftshader also enables the Vulkan
   backend.

Bug: chromium:1042426
Change-Id: Ic0ae0d59c91476b0079148f33a4b1ebd1cc6743c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15462
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-01-25 02:14:39 +00:00
Ryan Harrison 1d036f7766 Removing deprecated spvc API usages
Roll third_party/shaderc/ c6a2ef12d..a4f9acedf (5 commits)

c6a2ef12df..a4f9acedf3

$ git log c6a2ef12d..a4f9acedf --date=short --no-merges --format='%ad %ae %s'
2020-01-23 rharrison Big cleanup to normalize API behaviour (#967)
2020-01-22 rharrison Start v2020.0 (#970)
2020-01-22 rharrison Fix the version string (#971)
2020-01-22 rharrison Finalize v2019.1 (#969)
2020-01-20 rharrison Rolling 3 dependencies and updating expectations (#966)

Created with:
  roll-dep third_party/shaderc

BUG=dawn:324

Change-Id: I3c3900dcccc317054f035e21a6863f068ce417c9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15421
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-01-24 16:16:59 +00:00
Corentin Wallez fa06dd0b62 Fix Vulkan Swiftshader build on macOS
There was a typo in macro name used to do platform detection.

Bug:

Change-Id: I81958419b4283d1d0498f5edc48efc385a648e09
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15440
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-24 15:36:59 +00:00
Corentin Wallez d87e676845 Add the webgpu.h swapchain creation path
This commit changes wgpu::Device::CreateSwapChain to take an additional
wgpu::Surface argument. Passing nullptr is enough to stay on the
previous swapchain implementation, until the new one is ready.

In order to support both the "old" implementation-based swapchains and
the "new" surface-based swapchains. SwapChainBase is now split into
three abstract classes:

 - SwapChainBase that has a virtual method for each of the
wgpu::SwapChain methods.
 - OldSwapChainBase that corresponds to the implementation-based
swapchains.
 - NewSwapChainBase that will contain the surface-based swapchain
implementation and will eventually just be renamed to SwapChainBase.

The interaction of the surface-based swapchains with the Surface objects
aren't implemented yet, neither are the swapchain methods. Only creation
works.

Validation tests for surface-based swapchain creation are added in the
end2end test target because they need to create OS windows.

Bug: dawn:269

Change-Id: I7e07d6c666479867b9a16d7b1b8c181d5dbd69a0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15281
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-01-23 17:20:38 +00:00
Corentin Wallez a5a6e4f5bb Roll third_party/glfw/ 2de2589f9..d973acc12 (366 commits)
2de2589f91..d973acc123

$ git log 2de2589f9..d973acc12 --date=short --no-merges --format='%ad %ae %s'
2020-01-19 elmindreda Update OpenGL bits of build documentation slightly
2020-01-16 elmindreda Remove AppVeyor skip commits setting
2020-01-16 elmindreda Update changelog and add credit
2018-08-21 kovid X11: Fix queries crashing if monitor disconnected
2020-01-16 elmindreda Add credit
2020-01-14 justcrunkle Fix docs install condition
2020-01-15 elmindreda Win32: Add matching comment
2020-01-15 elmindreda Win32: Fix scancode when key message only had VK
2020-01-15 elmindreda Check scancode before use in glfwGetKeyName
2020-01-15 elmindreda Win32: Use non-async key state for modifier hack
2020-01-15 elmindreda Win32: Fix no Super key release event after Win+V
2020-01-16 elmindreda Cocoa: Add fully dynamic loading of Vulkan loader
2020-01-16 elmindreda Cocoa: Select Vulkan surface extension at runtime
2020-01-06 44054076+ByunghoonKim Cocoa: Add support for VK_EXT_metal_surface
2020-01-12 elmindreda X11: Fix parent window handle initialization
2020-01-05 elmindreda X11: Fix BadMatch focusing a window on non-EWMH WM
2020-01-01 elmindreda X11: Fix no window position events during resize
2020-01-01 elmindreda Update changelog
2020-01-01 elmindreda Update changelog and add credit
2019-12-26 elmindreda Fix Threads package not located by our config file
2019-12-25 elmindreda Set macOS deployment target in Travis CI build
2019-12-22 elmindreda X11: Fix IC event mask not being added to our window
2019-12-22 elmindreda X11: Cleanup
2019-10-06 luflosi Use the correct type in a for loop
2019-12-25 elmindreda Cocoa: Replace display link with IOKit query
2019-11-10 elmindreda NSGL: Simulate vsync for occluded windows
2019-11-07 elmindreda NSGL: Remove problematic swap interval workaround
2019-12-19 elmindreda Cocoa: Only create per-monitor display link once
2019-12-20 elmindreda Cocoa: Fix undeclared selector warnings
2019-12-17 elmindreda X11: Cleanup
2019-12-16 elmindreda X11: Cleanup
2019-12-16 elmindreda X11: Fix updating GLFW_FLOATING on a hidden window
2019-12-17 elmindreda X11: Fix invalid read when clearing GLFW_FLOATING
2019-12-16 elmindreda X11: Fix missing checks for EWMH attention atoms
2019-12-16 elmindreda X11: Fix maximization of hidden windows
2019-12-15 elmindreda Enable strict C99 for non-VS compilers
2019-12-15 elmindreda Win32: Add missing include for wcscmp
2019-12-15 elmindreda Win32: Enable Unicode mode for all compilers
2019-12-15 elmindreda Cocoa: Remove stale GCC workaround
2019-12-15 elmindreda Gather CMake setup of configuration header
2019-12-15 elmindreda Replace CMake threads variable with modern target
2019-12-15 elmindreda Replace ad-hoc CMake code with DEFINE_SYMBOL
2019-12-15 elmindreda Fix use of CMake 3.13 command target_link_options
2019-12-15 elmindreda Replace CMake list variables with target_sources
2019-12-15 elmindreda Fix POSIX conformance issues for clock_gettime
2019-12-11 elmindreda Formatting
2019-12-10 elmindreda Cocoa: Fix duplicate conversion of title string
2019-12-11 elmindreda Win32: Add VERSIONINFO resource to GLFW DLL
2019-12-10 elmindreda Fix typo
2019-08-28 luflosi Fix typo
(...)
2018-11-18 aloucks Win32: Disable non-client painting if undecorated
2018-12-14 vallentinsource Fix typos
2018-12-17 elmindreda Fix glfwSetGamma generating ramps of invalid sizes
2018-12-19 elmindreda Fix glfwGetGammaRamp error handling
2018-12-26 elmindreda Cleanup
2018-12-26 elmindreda Add credit
2018-11-24 amonakov Wayland: Remove gamma-related TODOs
2018-12-17 elmindreda Fix assertions for glfwSetGamma value
2018-12-18 elmindreda Win32: Fix build on older versions of Visual C++
2018-12-13 elmindreda Cleanup
2018-09-13 boilard Documentation work
2018-12-13 elmindreda Win32: Fix joystick element info memory leak
2018-12-25 elmindreda Remove deprecated event from events test
2018-12-25 elmindreda Documentation work
2018-12-25 elmindreda Cleanup
2018-11-04 onesadcookie Cocoa: Fix half of all key events for Caps Lock
2018-12-25 elmindreda Add credit
2018-11-24 andrewpbelt Cocoa: Accept focusing mouse click as input
2018-12-24 elmindreda Cocoa: Move to modern Objective-C literals
2018-12-24 elmindreda Cocoa: Add NSApplicationDelegate protocol
2018-12-24 elmindreda Cocoa: Remove subclassing of NSApplication
2018-10-30 eb Use GNUInstallDirs for install destinations
2018-10-30 eb Simplify check for CMake policy CMP0054
2018-11-27 elmindreda Remove trailing whitespace
2018-11-27 elmindreda Cocoa: Remove superfluous compatibility macro
2018-11-19 elmindreda Cocoa: Use NSURLs for drag and drop
2018-11-11 elmindreda Fix Markdown table heads
2018-11-05 elmindreda Add tutorial to Doxygen menu
2018-11-05 elmindreda Documentation work
2018-11-05 elmindreda Use Doxygen layout file
2018-11-05 elmindreda Fix newlines in Doxygen aliases
2018-11-05 elmindreda Revert accidental Nuklear edit
2018-11-04 elmindreda Fix CSS for Doxygen Markdown tables
2018-11-04 elmindreda Use HTTPS when possible
2018-11-03 linkmauve x11: Add a mention of #1366 in the ChangeLog.
2018-10-26 asmadeus x11 window: update cursor position on enter event
2018-11-03 vallentinsource Updated URLs
2018-11-02 vallentinsource Use HTTPS when possible
2018-11-02 vallentinsource Fixed repeated words
2018-10-13 cycl0ps X11: Fix missing check for NET_WM_STATE
2018-10-26 elmindreda Cocoa: Fix OpenGL rendering not being displayed
2018-10-26 elmindreda Cocoa: Fix some macOS 10.14 deprecation warnings
2018-10-22 4436784+tnixeu Fix guide example callback name mismatch
2018-10-24 elmindreda Cocoa: Cleanup
2018-10-22 elmindreda Allow exposing only native context APIs
2018-10-10 linkmauve Documentation work
2018-10-10 linkmauve Wayland: Implement clipboard copy
2018-10-10 linkmauve Wayland: Implement clipboard paste
2018-10-10 linkmauve Wayland: Add boilerplate for clipboard handling
2014-09-23 ricardo.vieira wayland: save serial from all input sources

Created with:
  roll-dep third_party/glfw

Bug: dawn:269

Change-Id: Ie94907bb948740449c441279cd94cdf808916ceb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15380
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-23 15:10:58 +00:00
Corentin Wallez c2e16963a9 Add SurfaceDescriptorFromHTMLCanvasID
Bug:dawn:269

Change-Id: I91802b44d0280224b93eb4fb637e91597bc03c81
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15322
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
2020-01-22 21:37:26 +00:00
Corentin Wallez 8ffd3f2333 Move EXPECT_LAZY_CLEAR to TextureZeroInitTests.cpp
This macro is used only for testing texture zero initialization so it
didn't need to be in DawnTest.h

Bug:
Change-Id: Ifb7ed06d93ae1bc275c9fd4650858c9b27117b5e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15360
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-22 15:55:46 +00:00
Corentin Wallez 6b66b67f69 Fix compilation of Log2(uint64_t) on MSVC
The _BitScanReverse64 intrinsic only exists when compiling for 64bit.
Replace it by two calls to _BitScanReverse (the 32bit one) when on
32bit.

Bug:
Change-Id: Ie294327ec914b0ca4a73732e4b78c1f2a08f100f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15321
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-01-22 13:05:16 +00:00
Natasha Lee 80880ee998 Device Loss handle GetBindGroupLayout and test
This includes moving the destruction of vkDevice from Destroy to the
Device Destructor since we need vkDevice to destroy child objects.

Bug: dawn:68
Change-Id: Id477206b2e3f80138b3708eedcee073303f1b696
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15220
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Natasha Lee <natlee@microsoft.com>
2020-01-21 18:48:45 +00:00
Corentin Wallez 3003aa622b Fix compilation on MSVC
- Fix a warning on 32bit for converting uint64_t to size_t for the
 buffer mapped range.
 - Fix a macro redifinition caused by including glfw3.h before windows.h

 Bug:

Change-Id: I3897af55679d943b1dfc34b93bba7bd25d8fb7d6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15320
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-21 15:25:25 +00:00
Corentin Wallez f2ed2482a4 Reorder wgpu::BackendType to match webgpu.h
BUG=dawn:269

Change-Id: I26e2dded1ceb99a34c29924d6f991e30dc6477b6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15280
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
2020-01-21 08:44:25 +00:00
Ryan Harrison 0fee6ccc2e Rolling 2 dependencies
Roll third_party/glslang/ 3ed344dd7..b0ada8035 (1 commit)

3ed344dd78..b0ada80356

$ git log 3ed344dd7..b0ada8035 --date=short --no-merges --format='%ad %ae %s'
2020-01-17 cepheus HLSL: Fix #1974: ignore input primitives on non-entry-point functions.

Roll third_party/shaderc/ f53792645..c6a2ef12d (1 commit)

f53792645f..c6a2ef12df

$ git log f53792645..c6a2ef12d --date=short --no-merges --format='%ad %ae %s'
2020-01-17 rharrison Change call in shaderc_spvc_needs_buffer_size_buffer to be correct (#964)

Created with:
  roll-dep third_party/SPIRV-Tools third_party/glslang third_party/shaderc third_party/spirv-cross third_party/spirv-headers

Change-Id: I64dd2b710241452f568952e93545b24936202c11
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15300
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-01-20 19:50:14 +00:00
Natasha Lee d8f8c29bb2 Add QueueBase::MakeError
Bug: dawn:68, chromium:1042598
Change-Id: I1cf97e29ecadb520e2641ea01ac6dcf7e908bbd3
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15221
Commit-Queue: Natasha Lee <natlee@microsoft.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-01-17 21:32:08 +00:00
Ryan Harrison 352a589fe0 Add code path to use spvc in Metal backend
BUG=dawn:291

Change-Id: Idf20496bac733b14db3b7df7eb86ff0a23a9d826
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15161
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-01-17 20:28:58 +00:00
Ryan Harrison f70786126c Rolling 4 dependencies for Vk1.2 support integration
Roll third_party/SPIRV-Tools/ f8d7df760..323a81fc5 (2 commits)

f8d7df760c..323a81fc5e

$ git log f8d7df760..323a81fc5 --date=short --no-merges --format='%ad %ae %s'
2019-09-04 alanbaker Validate Vulkan 1.2 capabilities
2019-08-28 dneto Add basic support for Vulkan 1.2: SPV_ENV_VULKAN_1_2

Roll third_party/glslang/ d203754bc..3ed344dd7 (4 commits)

d203754bc1..3ed344dd78

$ git log d203754bc..3ed344dd7 --date=short --no-merges --format='%ad %ae %s'
2020-01-16 cepheus Fix #2059, and also attempt to skip test bots [skip ci]
2019-12-24 laddoc Add Error check flag in io mapper
2020-01-15 cepheus Update to latest SPIRV-Tools, supporting Vulkan 1.2.
2020-01-15 cepheus SPV/Vulkan: Add support for Vulkan 1.2, which defaults to SPIR-V 1.5.

Roll third_party/shaderc/ df0e683b5..f53792645 (2 commits)

df0e683b58..f53792645f

$ git log df0e683b5..f53792645 --date=short --no-merges --format='%ad %ae %s'
2020-01-15 rharrison Use the correct comparison when checking for not MSL (#960)
2020-01-15 dneto Support Vulkan 1.2 (#958)

Roll third_party/spirv-cross/ 172e39f03..f9818f080 (7 commits)

172e39f039..f9818f0804

$ git log 172e39f03..f9818f080 --date=short --no-merges --format='%ad %ae %s'
2020-01-16 post Update license headers to 2020.
2020-01-16 post Run format_all.sh.
2020-01-16 post MSL: Add support for force-activating IAB resources.
2020-01-16 post Deal with illegal names in types as well.
2020-01-15 post Reflection: Add array stride/matrix stride reflection.
2020-01-15 post Reflection: Emit reflection information for array size literalness.
2020-01-15 post GLSL: Implement geometry shader passthrough extension.

Created with:
  roll-dep third_party/SPIRV-Tools third_party/glslang third_party/shaderc third_party/spirv-cross third_party/spirv-headers

Change-Id: Icf361e327598702ecfc0a4cdd3014d0060f2c083
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15200
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
2020-01-16 17:21:01 +00:00
Austin Eng 631f4258a1 Suppress Depth32TextureCreationDepthClears on D3D12 NVIDIA
This test often crashes on first run, but succeeds on retry.

Bug: dawn:145
Change-Id: I44303a01eaceded10ba277a837c5b5e7649df033
Tbr: cwallez@chromium.org
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15180
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-01-16 02:36:10 +00:00
Austin Eng 9652add688 OpenGL: Simplify lazy clear of render pass attachments
Bug: dawn:145
Change-Id: Ia175ebc5a74f7cc15584b9132e00f9089d5dc5b6
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14983
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-01-16 01:30:30 +00:00
Austin Eng 3d97384e16 D3D12: Simplify lazy clear of render pass attachments
Bug: dawn:145
Change-Id: If4c83cdf4065acc9f68aa5d9a7e581e9f2e801a9
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14982
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-01-16 01:29:40 +00:00
Austin Eng 5a2dd74450 Vulkan: Simplify lazy clear of render pass attachments
Bug: dawn:145
Change-Id: I3d74e9ce865d7273a4b737ac11c98380785a415c
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14981
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
2020-01-16 01:21:10 +00:00
Austin Eng 636e6cee4f Directly load Swiftshader if no Vulkan driver is available
This may be a short term solution before linking our own version
of the Vulkan Loader.

Bug: dawn:283
Change-Id: Ifeddeaa5170bccc912c61059071a83c2b5fd9524
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15121
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-01-16 00:34:30 +00:00
Austin Eng 0d6619848d Metal: Implement lazy texture clears
Bug: dawn:145
Change-Id: I73d161002cb09498e41838a10e9ac1db996c955d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14781
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
2020-01-16 00:12:10 +00:00
Natasha Lee 0ecc48ecb7 Handle DeviceLost error
Handle DeviceLostCallback once DeviceLost error occurs.
Disallow any other commands or actions on device to happen after device
has been lost.

Bug: dawn:68
Change-Id: Icbbbadf278cae5e6213050d00439118789c863dc
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/12801
Commit-Queue: Natasha Lee <natlee@microsoft.com>
Reviewed-by: Austin Eng <enga@chromium.org>
2020-01-15 19:02:13 +00:00
Austin Eng 0c66bcd13a Reland "Metal: Add CommandRecordingContext"
This is a reland of 2b3975f808

The previous CL failed to retain autoreleased ObjC objects which
should live longer than the autoreleasepool block. This reland fixes
the issue and adds tests for it.

Original change's description:
> Metal: Add CommandRecordingContext
>
> Introduces the idea of a CommandRecordingContext to the Metal backend,
> similar to other backends. This is a class to track which Metal encoder
> is open on the device-global pending MTLCommandBuffer.
> It will be needed to open/close encoders for lazy clearing.
>
> Bug: dawn:145
> Change-Id: Ief6b71a079d73943677d2b61382d1c36b88a4f87
> Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/14780
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
> Commit-Queue: Austin Eng <enga@chromium.org>

Bug: dawn:145
Change-Id: I67494b35225ce8f6443a3fa9787d054522e5d422
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/15042
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
2020-01-15 18:22:53 +00:00