package instance import ( "github.com/vkngwrapper/core/v2" "github.com/vkngwrapper/core/v2/core1_0" "github.com/vkngwrapper/extensions/v2/ext_debug_utils" "github.com/vkngwrapper/extensions/v2/khr_portability_enumeration" "zworld/engine/window" ) type FVulkanHelp struct{} func (h *FVulkanHelp) getCreateInstanceExtension(instanceOptions *core1_0.InstanceCreateInfo, loader *core.VulkanLoader, win *window.FSDLWindow) error { // Add extensions sdlExtensions := win.GetInstance().VulkanGetInstanceExtensions() extensions, _, err := loader.AvailableExtensions() if err != nil { return err } for _, ext := range sdlExtensions { _, hasExt := extensions[ext] if !hasExt { return nil } instanceOptions.EnabledExtensionNames = append(instanceOptions.EnabledExtensionNames, ext) } if enableValidationLayers { instanceOptions.EnabledExtensionNames = append(instanceOptions.EnabledExtensionNames, ext_debug_utils.ExtensionName) } _, enumerationSupported := extensions[khr_portability_enumeration.ExtensionName] if enumerationSupported { instanceOptions.EnabledExtensionNames = append(instanceOptions.EnabledExtensionNames, khr_portability_enumeration.ExtensionName) instanceOptions.Flags |= khr_portability_enumeration.InstanceCreateEnumeratePortability } return nil } func (h *FVulkanHelp) getCreateInstanceLayer(instanceOptions *core1_0.InstanceCreateInfo, loader *core.VulkanLoader, win *window.FSDLWindow) error { // Add extensions layers, _, err := loader.AvailableLayers() if err != nil { return err } if enableValidationLayers { for _, layer := range validationLayers { _, hasValidation := layers[layer] if !hasValidation { return nil } instanceOptions.EnabledLayerNames = append(instanceOptions.EnabledLayerNames, layer) } } return nil }