vulkan: Enumerate device layer extensions
Change-Id: I453d815ffd910fd56103f1c624cca63ac2014df8
(cherry picked from commit 82a2b6626286610f417df3d48b8e9a56e3726f38)
diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
index 00eb9b1..985b7e4 100644
--- a/vulkan/libvulkan/loader.cpp
+++ b/vulkan/libvulkan/loader.cpp
@@ -687,12 +687,22 @@
VKAPI_ATTR
VkResult EnumerateDeviceExtensionProperties_Bottom(
VkPhysicalDevice /*pdev*/,
- const char* /*layer_name*/,
+ const char* layer_name,
uint32_t* properties_count,
- VkExtensionProperties* /*properties*/) {
- // TODO(jessehall): Implement me...
- *properties_count = 0;
- return VK_SUCCESS;
+ VkExtensionProperties* properties) {
+ const VkExtensionProperties* extensions = nullptr;
+ uint32_t num_extensions = 0;
+ if (layer_name) {
+ GetDeviceLayerExtensions(layer_name, &extensions, &num_extensions);
+ } else {
+ // TODO(jessehall)
+ }
+
+ if (!properties || *properties_count > num_extensions)
+ *properties_count = num_extensions;
+ if (properties)
+ std::copy(extensions, extensions + *properties_count, properties);
+ return *properties_count < num_extensions ? VK_INCOMPLETE : VK_SUCCESS;
}
VKAPI_ATTR