kronos_compute/core/
thread_safety.rs

1//! Thread safety implementations for Vulkan structures
2//! 
3//! Vulkan structures contain pNext pointers for extension chains.
4//! These are *const c_void pointers that are typically null or point to
5//! other Vulkan structures. They are safe to send between threads because:
6//! 1. They are read-only (const pointers)
7//! 2. They point to immutable data during structure lifetime
8//! 3. Vulkan API guarantees thread safety for these structures
9
10use super::structs::*;
11use super::compute::*;
12
13// Application info structures
14unsafe impl Send for VkApplicationInfo {}
15unsafe impl Sync for VkApplicationInfo {}
16
17unsafe impl Send for VkInstanceCreateInfo {}
18unsafe impl Sync for VkInstanceCreateInfo {}
19
20// Device structures
21unsafe impl Send for VkDeviceQueueCreateInfo {}
22unsafe impl Sync for VkDeviceQueueCreateInfo {}
23
24unsafe impl Send for VkDeviceCreateInfo {}
25unsafe impl Sync for VkDeviceCreateInfo {}
26
27// Memory structures
28unsafe impl Send for VkMemoryAllocateInfo {}
29unsafe impl Sync for VkMemoryAllocateInfo {}
30
31// Buffer structures
32unsafe impl Send for VkBufferCreateInfo {}
33unsafe impl Sync for VkBufferCreateInfo {}
34
35// Shader structures
36unsafe impl Send for VkShaderModuleCreateInfo {}
37unsafe impl Sync for VkShaderModuleCreateInfo {}
38
39unsafe impl Send for VkPipelineShaderStageCreateInfo {}
40unsafe impl Sync for VkPipelineShaderStageCreateInfo {}
41
42// Pipeline structures
43unsafe impl Send for VkComputePipelineCreateInfo {}
44unsafe impl Sync for VkComputePipelineCreateInfo {}
45
46unsafe impl Send for VkPipelineLayoutCreateInfo {}
47unsafe impl Sync for VkPipelineLayoutCreateInfo {}
48
49// Command structures
50unsafe impl Send for VkCommandPoolCreateInfo {}
51unsafe impl Sync for VkCommandPoolCreateInfo {}
52
53unsafe impl Send for VkCommandBufferAllocateInfo {}
54unsafe impl Sync for VkCommandBufferAllocateInfo {}
55
56unsafe impl Send for VkCommandBufferBeginInfo {}
57unsafe impl Sync for VkCommandBufferBeginInfo {}
58
59unsafe impl Send for VkSubmitInfo {}
60unsafe impl Sync for VkSubmitInfo {}
61
62unsafe impl Send for VkBufferCopy {}
63unsafe impl Sync for VkBufferCopy {}
64
65// Barrier structures
66unsafe impl Send for VkMemoryBarrier {}
67unsafe impl Sync for VkMemoryBarrier {}
68
69unsafe impl Send for VkBufferMemoryBarrier {}
70unsafe impl Sync for VkBufferMemoryBarrier {}
71
72// Descriptor structures
73unsafe impl Send for VkDescriptorSetLayoutBinding {}
74unsafe impl Sync for VkDescriptorSetLayoutBinding {}
75
76unsafe impl Send for VkDescriptorSetLayoutCreateInfo {}
77unsafe impl Sync for VkDescriptorSetLayoutCreateInfo {}
78
79// Query results structures
80unsafe impl Send for VkQueueFamilyProperties {}
81unsafe impl Sync for VkQueueFamilyProperties {}
82
83unsafe impl Send for VkMemoryRequirements {}
84unsafe impl Sync for VkMemoryRequirements {}
85
86unsafe impl Send for VkPhysicalDeviceMemoryProperties {}
87unsafe impl Sync for VkPhysicalDeviceMemoryProperties {}
88
89unsafe impl Send for VkMemoryType {}
90unsafe impl Sync for VkMemoryType {}
91
92unsafe impl Send for VkMemoryHeap {}
93unsafe impl Sync for VkMemoryHeap {}
94
95unsafe impl Send for VkPhysicalDeviceFeatures {}
96unsafe impl Sync for VkPhysicalDeviceFeatures {}
97
98// Push constant range
99unsafe impl Send for VkPushConstantRange {}
100unsafe impl Sync for VkPushConstantRange {}
101
102// Synchronization structures
103unsafe impl Send for VkFenceCreateInfo {}
104unsafe impl Sync for VkFenceCreateInfo {}
105
106unsafe impl Send for VkSemaphoreCreateInfo {}
107unsafe impl Sync for VkSemaphoreCreateInfo {}
108
109unsafe impl Send for VkEventCreateInfo {}
110unsafe impl Sync for VkEventCreateInfo {}
111
112// Specialization structures
113unsafe impl Send for VkSpecializationMapEntry {}
114unsafe impl Sync for VkSpecializationMapEntry {}
115
116unsafe impl Send for VkSpecializationInfo {}
117unsafe impl Sync for VkSpecializationInfo {}
118
119// Descriptor structures
120unsafe impl Send for VkDescriptorPoolSize {}
121unsafe impl Sync for VkDescriptorPoolSize {}
122
123unsafe impl Send for VkDescriptorPoolCreateInfo {}
124unsafe impl Sync for VkDescriptorPoolCreateInfo {}
125
126unsafe impl Send for VkDescriptorSetAllocateInfo {}
127unsafe impl Sync for VkDescriptorSetAllocateInfo {}
128
129unsafe impl Send for VkDescriptorBufferInfo {}
130unsafe impl Sync for VkDescriptorBufferInfo {}
131
132unsafe impl Send for VkDescriptorImageInfo {}
133unsafe impl Sync for VkDescriptorImageInfo {}
134
135unsafe impl Send for VkWriteDescriptorSet {}
136unsafe impl Sync for VkWriteDescriptorSet {}
137
138unsafe impl Send for VkCopyDescriptorSet {}
139unsafe impl Sync for VkCopyDescriptorSet {}
140