kronos_compute/implementation/
buffer.rs1use crate::sys::*;
4use crate::core::*;
5use crate::ffi::*;
6use crate::implementation::icd_loader;
7
8#[no_mangle]
16pub unsafe extern "C" fn vkCreateBuffer(
17 device: VkDevice,
18 pCreateInfo: *const VkBufferCreateInfo,
19 pAllocator: *const VkAllocationCallbacks,
20 pBuffer: *mut VkBuffer,
21) -> VkResult {
22 if device.is_null() || pCreateInfo.is_null() || pBuffer.is_null() {
23 return VkResult::ErrorInitializationFailed;
24 }
25
26 if let Some(icd) = icd_loader::icd_for_device(device) {
28 if let Some(f) = icd.create_buffer { return f(device, pCreateInfo, pAllocator, pBuffer); }
29 }
30 if let Some(icd) = super::forward::get_icd_if_enabled() {
32 if let Some(create_buffer) = icd.create_buffer { return create_buffer(device, pCreateInfo, pAllocator, pBuffer); }
33 }
34 VkResult::ErrorInitializationFailed
35}
36
37#[no_mangle]
45pub unsafe extern "C" fn vkDestroyBuffer(
46 device: VkDevice,
47 buffer: VkBuffer,
48 pAllocator: *const VkAllocationCallbacks,
49) {
50 if device.is_null() || buffer.is_null() {
51 return;
52 }
53
54 if let Some(icd) = icd_loader::icd_for_device(device) {
55 if let Some(f) = icd.destroy_buffer { f(device, buffer, pAllocator); }
56 return;
57 }
58 if let Some(icd) = super::forward::get_icd_if_enabled() {
59 if let Some(destroy_buffer) = icd.destroy_buffer { destroy_buffer(device, buffer, pAllocator); }
60 }
61}
62
63#[no_mangle]
70pub unsafe extern "C" fn vkGetBufferMemoryRequirements(
71 device: VkDevice,
72 buffer: VkBuffer,
73 pMemoryRequirements: *mut VkMemoryRequirements,
74) {
75 if device.is_null() || buffer.is_null() || pMemoryRequirements.is_null() {
76 return;
77 }
78
79 if let Some(icd) = icd_loader::icd_for_device(device) {
80 if let Some(f) = icd.get_buffer_memory_requirements { f(device, buffer, pMemoryRequirements); }
81 return;
82 }
83 if let Some(icd) = super::forward::get_icd_if_enabled() {
84 if let Some(get_buffer_memory_requirements) = icd.get_buffer_memory_requirements { get_buffer_memory_requirements(device, buffer, pMemoryRequirements); }
85 }
86}
87
88#[no_mangle]
97pub unsafe extern "C" fn vkBindBufferMemory(
98 device: VkDevice,
99 buffer: VkBuffer,
100 memory: VkDeviceMemory,
101 memoryOffset: VkDeviceSize,
102) -> VkResult {
103 if device.is_null() || buffer.is_null() || memory.is_null() {
104 return VkResult::ErrorInitializationFailed;
105 }
106
107 if let Some(icd) = icd_loader::icd_for_device(device) {
108 if let Some(f) = icd.bind_buffer_memory { return f(device, buffer, memory, memoryOffset); }
109 }
110 if let Some(icd) = super::forward::get_icd_if_enabled() {
111 if let Some(bind_buffer_memory) = icd.bind_buffer_memory { return bind_buffer_memory(device, buffer, memory, memoryOffset); }
112 }
113 VkResult::ErrorInitializationFailed
114}