tests: Add dynamic function pointers to LVTs

Change-Id: I9ed5e5e7fb9643d58c0876458584b1c729836be0
diff --git a/build-android/jni/Android.mk b/build-android/jni/Android.mk
index f59304f..d8f6d8b 100644
--- a/build-android/jni/Android.mk
+++ b/build-android/jni/Android.mk
@@ -77,6 +77,7 @@
                    $(SRC_DIR)/tests/vkrenderframework.cpp \
                    $(SRC_DIR)/layers/convert_to_renderpass2.cpp \
                    $(SRC_DIR)/layers/generated/vk_safe_struct.cpp \
+                   $(SRC_DIR)/layers/generated/lvt_function_pointers.cpp \
                    $(THIRD_PARTY)/Vulkan-Tools/common/vulkan_wrapper.cpp
 LOCAL_C_INCLUDES += $(VULKAN_INCLUDE) \
                     $(LOCAL_PATH)/$(SRC_DIR)/layers/generated \
@@ -87,7 +88,7 @@
 LOCAL_STATIC_LIBRARIES := googletest_main layer_utils shaderc
 LOCAL_CPPFLAGS += -std=c++11 -DVK_PROTOTYPES -Wall -Werror -Wno-unused-function -Wno-unused-const-variable
 LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR -DNV_EXTENSIONS -DAMD_EXTENSIONS -fvisibility=hidden --include=$(THIRD_PARTY)/Vulkan-Tools/common/vulkan_wrapper.h
-LOCAL_LDLIBS := -llog -landroid
+LOCAL_LDLIBS := -llog -landroid -ldl
 LOCAL_LDFLAGS   += -Wl,-Bsymbolic
 LOCAL_LDFLAGS   += -Wl,--exclude-libs,ALL
 include $(BUILD_EXECUTABLE)
@@ -107,6 +108,7 @@
                    $(SRC_DIR)/tests/vkrenderframework.cpp \
                    $(SRC_DIR)/layers/convert_to_renderpass2.cpp \
                    $(SRC_DIR)/layers/generated/vk_safe_struct.cpp \
+                   $(SRC_DIR)/layers/generated/lvt_function_pointers.cpp \
                    $(THIRD_PARTY)/Vulkan-Tools/common/vulkan_wrapper.cpp
 LOCAL_C_INCLUDES += $(VULKAN_INCLUDE) \
                     $(LOCAL_PATH)/$(SRC_DIR)/layers/generated \
@@ -118,7 +120,7 @@
 LOCAL_CPPFLAGS += -std=c++11 -DVK_PROTOTYPES -Wall -Werror -Wno-unused-function -Wno-unused-const-variable
 LOCAL_CPPFLAGS += -DVK_USE_PLATFORM_ANDROID_KHR -DNV_EXTENSIONS -DAMD_EXTENSIONS -fvisibility=hidden -DVALIDATION_APK --include=$(THIRD_PARTY)/Vulkan-Tools/common/vulkan_wrapper.h
 LOCAL_WHOLE_STATIC_LIBRARIES += android_native_app_glue
-LOCAL_LDLIBS := -llog -landroid
+LOCAL_LDLIBS := -llog -landroid -ldl
 LOCAL_LDFLAGS := -u ANativeActivity_onCreate
 include $(BUILD_SHARED_LIBRARY)
 
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index f085a93..8706d84 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -62,8 +62,18 @@
 
 set(LIBGLM_INCLUDE_DIR ${PROJECT_SOURCE_DIR}/libs)
 
-set(COMMON_CPP vklayertests_pipeline_shader.cpp vklayertests_buffer_image_memory_sampler.cpp vklayertests_others.cpp vklayertests_descriptor_renderpass_framebuffer.cpp
-				vklayertests_command.cpp vklayertests_imageless_framebuffer.cpp vkpositivelayertests.cpp vkrenderframework.cpp vktestbinding.cpp vktestframework.cpp test_environment.cpp)
+set(COMMON_CPP
+    vklayertests_pipeline_shader.cpp
+    vklayertests_buffer_image_memory_sampler.cpp
+    vklayertests_others.cpp
+    vklayertests_descriptor_renderpass_framebuffer.cpp
+    vklayertests_command.cpp
+    vklayertests_imageless_framebuffer.cpp
+    vkpositivelayertests.cpp
+    vkrenderframework.cpp
+    vktestbinding.cpp
+    vktestframework.cpp
+    test_environment.cpp)
 
 # ~~~
 # The vulkan loader search is:
@@ -101,6 +111,7 @@
                ../layers/vk_format_utils.cpp
                ../layers/convert_to_renderpass2.cpp
                ../layers/generated/vk_safe_struct.cpp
+               ../layers/generated/lvt_function_pointers.cpp
                ${COMMON_CPP})
 add_test(NAME vk_layer_validation_tests COMMAND vk_layer_validation_tests)
 add_dependencies(vk_layer_validation_tests Vulkan::Vulkan VkLayer_khronos_validation VkLayer_khronos_validation-json)
@@ -139,12 +150,14 @@
                                       ${X11_LIBRARIES}
                                       gtest
                                       gtest_main
+                                      dl
                                       ${GLSLANG_LIBRARIES})
     else()
         target_link_libraries(vk_layer_validation_tests
                               PRIVATE Vulkan::Vulkan
                                       gtest
                                       gtest_main
+                                      dl
                                       ${GLSLANG_LIBRARIES})
     endif()
 endif()
diff --git a/tests/vkrenderframework.h b/tests/vkrenderframework.h
index eaf45d8..46129bd 100644
--- a/tests/vkrenderframework.h
+++ b/tests/vkrenderframework.h
@@ -22,6 +22,8 @@
 #ifndef VKRENDERFRAMEWORK_H
 #define VKRENDERFRAMEWORK_H
 
+#include "lvt_function_pointers.h"
+
 #ifdef ANDROID
 #include "vktestframeworkandroid.h"
 class VkImageObj;
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index c970523..ef5ae06 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -131,6 +131,8 @@
     glslang::InitializeProcess();
 
     vk_testing::set_error_callback(test_error_callback);
+
+    vk::InitDispatchTable();
 }
 
 void TestEnvironment::TearDown() { glslang::FinalizeProcess(); }
diff --git a/tests/vktestframeworkandroid.cpp b/tests/vktestframeworkandroid.cpp
index 87724d7..5bd0ec0 100644
--- a/tests/vktestframeworkandroid.cpp
+++ b/tests/vktestframeworkandroid.cpp
@@ -47,7 +47,11 @@
 void VkTestFramework::InitArgs(int *argc, char *argv[]) {}
 void VkTestFramework::Finish() {}
 
-void TestEnvironment::SetUp() { vk_testing::set_error_callback(test_error_callback); }
+void TestEnvironment::SetUp() {
+    vk_testing::set_error_callback(test_error_callback);
+
+    vk::InitDispatchTable();
+}
 
 void TestEnvironment::TearDown() {}