MCPcopy Create free account
hub / github.com/InoriRus/Kyty / VulkanGetExtensions

Function VulkanGetExtensions

source/emulator/src/Graphics/Window.cpp:1731–1833  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1729}
1730
1731static void VulkanGetExtensions(SDL_Window* window, VulkanExtensions* r)
1732{
1733 EXIT_IF(window == nullptr);
1734 EXIT_IF(r == nullptr);
1735
1736 uint32_t required_extensions_count = 0;
1737 uint32_t available_extensions_count = 0;
1738 uint32_t available_layers_count = 0;
1739
1740 auto sdl_result = SDL_Vulkan_GetInstanceExtensions(window, &required_extensions_count, nullptr);
1741
1742 EXIT_NOT_IMPLEMENTED(sdl_result == SDL_FALSE);
1743 EXIT_NOT_IMPLEMENTED(required_extensions_count == 0);
1744
1745 r->required_extensions = Vector<const char*>(required_extensions_count, false); // @suppress("Ambiguous problem")
1746 r->required_extensions.Memset(0);
1747
1748 sdl_result = SDL_Vulkan_GetInstanceExtensions(window, &required_extensions_count, r->required_extensions.GetData());
1749
1750 EXIT_NOT_IMPLEMENTED(sdl_result == SDL_FALSE);
1751 EXIT_NOT_IMPLEMENTED(required_extensions_count == 0);
1752 EXIT_NOT_IMPLEMENTED(required_extensions_count != r->required_extensions.Size());
1753
1754 vkEnumerateInstanceExtensionProperties(nullptr, &available_extensions_count, nullptr);
1755
1756 r->available_extensions = Vector<VkExtensionProperties>(available_extensions_count); // @suppress("Ambiguous problem")
1757 r->available_extensions.Memset(0);
1758
1759 vkEnumerateInstanceExtensionProperties(nullptr, &available_extensions_count, r->available_extensions.GetData());
1760
1761 EXIT_NOT_IMPLEMENTED(available_extensions_count != r->available_extensions.Size());
1762
1763 r->enable_validation_layers = Config::VulkanValidationEnabled();
1764
1765 if (r->available_extensions.Contains(VK_EXT_DEBUG_UTILS_EXTENSION_NAME, [](auto s, auto l) { return strcmp(s.extensionName, l) == 0; }))
1766 {
1767 r->required_extensions.Add(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
1768 } else
1769 {
1770 r->enable_validation_layers = false;
1771 }
1772
1773 for (const char* ext: r->required_extensions)
1774 {
1775 printf("Vulkan required extension: %s\n", ext);
1776 }
1777
1778 for (const auto& ext: r->available_extensions)
1779 {
1780 printf("Vulkan available extension: %s, version = %u\n", ext.extensionName, ext.specVersion);
1781 }
1782
1783 vkEnumerateInstanceLayerProperties(&available_layers_count, nullptr);
1784
1785 r->available_layers = Vector<VkLayerProperties>(available_layers_count); // @suppress("Ambiguous problem")
1786 r->available_layers.Memset(0);
1787 vkEnumerateInstanceLayerProperties(&available_layers_count, r->available_layers.GetData());
1788

Callers 1

VulkanCreateFunction · 0.85

Calls 8

VulkanValidationEnabledFunction · 0.85
printfFunction · 0.85
MemsetMethod · 0.45
GetDataMethod · 0.45
SizeMethod · 0.45
ContainsMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected