From e4c0a34bfe4c9cc45eba06363bce43fbce5b2813 Mon Sep 17 00:00:00 2001 From: Michel Zou Date: Mon, 14 Jun 2021 15:57:17 +0200 Subject: [PATCH] radv: fix build with mingw Cc: 21.2 mesa-stable Reviewed-by: Joshua Ashton Reviewed-by: Samuel Pitoiset Closes #5092 Part-of: --- src/amd/common/ac_gpu_info.c | 30 +++++++++++++++--------------- src/amd/vulkan/meson.build | 4 +++- src/amd/vulkan/radv_device.c | 7 +++++++ src/amd/vulkan/vulkan_radv.def | 4 ++++ 4 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 src/amd/vulkan/vulkan_radv.def diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 571995b4372..7bb4fbb08f0 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -136,76 +136,76 @@ struct amdgpu_gpu_info { uint32_t vce_harvest_config; uint32_t pci_rev_id; }; -int drmGetCap(int fd, uint64_t capability, uint64_t *value) +static int drmGetCap(int fd, uint64_t capability, uint64_t *value) { return -EINVAL; } -void drmFreeDevice(drmDevicePtr *device) +static void drmFreeDevice(drmDevicePtr *device) { } -int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) +static int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) { return -ENODEV; } -int amdgpu_bo_alloc(amdgpu_device_handle dev, +static int amdgpu_bo_alloc(amdgpu_device_handle dev, struct amdgpu_bo_alloc_request *alloc_buffer, amdgpu_bo_handle *buf_handle) { return -EINVAL; } -int amdgpu_bo_free(amdgpu_bo_handle buf_handle) +static int amdgpu_bo_free(amdgpu_bo_handle buf_handle) { return -EINVAL; } -int amdgpu_query_buffer_size_alignment(amdgpu_device_handle dev, +static int amdgpu_query_buffer_size_alignment(amdgpu_device_handle dev, struct amdgpu_buffer_size_alignments *info) { return -EINVAL; } -int amdgpu_query_firmware_version(amdgpu_device_handle dev, unsigned fw_type, +static int amdgpu_query_firmware_version(amdgpu_device_handle dev, unsigned fw_type, unsigned ip_instance, unsigned index, uint32_t *version, uint32_t *feature) { return -EINVAL; } -int amdgpu_query_hw_ip_info(amdgpu_device_handle dev, unsigned type, +static int amdgpu_query_hw_ip_info(amdgpu_device_handle dev, unsigned type, unsigned ip_instance, struct drm_amdgpu_info_hw_ip *info) { return -EINVAL; } -int amdgpu_query_heap_info(amdgpu_device_handle dev, uint32_t heap, +static int amdgpu_query_heap_info(amdgpu_device_handle dev, uint32_t heap, uint32_t flags, struct amdgpu_heap_info *info) { return -EINVAL; } -int amdgpu_query_gpu_info(amdgpu_device_handle dev, +static int amdgpu_query_gpu_info(amdgpu_device_handle dev, struct amdgpu_gpu_info *info) { return -EINVAL; } -int amdgpu_query_info(amdgpu_device_handle dev, unsigned info_id, +static int amdgpu_query_info(amdgpu_device_handle dev, unsigned info_id, unsigned size, void *value) { return -EINVAL; } -int amdgpu_query_sw_info(amdgpu_device_handle dev, enum amdgpu_sw_info info, +static int amdgpu_query_sw_info(amdgpu_device_handle dev, enum amdgpu_sw_info info, void *value) { return -EINVAL; } -int amdgpu_query_gds_info(amdgpu_device_handle dev, +static int amdgpu_query_gds_info(amdgpu_device_handle dev, struct amdgpu_gds_resource_info *gds_info) { return -EINVAL; } -int amdgpu_query_video_caps_info(amdgpu_device_handle dev, unsigned cap_type, +static int amdgpu_query_video_caps_info(amdgpu_device_handle dev, unsigned cap_type, unsigned size, void *value) { return -EINVAL; } -const char *amdgpu_get_marketing_name(amdgpu_device_handle dev) +static const char *amdgpu_get_marketing_name(amdgpu_device_handle dev) { return NULL; } diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build index 3bd5e0b812e..f0e4a0a1ad0 100644 --- a/src/amd/vulkan/meson.build +++ b/src/amd/vulkan/meson.build @@ -139,7 +139,6 @@ endif if with_platform_windows radv_flags += [ '-DVK_USE_PLATFORM_WIN32_KHR', - '-DVK_NO_PROTOTYPES', ] endif @@ -153,9 +152,12 @@ if with_llvm and with_ld_version_script libvulkan_radeon_link_depends += files('vulkan.sym') endif +vulkan_radv_def = 'vulkan_radv.def' + libvulkan_radeon = shared_library( 'vulkan_radeon', [libradv_files, radv_entrypoints, sha1_h], + vs_module_defs : vulkan_radv_def, include_directories : [ inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux, inc_amd, inc_amd_common, inc_amd_common_llvm, inc_compiler, inc_util, inc_vulkan_wsi, ], diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 656c0ba5c13..63baee59f0b 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -62,6 +62,7 @@ typedef void *drmDevicePtr; #include "git_sha1.h" #include "sid.h" #include "vk_format.h" +#include "vulkan/vk_icd.h" /* The number of IBs per submit isn't infinite, it depends on the ring type * (ie. some initial setup needed for a submit) and the number of IBs (4 DW). @@ -5201,6 +5202,12 @@ radv_GetInstanceProcAddr(VkInstance _instance, const char *pName) return vk_instance_get_proc_addr(&instance->vk, &radv_instance_entrypoints, pName); } +/* Windows will use a dll definition file to avoid build errors. */ +#ifdef _WIN32 +#undef PUBLIC +#define PUBLIC +#endif + /* The loader wants us to expose a second GetInstanceProcAddr function * to work around certain LD_PRELOAD issues seen in apps. */ diff --git a/src/amd/vulkan/vulkan_radv.def b/src/amd/vulkan/vulkan_radv.def new file mode 100644 index 00000000000..64a9caae593 --- /dev/null +++ b/src/amd/vulkan/vulkan_radv.def @@ -0,0 +1,4 @@ +EXPORTS +vk_icdNegotiateLoaderICDInterfaceVersion +vk_icdGetInstanceProcAddr +vk_icdGetPhysicalDeviceProcAddr