layers: Expose core validation extension info
authorMike Schuchardt <mikes@lunarg.com>
Tue, 21 Mar 2017 22:30:37 +0000 (16:30 -0600)
committerMark Lobodzinski <mark@lunarg.com>
Mon, 27 Mar 2017 20:36:45 +0000 (14:36 -0600)
Change-Id: I94d854ad59d42ea4a0de0b76c7fb3829baf52abb

layers/core_validation.cpp
layers/core_validation_types.h

index 1d4e731..f5928e4 100644 (file)
@@ -102,16 +102,6 @@ static const VkDeviceMemory MEMORY_UNBOUND = VkDeviceMemory(~((uint64_t)(0)) - 1
 // by the extent of a swapchain targeting the surface.
 static const uint32_t kSurfaceSizeFromSwapchain = 0xFFFFFFFFu;
 
-struct devExts {
-    bool wsi_enabled;
-    bool wsi_display_swapchain_enabled;
-    bool nv_glsl_shader_enabled;
-    bool khr_descriptor_update_template_enabled;
-    bool khr_shader_draw_parameters_enabled;
-    unordered_map<VkSwapchainKHR, unique_ptr<SWAPCHAIN_NODE>> swapchainMap;
-    unordered_map<VkImage, VkSwapchainKHR> imageToSwapchainMap;
-};
-
 // fwd decls
 struct shader_module;
 
@@ -3851,6 +3841,7 @@ static void checkDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo,
     dev_data->device_extensions.nv_glsl_shader_enabled = false;
     dev_data->device_extensions.khr_descriptor_update_template_enabled = false;
     dev_data->device_extensions.khr_shader_draw_parameters_enabled = false;
+    dev_data->device_extensions.khr_maintenance1_enabled = false;
 
     for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
         if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) {
@@ -3868,6 +3859,9 @@ static void checkDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo,
         if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME) == 0) {
             dev_data->device_extensions.khr_shader_draw_parameters_enabled = true;
         }
+        if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_MAINTENANCE1_EXTENSION_NAME) == 0) {
+            dev_data->device_extensions.khr_maintenance1_enabled = true;
+        }
     }
 }
 
@@ -6186,6 +6180,8 @@ const VkPhysicalDeviceFeatures *GetEnabledFeatures(const layer_data *device_data
     return &device_data->enabled_features;
 }
 
+const devExts *GetDeviceExtensions(const layer_data *device_data) { return &device_data->device_extensions; }
+
 VKAPI_ATTR VkResult VKAPI_CALL CreateImage(VkDevice device, const VkImageCreateInfo *pCreateInfo,
                                            const VkAllocationCallbacks *pAllocator, VkImage *pImage) {
     VkResult result = VK_ERROR_VALIDATION_FAILED_EXT;
index f80a585..b55e4f8 100644 (file)
@@ -783,6 +783,18 @@ public:
 // Fwd declarations of layer_data and helpers to look-up/validate state from layer_data maps
 namespace core_validation {
 struct layer_data;
+
+struct devExts {
+    bool wsi_enabled;
+    bool wsi_display_swapchain_enabled;
+    bool nv_glsl_shader_enabled;
+    bool khr_descriptor_update_template_enabled;
+    bool khr_shader_draw_parameters_enabled;
+    bool khr_maintenance1_enabled;
+    std::unordered_map<VkSwapchainKHR, std::unique_ptr<SWAPCHAIN_NODE>> swapchainMap;
+    std::unordered_map<VkImage, VkSwapchainKHR> imageToSwapchainMap;
+};
+
 cvdescriptorset::DescriptorSet *GetSetNode(const layer_data *, VkDescriptorSet);
 cvdescriptorset::DescriptorSetLayout const *GetDescriptorSetLayout(layer_data const *, VkDescriptorSetLayout);
 DESCRIPTOR_POOL_STATE *GetDescriptorPoolState(const layer_data *, const VkDescriptorPool);
@@ -847,6 +859,7 @@ std::unordered_map<ImageSubresourcePair, IMAGE_LAYOUT_NODE> *GetImageLayoutMap(l
 std::unordered_map<VkBuffer, std::unique_ptr<BUFFER_STATE>> *GetBufferMap(layer_data *device_data);
 std::unordered_map<VkBufferView, std::unique_ptr<BUFFER_VIEW_STATE>> *GetBufferViewMap(layer_data *device_data);
 std::unordered_map<VkImageView, std::unique_ptr<IMAGE_VIEW_STATE>> *GetImageViewMap(layer_data *device_data);
+const devExts *GetDeviceExtensions(const layer_data *);
 }
 
 #endif  // CORE_VALIDATION_TYPES_H_