mirror of
https://github.com/gfx-rs/wgpu.git
synced 2025-12-08 21:26:17 +00:00
Map usage flags
This commit is contained in:
parent
beac74c481
commit
45c5709b1d
@ -256,3 +256,34 @@ pub(crate) fn map_texture_dimension_size(dimension: resource::TextureDimension,
|
||||
D3 => H::D3(width, height, depth),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn map_texture_usage_flags(flags: u32, format: hal::format::Format) -> hal::image::Usage {
|
||||
use hal::image::Usage as H;
|
||||
use resource::{
|
||||
TextureUsageFlags_TRANSFER_SRC, TextureUsageFlags_TRANSFER_DST, TextureUsageFlags_SAMPLED,
|
||||
TextureUsageFlags_STORAGE, TextureUsageFlags_OUTPUT_ATTACHMENT,
|
||||
};
|
||||
let mut value = H::empty();
|
||||
if 0 != flags & TextureUsageFlags_TRANSFER_SRC {
|
||||
value |= H::TRANSFER_SRC;
|
||||
}
|
||||
if 0 != flags & TextureUsageFlags_TRANSFER_DST {
|
||||
value |= H::TRANSFER_DST;
|
||||
}
|
||||
if 0 != flags & TextureUsageFlags_SAMPLED {
|
||||
value |= H::SAMPLED;
|
||||
}
|
||||
if 0 != flags & TextureUsageFlags_STORAGE {
|
||||
value |= H::STORAGE;
|
||||
}
|
||||
if 0 != flags & TextureUsageFlags_OUTPUT_ATTACHMENT {
|
||||
if format.surface_desc().aspects.intersects(hal::format::Aspects::DEPTH | hal::format::Aspects::STENCIL) {
|
||||
value |= H::DEPTH_STENCIL_ATTACHMENT;
|
||||
} else {
|
||||
value |= H::COLOR_ATTACHMENT;
|
||||
}
|
||||
}
|
||||
// Note: TextureUsageFlags::Present does not need to be handled explicitly
|
||||
// TODO: HAL Transient Attachment, HAL Input Attachment
|
||||
value
|
||||
}
|
||||
@ -50,18 +50,22 @@ pub enum TextureFormat {
|
||||
D32FloatS8Uint = 3,
|
||||
}
|
||||
|
||||
bitflags! {
|
||||
#[repr(transparent)]
|
||||
pub struct TextureUsageFlags: u32 {
|
||||
const NONE = 0;
|
||||
const TRANSFER_SRC = 1;
|
||||
const TRANSFER_DST = 2;
|
||||
const SAMPLED = 4;
|
||||
const STORAGE = 8;
|
||||
const OUTPUT_ATTACHMENT = 16;
|
||||
const PRESENT = 32;
|
||||
}
|
||||
}
|
||||
// TODO: bitflags
|
||||
pub type TextureUsageFlags = u32;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_NONE: u32 = 0;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_TRANSFER_SRC: u32 = 1;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_TRANSFER_DST: u32 = 2;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_SAMPLED: u32 = 4;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_STORAGE: u32 = 8;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_OUTPUT_ATTACHMENT: u32 = 16;
|
||||
#[allow(non_upper_case_globals)]
|
||||
pub const TextureUsageFlags_PRESENT: u32 = 32;
|
||||
|
||||
#[repr(C)]
|
||||
pub struct TextureDescriptor {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user