Experimental wgpu WebGL backend support

- Added missing `draw_cache_align_4x4` call for `brush_glyph` on wasm32 target
- Added WebGL support to `integratio_wgpu` example
- Fixed test.yml CI workflow
- Removed spir-v shader in `integration_wgpu`; Fixed formatting
- Removed redundant `BoxStream` typedef
This commit is contained in:
Vladyslav Nikonov 2021-10-21 22:42:14 +03:00 committed by Héctor Ramón Jiménez
parent c75ed37148
commit bdca20fc4a
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
21 changed files with 414 additions and 86 deletions

View file

@ -5,6 +5,50 @@ use crate::{subscription, Executor, Subscription};
use futures::{channel::mpsc, Sink};
use std::marker::PhantomData;
#[cfg(not(target_arch = "wasm32"))]
mod trait_aliases {
use super::*;
pub trait RuntimeMessage: Send + 'static {}
impl<T> RuntimeMessage for T where T: Send + 'static {}
pub trait RuntimeMessageSender<Message: RuntimeMessage>:
Sink<Message, Error = mpsc::SendError> + Unpin + Send + Clone + 'static
{
}
impl<Message: RuntimeMessage, T> RuntimeMessageSender<Message> for T where
T: Sink<Message, Error = mpsc::SendError>
+ Unpin
+ Send
+ Clone
+ 'static
{
}
}
#[cfg(target_arch = "wasm32")]
mod trait_aliases {
use super::*;
pub trait RuntimeMessage: 'static {}
impl<T> RuntimeMessage for T where T: 'static {}
pub trait RuntimeMessageSender<Message: RuntimeMessage>:
Sink<Message, Error = mpsc::SendError> + Unpin + Clone + 'static
{
}
impl<Message: RuntimeMessage, T> RuntimeMessageSender<Message> for T where
T: Sink<Message, Error = mpsc::SendError> + Unpin + Clone + 'static
{
}
}
pub use trait_aliases::{RuntimeMessage, RuntimeMessageSender};
/// A batteries-included runtime of commands and subscriptions.
///
/// If you have an [`Executor`], a [`Runtime`] can be leveraged to run any
@ -23,9 +67,8 @@ where
Hasher: std::hash::Hasher + Default,
Event: Send + Clone + 'static,
Executor: self::Executor,
Sender:
Sink<Message, Error = mpsc::SendError> + Unpin + Send + Clone + 'static,
Message: Send + 'static,
Sender: RuntimeMessageSender<Message>,
Message: RuntimeMessage,
{
/// Creates a new empty [`Runtime`].
///

View file

@ -3,6 +3,50 @@ use crate::{BoxFuture, Subscription};
use futures::{channel::mpsc, sink::Sink};
use std::{collections::HashMap, marker::PhantomData};
#[cfg(not(target_arch = "wasm32"))]
mod trait_aliases {
use super::*;
pub trait TrackerMessage: Send + 'static {}
impl<T> TrackerMessage for T where T: Send + 'static {}
pub trait TrackerMessageReceiver<Message: TrackerMessage>:
Sink<Message, Error = mpsc::SendError> + Unpin + Send + Clone + 'static
{
}
impl<Message: TrackerMessage, T> TrackerMessageReceiver<Message> for T where
T: Sink<Message, Error = mpsc::SendError>
+ Unpin
+ Send
+ Clone
+ 'static
{
}
}
#[cfg(target_arch = "wasm32")]
mod trait_aliases {
use super::*;
pub trait TrackerMessage: 'static {}
impl<T> TrackerMessage for T where T: 'static {}
pub trait TrackerMessageReceiver<Message: TrackerMessage>:
Sink<Message, Error = mpsc::SendError> + Unpin + Clone + 'static
{
}
impl<Message: TrackerMessage, T> TrackerMessageReceiver<Message> for T where
T: Sink<Message, Error = mpsc::SendError> + Unpin + Clone + 'static
{
}
}
pub use trait_aliases::{TrackerMessage, TrackerMessageReceiver};
/// A registry of subscription streams.
///
/// If you have an application that continuously returns a [`Subscription`],
@ -57,12 +101,8 @@ where
receiver: Receiver,
) -> Vec<BoxFuture<()>>
where
Message: 'static + Send,
Receiver: 'static
+ Sink<Message, Error = mpsc::SendError>
+ Unpin
+ Send
+ Clone,
Message: TrackerMessage,
Receiver: TrackerMessageReceiver<Message>,
{
use futures::{future::FutureExt, stream::StreamExt};