gecko-dev/third_party/rust/arrayvec
Dzmitry Malyshau 1c5b01ed15 Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky
This change vendors `wgpu` library in-tree and hooks up the initialization bits. It implements adapter and device initialization and adds a simple test.
Complementary ecosystem tracker - https://github.com/gfx-rs/wgpu/issues/374

Current status:
  - [x] General
    - [x] figure out the IPC story
    - [ ] move wgpu crates into a dedicated folder (postponed as https://bugzilla.mozilla.org/show_bug.cgi?id=1594182)
    - [x] neko rebasing disaster
  - [x] Linux
    - [x] avoid depending on spirv_cross
  - [x] macOS
    - [x] due to cross-compiling shaders
    - [x] need the dependency update
    - [x] stop using gcc
    - [x] unexpected SSL header collision - https://phabricator.services.mozilla.com/D51148
    - [x] undefined Metal symbols
    - [x] missing webrtc headers for IPDL magic - https://phabricator.services.mozilla.com/D51558
    - [x] spirv-cross linking failure in ASAN - https://phabricator.services.mozilla.com/D52688
  - [x] Windows
    - [x] due to "ipc-channel" not supporting Windows yet
    - [x] due to some exceptional stuff
    - [x] undefined symbol: `D3D12CreateDevice`
    - [x] d3d12.dll is not found, dxgi1_4 doesn't present
    - [x] d3d11.dll and dxgi.dll need to be explicitly loaded on win32 mingw
    - [x] libbacktrace fails to link on win32 mingw
    - [x] cc mislinking C++ standard library
  - [x] Android
    - [x] spirv-cross fails to build due to exceptions

Update-1:
We decided to go with IPDL mechanism instead of Rust based ipc-channel (or any alternatives), which unblocks Windows build.

Update-2:
It appears that WebGPUThreading isn't needed any more as the child thread (and its event loop) is now managed by IPDL infrastructure. This PR removes it 🎉 .

Update-3:
InstanceProvider is also removed.

Update-4:
All set, the try is green, waiting for dependent changes to go in.

Differential Revision: https://phabricator.services.mozilla.com/D49458

--HG--
rename : dom/webgpu/Adapter.cpp => dom/webgpu/ipc/WebGPUTypes.h
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/ash/Cargo.toml
rename : third_party/rust/uluru/Cargo.toml => third_party/rust/atom/Cargo.toml
rename : third_party/rust/core-graphics/Cargo.toml => third_party/rust/cocoa/Cargo.toml
rename : third_party/rust/crossbeam-deque/LICENSE-MIT => third_party/rust/cocoa/LICENSE-MIT
rename : third_party/rust/core-graphics/src/lib.rs => third_party/rust/cocoa/src/lib.rs
rename : third_party/rust/uluru/Cargo.toml => third_party/rust/colorful/Cargo.toml
rename : third_party/rust/uluru/Cargo.toml => third_party/rust/copyless/Cargo.toml
rename : third_party/rust/crossbeam-utils/.cargo-checksum.json => third_party/rust/crossbeam-utils-0.6.5/.cargo-checksum.json
rename : third_party/rust/crossbeam-utils/CHANGELOG.md => third_party/rust/crossbeam-utils-0.6.5/CHANGELOG.md
rename : third_party/rust/crossbeam-utils/Cargo.toml => third_party/rust/crossbeam-utils-0.6.5/Cargo.toml
rename : third_party/rust/crossbeam-deque/LICENSE-MIT => third_party/rust/crossbeam-utils-0.6.5/LICENSE-MIT
rename : third_party/rust/crossbeam-utils/README.md => third_party/rust/crossbeam-utils-0.6.5/README.md
rename : third_party/rust/crossbeam-utils/benches/atomic_cell.rs => third_party/rust/crossbeam-utils-0.6.5/benches/atomic_cell.rs
rename : third_party/rust/crossbeam-utils/src/atomic/atomic_cell.rs => third_party/rust/crossbeam-utils-0.6.5/src/atomic/atomic_cell.rs
rename : third_party/rust/crossbeam-utils/src/atomic/mod.rs => third_party/rust/crossbeam-utils-0.6.5/src/atomic/mod.rs
rename : third_party/rust/crossbeam-utils/src/backoff.rs => third_party/rust/crossbeam-utils-0.6.5/src/backoff.rs
rename : third_party/rust/crossbeam-utils/src/cache_padded.rs => third_party/rust/crossbeam-utils-0.6.5/src/cache_padded.rs
rename : third_party/rust/crossbeam-utils/src/lib.rs => third_party/rust/crossbeam-utils-0.6.5/src/lib.rs
rename : third_party/rust/crossbeam-utils/src/thread.rs => third_party/rust/crossbeam-utils-0.6.5/src/thread.rs
rename : third_party/rust/crossbeam-utils/tests/atomic_cell.rs => third_party/rust/crossbeam-utils-0.6.5/tests/atomic_cell.rs
rename : third_party/rust/crossbeam-utils/tests/parker.rs => third_party/rust/crossbeam-utils-0.6.5/tests/parker.rs
rename : third_party/rust/crossbeam-utils/tests/sharded_lock.rs => third_party/rust/crossbeam-utils-0.6.5/tests/sharded_lock.rs
rename : third_party/rust/crossbeam-utils/tests/thread.rs => third_party/rust/crossbeam-utils-0.6.5/tests/thread.rs
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/gfx-auxil/Cargo.toml
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/gfx-backend-empty/Cargo.toml
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/hibitset/Cargo.toml
rename : third_party/rust/crossbeam-deque/LICENSE-MIT => third_party/rust/hibitset/LICENSE-MIT
rename : third_party/rust/crossbeam-deque/LICENSE-MIT => third_party/rust/metal/LICENSE-MIT
rename : third_party/rust/uluru/Cargo.toml => third_party/rust/range-alloc/Cargo.toml
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/raw-window-handle/Cargo.toml
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/relevant/Cargo.toml
rename : third_party/rust/crossbeam-deque/LICENSE-MIT => third_party/rust/relevant/LICENSE-MIT
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/rendy-descriptor/Cargo.toml
rename : third_party/rust/uluru/Cargo.toml => third_party/rust/shared_library/Cargo.toml
rename : third_party/rust/crossbeam-deque/LICENSE-MIT => third_party/rust/shared_library/LICENSE-MIT
rename : third_party/rust/blake2b_simd/Cargo.toml => third_party/rust/storage-map/Cargo.toml
rename : third_party/rust/core-graphics/Cargo.toml => third_party/rust/x11/Cargo.toml
extra : moz-landing-system : lando
2019-11-14 04:59:56 +00:00
..
benches Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
src Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
tests Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
.cargo-checksum.json Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
Cargo.toml Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
LICENSE-APACHE
LICENSE-MIT
README.rst Bug 1575008 - WebGPU implementation basis r=baku,bzbarsky 2019-11-14 04:59:56 +00:00
custom.css

README.rst

Этот файл содержит неоднозначные символы Юникода!

Этот файл содержит неоднозначные символы Юникода, которые могут быть перепутаны с другими в текущей локали. Если это намеренно, можете спокойно проигнорировать это предупреждение. Используйте кнопку Экранировать, чтобы подсветить эти символы.

arrayvec
========

A vector with fixed capacity.

Please read the `API documentation here`__

__ https://docs.rs/arrayvec

|build_status|_ |crates|_ |crates2|_

.. |build_status| image:: https://travis-ci.org/bluss/arrayvec.svg
.. _build_status: https://travis-ci.org/bluss/arrayvec

.. |crates| image:: http://meritbadge.herokuapp.com/arrayvec
.. _crates: https://crates.io/crates/arrayvec

.. |crates2| image:: http://meritbadge.herokuapp.com/nodrop
.. _crates2: https://crates.io/crates/nodrop

Recent Changes (arrayvec)
-------------------------

- 0.5.1

  - Add ``as_ptr``, ``as_mut_ptr`` accessors directly on the ``ArrayVec`` by @tbu-
    (matches the same addition to ``Vec`` which happened in Rust 1.37).
  - Add method ``ArrayString::len`` (now available directly, not just through deref to str).
  - Use raw pointers instead of ``&mut [u8]`` for encoding chars into ``ArrayString``
    (uninit best practice fix).
  - Use raw pointers instead of ``get_unchecked_mut`` where the target may be
    uninitialized a everywhere relevant in the ArrayVec implementation
    (uninit best practice fix).
  - Changed inline hints on many methods, mainly removing inline hints
  - ``ArrayVec::dispose`` is now deprecated (it has no purpose anymore)

- 0.4.12

  - Use raw pointers instead of ``get_unchecked_mut`` where the target may be
    uninitialized a everywhere relevant in the ArrayVec implementation.

- 0.5.0

  - Use ``MaybeUninit`` (now unconditionally) in the implementation of
    ``ArrayVec``
  - Use ``MaybeUninit`` (now unconditionally) in the implementation of
    ``ArrayString``
  - The crate feature for serde serialization is now named ``serde``.
  - Updated the ``Array`` trait interface, and it is now easier to use for
    users outside the crate.
  - Add ``FromStr`` impl for ``ArrayString`` by @despawnerer
  - Add method ``try_extend_from_slice`` to ``ArrayVec``, which is always
    effecient by @Thomasdezeeuw.
  - Add method ``remaining_capacity`` by @Thomasdezeeuw
  - Improve performance of the ``extend`` method.
  - The index type of zero capacity vectors is now itself zero size, by
    @clarfon
  - Use ``drop_in_place`` for truncate and clear methods. This affects drop order
    and resume from panic during drop.
  - Use Rust 2018 edition for the implementation
  - Require Rust 1.36 or later, for the unconditional ``MaybeUninit``
    improvements.

- 0.4.11

  - In Rust 1.36 or later, use newly stable MaybeUninit. This extends the
    soundness work introduced in 0.4.9, we are finally able to use this in
    stable. We use feature detection (build script) to enable this at build
    time.

- 0.4.10

  - Use ``repr(C)`` in the ``union`` version that was introduced in 0.4.9, to
    allay some soundness concerns.

- 0.4.9

  - Use ``union`` in the implementation on when this is detected to be supported
    (nightly only for now). This is a better solution for treating uninitialized
    regions correctly, and we'll use it in stable Rust as soon as we are able.
    When this is enabled, the ``ArrayVec`` has no space overhead in its memory
    layout, although the size of the vec should not be relied upon. (See `#114`_)
  - ``ArrayString`` updated to not use uninitialized memory, it instead zeros its
    backing array. This will be refined in the next version, since we
    need to make changes to the user visible API.
  - The ``use_union`` feature now does nothing (like its documentation foretold).

.. _`#114`: https://github.com/bluss/arrayvec/pull/114

- 0.4.8

  - Implement Clone and Debug for ``IntoIter`` by @clarcharr
  - Add more array sizes under crate features. These cover all in the range
    up to 128 and 129 to 255 respectively (we have a few of those by default):

    - ``array-size-33-128``
    - ``array-size-129-255``

- 0.4.7

  - Fix future compat warning about raw pointer casts
  - Use ``drop_in_place`` when dropping the arrayvec by-value iterator
  - Decrease mininum Rust version (see docs) by @jeehoonkang

- 0.3.25

  - Fix future compat warning about raw pointer casts

- 0.4.6

  - Fix compilation on 16-bit targets. This means, the 65536 array size is not
    included on these targets.

- 0.3.24

  - Fix compilation on 16-bit targets. This means, the 65536 array size is not
    included on these targets.
  - Fix license files so that they are both included (was fixed in 0.4 before)

- 0.4.5

  - Add methods to ``ArrayString`` by @DenialAdams:

    - ``.pop() -> Option<char>``
    - ``.truncate(new_len)``
    - ``.remove(index) -> char``

  - Remove dependency on crate odds
  - Document debug assertions in unsafe methods better

- 0.4.4

  - Add method ``ArrayVec::truncate()`` by @niklasf

- 0.4.3

  - Improve performance for ``ArrayVec::extend`` with a lower level
    implementation (#74)
  - Small cleanup in dependencies (use no std for crates where we don't need more)

- 0.4.2

  - Add constructor method ``new`` to ``CapacityError``.

- 0.4.1

  - Add ``Default`` impl to ``ArrayString`` by @tbu-

- 0.4.0

  - Reformed signatures and error handling by @bluss and @tbu-:

    - ``ArrayVec``'s ``push, insert, remove, swap_remove`` now match ``Vec``'s
      corresponding signature and panic on capacity errors where applicable.
    - Add fallible methods ``try_push, insert`` and checked methods
      ``pop_at, swap_pop``.
    - Similar changes to ``ArrayString``'s push methods.

  - Use a local version of the ``RangeArgument`` trait
  - Add array sizes 50, 150, 200 by @daboross
  - Support serde 1.0 by @daboross
  - New method ``.push_unchecked()`` by @niklasf
  - ``ArrayString`` implements ``PartialOrd, Ord`` by @tbu-
  - Require Rust 1.14
  - crate feature ``use_generic_array`` was dropped.

- 0.3.23

  - Implement ``PartialOrd, Ord`` as well as ``PartialOrd<str>`` for
    ``ArrayString``.

- 0.3.22

  - Implement ``Array`` for the 65536 size

- 0.3.21

  - Use ``encode_utf8`` from crate odds
  - Add constructor ``ArrayString::from_byte_string``

- 0.3.20

  - Simplify and speed up ``ArrayString``s ``.push(char)``-

- 0.3.19

  - Add new crate feature ``use_generic_array`` which allows using their
    ``GenericArray`` just like a regular fixed size array for the storage
    of an ``ArrayVec``.

- 0.3.18

  - Fix bounds check in ``ArrayVec::insert``!
    It would be buggy if ``self.len() < index < self.capacity()``. Take note of
    the push out behavior specified in the docs.

- 0.3.17

  - Added crate feature ``use_union`` which forwards to the nodrop crate feature
  - Added methods ``.is_full()`` to ``ArrayVec`` and ``ArrayString``.

- 0.3.16

  - Added method ``.retain()`` to ``ArrayVec``.
  - Added methods ``.as_slice(), .as_mut_slice()`` to ``ArrayVec`` and ``.as_str()``
    to ``ArrayString``.

- 0.3.15

  - Add feature std, which you can opt out of to use ``no_std`` (requires Rust 1.6
    to opt out).
  - Implement ``Clone::clone_from`` for ArrayVec and ArrayString

- 0.3.14

  - Add ``ArrayString::from(&str)``

- 0.3.13

  - Added ``DerefMut`` impl for ``ArrayString``.
  - Added method ``.simplify()`` to drop the element for ``CapacityError``.
  - Added method ``.dispose()`` to ``ArrayVec``

- 0.3.12

  - Added ArrayString, a fixed capacity analogy of String

- 0.3.11

  - Added trait impls Default, PartialOrd, Ord, Write for ArrayVec

- 0.3.10

  - Go back to using external NoDrop, fixing a panic safety bug (issue #3)

- 0.3.8

  - Inline the non-dropping logic to remove one drop flag in the
    ArrayVec representation.

- 0.3.7

  - Added method .into_inner()
  - Added unsafe method .set_len()


License
=======

Dual-licensed to be compatible with the Rust project.

Licensed under the Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0 or the MIT license
http://opensource.org/licenses/MIT, at your
option. This file may not be copied, modified, or distributed
except according to those terms.