From 2664122d97c3f0a98b3e5d12833bbb20196ca837 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski <mark@lunarg.com> Date: Thu, 23 Mar 2017 14:04:56 -0600 Subject: [PATCH] layers: Support CapabilityGeometryShaderPassThroughNV Recognize and validate shader capability added in the new VK_NV_geometry_shader_passthrough extension. Change-Id: Iea46b9a8d0c77b695507ac5f1c8f8852f528c210 --- layers/core_validation.cpp | 9 +++++++++ layers/core_validation_types.h | 1 + 2 files changed, 10 insertions(+) diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index f5928e482..4664c344b 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -2531,6 +2531,11 @@ static bool validate_shader_capabilities(layer_data *dev_data, shader_module con VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME); break; + case spv::CapabilityGeometryShaderPassthroughNV: + pass &= require_extension(report_data, dev_data->device_extensions.nv_geometry_shader_passthrough_enabled, + VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME); + break; + default: // Spirv-validator should catch these errors break; @@ -3842,6 +3847,7 @@ static void checkDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo, 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; + dev_data->device_extensions.nv_geometry_shader_passthrough_enabled = false; for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) { @@ -3862,6 +3868,9 @@ static void checkDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo, if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_MAINTENANCE1_EXTENSION_NAME) == 0) { dev_data->device_extensions.khr_maintenance1_enabled = true; } + if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME) == 0) { + dev_data->device_extensions.nv_geometry_shader_passthrough_enabled = true; + } } } diff --git a/layers/core_validation_types.h b/layers/core_validation_types.h index b55e4f866..83bb83592 100644 --- a/layers/core_validation_types.h +++ b/layers/core_validation_types.h @@ -791,6 +791,7 @@ struct devExts { bool khr_descriptor_update_template_enabled; bool khr_shader_draw_parameters_enabled; bool khr_maintenance1_enabled; + bool nv_geometry_shader_passthrough_enabled; std::unordered_map<VkSwapchainKHR, std::unique_ptr<SWAPCHAIN_NODE>> swapchainMap; std::unordered_map<VkImage, VkSwapchainKHR> imageToSwapchainMap; }; -- GitLab