copy /Y ..\layers\vk_layer_utils.cpp generated\common\\r
copy /Y ..\layers\vk_layer_table.cpp generated\common\\r
copy /Y ..\layers\descriptor_sets.cpp generated\common\\r
+copy /Y ..\layers\buffer_validation.cpp generated\common\\r
\r
REM create build-script root directory\r
mkdir generated\gradle-build\r
echo apply from: "../common.gradle" > generated\gradle-build\%%G\build.gradle\r
)\r
copy generated\common\descriptor_sets.cpp generated\layer-src\core_validation\descriptor_sets.cpp\r
+copy generated\common\buffer_validation.cpp generated\layer-src\core_validation\buffer_validation.cpp\r
copy generated\include\vk_safe_struct.cpp generated\layer-src\core_validation\vk_safe_struct.cpp\r
move generated\include\vk_safe_struct.cpp generated\layer-src\unique_objects\vk_safe_struct.cpp\r
echo apply from: "../common.gradle" > generated\gradle-build\unique_objects\build.gradle\r
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
# 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
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 \
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)
#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;
+}
#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_
#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"
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;
}