diff options
| author | Vasco <[email protected]> | 2026-08-24 03:53:16 +0100 |
|---|---|---|
| committer | Vasco <[email protected]> | 2026-08-24 03:53:16 +0100 |
| commit | ad5248a3e1bafc1b7dec4c8af82d56ed324ef314 (patch) | |
| tree | b575c3b85d6ad314fa9768855bed9aed8642917e /Rend/rend_vk_device.c | |
| parent | 5dc2716abd43166cd65133625f408ad36a6623b3 (diff) | |
Slimed out podium. Updated math. Rend kinda works but still bugged.
Diffstat (limited to 'Rend/rend_vk_device.c')
| -rw-r--r-- | Rend/rend_vk_device.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/Rend/rend_vk_device.c b/Rend/rend_vk_device.c index cb9f8f8..6f25557 100644 --- a/Rend/rend_vk_device.c +++ b/Rend/rend_vk_device.c @@ -10,7 +10,7 @@ static bool -rend_vk_device_create(VkSurfaceKHR surface, RendSpecs specs, RendVkDevice *out_device, uint32_t (*score_devices)(RendVkDevice *, RendSpecs, char **)) +rend_vk_device_create(VkSurfaceKHR surface, RendSpecs specs, RendVkDevice *out_device, uint32_t (*score_devices)(RendVkDevice *, RendSpecs, const char **, uint32_t)) { assert(out_device); @@ -24,8 +24,7 @@ rend_vk_device_create(VkSurfaceKHR surface, RendSpecs specs, RendVkDevice *out_d VkPhysicalDevice physical_devices[device_count]; CHECK_VK_RESULT(vkEnumeratePhysicalDevices(vk_instance, &device_count, physical_devices)); - char **extension_names_darray = NULL; - p_darray_push(extension_names_darray, VK_KHR_SWAPCHAIN_EXTENSION_NAME); + const char *extension_names[] = { VK_KHR_SWAPCHAIN_EXTENSION_NAME }; uint32_t best_score = 1; // 1 so that devices that do not meet specs get ignored RendVkDevice best_device = {0}; @@ -42,7 +41,7 @@ rend_vk_device_create(VkSurfaceKHR surface, RendSpecs specs, RendVkDevice *out_d vkGetPhysicalDeviceMemoryProperties(physical_devices[i], &scoring.memory); /* score device */ - uint32_t dev_score = score_devices(&scoring, specs, extension_names_darray); + uint32_t dev_score = score_devices(&scoring, specs, extension_names, 1); PDEBUG("%-20.20s %5d", scoring.properties.deviceName, dev_score); if (dev_score >= best_score) { if (best_device.swapchain_support.format) { @@ -64,9 +63,6 @@ rend_vk_device_create(VkSurfaceKHR surface, RendSpecs specs, RendVkDevice *out_d } - /* free extensions array after scoring */ - p_darray_destroy(extension_names_darray); - if (best_score > 1) { PDEBUG("Driver version %d.%d.%d", VK_VERSION_MAJOR(best_device.properties.driverVersion), VK_VERSION_MINOR(best_device.properties.driverVersion), VK_VERSION_PATCH(best_device.properties.driverVersion)); PDEBUG("Vulkan API version %d.%d.%d", VK_VERSION_MAJOR(best_device.properties.apiVersion), VK_VERSION_MINOR(best_device.properties.apiVersion), VK_VERSION_PATCH(best_device.properties.apiVersion)); @@ -105,7 +101,7 @@ rend_vk_device_create(VkSurfaceKHR surface, RendSpecs specs, RendVkDevice *out_d VkDeviceQueueCreateInfo q_create_info[index_count]; - f32 queue_priority[2] = {1.0f, 1.0f}; + float queue_priority[2] = {1.0f, 1.0f}; for (uint32_t i = 0; i < index_count; i++) { q_create_info[i].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO; q_create_info[i].queueFamilyIndex = indices[i]; @@ -267,7 +263,7 @@ rend_vk_device_detect_depth_format(RendVkDevice *device) } static uint32_t -rend_vk_device_score_default(RendVkDevice *device, RendSpecs minimum_specs, char **required_extensions) +rend_vk_device_score_default(RendVkDevice *device, RendSpecs minimum_specs, const char **required_extensions, uint32_t required_extension_count) { /* NOTE: When we score the device we will also check for specs. Not meeting a spec * leads to 0 score and continue. We will assume device already contains some information @@ -346,10 +342,8 @@ rend_vk_device_score_default(RendVkDevice *device, RendSpecs minimum_specs, char available_extentions = rmalloc(available_extentions_count * sizeof(*available_extentions)); CHECK_VK_RESULT(vkEnumerateDeviceExtensionProperties(device->physical_device, VK_NULL_HANDLE, &available_extentions_count, available_extentions)); - uint32_t required_extention_count = p_darray_len(required_extensions); - bool overall_found = true; - for (uint32_t i = 0; i < required_extention_count; ++i) { + for (uint32_t i = 0; i < required_extension_count; ++i) { bool found = false; for (uint32_t j = 0; j < available_extentions_count; ++j) { if (strcmp(required_extensions[i], available_extentions[j].extensionName) == 0) { |
