layers: Move CreateImage recording to buf/img module

- Move source from core_validation.cpp into new module
- Add new module to layers cmake file
- Update android build scripts/makefiles for new files

Change-Id: Ia4000b26384d96a551d727f5e37997372f01764a
diff --git a/build-android/android-generate.bat b/build-android/android-generate.bat
index 283be55..257dedc 100644
--- a/build-android/android-generate.bat
+++ b/build-android/android-generate.bat
@@ -36,6 +36,7 @@
 copy /Y ..\layers\vk_layer_utils.cpp    generated\common\

 copy /Y ..\layers\vk_layer_table.cpp    generated\common\

 copy /Y ..\layers\descriptor_sets.cpp   generated\common\

+copy /Y ..\layers\buffer_validation.cpp generated\common\

 

 REM create build-script root directory

 mkdir generated\gradle-build

@@ -52,6 +53,7 @@
     echo apply from: "../common.gradle"  > generated\gradle-build\%%G\build.gradle

 )

 copy generated\common\descriptor_sets.cpp generated\layer-src\core_validation\descriptor_sets.cpp

+copy generated\common\buffer_validation.cpp generated\layer-src\core_validation\buffer_validation.cpp

 copy generated\include\vk_safe_struct.cpp generated\layer-src\core_validation\vk_safe_struct.cpp

 move generated\include\vk_safe_struct.cpp generated\layer-src\unique_objects\vk_safe_struct.cpp

 echo apply from: "../common.gradle"  > generated\gradle-build\unique_objects\build.gradle

diff --git a/build-android/android-generate.sh b/build-android/android-generate.sh
index 09022a3..662c4f0 100755
--- a/build-android/android-generate.sh
+++ b/build-android/android-generate.sh
@@ -36,6 +36,7 @@
 cp -f ../layers/vk_layer_utils.cpp    generated/common/
 cp -f ../layers/vk_layer_table.cpp    generated/common/
 cp -f ../layers/descriptor_sets.cpp   generated/common/
+cp -f ../layers/buffer_validation.cpp generated/common/
 
 # layer names and their original source files directory
 # 1 to 1 correspondence -- one layer one source file; additional files are copied
@@ -61,6 +62,7 @@
 
 # fixup - unique_objects need one more file
 cp  generated/common/descriptor_sets.cpp ${SRC_ROOT}/core_validation/descriptor_sets.cpp
+cp  generated/common/buffer_validation.cpp ${SRC_ROOT}/core_validation/buffer_validation.cpp
 cp  generated/include/vk_safe_struct.cpp ${SRC_ROOT}/core_validation/vk_safe_struct.cpp
 mv  generated/include/vk_safe_struct.cpp ${SRC_ROOT}/unique_objects/vk_safe_struct.cpp
 
diff --git a/build-android/jni/Android.mk b/build-android/jni/Android.mk
index 4577d0b..4d32594 100644
--- a/build-android/jni/Android.mk
+++ b/build-android/jni/Android.mk
@@ -33,6 +33,7 @@
 LOCAL_MODULE := VkLayer_core_validation
 LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/core_validation.cpp
 LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/descriptor_sets.cpp
+LOCAL_SRC_FILES += $(LAYER_DIR)/layer-src/core_validation/buffer_validation.cpp
 LOCAL_SRC_FILES += $(LAYER_DIR)/common/vk_layer_table.cpp
 LOCAL_C_INCLUDES += $(SRC_DIR)/include \
                     $(SRC_DIR)/layers \
diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt
index b32cf6c..295232e 100644
--- a/layers/CMakeLists.txt
+++ b/layers/CMakeLists.txt
@@ -165,7 +165,7 @@
     install(TARGETS VkLayer_utils DESTINATION ${CMAKE_INSTALL_LIBDIR})
 endif()
 
