aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-09-22 10:11:37 -0600
committerTobin Ehlis <tobin@lunarg.com>2015-09-24 08:52:00 -0600
commitc19057b19af19dae79074851df98b6d0b811b741 (patch)
tree2d51ab1ba7170db27b73278b28a779f686314cf5
parent598da3411d86e8afb6f65c6f4d98f14c0c384248 (diff)
downloadusermoji-c19057b19af19dae79074851df98b6d0b811b741.tar.xz
layers: Added Image layer to validation test suite with new test for bad ImageView
-rw-r--r--layers/image.cpp7
-rw-r--r--layers/image.h8
2 files changed, 13 insertions, 2 deletions
diff --git a/layers/image.cpp b/layers/image.cpp
index 10fc36c9..d822b2eb 100644
--- a/layers/image.cpp
+++ b/layers/image.cpp
@@ -50,7 +50,7 @@ typedef struct _layer_data {
debug_report_data *report_data;
VkDbgMsgCallback logging_callback;
VkPhysicalDevice physicalDevice;
- unordered_map<uint64_t, unique_ptr<VkImageCreateInfo>> imageMap;
+ unordered_map<uint64_t, unique_ptr<IMAGE_STATE>> imageMap;
} layer_data;
static unordered_map<void*, layer_data*> layer_data_map;
@@ -171,6 +171,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice(VkPhysicalDevice physicalDevice, c
layer_data *device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map);
device_data->report_data = layer_debug_report_create_device(instance_data->report_data, *pDevice);
device_data->physicalDevice = physicalDevice;
+ device_data->imageMap.reserve(10);
}
return result;
@@ -285,7 +286,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreat
VkResult result = get_dispatch_table(image_device_table_map, device)->CreateImage(device, pCreateInfo, pImage);
if(result == VK_SUCCESS) {
- device_data->imageMap[pImage->handle] = unique_ptr<VkImageCreateInfo>(new VkImageCreateInfo(*pCreateInfo));
+ device_data->imageMap[pImage->handle] = unique_ptr<IMAGE_STATE>(new IMAGE_STATE(pCreateInfo));
}
return result;
}
@@ -433,6 +434,8 @@ VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI vkGetDeviceProcAddr(VkDevice device, co
return (PFN_vkVoidFunction) vkDestroyDevice;
if (!strcmp(funcName, "vkCreateImage"))
return (PFN_vkVoidFunction) vkCreateImage;
+ if (!strcmp(funcName, "vkCreateImageView"))
+ return (PFN_vkVoidFunction) vkCreateImageView;
if (!strcmp(funcName, "vkCreateRenderPass"))
return (PFN_vkVoidFunction) vkCreateRenderPass;
diff --git a/layers/image.h b/layers/image.h
index 631d1c64..ce4f77b3 100644
--- a/layers/image.h
+++ b/layers/image.h
@@ -37,4 +37,12 @@ typedef enum _IMAGE_ERROR
IMAGE_VIEW_CREATE_ERROR, // Error occurred trying to create Image View
} IMAGE_ERROR;
+typedef struct _IMAGE_STATE
+{
+ uint32_t mipLevels;
+ uint32_t arraySize;
+ _IMAGE_STATE():mipLevels(0), arraySize(0) {};
+ _IMAGE_STATE(const VkImageCreateInfo* pCreateInfo):mipLevels(pCreateInfo->mipLevels), arraySize(pCreateInfo->arraySize) {};
+} IMAGE_STATE;
+
#endif // IMAGE_H