public ShaderInfo(VkShaderStageFlags _stageFlags, string _spirvPath, SpecializationInfo specializationInfo = null, string _entryPoint = "main") { StageFlags = _stageFlags; SpirvPath = _spirvPath; EntryPoint = new FixedUtf8String(_entryPoint); this.SpecializationInfo = specializationInfo; }
/// <summary> /// Create a new ShaderInfo object by providing directly a VkShaderModule. Note /// that this module will not be own by this ShaderInfo, and so will not be /// destroyed on Dispose. /// </summary> public ShaderInfo(VkShaderStageFlags stageFlags, VkShaderModule module, SpecializationInfo specializationInfo = null, string entryPoint = "main") { EntryPoint = new FixedUtf8String(entryPoint); info.stage = stageFlags; info.pName = EntryPoint; info.module = module; info.pSpecializationInfo = (specializationInfo == null) ? IntPtr.Zero : specializationInfo.InfosPtr; }
private VkResult CreateInstance(FixedUtf8String name, bool enableValidation) { Settings.Validation = enableValidation; VkApplicationInfo appInfo = new VkApplicationInfo() { sType = VkStructureType.ApplicationInfo, apiVersion = new Version(1, 0, 0), pApplicationName = name, pEngineName = name, }; using NativeList <IntPtr> instanceExtensions = new NativeList <IntPtr>(2); instanceExtensions.Add(new FixedUtf8String(Strings.VK_KHR_SURFACE_EXTENSION_NAME)); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { instanceExtensions.Add(new FixedUtf8String(Strings.VK_KHR_WIN32_SURFACE_EXTENSION_NAME)); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { instanceExtensions.Add(new FixedUtf8String(Strings.VK_KHR_XLIB_SURFACE_EXTENSION_NAME)); } else { throw new PlatformNotSupportedException(); } VkInstanceCreateInfo instanceCreateInfo = VkInstanceCreateInfo.New(); instanceCreateInfo.pApplicationInfo = &appInfo; if (instanceExtensions.Count > 0) { if (enableValidation) { instanceExtensions.Add(new FixedUtf8String(Strings.VK_EXT_DEBUG_REPORT_EXTENSION_NAME)); } instanceCreateInfo.enabledExtensionCount = instanceExtensions.Count; instanceCreateInfo.ppEnabledExtensionNames = (byte **)instanceExtensions.Data; } using NativeList <IntPtr> enabledLayerNames = new NativeList <IntPtr>(0); if (enableValidation) { enabledLayerNames.Add(new FixedUtf8String(Strings.StandardValidationLayerName)); instanceCreateInfo.enabledLayerCount = enabledLayerNames.Count; instanceCreateInfo.ppEnabledLayerNames = (byte **)enabledLayerNames.Data; } VkInstance instance; VkResult result = vkCreateInstance(&instanceCreateInfo, null, &instance); Instance = instance; return(result); }
public void GetDelegate <T> (string name, out T del) { using (FixedUtf8String n = new FixedUtf8String(name)) { del = Marshal.GetDelegateForFunctionPointer <T> (vkGetInstanceProcAddr(Handle, (IntPtr)n)); } }