-add_vk_layer(core_validation core_validation.cpp vk_layer_table.cpp descriptor_sets.cpp)
+add_vk_layer(core_validation core_validation.cpp vk_layer_table.cpp descriptor_sets.cpp buffer_validation.cpp)
 add_vk_layer(object_tracker object_tracker.cpp vk_layer_table.cpp)
 add_vk_layer(image image.cpp vk_layer_table.cpp)
 add_vk_layer(swapchain swapchain.cpp vk_layer_table.cpp)
diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp
index 4bcbf13..0f47b30 100644
--- a/layers/buffer_validation.cpp
+++ b/layers/buffer_validation.cpp
@@ -22,3 +22,16 @@
 #define NOMINMAX
 
 #include "buffer_validation.h"
+
+VK_LAYER_EXPORT void PostCallRecordCreateImage(std::unordered_map<VkImage, std::unique_ptr<IMAGE_STATE>> &imageMap,
+                                               std::unordered_map<VkImage, std::vector<ImageSubresourcePair>> &imageSubresourceMap,
+                                               std::unordered_map<ImageSubresourcePair, IMAGE_LAYOUT_NODE> &imageLayoutMap,
+                                               const VkImageCreateInfo *pCreateInfo, VkImage *pImage) {
+    IMAGE_LAYOUT_NODE image_state;
+    image_state.layout = pCreateInfo->initialLayout;
+    image_state.format = pCreateInfo->format;
+    imageMap.insert(std::make_pair(*pImage, std::unique_ptr<IMAGE_STATE>(new IMAGE_STATE(*pImage, pCreateInfo))));
+    ImageSubresourcePair subpair{*pImage, false, VkImageSubresource()};
+    imageSubresourceMap[*pImage].push_back(subpair);
+    imageLayoutMap[subpair] = image_state;
+}
diff --git a/layers/buffer_validation.h b/layers/buffer_validation.h
index 0e53bbf..d99e565 100644
--- a/layers/buffer_validation.h
+++ b/layers/buffer_validation.h
@@ -26,4 +26,9 @@
 #include <unordered_map>
 #include <vector>
 
+VK_LAYER_EXPORT void PostCallRecordCreateImage(std::unordered_map<VkImage, std::unique_ptr<IMAGE_STATE>> &imageMap,
+                                               std::unordered_map<VkImage, std::vector<ImageSubresourcePair>> &imageSubresourceMap,
+                                               std::unordered_map<ImageSubresourcePair, IMAGE_LAYOUT_NODE> &imageLayoutMap,
+                                               const VkImageCreateInfo *pCreateInfo, VkImage *pImage);
+
 #endif // CORE_VALIDATION_BUFFER_VALIDATION_H_
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index ade1ce7..03429a1 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -61,6 +61,7 @@
 #pragma GCC diagnostic warning "-Wwrite-strings"
 #endif
 #include "core_validation.h"
+#include "buffer_validation.h"
 #include "vk_layer_table.h"
 #include "vk_layer_data.h"
 #include "vk_layer_extension_utils.h"
@@ -6482,13 +6483,7 @@
 
     if (VK_SUCCESS == result) {
         std::lock_guard<std::mutex> lock(global_lock);
-        IMAGE_LAYOUT_NODE image_state;
-        image_state.layout = pCreateInfo->initialLayout;
-        image_state.format = pCreateInfo->format;
-        dev_data->imageMap.insert(std::make_pair(*pImage, unique_ptr<IMAGE_STATE>(new IMAGE_STATE(*pImage, pCreateInfo))));
-        ImageSubresourcePair subpair = {*pImage, false, VkImageSubresource()};
-        dev_data->imageSubresourceMap[*pImage].push_back(subpair);
-        dev_data->imageLayoutMap[subpair] = image_state;
+        PostCallRecordCreateImage(dev_data->imageMap, dev_data->imageSubresourceMap, dev_data->imageLayoutMap, pCreateInfo, pImage);
     }
     return result;
 }