layers: Added Image layer to validation test suite with new test for bad ImageView
authorTobin Ehlis <tobin@lunarg.com>
Tue, 22 Sep 2015 16:11:37 +0000 (10:11 -0600)
committerTobin Ehlis <tobin@lunarg.com>
Thu, 24 Sep 2015 14:52:00 +0000 (08:52 -0600)
layers/image.cpp
layers/image.h

index 10fc36c..d822b2e 100644 (file)
@@ -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;
 
index 631d1c6..ce4f77b 100644 (file)
@@ -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