null-driver: Fix vk_icdGetInstanceProcAddr() to return all vulkan commands 83/65683/1
authorTaekyun Kim <tkq.kim@samsung.com>
Mon, 11 Apr 2016 05:09:09 +0000 (14:09 +0900)
committerTaekyun Kim <tkq.kim@samsung.com>
Tue, 12 Apr 2016 05:56:02 +0000 (14:56 +0900)
Change-Id: I6c4d57537fc27b35a6d2f05ee491d47da1663571

src/null-driver/null-driver.c

index e446c7f..1c52dec 100644 (file)
@@ -2462,7 +2462,7 @@ get_instance_proc_addr(VkInstance instance, const char *name)
 {
        unsigned int i;
 
-       if (name == NULL)
+       if (instance == NULL)
        {
                for (i = 0; i < ARRAY_LENGTH(global_funcs); ++i) {
                        if (strcmp(name, global_funcs[i].name) == 0)
@@ -2475,16 +2475,35 @@ get_instance_proc_addr(VkInstance instance, const char *name)
                        if (strcmp(name, instance_funcs[i].name) == 0)
                                return instance_funcs[i].func;
                }
+
+               for (i = 0; i < ARRAY_LENGTH(device_funcs); ++i) {
+                       if (strcmp(name, device_funcs[i].name) == 0)
+                               return device_funcs[i].func;
+               }
        }
 
        return NULL;
 }
 
-VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
+VK_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL
 vk_icdGetInstanceProcAddr(VkInstance instance, const char *name)
 {
-       if (strcmp(name, "vkGetDeviceProcAddr") == 0)
-               return (PFN_vkVoidFunction)get_device_proc_addr;
+       unsigned int i;
+
+       for (i = 0; i < ARRAY_LENGTH(global_funcs); ++i) {
+               if (strcmp(name, global_funcs[i].name) == 0)
+                       return global_funcs[i].func;
+       }
+
+       for (i = 0; i < ARRAY_LENGTH(instance_funcs); ++i) {
+               if (strcmp(name, instance_funcs[i].name) == 0)
+                       return instance_funcs[i].func;
+       }
 
-       return get_instance_proc_addr(instance, name);
+       for (i = 0; i < ARRAY_LENGTH(device_funcs); ++i) {
+               if (strcmp(name, device_funcs[i].name) == 0)
+                       return device_funcs[i].func;
+       }
+
+       return NULL;
 }