604edfb78f
supported objects: - SPIR-V artifacts - Validated DXIL artifacts - DXBC artifacts - OpenGL Program Binaries - Vulkan Pipeline caches - D3D12 CACHED_PIPELINE_STATE
44 lines
839 B
Rust
44 lines
839 B
Rust
/// Trait for objects that can be used as part of a key for a cached object.
|
|
pub trait CacheKey {
|
|
/// Get a byte representation of the object that
|
|
/// will be fed into the hash.
|
|
fn hash_bytes(&self) -> &[u8];
|
|
}
|
|
|
|
impl CacheKey for u32 {
|
|
fn hash_bytes(&self) -> &[u8] {
|
|
&bytemuck::bytes_of(&*self)
|
|
}
|
|
}
|
|
|
|
impl CacheKey for i32 {
|
|
fn hash_bytes(&self) -> &[u8] {
|
|
&bytemuck::bytes_of(&*self)
|
|
}
|
|
}
|
|
|
|
impl CacheKey for &[u8] {
|
|
fn hash_bytes(&self) -> &[u8] {
|
|
self
|
|
}
|
|
}
|
|
|
|
impl CacheKey for Vec<u8> {
|
|
fn hash_bytes(&self) -> &[u8] {
|
|
&self
|
|
}
|
|
}
|
|
|
|
impl CacheKey for Vec<u32> {
|
|
fn hash_bytes(&self) -> &[u8] {
|
|
bytemuck::cast_slice(&self)
|
|
}
|
|
}
|
|
|
|
impl CacheKey for &str {
|
|
fn hash_bytes(&self) -> &[u8] {
|
|
// need to be explicit
|
|
self.as_bytes()
|
|
}
|
|
}
|