use crate::device::Device;
use crate::error::GpuError;
use crate::{FenceValue, TextureWrite};
use std::future::Future;
pub trait Queue<D: Device> {
fn write_buffer(&self, buffer: &D::Buffer, offset: u64, data: &[u8]);
fn write_texture(&self, texture: &D::Texture, write: &TextureWrite<'_>);
fn submit(&self, encoder: D::CommandEncoder);
fn submit_tracked(&self, encoder: D::CommandEncoder) -> FenceValue;
fn completed_fence(&self, device: &D) -> Result<FenceValue, GpuError>;
fn read_buffer_async<'a>(
&'a self,
device: &'a D,
buffer: &'a D::Buffer,
offset: u64,
size: u64,
) -> impl Future<Output = Result<Vec<u8>, GpuError>> + 'a;
#[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
fn read_buffer_blocking(
&self,
device: &D,
buffer: &D::Buffer,
offset: u64,
size: u64,
) -> Result<Vec<u8>, GpuError>;
fn timestamp_period(&self) -> f32;
}