diff options
author | Andres Rodriguez <[email protected]> | 2019-08-13 21:49:52 -0400 |
---|---|---|
committer | Andres Rodriguez <[email protected]> | 2019-08-21 17:47:35 +0000 |
commit | bd960390bb9cd652bdcc5374ae65349c2947532c (patch) | |
tree | 1dafbe5d489e6baf12a063b499a9e3120ed57195 /src/amd/vulkan | |
parent | 0ae72df0133fe26f5713538f773646a3d1f1a730 (diff) |
radv: add RADV_DEBUG=allentrypoints
This debug option allows vkGet[Instance/Device]ProcAddr() to succeed
even if the extension associated with the requested entrypoint was not
enabled.
This has come in handy in a few instances when debugging VR
applications, so I thought it would be good to have a cleaned up version
upstreamed.
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan')
-rw-r--r-- | src/amd/vulkan/radv_debug.h | 1 | ||||
-rw-r--r-- | src/amd/vulkan/radv_device.c | 27 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/amd/vulkan/radv_debug.h b/src/amd/vulkan/radv_debug.h index 1a8b9a42c20..0e22e1663aa 100644 --- a/src/amd/vulkan/radv_debug.h +++ b/src/amd/vulkan/radv_debug.h @@ -54,6 +54,7 @@ enum { RADV_DEBUG_NO_LOAD_STORE_OPT = 0x1000000, RADV_DEBUG_NO_NGG = 0x2000000, RADV_DEBUG_NO_SHADER_BALLOT = 0x4000000, + RADV_DEBUG_ALL_ENTRYPOINTS = 0x8000000, }; enum { diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 7f89c27ad3d..2d5b006c1cf 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -497,6 +497,7 @@ static const struct debug_control radv_debug_options[] = { {"noloadstoreopt", RADV_DEBUG_NO_LOAD_STORE_OPT}, {"nongg", RADV_DEBUG_NO_NGG}, {"noshaderballot", RADV_DEBUG_NO_SHADER_BALLOT}, + {"allentrypoints", RADV_DEBUG_ALL_ENTRYPOINTS}, {NULL, 0} }; @@ -3271,11 +3272,16 @@ PFN_vkVoidFunction radv_GetInstanceProcAddr( const char* pName) { RADV_FROM_HANDLE(radv_instance, instance, _instance); + bool unchecked = instance ? instance->debug_flags & RADV_DEBUG_ALL_ENTRYPOINTS : false; - return radv_lookup_entrypoint_checked(pName, - instance ? instance->apiVersion : 0, - instance ? &instance->enabled_extensions : NULL, - NULL); + if (unchecked) { + return radv_lookup_entrypoint_unchecked(pName); + } else { + 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 @@ -3316,11 +3322,16 @@ PFN_vkVoidFunction radv_GetDeviceProcAddr( const char* pName) { RADV_FROM_HANDLE(radv_device, device, _device); + bool unchecked = device ? device->instance->debug_flags & RADV_DEBUG_ALL_ENTRYPOINTS : false; - return radv_lookup_entrypoint_checked(pName, - device->instance->apiVersion, - &device->instance->enabled_extensions, - &device->enabled_extensions); + if (unchecked) { + return radv_lookup_entrypoint_unchecked(pName); + } else { + 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, |