From 74c90ff09f15c068bf8f7f552d01fbf5bc9fcfe4 Mon Sep 17 00:00:00 2001 From: Joshua Simmons Date: Sat, 3 Dec 2022 21:17:03 +0100 Subject: [PATCH] Tidy embedded spir-v --- narcissus-gpu/src/backend/vulkan/mod.rs | 6 +++++- narcissus/src/main.rs | 13 +++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/narcissus-gpu/src/backend/vulkan/mod.rs b/narcissus-gpu/src/backend/vulkan/mod.rs index e68a760..d8a78d0 100644 --- a/narcissus-gpu/src/backend/vulkan/mod.rs +++ b/narcissus-gpu/src/backend/vulkan/mod.rs @@ -8,7 +8,7 @@ use std::{ }; use narcissus_core::{ - cstr, cstr_from_bytes_until_nul, default, manual_arc, + cstr, cstr_from_bytes_until_nul, default, is_aligned_to, manual_arc, manual_arc::ManualArc, raw_window::{AsRawWindow, RawWindow}, Arena, HybridArena, Mutex, PhantomUnsend, Pool, @@ -1843,6 +1843,10 @@ impl Device for VulkanDevice { }; let shader_module = |code: &[u8]| { + assert!( + is_aligned_to(code.as_ptr(), 4), + "spir-v must be aligned on a 4 byte boundary" + ); let create_info = vk::ShaderModuleCreateInfo { code: code.into(), ..default() diff --git a/narcissus/src/main.rs b/narcissus/src/main.rs index 903b9ca..b8a20bc 100644 --- a/narcissus/src/main.rs +++ b/narcissus/src/main.rs @@ -1,7 +1,7 @@ use std::{path::Path, time::Instant}; use narcissus_app::{create_app, Event, Key, WindowDesc}; -use narcissus_core::{cstr, default, obj, rand::Pcg64}; +use narcissus_core::{cstr, default, include_bytes_align, obj, rand::Pcg64}; use narcissus_gpu::{ create_device, Access, Bind, BindGroupLayoutDesc, BindGroupLayoutEntryDesc, BindingType, BlendMode, Buffer, BufferDesc, BufferImageCopy, BufferUsageFlags, ClearValue, CompareOp, @@ -295,11 +295,8 @@ pub fn main() { let mut thread_token = ThreadToken::new(); - #[repr(align(4))] - struct Spirv([u8; LEN]); - - let vert_spv = Spirv(*include_bytes!("shaders/basic.vert.spv")); - let frag_spv = Spirv(*include_bytes!("shaders/basic.frag.spv")); + let vert_spv = include_bytes_align!(4, "shaders/basic.vert.spv"); + let frag_spv = include_bytes_align!(4, "shaders/basic.frag.spv"); let uniform_bind_group_layout = device.create_bind_group_layout(&BindGroupLayoutDesc { entries: &[BindGroupLayoutEntryDesc { @@ -342,11 +339,11 @@ pub fn main() { let pipeline = device.create_graphics_pipeline(&GraphicsPipelineDesc { vertex_shader: ShaderDesc { entry: cstr!("main"), - code: &vert_spv.0, + code: vert_spv, }, fragment_shader: ShaderDesc { entry: cstr!("main"), - code: &frag_spv.0, + code: frag_spv, }, bind_group_layouts: &[uniform_bind_group_layout, storage_bind_group_layout], layout: GraphicsPipelineLayout { -- 2.49.0