diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 4664c344b524ed69d520d1c6fbaac265a58db885..5d481a9da90343b57fe5353fcdab8f45962da566 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -2536,6 +2536,11 @@ static bool validate_shader_capabilities(layer_data *dev_data, shader_module con VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME); break; + case spv::CapabilitySampleMaskOverrideCoverageNV: + pass &= require_extension(report_data, dev_data->device_extensions.nv_sample_mask_override_coverage_enabled, + VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME); + break; + default: // Spirv-validator should catch these errors break; @@ -3848,6 +3853,7 @@ static void checkDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo, dev_data->device_extensions.khr_shader_draw_parameters_enabled = false; dev_data->device_extensions.khr_maintenance1_enabled = false; dev_data->device_extensions.nv_geometry_shader_passthrough_enabled = false; + dev_data->device_extensions.nv_sample_mask_override_coverage_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) { @@ -3871,6 +3877,9 @@ static void checkDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo, if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME) == 0) { dev_data->device_extensions.nv_geometry_shader_passthrough_enabled = true; } + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME) == 0) { + dev_data->device_extensions.nv_sample_mask_override_coverage_enabled = true; + } } } diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index 83bb835928f8e148d60a1dda168b0d856affc373..b8f261b70101434e2dc56d7ee9b4afb56c833582 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -792,6 +792,7 @@ struct devExts { bool khr_shader_draw_parameters_enabled; bool khr_maintenance1_enabled; bool nv_geometry_shader_passthrough_enabled; + bool nv_sample_mask_override_coverage_enabled; std::unordered_map<VkSwapchainKHR, std::unique_ptr<SWAPCHAIN_NODE>> swapchainMap; std::unordered_map<VkImage, VkSwapchainKHR> imageToSwapchainMap; };