Add documentation for Instance.create()

Signed-off-by: luccie-cmd <luccie@sideros.org>
This commit is contained in:
luccie-cmd 2025-03-16 23:04:18 +01:00 committed by Lorenzo Torres
parent 48796a0fa3
commit 98063d241d

View file

@ -73,11 +73,14 @@ pub const Instance = struct {
pub fn create(allocator: Allocator) !Instance { pub fn create(allocator: Allocator) !Instance {
const extensions = window.getExtensions(); const extensions = window.getExtensions();
// Querry avaliable extensions size
var avaliableExtensionsCount: u32 = 0; var avaliableExtensionsCount: u32 = 0;
_ = c.vkEnumerateInstanceExtensionProperties(null, &avaliableExtensionsCount, null); _ = c.vkEnumerateInstanceExtensionProperties(null, &avaliableExtensionsCount, null);
// Actually querry avaliable extensions
var availableExtensions = std.ArrayList(c.VkExtensionProperties).init(allocator); var availableExtensions = std.ArrayList(c.VkExtensionProperties).init(allocator);
try availableExtensions.resize(avaliableExtensionsCount); try availableExtensions.resize(avaliableExtensionsCount);
_ = c.vkEnumerateInstanceExtensionProperties(null, &avaliableExtensionsCount, availableExtensions.items.ptr); _ = c.vkEnumerateInstanceExtensionProperties(null, &avaliableExtensionsCount, availableExtensions.items.ptr);
// Check the extensions we want against the extensions the user has
for(extensions) |need_ext| { for(extensions) |need_ext| {
var found = false; var found = false;
for(availableExtensions.items) |useable_ext| { for(availableExtensions.items) |useable_ext| {
@ -93,12 +96,16 @@ pub const Instance = struct {
} }
availableExtensions.deinit(); availableExtensions.deinit();
// Querry avaliable layers size
var avaliableLayersCount: u32 = 0; var avaliableLayersCount: u32 = 0;
_ = c.vkEnumerateInstanceLayerProperties(&avaliableLayersCount, null); _ = c.vkEnumerateInstanceLayerProperties(&avaliableLayersCount, null);
// Actually querry avaliable layers
var availableLayers = std.ArrayList(c.VkLayerProperties).init(allocator); var availableLayers = std.ArrayList(c.VkLayerProperties).init(allocator);
try availableLayers.resize(avaliableLayersCount); try availableLayers.resize(avaliableLayersCount);
_ = c.vkEnumerateInstanceLayerProperties(&avaliableLayersCount, availableLayers.items.ptr); _ = c.vkEnumerateInstanceLayerProperties(&avaliableLayersCount, availableLayers.items.ptr);
// Every layer we do have we add to this list, if we don't have it no worries just print a message and continue
var newLayers = std.ArrayList([*c]const u8).init(allocator); var newLayers = std.ArrayList([*c]const u8).init(allocator);
// Loop over layers we want
for(validation_layers) |want_layer| { for(validation_layers) |want_layer| {
var found = false; var found = false;
for(availableLayers.items) |useable_validation| { for(availableLayers.items) |useable_validation| {