1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
use crate::ffi; use crate::types::{ ReflectBindingArrayTraits, ReflectBlockVariable, ReflectImageTraits, ReflectResourceType, ReflectTypeDescription, }; #[derive(Debug, Copy, Clone, Serialize, PartialEq)] pub enum ReflectDescriptorType { Undefined, Sampler, CombinedImageSampler, SampledImage, StorageImage, UniformTexelBuffer, StorageTexelBuffer, UniformBuffer, StorageBuffer, UniformBufferDynamic, StorageBufferDynamic, InputAttachment, AccelerationStructureNV, } impl Default for ReflectDescriptorType { fn default() -> Self { ReflectDescriptorType::Undefined } } pub type ReflectOrdinalBinding = u32; pub type ReflectOrdinalSet = u32; pub type ReflectDescriptorBindingSet = (ReflectOrdinalBinding, ReflectOrdinalSet); #[derive(Debug, Clone, Serialize, PartialEq)] pub struct ReflectDescriptorBinding { pub spirv_id: u32, pub name: String, pub binding: u32, pub input_attachment_index: u32, pub set: u32, pub descriptor_type: ReflectDescriptorType, pub resource_type: ReflectResourceType, pub image: ReflectImageTraits, pub block: ReflectBlockVariable, pub array: ReflectBindingArrayTraits, pub count: u32, pub uav_counter_id: u32, pub uav_counter_binding: Option<Box<ReflectDescriptorBinding>>, pub type_description: Option<ReflectTypeDescription>, pub word_offset: ReflectDescriptorBindingSet, #[serde(skip_serializing)] pub(crate) internal_data: *const ffi::SpvReflectDescriptorBinding, } #[derive(Debug, Clone, Serialize, PartialEq)] pub struct ReflectDescriptorSet { pub set: u32, pub bindings: Vec<ReflectDescriptorBinding>, #[serde(skip_serializing)] pub(crate) internal_data: *const ffi::SpvReflectDescriptorSet, }