From 1f4d950404ae2297f2c31a387f0a070d62eed4aa Mon Sep 17 00:00:00 2001 From: Pierre Krieger Date: Sat, 20 Feb 2016 15:40:33 +0100 Subject: [PATCH] The VulkanObject trait is now unsafe --- vulkano/src/buffer.rs | 4 ++-- vulkano/src/command_buffer/pool.rs | 2 +- vulkano/src/descriptor_set.rs | 6 +++--- vulkano/src/device.rs | 4 ++-- vulkano/src/framebuffer.rs | 4 ++-- vulkano/src/image.rs | 2 +- vulkano/src/instance.rs | 4 ++-- vulkano/src/lib.rs | 10 +++++----- vulkano/src/memory/device_memory.rs | 2 +- vulkano/src/pipeline/cache.rs | 2 +- vulkano/src/pipeline/graphics_pipeline.rs | 2 +- vulkano/src/shader.rs | 2 +- vulkano/src/swapchain/mod.rs | 2 +- vulkano/src/swapchain/surface.rs | 2 +- vulkano/src/sync.rs | 6 +++--- 15 files changed, 27 insertions(+), 27 deletions(-) diff --git a/vulkano/src/buffer.rs b/vulkano/src/buffer.rs index ffa4d90ba..06f708fcf 100644 --- a/vulkano/src/buffer.rs +++ b/vulkano/src/buffer.rs @@ -388,7 +388,7 @@ unsafe impl<'a, T: ?Sized, M> CpuWriteAccessible<'a, T> for Buffer } } -impl VulkanObject for Buffer { +unsafe impl VulkanObject for Buffer { type Object = vk::Buffer; #[inline] @@ -550,7 +550,7 @@ impl<'a, T: 'a, M: 'a> BufferSlice<'a, [T], M> { } } -impl<'a, T: ?Sized, M> VulkanObject for BufferSlice<'a, T, M> { +unsafe impl<'a, T: ?Sized, M> VulkanObject for BufferSlice<'a, T, M> { type Object = vk::Buffer; #[inline] diff --git a/vulkano/src/command_buffer/pool.rs b/vulkano/src/command_buffer/pool.rs index 61227cc1e..0c12c920a 100644 --- a/vulkano/src/command_buffer/pool.rs +++ b/vulkano/src/command_buffer/pool.rs @@ -71,7 +71,7 @@ impl CommandBufferPool { } } -impl VulkanObject for CommandBufferPool { +unsafe impl VulkanObject for CommandBufferPool { type Object = vk::CommandPool; #[inline] diff --git a/vulkano/src/descriptor_set.rs b/vulkano/src/descriptor_set.rs index f0e13c0f9..94e25c09e 100644 --- a/vulkano/src/descriptor_set.rs +++ b/vulkano/src/descriptor_set.rs @@ -383,7 +383,7 @@ impl DescriptorSet where S: DescriptorSetDesc { } } -impl VulkanObject for DescriptorSet { +unsafe impl VulkanObject for DescriptorSet { type Object = vk::DescriptorSet; #[inline] @@ -447,7 +447,7 @@ impl DescriptorSetLayout where S: DescriptorSetDesc { } } -impl VulkanObject for DescriptorSetLayout { +unsafe impl VulkanObject for DescriptorSetLayout { type Object = vk::DescriptorSetLayout; #[inline] @@ -513,7 +513,7 @@ impl

PipelineLayout

where P: PipelineLayoutDesc { } } -impl

VulkanObject for PipelineLayout

{ +unsafe impl

VulkanObject for PipelineLayout

{ type Object = vk::PipelineLayout; #[inline] diff --git a/vulkano/src/device.rs b/vulkano/src/device.rs index b7d306ae0..3787aae2d 100644 --- a/vulkano/src/device.rs +++ b/vulkano/src/device.rs @@ -204,7 +204,7 @@ impl fmt::Debug for Device { } } -impl VulkanObject for Device { +unsafe impl VulkanObject for Device { type Object = vk::Device; #[inline] @@ -305,7 +305,7 @@ impl Queue { } } -impl VulkanObject for Queue { +unsafe impl VulkanObject for Queue { type Object = vk::Queue; #[inline] diff --git a/vulkano/src/framebuffer.rs b/vulkano/src/framebuffer.rs index eee016d6a..435449d2c 100644 --- a/vulkano/src/framebuffer.rs +++ b/vulkano/src/framebuffer.rs @@ -315,7 +315,7 @@ impl RenderPass where L: RenderPassLayout { } } -impl VulkanObject for RenderPass { +unsafe impl VulkanObject for RenderPass { type Object = vk::RenderPass; #[inline] @@ -443,7 +443,7 @@ impl Framebuffer { } } -impl VulkanObject for Framebuffer { +unsafe impl VulkanObject for Framebuffer { type Object = vk::Framebuffer; #[inline] diff --git a/vulkano/src/image.rs b/vulkano/src/image.rs index 60425f4e9..6a1727413 100644 --- a/vulkano/src/image.rs +++ b/vulkano/src/image.rs @@ -382,7 +382,7 @@ impl Image } } -impl VulkanObject for Image +unsafe impl VulkanObject for Image where Ty: ImageTypeMarker { type Object = vk::Image; diff --git a/vulkano/src/instance.rs b/vulkano/src/instance.rs index e74013d45..5d0416170 100644 --- a/vulkano/src/instance.rs +++ b/vulkano/src/instance.rs @@ -248,7 +248,7 @@ impl fmt::Debug for Instance { } } -impl VulkanObject for Instance { +unsafe impl VulkanObject for Instance { type Object = vk::Instance; #[inline] @@ -552,7 +552,7 @@ impl PhysicalDevice { } } -impl VulkanObject for PhysicalDevice { +unsafe impl VulkanObject for PhysicalDevice { type Object = vk::PhysicalDevice; #[inline] diff --git a/vulkano/src/lib.rs b/vulkano/src/lib.rs index 9303b24e0..e1b7b7448 100644 --- a/vulkano/src/lib.rs +++ b/vulkano/src/lib.rs @@ -98,7 +98,7 @@ lazy_static! { } /// Gives access to the internal identifier of an object. -pub trait VulkanObject { +pub unsafe trait VulkanObject { /// The type of the object. type Object; @@ -108,15 +108,15 @@ pub trait VulkanObject { // TODO: remove eventually // https://github.com/rust-lang/rust/issues/29328 -pub trait VulkanObjectU64 { fn internal_object(&self) -> u64; } -impl VulkanObjectU64 for T where T: VulkanObject { +pub unsafe trait VulkanObjectU64 { fn internal_object(&self) -> u64; } +unsafe impl VulkanObjectU64 for T where T: VulkanObject { #[inline] fn internal_object(&self) -> u64 { VulkanObject::internal_object(self) } } // TODO: remove eventually // https://github.com/rust-lang/rust/issues/29328 -pub trait VulkanObjectUsize { fn internal_object(&self) -> usize; } -impl VulkanObjectUsize for T where T: VulkanObject { +pub unsafe trait VulkanObjectUsize { fn internal_object(&self) -> usize; } +unsafe impl VulkanObjectUsize for T where T: VulkanObject { #[inline] fn internal_object(&self) -> usize { VulkanObject::internal_object(self) } } diff --git a/vulkano/src/memory/device_memory.rs b/vulkano/src/memory/device_memory.rs index 70fd6bc60..008b46be1 100644 --- a/vulkano/src/memory/device_memory.rs +++ b/vulkano/src/memory/device_memory.rs @@ -105,7 +105,7 @@ impl DeviceMemory { } } -impl VulkanObject for DeviceMemory { +unsafe impl VulkanObject for DeviceMemory { type Object = vk::DeviceMemory; #[inline] diff --git a/vulkano/src/pipeline/cache.rs b/vulkano/src/pipeline/cache.rs index 5d44760b6..66c338b2e 100644 --- a/vulkano/src/pipeline/cache.rs +++ b/vulkano/src/pipeline/cache.rs @@ -105,7 +105,7 @@ impl PipelineCache { } } -impl VulkanObject for PipelineCache { +unsafe impl VulkanObject for PipelineCache { type Object = vk::PipelineCache; #[inline] diff --git a/vulkano/src/pipeline/graphics_pipeline.rs b/vulkano/src/pipeline/graphics_pipeline.rs index 2d71ad639..4114b213b 100644 --- a/vulkano/src/pipeline/graphics_pipeline.rs +++ b/vulkano/src/pipeline/graphics_pipeline.rs @@ -315,7 +315,7 @@ impl GraphicsPipeline { impl GenericPipeline for GraphicsPipeline { } -impl VulkanObject for GraphicsPipeline { +unsafe impl VulkanObject for GraphicsPipeline { type Object = vk::Pipeline; #[inline] diff --git a/vulkano/src/shader.rs b/vulkano/src/shader.rs index 3024f508b..e296ca672 100644 --- a/vulkano/src/shader.rs +++ b/vulkano/src/shader.rs @@ -93,7 +93,7 @@ impl ShaderModule { } } -impl VulkanObject for ShaderModule { +unsafe impl VulkanObject for ShaderModule { type Object = vk::ShaderModule; #[inline] diff --git a/vulkano/src/swapchain/mod.rs b/vulkano/src/swapchain/mod.rs index 5b790cf68..97ecb6799 100644 --- a/vulkano/src/swapchain/mod.rs +++ b/vulkano/src/swapchain/mod.rs @@ -212,7 +212,7 @@ impl Display { } } -impl VulkanObject for Display { +unsafe impl VulkanObject for Display { type Object = vk::DisplayKHR; #[inline] diff --git a/vulkano/src/swapchain/surface.rs b/vulkano/src/swapchain/surface.rs index a6885bf41..7d6906a01 100644 --- a/vulkano/src/swapchain/surface.rs +++ b/vulkano/src/swapchain/surface.rs @@ -236,7 +236,7 @@ impl Surface { } } -impl VulkanObject for Surface { +unsafe impl VulkanObject for Surface { type Object = vk::SurfaceKHR; #[inline] diff --git a/vulkano/src/sync.rs b/vulkano/src/sync.rs index f46f71df5..8828c7b35 100644 --- a/vulkano/src/sync.rs +++ b/vulkano/src/sync.rs @@ -187,7 +187,7 @@ impl Fence { } } -impl VulkanObject for Fence { +unsafe impl VulkanObject for Fence { type Object = vk::Fence; #[inline] @@ -242,7 +242,7 @@ impl Semaphore { } } -impl VulkanObject for Semaphore { +unsafe impl VulkanObject for Semaphore { type Object = vk::Semaphore; #[inline] @@ -336,7 +336,7 @@ impl Event { } } -impl VulkanObject for Event { +unsafe impl VulkanObject for Event { type Object = vk::Event; #[inline]