render/vulkan: remove exts arg from vulkan_instance_create()

This commit is contained in:
Simon Ser 2022-11-04 14:12:38 +01:00
parent 7a42392da2
commit 2ac2835a1f
3 changed files with 6 additions and 26 deletions

View file

@ -25,13 +25,9 @@ struct wlr_vk_instance {
}; };
// Creates and initializes a vulkan instance. // Creates and initializes a vulkan instance.
// Will try to enable the given extensions but not fail if they are not
// available which can later be checked by the caller.
// The debug parameter determines if validation layers are enabled and a // The debug parameter determines if validation layers are enabled and a
// debug messenger created. // debug messenger created.
// `compositor_name` and `compositor_version` are passed to the vulkan driver. struct wlr_vk_instance *vulkan_instance_create(bool debug);
struct wlr_vk_instance *vulkan_instance_create(size_t ext_count,
const char **exts, bool debug);
void vulkan_instance_destroy(struct wlr_vk_instance *ini); void vulkan_instance_destroy(struct wlr_vk_instance *ini);
// Logical vulkan device state. // Logical vulkan device state.

View file

@ -1713,7 +1713,7 @@ struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) {
// NOTE: we could add functionality to allow the compositor passing its // NOTE: we could add functionality to allow the compositor passing its
// name and version to this function. Just use dummies until then, // name and version to this function. Just use dummies until then,
// shouldn't be relevant to the driver anyways // shouldn't be relevant to the driver anyways
struct wlr_vk_instance *ini = vulkan_instance_create(0, NULL, default_debug); struct wlr_vk_instance *ini = vulkan_instance_create(default_debug);
if (!ini) { if (!ini) {
wlr_log(WLR_ERROR, "creating vulkan instance for renderer failed"); wlr_log(WLR_ERROR, "creating vulkan instance for renderer failed");
return NULL; return NULL;

View file

@ -84,8 +84,7 @@ static VkBool32 debug_callback(VkDebugUtilsMessageSeverityFlagBitsEXT severity,
// instance // instance
struct wlr_vk_instance *vulkan_instance_create(size_t ext_count, struct wlr_vk_instance *vulkan_instance_create(bool debug) {
const char **exts, bool debug) {
// we require vulkan 1.1 // we require vulkan 1.1
PFN_vkEnumerateInstanceVersion pfEnumInstanceVersion = PFN_vkEnumerateInstanceVersion pfEnumInstanceVersion =
(PFN_vkEnumerateInstanceVersion) (PFN_vkEnumerateInstanceVersion)
@ -132,22 +131,7 @@ struct wlr_vk_instance *vulkan_instance_create(size_t ext_count,
} }
size_t extensions_len = 0; size_t extensions_len = 0;
const char **extensions = calloc(1 + ext_count, sizeof(*extensions)); const char *extensions[1] = {0};
if (!extensions) {
wlr_log_errno(WLR_ERROR, "allocation failed");
goto error;
}
// find extensions
for (unsigned i = 0; i < ext_count; ++i) {
if (find_extensions(avail_ext_props, avail_extc, &exts[i], 1)) {
wlr_log(WLR_DEBUG, "vulkan instance extension %s not found",
exts[i]);
continue;
}
extensions[extensions_len++] = exts[i];
}
bool debug_utils_found = false; bool debug_utils_found = false;
if (debug) { if (debug) {
@ -158,6 +142,8 @@ struct wlr_vk_instance *vulkan_instance_create(size_t ext_count,
} }
} }
assert(extensions_len <= sizeof(extensions) / sizeof(extensions[0]));
VkApplicationInfo application_info = {0}; VkApplicationInfo application_info = {0};
application_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; application_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
application_info.pEngineName = "wlroots"; application_info.pEngineName = "wlroots";
@ -210,8 +196,6 @@ struct wlr_vk_instance *vulkan_instance_create(size_t ext_count,
goto error; goto error;
} }
free(extensions);
// debug callback // debug callback
if (debug_utils_found) { if (debug_utils_found) {
ini->api.createDebugUtilsMessengerEXT = ini->api.createDebugUtilsMessengerEXT =