aboutsummaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan/radv_device.c
diff options
context:
space:
mode:
authorBas Nieuwenhuizen <[email protected]>2018-02-11 14:38:42 +0100
committerBas Nieuwenhuizen <[email protected]>2018-02-23 00:39:02 +0100
commite72ad05c1d6bdedf3b15cfe7ba42c801254d6112 (patch)
treef38b69296fb1f70aa666092c44e4a6ed1d636eeb /src/amd/vulkan/radv_device.c
parent414f5e0e14e5f2e90b688344660751803935c6f2 (diff)
radv: Return NULL for entrypoints when not supported.
This implements strict checking for the entrypoint ProcAddr functions. - InstanceProcAddr with instance = NULL, only returns the 3 allowed entrypoints. - DeviceProcAddr does not return any instance entrypoints. - InstanceProcAddr does not return non-supported or disabled instance entrypoints. - DeviceProcAddr does not return non-supported or disabled device entrypoints. - InstanceProcAddr still returns non-supported device entrypoints. Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_device.c')
-rw-r--r--src/amd/vulkan/radv_device.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 79534fbd5fc..f197b7f484c 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -2311,10 +2311,15 @@ VkResult radv_EnumerateDeviceExtensionProperties(
}
PFN_vkVoidFunction radv_GetInstanceProcAddr(
- VkInstance instance,
+ VkInstance _instance,
const char* pName)
{
- return radv_lookup_entrypoint(pName);
+ RADV_FROM_HANDLE(radv_instance, instance, _instance);
+
+ return radv_lookup_entrypoint_checked(pName,
+ instance ? instance->apiVersion : 0,
+ instance ? &instance->enabled_extensions : NULL,
+ NULL);
}
/* The loader wants us to expose a second GetInstanceProcAddr function
@@ -2334,10 +2339,15 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vk_icdGetInstanceProcAddr(
}
PFN_vkVoidFunction radv_GetDeviceProcAddr(
- VkDevice device,
+ VkDevice _device,
const char* pName)
{
- return radv_lookup_entrypoint(pName);
+ RADV_FROM_HANDLE(radv_device, device, _device);
+
+ return radv_lookup_entrypoint_checked(pName,
+ device->instance->apiVersion,
+ &device->instance->enabled_extensions,
+ &device->enabled_extensions);
}
bool radv_get_memory_fd(struct radv_device *device,