MCPcopy Create free account
hub / github.com/OpenNFS/OpenNFS / createLogicalDevice

Method createLogicalDevice

src/Renderer/vkRenderer.cpp:253–295  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

251}
252
253void vkRenderer::createLogicalDevice() {
254 QueueFamilyIndices indices = findQueueFamilies(physicalDevice);
255
256 std::vector<VkDeviceQueueCreateInfo> queueCreateInfos;
257 std::set<int> uniqueQueueFamilies = {indices.graphicsFamily, indices.presentFamily};
258
259 float queuePriority = 1.0f;
260 for (int queueFamily : uniqueQueueFamilies) {
261 VkDeviceQueueCreateInfo queueCreateInfo = {};
262 queueCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
263 queueCreateInfo.queueFamilyIndex = queueFamily;
264 queueCreateInfo.queueCount = 1;
265 queueCreateInfo.pQueuePriorities = &queuePriority;
266 queueCreateInfos.push_back(queueCreateInfo);
267 }
268
269 VkPhysicalDeviceFeatures deviceFeatures = {};
270
271 VkDeviceCreateInfo createInfo = {};
272 createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
273
274 createInfo.queueCreateInfoCount = static_cast<uint32_t>(queueCreateInfos.size());
275 createInfo.pQueueCreateInfos = queueCreateInfos.data();
276
277 createInfo.pEnabledFeatures = &deviceFeatures;
278
279 createInfo.enabledExtensionCount = static_cast<uint32_t>(deviceExtensions.size());
280 createInfo.ppEnabledExtensionNames = deviceExtensions.data();
281
282 if (enableValidationLayers) {
283 createInfo.enabledLayerCount = static_cast<uint32_t>(validationLayers.size());
284 createInfo.ppEnabledLayerNames = validationLayers.data();
285 } else {
286 createInfo.enabledLayerCount = 0;
287 }
288
289 if (vkCreateDevice(physicalDevice, &createInfo, nullptr, &device) != VK_SUCCESS) {
290 throw std::runtime_error("failed to create logical device!");
291 }
292
293 vkGetDeviceQueue(device, indices.graphicsFamily, 0, &graphicsQueue);
294 vkGetDeviceQueue(device, indices.presentFamily, 0, &presentQueue);
295}
296
297void vkRenderer::createSwapChain() {
298 SwapChainSupportDetails swapChainSupport = querySwapChainSupport(physicalDevice);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected