loader: Fix VK_EXT_debug_utils crash

Fix a crash where the debug utils extension would crash if no layers
were present that implemented a given entry point.

(cherry picked from commit 4b858b5b90eac5cd4b35c9d4c15fb220703dc50e)

Test: angle_end2end_tests
Change-Id: Ied1da23dfdc952893a5aaad4ae01f69bd6010523
diff --git a/scripts/loader_extension_generator.py b/scripts/loader_extension_generator.py
index 2142e90..f2dbba4 100644
--- a/scripts/loader_extension_generator.py
+++ b/scripts/loader_extension_generator.py
@@ -49,6 +49,8 @@
 
 AVOID_EXT_NAMES = ['VK_EXT_debug_report']
 
+NULL_CHECK_EXT_NAMES= ['VK_EXT_debug_utils']
+
 AVOID_CMD_NAMES = ['vkCreateDebugUtilsMessengerEXT',
                    'vkDestroyDebugUtilsMessengerEXT',
                    'vkSubmitDebugUtilsMessageEXT']
@@ -1011,6 +1013,8 @@
                     funcs += '        local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;\n'
                     funcs += '    }\n'
 
+                if ext_cmd.ext_name in NULL_CHECK_EXT_NAMES:
+                    funcs += '    if (disp->' + base_name + ' != NULL) {\n'
                 funcs += return_prefix
                 funcs += 'disp->'
                 funcs += base_name
@@ -1031,6 +1035,11 @@
 
                     count += 1
                 funcs += ');\n'
+                if ext_cmd.ext_name in NULL_CHECK_EXT_NAMES:
+                    if ext_cmd.return_type != None:
+                        funcs += '    } else {\n'
+                        funcs += '        return VK_SUCCESS;\n'
+                    funcs += '    }\n'
                 funcs += '}\n\n'
 
                 funcs += term_header
@@ -1245,6 +1254,8 @@
                 funcs += ext_cmd.params[0].name
                 funcs += ');\n'
 
+                if ext_cmd.ext_name in NULL_CHECK_EXT_NAMES:
+                    funcs += '    if (disp->' + base_name + ' != NULL) {\n'
                 funcs += return_prefix
                 funcs += 'disp->'
                 funcs += base_name
@@ -1256,6 +1267,11 @@
                     funcs += param.name
                     count += 1
                 funcs += ');\n'
+                if ext_cmd.ext_name in NULL_CHECK_EXT_NAMES:
+                    if ext_cmd.return_type != None:
+                        funcs += '    } else {\n'
+                        funcs += '        return VK_SUCCESS;\n'
+                    funcs += '    }\n'
                 funcs += '}\n\n'
 
             if ext_cmd.protect is not None: