summary refs log tree commit diff
path: root/src/graphics_permanent.rs
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-07-09 14:46:02 -0700
committerIrene Knapp <ireneista@irenes.space>2026-07-09 14:46:02 -0700
commitdaac5191461ed84d41920ea9c80addb8dea977c2 (patch)
treeac5093a3ec741a52162335ac1a97f3259de9b6ef /src/graphics_permanent.rs
parentf4ca7d9464807fb8939390a41ffcdde0c21f32c4 (diff)
move all the window dressing stuff into its own file
Force-Push: yes
Change-Id: Ib2db6c2af91698678c99969f575636abb4215b54
Diffstat (limited to 'src/graphics_permanent.rs')
-rw-r--r--src/graphics_permanent.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/graphics_permanent.rs b/src/graphics_permanent.rs
index a4ece9d..4df6069 100644
--- a/src/graphics_permanent.rs
+++ b/src/graphics_permanent.rs
@@ -4,6 +4,7 @@ use crate::error::*;
 use std::collections::{ BTreeMap, BTreeSet, HashSet };
 use std::ffi::{ c_void, CStr };
 use vulkanalia::{ Device, Entry, Instance, Version };
+use vulkanalia::bytecode::Bytecode;
 use vulkanalia::loader::{ LibloadingLoader, LIBRARY };
 use vulkanalia::vk::{ self, HasBuilder,
                       ApplicationInfo, InstanceCreateInfo,
@@ -672,6 +673,23 @@ impl PermanentGraphicsState {
       Ok(Acceptable::Accepted((capabilities, formats, presentation_modes)))
     }
   }
+
+  #[allow(unsafe_code)]
+  pub fn load_spirv_shader_module(device: &Device, binary: &[u8])
+      -> Result<vk::ShaderModule>
+  {
+    let bytecode = Bytecode::new(binary)?;
+
+    let module_info = vk::ShaderModuleCreateInfo::builder()
+                          .code(bytecode.code())
+                          .code_size(bytecode.code_size());
+
+    let module = unsafe {
+      device.create_shader_module(&module_info, None)
+    }?;
+
+    Ok(module)
+  }
 }