From c1e8594f04c1032c6b25c911e90998b1acbc02fb Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Fri, 3 Apr 2020 15:27:52 -0400 Subject: [PATCH 1/6] Port to the new swapchain model --- Cargo.lock | 18 +- libportability-gfx/src/conv.rs | 2 +- libportability-gfx/src/impls.rs | 394 +++++++++++++++++++------------- libportability-gfx/src/lib.rs | 122 +++++++++- 4 files changed, 357 insertions(+), 179 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1eb4db5..1cd2e7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -249,7 +249,7 @@ dependencies = [ [[package]] name = "gfx-auxil" version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", @@ -259,7 +259,7 @@ dependencies = [ [[package]] name = "gfx-backend-dx11" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-auxil 0.3.0 (git+https://github.com/gfx-rs/gfx)", @@ -278,7 +278,7 @@ dependencies = [ [[package]] name = "gfx-backend-dx12" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "d3d12 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -295,7 +295,7 @@ dependencies = [ [[package]] name = "gfx-backend-empty" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -304,7 +304,7 @@ dependencies = [ [[package]] name = "gfx-backend-gl" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -327,7 +327,7 @@ dependencies = [ [[package]] name = "gfx-backend-metal" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -353,7 +353,7 @@ dependencies = [ [[package]] name = "gfx-backend-vulkan" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "ash 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -373,7 +373,7 @@ dependencies = [ [[package]] name = "gfx-hal" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" dependencies = [ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -731,7 +731,7 @@ dependencies = [ [[package]] name = "range-alloc" version = "0.1.0" -source = "git+https://github.com/gfx-rs/gfx#425d9155a0e349d05514dce7ae4e85b01ed43738" +source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" [[package]] name = "raw-window-handle" diff --git a/libportability-gfx/src/conv.rs b/libportability-gfx/src/conv.rs index 7940b9e..3f1ff39 100644 --- a/libportability-gfx/src/conv.rs +++ b/libportability-gfx/src/conv.rs @@ -355,7 +355,7 @@ pub fn map_image_usage(usage: VkImageUsageFlags) -> image::Usage { image::Usage::from_bits_truncate(usage) } -pub fn map_image_usage_from_hal(usage: image::Usage) -> VkImageUsageFlags { +pub fn _map_image_usage_from_hal(usage: image::Usage) -> VkImageUsageFlags { usage.bits() } diff --git a/libportability-gfx/src/impls.rs b/libportability-gfx/src/impls.rs index 0a2a569..1199cfd 100644 --- a/libportability-gfx/src/impls.rs +++ b/libportability-gfx/src/impls.rs @@ -6,7 +6,7 @@ use hal::{ pool::CommandPool as _, pso::DescriptorPool, queue::{CommandQueue as _, QueueFamily}, - window::{PresentMode, Surface, Swapchain as _}, + window::{PresentMode, PresentationSurface as _, Surface as _}, {command as com, memory, pass, pso, queue}, {Features, Instance}, }; @@ -1173,7 +1173,8 @@ pub extern "C" fn gfxQueueSubmit( stages .into_iter() .zip(semaphores) - .map(|(stage, semaphore)| (&**semaphore, conv::map_pipeline_stage_flags(*stage))) + .filter(|(_, semaphore)| !semaphore.is_fake) + .map(|(stage, semaphore)| (&semaphore.raw, conv::map_pipeline_stage_flags(*stage))) }; let signal_semaphores = unsafe { slice::from_raw_parts( @@ -1181,7 +1182,10 @@ pub extern "C" fn gfxQueueSubmit( submission.signalSemaphoreCount as _, ) .into_iter() - .map(|semaphore| &**semaphore) + .map(|semaphore| { + semaphore.as_mut().unwrap().is_fake = false; + &semaphore.raw + }) }; let submission = hal::queue::Submission { @@ -1210,8 +1214,9 @@ pub extern "C" fn gfxQueueSubmit( wait_semaphores: empty(), signal_semaphores: empty(), }; + type RawSemaphore = ::Semaphore; unsafe { - queue.submit::(submission, fence.as_ref()) + queue.submit::(submission, fence.as_ref()) }; } @@ -1356,9 +1361,13 @@ pub extern "C" fn gfxBindImageMemory( memory: VkDeviceMemory, memoryOffset: VkDeviceSize, ) -> VkResult { + let raw = match *image { + Image::Native { ref mut raw, .. } => raw, + Image::SwapchainFrame { .. } => panic!("Unexpected swapchain image"), + }; unsafe { gpu.device - .bind_image_memory(&memory, memoryOffset, &mut image.raw) + .bind_image_memory(&memory, memoryOffset, raw) .unwrap(); //TODO } VkResult::VK_SUCCESS @@ -1383,7 +1392,8 @@ pub extern "C" fn gfxGetImageMemoryRequirements( image: VkImage, pMemoryRequirements: *mut VkMemoryRequirements, ) { - let req = unsafe { gpu.device.get_image_requirements(&image.raw) }; + let raw = image.to_native().unwrap().raw; + let req = unsafe { gpu.device.get_image_requirements(raw) }; *unsafe { &mut *pMemoryRequirements } = VkMemoryRequirements { size: req.size, @@ -1546,7 +1556,7 @@ pub extern "C" fn gfxCreateSemaphore( pSemaphore: *mut VkSemaphore, ) -> VkResult { let semaphore = match gpu.device.create_semaphore() { - Ok(s) => s, + Ok(raw) => Semaphore { raw, is_fake: false }, Err(oom) => return map_oom(oom), }; @@ -1563,7 +1573,7 @@ pub extern "C" fn gfxDestroySemaphore( ) { if let Some(sem) = semaphore.unbox() { unsafe { - gpu.device.destroy_semaphore(sem); + gpu.device.destroy_semaphore(sem.raw); } } } @@ -1794,7 +1804,7 @@ pub extern "C" fn gfxCreateImage( ) .expect("Error on creating image"); - *pImage = Handle::new(Image { + *pImage = Handle::new(Image::Native { raw: image, mip_levels: info.mipLevels, array_layers: info.arrayLayers, @@ -1809,9 +1819,9 @@ pub extern "C" fn gfxDestroyImage( image: VkImage, _pAllocator: *const VkAllocationCallbacks, ) { - if let Some(image) = image.unbox() { + if let Some(Image::Native { raw, .. }) = image.unbox() { unsafe { - gpu.device.destroy_image(image.raw); + gpu.device.destroy_image(raw); } } } @@ -1822,9 +1832,10 @@ pub extern "C" fn gfxGetImageSubresourceLayout( pSubresource: *const VkImageSubresource, pLayout: *mut VkSubresourceLayout, ) { + let img = image.to_native().unwrap(); let footprint = unsafe { gpu.device - .get_image_subresource_footprint(&image.raw, image.map_subresource(*pSubresource)) + .get_image_subresource_footprint(img.raw, img.map_subresource(*pSubresource)) }; let sub_layout = VkSubresourceLayout { @@ -1847,19 +1858,30 @@ pub extern "C" fn gfxCreateImageView( pView: *mut VkImageView, ) -> VkResult { let info = unsafe { &*pCreateInfo }; + if let Image::SwapchainFrame { swapchain, frame } = *info.image { + unsafe { + *pView = Handle::new(ImageView::SwapchainFrame { + swapchain, + frame, + }); + } + return VkResult::VK_SUCCESS; + } + + let img = info.image.to_native().unwrap(); let view = unsafe { gpu.device.create_image_view( - &info.image.raw, + img.raw, conv::map_view_kind(info.viewType), conv::map_format(info.format).unwrap(), conv::map_swizzle(info.components), - info.image.map_subresource_range(info.subresourceRange), + img.map_subresource_range(info.subresourceRange), ) }; match view { Ok(view) => { - unsafe { *pView = Handle::new(view) }; + unsafe { *pView = Handle::new(ImageView::Native(view)) }; VkResult::VK_SUCCESS } Err(err) => panic!("Unexpected image view creation error: {:?}", err), @@ -1871,7 +1893,7 @@ pub extern "C" fn gfxDestroyImageView( imageView: VkImageView, _pAllocator: *const VkAllocationCallbacks, ) { - if let Some(view) = imageView.unbox() { + if let Some(ImageView::Native(view)) = imageView.unbox() { unsafe { gpu.device.destroy_image_view(view); } @@ -2902,8 +2924,7 @@ pub extern "C" fn gfxAllocateDescriptorSets( } error!("{:?}", e); match e { - pso::AllocationError::Host => VkResult::VK_ERROR_OUT_OF_HOST_MEMORY, - pso::AllocationError::Device => VkResult::VK_ERROR_OUT_OF_DEVICE_MEMORY, + pso::AllocationError::OutOfMemory(oom) => map_oom(oom), pso::AllocationError::OutOfPoolMemory => VkResult::VK_ERROR_OUT_OF_POOL_MEMORY_KHR, pso::AllocationError::IncompatibleLayout => VkResult::VK_ERROR_DEVICE_LOST, pso::AllocationError::FragmentedPool => VkResult::VK_ERROR_FRAGMENTED_POOL, @@ -2950,7 +2971,7 @@ impl<'a> Iterator for DescriptorIter<'a> { ty: pso::ImageDescriptorType::Sampled { with_sampler: true }, } => self.image_infos.next().map(|image| { pso::Descriptor::CombinedImageSampler( - &*image.imageView, + image.imageView.to_native().unwrap(), conv::map_image_layout(image.imageLayout), &*image.sampler, ) @@ -2959,7 +2980,7 @@ impl<'a> Iterator for DescriptorIter<'a> { pso::DescriptorType::InputAttachment | pso::DescriptorType::Image { .. } => { self.image_infos.next().map(|image| { pso::Descriptor::Image( - &*image.imageView, + image.imageView.to_native().unwrap(), conv::map_image_layout(image.imageLayout), ) }) @@ -3047,27 +3068,37 @@ pub extern "C" fn gfxCreateFramebuffer( pFramebuffer: *mut VkFramebuffer, ) -> VkResult { let info = unsafe { &*pCreateInfo }; - - let attachments_slice = - unsafe { slice::from_raw_parts(info.pAttachments, info.attachmentCount as _) }; - let attachments = attachments_slice - .into_iter() - .map(|attachment| &**attachment); - let extent = hal::image::Extent { width: info.width, height: info.height, depth: info.layers, }; - unsafe { - let framebuffer = gpu - .device - .create_framebuffer(&*info.renderPass, attachments, extent) - .unwrap(); - *pFramebuffer = Handle::new(framebuffer); - } + let attachments_slice = + unsafe { slice::from_raw_parts(info.pAttachments, info.attachmentCount as _) }; + let framebuffer = if attachments_slice.iter().any(|attachment| match **attachment { + ImageView::Native(_) => false, + ImageView::SwapchainFrame { .. } => true, + }) { + Framebuffer::Lazy { + extent, + views: attachments_slice.to_vec(), + } + } else { + let attachments = attachments_slice + .iter() + .map(|attachment| attachment.to_native().unwrap()); + Framebuffer::Native(unsafe { + gpu + .device + .create_framebuffer(&*info.renderPass, attachments, extent) + .unwrap() + }) + }; + unsafe { + *pFramebuffer = Handle::new(framebuffer) + }; VkResult::VK_SUCCESS } #[inline] @@ -3077,8 +3108,11 @@ pub extern "C" fn gfxDestroyFramebuffer( _pAllocator: *const VkAllocationCallbacks, ) { if let Some(fbo) = framebuffer.unbox() { - unsafe { - gpu.device.destroy_framebuffer(fbo); + match fbo { + Framebuffer::Native(raw) => unsafe { + gpu.device.destroy_framebuffer(raw); + }, + Framebuffer::Lazy { .. } => {} } } } @@ -3236,7 +3270,7 @@ pub extern "C" fn gfxCreateRenderPass( gpu.device .create_render_pass(attachments, subpasses, dependencies) } { - Ok(pass) => pass, + Ok(raw) => raw, Err(oom) => return map_oom(oom), }; @@ -3384,11 +3418,11 @@ pub extern "C" fn gfxBeginCommandBuffer( let info = unsafe { &*pBeginInfo }; let inheritance = match unsafe { info.pInheritanceInfo.as_ref() } { Some(ii) => com::CommandBufferInheritanceInfo { - subpass: ii.renderPass.as_ref().map(|main_pass| pass::Subpass { - main_pass, + subpass: ii.renderPass.as_ref().map(|rp| pass::Subpass { + main_pass: &*rp, index: ii.subpass as _, }), - framebuffer: ii.framebuffer.as_ref(), + framebuffer: ii.framebuffer.as_ref().map(|fbo| fbo.resolve(ii.renderPass)), occlusion_query_enable: ii.occlusionQueryEnable != VK_FALSE, occlusion_query_flags: conv::map_query_control(ii.queryFlags), pipeline_statistics: conv::map_pipeline_statistics(ii.pipelineStatistics), @@ -3713,21 +3747,36 @@ pub extern "C" fn gfxCmdCopyImage( regionCount: u32, pRegions: *const VkImageCopy, ) { + let src = match srcImage.to_native() { + Ok(img) => img, + Err(_) => { + warn!("Unable to copy from a swapchain image!"); + return; + } + }; + let dst = match dstImage.to_native() { + Ok(img) => img, + Err(_) => { + warn!("Unable to copy into a swapchain image!"); + return; + } + }; + let regions = unsafe { slice::from_raw_parts(pRegions, regionCount as _) } .iter() .map(|r| com::ImageCopy { - src_subresource: srcImage.map_subresource_layers(r.srcSubresource), + src_subresource: src.map_subresource_layers(r.srcSubresource), src_offset: conv::map_offset(r.srcOffset), - dst_subresource: dstImage.map_subresource_layers(r.dstSubresource), + dst_subresource: dst.map_subresource_layers(r.dstSubresource), dst_offset: conv::map_offset(r.dstOffset), extent: conv::map_extent(r.extent), }); unsafe { commandBuffer.copy_image( - &srcImage.raw, + src.raw, conv::map_image_layout(srcImageLayout), - &dstImage.raw, + dst.raw, conv::map_image_layout(dstImageLayout), regions, ); @@ -3744,20 +3793,23 @@ pub extern "C" fn gfxCmdBlitImage( pRegions: *const VkImageBlit, filter: VkFilter, ) { + let src = srcImage.to_native().unwrap(); + let dst = dstImage.to_native().unwrap(); + let regions = unsafe { slice::from_raw_parts(pRegions, regionCount as _) } .iter() .map(|r| com::ImageBlit { - src_subresource: srcImage.map_subresource_layers(r.srcSubresource), + src_subresource: src.map_subresource_layers(r.srcSubresource), src_bounds: conv::map_offset(r.srcOffsets[0])..conv::map_offset(r.srcOffsets[1]), - dst_subresource: dstImage.map_subresource_layers(r.dstSubresource), + dst_subresource: dst.map_subresource_layers(r.dstSubresource), dst_bounds: conv::map_offset(r.dstOffsets[0])..conv::map_offset(r.dstOffsets[1]), }); unsafe { commandBuffer.blit_image( - &srcImage.raw, + src.raw, conv::map_image_layout(srcImageLayout), - &dstImage.raw, + dst.raw, conv::map_image_layout(dstImageLayout), conv::map_filter(filter), regions, @@ -3773,13 +3825,15 @@ pub extern "C" fn gfxCmdCopyBufferToImage( regionCount: u32, pRegions: *const VkBufferImageCopy, ) { + let dst = dstImage.to_native().unwrap(); + let regions = unsafe { slice::from_raw_parts(pRegions, regionCount as _) } .iter() .map(|r| com::BufferImageCopy { buffer_offset: r.bufferOffset, buffer_width: r.bufferRowLength, buffer_height: r.bufferImageHeight, - image_layers: dstImage.map_subresource_layers(r.imageSubresource), + image_layers: dst.map_subresource_layers(r.imageSubresource), image_offset: conv::map_offset(r.imageOffset), image_extent: conv::map_extent(r.imageExtent), }); @@ -3787,7 +3841,7 @@ pub extern "C" fn gfxCmdCopyBufferToImage( unsafe { commandBuffer.copy_buffer_to_image( &*srcBuffer, - &dstImage.raw, + dst.raw, conv::map_image_layout(dstImageLayout), regions, ); @@ -3802,20 +3856,22 @@ pub extern "C" fn gfxCmdCopyImageToBuffer( regionCount: u32, pRegions: *const VkBufferImageCopy, ) { + let src = srcImage.to_native().unwrap(); + let regions = unsafe { slice::from_raw_parts(pRegions, regionCount as _) } .iter() .map(|r| com::BufferImageCopy { buffer_offset: r.bufferOffset, buffer_width: r.bufferRowLength, buffer_height: r.bufferImageHeight, - image_layers: srcImage.map_subresource_layers(r.imageSubresource), + image_layers: src.map_subresource_layers(r.imageSubresource), image_offset: conv::map_offset(r.imageOffset), image_extent: conv::map_extent(r.imageExtent), }); unsafe { commandBuffer.copy_image_to_buffer( - &srcImage.raw, + src.raw, conv::map_image_layout(srcImageLayout), &*dstBuffer, regions, @@ -3863,13 +3919,21 @@ pub extern "C" fn gfxCmdClearColorImage( rangeCount: u32, pRanges: *const VkImageSubresourceRange, ) { + let img = match image.to_native() { + Ok(img) => img, + Err(_) => { + warn!("Unable to clear a swapchain image!"); + return; + } + }; let subresource_ranges = unsafe { slice::from_raw_parts(pRanges, rangeCount as _) } + .iter() - .map(|&range| image.map_subresource_range(range)); + .map(|&range| img.map_subresource_range(range)); unsafe { commandBuffer.clear_image( - &image.raw, + img.raw, conv::map_image_layout(imageLayout), com::ClearValue { color: mem::transmute(*pColor), @@ -3887,13 +3951,14 @@ pub extern "C" fn gfxCmdClearDepthStencilImage( rangeCount: u32, pRanges: *const VkImageSubresourceRange, ) { + let img = image.to_native().unwrap(); let subresource_ranges = unsafe { slice::from_raw_parts(pRanges, rangeCount as _) } .iter() - .map(|&range| image.map_subresource_range(range)); + .map(|&range| img.map_subresource_range(range)); unsafe { commandBuffer.clear_image( - &image.raw, + img.raw, conv::map_image_layout(imageLayout), com::ClearValue { depth_stencil: mem::transmute(*pDepthStencil), @@ -3955,22 +4020,25 @@ pub extern "C" fn gfxCmdResolveImage( regionCount: u32, pRegions: *const VkImageResolve, ) { + let src = srcImage.to_native().unwrap(); + let dst = dstImage.to_native().unwrap(); + let regions = unsafe { slice::from_raw_parts(pRegions, regionCount as _) } .iter() .cloned() .map(|resolve| com::ImageResolve { - src_subresource: srcImage.map_subresource_layers(resolve.srcSubresource), + src_subresource: src.map_subresource_layers(resolve.srcSubresource), src_offset: conv::map_offset(resolve.srcOffset), - dst_subresource: srcImage.map_subresource_layers(resolve.dstSubresource), + dst_subresource: dst.map_subresource_layers(resolve.dstSubresource), dst_offset: conv::map_offset(resolve.dstOffset), extent: conv::map_extent(resolve.extent), }); unsafe { commandBuffer.resolve_image( - &srcImage.raw, + src.raw, conv::map_image_layout(srcImageLayout), - &dstImage.raw, + dst.raw, conv::map_image_layout(dstImageLayout), regions, ); @@ -4028,18 +4096,22 @@ fn make_barriers<'a>( size: if b.size as i32 == VK_WHOLE_SIZE { None } else { Some(b.size) }, }, }); - let images = raw_images.iter().map(|b| memory::Barrier::Image { - states: ( + let images = raw_images.iter().map(|b| { + let img = b.image.to_native().unwrap(); + let from = ( conv::map_image_access(b.srcAccessMask), conv::map_image_layout(b.oldLayout), - ) - ..( - conv::map_image_access(b.dstAccessMask), - conv::map_image_layout(b.newLayout), - ), - target: &b.image.raw, - range: b.image.map_subresource_range(b.subresourceRange), - families: None, + ); + let to = ( + conv::map_image_access(b.dstAccessMask), + conv::map_image_layout(b.newLayout), + ); + memory::Barrier::Image { + states: from .. to, + target: img.raw, + range: img.map_subresource_range(b.subresourceRange), + families: None, + } }); globals.chain(buffers).chain(images) @@ -4235,11 +4307,12 @@ pub extern "C" fn gfxCmdBeginRenderPass( }) }; let contents = conv::map_subpass_contents(contents); + let framebuffer = info.framebuffer.resolve(info.renderPass); unsafe { commandBuffer.begin_render_pass( &*info.renderPass, - &*info.framebuffer, + framebuffer, render_area, clear_values, contents, @@ -4322,7 +4395,8 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfaceCapabilitiesKHR( as _, currentTransform: VkSurfaceTransformFlagBitsKHR::VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR, supportedCompositeAlpha: caps.composite_alpha_modes.bits(), - supportedUsageFlags: conv::map_image_usage_from_hal(caps.usage), + // Ignoring `caps.usage` since we only work with the new swapchain model here. + supportedUsageFlags: VkImageUsageFlagBits::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT as _, }; unsafe { *pSurfaceCapabilities = output }; @@ -4422,6 +4496,10 @@ pub extern "C" fn gfxCreateSwapchainKHR( VkSharingMode::VK_SHARING_MODE_EXCLUSIVE ); // TODO + if info.imageUsage != VkImageUsageFlagBits::VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT as _ { + warn!("Unsupported swapchain usage: {:?}", info.imageUsage); + } + let config = hal::window::SwapchainConfig { present_mode: conv::map_present_mode(info.presentMode), composite_alpha_mode: conv::map_composite_alpha(info.compositeAlpha), @@ -4429,73 +4507,52 @@ pub extern "C" fn gfxCreateSwapchainKHR( extent: conv::map_extent2d(info.imageExtent), image_count: info.minImageCount, image_layers: 1, - image_usage: conv::map_image_usage(info.imageUsage), + image_usage: hal::image::Usage::COLOR_ATTACHMENT, }; - #[allow(unused_mut)] // Metal branch performs mutation. - let (mut swapchain, backbuffers) = match unsafe { - gpu.device.create_swapchain( - &mut info.surface.clone(), - config, - info.oldSwapchain.as_mut().and_then(|s| s.raw.take()), //Note: no unboxing! - ) + match unsafe { + info.surface + .as_mut() + .unwrap() + .configure_swapchain(&gpu.device, config) } { - Ok(pair) => pair, - Err(hal::window::CreationError::OutOfMemory(oom)) => return map_oom(oom), - Err(hal::window::CreationError::DeviceLost(hal::device::DeviceLost)) => { - return VkResult::VK_ERROR_DEVICE_LOST - } - Err(hal::window::CreationError::SurfaceLost(hal::device::SurfaceLost)) => { - return VkResult::VK_ERROR_SURFACE_LOST_KHR - } - Err(hal::window::CreationError::WindowInUse(hal::device::WindowInUse)) => { - return VkResult::VK_ERROR_NATIVE_WINDOW_IN_USE_KHR - } - }; - - #[cfg(feature = "gfx-backend-metal")] - { - use back::AcquireMode; - - if let Ok(value) = env::var("GFX_METAL_ACQUIRING") { - swapchain.acquire_mode = match value.to_lowercase().as_str() { - "wait" => AcquireMode::Wait, - "oldest" => AcquireMode::Oldest, - other => panic!("unknown acquiring option: {}", other), + Ok(()) => { + let swapchain = Swapchain { + gpu, + surface: info.surface, + count: info.minImageCount as u8, + current_index: 0, + active: None, + lazy_framebuffers: Vec::with_capacity(1), }; - println!("GFX: acquiring override {:?}", swapchain.acquire_mode); + unsafe { *pSwapchain = Handle::new(swapchain) }; + VkResult::VK_SUCCESS + } + Err(err) => { + use hal::window::CreationError as Ce; + match err { + Ce::OutOfMemory(oom) => map_oom(oom), + Ce::DeviceLost(hal::device::DeviceLost) => + VkResult::VK_ERROR_DEVICE_LOST, + Ce::SurfaceLost(hal::device::SurfaceLost) => + VkResult::VK_ERROR_SURFACE_LOST_KHR, + Ce::WindowInUse(hal::device::WindowInUse) => + VkResult::VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, + } } } - - let images = backbuffers - .into_iter() - .map(|raw| { - Handle::new(Image { - raw, - mip_levels: 1, - array_layers: 1, - }) - }) - .collect(); - - let swapchain = Swapchain { - raw: Some(swapchain), - images, - }; - - unsafe { *pSwapchain = Handle::new(swapchain) }; - VkResult::VK_SUCCESS } #[inline] pub extern "C" fn gfxDestroySwapchainKHR( - _gpu: VkDevice, - mut swapchain: VkSwapchainKHR, + gpu: VkDevice, + swapchain: VkSwapchainKHR, _pAllocator: *const VkAllocationCallbacks, ) { - for image in &mut swapchain.images { - let _ = image.unbox(); + if let Some(mut sc) = swapchain.unbox() { + unsafe { + sc.surface.unconfigure_swapchain(&gpu.device) + }; } - let _ = swapchain.unbox(); } #[inline] pub extern "C" fn gfxGetSwapchainImagesKHR( @@ -4507,18 +4564,21 @@ pub extern "C" fn gfxGetSwapchainImagesKHR( debug_assert!(!pSwapchainImageCount.is_null()); let swapchain_image_count = unsafe { &mut *pSwapchainImageCount }; - let available_images = swapchain.images.len() as u32; + let available_images = swapchain.count as u32; if pSwapchainImages.is_null() { // If NULL the number of presentable images is returned. *swapchain_image_count = available_images; } else { *swapchain_image_count = available_images.min(*swapchain_image_count); - let swapchain_images = - unsafe { slice::from_raw_parts_mut(pSwapchainImages, *swapchain_image_count as _) }; - for i in 0..*swapchain_image_count as _ { - swapchain_images[i] = swapchain.images[i]; + for frame in 0 .. *swapchain_image_count as u8 { + unsafe { + *pSwapchainImages.offset(frame as isize) = Handle::new(Image::SwapchainFrame { + swapchain, + frame, + }); + }; } if *swapchain_image_count < available_images { @@ -4744,36 +4804,41 @@ pub extern "C" fn gfxCreateXcbSurfaceKHR( } #[inline] pub extern "C" fn gfxAcquireNextImageKHR( - _device: VkDevice, + gpu: VkDevice, mut swapchain: VkSwapchainKHR, timeout: u64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: *mut u32, ) -> VkResult { - let raw = match swapchain.raw { - Some(ref mut raw) => raw, - None => return VkResult::VK_ERROR_OUT_OF_DATE_KHR, - }; - - use hal::device::OutOfMemory::{Device, Host}; + if let Some(fence) = fence.as_ref() { + let _ = unsafe { gpu.device.reset_fences(std::iter::once(&*fence)) }; + } + if let Some(sem) = semaphore.as_mut() { + sem.is_fake = true; + } - match unsafe { raw.acquire_image(timeout, semaphore.as_ref(), fence.as_ref()) } { - Ok(frame) => { + if let Some(_old_frame) = swapchain.active.take() { + warn!("Swapchain frame {} was not presented!", swapchain.current_index); + } + match unsafe { swapchain.surface.acquire_image(timeout) } { + Ok((frame, suboptimal)) => { + swapchain.current_index = (swapchain.current_index + 1) % swapchain.count; + swapchain.active = Some(frame); unsafe { - *pImageIndex = frame.0; + *pImageIndex = swapchain.current_index as u32; + } + match suboptimal { + Some(_) => VkResult::VK_SUBOPTIMAL_KHR, + None => VkResult::VK_SUCCESS, } - VkResult::VK_SUCCESS } Err(hal::window::AcquireError::NotReady) => VkResult::VK_NOT_READY, Err(hal::window::AcquireError::OutOfDate) => VkResult::VK_ERROR_OUT_OF_DATE_KHR, Err(hal::window::AcquireError::SurfaceLost(_)) => VkResult::VK_ERROR_SURFACE_LOST_KHR, Err(hal::window::AcquireError::DeviceLost(_)) => VkResult::VK_ERROR_DEVICE_LOST, Err(hal::window::AcquireError::Timeout) => VkResult::VK_TIMEOUT, - Err(hal::window::AcquireError::OutOfMemory(Device)) => { - VkResult::VK_ERROR_OUT_OF_DEVICE_MEMORY - } - Err(hal::window::AcquireError::OutOfMemory(Host)) => VkResult::VK_ERROR_OUT_OF_HOST_MEMORY, + Err(hal::window::AcquireError::OutOfMemory(oom)) => map_oom(oom), } } #[inline] @@ -4787,21 +4852,34 @@ pub extern "C" fn gfxQueuePresentKHR( unsafe { slice::from_raw_parts(info.pSwapchains, info.swapchainCount as _) }; let index_slice = unsafe { slice::from_raw_parts(info.pImageIndices, info.swapchainCount as _) }; - let swapchains = swapchain_slice - .into_iter() - .zip(index_slice) - .map(|(swapchain, index)| (swapchain.raw.as_ref().unwrap(), *index)); - let wait_semaphores = unsafe { slice::from_raw_parts(info.pWaitSemaphores, info.waitSemaphoreCount as _) - .into_iter() - .map(|semaphore| &**semaphore) }; - - match unsafe { queue.present(swapchains, wait_semaphores) } { - Ok(_) => VkResult::VK_SUCCESS, - Err(_) => VkResult::VK_ERROR_SURFACE_LOST_KHR, + if wait_semaphores.len() > 1 { + warn!("Only one semaphore is supported for present, {} are given", wait_semaphores.len()); + } + + for (swapchain, index) in swapchain_slice.iter().zip(index_slice) { + let sc = swapchain.as_mut().unwrap(); + let frame = sc.active.take().expect("Frame was not acquired properly!"); + if sc.current_index == *index as u8 { + let sem = wait_semaphores.first().map(|s| &s.raw); + if let Err(_) = unsafe { + queue.present_surface(&mut *sc.surface, frame, sem) + } { + return VkResult::VK_ERROR_SURFACE_LOST_KHR; + } + } else { + warn!("Swapchain frame {} is stale, can't be presented.", *index); + } + for framebuffer in sc.lazy_framebuffers.drain(..) { + unsafe { + sc.gpu.device.destroy_framebuffer(framebuffer) + }; + } } + + VkResult::VK_SUCCESS } #[inline] diff --git a/libportability-gfx/src/lib.rs b/libportability-gfx/src/lib.rs index a6ebecd..ffef0cf 100644 --- a/libportability-gfx/src/lib.rs +++ b/libportability-gfx/src/lib.rs @@ -63,13 +63,13 @@ pub type VkSampler = Handle<::Sampler>; pub type VkBufferView = Handle<::BufferView>; pub type VkShaderModule = Handle<::ShaderModule>; pub type VkImage = Handle>; -pub type VkImageView = Handle<::ImageView>; +pub type VkImageView = Handle; pub type VkBuffer = Handle<::Buffer>; -pub type VkSemaphore = Handle<::Semaphore>; +pub type VkSemaphore = Handle>; pub type VkEvent = Handle<::Event>; pub type VkFence = Handle<::Fence>; pub type VkRenderPass = Handle<::RenderPass>; -pub type VkFramebuffer = Handle<::Framebuffer>; +pub type VkFramebuffer = Handle; pub type VkPipeline = Handle>; pub type VkPipelineCache = Handle<::PipelineCache>; pub type VkQueryPool = Handle<::QueryPool>; @@ -103,13 +103,38 @@ pub enum Pipeline { Compute(B::ComputePipeline), } -pub struct Image { - raw: B::Image, +pub enum Image { + Native { + raw: B::Image, + mip_levels: u32, + array_layers: u32, + }, + SwapchainFrame { + swapchain: VkSwapchainKHR, + frame: u8, + }, +} + +#[derive(Debug)] +struct UnexpectedSwapchainImage; + +impl Image { + fn to_native(&self) -> Result, UnexpectedSwapchainImage> { + match *self { + Image::Native { ref raw, mip_levels, array_layers } => + Ok(NativeImage { raw, mip_levels, array_layers }), + Image::SwapchainFrame { .. } => Err(UnexpectedSwapchainImage), + } + } +} + +struct NativeImage<'a, B: hal::Backend> { + raw: &'a B::Image, mip_levels: u32, array_layers: u32, } -impl Image { +impl NativeImage<'_, B> { fn map_subresource(&self, subresource: VkImageSubresource) -> hal::image::Subresource { hal::image::Subresource { aspects: conv::map_aspect(subresource.aspectMask), @@ -156,6 +181,76 @@ impl Image { } } +pub enum ImageView { + Native(::ImageView), + SwapchainFrame { + swapchain: VkSwapchainKHR, + frame: u8, + }, +} + +impl ImageView { + fn to_native(&self) -> Result<&::ImageView, UnexpectedSwapchainImage> { + match *self { + ImageView::Native(ref raw) => Ok(raw), + ImageView::SwapchainFrame {..} => Err(UnexpectedSwapchainImage), + } + } +} + +pub enum Framebuffer { + Native(::Framebuffer), + Lazy { + extent: hal::image::Extent, + views: Vec, + }, +} + +impl Framebuffer { + fn resolve(&self, render_pass: VkRenderPass) -> &::Framebuffer { + let mut sc = None; + match *self { + Framebuffer::Native(ref fbo) => fbo, + Framebuffer::Lazy { extent, ref views } => { + for view in views { + if let Some(&mut ImageView::SwapchainFrame { ref swapchain, .. }) = view.as_mut() { + assert!(sc.is_none()); + sc = Some(swapchain.as_mut().unwrap()); + } + } + let attachments = views + .iter() + .map(|view| match **view { + ImageView::Native(ref raw) => raw, + ImageView::SwapchainFrame { ref swapchain, frame } => { + use std::borrow::Borrow; + debug_assert_eq!(frame, swapchain.current_index); + swapchain.active + .as_ref() + .expect("Swapchain frame isn't acquired") + .borrow() + }, + }); + + let sc = sc.expect("No swapchain frames detected"); + let gpu = sc.gpu; + sc.lazy_framebuffers.push(unsafe { + use hal::device::Device; + gpu.device + .create_framebuffer(&*render_pass, attachments, extent) + .unwrap() + }); + sc.lazy_framebuffers.last().unwrap() + } + } + } +} + +pub struct Semaphore { + raw: B::Semaphore, + is_fake: bool, +} + pub struct CommandPool { pool: B::CommandPool, buffers: Vec, @@ -164,12 +259,17 @@ pub struct CommandPool { //NOTE: all *KHR types have to be pure `Handle` things for compatibility with //`VK_DEFINE_NON_DISPATCHABLE_HANDLE` used in `vulkan.h` pub type VkSurfaceKHR = Handle<::Surface>; -pub type VkSwapchainKHR = Handle; +pub type VkSwapchainKHR = Handle>; -pub struct Swapchain { - // this can become None if it was used as the "old_swapchain" - raw: Option<::Swapchain>, - images: Vec, +pub struct Swapchain { + gpu: VkDevice, + surface: VkSurfaceKHR, + count: u8, + current_index: u8, + active: Option<>::SwapchainImage>, + // This is totally unsafe: if multiple threads would start recording render passes into + // that uses this swapchain, we'd have a race condition. + lazy_framebuffers: Vec<::Framebuffer>, } /* automatically generated by rust-bindgen */ From d47e1e7acd8f0f27095ec966c16ff1eb0e6d0c57 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Fri, 3 Apr 2020 16:13:15 -0400 Subject: [PATCH 2/6] Fix push constant ranges --- libportability-gfx/src/impls.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libportability-gfx/src/impls.rs b/libportability-gfx/src/impls.rs index 1199cfd..f33687e 100644 --- a/libportability-gfx/src/impls.rs +++ b/libportability-gfx/src/impls.rs @@ -2672,10 +2672,7 @@ pub extern "C" fn gfxCreatePipelineLayout( let ranges = push_constants.iter().map(|constant| { let stages = conv::map_stage_flags(constant.stageFlags); - let start = constant.offset / 4; - let size = constant.size / 4; - - (stages, start..start + size) + (stages, constant.offset..constant.offset + constant.size) }); let pipeline_layout = match unsafe { gpu.device.create_pipeline_layout(layouts, ranges) } { From cee0c05e8feacb393a1d3c418c1343deda9da03c Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Fri, 3 Apr 2020 16:25:54 -0400 Subject: [PATCH 3/6] Fake fence semantics --- libportability-gfx/src/impls.rs | 43 ++++++++++++++++++++++----------- libportability-gfx/src/lib.rs | 7 +++++- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/libportability-gfx/src/impls.rs b/libportability-gfx/src/impls.rs index f33687e..9cc61b1 100644 --- a/libportability-gfx/src/impls.rs +++ b/libportability-gfx/src/impls.rs @@ -1197,7 +1197,7 @@ pub extern "C" fn gfxQueueSubmit( // only provide the fence for the last submission //TODO: support multiple submissions at gfx-hal level let fence = if i + 1 == submits.len() { - fence.as_ref() + fence.as_ref().map(|f| &f.raw) } else { None }; @@ -1216,7 +1216,7 @@ pub extern "C" fn gfxQueueSubmit( }; type RawSemaphore = ::Semaphore; unsafe { - queue.submit::(submission, fence.as_ref()) + queue.submit::(submission, fence.as_ref().map(|f| &f.raw)) }; } @@ -1473,7 +1473,7 @@ pub extern "C" fn gfxCreateFence( let signalled = flags & VkFenceCreateFlagBits::VK_FENCE_CREATE_SIGNALED_BIT as u32 != 0; let fence = match gpu.device.create_fence(signalled) { - Ok(f) => f, + Ok(raw) => Fence { raw, is_fake: false }, Err(oom) => return map_oom(oom), }; @@ -1491,7 +1491,7 @@ pub extern "C" fn gfxDestroyFence( ) { if let Some(fence) = fence.unbox() { unsafe { - gpu.device.destroy_fence(fence); + gpu.device.destroy_fence(fence.raw); } } } @@ -1502,7 +1502,10 @@ pub extern "C" fn gfxResetFences( pFences: *const VkFence, ) -> VkResult { let fence_slice = unsafe { slice::from_raw_parts(pFences, fenceCount as _) }; - let fences = fence_slice.into_iter().map(|fence| &**fence); + let fences = fence_slice.iter().map(|fence| { + fence.as_mut().unwrap().is_fake = false; + &fence.raw + }); match unsafe { gpu.device.reset_fences(fences) } { Ok(()) => VkResult::VK_SUCCESS, @@ -1511,10 +1514,14 @@ pub extern "C" fn gfxResetFences( } #[inline] pub extern "C" fn gfxGetFenceStatus(gpu: VkDevice, fence: VkFence) -> VkResult { - match unsafe { gpu.device.get_fence_status(&*fence) } { - Ok(true) => VkResult::VK_SUCCESS, - Ok(false) => VkResult::VK_NOT_READY, - Err(hal::device::DeviceLost) => VkResult::VK_ERROR_DEVICE_LOST, + if fence.is_fake { + VkResult::VK_SUCCESS + } else { + match unsafe { gpu.device.get_fence_status(&fence.raw) } { + Ok(true) => VkResult::VK_SUCCESS, + Ok(false) => VkResult::VK_NOT_READY, + Err(hal::device::DeviceLost) => VkResult::VK_ERROR_DEVICE_LOST, + } } } #[inline] @@ -1527,10 +1534,18 @@ pub extern "C" fn gfxWaitForFences( ) -> VkResult { let result = match fenceCount { 0 => Ok(true), - 1 => unsafe { gpu.device.wait_for_fence(&**pFences, timeout) }, + 1 if !unsafe { (*pFences) }.is_fake => { + unsafe { gpu.device.wait_for_fence(&(*pFences).raw, timeout) } + } _ => { let fence_slice = unsafe { slice::from_raw_parts(pFences, fenceCount as _) }; - let fences = fence_slice.into_iter().map(|fence| &**fence); + if fence_slice.iter().all(|fence| fence.is_fake) { + return VkResult::VK_SUCCESS + } + let fences = fence_slice + .iter() + .filter(|fence| !fence.is_fake) + .map(|fence| &fence.raw); let wait_for = match waitAll { VK_FALSE => WaitFor::Any, _ => WaitFor::All, @@ -4801,15 +4816,15 @@ pub extern "C" fn gfxCreateXcbSurfaceKHR( } #[inline] pub extern "C" fn gfxAcquireNextImageKHR( - gpu: VkDevice, + _gpu: VkDevice, mut swapchain: VkSwapchainKHR, timeout: u64, semaphore: VkSemaphore, fence: VkFence, pImageIndex: *mut u32, ) -> VkResult { - if let Some(fence) = fence.as_ref() { - let _ = unsafe { gpu.device.reset_fences(std::iter::once(&*fence)) }; + if let Some(fence) = fence.as_mut() { + fence.is_fake = true; } if let Some(sem) = semaphore.as_mut() { sem.is_fake = true; diff --git a/libportability-gfx/src/lib.rs b/libportability-gfx/src/lib.rs index ffef0cf..7daf8f3 100644 --- a/libportability-gfx/src/lib.rs +++ b/libportability-gfx/src/lib.rs @@ -67,7 +67,7 @@ pub type VkImageView = Handle; pub type VkBuffer = Handle<::Buffer>; pub type VkSemaphore = Handle>; pub type VkEvent = Handle<::Event>; -pub type VkFence = Handle<::Fence>; +pub type VkFence = Handle>; pub type VkRenderPass = Handle<::RenderPass>; pub type VkFramebuffer = Handle; pub type VkPipeline = Handle>; @@ -251,6 +251,11 @@ pub struct Semaphore { is_fake: bool, } +pub struct Fence { + raw: B::Fence, + is_fake: bool, +} + pub struct CommandPool { pool: B::CommandPool, buffers: Vec, From 5c6b34435f700697ed0c306177e4510ed5f5117a Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Fri, 3 Apr 2020 21:59:25 -0400 Subject: [PATCH 4/6] Port all the limits --- libportability-gfx/src/conv.rs | 103 ++++++++++++++++++++++++++------- 1 file changed, 83 insertions(+), 20 deletions(-) diff --git a/libportability-gfx/src/conv.rs b/libportability-gfx/src/conv.rs index 3f1ff39..477c5e5 100644 --- a/libportability-gfx/src/conv.rs +++ b/libportability-gfx/src/conv.rs @@ -14,47 +14,110 @@ pub fn limits_from_hal(limits: Limits) -> VkPhysicalDeviceLimits { maxImageDimension2D: limits.max_image_2d_size, maxImageDimension3D: limits.max_image_3d_size, maxImageDimensionCube: limits.max_image_cube_size, - maxFramebufferWidth: limits.max_framebuffer_extent.width, - maxFramebufferHeight: limits.max_framebuffer_extent.height, + maxImageArrayLayers: limits.max_image_array_layers as _, maxTexelBufferElements: limits.max_texel_elements as _, - maxTessellationPatchSize: limits.max_patch_size as _, + maxUniformBufferRange: limits.max_uniform_buffer_range as _, + maxStorageBufferRange: limits.max_storage_buffer_range as _, maxPushConstantsSize: limits.max_push_constants_size as _, - maxViewports: limits.max_viewports as _, - maxViewportDimensions: limits.max_viewport_dimensions, + maxMemoryAllocationCount: limits.max_memory_allocation_count as _, + maxSamplerAllocationCount: limits.max_sampler_allocation_count as _, + bufferImageGranularity: limits.buffer_image_granularity, + sparseAddressSpaceSize: 0, maxBoundDescriptorSets: limits.max_bound_descriptor_sets as _, + maxPerStageDescriptorSamplers: limits.max_per_stage_descriptor_samplers as _, maxPerStageDescriptorUniformBuffers: limits.max_per_stage_descriptor_uniform_buffers as _, + maxPerStageDescriptorStorageBuffers: limits.max_per_stage_descriptor_storage_buffers as _, + maxPerStageDescriptorSampledImages: limits.max_per_stage_descriptor_sampled_images as _, + maxPerStageDescriptorStorageImages: limits.max_per_stage_descriptor_storage_images as _, + maxPerStageDescriptorInputAttachments: limits.max_per_stage_descriptor_input_attachments as _, + maxPerStageResources: limits.max_per_stage_resources as _, + maxDescriptorSetSamplers: limits.max_descriptor_set_samplers as _, maxDescriptorSetUniformBuffers: limits.max_descriptor_set_uniform_buffers as _, - maxFragmentInputComponents: limits.max_fragment_input_components as _, - maxFramebufferLayers: limits.max_framebuffer_layers as _, - maxMemoryAllocationCount: limits.max_memory_allocation_count as _, - maxUniformBufferRange: limits.max_uniform_buffer_range as _, - // Warning: spec violation - // "The x/y rectangle of the viewport must lie entirely within the current attachment size." - viewportBoundsRange: [0.0, viewport_size as f32], + maxDescriptorSetUniformBuffersDynamic: limits.max_descriptor_set_uniform_buffers_dynamic.max(1) as _, + maxDescriptorSetStorageBuffers: limits.max_descriptor_set_storage_buffers as _, + maxDescriptorSetStorageBuffersDynamic: limits.max_descriptor_set_storage_buffers_dynamic.max(1) as _, + maxDescriptorSetSampledImages: limits.max_descriptor_set_sampled_images as _, + maxDescriptorSetStorageImages: limits.max_descriptor_set_storage_images as _, + maxDescriptorSetInputAttachments: limits.max_descriptor_set_input_attachments as _, maxVertexInputAttributes: limits.max_vertex_input_attributes as _, maxVertexInputBindings: limits.max_vertex_input_bindings as _, maxVertexInputAttributeOffset: limits.max_vertex_input_attribute_offset as _, maxVertexInputBindingStride: limits.max_vertex_input_binding_stride as _, maxVertexOutputComponents: limits.max_vertex_output_components as _, + maxTessellationGenerationLevel: 0, + maxTessellationPatchSize: limits.max_patch_size as _, + maxTessellationControlPerVertexInputComponents: 0, + maxTessellationControlPerVertexOutputComponents: 0, + maxTessellationControlPerPatchOutputComponents: 0, + maxTessellationControlTotalOutputComponents: 0, + maxTessellationEvaluationInputComponents: 0, + maxTessellationEvaluationOutputComponents: 0, + maxGeometryShaderInvocations: limits.max_geometry_shader_invocations as _, + maxGeometryInputComponents: limits.max_geometry_input_components as _, + maxGeometryOutputComponents: limits.max_geometry_output_components as _, + maxGeometryOutputVertices: limits.max_geometry_output_vertices as _, + maxGeometryTotalOutputComponents: limits.max_geometry_total_output_components as _, + maxFragmentInputComponents: limits.max_fragment_input_components as _, + maxFragmentOutputAttachments: limits.max_fragment_output_attachments as _, + maxFragmentDualSrcAttachments: limits.max_fragment_dual_source_attachments as _, + maxFragmentCombinedOutputResources: limits.max_fragment_combined_output_resources as _, + maxComputeSharedMemorySize: limits.max_compute_shared_memory_size as _, maxComputeWorkGroupCount: limits.max_compute_work_group_count, + maxComputeWorkGroupInvocations: limits.max_compute_work_group_invocations as _, maxComputeWorkGroupSize: limits.max_compute_work_group_size, - bufferImageGranularity: limits.buffer_image_granularity, + subPixelPrecisionBits: 0, + subTexelPrecisionBits: 0, + mipmapPrecisionBits: 0, + maxDrawIndexedIndexValue: limits.max_draw_indexed_index_value, + maxDrawIndirectCount: limits.max_draw_indirect_count, + maxSamplerLodBias: limits.max_sampler_lod_bias, + maxSamplerAnisotropy: limits.max_sampler_anisotropy, + maxViewports: limits.max_viewports as _, + maxViewportDimensions: limits.max_viewport_dimensions, + // Warning: spec violation + // "The x/y rectangle of the viewport must lie entirely within the current attachment size." + viewportBoundsRange: [0.0, viewport_size as f32], + viewportSubPixelBits: 0, + minMemoryMapAlignment: limits.min_memory_map_alignment.max(1), minTexelBufferOffsetAlignment: limits.min_texel_buffer_offset_alignment, minUniformBufferOffsetAlignment: limits.min_uniform_buffer_offset_alignment, minStorageBufferOffsetAlignment: limits.min_storage_buffer_offset_alignment, + minTexelOffset: 0, + maxTexelOffset: 0, + minTexelGatherOffset: 0, + maxTexelGatherOffset: 0, + minInterpolationOffset: 0.0, + maxInterpolationOffset: 0.0, + subPixelInterpolationOffsetBits: 0, + maxFramebufferWidth: limits.max_framebuffer_extent.width, + maxFramebufferHeight: limits.max_framebuffer_extent.height, + maxFramebufferLayers: limits.max_framebuffer_layers as _, framebufferColorSampleCounts: limits.framebuffer_color_sample_counts as _, framebufferDepthSampleCounts: limits.framebuffer_depth_sample_counts as _, framebufferStencilSampleCounts: limits.framebuffer_stencil_sample_counts as _, + framebufferNoAttachmentsSampleCounts: 0, //TODO maxColorAttachments: limits.max_color_attachments as _, - nonCoherentAtomSize: limits.non_coherent_atom_size as _, - maxSamplerAnisotropy: limits.max_sampler_anisotropy, + sampledImageColorSampleCounts: 0, + sampledImageIntegerSampleCounts: 0, + sampledImageDepthSampleCounts: 0, + sampledImageStencilSampleCounts: 0, + storageImageSampleCounts: 0, + maxSampleMaskWords: 0, + timestampComputeAndGraphics: 0, + timestampPeriod: 0.0, + maxClipDistances: 0, + maxCullDistances: 0, + maxCombinedClipAndCullDistances: 0, + discreteQueuePriorities: 0, + pointSizeRange: [0.0; 2], + lineWidthRange: [0.0; 2], + pointSizeGranularity: 0.0, + lineWidthGranularity: 0.0, + strictLines: 0, + standardSampleLocations: if limits.standard_sample_locations { VK_TRUE } else { VK_FALSE }, optimalBufferCopyOffsetAlignment: limits.optimal_buffer_copy_offset_alignment, optimalBufferCopyRowPitchAlignment: limits.optimal_buffer_copy_pitch_alignment, - maxPerStageDescriptorSampledImages: limits.max_per_stage_descriptor_sampled_images as _, - maxPerStageDescriptorSamplers: limits.max_per_stage_descriptor_samplers as _, - maxDescriptorSetSampledImages: limits.max_descriptor_set_sampled_images as _, - maxDescriptorSetSamplers: limits.max_descriptor_set_samplers as _, - ..unsafe { mem::zeroed() } //TODO + nonCoherentAtomSize: limits.non_coherent_atom_size as _, } } From 7aed54ce51fcaf288ec1f8f21234d5aa8aa2cfea Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Sat, 11 Apr 2020 00:13:42 -0400 Subject: [PATCH 5/6] Support VK_KHR_get_surface_capabilities2 --- libportability-gfx/src/impls.rs | 133 +++++++++++++++++++++++++++----- libportability-gfx/src/lib.rs | 63 ++++++++++++++- libportability/src/lib.rs | 7 ++ 3 files changed, 183 insertions(+), 20 deletions(-) diff --git a/libportability-gfx/src/impls.rs b/libportability-gfx/src/impls.rs index 9cc61b1..95b9233 100644 --- a/libportability-gfx/src/impls.rs +++ b/libportability-gfx/src/impls.rs @@ -14,13 +14,11 @@ use hal::{ use std::{ borrow::Cow, ffi::{CStr, CString}, - os::raw::c_int, + os::raw::{c_int, c_void}, mem, ptr, str, }; #[cfg(feature = "gfx-backend-metal")] use std::env; -#[cfg(feature = "renderdoc")] -use std::os::raw::c_void; use super::*; @@ -64,6 +62,16 @@ pub extern "C" fn gfxCreateInstance( #[cfg(feature = "env_logger")] { let _ = env_logger::try_init(); + let backend = if cfg!(feature = "gfx-backend-vulkan") { + "Vulkan" + } else if cfg!(feature = "gfx-backend-dx12") { + "DX12" + } else if cfg!(feature = "gfx-backend-metal") { + "Metal" + } else { + "Other" + }; + println!("gfx-portability backend: {}", backend); } #[allow(unused_mut)] @@ -275,7 +283,7 @@ pub extern "C" fn gfxGetPhysicalDeviceFeatures2KHR( other => { warn!("Unrecognized {:?}, skipping", other); unsafe { - (ptr as *const VkPhysicalDeviceFeatures2KHR) + (ptr as *const VkBaseStruct) .as_ref() .unwrap() } @@ -385,7 +393,7 @@ pub extern "C" fn gfxGetPhysicalDeviceImageFormatProperties2KHR( other => { warn!("Unrecognized {:?}, skipping", other); unsafe { - (ptr as *const VkPhysicalDeviceImageFormatInfo2KHR) + (ptr as *const VkBaseStruct) .as_ref() .unwrap() } @@ -470,7 +478,7 @@ pub extern "C" fn gfxGetPhysicalDeviceProperties2KHR( other => { warn!("Unrecognized {:?}, skipping", other); unsafe { - (ptr as *const VkPhysicalDeviceProperties2KHR).as_ref().unwrap() + (ptr as *const VkBaseStruct).as_ref().unwrap() }.pNext } } as *const VkStructureType; @@ -544,7 +552,9 @@ pub extern "C" fn gfxGetInstanceProcAddr( vkGetPhysicalDeviceSurfaceSupportKHR, PFN_vkGetPhysicalDeviceSurfaceSupportKHR => gfxGetPhysicalDeviceSurfaceSupportKHR, vkGetPhysicalDeviceSurfaceCapabilitiesKHR, PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR => gfxGetPhysicalDeviceSurfaceCapabilitiesKHR, + vkGetPhysicalDeviceSurfaceCapabilities2KHR, PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR => gfxGetPhysicalDeviceSurfaceCapabilities2KHR, vkGetPhysicalDeviceSurfaceFormatsKHR, PFN_vkGetPhysicalDeviceSurfaceFormatsKHR => gfxGetPhysicalDeviceSurfaceFormatsKHR, + vkGetPhysicalDeviceSurfaceFormats2KHR, PFN_vkGetPhysicalDeviceSurfaceFormats2KHR => gfxGetPhysicalDeviceSurfaceFormats2KHR, vkGetPhysicalDeviceSurfacePresentModesKHR, PFN_vkGetPhysicalDeviceSurfacePresentModesKHR => gfxGetPhysicalDeviceSurfacePresentModesKHR, vkGetPhysicalDeviceWin32PresentationSupportKHR, PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR => gfxGetPhysicalDeviceWin32PresentationSupportKHR, @@ -961,6 +971,7 @@ lazy_static! { #[cfg(target_os="macos")] VK_MVK_MACOS_SURFACE_EXTENSION_NAME, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME, + VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME, ] }; @@ -1272,7 +1283,7 @@ pub extern "C" fn gfxMapMemory( offset: VkDeviceSize, size: VkDeviceSize, _flags: VkMemoryMapFlags, - ppData: *mut *mut ::std::os::raw::c_void, + ppData: *mut *mut c_void, ) -> VkResult { let range = hal::memory::Segment { offset, @@ -1422,7 +1433,7 @@ pub extern "C" fn gfxGetImageMemoryRequirements2KHR( other => { warn!("Unrecognized {:?}, skipping", other); unsafe { - (ptr as *const VkMemoryRequirements2KHR).as_ref().unwrap() + (ptr as *const VkBaseStruct).as_ref().unwrap() }.pNext } } as *const VkStructureType; @@ -1691,7 +1702,7 @@ pub extern "C" fn gfxGetQueryPoolResults( firstQuery: u32, queryCount: u32, dataSize: usize, - pData: *mut ::std::os::raw::c_void, + pData: *mut c_void, stride: VkDeviceSize, flags: VkQueryResultFlags, ) -> VkResult { @@ -1988,7 +1999,7 @@ pub extern "C" fn gfxGetPipelineCacheData( _gpu: VkDevice, _pipelineCache: VkPipelineCache, pDataSize: *mut usize, - _pData: *mut ::std::os::raw::c_void, + _pData: *mut c_void, ) -> VkResult { //TODO: save unsafe { @@ -2982,11 +2993,22 @@ impl<'a> Iterator for DescriptorIter<'a> { pso::DescriptorType::Image { ty: pso::ImageDescriptorType::Sampled { with_sampler: true }, } => self.image_infos.next().map(|image| { - pso::Descriptor::CombinedImageSampler( - image.imageView.to_native().unwrap(), - conv::map_image_layout(image.imageLayout), - &*image.sampler, - ) + // It is valid for the sampler to be NULL in case the descriptor is + // actually associated with an immutable sampler. + // It's still bad to try to derefence it, even theough the implementation + // will not try to use the value. (TODO: make this nicer) + if image.sampler != Handle::null() { + pso::Descriptor::CombinedImageSampler( + image.imageView.to_native().unwrap(), + conv::map_image_layout(image.imageLayout), + &*image.sampler, + ) + } else { + pso::Descriptor::Image( + image.imageView.to_native().unwrap(), + conv::map_image_layout(image.imageLayout), + ) + } }), pso::DescriptorType::InputAttachment | pso::DescriptorType::Image { .. } => { @@ -3805,8 +3827,20 @@ pub extern "C" fn gfxCmdBlitImage( pRegions: *const VkImageBlit, filter: VkFilter, ) { - let src = srcImage.to_native().unwrap(); - let dst = dstImage.to_native().unwrap(); + let src = match srcImage.to_native() { + Ok(img) => img, + Err(_) => { + warn!("Unable to copy from a swapchain image!"); + return; + } + }; + let dst = match dstImage.to_native() { + Ok(img) => img, + Err(_) => { + warn!("Unable to copy into a swapchain image!"); + return; + } + }; let regions = unsafe { slice::from_raw_parts(pRegions, regionCount as _) } .iter() @@ -3896,7 +3930,7 @@ pub extern "C" fn gfxCmdUpdateBuffer( dstBuffer: VkBuffer, dstOffset: VkDeviceSize, dataSize: VkDeviceSize, - pData: *const ::std::os::raw::c_void, + pData: *const c_void, ) { unsafe { commandBuffer.update_buffer( @@ -4277,7 +4311,7 @@ pub extern "C" fn gfxCmdPushConstants( stageFlags: VkShaderStageFlags, offset: u32, size: u32, - pValues: *const ::std::os::raw::c_void, + pValues: *const c_void, ) { assert_eq!(size % 4, 0); unsafe { @@ -4415,6 +4449,35 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfaceCapabilitiesKHR( VkResult::VK_SUCCESS } +#[inline] +pub extern "C" fn gfxGetPhysicalDeviceSurfaceCapabilities2KHR( + adapter: VkPhysicalDevice, + pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, + pSurfaceCapabilities: *mut VkSurfaceCapabilities2KHR, +) -> VkResult { + let surface = unsafe { (*pSurfaceInfo).surface }; + let mut ptr = pSurfaceCapabilities as *const VkStructureType; + while !ptr.is_null() { + ptr = match unsafe { *ptr } { + VkStructureType::VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR => { + let data = unsafe { (ptr as *mut VkSurfaceCapabilities2KHR).as_mut().unwrap() }; + gfxGetPhysicalDeviceSurfaceCapabilitiesKHR(adapter, surface, &mut data.surfaceCapabilities); + data.pNext + } + other => { + warn!("Unrecognized {:?}, skipping", other); + unsafe { + (ptr as *const VkBaseStruct) + .as_ref() + .unwrap() + } + .pNext + } + } as *const VkStructureType; + } + VkResult::VK_SUCCESS +} + #[inline] pub extern "C" fn gfxGetPhysicalDeviceSurfaceFormatsKHR( adapter: VkPhysicalDevice, @@ -4447,6 +4510,38 @@ pub extern "C" fn gfxGetPhysicalDeviceSurfaceFormatsKHR( VkResult::VK_SUCCESS } +#[inline] +pub extern "C" fn gfxGetPhysicalDeviceSurfaceFormats2KHR( + adapter: VkPhysicalDevice, + pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, + pSurfaceFormatCount: *mut u32, + pSurfaceFormats: *mut VkSurfaceFormat2KHR, +) -> VkResult { + let formats = unsafe { (*pSurfaceInfo).surface } + .supported_formats(&adapter.physical_device) + .map(|formats| formats.into_iter().map(conv::format_from_hal).collect()) + .unwrap_or(vec![VkFormat::VK_FORMAT_UNDEFINED]); + + if pSurfaceFormats.is_null() { + // Return only the number of formats + unsafe { *pSurfaceFormatCount = formats.len() as u32 }; + } else { + let output = + unsafe { slice::from_raw_parts_mut(pSurfaceFormats, *pSurfaceFormatCount as usize) }; + if output.len() > formats.len() { + unsafe { *pSurfaceFormatCount = formats.len() as u32 }; + } + for (out, format) in output.iter_mut().zip(formats) { + out.surfaceFormat = VkSurfaceFormatKHR { + format, + colorSpace: VkColorSpaceKHR::VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, //TODO + }; + } + } + + VkResult::VK_SUCCESS +} + #[inline] pub extern "C" fn gfxGetPhysicalDeviceSurfacePresentModesKHR( adapter: VkPhysicalDevice, diff --git a/libportability-gfx/src/lib.rs b/libportability-gfx/src/lib.rs index 7daf8f3..000baf2 100644 --- a/libportability-gfx/src/lib.rs +++ b/libportability-gfx/src/lib.rs @@ -404,6 +404,10 @@ pub const VK_KHR_get_physical_device_properties2: ::std::os::raw::c_uint = 1; pub const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION: ::std::os::raw::c_uint = 1; pub const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME: &'static [u8; 39usize] = b"VK_KHR_get_physical_device_properties2\x00"; +pub const VK_KHR_get_surface_capabilities2: ::std::os::raw::c_uint = 1; +pub const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION: ::std::os::raw::c_uint = 1; +pub const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME: &'static [u8; 33usize] = + b"VK_KHR_get_surface_capabilities2\x00"; pub const VK_KHR_shader_draw_parameters: ::std::os::raw::c_uint = 1; pub const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION: ::std::os::raw::c_uint = 1; pub const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME: &'static [u8; 30usize] = @@ -866,7 +870,7 @@ pub enum VkStructureType { VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004, VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000090000, VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, @@ -1973,6 +1977,12 @@ pub type PFN_vkInternalFreeNotification = ::std::option::Option< >; pub type PFN_vkVoidFunction = ::std::option::Option; #[repr(C)] +#[derive(Debug)] +pub struct VkBaseStruct { + pub sType: VkStructureType, + pub pNext: *const ::std::os::raw::c_void, +} +#[repr(C)] #[derive(Debug, Copy)] pub struct VkApplicationInfo { pub sType: VkStructureType, @@ -4745,6 +4755,18 @@ impl Clone for VkSurfaceCapabilitiesKHR { } #[repr(C)] #[derive(Debug, Copy)] +pub struct VkSurfaceCapabilities2KHR { + pub sType: VkStructureType, + pub pNext: *const ::std::os::raw::c_void, + pub surfaceCapabilities: VkSurfaceCapabilitiesKHR, +} +impl Clone for VkSurfaceCapabilities2KHR { + fn clone(&self) -> Self { + *self + } +} +#[repr(C)] +#[derive(Debug, Copy)] pub struct VkSurfaceFormatKHR { pub format: VkFormat, pub colorSpace: VkColorSpaceKHR, @@ -4754,6 +4776,30 @@ impl Clone for VkSurfaceFormatKHR { *self } } +#[repr(C)] +#[derive(Debug, Copy)] +pub struct VkSurfaceFormat2KHR { + pub sType: VkStructureType, + pub pNext: *const ::std::os::raw::c_void, + pub surfaceFormat: VkSurfaceFormatKHR, +} +impl Clone for VkSurfaceFormat2KHR { + fn clone(&self) -> Self { + *self + } +} +#[repr(C)] +#[derive(Debug, Copy)] +pub struct VkPhysicalDeviceSurfaceInfo2KHR { + pub sType: VkStructureType, + pub pNext: *const ::std::os::raw::c_void, + pub surface: VkSurfaceKHR, +} +impl Clone for VkPhysicalDeviceSurfaceInfo2KHR { + fn clone(&self) -> Self { + *self + } +} pub type PFN_vkDestroySurfaceKHR = ::std::option::Option< unsafe extern "C" fn( instance: VkInstance, @@ -4776,6 +4822,13 @@ pub type PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = ::std::option::Option< pSurfaceCapabilities: *mut VkSurfaceCapabilitiesKHR, ) -> VkResult, >; +pub type PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = ::std::option::Option< + unsafe extern "C" fn( + physicalDevice: VkPhysicalDevice, + pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, + pSurfaceCapabilities: *mut VkSurfaceCapabilities2KHR, + ) -> VkResult, +>; pub type PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = ::std::option::Option< unsafe extern "C" fn( physicalDevice: VkPhysicalDevice, @@ -4784,6 +4837,14 @@ pub type PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = ::std::option::Option< pSurfaceFormats: *mut VkSurfaceFormatKHR, ) -> VkResult, >; +pub type PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = ::std::option::Option< + unsafe extern "C" fn( + physicalDevice: VkPhysicalDevice, + pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, + pSurfaceFormatCount: *mut u32, + pSurfaceFormats: *mut VkSurfaceFormat2KHR, + ) -> VkResult, +>; pub type PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = ::std::option::Option< unsafe extern "C" fn( physicalDevice: VkPhysicalDevice, diff --git a/libportability/src/lib.rs b/libportability/src/lib.rs index 2203088..6b21a12 100644 --- a/libportability/src/lib.rs +++ b/libportability/src/lib.rs @@ -1500,3 +1500,10 @@ pub extern "C" fn vkEnumerateInstanceExtensionProperties( ) -> VkResult { gfxEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) } + +//TODO: remove this once Dota2 stops asking for it +#[no_mangle] +pub extern "C" fn vkGetPhysicalDeviceMetalFeaturesMVK( + _adapter: VkPhysicalDevice, + _metal_features: *mut ::std::os::raw::c_void, +) {} From 0c7e6fab4feed0858928a9b9cfe31bc60e98252f Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Sat, 11 Apr 2020 00:25:18 -0400 Subject: [PATCH 6/6] Update gfx dependencies --- Cargo.lock | 505 +++++++++++++------------------- Makefile | 10 +- libportability-gfx/Cargo.toml | 12 +- libportability-gfx/src/impls.rs | 4 + libportability/Cargo.toml | 3 +- 5 files changed, 224 insertions(+), 310 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1cd2e7b..4cce395 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,10 +2,10 @@ # It is not intended for manual editing. [[package]] name = "aho-corasick" -version = "0.7.6" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -13,11 +13,6 @@ name = "android_glue" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "anyhow" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "arrayvec" version = "0.5.1" @@ -33,16 +28,17 @@ dependencies = [ [[package]] name = "atty" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "hermit-abi 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bitflags" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -52,31 +48,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "bumpalo" -version = "3.1.2" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "byteorder" -version = "1.3.2" +version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "c2-chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "cc" -version = "1.0.45" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "cfg-if" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -85,7 +72,7 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -93,7 +80,7 @@ name = "cloudabi" version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -101,11 +88,11 @@ name = "cocoa" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -113,13 +100,13 @@ name = "cocoa" version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -133,7 +120,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -142,7 +129,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "core-foundation-sys 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -150,7 +137,7 @@ name = "core-foundation-sys" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -163,10 +150,10 @@ name = "core-graphics" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -174,10 +161,10 @@ name = "core-graphics" version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-foundation 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -185,7 +172,7 @@ name = "d3d12" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -203,11 +190,11 @@ name = "env_logger" version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", + "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 1.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -228,28 +215,23 @@ name = "fxhash" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "gcc" -version = "0.3.55" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "getrandom" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-auxil" version = "0.3.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", @@ -259,9 +241,9 @@ dependencies = [ [[package]] name = "gfx-backend-dx11" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-auxil 0.3.0 (git+https://github.com/gfx-rs/gfx)", "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", "libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -269,7 +251,7 @@ dependencies = [ "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "spirv_cross 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -278,16 +260,16 @@ dependencies = [ [[package]] name = "gfx-backend-dx12" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "d3d12 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-auxil 0.3.0 (git+https://github.com/gfx-rs/gfx)", "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "spirv_cross 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -295,7 +277,7 @@ dependencies = [ [[package]] name = "gfx-backend-empty" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -304,33 +286,33 @@ dependencies = [ [[package]] name = "gfx-backend-gl" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-auxil 0.3.0 (git+https://github.com/gfx-rs/gfx)", "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", "gl_generator 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "glow 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "spirv_cross 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-backend-metal" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "cocoa 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "copyless 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -341,11 +323,11 @@ dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "metal 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "spirv_cross 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -353,29 +335,29 @@ dependencies = [ [[package]] name = "gfx-backend-vulkan" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "ash 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "gfx-hal 0.5.0 (git+https://github.com/gfx-rs/gfx)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)", + "x11 2.18.2 (registry+https://github.com/rust-lang/crates.io-index)", "xcb 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gfx-hal" version = "0.5.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -396,7 +378,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -406,7 +388,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "xml-rs 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -423,10 +405,10 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "gl_generator 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", "slotmap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -441,22 +423,22 @@ dependencies = [ "core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl_generator 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "winit 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", - "x11-dl 2.18.4 (registry+https://github.com/rust-lang/crates.io-index)", + "x11-dl 2.18.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "heck" -version = "0.3.1" +name = "hermit-abi" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -464,15 +446,15 @@ name = "humantime" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "js-sys" -version = "0.3.35" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -497,7 +479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.62" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -505,16 +487,16 @@ name = "libloading" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lock_api" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -522,7 +504,7 @@ name = "log" version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -530,7 +512,7 @@ name = "malloc_buf" version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -540,7 +522,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.2.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -548,7 +530,7 @@ name = "memmap" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -557,39 +539,30 @@ name = "metal" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "cocoa 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "nom" -version = "4.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "objc" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)", - "objc_exception 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "objc_exception 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "objc_exception" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -605,7 +578,7 @@ name = "parking_lot" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -614,11 +587,11 @@ name = "parking_lot_core" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -629,7 +602,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pkg-config" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -667,12 +640,12 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "proc-macro2" -version = "1.0.3" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -680,35 +653,35 @@ dependencies = [ [[package]] name = "quick-error" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "quote" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand_chacha" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -717,7 +690,7 @@ name = "rand_core" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", + "getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -731,14 +704,14 @@ dependencies = [ [[package]] name = "range-alloc" version = "0.1.0" -source = "git+https://github.com/gfx-rs/gfx#55d1449948f57a8fb0ebb25b567246ac6add46e8" +source = "git+https://github.com/gfx-rs/gfx#9518ef67cb347f9456a0c0d129a949554299a8f9" [[package]] name = "raw-window-handle" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -748,18 +721,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "regex" -version = "1.3.1" +version = "1.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.6.12" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -775,7 +748,7 @@ name = "renderdoc" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", "shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -785,7 +758,7 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -794,7 +767,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -804,12 +777,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "smallvec" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "sourcefile" -version = "0.1.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -817,9 +785,9 @@ name = "spirv_cross" version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -827,16 +795,16 @@ name = "storage-map" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "syn" -version = "1.0.5" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -845,9 +813,9 @@ name = "tempfile" version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -855,15 +823,15 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-util 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thread_local" -version = "0.3.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -874,97 +842,72 @@ name = "token_store" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "unicode-segmentation" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "version_check" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "wasi" -version = "0.7.0" +version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "wasm-bindgen" -version = "0.2.58" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.58" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bumpalo 3.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bumpalo 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.58" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-macro-support 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.58" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-backend 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen-shared 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.58" +version = "0.2.60" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "wasm-bindgen-webidl" -version = "0.2.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "wayland-client" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", "token_store 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-scanner 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-sys 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -975,7 +918,7 @@ name = "wayland-kbd" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "dlib 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -987,7 +930,7 @@ name = "wayland-protocols" version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-scanner 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-sys 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1023,22 +966,11 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)", - "js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", - "wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "weedle" -version = "0.10.0" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)", + "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1057,7 +989,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "winapi-util" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1068,15 +1000,6 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "wincolor" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "winit" version = "0.13.1" @@ -1087,15 +1010,15 @@ dependencies = [ "core-foundation 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "core-graphics 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-kbd 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-protocols 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-window 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", - "x11-dl 2.18.4 (registry+https://github.com/rust-lang/crates.io-index)", + "x11-dl 2.18.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1108,22 +1031,22 @@ dependencies = [ [[package]] name = "x11" -version = "2.18.1" +version = "2.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "x11-dl" -version = "2.18.4" +version = "2.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1131,7 +1054,7 @@ name = "xcb" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1140,28 +1063,26 @@ name = "xml-rs" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "xml-rs" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" +"checksum aho-corasick 0.7.10 (registry+https://github.com/rust-lang/crates.io-index)" = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada" "checksum android_glue 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" -"checksum anyhow 1.0.26 (registry+https://github.com/rust-lang/crates.io-index)" = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c" "checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" "checksum ash 0.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "69daec0742947f33a85931fa3cb0ce5f07929159dcbd1f0cbb5b2912e2978509" -"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" -"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" +"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" "checksum block 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -"checksum bumpalo 3.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5fb8038c1ddc0a5f73787b130f4cc75151e96ed33e417fde765eb5a81e3532f4" -"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" -"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" -"checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" -"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" +"checksum bumpalo 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "12ae9db68ad7fac5fe51304d20f016c911539251075a214f8e663babefa35187" +"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd" +"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" "checksum cgl 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "55e7ec0b74fe5897894cbc207092c577e87c52f8a59e8ca8d97ef37551f60a49" "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum cocoa 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b0c23085dde1ef4429df6e5896b89356d35cdd321fb43afe3e378d010bb5adc6" @@ -1179,8 +1100,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" "checksum fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" -"checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" +"checksum getrandom 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" "checksum gfx-auxil 0.3.0 (git+https://github.com/gfx-rs/gfx)" = "" "checksum gfx-backend-dx11 0.5.0 (git+https://github.com/gfx-rs/gfx)" = "" "checksum gfx-backend-dx12 0.5.0 (git+https://github.com/gfx-rs/gfx)" = "" @@ -1195,84 +1115,77 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum gleam 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "cae10d7c99d0e77b4766e850a60898a17c1abaf01075531f1066f03dc7dc5fc5" "checksum glow 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31aed196700daf16e1241d819ff4a4855a78ee0cddb051948d50b9213deec82f" "checksum glutin 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9caee44b73388b2b4452ab783b13a1af80edb363bfc6e5292bdb2dd990a3171" -"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +"checksum hermit-abi 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "725cf19794cf90aa94e65050cb4191ff5d8fa87a498383774c47b332e3af952e" "checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -"checksum js-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "7889c7c36282151f6bf465be4700359318aef36baa951462382eae49e9577cf9" +"checksum js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "6a27d435371a2fa5b6d2b028a74bbdb1234f308da363226a2854ca3ff8ba7055" "checksum khronos_api 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "037ab472c33f67b5fbd3e9163a2645319e5356fcd355efa6d4eb7fff4bbcb554" "checksum khronos_api 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" +"checksum libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "dea0c0405123bba743ee3f91f49b1c7cfb684eef0da0a50110f758ccf24cdff0" "checksum libloading 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" -"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" +"checksum lock_api 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b" "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" "checksum malloc_buf 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" "checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" "checksum memmap 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2ffa2c986de11a9df78620c01eeaaf27d94d3ff02bf81bfcca953102dd0c6ff" "checksum metal 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e198a0ee42bdbe9ef2c09d0b9426f3b2b47d90d93a4a9b0395c4cea605e92dc0" -"checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" -"checksum objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "31d20fd2b37e07cf5125be68357b588672e8cefe9a96f8c17a9d46053b3e590d" -"checksum objc_exception 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "098cd29a2fa3c230d3463ae069cecccc3fdfd64c0d2496ab5b96f82dab6a00dc" +"checksum objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +"checksum objc_exception 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" "checksum osmesa-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" "checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" "checksum parking_lot_core 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7582838484df45743c8434fbff785e8edf260c28748353d44bc0da32e0ceabf1" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" -"checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" -"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" -"checksum proc-macro2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e98a83a9f9b331f54b924e68a66acb1bb35cb01fb0a23645139967abefb697e8" -"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" -"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" -"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" -"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" +"checksum pkg-config 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677" +"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" +"checksum proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "df246d292ff63439fea9bc8c0a270bed0e390d5ebd4db4ba15aba81111b5abe3" +"checksum quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +"checksum quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f" +"checksum rand 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +"checksum rand_chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" "checksum range-alloc 0.1.0 (git+https://github.com/gfx-rs/gfx)" = "" "checksum raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" -"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" -"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" +"checksum regex 1.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7f6946991529684867e47d86474e3a6d0c0ab9b82d5821e314b1ede31fa3a4b3" +"checksum regex-syntax 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum renderdoc 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3aee9badfb4078c375d2d0479ed29c9c057b51ade78f94792ba2dcb11f343e7e" -"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" +"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" "checksum shared_library 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" "checksum slotmap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "759fd553261805f128e2900bf69ab3d034260bc338caf7f0ee54dbf035c85acd" -"checksum smallvec 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44e59e0c9fa00817912ae6e4e6e3c4fe04455e75699d06eedc7d85917ed8e8f4" -"checksum sourcefile 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4bf77cb82ba8453b42b6ae1d692e4cdc92f9a47beaf89a847c8be83f4e328ad3" +"checksum smallvec 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5c2fb2ec9bcd216a5b0d0ccf31ab17b5ed1d627960edff65bbe95d3ce221cefc" "checksum spirv_cross 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "946216f8793f7199e3ea5b995ee8dc20a0ace1fcf46293a0ef4c17e1d046dbde" "checksum storage-map 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0a4829a5c591dc24a944a736d6b1e4053e51339a79fd5d4702c4c999a9c45e" -"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" +"checksum syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "0df0eb663f387145cab623dea85b09c2c5b4b0aef44e945d928e682fce71bb03" "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" -"checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" -"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum termcolor 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" +"checksum thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" "checksum token_store 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a686838375fc11103b9c1529c6508320b7bd5e2401cd62831ca51b3e82e61849" -"checksum unicode-segmentation 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1967f4cdfc355b37fd76d2a954fb2ed3871034eb4f26d60537d88795cfc332a9" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" -"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" -"checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" -"checksum wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "5205e9afdf42282b192e2310a5b463a6d1c1d774e30dc3c791ac37ab42d2616c" -"checksum wasm-bindgen-backend 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "11cdb95816290b525b32587d76419facd99662a07e59d3cdb560488a819d9a45" -"checksum wasm-bindgen-macro 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "574094772ce6921576fb6f2e3f7497b8a76273b6db092be18fc48a082de09dc3" -"checksum wasm-bindgen-macro-support 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "e85031354f25eaebe78bb7db1c3d86140312a911a106b2e29f9cc440ce3e7668" -"checksum wasm-bindgen-shared 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "f5e7e61fc929f4c0dddb748b102ebf9f632e2b8d739f2016542b4de2965a9601" -"checksum wasm-bindgen-webidl 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)" = "ef012a0d93fc0432df126a8eaf547b2dce25a8ce9212e1d3cbeef5c11157975d" +"checksum wasi 0.9.0+wasi-snapshot-preview1 (registry+https://github.com/rust-lang/crates.io-index)" = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +"checksum wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "2cc57ce05287f8376e998cbddfb4c8cb43b84a7ec55cf4551d7c00eef317a47f" +"checksum wasm-bindgen-backend 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d967d37bf6c16cca2973ca3af071d0a2523392e4a594548155d89a678f4237cd" +"checksum wasm-bindgen-macro 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "8bd151b63e1ea881bb742cd20e1d6127cef28399558f3b5d415289bc41eee3a4" +"checksum wasm-bindgen-macro-support 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d68a5b36eef1be7868f668632863292e37739656a80fc4b9acec7b0bd35a4931" +"checksum wasm-bindgen-shared 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "daf76fe7d25ac79748a37538b7daeed1c7a6867c92d3245c12c6222e4a20d639" "checksum wayland-client 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2b90adf943117ee4930d7944fe103dcb6f36ba05421f46521cb5adbf6bf0fbc8" "checksum wayland-kbd 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4fe0fb1c9917da9529d781659e456d84a693d74fe873d1658109758444616f76" "checksum wayland-protocols 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb5942dd2fc79d934db437c9ea3aabffceb49b546046ea453bcba531005e5537" "checksum wayland-scanner 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "dcffa55a621e6f2c3d436de64d840fc325e1d0a467b92ee5e7292e17552e08ad" "checksum wayland-sys 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "377a2f83063c463e801ca10ae8cb9666e6e597eecac0049ac36cc7b9a83b0db3" "checksum wayland-window 0.13.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e5bf431e84f0de9cd06a30b2fb9ab9458f449cb6c36277da703e979ad5c141b1" -"checksum web-sys 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "aaf97caf6aa8c2b1dac90faf0db529d9d63c93846cca4911856f78a83cebf53b" -"checksum weedle 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3bb43f70885151e629e2a19ce9e50bd730fd436cfd4b666894c9ce4de9141164" +"checksum web-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6f51648d8c56c366144378a33290049eafdd784071077f6fe37dae64c1c4cb" "checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -"checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" +"checksum winapi-util 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "fa515c5163a99cc82bab70fd3bfdd36d827be85de63737b40fcef2ce084a436e" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -"checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" "checksum winit 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3706b5ba299cc9ed06d39b8021fc5edd5a7d27d8e99355ca09636fddd9b14cc0" "checksum wio 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" -"checksum x11 2.18.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39697e3123f715483d311b5826e254b6f3cfebdd83cf7ef3358f579c3d68e235" -"checksum x11-dl 2.18.4 (registry+https://github.com/rust-lang/crates.io-index)" = "be65e1342a3baae65439cd03306778831a3d133b0d20243a7fb83fd5cf403c58" +"checksum x11 2.18.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77ecd092546cb16f25783a5451538e73afc8d32e242648d54f4ae5459ba1e773" +"checksum x11-dl 2.18.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2bf981e3a5b3301209754218f962052d4d9ee97e478f4d26d4a6eced34c1fef8" "checksum xcb 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62056f63138b39116f82a540c983cc11f1c90cd70b3d492a70c25eaa50bd22a6" "checksum xml-rs 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3c1cb601d29fe2c2ac60a2b2e5e293994d87a1f6fa9687a31a15270f909be9c2" -"checksum xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "541b12c998c5b56aa2b4e6f18f03664eef9a4fd0a246a55594efae6cc2d964b5" +"checksum xml-rs 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2bb76e5c421bbbeb8924c60c030331b345555024d56261dae8f3e786ed817c23" diff --git a/Makefile b/Makefile index b7746ae..90839c1 100644 --- a/Makefile +++ b/Makefile @@ -60,10 +60,12 @@ FULL_LIBRARY_PATH=$(CURDIR)/target/debug LIBRARY=target/debug/libportability.$(LIB_EXTENSION) LIBRARY_FAST=target/release/libportability.$(LIB_EXTENSION) -.PHONY: all rebuild debug release version-debug version-release binding run-native cts clean cherry dota-debug dota-release dota-orig dota-bench-gfx dota-bench-orig dota-bench-gl package memcpy-report +.PHONY: all dummy rebuild debug release version-debug version-release binding run-native cts clean cherry dota-debug dota-release dota-orig dota-bench-gfx dota-bench-orig dota-bench-gl package memcpy-report all: $(NATIVE_TARGET) +dummy: + rebuild: cargo build --manifest-path libportability/Cargo.toml --features $(BACKEND) @@ -117,12 +119,12 @@ binding: $(BINDING) $(BINDING): $(VULKAN_DIR)/vulkan/*.h bindgen --no-layout-tests --rustfmt-bindings $(VULKAN_DIR)/vulkan/vulkan.h -o $(BINDING) -$(LIBRARY): libportability*/src/*.rs libportability*/Cargo.toml Cargo.lock +$(LIBRARY): dummy cargo build --manifest-path libportability/Cargo.toml --features $(BACKEND) - cargo build --manifest-path libportability-icd/Cargo.toml --features $(BACKEND) + cargo build --manifest-path libportability-icd/Cargo.toml --features $(BACKEND),portability-gfx/env_logger mkdir -p target/native -$(LIBRARY_FAST): libportability*/src/*.rs libportability*/Cargo.toml Cargo.lock +$(LIBRARY_FAST): dummy cargo build --release --manifest-path libportability/Cargo.toml --features $(BACKEND) cargo build --release --manifest-path libportability-icd/Cargo.toml --features $(BACKEND) diff --git a/libportability-gfx/Cargo.toml b/libportability-gfx/Cargo.toml index 389b1b5..e25dd88 100644 --- a/libportability-gfx/Cargo.toml +++ b/libportability-gfx/Cargo.toml @@ -20,16 +20,10 @@ metal-capture = ["gfx-backend-metal/auto-capture"] [dependencies] copyless = "0.1.1" +env_logger = { version = "0.5", optional = true } lazy_static = "1" log = { version = "0.4", features = ["release_max_level_error"] } - -[dependencies.env_logger] -version = "0.5" -optional = true - -[dependencies.renderdoc] -version = "0.3" -optional = true +renderdoc = { version = "0.3", optional = true } [dependencies.hal] package = "gfx-hal" @@ -68,5 +62,5 @@ optional = true [dependencies.gfx-auxil] git = "https://github.com/gfx-rs/gfx" -# path = "../../gfx/src/auxil/auxil" +#path = "../../gfx/src/auxil/auxil" optional = true diff --git a/libportability-gfx/src/impls.rs b/libportability-gfx/src/impls.rs index 95b9233..125bb57 100644 --- a/libportability-gfx/src/impls.rs +++ b/libportability-gfx/src/impls.rs @@ -1000,6 +1000,10 @@ lazy_static! { extensionName: [0; 256], // VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME specVersion: VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION, }, + VkExtensionProperties { + extensionName: [0; 256], // VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME + specVersion: VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION, + }, ]; for (&name, extension) in INSTANCE_EXTENSION_NAMES.iter().zip(&mut extensions) { diff --git a/libportability/Cargo.toml b/libportability/Cargo.toml index 366fd0b..f3aa9d4 100644 --- a/libportability/Cargo.toml +++ b/libportability/Cargo.toml @@ -14,7 +14,8 @@ crate-type = ["cdylib"] [features] default = [] -debug = ["portability-gfx/env_logger", "portability-gfx/nightly"] +#debug = ["portability-gfx/env_logger", "portability-gfx/nightly"] +debug = ["portability-gfx/env_logger"] dx12 = ["portability-gfx/gfx-backend-dx12"] dx11 = ["portability-gfx/gfx-backend-dx11"] metal = ["portability-gfx/gfx-backend-metal"]