diff options
| author | Irene Knapp <ireneista@irenes.space> | 2026-08-08 05:32:41 -0700 |
|---|---|---|
| committer | Irene Knapp <ireneista@irenes.space> | 2026-08-08 05:32:41 -0700 |
| commit | d56eb5e4c223f5c89117cda8dfb1527e02b6a90c (patch) | |
| tree | 18e02395408c2dd12e15bdaf13af7c8a54582c9a /src/graphics/util.rs | |
| parent | ecee10d87f5f2c8b56647ce2a2790f03880f573c (diff) | |
remove physical_device from ForReinit
Vulkanalia tracks it for us in Device. it's used in Model, so it wasn't strictly in-scope for ForReinit; this solves the problem and simplifies some stuff. Force-Push: yes Change-Id: I8e38c236b3dc4c112671382a062c9ada2f34fbb1
Diffstat (limited to 'src/graphics/util.rs')
| -rw-r--r-- | src/graphics/util.rs | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/graphics/util.rs b/src/graphics/util.rs index 6190542..c970d18 100644 --- a/src/graphics/util.rs +++ b/src/graphics/util.rs @@ -9,21 +9,19 @@ use vulkanalia::vk::{ self, Handle, HasBuilder, InstanceV1_0, DeviceV1_0 }; #[allow(unsafe_code)] -pub fn init_buffer<T>(instance: &Instance, - physical_device: &vk::PhysicalDevice, device: &Device, - queue: &vk::Queue, command_pool: &vk::CommandPool, +pub fn init_buffer<T>(instance: &Instance, device: &Device, queue: &vk::Queue, + command_pool: &vk::CommandPool, usage: vk::BufferUsageFlags, contents: &[T]) -> Result<(vk::Buffer, vk::DeviceMemory)> { let (staging_buffer, staging_memory, size) - = stage_in_buffer(instance, physical_device, device, contents)?; + = stage_in_buffer(instance, device, contents)?; let final_usage = vk::BufferUsageFlags::TRANSFER_DST | usage; let final_memory_flags = vk::MemoryPropertyFlags::DEVICE_LOCAL; let (final_buffer, device_memory) - = allocate_buffer(instance, physical_device, device, - size as vk::DeviceSize, final_usage, - final_memory_flags)?; + = allocate_buffer(instance, device, size as vk::DeviceSize, + final_usage, final_memory_flags)?; copy_buffer(device, queue, command_pool, &staging_buffer, &final_buffer, size as vk::DeviceSize)?; @@ -35,9 +33,8 @@ pub fn init_buffer<T>(instance: &Instance, } -pub fn stage_in_buffer<T>(instance: &Instance, - physical_device: &vk::PhysicalDevice, - device: &Device, contents: &[T]) +pub fn stage_in_buffer<T>(instance: &Instance, device: &Device, + contents: &[T]) -> Result<(vk::Buffer, vk::DeviceMemory, usize)> { let size = size_of::<T>() * contents.len(); @@ -46,9 +43,8 @@ pub fn stage_in_buffer<T>(instance: &Instance, let staging_memory_flags = vk::MemoryPropertyFlags::HOST_COHERENT | vk::MemoryPropertyFlags::HOST_VISIBLE; let (staging_buffer, staging_memory) - = allocate_buffer(instance, physical_device, device, - size as vk::DeviceSize, staging_usage, - staging_memory_flags)?; + = allocate_buffer(instance, device, size as vk::DeviceSize, + staging_usage, staging_memory_flags)?; let host_memory = unsafe { device.map_memory(staging_memory, 0, size as vk::DeviceSize, @@ -66,12 +62,13 @@ pub fn stage_in_buffer<T>(instance: &Instance, #[allow(unsafe_code)] -pub fn allocate_buffer(instance: &Instance, - physical_device: &vk::PhysicalDevice, device: &Device, +pub fn allocate_buffer(instance: &Instance, device: &Device, size: vk::DeviceSize, usage: vk::BufferUsageFlags, memory_flags: vk::MemoryPropertyFlags) -> Result<(vk::Buffer, vk::DeviceMemory)> { + let physical_device = device.physical_device(); + let buffer_info = vk::BufferCreateInfo::builder() .size(size) .usage(usage) @@ -85,7 +82,7 @@ pub fn allocate_buffer(instance: &Instance, // one to tell us about it, and we let it. let requirements = unsafe { device.get_buffer_memory_requirements(buffer) }; - let type_index = pick_memory_type(instance, physical_device, + let type_index = pick_memory_type(instance, &physical_device, &memory_flags, &requirements)?; let memory_info = vk::MemoryAllocateInfo::builder() |