vulkan: Consolidate common ICD methods
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25998>
This commit is contained in:
@@ -125,14 +125,6 @@ instance-level ``vkGet*ProcAddr()`` entrypoints is trivial:
|
||||
return drv_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
|
||||
const char* pName)
|
||||
{
|
||||
VK_FROM_HANDLE(vk_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(instance, pName);
|
||||
}
|
||||
|
||||
.. c:autofunction:: vk_instance_get_proc_addr
|
||||
|
||||
.. c:autofunction:: vk_instance_get_proc_addr_unchecked
|
||||
|
@@ -370,53 +370,6 @@ radv_GetInstanceProcAddr(VkInstance _instance, const char *pName)
|
||||
#define PUBLIC
|
||||
#endif
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
/* The loader wants us to expose a second GetInstanceProcAddr function
|
||||
* to work around certain LD_PRELOAD issues seen in apps.
|
||||
*/
|
||||
@@ -426,11 +379,3 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
||||
{
|
||||
return radv_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
PUBLIC
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance, const char *pName)
|
||||
{
|
||||
RADV_FROM_HANDLE(radv_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
@@ -1833,18 +1833,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance,
|
||||
return v3dv_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
PFN_vkVoidFunction
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
|
||||
const char* pName)
|
||||
{
|
||||
V3DV_FROM_HANDLE(v3dv_instance, instance, _instance);
|
||||
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
v3dv_EnumerateInstanceLayerProperties(uint32_t *pPropertyCount,
|
||||
VkLayerProperties *pProperties)
|
||||
@@ -3089,53 +3077,6 @@ v3dv_GetDeviceImageSparseMemoryRequirementsKHR(
|
||||
*pSparseMemoryRequirementCount = 0;
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkDeviceAddress
|
||||
v3dv_GetBufferDeviceAddress(VkDevice device,
|
||||
const VkBufferDeviceAddressInfoKHR *pInfo)
|
||||
|
@@ -2575,18 +2575,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
||||
return tu_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
PFN_vkVoidFunction
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
|
||||
const char* pName)
|
||||
{
|
||||
TU_FROM_HANDLE(tu_instance, instance, _instance);
|
||||
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
tu_AllocateMemory(VkDevice _device,
|
||||
const VkMemoryAllocateInfo *pAllocateInfo,
|
||||
@@ -3207,54 +3195,6 @@ tu_DestroySampler(VkDevice _device,
|
||||
vk_object_free(&device->vk, pAllocator, sampler);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it
|
||||
* is linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to
|
||||
* ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL
|
||||
tu_GetMemoryFdKHR(VkDevice _device,
|
||||
const VkMemoryGetFdInfoKHR *pGetFdInfo,
|
||||
|
@@ -1376,15 +1376,6 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
|
||||
return lvp_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
PUBLIC
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetPhysicalDeviceProcAddr(
|
||||
VkInstance _instance,
|
||||
const char* pName)
|
||||
{
|
||||
LVP_FROM_HANDLE(lvp_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
static void
|
||||
destroy_pipelines(struct lvp_queue *queue)
|
||||
{
|
||||
@@ -2286,53 +2277,6 @@ VKAPI_ATTR void VKAPI_CALL lvp_DestroySampler(
|
||||
vk_sampler_destroy(&device->vk, pAllocator, &sampler->vk);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VKAPI_ATTR VkResult VKAPI_CALL lvp_CreatePrivateDataSlotEXT(
|
||||
VkDevice _device,
|
||||
const VkPrivateDataSlotCreateInfo* pCreateInfo,
|
||||
|
@@ -1234,17 +1234,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
||||
return pvr_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr().
|
||||
*/
|
||||
PUBLIC
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance, const char *pName)
|
||||
{
|
||||
PVR_FROM_HANDLE(pvr_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
VkResult pvr_pds_compute_shader_create_and_upload(
|
||||
struct pvr_device *device,
|
||||
struct pvr_pds_compute_shader_program *program,
|
||||
@@ -2976,47 +2965,6 @@ void pvr_DestroyFramebuffer(VkDevice _device,
|
||||
vk_free2(&device->vk.alloc, pAllocator, framebuffer);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it
|
||||
* is linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 4u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
pvr_sampler_get_hw_filter_from_vk(const struct pvr_device_info *dev_info,
|
||||
VkFilter filter)
|
||||
|
@@ -2840,17 +2840,6 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
|
||||
return anv_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
PFN_vkVoidFunction vk_icdGetPhysicalDeviceProcAddr(
|
||||
VkInstance _instance,
|
||||
const char* pName)
|
||||
{
|
||||
ANV_FROM_HANDLE(anv_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
static struct anv_state
|
||||
anv_state_pool_emit_data(struct anv_state_pool *pool, size_t size, size_t align, const void *p)
|
||||
{
|
||||
@@ -4877,53 +4866,6 @@ void anv_GetPhysicalDeviceMultisamplePropertiesEXT(
|
||||
anv_debug_ignored_stype(ext->sType);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult anv_GetPhysicalDeviceFragmentShadingRatesKHR(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
uint32_t* pFragmentShadingRateCount,
|
||||
|
@@ -2249,18 +2249,6 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
|
||||
{
|
||||
return anv_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
PFN_vkVoidFunction vk_icdGetPhysicalDeviceProcAddr(
|
||||
VkInstance _instance,
|
||||
const char* pName)
|
||||
{
|
||||
ANV_FROM_HANDLE(anv_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
static struct anv_state
|
||||
anv_state_pool_emit_data(struct anv_state_pool *pool, size_t size, size_t align, const void *p)
|
||||
{
|
||||
@@ -4017,50 +4005,3 @@ void anv_GetPhysicalDeviceMultisamplePropertiesEXT(
|
||||
vk_foreach_struct(ext, pMultisampleProperties->pNext)
|
||||
anv_debug_ignored_stype(ext->sType);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
@@ -1864,64 +1864,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance,
|
||||
return dzn_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
|
||||
const char *pName)
|
||||
{
|
||||
VK_FROM_HANDLE(dzn_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
||||
dzn_GetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,
|
||||
uint32_t *pQueueFamilyPropertyCount,
|
||||
|
@@ -19,53 +19,6 @@ nvk_EnumerateInstanceVersion(uint32_t *pApiVersion)
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t* pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 4u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static const struct vk_instance_extension_table instance_extensions = {
|
||||
#ifdef NVK_USE_WSI_PLATFORM
|
||||
.KHR_get_surface_capabilities2 = true,
|
||||
|
@@ -40,13 +40,6 @@
|
||||
#include "clc5c0.h"
|
||||
#include "clc997.h"
|
||||
|
||||
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance, const char *pName)
|
||||
{
|
||||
VK_FROM_HANDLE(nvk_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
static void
|
||||
nvk_get_device_extensions(const struct nv_device_info *info,
|
||||
struct vk_device_extension_table *ext)
|
||||
|
@@ -1019,17 +1019,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
||||
return panvk_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
PFN_vkVoidFunction
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance, const char *pName)
|
||||
{
|
||||
VK_FROM_HANDLE(panvk_instance, instance, _instance);
|
||||
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->vk, pName);
|
||||
}
|
||||
|
||||
VkResult
|
||||
panvk_AllocateMemory(VkDevice _device,
|
||||
const VkMemoryAllocateInfo *pAllocateInfo,
|
||||
@@ -1442,54 +1431,6 @@ panvk_DestroySampler(VkDevice _device, VkSampler _sampler,
|
||||
vk_object_free(&device->vk, pAllocator, sampler);
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it
|
||||
* is linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to
|
||||
* ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
*pSupportedVersion = MIN2(*pSupportedVersion, 5u);
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
VkResult
|
||||
panvk_GetMemoryFdKHR(VkDevice _device, const VkMemoryGetFdInfoKHR *pGetFdInfo,
|
||||
int *pFd)
|
||||
|
@@ -12,39 +12,14 @@
|
||||
|
||||
#include "vn_instance.h"
|
||||
|
||||
/* we support all versions from version 1 up to version 5 */
|
||||
static uint32_t vn_icd_version = 5;
|
||||
|
||||
VkResult
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
vn_env_init();
|
||||
vn_trace_init();
|
||||
|
||||
vn_icd_version = MIN2(vn_icd_version, *pSupportedVersion);
|
||||
if (VN_DEBUG(INIT))
|
||||
vn_log(NULL, "using ICD interface version %d", vn_icd_version);
|
||||
|
||||
*pSupportedVersion = vn_icd_version;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
PFN_vkVoidFunction
|
||||
vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
||||
{
|
||||
return vn_GetInstanceProcAddr(instance, pName);
|
||||
}
|
||||
|
||||
PFN_vkVoidFunction
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance, const char *pName)
|
||||
{
|
||||
struct vn_instance *instance = vn_instance_from_handle(_instance);
|
||||
return vk_instance_get_physical_device_proc_addr(&instance->base.base,
|
||||
pName);
|
||||
}
|
||||
|
||||
bool
|
||||
vn_icd_supports_api_version(uint32_t api_version)
|
||||
{
|
||||
return vn_icd_version >= 5 || api_version < VK_API_VERSION_1_1;
|
||||
return vk_get_negotiated_icd_version() >= 5 || api_version < VK_API_VERSION_1_1;
|
||||
}
|
||||
|
@@ -490,3 +490,80 @@ vk_common_EnumeratePhysicalDeviceGroups(VkInstance _instance, uint32_t *pGroupCo
|
||||
|
||||
return vk_outarray_status(&out);
|
||||
}
|
||||
|
||||
/* For Windows, PUBLIC is default-defined to __declspec(dllexport) to automatically export the
|
||||
* public entrypoints from a DLL. However, this declspec needs to match between declaration and
|
||||
* definition, and this attribute is not present on the prototypes specified in vk_icd.h. Instead,
|
||||
* we'll use a .def file to manually export these entrypoints on Windows.
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#undef PUBLIC
|
||||
#define PUBLIC
|
||||
#endif
|
||||
|
||||
/* With version 4+ of the loader interface the ICD should expose
|
||||
* vk_icdGetPhysicalDeviceProcAddr()
|
||||
*/
|
||||
PUBLIC VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
|
||||
vk_icdGetPhysicalDeviceProcAddr(VkInstance _instance,
|
||||
const char *pName)
|
||||
{
|
||||
VK_FROM_HANDLE(vk_instance, instance, _instance);
|
||||
return vk_instance_get_physical_device_proc_addr(instance, pName);
|
||||
}
|
||||
|
||||
static uint32_t vk_icd_version = 5;
|
||||
|
||||
uint32_t
|
||||
vk_get_negotiated_icd_version(void)
|
||||
{
|
||||
return vk_icd_version;
|
||||
}
|
||||
|
||||
PUBLIC VKAPI_ATTR VkResult VKAPI_CALL
|
||||
vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *pSupportedVersion)
|
||||
{
|
||||
/* For the full details on loader interface versioning, see
|
||||
* <https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md>.
|
||||
* What follows is a condensed summary, to help you navigate the large and
|
||||
* confusing official doc.
|
||||
*
|
||||
* - Loader interface v0 is incompatible with later versions. We don't
|
||||
* support it.
|
||||
*
|
||||
* - In loader interface v1:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdGetInstanceProcAddr(). The ICD must statically expose this
|
||||
* entrypoint.
|
||||
* - The ICD must statically expose no other Vulkan symbol unless it is
|
||||
* linked with -Bsymbolic.
|
||||
* - Each dispatchable Vulkan handle created by the ICD must be
|
||||
* a pointer to a struct whose first member is VK_LOADER_DATA. The
|
||||
* ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.
|
||||
* - The loader implements vkCreate{PLATFORM}SurfaceKHR() and
|
||||
* vkDestroySurfaceKHR(). The ICD must be capable of working with
|
||||
* such loader-managed surfaces.
|
||||
*
|
||||
* - Loader interface v2 differs from v1 in:
|
||||
* - The first ICD entrypoint called by the loader is
|
||||
* vk_icdNegotiateLoaderICDInterfaceVersion(). The ICD must
|
||||
* statically expose this entrypoint.
|
||||
*
|
||||
* - Loader interface v3 differs from v2 in:
|
||||
* - The ICD must implement vkCreate{PLATFORM}SurfaceKHR(),
|
||||
* vkDestroySurfaceKHR(), and other API which uses VKSurfaceKHR,
|
||||
* because the loader no longer does so.
|
||||
*
|
||||
* - Loader interface v4 differs from v3 in:
|
||||
* - The ICD must implement vk_icdGetPhysicalDeviceProcAddr().
|
||||
*
|
||||
* - Loader interface v5 differs from v4 in:
|
||||
* - The ICD must support Vulkan API version 1.1 and must not return
|
||||
* VK_ERROR_INCOMPATIBLE_DRIVER from vkCreateInstance() unless a
|
||||
* Vulkan Loader with interface v4 or smaller is being used and the
|
||||
* application provides an API version that is greater than 1.0.
|
||||
*/
|
||||
vk_icd_version = MIN2(vk_icd_version, *pSupportedVersion);
|
||||
*pSupportedVersion = vk_icd_version;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
@@ -243,6 +243,9 @@ void
|
||||
vk_instance_add_driver_trace_modes(struct vk_instance *instance,
|
||||
const struct debug_control *modes);
|
||||
|
||||
uint32_t
|
||||
vk_get_negotiated_icd_version(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user