MCPcopy Create free account
hub / github.com/GPUOpen-Tools/GPU-Reshape / CreateInstance

Method CreateInstance

Source/Backends/Vulkan/Tests/Source/Loader.cpp:124–186  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124void Loader::CreateInstance() {
125 // General app info
126 VkApplicationInfo applicationInfo{};
127 applicationInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
128 applicationInfo.apiVersion = VK_API_VERSION_1_2;
129 applicationInfo.pApplicationName = "GPUOpen GRS";
130 applicationInfo.pEngineName = "GPUOpen GRS";
131
132 // Pass down the environment
133 VkGPUOpenGPUReshapeCreateInfo gpuOpenInfo{};
134 gpuOpenInfo.sType = VK_STRUCTURE_TYPE_GPUOPEN_GPURESHAPE_CREATE_INFO;
135 gpuOpenInfo.registry = environment.GetRegistry();
136
137 // Instance info
138 VkInstanceCreateInfo instanceCreateInfo{};
139 instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
140 instanceCreateInfo.pNext = &gpuOpenInfo;
141 instanceCreateInfo.pApplicationInfo = &applicationInfo;
142 instanceCreateInfo.enabledExtensionCount = static_cast<uint32_t>(enabledInstanceExtensions.size());
143 instanceCreateInfo.ppEnabledExtensionNames = enabledInstanceExtensions.data();
144 instanceCreateInfo.enabledLayerCount = static_cast<uint32_t>(enabledInstanceLayers.size());
145 instanceCreateInfo.ppEnabledLayerNames = enabledInstanceLayers.data();
146 REQUIRE(vkCreateInstance(&instanceCreateInfo, nullptr, &instance) == VK_SUCCESS);
147
148 // Get the number of physical devices
149 uint32_t physicalDeviceCount;
150 REQUIRE(vkEnumeratePhysicalDevices(instance, &physicalDeviceCount, nullptr) == VK_SUCCESS);
151
152 // Must have at least one device
153 REQUIRE(physicalDeviceCount > 0);
154
155 // Get all physical devices
156 std::vector<VkPhysicalDevice> physicalDevices(physicalDeviceCount);
157 REQUIRE(vkEnumeratePhysicalDevices(instance, &physicalDeviceCount, physicalDevices.data()) == VK_SUCCESS);
158
159 // TODO: Make sure it's at least dedicated
160 physicalDevice = physicalDevices.at(0);
161
162 // Get number of device extensions
163 uint32_t deviceExtensionCount;
164 REQUIRE(vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &deviceExtensionCount, nullptr) == VK_SUCCESS);
165
166 // Enumerate device extensions
167 deviceExtensions.resize(deviceExtensionCount);
168 REQUIRE(vkEnumerateDeviceExtensionProperties(physicalDevice, nullptr, &deviceExtensionCount, deviceExtensions.data()) == VK_SUCCESS);
169
170 if (enableValidation) {
171 // Validation create info
172 VkDebugUtilsMessengerCreateInfoEXT createInfo{};
173 createInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT;
174 createInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
175 createInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
176 createInfo.pfnUserCallback = DebugCallback;
177 createInfo.pUserData = nullptr;
178
179 // Validation proc
180 auto next_vkCreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT) vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
181 REQUIRE(next_vkCreateDebugUtilsMessengerEXT);

Callers 5

GetPluginOrLoadMethod · 0.45
InstantiateDerivedMethod · 0.45
BuildMethod · 0.45
ResolveViewMethod · 0.45
BindSuspensionTreeMethod · 0.45

Calls 4

dataMethod · 0.80
resizeMethod · 0.80
GetRegistryMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected