summaryrefslogtreecommitdiffstats
path: root/third_party/rust/gpu-descriptor-types/src/types.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/gpu-descriptor-types/src/types.rs')
-rw-r--r--third_party/rust/gpu-descriptor-types/src/types.rs86
1 files changed, 53 insertions, 33 deletions
diff --git a/third_party/rust/gpu-descriptor-types/src/types.rs b/third_party/rust/gpu-descriptor-types/src/types.rs
index f65ffc74ae..73b28dcea5 100644
--- a/third_party/rust/gpu-descriptor-types/src/types.rs
+++ b/third_party/rust/gpu-descriptor-types/src/types.rs
@@ -1,33 +1,53 @@
-bitflags::bitflags! {
- /// Flags to augment descriptor pool creation.
- ///
- /// Match corresponding bits in Vulkan.
- pub struct DescriptorPoolCreateFlags: u32 {
- /// Allows freeing individial sets.
- const FREE_DESCRIPTOR_SET = 0x1;
-
- /// Allows allocating sets with layout created with matching backend-specific flag.
- const UPDATE_AFTER_BIND = 0x2;
- }
-}
-
-/// Number of descriptors of each type.
-///
-/// For `InlineUniformBlock` this value is number of bytes instead.
-#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
-pub struct DescriptorTotalCount {
- pub sampler: u32,
- pub combined_image_sampler: u32,
- pub sampled_image: u32,
- pub storage_image: u32,
- pub uniform_texel_buffer: u32,
- pub storage_texel_buffer: u32,
- pub uniform_buffer: u32,
- pub storage_buffer: u32,
- pub uniform_buffer_dynamic: u32,
- pub storage_buffer_dynamic: u32,
- pub input_attachment: u32,
- pub acceleration_structure: u32,
- pub inline_uniform_block_bytes: u32,
- pub inline_uniform_block_bindings: u32,
-}
+bitflags::bitflags! {
+ /// Flags to augment descriptor pool creation.
+ ///
+ /// Match corresponding bits in Vulkan.
+ #[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
+ pub struct DescriptorPoolCreateFlags: u32 {
+ /// Allows freeing individual sets.
+ const FREE_DESCRIPTOR_SET = 0x1;
+
+ /// Allows allocating sets with layout created with matching backend-specific flag.
+ const UPDATE_AFTER_BIND = 0x2;
+ }
+}
+
+/// Number of descriptors of each type.
+///
+/// For `InlineUniformBlock` this value is number of bytes instead.
+#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
+pub struct DescriptorTotalCount {
+ pub sampler: u32,
+ pub combined_image_sampler: u32,
+ pub sampled_image: u32,
+ pub storage_image: u32,
+ pub uniform_texel_buffer: u32,
+ pub storage_texel_buffer: u32,
+ pub uniform_buffer: u32,
+ pub storage_buffer: u32,
+ pub uniform_buffer_dynamic: u32,
+ pub storage_buffer_dynamic: u32,
+ pub input_attachment: u32,
+ pub acceleration_structure: u32,
+ pub inline_uniform_block_bytes: u32,
+ pub inline_uniform_block_bindings: u32,
+}
+
+impl DescriptorTotalCount {
+ pub fn total(&self) -> u32 {
+ self.sampler
+ + self.combined_image_sampler
+ + self.sampled_image
+ + self.storage_image
+ + self.uniform_texel_buffer
+ + self.storage_texel_buffer
+ + self.uniform_buffer
+ + self.storage_buffer
+ + self.uniform_buffer_dynamic
+ + self.storage_buffer_dynamic
+ + self.input_attachment
+ + self.acceleration_structure
+ + self.inline_uniform_block_bytes
+ + self.inline_uniform_block_bindings
+ }
+}