├── .gitignore ├── thumbnail.png ├── Cargo.toml ├── README.md ├── LICENSE ├── src └── main.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsoding/vulkano-rainbow-triangle/HEAD/thumbnail.png -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "vulkano-rainbow-triangle" 3 | version = "0.1.0" 4 | authors = ["rexim "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | vulkano = "0.22.0" 11 | vulkano-win = "0.22.0" 12 | vulkano-shaders = "0.22.0" 13 | winit = "0.24.0" 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vulkano Rainbow Triangle 2 | 3 | ![thumbnail](./thumbnail.png) 4 | 5 | Classical Rainbow Triangle using Rust and Vulkan via [vulkano](https://github.com/vulkano-rs/vulkano) bindings. 6 | 7 | Based on the vulkano [triangle example](https://raw.githubusercontent.com/vulkano-rs/vulkano/v0.22.0/examples/src/bin/triangle.rs) 8 | 9 | ## Quick Start 10 | 11 | ```console 12 | $ cargo run 13 | ``` 14 | 15 | ## Screencast 16 | 17 | [![screencast](http://i3.ytimg.com/vi/8iEN64bj3X4/hqdefault.jpg)](https://www.youtube.com/watch?v=8iEN64bj3X4) 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2021 Alexey Kutepov 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | // Based on https://raw.githubusercontent.com/vulkano-rs/vulkano/v0.22.0/examples/src/bin/triangle.rs 2 | use vulkano::buffer::cpu_access::CpuAccessibleBuffer; 3 | use vulkano::buffer::BufferUsage; 4 | use vulkano::command_buffer::{DynamicState, AutoCommandBufferBuilder, SubpassContents}; 5 | use vulkano::device::{Device, DeviceExtensions}; 6 | use vulkano::framebuffer::{ 7 | Framebuffer, FramebufferAbstract, RenderPassAbstract, Subpass, 8 | }; 9 | use vulkano::image::swapchain::SwapchainImage; 10 | use vulkano::image::view::ImageView; 11 | use vulkano::image::ImageUsage; 12 | use vulkano::instance::{Instance, PhysicalDevice}; 13 | use vulkano::pipeline::viewport::Viewport; 14 | use vulkano::pipeline::GraphicsPipeline; 15 | use vulkano::swapchain; 16 | use vulkano::swapchain::{ 17 | AcquireError, ColorSpace, FullscreenExclusive, PresentMode, SurfaceTransform, Swapchain, 18 | SwapchainCreationError, 19 | }; 20 | use vulkano::sync; 21 | use vulkano::sync::{FlushError, GpuFuture}; 22 | use vulkano_win::VkSurfaceBuild; 23 | use winit::event::{Event, WindowEvent}; 24 | use winit::event_loop::{ControlFlow, EventLoop}; 25 | use winit::window::{Window, WindowBuilder}; 26 | 27 | use std::sync::Arc; 28 | 29 | fn main() { 30 | let required_extensions = vulkano_win::required_extensions(); 31 | let instance = Instance::new(None, &required_extensions, None) 32 | .expect("Expected to create a Vulkan instance, but too unlucky"); 33 | 34 | let physical = PhysicalDevice::enumerate(&instance).next().unwrap(); 35 | println!("Name: {} (type: {:?})", physical.name(), physical.ty()); 36 | 37 | let event_loop = EventLoop::new(); 38 | let surface = WindowBuilder::new() 39 | .build_vk_surface(&event_loop, instance.clone()) 40 | .expect("Expected to create a Window for Vulkan instance, but too unlucky"); 41 | 42 | let queue_family = physical 43 | .queue_families() 44 | .find(|&q| q.supports_graphics() && surface.is_supported(q).unwrap_or(false)) 45 | .unwrap(); 46 | 47 | let device_ext = DeviceExtensions { 48 | khr_swapchain: true, 49 | ..DeviceExtensions::none() 50 | }; 51 | 52 | let (device, mut queues) = Device::new( 53 | physical, 54 | physical.supported_features(), 55 | &device_ext, 56 | [(queue_family, 0.5)].iter().cloned(), 57 | ) 58 | .unwrap(); 59 | 60 | let queue = queues.next().unwrap(); 61 | 62 | let (mut swapchain, images) = { 63 | let caps = surface.capabilities(physical).unwrap(); 64 | let alpha = caps.supported_composite_alpha.iter().next().unwrap(); 65 | let format = caps.supported_formats[0].0; 66 | let dimensions: [u32; 2] = surface.window().inner_size().into(); 67 | Swapchain::new( 68 | device.clone(), 69 | surface.clone(), 70 | caps.min_image_count, 71 | format, 72 | dimensions, 73 | 1, 74 | ImageUsage::color_attachment(), 75 | &queue, 76 | SurfaceTransform::Identity, 77 | alpha, 78 | PresentMode::Fifo, 79 | FullscreenExclusive::Default, 80 | true, 81 | ColorSpace::SrgbNonLinear, 82 | ) 83 | .unwrap() 84 | }; 85 | 86 | let vertex_buffer = { 87 | #[derive(Default, Debug, Clone)] 88 | struct Vertex { 89 | position: [f32; 2], 90 | } 91 | vulkano::impl_vertex!(Vertex, position); 92 | 93 | CpuAccessibleBuffer::from_iter( 94 | device.clone(), 95 | BufferUsage::all(), 96 | false, 97 | [ 98 | Vertex { 99 | position: [-0.5, -0.5], 100 | }, 101 | Vertex { 102 | position: [0.5, -0.5], 103 | }, 104 | Vertex { 105 | position: [0.0, 0.5], 106 | }, 107 | ] 108 | .iter() 109 | .cloned(), 110 | ) 111 | .unwrap() 112 | }; 113 | 114 | mod vs { 115 | vulkano_shaders::shader! { 116 | ty: "vertex", 117 | src: " 118 | #version 450 119 | 120 | layout (location = 0) in vec2 position; 121 | 122 | layout (location = 1) out vec4 vertex_color; 123 | 124 | vec4 colors[3] = vec4[3]( 125 | vec4(1.0, 0.0, 0.0, 1.0), 126 | vec4(0.0, 1.0, 0.0, 1.0), 127 | vec4(0.0, 0.0, 1.0, 1.0) 128 | ); 129 | 130 | void main() { 131 | gl_Position = vec4(position, 0.0, 1.0); 132 | vertex_color = colors[gl_VertexIndex]; 133 | } 134 | " 135 | } 136 | } 137 | 138 | mod fs { 139 | vulkano_shaders::shader! { 140 | ty: "fragment", 141 | src: " 142 | #version 450 143 | layout(location = 0) out vec4 f_color; 144 | 145 | layout(location = 1) in vec4 vertex_color; 146 | 147 | void main() { 148 | f_color = vertex_color; 149 | } 150 | " 151 | } 152 | } 153 | 154 | let vs = vs::Shader::load(device.clone()).unwrap(); 155 | let fs = fs::Shader::load(device.clone()).unwrap(); 156 | 157 | let render_pass = Arc::new( 158 | vulkano::single_pass_renderpass!( 159 | device.clone(), 160 | attachments: { 161 | color: { 162 | load: Clear, 163 | store: Store, 164 | format: swapchain.format(), 165 | samples: 1, 166 | } 167 | }, 168 | pass: { 169 | color: [color], 170 | depth_stencil: {} 171 | } 172 | ) 173 | .unwrap(), 174 | ); 175 | 176 | let pipeline = Arc::new( 177 | GraphicsPipeline::start() 178 | .vertex_input_single_buffer() 179 | .vertex_shader(vs.main_entry_point(), ()) 180 | .triangle_list() 181 | .viewports_dynamic_scissors_irrelevant(1) 182 | .fragment_shader(fs.main_entry_point(), ()) 183 | .render_pass(Subpass::from(render_pass.clone(), 0).unwrap()) 184 | .build(device.clone()) 185 | .unwrap() 186 | ); 187 | 188 | let mut dynamic_state = DynamicState { 189 | line_width: None, 190 | viewports: None, 191 | scissors: None, 192 | compare_mask: None, 193 | write_mask: None, 194 | reference: None, 195 | }; 196 | 197 | let mut framebuffers = 198 | window_size_dependent_setup(&images, render_pass.clone(), &mut dynamic_state); 199 | 200 | let mut recreate_swapchain = false; 201 | 202 | let mut previous_frame_end = Some(sync::now(device.clone()).boxed()); 203 | 204 | event_loop.run(move |event, _, control_flow| match event { 205 | Event::WindowEvent { 206 | event: WindowEvent::CloseRequested, 207 | .. 208 | } => { 209 | *control_flow = ControlFlow::Exit; 210 | } 211 | Event::WindowEvent { 212 | event: WindowEvent::Resized(_), 213 | .. 214 | } => { 215 | recreate_swapchain = true; 216 | } 217 | Event::RedrawEventsCleared => { 218 | previous_frame_end.as_mut().unwrap().cleanup_finished(); 219 | 220 | if recreate_swapchain { 221 | let dimensions: [u32; 2] = surface.window().inner_size().into(); 222 | let (new_swapchain, new_images) = 223 | match swapchain.recreate_with_dimensions(dimensions) { 224 | Ok(r) => r, 225 | Err(SwapchainCreationError::UnsupportedDimensions) => return, 226 | Err(e) => panic!("Failed to recreate swapchain: {:?}", e), 227 | }; 228 | swapchain = new_swapchain; 229 | framebuffers = window_size_dependent_setup( 230 | &new_images, 231 | render_pass.clone(), 232 | &mut dynamic_state, 233 | ); 234 | recreate_swapchain = false; 235 | } 236 | 237 | let (image_num, suboptimal, acquire_future) = 238 | match swapchain::acquire_next_image(swapchain.clone(), None) { 239 | Ok(r) => r, 240 | Err(AcquireError::OutOfDate) => { 241 | recreate_swapchain = true; 242 | return; 243 | } 244 | Err(e) => panic!("Failed to acquire next image: {:?}", e), 245 | }; 246 | 247 | if suboptimal { 248 | recreate_swapchain = true; 249 | } 250 | 251 | let clear_values = vec!([0.0, 0.0, 0.0, 1.0].into()); 252 | 253 | let mut builder = AutoCommandBufferBuilder::primary_one_time_submit( 254 | device.clone(), 255 | queue.family(), 256 | ) 257 | .unwrap(); 258 | 259 | builder 260 | .begin_render_pass( 261 | framebuffers[image_num].clone(), 262 | SubpassContents::Inline, 263 | clear_values, 264 | ) 265 | .unwrap() 266 | .draw( 267 | pipeline.clone(), 268 | &dynamic_state, 269 | vertex_buffer.clone(), 270 | (), 271 | (), 272 | vec![], 273 | ) 274 | .unwrap() 275 | .end_render_pass() 276 | .unwrap(); 277 | 278 | let command_buffer = builder.build().unwrap(); 279 | 280 | let future = previous_frame_end 281 | .take() 282 | .unwrap() 283 | .join(acquire_future) 284 | .then_execute(queue.clone(), command_buffer) 285 | .unwrap() 286 | .then_swapchain_present(queue.clone(), swapchain.clone(), image_num) 287 | .then_signal_fence_and_flush(); 288 | 289 | match future { 290 | Ok(future) => { 291 | previous_frame_end = Some(future.boxed()); 292 | } 293 | Err(FlushError::OutOfDate) => { 294 | recreate_swapchain = true; 295 | previous_frame_end = Some(sync::now(device.clone()).boxed()); 296 | } 297 | Err(e) => { 298 | println!("Failed to flush future: {:?}", e); 299 | previous_frame_end = Some(sync::now(device.clone()).boxed()); 300 | } 301 | } 302 | } 303 | _ => (), 304 | }); 305 | } 306 | 307 | fn window_size_dependent_setup( 308 | images: &[Arc>], 309 | render_pass: Arc, 310 | dynamic_state: &mut DynamicState, 311 | ) -> Vec> { 312 | let dimensions = images[0].dimensions(); 313 | // let viewport = Viewport { 314 | // origin: [0.0, 0.0], 315 | // dimensions: [dimensions[0] as f32, dimensions[1] as f32], 316 | // depth_range: 0.0..1.0, 317 | // }; 318 | dynamic_state.viewports = Some(vec![Viewport { 319 | origin: [0.0, 0.0], 320 | dimensions: [dimensions[0] as f32, dimensions[1] as f32], 321 | depth_range: 0.0..1.0, 322 | }]); 323 | 324 | images 325 | .iter() 326 | .map(|image| { 327 | let view = ImageView::new(image.clone()).unwrap(); 328 | Arc::new( 329 | Framebuffer::start(render_pass.clone()) 330 | .add(view) 331 | .unwrap() 332 | .build() 333 | .unwrap(), 334 | ) as Arc 335 | }) 336 | .collect::>() 337 | } 338 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "ab_glyph_rasterizer" 5 | version = "0.1.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | checksum = "d9fe5e32de01730eb1f6b7f5b51c17e03e2325bf40a74f754f04f130043affff" 8 | 9 | [[package]] 10 | name = "andrew" 11 | version = "0.3.1" 12 | source = "registry+https://github.com/rust-lang/crates.io-index" 13 | checksum = "8c4afb09dd642feec8408e33f92f3ffc4052946f6b20f32fb99c1f58cd4fa7cf" 14 | dependencies = [ 15 | "bitflags", 16 | "rusttype", 17 | "walkdir", 18 | "xdg", 19 | "xml-rs", 20 | ] 21 | 22 | [[package]] 23 | name = "autocfg" 24 | version = "1.0.1" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 27 | 28 | [[package]] 29 | name = "bitflags" 30 | version = "1.2.1" 31 | source = "registry+https://github.com/rust-lang/crates.io-index" 32 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 33 | 34 | [[package]] 35 | name = "block" 36 | version = "0.1.6" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 39 | 40 | [[package]] 41 | name = "calloop" 42 | version = "0.6.5" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "0b036167e76041694579972c28cf4877b4f92da222560ddb49008937b6a6727c" 45 | dependencies = [ 46 | "log", 47 | "nix 0.18.0", 48 | ] 49 | 50 | [[package]] 51 | name = "cc" 52 | version = "1.0.67" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" 55 | 56 | [[package]] 57 | name = "cfg-if" 58 | version = "0.1.10" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 61 | 62 | [[package]] 63 | name = "cfg-if" 64 | version = "1.0.0" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 67 | 68 | [[package]] 69 | name = "cmake" 70 | version = "0.1.45" 71 | source = "registry+https://github.com/rust-lang/crates.io-index" 72 | checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" 73 | dependencies = [ 74 | "cc", 75 | ] 76 | 77 | [[package]] 78 | name = "cocoa" 79 | version = "0.20.2" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "0c49e86fc36d5704151f5996b7b3795385f50ce09e3be0f47a0cfde869681cf8" 82 | dependencies = [ 83 | "bitflags", 84 | "block", 85 | "core-foundation 0.7.0", 86 | "core-graphics 0.19.2", 87 | "foreign-types", 88 | "libc", 89 | "objc", 90 | ] 91 | 92 | [[package]] 93 | name = "cocoa" 94 | version = "0.24.0" 95 | source = "registry+https://github.com/rust-lang/crates.io-index" 96 | checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" 97 | dependencies = [ 98 | "bitflags", 99 | "block", 100 | "cocoa-foundation", 101 | "core-foundation 0.9.1", 102 | "core-graphics 0.22.2", 103 | "foreign-types", 104 | "libc", 105 | "objc", 106 | ] 107 | 108 | [[package]] 109 | name = "cocoa-foundation" 110 | version = "0.1.0" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" 113 | dependencies = [ 114 | "bitflags", 115 | "block", 116 | "core-foundation 0.9.1", 117 | "core-graphics-types", 118 | "foreign-types", 119 | "libc", 120 | "objc", 121 | ] 122 | 123 | [[package]] 124 | name = "core-foundation" 125 | version = "0.7.0" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" 128 | dependencies = [ 129 | "core-foundation-sys 0.7.0", 130 | "libc", 131 | ] 132 | 133 | [[package]] 134 | name = "core-foundation" 135 | version = "0.9.1" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | checksum = "0a89e2ae426ea83155dccf10c0fa6b1463ef6d5fcb44cee0b224a408fa640a62" 138 | dependencies = [ 139 | "core-foundation-sys 0.8.2", 140 | "libc", 141 | ] 142 | 143 | [[package]] 144 | name = "core-foundation-sys" 145 | version = "0.7.0" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" 148 | 149 | [[package]] 150 | name = "core-foundation-sys" 151 | version = "0.8.2" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | checksum = "ea221b5284a47e40033bf9b66f35f984ec0ea2931eb03505246cd27a963f981b" 154 | 155 | [[package]] 156 | name = "core-graphics" 157 | version = "0.19.2" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" 160 | dependencies = [ 161 | "bitflags", 162 | "core-foundation 0.7.0", 163 | "foreign-types", 164 | "libc", 165 | ] 166 | 167 | [[package]] 168 | name = "core-graphics" 169 | version = "0.22.2" 170 | source = "registry+https://github.com/rust-lang/crates.io-index" 171 | checksum = "269f35f69b542b80e736a20a89a05215c0ce80c2c03c514abb2e318b78379d86" 172 | dependencies = [ 173 | "bitflags", 174 | "core-foundation 0.9.1", 175 | "core-graphics-types", 176 | "foreign-types", 177 | "libc", 178 | ] 179 | 180 | [[package]] 181 | name = "core-graphics-types" 182 | version = "0.1.1" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 185 | dependencies = [ 186 | "bitflags", 187 | "core-foundation 0.9.1", 188 | "foreign-types", 189 | "libc", 190 | ] 191 | 192 | [[package]] 193 | name = "core-video-sys" 194 | version = "0.1.4" 195 | source = "registry+https://github.com/rust-lang/crates.io-index" 196 | checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" 197 | dependencies = [ 198 | "cfg-if 0.1.10", 199 | "core-foundation-sys 0.7.0", 200 | "core-graphics 0.19.2", 201 | "libc", 202 | "objc", 203 | ] 204 | 205 | [[package]] 206 | name = "crossbeam-queue" 207 | version = "0.3.1" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "0f6cb3c7f5b8e51bc3ebb73a2327ad4abdbd119dc13223f14f961d2f38486756" 210 | dependencies = [ 211 | "cfg-if 1.0.0", 212 | "crossbeam-utils", 213 | ] 214 | 215 | [[package]] 216 | name = "crossbeam-utils" 217 | version = "0.8.3" 218 | source = "registry+https://github.com/rust-lang/crates.io-index" 219 | checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49" 220 | dependencies = [ 221 | "autocfg", 222 | "cfg-if 1.0.0", 223 | "lazy_static", 224 | ] 225 | 226 | [[package]] 227 | name = "darling" 228 | version = "0.10.2" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" 231 | dependencies = [ 232 | "darling_core", 233 | "darling_macro", 234 | ] 235 | 236 | [[package]] 237 | name = "darling_core" 238 | version = "0.10.2" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" 241 | dependencies = [ 242 | "fnv", 243 | "ident_case", 244 | "proc-macro2", 245 | "quote", 246 | "strsim", 247 | "syn", 248 | ] 249 | 250 | [[package]] 251 | name = "darling_macro" 252 | version = "0.10.2" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" 255 | dependencies = [ 256 | "darling_core", 257 | "quote", 258 | "syn", 259 | ] 260 | 261 | [[package]] 262 | name = "derivative" 263 | version = "2.2.0" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 266 | dependencies = [ 267 | "proc-macro2", 268 | "quote", 269 | "syn", 270 | ] 271 | 272 | [[package]] 273 | name = "dispatch" 274 | version = "0.2.0" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 277 | 278 | [[package]] 279 | name = "dlib" 280 | version = "0.4.2" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "b11f15d1e3268f140f68d390637d5e76d849782d971ae7063e0da69fe9709a76" 283 | dependencies = [ 284 | "libloading 0.6.7", 285 | ] 286 | 287 | [[package]] 288 | name = "dlib" 289 | version = "0.5.0" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" 292 | dependencies = [ 293 | "libloading 0.7.0", 294 | ] 295 | 296 | [[package]] 297 | name = "downcast-rs" 298 | version = "1.2.0" 299 | source = "registry+https://github.com/rust-lang/crates.io-index" 300 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 301 | 302 | [[package]] 303 | name = "fnv" 304 | version = "1.0.7" 305 | source = "registry+https://github.com/rust-lang/crates.io-index" 306 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 307 | 308 | [[package]] 309 | name = "foreign-types" 310 | version = "0.3.2" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 313 | dependencies = [ 314 | "foreign-types-shared", 315 | ] 316 | 317 | [[package]] 318 | name = "foreign-types-shared" 319 | version = "0.1.1" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 322 | 323 | [[package]] 324 | name = "fuchsia-zircon" 325 | version = "0.3.3" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 328 | dependencies = [ 329 | "bitflags", 330 | "fuchsia-zircon-sys", 331 | ] 332 | 333 | [[package]] 334 | name = "fuchsia-zircon-sys" 335 | version = "0.3.3" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 338 | 339 | [[package]] 340 | name = "half" 341 | version = "1.7.1" 342 | source = "registry+https://github.com/rust-lang/crates.io-index" 343 | checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3" 344 | 345 | [[package]] 346 | name = "ident_case" 347 | version = "1.0.1" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 350 | 351 | [[package]] 352 | name = "instant" 353 | version = "0.1.9" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" 356 | dependencies = [ 357 | "cfg-if 1.0.0", 358 | ] 359 | 360 | [[package]] 361 | name = "iovec" 362 | version = "0.1.4" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 365 | dependencies = [ 366 | "libc", 367 | ] 368 | 369 | [[package]] 370 | name = "jni-sys" 371 | version = "0.3.0" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 374 | 375 | [[package]] 376 | name = "kernel32-sys" 377 | version = "0.2.2" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 380 | dependencies = [ 381 | "winapi 0.2.8", 382 | "winapi-build", 383 | ] 384 | 385 | [[package]] 386 | name = "lazy_static" 387 | version = "1.4.0" 388 | source = "registry+https://github.com/rust-lang/crates.io-index" 389 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 390 | 391 | [[package]] 392 | name = "lazycell" 393 | version = "1.3.0" 394 | source = "registry+https://github.com/rust-lang/crates.io-index" 395 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 396 | 397 | [[package]] 398 | name = "libc" 399 | version = "0.2.93" 400 | source = "registry+https://github.com/rust-lang/crates.io-index" 401 | checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41" 402 | 403 | [[package]] 404 | name = "libloading" 405 | version = "0.6.7" 406 | source = "registry+https://github.com/rust-lang/crates.io-index" 407 | checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" 408 | dependencies = [ 409 | "cfg-if 1.0.0", 410 | "winapi 0.3.9", 411 | ] 412 | 413 | [[package]] 414 | name = "libloading" 415 | version = "0.7.0" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" 418 | dependencies = [ 419 | "cfg-if 1.0.0", 420 | "winapi 0.3.9", 421 | ] 422 | 423 | [[package]] 424 | name = "lock_api" 425 | version = "0.4.3" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "5a3c91c24eae6777794bb1997ad98bbb87daf92890acab859f7eaa4320333176" 428 | dependencies = [ 429 | "scopeguard", 430 | ] 431 | 432 | [[package]] 433 | name = "log" 434 | version = "0.4.14" 435 | source = "registry+https://github.com/rust-lang/crates.io-index" 436 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 437 | dependencies = [ 438 | "cfg-if 1.0.0", 439 | ] 440 | 441 | [[package]] 442 | name = "malloc_buf" 443 | version = "0.0.6" 444 | source = "registry+https://github.com/rust-lang/crates.io-index" 445 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 446 | dependencies = [ 447 | "libc", 448 | ] 449 | 450 | [[package]] 451 | name = "maybe-uninit" 452 | version = "2.0.0" 453 | source = "registry+https://github.com/rust-lang/crates.io-index" 454 | checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" 455 | 456 | [[package]] 457 | name = "memchr" 458 | version = "2.3.4" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" 461 | 462 | [[package]] 463 | name = "memmap2" 464 | version = "0.1.0" 465 | source = "registry+https://github.com/rust-lang/crates.io-index" 466 | checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" 467 | dependencies = [ 468 | "libc", 469 | ] 470 | 471 | [[package]] 472 | name = "metal" 473 | version = "0.18.0" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "e198a0ee42bdbe9ef2c09d0b9426f3b2b47d90d93a4a9b0395c4cea605e92dc0" 476 | dependencies = [ 477 | "bitflags", 478 | "block", 479 | "cocoa 0.20.2", 480 | "core-graphics 0.19.2", 481 | "foreign-types", 482 | "log", 483 | "objc", 484 | ] 485 | 486 | [[package]] 487 | name = "mio" 488 | version = "0.6.23" 489 | source = "registry+https://github.com/rust-lang/crates.io-index" 490 | checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 491 | dependencies = [ 492 | "cfg-if 0.1.10", 493 | "fuchsia-zircon", 494 | "fuchsia-zircon-sys", 495 | "iovec", 496 | "kernel32-sys", 497 | "libc", 498 | "log", 499 | "miow", 500 | "net2", 501 | "slab", 502 | "winapi 0.2.8", 503 | ] 504 | 505 | [[package]] 506 | name = "mio-extras" 507 | version = "2.0.6" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "52403fe290012ce777c4626790c8951324a2b9e3316b3143779c72b029742f19" 510 | dependencies = [ 511 | "lazycell", 512 | "log", 513 | "mio", 514 | "slab", 515 | ] 516 | 517 | [[package]] 518 | name = "miow" 519 | version = "0.2.2" 520 | source = "registry+https://github.com/rust-lang/crates.io-index" 521 | checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 522 | dependencies = [ 523 | "kernel32-sys", 524 | "net2", 525 | "winapi 0.2.8", 526 | "ws2_32-sys", 527 | ] 528 | 529 | [[package]] 530 | name = "ndk" 531 | version = "0.2.1" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "5eb167c1febed0a496639034d0c76b3b74263636045db5489eee52143c246e73" 534 | dependencies = [ 535 | "jni-sys", 536 | "ndk-sys", 537 | "num_enum", 538 | "thiserror", 539 | ] 540 | 541 | [[package]] 542 | name = "ndk-glue" 543 | version = "0.2.1" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "bdf399b8b7a39c6fb153c4ec32c72fd5fe789df24a647f229c239aa7adb15241" 546 | dependencies = [ 547 | "lazy_static", 548 | "libc", 549 | "log", 550 | "ndk", 551 | "ndk-macro", 552 | "ndk-sys", 553 | ] 554 | 555 | [[package]] 556 | name = "ndk-macro" 557 | version = "0.2.0" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | checksum = "05d1c6307dc424d0f65b9b06e94f88248e6305726b14729fd67a5e47b2dc481d" 560 | dependencies = [ 561 | "darling", 562 | "proc-macro-crate", 563 | "proc-macro2", 564 | "quote", 565 | "syn", 566 | ] 567 | 568 | [[package]] 569 | name = "ndk-sys" 570 | version = "0.2.1" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | checksum = "c44922cb3dbb1c70b5e5f443d63b64363a898564d739ba5198e3a9138442868d" 573 | 574 | [[package]] 575 | name = "net2" 576 | version = "0.2.37" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" 579 | dependencies = [ 580 | "cfg-if 0.1.10", 581 | "libc", 582 | "winapi 0.3.9", 583 | ] 584 | 585 | [[package]] 586 | name = "nix" 587 | version = "0.18.0" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" 590 | dependencies = [ 591 | "bitflags", 592 | "cc", 593 | "cfg-if 0.1.10", 594 | "libc", 595 | ] 596 | 597 | [[package]] 598 | name = "nix" 599 | version = "0.20.0" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" 602 | dependencies = [ 603 | "bitflags", 604 | "cc", 605 | "cfg-if 1.0.0", 606 | "libc", 607 | ] 608 | 609 | [[package]] 610 | name = "nom" 611 | version = "6.1.2" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" 614 | dependencies = [ 615 | "memchr", 616 | "version_check", 617 | ] 618 | 619 | [[package]] 620 | name = "num_enum" 621 | version = "0.4.3" 622 | source = "registry+https://github.com/rust-lang/crates.io-index" 623 | checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4" 624 | dependencies = [ 625 | "derivative", 626 | "num_enum_derive", 627 | ] 628 | 629 | [[package]] 630 | name = "num_enum_derive" 631 | version = "0.4.3" 632 | source = "registry+https://github.com/rust-lang/crates.io-index" 633 | checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d" 634 | dependencies = [ 635 | "proc-macro-crate", 636 | "proc-macro2", 637 | "quote", 638 | "syn", 639 | ] 640 | 641 | [[package]] 642 | name = "objc" 643 | version = "0.2.7" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 646 | dependencies = [ 647 | "malloc_buf", 648 | "objc_exception", 649 | ] 650 | 651 | [[package]] 652 | name = "objc_exception" 653 | version = "0.1.2" 654 | source = "registry+https://github.com/rust-lang/crates.io-index" 655 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 656 | dependencies = [ 657 | "cc", 658 | ] 659 | 660 | [[package]] 661 | name = "once_cell" 662 | version = "1.7.2" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" 665 | 666 | [[package]] 667 | name = "owned_ttf_parser" 668 | version = "0.6.0" 669 | source = "registry+https://github.com/rust-lang/crates.io-index" 670 | checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" 671 | dependencies = [ 672 | "ttf-parser", 673 | ] 674 | 675 | [[package]] 676 | name = "parking_lot" 677 | version = "0.11.1" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" 680 | dependencies = [ 681 | "instant", 682 | "lock_api", 683 | "parking_lot_core", 684 | ] 685 | 686 | [[package]] 687 | name = "parking_lot_core" 688 | version = "0.8.3" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" 691 | dependencies = [ 692 | "cfg-if 1.0.0", 693 | "instant", 694 | "libc", 695 | "redox_syscall", 696 | "smallvec", 697 | "winapi 0.3.9", 698 | ] 699 | 700 | [[package]] 701 | name = "percent-encoding" 702 | version = "2.1.0" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 705 | 706 | [[package]] 707 | name = "pkg-config" 708 | version = "0.3.19" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" 711 | 712 | [[package]] 713 | name = "proc-macro-crate" 714 | version = "0.1.5" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 717 | dependencies = [ 718 | "toml", 719 | ] 720 | 721 | [[package]] 722 | name = "proc-macro2" 723 | version = "1.0.26" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" 726 | dependencies = [ 727 | "unicode-xid", 728 | ] 729 | 730 | [[package]] 731 | name = "quote" 732 | version = "1.0.9" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" 735 | dependencies = [ 736 | "proc-macro2", 737 | ] 738 | 739 | [[package]] 740 | name = "raw-window-handle" 741 | version = "0.3.3" 742 | source = "registry+https://github.com/rust-lang/crates.io-index" 743 | checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" 744 | dependencies = [ 745 | "libc", 746 | ] 747 | 748 | [[package]] 749 | name = "redox_syscall" 750 | version = "0.2.6" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | checksum = "8270314b5ccceb518e7e578952f0b72b88222d02e8f77f5ecf7abbb673539041" 753 | dependencies = [ 754 | "bitflags", 755 | ] 756 | 757 | [[package]] 758 | name = "rusttype" 759 | version = "0.9.2" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" 762 | dependencies = [ 763 | "ab_glyph_rasterizer", 764 | "owned_ttf_parser", 765 | ] 766 | 767 | [[package]] 768 | name = "same-file" 769 | version = "1.0.6" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 772 | dependencies = [ 773 | "winapi-util", 774 | ] 775 | 776 | [[package]] 777 | name = "scoped-tls" 778 | version = "1.0.0" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" 781 | 782 | [[package]] 783 | name = "scopeguard" 784 | version = "1.1.0" 785 | source = "registry+https://github.com/rust-lang/crates.io-index" 786 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 787 | 788 | [[package]] 789 | name = "serde" 790 | version = "1.0.125" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" 793 | 794 | [[package]] 795 | name = "shaderc" 796 | version = "0.7.2" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | checksum = "1ca37955a53b37fa20380c414aec5343ab76b6993ebfd86e74facd7209bac577" 799 | dependencies = [ 800 | "libc", 801 | "shaderc-sys", 802 | ] 803 | 804 | [[package]] 805 | name = "shaderc-sys" 806 | version = "0.7.2" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "da6962db4d543df2fb613d76e6f4c7bcf58ff3300709c92f2349239955ce0a9f" 809 | dependencies = [ 810 | "cmake", 811 | "libc", 812 | ] 813 | 814 | [[package]] 815 | name = "shared_library" 816 | version = "0.1.9" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" 819 | dependencies = [ 820 | "lazy_static", 821 | "libc", 822 | ] 823 | 824 | [[package]] 825 | name = "slab" 826 | version = "0.4.3" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" 829 | 830 | [[package]] 831 | name = "smallvec" 832 | version = "1.6.1" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" 835 | 836 | [[package]] 837 | name = "smithay-client-toolkit" 838 | version = "0.12.3" 839 | source = "registry+https://github.com/rust-lang/crates.io-index" 840 | checksum = "4750c76fd5d3ac95fa3ed80fe667d6a3d8590a960e5b575b98eea93339a80b80" 841 | dependencies = [ 842 | "andrew", 843 | "bitflags", 844 | "calloop", 845 | "dlib 0.4.2", 846 | "lazy_static", 847 | "log", 848 | "memmap2", 849 | "nix 0.18.0", 850 | "wayland-client", 851 | "wayland-cursor", 852 | "wayland-protocols", 853 | ] 854 | 855 | [[package]] 856 | name = "strsim" 857 | version = "0.9.3" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" 860 | 861 | [[package]] 862 | name = "syn" 863 | version = "1.0.70" 864 | source = "registry+https://github.com/rust-lang/crates.io-index" 865 | checksum = "b9505f307c872bab8eb46f77ae357c8eba1fdacead58ee5a850116b1d7f82883" 866 | dependencies = [ 867 | "proc-macro2", 868 | "quote", 869 | "unicode-xid", 870 | ] 871 | 872 | [[package]] 873 | name = "thiserror" 874 | version = "1.0.24" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" 877 | dependencies = [ 878 | "thiserror-impl", 879 | ] 880 | 881 | [[package]] 882 | name = "thiserror-impl" 883 | version = "1.0.24" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" 886 | dependencies = [ 887 | "proc-macro2", 888 | "quote", 889 | "syn", 890 | ] 891 | 892 | [[package]] 893 | name = "toml" 894 | version = "0.5.8" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 897 | dependencies = [ 898 | "serde", 899 | ] 900 | 901 | [[package]] 902 | name = "ttf-parser" 903 | version = "0.6.2" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" 906 | 907 | [[package]] 908 | name = "unicode-xid" 909 | version = "0.2.1" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" 912 | 913 | [[package]] 914 | name = "version_check" 915 | version = "0.9.3" 916 | source = "registry+https://github.com/rust-lang/crates.io-index" 917 | checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" 918 | 919 | [[package]] 920 | name = "vk-sys" 921 | version = "0.6.0" 922 | source = "registry+https://github.com/rust-lang/crates.io-index" 923 | checksum = "d0c4a1a71e7ae691371c5ca5cc5efc27720881feb81a8ebca5c3fb5b7db601c8" 924 | 925 | [[package]] 926 | name = "vulkano" 927 | version = "0.22.0" 928 | source = "registry+https://github.com/rust-lang/crates.io-index" 929 | checksum = "7b34b537d0050076f22526f6aab0ee53b1aae135d9d13ac5acd9cf3d916940c7" 930 | dependencies = [ 931 | "crossbeam-queue", 932 | "fnv", 933 | "half", 934 | "lazy_static", 935 | "parking_lot", 936 | "shared_library", 937 | "smallvec", 938 | "vk-sys", 939 | ] 940 | 941 | [[package]] 942 | name = "vulkano-rainbow-triangle" 943 | version = "0.1.0" 944 | dependencies = [ 945 | "vulkano", 946 | "vulkano-shaders", 947 | "vulkano-win", 948 | "winit", 949 | ] 950 | 951 | [[package]] 952 | name = "vulkano-shaders" 953 | version = "0.22.0" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "76800854ca8014e9758473de4e85a364d469b5ab6f8e59a2d753ce0f3f6588b4" 956 | dependencies = [ 957 | "proc-macro2", 958 | "quote", 959 | "shaderc", 960 | "syn", 961 | ] 962 | 963 | [[package]] 964 | name = "vulkano-win" 965 | version = "0.22.0" 966 | source = "registry+https://github.com/rust-lang/crates.io-index" 967 | checksum = "d7a193b77f1c4127f64042ac5d77f2a8b8e236fb9e42a32ece8b33b22eb4715e" 968 | dependencies = [ 969 | "cocoa 0.20.2", 970 | "metal", 971 | "objc", 972 | "raw-window-handle", 973 | "vulkano", 974 | "winit", 975 | ] 976 | 977 | [[package]] 978 | name = "walkdir" 979 | version = "2.3.2" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" 982 | dependencies = [ 983 | "same-file", 984 | "winapi 0.3.9", 985 | "winapi-util", 986 | ] 987 | 988 | [[package]] 989 | name = "wayland-client" 990 | version = "0.28.5" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "06ca44d86554b85cf449f1557edc6cc7da935cc748c8e4bf1c507cbd43bae02c" 993 | dependencies = [ 994 | "bitflags", 995 | "downcast-rs", 996 | "libc", 997 | "nix 0.20.0", 998 | "scoped-tls", 999 | "wayland-commons", 1000 | "wayland-scanner", 1001 | "wayland-sys", 1002 | ] 1003 | 1004 | [[package]] 1005 | name = "wayland-commons" 1006 | version = "0.28.5" 1007 | source = "registry+https://github.com/rust-lang/crates.io-index" 1008 | checksum = "8bd75ae380325dbcff2707f0cd9869827ea1d2d6d534cff076858d3f0460fd5a" 1009 | dependencies = [ 1010 | "nix 0.20.0", 1011 | "once_cell", 1012 | "smallvec", 1013 | "wayland-sys", 1014 | ] 1015 | 1016 | [[package]] 1017 | name = "wayland-cursor" 1018 | version = "0.28.5" 1019 | source = "registry+https://github.com/rust-lang/crates.io-index" 1020 | checksum = "b37e5455ec72f5de555ec39b5c3704036ac07c2ecd50d0bffe02d5fe2d4e65ab" 1021 | dependencies = [ 1022 | "nix 0.20.0", 1023 | "wayland-client", 1024 | "xcursor", 1025 | ] 1026 | 1027 | [[package]] 1028 | name = "wayland-protocols" 1029 | version = "0.28.5" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "95df3317872bcf9eec096c864b69aa4769a1d5d6291a5b513f8ba0af0efbd52c" 1032 | dependencies = [ 1033 | "bitflags", 1034 | "wayland-client", 1035 | "wayland-commons", 1036 | "wayland-scanner", 1037 | ] 1038 | 1039 | [[package]] 1040 | name = "wayland-scanner" 1041 | version = "0.28.5" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | checksum = "389d680d7bd67512dc9c37f39560224327038deb0f0e8d33f870900441b68720" 1044 | dependencies = [ 1045 | "proc-macro2", 1046 | "quote", 1047 | "xml-rs", 1048 | ] 1049 | 1050 | [[package]] 1051 | name = "wayland-sys" 1052 | version = "0.28.5" 1053 | source = "registry+https://github.com/rust-lang/crates.io-index" 1054 | checksum = "2907bd297eef464a95ba9349ea771611771aa285b932526c633dc94d5400a8e2" 1055 | dependencies = [ 1056 | "dlib 0.5.0", 1057 | "lazy_static", 1058 | "pkg-config", 1059 | ] 1060 | 1061 | [[package]] 1062 | name = "winapi" 1063 | version = "0.2.8" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1066 | 1067 | [[package]] 1068 | name = "winapi" 1069 | version = "0.3.9" 1070 | source = "registry+https://github.com/rust-lang/crates.io-index" 1071 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1072 | dependencies = [ 1073 | "winapi-i686-pc-windows-gnu", 1074 | "winapi-x86_64-pc-windows-gnu", 1075 | ] 1076 | 1077 | [[package]] 1078 | name = "winapi-build" 1079 | version = "0.1.1" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1082 | 1083 | [[package]] 1084 | name = "winapi-i686-pc-windows-gnu" 1085 | version = "0.4.0" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1088 | 1089 | [[package]] 1090 | name = "winapi-util" 1091 | version = "0.1.5" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1094 | dependencies = [ 1095 | "winapi 0.3.9", 1096 | ] 1097 | 1098 | [[package]] 1099 | name = "winapi-x86_64-pc-windows-gnu" 1100 | version = "0.4.0" 1101 | source = "registry+https://github.com/rust-lang/crates.io-index" 1102 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1103 | 1104 | [[package]] 1105 | name = "winit" 1106 | version = "0.24.0" 1107 | source = "registry+https://github.com/rust-lang/crates.io-index" 1108 | checksum = "da4eda6fce0eb84bd0a33e3c8794eb902e1033d0a1d5a31bc4f19b1b4bbff597" 1109 | dependencies = [ 1110 | "bitflags", 1111 | "cocoa 0.24.0", 1112 | "core-foundation 0.9.1", 1113 | "core-graphics 0.22.2", 1114 | "core-video-sys", 1115 | "dispatch", 1116 | "instant", 1117 | "lazy_static", 1118 | "libc", 1119 | "log", 1120 | "mio", 1121 | "mio-extras", 1122 | "ndk", 1123 | "ndk-glue", 1124 | "ndk-sys", 1125 | "objc", 1126 | "parking_lot", 1127 | "percent-encoding", 1128 | "raw-window-handle", 1129 | "smithay-client-toolkit", 1130 | "wayland-client", 1131 | "winapi 0.3.9", 1132 | "x11-dl", 1133 | ] 1134 | 1135 | [[package]] 1136 | name = "ws2_32-sys" 1137 | version = "0.2.1" 1138 | source = "registry+https://github.com/rust-lang/crates.io-index" 1139 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1140 | dependencies = [ 1141 | "winapi 0.2.8", 1142 | "winapi-build", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "x11-dl" 1147 | version = "2.18.5" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" 1150 | dependencies = [ 1151 | "lazy_static", 1152 | "libc", 1153 | "maybe-uninit", 1154 | "pkg-config", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "xcursor" 1159 | version = "0.3.3" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | checksum = "3a9a231574ae78801646617cefd13bfe94be907c0e4fa979cfd8b770aa3c5d08" 1162 | dependencies = [ 1163 | "nom", 1164 | ] 1165 | 1166 | [[package]] 1167 | name = "xdg" 1168 | version = "2.2.0" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" 1171 | 1172 | [[package]] 1173 | name = "xml-rs" 1174 | version = "0.8.3" 1175 | source = "registry+https://github.com/rust-lang/crates.io-index" 1176 | checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" 1177 | --------------------------------------------------------------------------------