From ba9d7b6c9c440a87f494cb7f2f8be8b2b9c59a1c Mon Sep 17 00:00:00 2001 From: Taylor <2374670+taylormck@users.noreply.github.com> Date: Mon, 13 Apr 2026 22:45:52 +0900 Subject: [PATCH] feat(vulkan): add version macros --- .../vulkan/_gen/create_vulkan_odin_wrapper.py | 34 +++++++++++++++++-- vendor/vulkan/core.odin | 28 +++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py index 4900d52b7..6e5eea2c0 100644 --- a/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py +++ b/vendor/vulkan/_gen/create_vulkan_odin_wrapper.py @@ -899,6 +899,7 @@ load_proc_addresses :: proc{ with open("../core.odin", 'w', encoding='utf-8') as f: f.write(BASE) f.write(PACKAGE_LINE) + f.write("\n") f.write(""" // Core API API_VERSION_1_0 :: (1<<22) | (0<<12) | (0) @@ -907,10 +908,38 @@ API_VERSION_1_2 :: (1<<22) | (2<<12) | (0) API_VERSION_1_3 :: (1<<22) | (3<<12) | (0) API_VERSION_1_4 :: (1<<22) | (4<<12) | (0) +MAKE_API_VERSION :: proc "contextless" (variant, major, minor, patch: u32) -> u32 { +\treturn (variant<<29) | (major<<22) | (minor<<12) | (patch) +} + MAKE_VERSION :: proc "contextless" (major, minor, patch: u32) -> u32 { \treturn (major<<22) | (minor<<12) | (patch) } +API_VERSION_MAJOR :: proc "contextless" (version: u32) -> u32 { +\treturn (version>>22) & 0x7F +} + +VERSION_MAJOR :: proc "contextless" (version: u32) -> u32 { +\treturn (version>>22) +} + +API_VERSION_MINOR :: proc "contextless" (version: u32) -> u32 { +\treturn (version>>12) & 0x3FF +} + +VERSION_MINOR :: API_VERSION_MINOR + +API_VERSION_PATCH :: proc "contextless" (version: u32) -> u32 { +\treturn (version & 0xFFF) +} + +VERSION_PATCH :: API_VERSION_PATCH + +API_VERSION_VARIANT :: proc "contextless" (version: u32) -> u32 { +\treturn (version>>29) +} + // Base types Flags :: distinct u32 Flags64 :: distinct u64 @@ -973,12 +1002,13 @@ MAKE_VIDEO_STD_VERSION :: MAKE_VERSION parse_flags_def(f) with open("../enums.odin", 'w', encoding='utf-8') as f: f.write(PACKAGE_LINE) - f.write("\n") + f.write("\n\n") parse_enums(f) parse_fake_enums(f) f.write("\n\n") with open("../structs.odin", 'w', encoding='utf-8') as f: f.write(PACKAGE_LINE) + f.write("\n") f.write(""" import "core:c" @@ -1040,7 +1070,7 @@ MTLCommandQueue_id :: rawptr f.write("\n\n") with open("../procedures.odin", 'w', encoding='utf-8') as f: f.write(PACKAGE_LINE) - f.write("\n") + f.write("\n\n") parse_procedures(f) f.write("\n") group_functions(f) diff --git a/vendor/vulkan/core.odin b/vendor/vulkan/core.odin index c3cb59a16..3cc166dc8 100644 --- a/vendor/vulkan/core.odin +++ b/vendor/vulkan/core.odin @@ -7,10 +7,38 @@ API_VERSION_1_2 :: (1<<22) | (2<<12) | (0) API_VERSION_1_3 :: (1<<22) | (3<<12) | (0) API_VERSION_1_4 :: (1<<22) | (4<<12) | (0) +MAKE_API_VERSION :: proc "contextless" (variant, major, minor, patch: u32) -> u32 { + return (variant<<29) | (major<<22) | (minor<<12) | (patch) +} + MAKE_VERSION :: proc "contextless" (major, minor, patch: u32) -> u32 { return (major<<22) | (minor<<12) | (patch) } +API_VERSION_MAJOR :: proc "contextless" (version: u32) -> u32 { + return (version>>22) & 0x7F +} + +VERSION_MAJOR :: proc "contextless" (version: u32) -> u32 { + return (version>>22) +} + +API_VERSION_MINOR :: proc "contextless" (version: u32) -> u32 { + return (version>>12) & 0x3FF +} + +VERSION_MINOR :: API_VERSION_MINOR + +API_VERSION_PATCH :: proc "contextless" (version: u32) -> u32 { + return (version & 0xFFF) +} + +VERSION_PATCH :: API_VERSION_PATCH + +API_VERSION_VARIANT :: proc "contextless" (version: u32) -> u32 { + return (version>>29) +} + // Base types Flags :: distinct u32 Flags64 :: distinct u64