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;
}