summary refs log tree commit diff
path: root/src/graphics/util.rs
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-08-08 05:32:41 -0700
committerIrene Knapp <ireneista@irenes.space>2026-08-08 05:32:41 -0700
commitd56eb5e4c223f5c89117cda8dfb1527e02b6a90c (patch)
tree18e02395408c2dd12e15bdaf13af7c8a54582c9a /src/graphics/util.rs
parentecee10d87f5f2c8b56647ce2a2790f03880f573c (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.rs29
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()