Skip to main content
New Participant
June 28, 2019

Vulkan debug layer support

I can't get debug layers to work on Quest. vkEnumerateDeviceLayerProperties and vkEnumerateInstanceLayerProperties both return 0 results. Are validation layers not supported or am I doing something wrong (e.g loading the wrong .so)? See code below

I notice the Vulkan Cubeworld sample refers to VK_LAYER_LUNARG_api_dump but it seems it's compiled out, which is why it presumably doesn't fail in vkCreateInstance()

mVulkanLoader = dlopen("libvulkan.so", RTLD_NOW | RTLD_LOCAL);
assert(mVulkanLoader != NULL);

vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlsym(mVulkanLoader, "vkGetInstanceProcAddr");
vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)dlsym(mVulkanLoader, "vkEnumerateInstanceLayerProperties");
vkEnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)dlsym(mVulkanLoader, "vkEnumerateInstanceExtensionProperties");

vkCreateInstance = (PFN_vkCreateInstance)dlsym(mVulkanLoader, "vkCreateInstance");

uint32_t layerCount;
vkEnumerateInstanceLayerProperties(&layerCount, nullptr);

std::vector<VkLayerProperties> availableLayers(layerCount);
vkEnumerateInstanceLayerProperties(&layerCount, availableLayers.data());
VkLayerProperties* layerProps = availableLayers.data();

1 reply

Participant
November 10, 2021

I know this is an ancient topic, but this is a common problem and the solution may save time for somebody. Vulkan validation doesn’t exists by default.  Oculus app must include copy of libVkLayer_khronos_validation.so in the lib/arm64-v8a folder.   Library may be downloaded here: https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases  More details available in Android documentation: https://developer.android.com/ndk/guides/graphics/validation-layer