summary refs log tree commit diff
path: root/src/graphics/render.rs
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-08-12 19:13:32 -0700
committerIrene Knapp <ireneista@irenes.space>2026-08-12 19:13:32 -0700
commit19e3a0f319fd04c1dde803796ec272d038b634f7 (patch)
tree502077d3e1dab810f037faea810f1cfd2c5ec691 /src/graphics/render.rs
parent87f60b880bd1ce586972f9b70dd6c627b1df92cd (diff)
split the texture's sampler and its image view into separaet bindings HEAD main
this will make it easier to change the image view dynamically as a push update, in a future CL

Force-Push: yes
Change-Id: If7cfab07913a5a462e16dd7fb478ed491d33d4d9
Diffstat (limited to 'src/graphics/render.rs')
-rw-r--r--src/graphics/render.rs25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/graphics/render.rs b/src/graphics/render.rs
index 7318574..c88b1d6 100644
--- a/src/graphics/render.rs
+++ b/src/graphics/render.rs
@@ -472,19 +472,30 @@ fn init_descriptor_sets(device: &Device, layout: &vk::DescriptorSetLayout,
             .descriptor_type(vk::DescriptorType::UNIFORM_BUFFER)
             .buffer_info(&buffer_info_list);
 
-    let image_info = vk::DescriptorImageInfo::builder()
-            .image_layout(vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL)
-            .image_view(*texture_image_view)
+    let sampler_image_info = vk::DescriptorImageInfo::builder()
             .sampler(*sampler);
-    let image_info_list = [image_info];
+    let sampler_image_info_list = [sampler_image_info];
     let sampler_write_info = vk::WriteDescriptorSet::builder()
             .dst_set(sets[index])
             .dst_binding(1)
             .dst_array_element(0)
-            .descriptor_type(vk::DescriptorType::COMBINED_IMAGE_SAMPLER)
-            .image_info(&image_info_list);
+            .descriptor_type(vk::DescriptorType::SAMPLER)
+            .image_info(&sampler_image_info_list);
+
+    let texture_image_info = vk::DescriptorImageInfo::builder()
+            .image_layout(vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL)
+            .image_view(*texture_image_view);
+    let texture_image_info_list = [texture_image_info];
+    let texture_write_info = vk::WriteDescriptorSet::builder()
+            .dst_set(sets[index])
+            .dst_binding(2)
+            .dst_array_element(0)
+            .descriptor_type(vk::DescriptorType::SAMPLED_IMAGE)
+            .image_info(&texture_image_info_list);
 
-    let write_info_list = [uniform_block_write_info, sampler_write_info];
+    let write_info_list = [
+            uniform_block_write_info, sampler_write_info, texture_write_info
+    ];
     let copy_info_list: [vk::CopyDescriptorSet; 0] = [];
 
     unsafe {