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);
|
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
|
||||||
|
|
||||||
.. c:autofunction:: vk_instance_get_proc_addr_unchecked
|
.. c:autofunction:: vk_instance_get_proc_addr_unchecked
|
||||||
|
@@ -370,53 +370,6 @@ radv_GetInstanceProcAddr(VkInstance _instance, const char *pName)
|
|||||||
#define PUBLIC
|
#define PUBLIC
|
||||||
#endif
|
#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
|
/* The loader wants us to expose a second GetInstanceProcAddr function
|
||||||
* to work around certain LD_PRELOAD issues seen in apps.
|
* 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);
|
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);
|
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
|
VKAPI_ATTR VkResult VKAPI_CALL
|
||||||
v3dv_EnumerateInstanceLayerProperties(uint32_t *pPropertyCount,
|
v3dv_EnumerateInstanceLayerProperties(uint32_t *pPropertyCount,
|
||||||
VkLayerProperties *pProperties)
|
VkLayerProperties *pProperties)
|
||||||
@@ -3089,53 +3077,6 @@ v3dv_GetDeviceImageSparseMemoryRequirementsKHR(
|
|||||||
*pSparseMemoryRequirementCount = 0;
|
*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
|
VkDeviceAddress
|
||||||
v3dv_GetBufferDeviceAddress(VkDevice device,
|
v3dv_GetBufferDeviceAddress(VkDevice device,
|
||||||
const VkBufferDeviceAddressInfoKHR *pInfo)
|
const VkBufferDeviceAddressInfoKHR *pInfo)
|
||||||
|
@@ -2575,18 +2575,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
|||||||
return tu_GetInstanceProcAddr(instance, 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
|
VKAPI_ATTR VkResult VKAPI_CALL
|
||||||
tu_AllocateMemory(VkDevice _device,
|
tu_AllocateMemory(VkDevice _device,
|
||||||
const VkMemoryAllocateInfo *pAllocateInfo,
|
const VkMemoryAllocateInfo *pAllocateInfo,
|
||||||
@@ -3207,54 +3195,6 @@ tu_DestroySampler(VkDevice _device,
|
|||||||
vk_object_free(&device->vk, pAllocator, 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 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
|
VKAPI_ATTR VkResult VKAPI_CALL
|
||||||
tu_GetMemoryFdKHR(VkDevice _device,
|
tu_GetMemoryFdKHR(VkDevice _device,
|
||||||
const VkMemoryGetFdInfoKHR *pGetFdInfo,
|
const VkMemoryGetFdInfoKHR *pGetFdInfo,
|
||||||
|
@@ -1376,15 +1376,6 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
|
|||||||
return lvp_GetInstanceProcAddr(instance, pName);
|
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
|
static void
|
||||||
destroy_pipelines(struct lvp_queue *queue)
|
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);
|
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(
|
VKAPI_ATTR VkResult VKAPI_CALL lvp_CreatePrivateDataSlotEXT(
|
||||||
VkDevice _device,
|
VkDevice _device,
|
||||||
const VkPrivateDataSlotCreateInfo* pCreateInfo,
|
const VkPrivateDataSlotCreateInfo* pCreateInfo,
|
||||||
|
@@ -1234,17 +1234,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
|||||||
return pvr_GetInstanceProcAddr(instance, 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(
|
VkResult pvr_pds_compute_shader_create_and_upload(
|
||||||
struct pvr_device *device,
|
struct pvr_device *device,
|
||||||
struct pvr_pds_compute_shader_program *program,
|
struct pvr_pds_compute_shader_program *program,
|
||||||
@@ -2976,47 +2965,6 @@ void pvr_DestroyFramebuffer(VkDevice _device,
|
|||||||
vk_free2(&device->vk.alloc, pAllocator, framebuffer);
|
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
|
static uint32_t
|
||||||
pvr_sampler_get_hw_filter_from_vk(const struct pvr_device_info *dev_info,
|
pvr_sampler_get_hw_filter_from_vk(const struct pvr_device_info *dev_info,
|
||||||
VkFilter filter)
|
VkFilter filter)
|
||||||
|
@@ -2840,17 +2840,6 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
|
|||||||
return anv_GetInstanceProcAddr(instance, pName);
|
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
|
static struct anv_state
|
||||||
anv_state_pool_emit_data(struct anv_state_pool *pool, size_t size, size_t align, const void *p)
|
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);
|
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(
|
VkResult anv_GetPhysicalDeviceFragmentShadingRatesKHR(
|
||||||
VkPhysicalDevice physicalDevice,
|
VkPhysicalDevice physicalDevice,
|
||||||
uint32_t* pFragmentShadingRateCount,
|
uint32_t* pFragmentShadingRateCount,
|
||||||
|
@@ -2249,18 +2249,6 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
|
|||||||
{
|
{
|
||||||
return anv_GetInstanceProcAddr(instance, pName);
|
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
|
static struct anv_state
|
||||||
anv_state_pool_emit_data(struct anv_state_pool *pool, size_t size, size_t align, const void *p)
|
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)
|
vk_foreach_struct(ext, pMultisampleProperties->pNext)
|
||||||
anv_debug_ignored_stype(ext->sType);
|
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);
|
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
|
VKAPI_ATTR void VKAPI_CALL
|
||||||
dzn_GetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,
|
dzn_GetPhysicalDeviceQueueFamilyProperties2(VkPhysicalDevice physicalDevice,
|
||||||
uint32_t *pQueueFamilyPropertyCount,
|
uint32_t *pQueueFamilyPropertyCount,
|
||||||
|
@@ -19,53 +19,6 @@ nvk_EnumerateInstanceVersion(uint32_t *pApiVersion)
|
|||||||
return VK_SUCCESS;
|
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 = {
|
static const struct vk_instance_extension_table instance_extensions = {
|
||||||
#ifdef NVK_USE_WSI_PLATFORM
|
#ifdef NVK_USE_WSI_PLATFORM
|
||||||
.KHR_get_surface_capabilities2 = true,
|
.KHR_get_surface_capabilities2 = true,
|
||||||
|
@@ -40,13 +40,6 @@
|
|||||||
#include "clc5c0.h"
|
#include "clc5c0.h"
|
||||||
#include "clc997.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
|
static void
|
||||||
nvk_get_device_extensions(const struct nv_device_info *info,
|
nvk_get_device_extensions(const struct nv_device_info *info,
|
||||||
struct vk_device_extension_table *ext)
|
struct vk_device_extension_table *ext)
|
||||||
|
@@ -1019,17 +1019,6 @@ vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
|||||||
return panvk_GetInstanceProcAddr(instance, 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
|
VkResult
|
||||||
panvk_AllocateMemory(VkDevice _device,
|
panvk_AllocateMemory(VkDevice _device,
|
||||||
const VkMemoryAllocateInfo *pAllocateInfo,
|
const VkMemoryAllocateInfo *pAllocateInfo,
|
||||||
@@ -1442,54 +1431,6 @@ panvk_DestroySampler(VkDevice _device, VkSampler _sampler,
|
|||||||
vk_object_free(&device->vk, pAllocator, 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
|
VkResult
|
||||||
panvk_GetMemoryFdKHR(VkDevice _device, const VkMemoryGetFdInfoKHR *pGetFdInfo,
|
panvk_GetMemoryFdKHR(VkDevice _device, const VkMemoryGetFdInfoKHR *pGetFdInfo,
|
||||||
int *pFd)
|
int *pFd)
|
||||||
|
@@ -12,39 +12,14 @@
|
|||||||
|
|
||||||
#include "vn_instance.h"
|
#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
|
PFN_vkVoidFunction
|
||||||
vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
vk_icdGetInstanceProcAddr(VkInstance instance, const char *pName)
|
||||||
{
|
{
|
||||||
return vn_GetInstanceProcAddr(instance, 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
|
bool
|
||||||
vn_icd_supports_api_version(uint32_t api_version)
|
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);
|
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,
|
vk_instance_add_driver_trace_modes(struct vk_instance *instance,
|
||||||
const struct debug_control *modes);
|
const struct debug_control *modes);
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
vk_get_negotiated_icd_version(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user