1 // Copyright (c) 2016 The vulkano developers 2 // Licensed under the Apache License, Version 2.0 3 // <LICENSE-APACHE or 4 // https://www.apache.org/licenses/LICENSE-2.0> or the MIT 5 // license <LICENSE-MIT or https://opensource.org/licenses/MIT>, 6 // at your option. All files in the project carrying such 7 // notice may not be copied, modified, or distributed except 8 // according to those terms. 9 10 use crate::macros::vulkan_bitflags; 11 12 vulkan_bitflags! { 13 #[non_exhaustive] 14 15 /// Describes how a buffer is going to be used. This is **not** just an optimization. 16 /// 17 /// If you try to use a buffer in a way that you didn't declare, an error will be returned. 18 BufferUsage = BufferUsageFlags(u32); 19 20 /// The buffer can be used as a source for transfer, blit, resolve and clear commands. 21 TRANSFER_SRC = TRANSFER_SRC, 22 23 /// The buffer can be used as a destination for transfer, blit, resolve and clear commands. 24 TRANSFER_DST = TRANSFER_DST, 25 26 /// The buffer can be used as a uniform texel buffer in a descriptor set. 27 UNIFORM_TEXEL_BUFFER = UNIFORM_TEXEL_BUFFER, 28 29 /// The buffer can be used as a storage texel buffer in a descriptor set. 30 STORAGE_TEXEL_BUFFER = STORAGE_TEXEL_BUFFER, 31 32 /// The buffer can be used as a uniform buffer in a descriptor set. 33 UNIFORM_BUFFER = UNIFORM_BUFFER, 34 35 /// The buffer can be used as a storage buffer in a descriptor set. 36 STORAGE_BUFFER = STORAGE_BUFFER, 37 38 /// The buffer can be used as an index buffer. 39 INDEX_BUFFER = INDEX_BUFFER, 40 41 /// The buffer can be used as a vertex or instance buffer. 42 VERTEX_BUFFER = VERTEX_BUFFER, 43 44 /// The buffer can be used as an indirect buffer. 45 INDIRECT_BUFFER = INDIRECT_BUFFER, 46 47 /// The buffer's device address can be retrieved. 48 /// 49 /// A buffer created with this usage can only be bound to device memory allocated with the 50 /// [`MemoryAllocateFlags::DEVICE_ADDRESS`] flag, unless the [`ext_buffer_device_address`] 51 /// extension is enabled on the device. 52 /// 53 /// [`MemoryAllocateFlags::DEVICE_ADDRESS`]: crate::memory::MemoryAllocateFlags::DEVICE_ADDRESS 54 /// [`ext_buffer_device_address`]: crate::device::DeviceExtensions::ext_buffer_device_address 55 SHADER_DEVICE_ADDRESS = SHADER_DEVICE_ADDRESS { 56 api_version: V1_2, 57 device_extensions: [khr_buffer_device_address, ext_buffer_device_address], 58 }, 59 60 /* TODO: enable 61 // TODO: document 62 VIDEO_DECODE_SRC = VIDEO_DECODE_SRC_KHR { 63 device_extensions: [khr_video_decode_queue], 64 },*/ 65 66 /* TODO: enable 67 // TODO: document 68 VIDEO_DECODE_DST = VIDEO_DECODE_DST_KHR { 69 device_extensions: [khr_video_decode_queue], 70 },*/ 71 72 /* TODO: enable 73 // TODO: document 74 TRANSFORM_FEEDBACK_BUFFER = TRANSFORM_FEEDBACK_BUFFER_EXT { 75 device_extensions: [ext_transform_feedback], 76 },*/ 77 78 /* TODO: enable 79 // TODO: document 80 TRANSFORM_FEEDBACK_COUNTER_BUFFER = TRANSFORM_FEEDBACK_COUNTER_BUFFER_EXT { 81 device_extensions: [ext_transform_feedback], 82 },*/ 83 84 /* TODO: enable 85 // TODO: document 86 CONDITIONAL_RENDERING = CONDITIONAL_RENDERING_EXT { 87 device_extensions: [ext_conditional_rendering], 88 },*/ 89 90 /* TODO: enable 91 // TODO: document 92 ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR = ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_KHR { 93 device_extensions: [khr_acceleration_structure], 94 },*/ 95 96 /* TODO: enable 97 // TODO: document 98 ACCELERATION_STRUCTURE_STORAGE = ACCELERATION_STRUCTURE_STORAGE_KHR { 99 device_extensions: [khr_acceleration_structure], 100 },*/ 101 102 /* TODO: enable 103 // TODO: document 104 SHADER_BINDING_TABLE = SHADER_BINDING_TABLE_KHR { 105 device_extensions: [khr_ray_tracing_pipeline, nv_ray_tracing], 106 },*/ 107 108 /* TODO: enable 109 // TODO: document 110 VIDEO_ENCODE_DST = VIDEO_ENCODE_DST_KHR { 111 device_extensions: [khr_video_encode_queue], 112 },*/ 113 114 /* TODO: enable 115 // TODO: document 116 VIDEO_ENCODE_SRC = VIDEO_ENCODE_SRC_KHR { 117 device_extensions: [khr_video_encode_queue], 118 },*/ 119 120 /* TODO: enable 121 // TODO: document 122 SAMPLER_DESCRIPTOR_BUFFER = SAMPLER_DESCRIPTOR_BUFFER_EXT { 123 device_extensions: [ext_descriptor_buffer], 124 },*/ 125 126 /* TODO: enable 127 // TODO: document 128 RESOURCE_DESCRIPTOR_BUFFER = RESOURCE_DESCRIPTOR_BUFFER_EXT { 129 device_extensions: [ext_descriptor_buffer], 130 },*/ 131 132 /* TODO: enable 133 // TODO: document 134 PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER = PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_EXT { 135 device_extensions: [ext_descriptor_buffer], 136 },*/ 137 138 /* TODO: enable 139 // TODO: document 140 MICROMAP_BUILD_INPUT_READ_ONLY = MICROMAP_BUILD_INPUT_READ_ONLY_EXT { 141 device_extensions: [ext_opacity_micromap], 142 },*/ 143 144 /* TODO: enable 145 // TODO: document 146 MICROMAP_STORAGE = MICROMAP_STORAGE_EXT { 147 device_extensions: [ext_opacity_micromap], 148 },*/ 149 } 150