Add experimental allocator
This commit is contained in:
parent
ccfd6b636a
commit
1c3f944fb1
70
src/allocator.rs
Normal file
70
src/allocator.rs
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
use vk;
|
||||||
|
use std::ptr;
|
||||||
|
pub trait VkAllocation {
|
||||||
|
unsafe extern "system" fn allocation(*mut (),
|
||||||
|
vk::size_t,
|
||||||
|
vk::size_t,
|
||||||
|
vk::SystemAllocationScope)
|
||||||
|
-> *mut ();
|
||||||
|
unsafe extern "system" fn reallocation(*mut vk::c_void,
|
||||||
|
*mut vk::c_void,
|
||||||
|
vk::size_t,
|
||||||
|
vk::size_t,
|
||||||
|
vk::SystemAllocationScope)
|
||||||
|
-> *mut vk::c_void;
|
||||||
|
unsafe extern "system" fn free(*mut vk::c_void, *mut vk::c_void);
|
||||||
|
unsafe extern "system" fn internal_allocation(*mut vk::c_void,
|
||||||
|
vk::size_t,
|
||||||
|
vk::InternalAllocationType,
|
||||||
|
vk::SystemAllocationScope);
|
||||||
|
unsafe extern "system" fn internal_free(*mut vk::c_void,
|
||||||
|
vk::size_t,
|
||||||
|
vk::InternalAllocationType,
|
||||||
|
vk::SystemAllocationScope);
|
||||||
|
fn create_allocation_callback() -> Option<vk::AllocationCallbacks> {
|
||||||
|
let alloc = vk::AllocationCallbacks {
|
||||||
|
p_user_data: ptr::null_mut(),
|
||||||
|
pfn_allocation: Self::allocation,
|
||||||
|
pfn_reallocation: Self::reallocation,
|
||||||
|
pfn_free: Self::free,
|
||||||
|
pfn_internal_allocation: Self::internal_allocation,
|
||||||
|
pfn_internal_free: Self::internal_free,
|
||||||
|
};
|
||||||
|
Some(alloc)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct DefaultAllocatorCallback;
|
||||||
|
|
||||||
|
impl VkAllocation for DefaultAllocatorCallback {
|
||||||
|
unsafe extern "system" fn allocation(user: *mut (),
|
||||||
|
a: vk::size_t,
|
||||||
|
b: vk::size_t,
|
||||||
|
c: vk::SystemAllocationScope)
|
||||||
|
-> *mut () {
|
||||||
|
ptr::null_mut()
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe extern "system" fn reallocation(a: *mut vk::c_void,
|
||||||
|
b: *mut vk::c_void,
|
||||||
|
c: vk::size_t,
|
||||||
|
d: vk::size_t,
|
||||||
|
e: vk::SystemAllocationScope)
|
||||||
|
-> *mut vk::c_void {
|
||||||
|
ptr::null_mut()
|
||||||
|
}
|
||||||
|
unsafe extern "system" fn free(a: *mut vk::c_void, b: *mut vk::c_void) {}
|
||||||
|
unsafe extern "system" fn internal_allocation(a: *mut vk::c_void,
|
||||||
|
b: vk::size_t,
|
||||||
|
c: vk::InternalAllocationType,
|
||||||
|
d: vk::SystemAllocationScope) {
|
||||||
|
}
|
||||||
|
unsafe extern "system" fn internal_free(a: *mut vk::c_void,
|
||||||
|
b: vk::size_t,
|
||||||
|
c: vk::InternalAllocationType,
|
||||||
|
d: vk::SystemAllocationScope) {
|
||||||
|
}
|
||||||
|
fn create_allocation_callback() -> Option<vk::AllocationCallbacks> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue