aboutsummaryrefslogtreecommitdiff
path: root/adapters/fparkan-render-vulkan/src/ffi.rs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-07-18 06:39:38 +0300
committerValentin Popov <valentin@popov.link>2026-07-18 06:39:38 +0300
commitfd9ce461c2668dcbf7ac6a5ecd543cd12952d698 (patch)
tree2d44f2440f249643a67781acc73e70a1cacd5df7 /adapters/fparkan-render-vulkan/src/ffi.rs
parent6e6496eebf4057ceb4a09869b0df21b1f0260e81 (diff)
downloadfparkan-fd9ce461c2668dcbf7ac6a5ecd543cd12952d698.tar.xz
fparkan-fd9ce461c2668dcbf7ac6a5ecd543cd12952d698.zip
feat(render): sample original TEXM in Vulkan
Diffstat (limited to 'adapters/fparkan-render-vulkan/src/ffi.rs')
-rw-r--r--adapters/fparkan-render-vulkan/src/ffi.rs29
1 files changed, 27 insertions, 2 deletions
diff --git a/adapters/fparkan-render-vulkan/src/ffi.rs b/adapters/fparkan-render-vulkan/src/ffi.rs
index 2ee3168..315d4ff 100644
--- a/adapters/fparkan-render-vulkan/src/ffi.rs
+++ b/adapters/fparkan-render-vulkan/src/ffi.rs
@@ -90,7 +90,8 @@ const EXT_DEBUG_UTILS_EXTENSION: &str = "VK_EXT_debug_utils";
const VALIDATION_LAYER_NAME: &str = "VK_LAYER_KHRONOS_validation";
pub(crate) const SPIRV_MAGIC: u32 = 0x0723_0203;
pub(crate) const SPIRV_VERSION_1_0: u32 = 0x0001_0000;
-pub(crate) const TRIANGLE_VERTEX_SHADER_WORDS: &[u32] = &[
+#[allow(dead_code)]
+const LEGACY_TRIANGLE_VERTEX_SHADER_WORDS: &[u32] = &[
0x0723_0203,
0x0001_0300,
0x0008_000b,
@@ -345,7 +346,8 @@ pub(crate) const TRIANGLE_VERTEX_SHADER_WORDS: &[u32] = &[
0x0001_00fd,
0x0001_0038,
];
-pub(crate) const TRIANGLE_FRAGMENT_SHADER_WORDS: &[u32] = &[
+#[allow(dead_code)]
+const LEGACY_TRIANGLE_FRAGMENT_SHADER_WORDS: &[u32] = &[
0x0723_0203,
0x0001_0300,
0x0008_000b,
@@ -473,5 +475,28 @@ pub(crate) const TRIANGLE_FRAGMENT_SHADER_WORDS: &[u32] = &[
0x0001_0038,
];
+const fn spirv_words<const WORD_COUNT: usize>(bytes: &[u8]) -> [u32; WORD_COUNT] {
+ let mut words = [0_u32; WORD_COUNT];
+ let mut index = 0;
+ while index < WORD_COUNT {
+ let offset = index * 4;
+ words[index] = u32::from_le_bytes([
+ bytes[offset],
+ bytes[offset + 1],
+ bytes[offset + 2],
+ bytes[offset + 3],
+ ]);
+ index += 1;
+ }
+ words
+}
+
+static TRIANGLE_VERTEX_SHADER_DATA: [u32; 290] =
+ spirv_words(include_bytes!("../shaders/triangle.vert.spv"));
+static TRIANGLE_FRAGMENT_SHADER_DATA: [u32; 197] =
+ spirv_words(include_bytes!("../shaders/triangle.frag.spv"));
+pub(crate) const TRIANGLE_VERTEX_SHADER_WORDS: &[u32] = &TRIANGLE_VERTEX_SHADER_DATA;
+pub(crate) const TRIANGLE_FRAGMENT_SHADER_WORDS: &[u32] = &TRIANGLE_FRAGMENT_SHADER_DATA;
+
#[cfg(test)]
mod tests;