diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 1d4e731533fa5b52ebf11f35718dcf953d17696d..f5928e482266d480179554dbaf879d8029b02364 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -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; diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index f80a58537ac99a641fd6ded3a00a509b871b1c48..b55e4f8668263546c3e916124e3d845dce513b78 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -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_