diff --git a/src/vulkan/runtime/meson.build b/src/vulkan/runtime/meson.build index 2729169d07c..9d34ae432f0 100644 --- a/src/vulkan/runtime/meson.build +++ b/src/vulkan/runtime/meson.build @@ -60,7 +60,7 @@ if dep_libdrm.found() endif if with_platform_android - vulkan_lite_runtime_files += files('vk_android.c', 'vk_android_hal.c') + vulkan_lite_runtime_files += files('vk_android.c') vulkan_lite_runtime_deps += [dep_android, idep_u_gralloc] endif diff --git a/src/vulkan/runtime/vk_android.c b/src/vulkan/runtime/vk_android.c index 2a70ff23bc7..6ef5e8ea3e2 100644 --- a/src/vulkan/runtime/vk_android.c +++ b/src/vulkan/runtime/vk_android.c @@ -67,6 +67,73 @@ vk_android_get_ugralloc(void) return _gralloc; } +static int vk_android_hal_open(const struct hw_module_t *mod, const char *id, + struct hw_device_t **dev); + +static_assert(HWVULKAN_DISPATCH_MAGIC == ICD_LOADER_MAGIC, ""); + +PUBLIC struct hwvulkan_module_t HAL_MODULE_INFO_SYM = { + .common = + { + .tag = HARDWARE_MODULE_TAG, + .module_api_version = HWVULKAN_MODULE_API_VERSION_0_1, + .hal_api_version = HARDWARE_MAKE_API_VERSION(1, 0), + .id = HWVULKAN_HARDWARE_MODULE_ID, + .name = "Mesa 3D Vulkan HAL", + .author = "Mesa 3D", + .methods = + &(hw_module_methods_t){ + .open = vk_android_hal_open, + }, + }, +}; + +static int +vk_android_hal_close(struct hw_device_t *dev) +{ + /* the hw_device_t::close() function is called upon driver unloading */ + assert(dev->version == HWVULKAN_DEVICE_API_VERSION_0_1); + assert(dev->module == &HAL_MODULE_INFO_SYM.common); + + hwvulkan_device_t *hal_dev = container_of(dev, hwvulkan_device_t, common); + free(hal_dev); + return 0; +} + +static int +vk_android_hal_open(const struct hw_module_t *mod, const char *id, + struct hw_device_t **dev) +{ + assert(mod == &HAL_MODULE_INFO_SYM.common); + assert(strcmp(id, HWVULKAN_DEVICE_0) == 0); + + hwvulkan_device_t *hal_dev = malloc(sizeof(*hal_dev)); + if (!hal_dev) + return -1; + + *hal_dev = (hwvulkan_device_t){ + .common = + { + .tag = HARDWARE_DEVICE_TAG, + .version = HWVULKAN_DEVICE_API_VERSION_0_1, + .module = &HAL_MODULE_INFO_SYM.common, + .close = vk_android_hal_close, + }, + .EnumerateInstanceExtensionProperties = + (PFN_vkEnumerateInstanceExtensionProperties)vk_icdGetInstanceProcAddr( + NULL, "vkEnumerateInstanceExtensionProperties"), + .CreateInstance = + (PFN_vkCreateInstance)vk_icdGetInstanceProcAddr( + NULL, "vkCreateInstance"), + .GetInstanceProcAddr = + (PFN_vkGetInstanceProcAddr)vk_icdGetInstanceProcAddr( + NULL, "vkGetInstanceProcAddr"), + }; + + *dev = &hal_dev->common; + return 0; +} + static VkResult vk_gralloc_to_drm_explicit_layout( struct u_gralloc_buffer_handle *in_hnd, diff --git a/src/vulkan/runtime/vk_android_hal.c b/src/vulkan/runtime/vk_android_hal.c deleted file mode 100644 index 845be4347fa..00000000000 --- a/src/vulkan/runtime/vk_android_hal.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2025 Google LLC - * SPDX-License-Identifier: MIT - */ - -#include -#include -#include -#include - -#include -#include - -static_assert(HWVULKAN_DISPATCH_MAGIC == ICD_LOADER_MAGIC, ""); - -static int vk_android_hal_open(const struct hw_module_t *mod, const char *id, - struct hw_device_t **dev); - -PUBLIC struct hwvulkan_module_t HAL_MODULE_INFO_SYM = { - .common = - { - .tag = HARDWARE_MODULE_TAG, - .module_api_version = HWVULKAN_MODULE_API_VERSION_0_1, - .hal_api_version = HARDWARE_MAKE_API_VERSION(1, 0), - .id = HWVULKAN_HARDWARE_MODULE_ID, - .name = "Mesa 3D Vulkan HAL", - .author = "Mesa 3D", - .methods = - &(hw_module_methods_t){ - .open = vk_android_hal_open, - }, - }, -}; - -static int -vk_android_hal_close(struct hw_device_t *dev) -{ - /* the hw_device_t::close() function is called upon driver unloading */ - assert(dev->version == HWVULKAN_DEVICE_API_VERSION_0_1); - assert(dev->module == &HAL_MODULE_INFO_SYM.common); - - hwvulkan_device_t *hal_dev = container_of(dev, hwvulkan_device_t, common); - free(hal_dev); - return 0; -} - -static int -vk_android_hal_open(const struct hw_module_t *mod, const char *id, - struct hw_device_t **dev) -{ - assert(mod == &HAL_MODULE_INFO_SYM.common); - assert(strcmp(id, HWVULKAN_DEVICE_0) == 0); - - hwvulkan_device_t *hal_dev = malloc(sizeof(*hal_dev)); - if (!hal_dev) - return -1; - - *hal_dev = (hwvulkan_device_t){ - .common = - { - .tag = HARDWARE_DEVICE_TAG, - .version = HWVULKAN_DEVICE_API_VERSION_0_1, - .module = &HAL_MODULE_INFO_SYM.common, - .close = vk_android_hal_close, - }, - .EnumerateInstanceExtensionProperties = - (PFN_vkEnumerateInstanceExtensionProperties)vk_icdGetInstanceProcAddr( - NULL, "vkEnumerateInstanceExtensionProperties"), - .CreateInstance = - (PFN_vkCreateInstance)vk_icdGetInstanceProcAddr( - NULL, "vkCreateInstance"), - .GetInstanceProcAddr = - (PFN_vkGetInstanceProcAddr)vk_icdGetInstanceProcAddr( - NULL, "vkGetInstanceProcAddr"), - }; - - *dev = &hal_dev->common; - return 0; -}