diff --git a/CMakeLists.txt b/CMakeLists.txt index 17e39b36..1939843c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,7 +17,7 @@ # ~~~ cmake_minimum_required(VERSION 3.22.1) -project(VEL LANGUAGES CXX) +project(VEL VERSION 1.4.335 LANGUAGES CXX) add_subdirectory(scripts) @@ -85,6 +85,16 @@ find_package(VulkanUtilityLibraries CONFIG) add_subdirectory(layers) add_subdirectory(utils) +option(EXTENSION_LAYER_CODEGEN "Enable vulkan loader code generation") +if(EXTENSION_LAYER_CODEGEN) + find_package(Python3 REQUIRED) + add_custom_target(extension_layer_codegen + COMMAND Python3::Interpreter ${PROJECT_SOURCE_DIR}/scripts/generate_source.py + "${VULKAN_HEADERS_INSTALL_DIR}/${CMAKE_INSTALL_DATADIR}/vulkan/registry" + --generated-version ${VulkanHeaders_VERSION} --incremental --api vulkan + ) +endif() + option(BUILD_TESTS "Build tests") if(BUILD_TESTS) enable_testing() diff --git a/layers/shader_object/generated/shader_object_constants.h b/layers/shader_object/generated/shader_object_constants.h index 59054cc7..bf7f183b 100644 --- a/layers/shader_object/generated/shader_object_constants.h +++ b/layers/shader_object/generated/shader_object_constants.h @@ -25,91 +25,147 @@ #include "shader_object/shader_object_util.h" enum AdditionalExtensionFlagBits { - DYNAMIC_RENDERING = 1u << 0, - MAINTENANCE_2 = 1u << 1, - PRIVATE_DATA = 1u << 2, - EXTENDED_DYNAMIC_STATE_1 = 1u << 3, - EXTENDED_DYNAMIC_STATE_2 = 1u << 4, - EXTENDED_DYNAMIC_STATE_3 = 1u << 5, - VERTEX_INPUT_DYNAMIC = 1u << 6, - GRAPHICS_PIPELINE_LIBRARY = 1u << 7, - PIPELINE_LIBRARY = 1u << 8, - MULTIVIEW = 1u << 9, - CREATE_RENDERPASS_2 = 1u << 10, - DEPTH_STENCIL_RESOLVE = 1u << 11, - DRIVER_PROPERTIES = 1u << 12, + DYNAMIC_RENDERING = 1u << 0, + MAINTENANCE2 = 1u << 1, + PRIVATE_DATA = 1u << 2, + EXTENDED_DYNAMIC_STATE = 1u << 3, + EXTENDED_DYNAMIC_STATE2 = 1u << 4, + EXTENDED_DYNAMIC_STATE3 = 1u << 5, + VERTEX_INPUT_DYNAMIC_STATE = 1u << 6, + GRAPHICS_PIPELINE_LIBRARY = 1u << 7, + PIPELINE_LIBRARY = 1u << 8, + MULTIVIEW = 1u << 9, + CREATE_RENDERPASS2 = 1u << 10, + DEPTH_STENCIL_RESOLVE = 1u << 11, + DRIVER_PROPERTIES = 1u << 12, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS = 1u << 13, - TRANSFORM_FEEDBACK = 1u << 14, - CONSERVATIVE_RASTERIZATION = 1u << 15, - DEPTH_CLIP_ENABLE = 1u << 16, - SAMPLE_LOCATIONS = 1u << 17, - PROVOKING_VERTEX = 1u << 18, - LINE_RASTERIZATION = 1u << 19, - DEPTH_CLIP_CONTROL = 1u << 20, - NV_FRAMEBUFFER_MIXED_SAMPLES = 1u << 21, - NV_COVERAGE_REDUCTION_MODE = 1u << 22, - NV_FRAGMENT_COVERAGE_TO_COLOR = 1u << 23, - NV_CLIP_SPACE_W_SCALING = 1u << 24, - NV_VIEWPORT_SWIZZLE = 1u << 25, - NV_SHADING_RATE_IMAGE = 1u << 26, - NV_REPRESENTATIVE_FRAGMENT_TEST = 1u << 27, - SHADER_OBJECT = 1u << 28, + TRANSFORM_FEEDBACK = 1u << 14, + CONSERVATIVE_RASTERIZATION = 1u << 15, + DEPTH_CLIP_ENABLE = 1u << 16, + SAMPLE_LOCATIONS = 1u << 17, + PROVOKING_VERTEX = 1u << 18, + LINE_RASTERIZATION = 1u << 19, + DEPTH_CLIP_CONTROL = 1u << 20, + NV_FRAMEBUFFER_MIXED_SAMPLES = 1u << 21, + NV_COVERAGE_REDUCTION_MODE = 1u << 22, + NV_FRAGMENT_COVERAGE_TO_COLOR = 1u << 23, + NV_CLIP_SPACE_W_SCALING = 1u << 24, + NV_VIEWPORT_SWIZZLE = 1u << 25, + NV_SHADING_RATE_IMAGE = 1u << 26, + NV_REPRESENTATIVE_FRAGMENT_TEST = 1u << 27, + SHADER_OBJECT = 1u << 28, }; using AdditionalExtensionFlags = uint32_t; inline AdditionalExtensionFlags AdditionalExtensionStringToFlag(const char* pExtensionName) { - if (strncmp(pExtensionName, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DYNAMIC_RENDERING; } - if (strncmp(pExtensionName, VK_KHR_MAINTENANCE2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return MAINTENANCE_2; } - if (strncmp(pExtensionName, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return PRIVATE_DATA; } - if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return EXTENDED_DYNAMIC_STATE_1; } - if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return EXTENDED_DYNAMIC_STATE_2; } - if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return EXTENDED_DYNAMIC_STATE_3; } - if (strncmp(pExtensionName, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return VERTEX_INPUT_DYNAMIC; } - if (strncmp(pExtensionName, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return GRAPHICS_PIPELINE_LIBRARY; } - if (strncmp(pExtensionName, VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return PIPELINE_LIBRARY; } - if (strncmp(pExtensionName, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return MULTIVIEW; } - if (strncmp(pExtensionName, VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return CREATE_RENDERPASS_2; } - if (strncmp(pExtensionName, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DEPTH_STENCIL_RESOLVE; } - if (strncmp(pExtensionName, VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DRIVER_PROPERTIES; } - if (strncmp(pExtensionName, VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DYNAMIC_RENDERING_UNUSED_ATTACHMENTS; } - if (strncmp(pExtensionName, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return TRANSFORM_FEEDBACK; } - if (strncmp(pExtensionName, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return CONSERVATIVE_RASTERIZATION; } - if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DEPTH_CLIP_ENABLE; } - if (strncmp(pExtensionName, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return SAMPLE_LOCATIONS; } - if (strncmp(pExtensionName, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return PROVOKING_VERTEX; } - if (strncmp(pExtensionName, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return LINE_RASTERIZATION; } - if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return DEPTH_CLIP_CONTROL; } - if (strncmp(pExtensionName, VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_FRAMEBUFFER_MIXED_SAMPLES; } - if (strncmp(pExtensionName, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_COVERAGE_REDUCTION_MODE; } - if (strncmp(pExtensionName, VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_FRAGMENT_COVERAGE_TO_COLOR; } - if (strncmp(pExtensionName, VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_CLIP_SPACE_W_SCALING; } - if (strncmp(pExtensionName, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_VIEWPORT_SWIZZLE; } - if (strncmp(pExtensionName, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_SHADING_RATE_IMAGE; } - if (strncmp(pExtensionName, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return NV_REPRESENTATIVE_FRAGMENT_TEST; } - if (strncmp(pExtensionName, VK_EXT_SHADER_OBJECT_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { return SHADER_OBJECT; } + if (strncmp(pExtensionName, VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return DYNAMIC_RENDERING; + } + if (strncmp(pExtensionName, VK_KHR_MAINTENANCE_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return MAINTENANCE2; + } + if (strncmp(pExtensionName, VK_EXT_PRIVATE_DATA_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return PRIVATE_DATA; + } + if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return EXTENDED_DYNAMIC_STATE; + } + if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return EXTENDED_DYNAMIC_STATE2; + } + if (strncmp(pExtensionName, VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return EXTENDED_DYNAMIC_STATE3; + } + if (strncmp(pExtensionName, VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return VERTEX_INPUT_DYNAMIC_STATE; + } + if (strncmp(pExtensionName, VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return GRAPHICS_PIPELINE_LIBRARY; + } + if (strncmp(pExtensionName, VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return PIPELINE_LIBRARY; + } + if (strncmp(pExtensionName, VK_KHR_MULTIVIEW_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return MULTIVIEW; + } + if (strncmp(pExtensionName, VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return CREATE_RENDERPASS2; + } + if (strncmp(pExtensionName, VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return DEPTH_STENCIL_RESOLVE; + } + if (strncmp(pExtensionName, VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return DRIVER_PROPERTIES; + } + if (strncmp(pExtensionName, VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return DYNAMIC_RENDERING_UNUSED_ATTACHMENTS; + } + if (strncmp(pExtensionName, VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return TRANSFORM_FEEDBACK; + } + if (strncmp(pExtensionName, VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return CONSERVATIVE_RASTERIZATION; + } + if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return DEPTH_CLIP_ENABLE; + } + if (strncmp(pExtensionName, VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return SAMPLE_LOCATIONS; + } + if (strncmp(pExtensionName, VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return PROVOKING_VERTEX; + } + if (strncmp(pExtensionName, VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return LINE_RASTERIZATION; + } + if (strncmp(pExtensionName, VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return DEPTH_CLIP_CONTROL; + } + if (strncmp(pExtensionName, VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_FRAMEBUFFER_MIXED_SAMPLES; + } + if (strncmp(pExtensionName, VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_COVERAGE_REDUCTION_MODE; + } + if (strncmp(pExtensionName, VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_FRAGMENT_COVERAGE_TO_COLOR; + } + if (strncmp(pExtensionName, VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_CLIP_SPACE_W_SCALING; + } + if (strncmp(pExtensionName, VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_VIEWPORT_SWIZZLE; + } + if (strncmp(pExtensionName, VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_SHADING_RATE_IMAGE; + } + if (strncmp(pExtensionName, VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return NV_REPRESENTATIVE_FRAGMENT_TEST; + } + if (strncmp(pExtensionName, VK_EXT_SHADER_OBJECT_EXTENSION_NAME, VK_MAX_EXTENSION_NAME_SIZE) == 0) { + return SHADER_OBJECT; + } return {}; } - struct ExtensionData { const char* extension_name; AdditionalExtensionFlagBits flag; }; - constexpr ExtensionData kAdditionalExtensions[] = { - { VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, DYNAMIC_RENDERING }, - { VK_KHR_MAINTENANCE2_EXTENSION_NAME, MAINTENANCE_2 }, - { VK_EXT_PRIVATE_DATA_EXTENSION_NAME, PRIVATE_DATA }, - { VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE_1 }, - { VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE_2 }, - { VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE_3 }, - { VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VERTEX_INPUT_DYNAMIC }, - { VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, GRAPHICS_PIPELINE_LIBRARY }, - { VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, PIPELINE_LIBRARY }, - { VK_KHR_MULTIVIEW_EXTENSION_NAME, MULTIVIEW }, - { VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, CREATE_RENDERPASS_2 }, - { VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DEPTH_STENCIL_RESOLVE }, - { VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DRIVER_PROPERTIES }, - { VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS }, + {VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME, DYNAMIC_RENDERING}, + {VK_KHR_MAINTENANCE_2_EXTENSION_NAME, MAINTENANCE2}, + {VK_EXT_PRIVATE_DATA_EXTENSION_NAME, PRIVATE_DATA}, + {VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE}, + {VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE2}, + {VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME, EXTENDED_DYNAMIC_STATE3}, + {VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME, VERTEX_INPUT_DYNAMIC_STATE}, + {VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME, GRAPHICS_PIPELINE_LIBRARY}, + {VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, PIPELINE_LIBRARY}, + {VK_KHR_MULTIVIEW_EXTENSION_NAME, MULTIVIEW}, + {VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME, CREATE_RENDERPASS2}, + {VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME, DEPTH_STENCIL_RESOLVE}, + {VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME, DRIVER_PROPERTIES}, + {VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME, DYNAMIC_RENDERING_UNUSED_ATTACHMENTS}, }; constexpr uint32_t kMaxDynamicStates = 58; diff --git a/layers/shader_object/generated/shader_object_create_device_feature_structs.inl b/layers/shader_object/generated/shader_object_create_device_feature_structs.inl index 398d8b75..4f5dc510 100644 --- a/layers/shader_object/generated/shader_object_create_device_feature_structs.inl +++ b/layers/shader_object/generated/shader_object_create_device_feature_structs.inl @@ -19,12 +19,15 @@ VkBaseOutStructure* appended_features_chain = nullptr; VkBaseOutStructure* appended_features_chain_last = nullptr; - -auto vulkan_1_3_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES)); - -auto dynamic_rendering_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES)); +auto VK_VERSION_1_1_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES)); +auto VK_VERSION_1_3_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES)); +auto dynamic_rendering_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES)); VkPhysicalDeviceDynamicRenderingFeatures dynamic_rendering_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES}; -if (vulkan_1_3_ptr == nullptr && dynamic_rendering_ptr == nullptr && (physical_device_data->supported_additional_extensions & DYNAMIC_RENDERING) != 0) { +if (VK_VERSION_1_3_ptr == nullptr && dynamic_rendering_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_KHR_dynamic_rendering) != 0) { dynamic_rendering_ptr = &dynamic_rendering_local; if (appended_features_chain_last == nullptr) { appended_features_chain = (VkBaseOutStructure*)dynamic_rendering_ptr; @@ -34,9 +37,11 @@ if (vulkan_1_3_ptr == nullptr && dynamic_rendering_ptr == nullptr && (physical_d appended_features_chain_last = appended_features_chain_last->pNext; } } -auto private_data_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES)); -VkPhysicalDevicePrivateDataFeaturesEXT private_data_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES}; -if (vulkan_1_3_ptr == nullptr && private_data_ptr == nullptr && (physical_device_data->supported_additional_extensions & PRIVATE_DATA) != 0) { +auto private_data_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES)); +VkPhysicalDevicePrivateDataFeatures private_data_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES}; +if (VK_VERSION_1_3_ptr == nullptr && private_data_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_private_data) != 0) { private_data_ptr = &private_data_local; if (appended_features_chain_last == nullptr) { appended_features_chain = (VkBaseOutStructure*)private_data_ptr; @@ -46,57 +51,72 @@ if (vulkan_1_3_ptr == nullptr && private_data_ptr == nullptr && (physical_device appended_features_chain_last = appended_features_chain_last->pNext; } } -auto extended_dynamic_state_1_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT)); -VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state_1_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT}; -if (extended_dynamic_state_1_ptr == nullptr && (physical_device_data->supported_additional_extensions & EXTENDED_DYNAMIC_STATE_1) != 0) { - extended_dynamic_state_1_ptr = &extended_dynamic_state_1_local; +auto extended_dynamic_state_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT)); +VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT}; +if (VK_VERSION_1_3_ptr == nullptr && extended_dynamic_state_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_extended_dynamic_state) != 0) { + extended_dynamic_state_ptr = &extended_dynamic_state_local; if (appended_features_chain_last == nullptr) { - appended_features_chain = (VkBaseOutStructure*)extended_dynamic_state_1_ptr; + appended_features_chain = (VkBaseOutStructure*)extended_dynamic_state_ptr; appended_features_chain_last = appended_features_chain; } else { - appended_features_chain_last->pNext = (VkBaseOutStructure*)extended_dynamic_state_1_ptr; + appended_features_chain_last->pNext = (VkBaseOutStructure*)extended_dynamic_state_ptr; appended_features_chain_last = appended_features_chain_last->pNext; } } -auto extended_dynamic_state_2_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT)); -VkPhysicalDeviceExtendedDynamicState2FeaturesEXT extended_dynamic_state_2_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT}; -if (extended_dynamic_state_2_ptr == nullptr && (physical_device_data->supported_additional_extensions & EXTENDED_DYNAMIC_STATE_2) != 0) { - extended_dynamic_state_2_ptr = &extended_dynamic_state_2_local; +auto extended_dynamic_state2_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT)); +VkPhysicalDeviceExtendedDynamicState2FeaturesEXT extended_dynamic_state2_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT}; +if (VK_VERSION_1_3_ptr == nullptr && extended_dynamic_state2_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_extended_dynamic_state2) != 0) { + extended_dynamic_state2_ptr = &extended_dynamic_state2_local; if (appended_features_chain_last == nullptr) { - appended_features_chain = (VkBaseOutStructure*)extended_dynamic_state_2_ptr; + appended_features_chain = (VkBaseOutStructure*)extended_dynamic_state2_ptr; appended_features_chain_last = appended_features_chain; } else { - appended_features_chain_last->pNext = (VkBaseOutStructure*)extended_dynamic_state_2_ptr; + appended_features_chain_last->pNext = (VkBaseOutStructure*)extended_dynamic_state2_ptr; appended_features_chain_last = appended_features_chain_last->pNext; } } -auto extended_dynamic_state_3_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT)); -VkPhysicalDeviceExtendedDynamicState3FeaturesEXT extended_dynamic_state_3_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT}; -if (extended_dynamic_state_3_ptr == nullptr && (physical_device_data->supported_additional_extensions & EXTENDED_DYNAMIC_STATE_3) != 0) { - extended_dynamic_state_3_ptr = &extended_dynamic_state_3_local; +auto extended_dynamic_state3_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT)); +VkPhysicalDeviceExtendedDynamicState3FeaturesEXT extended_dynamic_state3_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT}; +if (extended_dynamic_state3_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_extended_dynamic_state3) != 0) { + extended_dynamic_state3_ptr = &extended_dynamic_state3_local; if (appended_features_chain_last == nullptr) { - appended_features_chain = (VkBaseOutStructure*)extended_dynamic_state_3_ptr; + appended_features_chain = (VkBaseOutStructure*)extended_dynamic_state3_ptr; appended_features_chain_last = appended_features_chain; } else { - appended_features_chain_last->pNext = (VkBaseOutStructure*)extended_dynamic_state_3_ptr; + appended_features_chain_last->pNext = (VkBaseOutStructure*)extended_dynamic_state3_ptr; appended_features_chain_last = appended_features_chain_last->pNext; } } -auto vertex_input_dynamic_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT)); -VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT vertex_input_dynamic_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT}; -if (vertex_input_dynamic_ptr == nullptr && (physical_device_data->supported_additional_extensions & VERTEX_INPUT_DYNAMIC) != 0) { - vertex_input_dynamic_ptr = &vertex_input_dynamic_local; +auto vertex_input_dynamic_state_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT)); +VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT vertex_input_dynamic_state_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT}; +if (vertex_input_dynamic_state_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_vertex_input_dynamic_state) != 0) { + vertex_input_dynamic_state_ptr = &vertex_input_dynamic_state_local; if (appended_features_chain_last == nullptr) { - appended_features_chain = (VkBaseOutStructure*)vertex_input_dynamic_ptr; + appended_features_chain = (VkBaseOutStructure*)vertex_input_dynamic_state_ptr; appended_features_chain_last = appended_features_chain; } else { - appended_features_chain_last->pNext = (VkBaseOutStructure*)vertex_input_dynamic_ptr; + appended_features_chain_last->pNext = (VkBaseOutStructure*)vertex_input_dynamic_state_ptr; appended_features_chain_last = appended_features_chain_last->pNext; } } -auto graphics_pipeline_library_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT)); -VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT graphics_pipeline_library_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT}; -if (graphics_pipeline_library_ptr == nullptr && (physical_device_data->supported_additional_extensions & GRAPHICS_PIPELINE_LIBRARY) != 0) { +auto graphics_pipeline_library_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT)); +VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT graphics_pipeline_library_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT}; +if (graphics_pipeline_library_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_graphics_pipeline_library) != 0) { graphics_pipeline_library_ptr = &graphics_pipeline_library_local; if (appended_features_chain_last == nullptr) { appended_features_chain = (VkBaseOutStructure*)graphics_pipeline_library_ptr; @@ -106,9 +126,26 @@ if (graphics_pipeline_library_ptr == nullptr && (physical_device_data->supported appended_features_chain_last = appended_features_chain_last->pNext; } } -auto dynamic_rendering_unused_attachments_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT)); -VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT dynamic_rendering_unused_attachments_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT}; -if (dynamic_rendering_unused_attachments_ptr == nullptr && (physical_device_data->supported_additional_extensions & DYNAMIC_RENDERING_UNUSED_ATTACHMENTS) != 0) { +auto multiview_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES)); +VkPhysicalDeviceMultiviewFeatures multiview_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES}; +if (VK_VERSION_1_1_ptr == nullptr && multiview_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_KHR_multiview) != 0) { + multiview_ptr = &multiview_local; + if (appended_features_chain_last == nullptr) { + appended_features_chain = (VkBaseOutStructure*)multiview_ptr; + appended_features_chain_last = appended_features_chain; + } else { + appended_features_chain_last->pNext = (VkBaseOutStructure*)multiview_ptr; + appended_features_chain_last = appended_features_chain_last->pNext; + } +} +auto dynamic_rendering_unused_attachments_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT)); +VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT dynamic_rendering_unused_attachments_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT}; +if (dynamic_rendering_unused_attachments_ptr == nullptr && + (physical_device_data->supported_additional_extensions & VK_EXT_dynamic_rendering_unused_attachments) != 0) { dynamic_rendering_unused_attachments_ptr = &dynamic_rendering_unused_attachments_local; if (appended_features_chain_last == nullptr) { appended_features_chain = (VkBaseOutStructure*)dynamic_rendering_unused_attachments_ptr; @@ -118,44 +155,57 @@ if (dynamic_rendering_unused_attachments_ptr == nullptr && (physical_device_data appended_features_chain_last = appended_features_chain_last->pNext; } } -auto transform_feedback_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)); -VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT}; +auto transform_feedback_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT)); +VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT}; if (transform_feedback_ptr == nullptr) { transform_feedback_ptr = &transform_feedback_local; } -auto depth_clip_enable_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT)); -VkPhysicalDeviceDepthClipEnableFeaturesEXT depth_clip_enable_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT}; +auto depth_clip_enable_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT)); +VkPhysicalDeviceDepthClipEnableFeaturesEXT depth_clip_enable_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT}; if (depth_clip_enable_ptr == nullptr) { depth_clip_enable_ptr = &depth_clip_enable_local; } -auto provoking_vertex_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT)); +auto provoking_vertex_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT)); VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT}; if (provoking_vertex_ptr == nullptr) { provoking_vertex_ptr = &provoking_vertex_local; } -auto line_rasterization_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT)); -VkPhysicalDeviceLineRasterizationFeaturesEXT line_rasterization_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT}; +auto line_rasterization_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES)); +VkPhysicalDeviceLineRasterizationFeatures line_rasterization_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES}; if (line_rasterization_ptr == nullptr) { line_rasterization_ptr = &line_rasterization_local; } -auto depth_clip_control_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT)); -VkPhysicalDeviceDepthClipControlFeaturesEXT depth_clip_control_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT}; +auto depth_clip_control_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT)); +VkPhysicalDeviceDepthClipControlFeaturesEXT depth_clip_control_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT}; if (depth_clip_control_ptr == nullptr) { depth_clip_control_ptr = &depth_clip_control_local; } -auto nv_coverage_reduction_mode_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV)); -VkPhysicalDeviceCoverageReductionModeFeaturesNV nv_coverage_reduction_mode_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV}; -if (nv_coverage_reduction_mode_ptr == nullptr) { - nv_coverage_reduction_mode_ptr = &nv_coverage_reduction_mode_local; -} -auto nv_shading_rate_image_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV)); -VkPhysicalDeviceShadingRateImageFeaturesNV nv_shading_rate_image_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV}; -if (nv_shading_rate_image_ptr == nullptr) { - nv_shading_rate_image_ptr = &nv_shading_rate_image_local; +auto coverage_reduction_mode_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV)); +VkPhysicalDeviceCoverageReductionModeFeaturesNV coverage_reduction_mode_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV}; +if (coverage_reduction_mode_ptr == nullptr) { + coverage_reduction_mode_ptr = &coverage_reduction_mode_local; +} +auto shading_rate_image_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV)); +VkPhysicalDeviceShadingRateImageFeaturesNV shading_rate_image_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV}; +if (shading_rate_image_ptr == nullptr) { + shading_rate_image_ptr = &shading_rate_image_local; +} +auto representative_fragment_test_ptr = reinterpret_cast( + FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV)); +VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV representative_fragment_test_local{ + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV}; +if (representative_fragment_test_ptr == nullptr) { + representative_fragment_test_ptr = &representative_fragment_test_local; } -auto nv_representative_fragment_test_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV)); -VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV nv_representative_fragment_test_local{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV}; -if (nv_representative_fragment_test_ptr == nullptr) { - nv_representative_fragment_test_ptr = &nv_representative_fragment_test_local; -} - diff --git a/layers/shader_object/generated/shader_object_device_data_declare_extension_variables.inl b/layers/shader_object/generated/shader_object_device_data_declare_extension_variables.inl index 118fc496..d718b8be 100644 --- a/layers/shader_object/generated/shader_object_device_data_declare_extension_variables.inl +++ b/layers/shader_object/generated/shader_object_device_data_declare_extension_variables.inl @@ -18,18 +18,19 @@ */ VkPhysicalDeviceDynamicRenderingFeatures dynamic_rendering; -VkPhysicalDevicePrivateDataFeaturesEXT private_data; -VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state_1; -VkPhysicalDeviceExtendedDynamicState2FeaturesEXT extended_dynamic_state_2; -VkPhysicalDeviceExtendedDynamicState3FeaturesEXT extended_dynamic_state_3; -VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT vertex_input_dynamic; +VkPhysicalDevicePrivateDataFeatures private_data; +VkPhysicalDeviceExtendedDynamicStateFeaturesEXT extended_dynamic_state; +VkPhysicalDeviceExtendedDynamicState2FeaturesEXT extended_dynamic_state2; +VkPhysicalDeviceExtendedDynamicState3FeaturesEXT extended_dynamic_state3; +VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT vertex_input_dynamic_state; VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT graphics_pipeline_library; +VkPhysicalDeviceMultiviewFeatures multiview; VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT dynamic_rendering_unused_attachments; VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback; VkPhysicalDeviceDepthClipEnableFeaturesEXT depth_clip_enable; VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex; -VkPhysicalDeviceLineRasterizationFeaturesEXT line_rasterization; +VkPhysicalDeviceLineRasterizationFeatures line_rasterization; VkPhysicalDeviceDepthClipControlFeaturesEXT depth_clip_control; -VkPhysicalDeviceCoverageReductionModeFeaturesNV nv_coverage_reduction_mode; -VkPhysicalDeviceShadingRateImageFeaturesNV nv_shading_rate_image; -VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV nv_representative_fragment_test; +VkPhysicalDeviceCoverageReductionModeFeaturesNV coverage_reduction_mode; +VkPhysicalDeviceShadingRateImageFeaturesNV shading_rate_image; +VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV representative_fragment_test; diff --git a/layers/shader_object/generated/shader_object_device_data_dynamic_state_adding.inl b/layers/shader_object/generated/shader_object_device_data_dynamic_state_adding.inl index 666af923..bc28174f 100644 --- a/layers/shader_object/generated/shader_object_device_data_dynamic_state_adding.inl +++ b/layers/shader_object/generated/shader_object_device_data_dynamic_state_adding.inl @@ -17,147 +17,168 @@ * limitations under the License. */ -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_CULL_MODE_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_FRONT_FACE_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_STENCIL_OP_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT); } -if (extended_dynamic_state_1_ptr && extended_dynamic_state_1_ptr->extendedDynamicState == VK_TRUE) { +if (extended_dynamic_state_ptr && extended_dynamic_state_ptr->extendedDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT); } -if (extended_dynamic_state_2_ptr && extended_dynamic_state_2_ptr->extendedDynamicState2LogicOp == VK_TRUE) { +if (extended_dynamic_state2_ptr && extended_dynamic_state2_ptr->extendedDynamicState2LogicOp == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_LOGIC_OP_EXT); } -if (extended_dynamic_state_2_ptr && extended_dynamic_state_2_ptr->extendedDynamicState2 == VK_TRUE) { +if (extended_dynamic_state2_ptr && extended_dynamic_state2_ptr->extendedDynamicState2 == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE); } -if (extended_dynamic_state_2_ptr && extended_dynamic_state_2_ptr->extendedDynamicState2 == VK_TRUE) { +if (extended_dynamic_state2_ptr && extended_dynamic_state2_ptr->extendedDynamicState2 == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE); } -if (extended_dynamic_state_2_ptr && extended_dynamic_state_2_ptr->extendedDynamicState2 == VK_TRUE) { +if (extended_dynamic_state2_ptr && extended_dynamic_state2_ptr->extendedDynamicState2 == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT); } -if (extended_dynamic_state_2_ptr && extended_dynamic_state_2_ptr->extendedDynamicState2PatchControlPoints == VK_TRUE) { +if (extended_dynamic_state2_ptr && extended_dynamic_state2_ptr->extendedDynamicState2PatchControlPoints == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3PolygonMode == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3PolygonMode == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_POLYGON_MODE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3RasterizationSamples == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3RasterizationSamples == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3LogicOpEnable == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3LogicOpEnable == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ColorWriteMask == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ColorWriteMask == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ColorBlendEnable == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ColorBlendEnable == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ColorBlendEquation == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ColorBlendEquation == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3DepthClampEnable == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3DepthClampEnable == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3TessellationDomainOrigin == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3TessellationDomainOrigin == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3AlphaToOneEnable == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3AlphaToOneEnable == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3AlphaToCoverageEnable == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3AlphaToCoverageEnable == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3SampleMask == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3SampleMask == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_SAMPLE_MASK_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3RasterizationStream == VK_TRUE && (enabled_additional_extensions & TRANSFORM_FEEDBACK) != 0 && transform_feedback_ptr && transform_feedback_ptr->transformFeedback == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3RasterizationStream == VK_TRUE && + (enabled_additional_extensions & TRANSFORM_FEEDBACK) != 0 && transform_feedback_ptr && + transform_feedback_ptr->transformFeedback == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ConservativeRasterizationMode == VK_TRUE && (enabled_additional_extensions & CONSERVATIVE_RASTERIZATION) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ConservativeRasterizationMode == VK_TRUE && + (enabled_additional_extensions & CONSERVATIVE_RASTERIZATION) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE && (enabled_additional_extensions & CONSERVATIVE_RASTERIZATION) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE && + (enabled_additional_extensions & CONSERVATIVE_RASTERIZATION) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3DepthClipEnable == VK_TRUE && (enabled_additional_extensions & DEPTH_CLIP_ENABLE) != 0 && depth_clip_enable_ptr && depth_clip_enable_ptr->depthClipEnable == VK_TRUE) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3DepthClipEnable == VK_TRUE && + (enabled_additional_extensions & DEPTH_CLIP_ENABLE) != 0 && depth_clip_enable_ptr && + depth_clip_enable_ptr->depthClipEnable == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3SampleLocationsEnable == VK_TRUE && (enabled_additional_extensions & SAMPLE_LOCATIONS) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3SampleLocationsEnable == VK_TRUE && + (enabled_additional_extensions & SAMPLE_LOCATIONS) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ProvokingVertexMode == VK_TRUE && (enabled_additional_extensions & PROVOKING_VERTEX) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ProvokingVertexMode == VK_TRUE && + (enabled_additional_extensions & PROVOKING_VERTEX) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3LineRasterizationMode == VK_TRUE && (enabled_additional_extensions & LINE_RASTERIZATION) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3LineRasterizationMode == VK_TRUE && + (enabled_additional_extensions & LINE_RASTERIZATION) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3LineStippleEnable == VK_TRUE && (enabled_additional_extensions & LINE_RASTERIZATION) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3LineStippleEnable == VK_TRUE && + (enabled_additional_extensions & LINE_RASTERIZATION) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE && (enabled_additional_extensions & DEPTH_CLIP_CONTROL) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE && + (enabled_additional_extensions & DEPTH_CLIP_CONTROL) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3CoverageModulationMode == VK_TRUE && (enabled_additional_extensions & NV_FRAMEBUFFER_MIXED_SAMPLES) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3CoverageModulationMode == VK_TRUE && + (enabled_additional_extensions & NV_FRAMEBUFFER_MIXED_SAMPLES) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3CoverageModulationTableEnable == VK_TRUE && (enabled_additional_extensions & NV_FRAMEBUFFER_MIXED_SAMPLES) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3CoverageModulationTableEnable == VK_TRUE && + (enabled_additional_extensions & NV_FRAMEBUFFER_MIXED_SAMPLES) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3CoverageModulationTable == VK_TRUE && (enabled_additional_extensions & NV_FRAMEBUFFER_MIXED_SAMPLES) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3CoverageModulationTable == VK_TRUE && + (enabled_additional_extensions & NV_FRAMEBUFFER_MIXED_SAMPLES) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3CoverageReductionMode == VK_TRUE && (enabled_additional_extensions & NV_COVERAGE_REDUCTION_MODE) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3CoverageReductionMode == VK_TRUE && + (enabled_additional_extensions & NV_COVERAGE_REDUCTION_MODE) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3CoverageToColorEnable == VK_TRUE && (enabled_additional_extensions & NV_FRAGMENT_COVERAGE_TO_COLOR) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3CoverageToColorEnable == VK_TRUE && + (enabled_additional_extensions & NV_FRAGMENT_COVERAGE_TO_COLOR) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3CoverageToColorLocation == VK_TRUE && (enabled_additional_extensions & NV_FRAGMENT_COVERAGE_TO_COLOR) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3CoverageToColorLocation == VK_TRUE && + (enabled_additional_extensions & NV_FRAGMENT_COVERAGE_TO_COLOR) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ViewportWScalingEnable == VK_TRUE && (enabled_additional_extensions & NV_CLIP_SPACE_W_SCALING) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ViewportWScalingEnable == VK_TRUE && + (enabled_additional_extensions & NV_CLIP_SPACE_W_SCALING) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ViewportSwizzle == VK_TRUE && (enabled_additional_extensions & NV_VIEWPORT_SWIZZLE) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ViewportSwizzle == VK_TRUE && + (enabled_additional_extensions & NV_VIEWPORT_SWIZZLE) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3ShadingRateImageEnable == VK_TRUE && (enabled_additional_extensions & NV_SHADING_RATE_IMAGE) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3ShadingRateImageEnable == VK_TRUE && + (enabled_additional_extensions & NV_SHADING_RATE_IMAGE) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV); } -if (extended_dynamic_state_3_ptr && extended_dynamic_state_3_ptr->extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE && (enabled_additional_extensions & NV_REPRESENTATIVE_FRAGMENT_TEST) != 0) { +if (extended_dynamic_state3_ptr && extended_dynamic_state3_ptr->extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE && + (enabled_additional_extensions & NV_REPRESENTATIVE_FRAGMENT_TEST) != 0) { device_data->AddDynamicState(VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV); } -if (vertex_input_dynamic_ptr && vertex_input_dynamic_ptr->vertexInputDynamicState == VK_TRUE) { +if (vertex_input_dynamic_state_ptr && vertex_input_dynamic_state_ptr->vertexInputDynamicState == VK_TRUE) { device_data->AddDynamicState(VK_DYNAMIC_STATE_VERTEX_INPUT_EXT); } diff --git a/layers/shader_object/generated/shader_object_device_data_set_extension_variables.inl b/layers/shader_object/generated/shader_object_device_data_set_extension_variables.inl index 800fbb83..974b8bc5 100644 --- a/layers/shader_object/generated/shader_object_device_data_set_extension_variables.inl +++ b/layers/shader_object/generated/shader_object_device_data_set_extension_variables.inl @@ -19,17 +19,23 @@ device_data->dynamic_rendering = dynamic_rendering_ptr ? *dynamic_rendering_ptr : dynamic_rendering_local; device_data->private_data = private_data_ptr ? *private_data_ptr : private_data_local; -device_data->extended_dynamic_state_1 = extended_dynamic_state_1_ptr ? *extended_dynamic_state_1_ptr : extended_dynamic_state_1_local; -device_data->extended_dynamic_state_2 = extended_dynamic_state_2_ptr ? *extended_dynamic_state_2_ptr : extended_dynamic_state_2_local; -device_data->extended_dynamic_state_3 = extended_dynamic_state_3_ptr ? *extended_dynamic_state_3_ptr : extended_dynamic_state_3_local; -device_data->vertex_input_dynamic = vertex_input_dynamic_ptr ? *vertex_input_dynamic_ptr : vertex_input_dynamic_local; -device_data->graphics_pipeline_library = graphics_pipeline_library_ptr ? *graphics_pipeline_library_ptr : graphics_pipeline_library_local; -device_data->dynamic_rendering_unused_attachments = dynamic_rendering_unused_attachments_ptr ? *dynamic_rendering_unused_attachments_ptr : dynamic_rendering_unused_attachments_local; +device_data->extended_dynamic_state = extended_dynamic_state_ptr ? *extended_dynamic_state_ptr : extended_dynamic_state_local; +device_data->extended_dynamic_state2 = extended_dynamic_state2_ptr ? *extended_dynamic_state2_ptr : extended_dynamic_state2_local; +device_data->extended_dynamic_state3 = extended_dynamic_state3_ptr ? *extended_dynamic_state3_ptr : extended_dynamic_state3_local; +device_data->vertex_input_dynamic_state = + vertex_input_dynamic_state_ptr ? *vertex_input_dynamic_state_ptr : vertex_input_dynamic_state_local; +device_data->graphics_pipeline_library = + graphics_pipeline_library_ptr ? *graphics_pipeline_library_ptr : graphics_pipeline_library_local; +device_data->multiview = multiview_ptr ? *multiview_ptr : multiview_local; +device_data->dynamic_rendering_unused_attachments = dynamic_rendering_unused_attachments_ptr + ? *dynamic_rendering_unused_attachments_ptr + : dynamic_rendering_unused_attachments_local; device_data->transform_feedback = transform_feedback_ptr ? *transform_feedback_ptr : transform_feedback_local; device_data->depth_clip_enable = depth_clip_enable_ptr ? *depth_clip_enable_ptr : depth_clip_enable_local; device_data->provoking_vertex = provoking_vertex_ptr ? *provoking_vertex_ptr : provoking_vertex_local; device_data->line_rasterization = line_rasterization_ptr ? *line_rasterization_ptr : line_rasterization_local; device_data->depth_clip_control = depth_clip_control_ptr ? *depth_clip_control_ptr : depth_clip_control_local; -device_data->nv_coverage_reduction_mode = nv_coverage_reduction_mode_ptr ? *nv_coverage_reduction_mode_ptr : nv_coverage_reduction_mode_local; -device_data->nv_shading_rate_image = nv_shading_rate_image_ptr ? *nv_shading_rate_image_ptr : nv_shading_rate_image_local; -device_data->nv_representative_fragment_test = nv_representative_fragment_test_ptr ? *nv_representative_fragment_test_ptr : nv_representative_fragment_test_local; +device_data->coverage_reduction_mode = coverage_reduction_mode_ptr ? *coverage_reduction_mode_ptr : coverage_reduction_mode_local; +device_data->shading_rate_image = shading_rate_image_ptr ? *shading_rate_image_ptr : shading_rate_image_local; +device_data->representative_fragment_test = + representative_fragment_test_ptr ? *representative_fragment_test_ptr : representative_fragment_test_local; diff --git a/layers/shader_object/generated/shader_object_entry_points_x_macros.inl b/layers/shader_object/generated/shader_object_entry_points_x_macros.inl index 3fead2ad..834651b8 100644 --- a/layers/shader_object/generated/shader_object_entry_points_x_macros.inl +++ b/layers/shader_object/generated/shader_object_entry_points_x_macros.inl @@ -17,153 +17,152 @@ * limitations under the License. */ -#define ENTRY_POINTS_INSTANCE\ - ENTRY_POINT(GetInstanceProcAddr)\ - ENTRY_POINT(_layerGetPhysicalDeviceProcAddr)\ - ENTRY_POINT(CreateInstance)\ - ENTRY_POINT(DestroyInstance)\ - ENTRY_POINT(EnumerateInstanceExtensionProperties)\ +#define ENTRY_POINTS_INSTANCE \ + ENTRY_POINT(GetInstanceProcAddr) \ + ENTRY_POINT(_layerGetPhysicalDeviceProcAddr) \ + ENTRY_POINT(CreateInstance) \ + ENTRY_POINT(DestroyInstance) \ + ENTRY_POINT(EnumerateInstanceExtensionProperties) \ ENTRY_POINT(EnumerateInstanceLayerProperties) -#define ENTRY_POINTS_PHYSICAL_DEVICE\ - ENTRY_POINT(EnumerateDeviceExtensionProperties)\ - ENTRY_POINT(GetPhysicalDeviceFeatures2)\ - ENTRY_POINT_ALIAS(GetPhysicalDeviceFeatures2KHR, GetPhysicalDeviceFeatures2)\ - ENTRY_POINT(GetPhysicalDeviceProperties2)\ - ENTRY_POINT_ALIAS(GetPhysicalDeviceProperties2KHR, GetPhysicalDeviceProperties2)\ +#define ENTRY_POINTS_PHYSICAL_DEVICE \ + ENTRY_POINT(EnumerateDeviceExtensionProperties) \ + ENTRY_POINT(GetPhysicalDeviceFeatures2) \ + ENTRY_POINT_ALIAS(GetPhysicalDeviceFeatures2KHR, GetPhysicalDeviceFeatures2) \ + ENTRY_POINT(GetPhysicalDeviceProperties2) \ + ENTRY_POINT_ALIAS(GetPhysicalDeviceProperties2KHR, GetPhysicalDeviceProperties2) \ ENTRY_POINT(CreateDevice) -#define ENTRY_POINTS_DEVICE\ - ENTRY_POINT(GetDeviceProcAddr)\ - ENTRY_POINT(DestroyDevice)\ - ENTRY_POINT(CreateShadersEXT)\ - ENTRY_POINT(DestroyShaderEXT)\ - ENTRY_POINT(CmdBindShadersEXT)\ - ENTRY_POINT(CmdBindPipeline)\ - ENTRY_POINT(CreateImageView)\ - ENTRY_POINT(DestroyImageView)\ - ENTRY_POINT(AllocateCommandBuffers)\ - ENTRY_POINT(FreeCommandBuffers)\ - ENTRY_POINT(DestroyCommandPool)\ - ENTRY_POINT(BeginCommandBuffer)\ - ENTRY_POINT(CmdBeginRendering)\ - ENTRY_POINT_ALIAS(CmdBeginRenderingKHR, CmdBeginRendering)\ - ENTRY_POINT(GetShaderBinaryDataEXT)\ - ENTRY_POINT(CmdSetViewportWithCount)\ - ENTRY_POINT_ALIAS(CmdSetViewportWithCountEXT, CmdSetViewportWithCount)\ - ENTRY_POINT(CmdSetScissorWithCount)\ - ENTRY_POINT_ALIAS(CmdSetScissorWithCountEXT, CmdSetScissorWithCount)\ - ENTRY_POINT(CmdSetVertexInputEXT)\ - ENTRY_POINT(CmdSetPrimitiveTopology)\ - ENTRY_POINT_ALIAS(CmdSetPrimitiveTopologyEXT, CmdSetPrimitiveTopology)\ - ENTRY_POINT(CmdSetPrimitiveRestartEnable)\ - ENTRY_POINT_ALIAS(CmdSetPrimitiveRestartEnableEXT, CmdSetPrimitiveRestartEnable)\ - ENTRY_POINT(CmdSetRasterizerDiscardEnable)\ - ENTRY_POINT_ALIAS(CmdSetRasterizerDiscardEnableEXT, CmdSetRasterizerDiscardEnable)\ - ENTRY_POINT(CmdSetRasterizationSamplesEXT)\ - ENTRY_POINT(CmdSetPolygonModeEXT)\ - ENTRY_POINT(CmdSetCullMode)\ - ENTRY_POINT_ALIAS(CmdSetCullModeEXT, CmdSetCullMode)\ - ENTRY_POINT(CmdSetFrontFace)\ - ENTRY_POINT_ALIAS(CmdSetFrontFaceEXT, CmdSetFrontFace)\ - ENTRY_POINT(CmdSetDepthTestEnable)\ - ENTRY_POINT_ALIAS(CmdSetDepthTestEnableEXT, CmdSetDepthTestEnable)\ - ENTRY_POINT(CmdSetDepthWriteEnable)\ - ENTRY_POINT_ALIAS(CmdSetDepthWriteEnableEXT, CmdSetDepthWriteEnable)\ - ENTRY_POINT(CmdSetDepthCompareOp)\ - ENTRY_POINT_ALIAS(CmdSetDepthCompareOpEXT, CmdSetDepthCompareOp)\ - ENTRY_POINT(CmdSetStencilTestEnable)\ - ENTRY_POINT_ALIAS(CmdSetStencilTestEnableEXT, CmdSetStencilTestEnable)\ - ENTRY_POINT(CmdSetLogicOpEnableEXT)\ - ENTRY_POINT(CmdSetColorBlendEnableEXT)\ - ENTRY_POINT(CmdSetColorBlendEquationEXT)\ - ENTRY_POINT(CmdSetColorWriteMaskEXT)\ - ENTRY_POINT(CmdSetDepthBoundsTestEnable)\ - ENTRY_POINT_ALIAS(CmdSetDepthBoundsTestEnableEXT, CmdSetDepthBoundsTestEnable)\ - ENTRY_POINT(CmdSetDepthBiasEnable)\ - ENTRY_POINT_ALIAS(CmdSetDepthBiasEnableEXT, CmdSetDepthBiasEnable)\ - ENTRY_POINT(CmdSetDepthClampEnableEXT)\ - ENTRY_POINT(CmdSetStencilOp)\ - ENTRY_POINT_ALIAS(CmdSetStencilOpEXT, CmdSetStencilOp)\ - ENTRY_POINT(CmdDraw)\ - ENTRY_POINT(CmdDrawIndirect)\ - ENTRY_POINT(CmdDrawIndirectCount)\ - ENTRY_POINT(CmdDrawIndexed)\ - ENTRY_POINT(CmdDrawIndexedIndirect)\ - ENTRY_POINT(CmdDrawIndexedIndirectCount)\ - ENTRY_POINT(CmdDrawMeshTasksEXT)\ - ENTRY_POINT(CmdDrawMeshTasksIndirectEXT)\ - ENTRY_POINT(CmdDrawMeshTasksIndirectCountEXT)\ - ENTRY_POINT(CmdDrawMeshTasksNV)\ - ENTRY_POINT(CmdDrawMeshTasksIndirectNV)\ - ENTRY_POINT(CmdDrawMeshTasksIndirectCountNV)\ - ENTRY_POINT(CmdSetLogicOpEXT)\ - ENTRY_POINT(CmdSetPatchControlPointsEXT)\ - ENTRY_POINT(CmdSetTessellationDomainOriginEXT)\ - ENTRY_POINT(CmdSetAlphaToOneEnableEXT)\ - ENTRY_POINT(CmdSetAlphaToCoverageEnableEXT)\ - ENTRY_POINT(CmdSetSampleMaskEXT)\ - ENTRY_POINT(CmdSetRasterizationStreamEXT)\ - ENTRY_POINT(CmdSetConservativeRasterizationModeEXT)\ - ENTRY_POINT(CmdSetExtraPrimitiveOverestimationSizeEXT)\ - ENTRY_POINT(CmdSetDepthClipEnableEXT)\ - ENTRY_POINT(CmdSetSampleLocationsEnableEXT)\ - ENTRY_POINT(CmdSetProvokingVertexModeEXT)\ - ENTRY_POINT(CmdSetLineRasterizationModeEXT)\ - ENTRY_POINT(CmdSetLineStippleEnableEXT)\ - ENTRY_POINT(CmdSetDepthClipNegativeOneToOneEXT)\ - ENTRY_POINT(CmdSetCoverageModulationModeNV)\ - ENTRY_POINT(CmdSetCoverageModulationTableEnableNV)\ - ENTRY_POINT(CmdSetCoverageModulationTableNV)\ - ENTRY_POINT(CmdSetCoverageReductionModeNV)\ - ENTRY_POINT(CmdSetCoverageToColorEnableNV)\ - ENTRY_POINT(CmdSetCoverageToColorLocationNV)\ - ENTRY_POINT(CmdSetViewportWScalingEnableNV)\ - ENTRY_POINT(CmdSetViewportSwizzleNV)\ - ENTRY_POINT(CmdSetShadingRateImageEnableNV)\ - ENTRY_POINT(CmdSetRepresentativeFragmentTestEnableNV)\ - ENTRY_POINT(CmdBindVertexBuffers2)\ - ENTRY_POINT_ALIAS(CmdBindVertexBuffers2EXT, CmdBindVertexBuffers2)\ - ENTRY_POINT(CmdBindDescriptorSets)\ - ENTRY_POINT(CmdPushDescriptorSetKHR)\ - ENTRY_POINT(CmdPushDescriptorSetWithTemplateKHR)\ - ENTRY_POINT(CmdPushConstants)\ - ENTRY_POINT(SetPrivateData)\ - ENTRY_POINT_ALIAS(SetPrivateDataEXT, SetPrivateData)\ - ENTRY_POINT(GetPrivateData)\ - ENTRY_POINT_ALIAS(GetPrivateDataEXT, GetPrivateData)\ - ENTRY_POINT(CreateDescriptorUpdateTemplate)\ - ENTRY_POINT_ALIAS(CreateDescriptorUpdateTemplateKHR, CreateDescriptorUpdateTemplate)\ - ENTRY_POINT(DestroyDescriptorUpdateTemplate)\ - ENTRY_POINT_ALIAS(DestroyDescriptorUpdateTemplateKHR, DestroyDescriptorUpdateTemplate)\ - ENTRY_POINT(SetDebugUtilsObjectNameEXT)\ +#define ENTRY_POINTS_DEVICE \ + ENTRY_POINT(GetDeviceProcAddr) \ + ENTRY_POINT(DestroyDevice) \ + ENTRY_POINT(CreateShadersEXT) \ + ENTRY_POINT(DestroyShaderEXT) \ + ENTRY_POINT(CmdBindShadersEXT) \ + ENTRY_POINT(CmdBindPipeline) \ + ENTRY_POINT(CreateImageView) \ + ENTRY_POINT(DestroyImageView) \ + ENTRY_POINT(AllocateCommandBuffers) \ + ENTRY_POINT(FreeCommandBuffers) \ + ENTRY_POINT(DestroyCommandPool) \ + ENTRY_POINT(BeginCommandBuffer) \ + ENTRY_POINT(CmdBeginRendering) \ + ENTRY_POINT_ALIAS(CmdBeginRenderingKHR, CmdBeginRendering) \ + ENTRY_POINT(GetShaderBinaryDataEXT) \ + ENTRY_POINT(CmdSetViewportWithCount) \ + ENTRY_POINT_ALIAS(CmdSetViewportWithCountEXT, CmdSetViewportWithCount) \ + ENTRY_POINT(CmdSetScissorWithCount) \ + ENTRY_POINT_ALIAS(CmdSetScissorWithCountEXT, CmdSetScissorWithCount) \ + ENTRY_POINT(CmdSetVertexInputEXT) \ + ENTRY_POINT(CmdSetPrimitiveTopology) \ + ENTRY_POINT_ALIAS(CmdSetPrimitiveTopologyEXT, CmdSetPrimitiveTopology) \ + ENTRY_POINT(CmdSetPrimitiveRestartEnable) \ + ENTRY_POINT_ALIAS(CmdSetPrimitiveRestartEnableEXT, CmdSetPrimitiveRestartEnable) \ + ENTRY_POINT(CmdSetRasterizerDiscardEnable) \ + ENTRY_POINT_ALIAS(CmdSetRasterizerDiscardEnableEXT, CmdSetRasterizerDiscardEnable) \ + ENTRY_POINT(CmdSetRasterizationSamplesEXT) \ + ENTRY_POINT(CmdSetPolygonModeEXT) \ + ENTRY_POINT(CmdSetCullMode) \ + ENTRY_POINT_ALIAS(CmdSetCullModeEXT, CmdSetCullMode) \ + ENTRY_POINT(CmdSetFrontFace) \ + ENTRY_POINT_ALIAS(CmdSetFrontFaceEXT, CmdSetFrontFace) \ + ENTRY_POINT(CmdSetDepthTestEnable) \ + ENTRY_POINT_ALIAS(CmdSetDepthTestEnableEXT, CmdSetDepthTestEnable) \ + ENTRY_POINT(CmdSetDepthWriteEnable) \ + ENTRY_POINT_ALIAS(CmdSetDepthWriteEnableEXT, CmdSetDepthWriteEnable) \ + ENTRY_POINT(CmdSetDepthCompareOp) \ + ENTRY_POINT_ALIAS(CmdSetDepthCompareOpEXT, CmdSetDepthCompareOp) \ + ENTRY_POINT(CmdSetStencilTestEnable) \ + ENTRY_POINT_ALIAS(CmdSetStencilTestEnableEXT, CmdSetStencilTestEnable) \ + ENTRY_POINT(CmdSetLogicOpEnableEXT) \ + ENTRY_POINT(CmdSetColorBlendEnableEXT) \ + ENTRY_POINT(CmdSetColorBlendEquationEXT) \ + ENTRY_POINT(CmdSetColorWriteMaskEXT) \ + ENTRY_POINT(CmdSetDepthBoundsTestEnable) \ + ENTRY_POINT_ALIAS(CmdSetDepthBoundsTestEnableEXT, CmdSetDepthBoundsTestEnable) \ + ENTRY_POINT(CmdSetDepthBiasEnable) \ + ENTRY_POINT_ALIAS(CmdSetDepthBiasEnableEXT, CmdSetDepthBiasEnable) \ + ENTRY_POINT(CmdSetDepthClampEnableEXT) \ + ENTRY_POINT(CmdSetStencilOp) \ + ENTRY_POINT_ALIAS(CmdSetStencilOpEXT, CmdSetStencilOp) \ + ENTRY_POINT(CmdDraw) \ + ENTRY_POINT(CmdDrawIndirect) \ + ENTRY_POINT(CmdDrawIndirectCount) \ + ENTRY_POINT(CmdDrawIndexed) \ + ENTRY_POINT(CmdDrawIndexedIndirect) \ + ENTRY_POINT(CmdDrawIndexedIndirectCount) \ + ENTRY_POINT(CmdDrawMeshTasksEXT) \ + ENTRY_POINT(CmdDrawMeshTasksIndirectEXT) \ + ENTRY_POINT(CmdDrawMeshTasksIndirectCountEXT) \ + ENTRY_POINT(CmdDrawMeshTasksNV) \ + ENTRY_POINT(CmdDrawMeshTasksIndirectNV) \ + ENTRY_POINT(CmdDrawMeshTasksIndirectCountNV) \ + ENTRY_POINT(CmdSetLogicOpEXT) \ + ENTRY_POINT(CmdSetPatchControlPointsEXT) \ + ENTRY_POINT(CmdSetTessellationDomainOriginEXT) \ + ENTRY_POINT(CmdSetAlphaToOneEnableEXT) \ + ENTRY_POINT(CmdSetAlphaToCoverageEnableEXT) \ + ENTRY_POINT(CmdSetSampleMaskEXT) \ + ENTRY_POINT(CmdSetRasterizationStreamEXT) \ + ENTRY_POINT(CmdSetConservativeRasterizationModeEXT) \ + ENTRY_POINT(CmdSetExtraPrimitiveOverestimationSizeEXT) \ + ENTRY_POINT(CmdSetDepthClipEnableEXT) \ + ENTRY_POINT(CmdSetSampleLocationsEnableEXT) \ + ENTRY_POINT(CmdSetProvokingVertexModeEXT) \ + ENTRY_POINT(CmdSetLineRasterizationModeEXT) \ + ENTRY_POINT(CmdSetLineStippleEnableEXT) \ + ENTRY_POINT(CmdSetDepthClipNegativeOneToOneEXT) \ + ENTRY_POINT(CmdSetCoverageModulationModeNV) \ + ENTRY_POINT(CmdSetCoverageModulationTableEnableNV) \ + ENTRY_POINT(CmdSetCoverageModulationTableNV) \ + ENTRY_POINT(CmdSetCoverageReductionModeNV) \ + ENTRY_POINT(CmdSetCoverageToColorEnableNV) \ + ENTRY_POINT(CmdSetCoverageToColorLocationNV) \ + ENTRY_POINT(CmdSetViewportWScalingEnableNV) \ + ENTRY_POINT(CmdSetViewportSwizzleNV) \ + ENTRY_POINT(CmdSetShadingRateImageEnableNV) \ + ENTRY_POINT(CmdSetRepresentativeFragmentTestEnableNV) \ + ENTRY_POINT(CmdBindVertexBuffers2) \ + ENTRY_POINT_ALIAS(CmdBindVertexBuffers2EXT, CmdBindVertexBuffers2) \ + ENTRY_POINT(CmdBindDescriptorSets) \ + ENTRY_POINT(CmdPushDescriptorSetKHR) \ + ENTRY_POINT(CmdPushDescriptorSetWithTemplateKHR) \ + ENTRY_POINT(CmdPushConstants) \ + ENTRY_POINT(SetPrivateData) \ + ENTRY_POINT_ALIAS(SetPrivateDataEXT, SetPrivateData) \ + ENTRY_POINT(GetPrivateData) \ + ENTRY_POINT_ALIAS(GetPrivateDataEXT, GetPrivateData) \ + ENTRY_POINT(CreateDescriptorUpdateTemplate) \ + ENTRY_POINT_ALIAS(CreateDescriptorUpdateTemplateKHR, CreateDescriptorUpdateTemplate) \ + ENTRY_POINT(DestroyDescriptorUpdateTemplate) \ + ENTRY_POINT_ALIAS(DestroyDescriptorUpdateTemplateKHR, DestroyDescriptorUpdateTemplate) \ + ENTRY_POINT(SetDebugUtilsObjectNameEXT) \ ENTRY_POINT(SetDebugUtilsObjectTagEXT) #define ADDITIONAL_INSTANCE_FUNCTIONS -#define ADDITIONAL_PHYSICAL_DEVICE_FUNCTIONS\ - ENTRY_POINT(GetPhysicalDeviceProperties)\ +#define ADDITIONAL_PHYSICAL_DEVICE_FUNCTIONS \ + ENTRY_POINT(GetPhysicalDeviceProperties) \ ENTRY_POINT(GetPhysicalDeviceImageFormatProperties) -#define ADDITIONAL_DEVICE_FUNCTIONS\ - ENTRY_POINT(CreatePipelineLayout)\ - ENTRY_POINT(CreateGraphicsPipelines)\ - ENTRY_POINT(CreateComputePipelines)\ - ENTRY_POINT(DestroyPipelineLayout)\ - ENTRY_POINT(DestroyPipeline)\ - ENTRY_POINT(CreateShaderModule)\ - ENTRY_POINT(DestroyShaderModule)\ - ENTRY_POINT(CreatePipelineCache)\ - ENTRY_POINT(DestroyPipelineCache)\ - ENTRY_POINT(GetPipelineCacheData)\ - ENTRY_POINT(MergePipelineCaches)\ - ENTRY_POINT(GetDeviceQueue)\ - ENTRY_POINT(QueueSubmit)\ - ENTRY_POINT(QueueSubmit2)\ - ENTRY_POINT_ALIAS(QueueSubmit2KHR, QueueSubmit2)\ - ENTRY_POINT(CmdSetViewport)\ - ENTRY_POINT(CmdSetScissor)\ - ENTRY_POINT(CreatePrivateDataSlotEXT)\ - ENTRY_POINT(DestroyPrivateDataSlotEXT)\ +#define ADDITIONAL_DEVICE_FUNCTIONS \ + ENTRY_POINT(CreatePipelineLayout) \ + ENTRY_POINT(CreateGraphicsPipelines) \ + ENTRY_POINT(CreateComputePipelines) \ + ENTRY_POINT(DestroyPipelineLayout) \ + ENTRY_POINT(DestroyPipeline) \ + ENTRY_POINT(CreateShaderModule) \ + ENTRY_POINT(DestroyShaderModule) \ + ENTRY_POINT(CreatePipelineCache) \ + ENTRY_POINT(DestroyPipelineCache) \ + ENTRY_POINT(GetPipelineCacheData) \ + ENTRY_POINT(MergePipelineCaches) \ + ENTRY_POINT(GetDeviceQueue) \ + ENTRY_POINT(QueueSubmit) \ + ENTRY_POINT(QueueSubmit2) \ + ENTRY_POINT_ALIAS(QueueSubmit2KHR, QueueSubmit2) \ + ENTRY_POINT(CmdSetViewport) \ + ENTRY_POINT(CmdSetScissor) \ + ENTRY_POINT(CreatePrivateDataSlotEXT) \ + ENTRY_POINT(DestroyPrivateDataSlotEXT) \ ENTRY_POINT(CmdBindVertexBuffers) - diff --git a/layers/shader_object/generated/shader_object_find_intercepted_dynamic_state_function_by_name.inl b/layers/shader_object/generated/shader_object_find_intercepted_dynamic_state_function_by_name.inl index bb77dbc2..74cf3441 100644 --- a/layers/shader_object/generated/shader_object_find_intercepted_dynamic_state_function_by_name.inl +++ b/layers/shader_object/generated/shader_object_find_intercepted_dynamic_state_function_by_name.inl @@ -17,195 +17,348 @@ * limitations under the License. */ -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetCullMode", pName) == 0 || strcmp("vkCmdSetCullModeEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetCullMode", pName) == 0 || strcmp("vkCmdSetCullModeEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetDepthBoundsTestEnable", pName) == 0 || strcmp("vkCmdSetDepthBoundsTestEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetDepthBoundsTestEnable", pName) == 0 || strcmp("vkCmdSetDepthBoundsTestEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetDepthCompareOp", pName) == 0 || strcmp("vkCmdSetDepthCompareOpEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetDepthCompareOp", pName) == 0 || strcmp("vkCmdSetDepthCompareOpEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetDepthTestEnable", pName) == 0 || strcmp("vkCmdSetDepthTestEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetDepthTestEnable", pName) == 0 || strcmp("vkCmdSetDepthTestEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetDepthWriteEnable", pName) == 0 || strcmp("vkCmdSetDepthWriteEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetDepthWriteEnable", pName) == 0 || strcmp("vkCmdSetDepthWriteEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetFrontFace", pName) == 0 || strcmp("vkCmdSetFrontFaceEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetFrontFace", pName) == 0 || strcmp("vkCmdSetFrontFaceEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetPrimitiveTopology", pName) == 0 || strcmp("vkCmdSetPrimitiveTopologyEXT", pName) == 0) && (flags & DeviceData::HAS_PRIMITIVE_TOPLOGY_UNRESTRICTED) != 0) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetPrimitiveTopology", pName) == 0 || strcmp("vkCmdSetPrimitiveTopologyEXT", pName) == 0) && + (flags & DeviceData::HAS_PRIMITIVE_TOPLOGY_UNRESTRICTED) != 0) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetScissorWithCount", pName) == 0 || strcmp("vkCmdSetScissorWithCountEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetScissorWithCount", pName) == 0 || strcmp("vkCmdSetScissorWithCountEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetViewportWithCount", pName) == 0 || strcmp("vkCmdSetViewportWithCountEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetViewportWithCount", pName) == 0 || strcmp("vkCmdSetViewportWithCountEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetStencilOp", pName) == 0 || strcmp("vkCmdSetStencilOpEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetStencilOp", pName) == 0 || strcmp("vkCmdSetStencilOpEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdSetStencilTestEnable", pName) == 0 || strcmp("vkCmdSetStencilTestEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdSetStencilTestEnable", pName) == 0 || strcmp("vkCmdSetStencilTestEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_1.extendedDynamicState == VK_TRUE && (strcmp("vkCmdBindVertexBuffers2", pName) == 0 || strcmp("vkCmdBindVertexBuffers2EXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_1.extendedDynamicState == VK_TRUE)\n", pName); +if (extended_dynamic_state.extendedDynamicState == VK_TRUE && + (strcmp("vkCmdBindVertexBuffers2", pName) == 0 || strcmp("vkCmdBindVertexBuffers2EXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state.extendedDynamicState == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_2.extendedDynamicState2LogicOp == VK_TRUE && (strcmp("vkCmdSetLogicOpEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_2.extendedDynamicState2LogicOp == VK_TRUE)\n", pName); +if (extended_dynamic_state2.extendedDynamicState2LogicOp == VK_TRUE && (strcmp("vkCmdSetLogicOpEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state2.extendedDynamicState2LogicOp == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_2.extendedDynamicState2 == VK_TRUE && (strcmp("vkCmdSetPrimitiveRestartEnable", pName) == 0 || strcmp("vkCmdSetPrimitiveRestartEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_2.extendedDynamicState2 == VK_TRUE)\n", pName); +if (extended_dynamic_state2.extendedDynamicState2 == VK_TRUE && + (strcmp("vkCmdSetPrimitiveRestartEnable", pName) == 0 || strcmp("vkCmdSetPrimitiveRestartEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state2.extendedDynamicState2 == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_2.extendedDynamicState2 == VK_TRUE && (strcmp("vkCmdSetRasterizerDiscardEnable", pName) == 0 || strcmp("vkCmdSetRasterizerDiscardEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_2.extendedDynamicState2 == VK_TRUE)\n", pName); +if (extended_dynamic_state2.extendedDynamicState2 == VK_TRUE && + (strcmp("vkCmdSetRasterizerDiscardEnable", pName) == 0 || strcmp("vkCmdSetRasterizerDiscardEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state2.extendedDynamicState2 == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_2.extendedDynamicState2 == VK_TRUE && (strcmp("vkCmdSetDepthBiasEnable", pName) == 0 || strcmp("vkCmdSetDepthBiasEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_2.extendedDynamicState2 == VK_TRUE)\n", pName); +if (extended_dynamic_state2.extendedDynamicState2 == VK_TRUE && + (strcmp("vkCmdSetDepthBiasEnable", pName) == 0 || strcmp("vkCmdSetDepthBiasEnableEXT", pName) == 0)) { + DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state2.extendedDynamicState2 == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_2.extendedDynamicState2PatchControlPoints == VK_TRUE && (strcmp("vkCmdSetPatchControlPointsEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_2.extendedDynamicState2PatchControlPoints == VK_TRUE)\n", pName); +if (extended_dynamic_state2.extendedDynamicState2PatchControlPoints == VK_TRUE && + (strcmp("vkCmdSetPatchControlPointsEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state2.extendedDynamicState2PatchControlPoints == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3PolygonMode == VK_TRUE && (strcmp("vkCmdSetPolygonModeEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3PolygonMode == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3PolygonMode == VK_TRUE && (strcmp("vkCmdSetPolygonModeEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3PolygonMode == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3RasterizationSamples == VK_TRUE && (strcmp("vkCmdSetRasterizationSamplesEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3RasterizationSamples == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3RasterizationSamples == VK_TRUE && + (strcmp("vkCmdSetRasterizationSamplesEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3RasterizationSamples " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3LogicOpEnable == VK_TRUE && (strcmp("vkCmdSetLogicOpEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3LogicOpEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3LogicOpEnable == VK_TRUE && (strcmp("vkCmdSetLogicOpEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3LogicOpEnable == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ColorWriteMask == VK_TRUE && (strcmp("vkCmdSetColorWriteMaskEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ColorWriteMask == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ColorWriteMask == VK_TRUE && (strcmp("vkCmdSetColorWriteMaskEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3ColorWriteMask == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ColorBlendEnable == VK_TRUE && (strcmp("vkCmdSetColorBlendEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ColorBlendEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ColorBlendEnable == VK_TRUE && + (strcmp("vkCmdSetColorBlendEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3ColorBlendEnable == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ColorBlendEquation == VK_TRUE && (strcmp("vkCmdSetColorBlendEquationEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ColorBlendEquation == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ColorBlendEquation == VK_TRUE && + (strcmp("vkCmdSetColorBlendEquationEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3ColorBlendEquation == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3DepthClampEnable == VK_TRUE && (strcmp("vkCmdSetDepthClampEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3DepthClampEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3DepthClampEnable == VK_TRUE && + (strcmp("vkCmdSetDepthClampEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3DepthClampEnable == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3TessellationDomainOrigin == VK_TRUE && (strcmp("vkCmdSetTessellationDomainOriginEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3TessellationDomainOrigin == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3TessellationDomainOrigin == VK_TRUE && + (strcmp("vkCmdSetTessellationDomainOriginEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3TessellationDomainOrigin == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3AlphaToOneEnable == VK_TRUE && (strcmp("vkCmdSetAlphaToOneEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3AlphaToOneEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3AlphaToOneEnable == VK_TRUE && + (strcmp("vkCmdSetAlphaToOneEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3AlphaToOneEnable == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3AlphaToCoverageEnable == VK_TRUE && (strcmp("vkCmdSetAlphaToCoverageEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3AlphaToCoverageEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3AlphaToCoverageEnable == VK_TRUE && + (strcmp("vkCmdSetAlphaToCoverageEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3AlphaToCoverageEnable " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3SampleMask == VK_TRUE && (strcmp("vkCmdSetSampleMaskEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3SampleMask == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3SampleMask == VK_TRUE && (strcmp("vkCmdSetSampleMaskEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3SampleMask == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3RasterizationStream == VK_TRUE && (strcmp("vkCmdSetRasterizationStreamEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3RasterizationStream == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3RasterizationStream == VK_TRUE && + (strcmp("vkCmdSetRasterizationStreamEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3RasterizationStream " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ConservativeRasterizationMode == VK_TRUE && (strcmp("vkCmdSetConservativeRasterizationModeEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ConservativeRasterizationMode == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ConservativeRasterizationMode == VK_TRUE && + (strcmp("vkCmdSetConservativeRasterizationModeEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3ConservativeRasterizationMode == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE && (strcmp("vkCmdSetExtraPrimitiveOverestimationSizeEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE && + (strcmp("vkCmdSetExtraPrimitiveOverestimationSizeEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3ExtraPrimitiveOverestimationSize == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3DepthClipEnable == VK_TRUE && (strcmp("vkCmdSetDepthClipEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3DepthClipEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3DepthClipEnable == VK_TRUE && (strcmp("vkCmdSetDepthClipEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3DepthClipEnable == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3SampleLocationsEnable == VK_TRUE && (strcmp("vkCmdSetSampleLocationsEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3SampleLocationsEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3SampleLocationsEnable == VK_TRUE && + (strcmp("vkCmdSetSampleLocationsEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3SampleLocationsEnable " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ProvokingVertexMode == VK_TRUE && (strcmp("vkCmdSetProvokingVertexModeEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ProvokingVertexMode == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ProvokingVertexMode == VK_TRUE && + (strcmp("vkCmdSetProvokingVertexModeEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3ProvokingVertexMode " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3LineRasterizationMode == VK_TRUE && (strcmp("vkCmdSetLineRasterizationModeEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3LineRasterizationMode == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3LineRasterizationMode == VK_TRUE && + (strcmp("vkCmdSetLineRasterizationModeEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3LineRasterizationMode " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3LineStippleEnable == VK_TRUE && (strcmp("vkCmdSetLineStippleEnableEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3LineStippleEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3LineStippleEnable == VK_TRUE && + (strcmp("vkCmdSetLineStippleEnableEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3LineStippleEnable == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE && (strcmp("vkCmdSetDepthClipNegativeOneToOneEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE && + (strcmp("vkCmdSetDepthClipNegativeOneToOneEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3DepthClipNegativeOneToOne == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3CoverageModulationMode == VK_TRUE && (strcmp("vkCmdSetCoverageModulationModeNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3CoverageModulationMode == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3CoverageModulationMode == VK_TRUE && + (strcmp("vkCmdSetCoverageModulationModeNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3CoverageModulationMode == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3CoverageModulationTableEnable == VK_TRUE && (strcmp("vkCmdSetCoverageModulationTableEnableNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3CoverageModulationTableEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3CoverageModulationTableEnable == VK_TRUE && + (strcmp("vkCmdSetCoverageModulationTableEnableNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3CoverageModulationTableEnable == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3CoverageModulationTable == VK_TRUE && (strcmp("vkCmdSetCoverageModulationTableNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3CoverageModulationTable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3CoverageModulationTable == VK_TRUE && + (strcmp("vkCmdSetCoverageModulationTableNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3CoverageModulationTable == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3CoverageReductionMode == VK_TRUE && (strcmp("vkCmdSetCoverageReductionModeNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3CoverageReductionMode == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3CoverageReductionMode == VK_TRUE && + (strcmp("vkCmdSetCoverageReductionModeNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3CoverageReductionMode " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3CoverageToColorEnable == VK_TRUE && (strcmp("vkCmdSetCoverageToColorEnableNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3CoverageToColorEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3CoverageToColorEnable == VK_TRUE && + (strcmp("vkCmdSetCoverageToColorEnableNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3CoverageToColorEnable " + "== VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3CoverageToColorLocation == VK_TRUE && (strcmp("vkCmdSetCoverageToColorLocationNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3CoverageToColorLocation == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3CoverageToColorLocation == VK_TRUE && + (strcmp("vkCmdSetCoverageToColorLocationNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3CoverageToColorLocation == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ViewportWScalingEnable == VK_TRUE && (strcmp("vkCmdSetViewportWScalingEnableNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ViewportWScalingEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ViewportWScalingEnable == VK_TRUE && + (strcmp("vkCmdSetViewportWScalingEnableNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3ViewportWScalingEnable == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ViewportSwizzle == VK_TRUE && (strcmp("vkCmdSetViewportSwizzleNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ViewportSwizzle == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ViewportSwizzle == VK_TRUE && (strcmp("vkCmdSetViewportSwizzleNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (extended_dynamic_state3.extendedDynamicState3ViewportSwizzle == " + "VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3ShadingRateImageEnable == VK_TRUE && (strcmp("vkCmdSetShadingRateImageEnableNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3ShadingRateImageEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3ShadingRateImageEnable == VK_TRUE && + (strcmp("vkCmdSetShadingRateImageEnableNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3ShadingRateImageEnable == VK_TRUE)\n", + pName); return nullptr; } -if (extended_dynamic_state_3.extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE && (strcmp("vkCmdSetRepresentativeFragmentTestEnableNV", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (extended_dynamic_state_3.extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE)\n", pName); +if (extended_dynamic_state3.extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE && + (strcmp("vkCmdSetRepresentativeFragmentTestEnableNV", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists " + "(extended_dynamic_state3.extendedDynamicState3RepresentativeFragmentTestEnable == VK_TRUE)\n", + pName); return nullptr; } -if (vertex_input_dynamic.vertexInputDynamicState == VK_TRUE && (strcmp("vkCmdSetVertexInputEXT", pName) == 0)) { - DEBUG_LOG("not intercepting %s because real dynamic state exists (vertex_input_dynamic.vertexInputDynamicState == VK_TRUE)\n", pName); +if (vertex_input_dynamic_state.vertexInputDynamicState == VK_TRUE && (strcmp("vkCmdSetVertexInputEXT", pName) == 0)) { + DEBUG_LOG( + "not intercepting %s because real dynamic state exists (vertex_input_dynamic_state.vertexInputDynamicState == VK_TRUE)\n", + pName); return nullptr; } diff --git a/layers/shader_object/generated/shader_object_full_draw_state_struct_members.cpp b/layers/shader_object/generated/shader_object_full_draw_state_struct_members.cpp index cc8534bc..29eaf225 100644 --- a/layers/shader_object/generated/shader_object_full_draw_state_struct_members.cpp +++ b/layers/shader_object/generated/shader_object_full_draw_state_struct_members.cpp @@ -29,10 +29,8 @@ void FullDrawStateData::SetDepthAttachmentFormat(VkFormat const& element) { MarkDirty(); depth_attachment_format_ = element; } -VkFormat const& FullDrawStateData::GetDepthAttachmentFormat() const { - return depth_attachment_format_; -} +VkFormat const& FullDrawStateData::GetDepthAttachmentFormat() const { return depth_attachment_format_; } void FullDrawStateData::SetStencilAttachmentFormat(VkFormat const& element) { if (element == stencil_attachment_format_) { return; @@ -41,10 +39,8 @@ void FullDrawStateData::SetStencilAttachmentFormat(VkFormat const& element) { MarkDirty(); stencil_attachment_format_ = element; } -VkFormat const& FullDrawStateData::GetStencilAttachmentFormat() const { - return stencil_attachment_format_; -} +VkFormat const& FullDrawStateData::GetStencilAttachmentFormat() const { return stencil_attachment_format_; } void FullDrawStateData::SetColorAttachmentFormat(uint32_t index, VkFormat const& element) { if (element == color_attachment_formats_[index]) { return; @@ -53,13 +49,9 @@ void FullDrawStateData::SetColorAttachmentFormat(uint32_t index, VkFormat const& MarkDirty(); color_attachment_formats_[index] = element; } -VkFormat const& FullDrawStateData::GetColorAttachmentFormat(uint32_t index) const { - return color_attachment_formats_[index]; -} -VkFormat const* FullDrawStateData::GetColorAttachmentFormatPtr() const { - return color_attachment_formats_; -} +VkFormat const& FullDrawStateData::GetColorAttachmentFormat(uint32_t index) const { return color_attachment_formats_[index]; } +VkFormat const* FullDrawStateData::GetColorAttachmentFormatPtr() const { return color_attachment_formats_; } void FullDrawStateData::SetNumColorAttachments(uint32_t const& element) { if (element == num_color_attachments_) { return; @@ -68,10 +60,8 @@ void FullDrawStateData::SetNumColorAttachments(uint32_t const& element) { MarkDirty(); num_color_attachments_ = element; } -uint32_t const& FullDrawStateData::GetNumColorAttachments() const { - return num_color_attachments_; -} +uint32_t const& FullDrawStateData::GetNumColorAttachments() const { return num_color_attachments_; } void FullDrawStateData::SetColorBlendAttachmentState(uint32_t index, VkPipelineColorBlendAttachmentState const& element) { if (element == color_blend_attachment_states_[index]) { return; @@ -80,13 +70,13 @@ void FullDrawStateData::SetColorBlendAttachmentState(uint32_t index, VkPipelineC MarkDirty(); color_blend_attachment_states_[index] = element; } + VkPipelineColorBlendAttachmentState const& FullDrawStateData::GetColorBlendAttachmentState(uint32_t index) const { return color_blend_attachment_states_[index]; } VkPipelineColorBlendAttachmentState const* FullDrawStateData::GetColorBlendAttachmentStatePtr() const { return color_blend_attachment_states_; } - void FullDrawStateData::SetComparableShader(uint32_t index, ComparableShader const& element) { if (element == comparable_shaders_[index]) { return; @@ -95,634 +85,538 @@ void FullDrawStateData::SetComparableShader(uint32_t index, ComparableShader con MarkDirty(); comparable_shaders_[index] = element; } -ComparableShader const& FullDrawStateData::GetComparableShader(uint32_t index) const { - return comparable_shaders_[index]; -} -ComparableShader const* FullDrawStateData::GetComparableShaderPtr() const { - return comparable_shaders_; -} +ComparableShader const& FullDrawStateData::GetComparableShader(uint32_t index) const { return comparable_shaders_[index]; } +ComparableShader const* FullDrawStateData::GetComparableShaderPtr() const { return comparable_shaders_; } void FullDrawStateData::SetCullMode(VkCullModeFlags const& element) { if (element == cull_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); cull_mode_ = element; } -VkCullModeFlags const& FullDrawStateData::GetCullMode() const { - return cull_mode_; -} +VkCullModeFlags const& FullDrawStateData::GetCullMode() const { return cull_mode_; } void FullDrawStateData::SetDepthBoundsTestEnable(VkBool32 const& element) { if (element == depth_bounds_test_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); depth_bounds_test_enable_ = element; } -VkBool32 const& FullDrawStateData::GetDepthBoundsTestEnable() const { - return depth_bounds_test_enable_; -} +VkBool32 const& FullDrawStateData::GetDepthBoundsTestEnable() const { return depth_bounds_test_enable_; } void FullDrawStateData::SetDepthCompareOp(VkCompareOp const& element) { if (element == depth_compare_op_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); depth_compare_op_ = element; } -VkCompareOp const& FullDrawStateData::GetDepthCompareOp() const { - return depth_compare_op_; -} +VkCompareOp const& FullDrawStateData::GetDepthCompareOp() const { return depth_compare_op_; } void FullDrawStateData::SetDepthTestEnable(VkBool32 const& element) { if (element == depth_test_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); depth_test_enable_ = element; } -VkBool32 const& FullDrawStateData::GetDepthTestEnable() const { - return depth_test_enable_; -} +VkBool32 const& FullDrawStateData::GetDepthTestEnable() const { return depth_test_enable_; } void FullDrawStateData::SetDepthWriteEnable(VkBool32 const& element) { if (element == depth_write_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); depth_write_enable_ = element; } -VkBool32 const& FullDrawStateData::GetDepthWriteEnable() const { - return depth_write_enable_; -} +VkBool32 const& FullDrawStateData::GetDepthWriteEnable() const { return depth_write_enable_; } void FullDrawStateData::SetFrontFace(VkFrontFace const& element) { if (element == front_face_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); front_face_ = element; } -VkFrontFace const& FullDrawStateData::GetFrontFace() const { - return front_face_; -} +VkFrontFace const& FullDrawStateData::GetFrontFace() const { return front_face_; } void FullDrawStateData::SetPrimitiveTopology(VkPrimitiveTopology const& element) { if (element == primitive_topology_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); primitive_topology_ = element; } -VkPrimitiveTopology const& FullDrawStateData::GetPrimitiveTopology() const { - return primitive_topology_; -} +VkPrimitiveTopology const& FullDrawStateData::GetPrimitiveTopology() const { return primitive_topology_; } void FullDrawStateData::SetNumScissors(uint32_t const& element) { if (element == num_scissors_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); num_scissors_ = element; } -uint32_t const& FullDrawStateData::GetNumScissors() const { - return num_scissors_; -} +uint32_t const& FullDrawStateData::GetNumScissors() const { return num_scissors_; } void FullDrawStateData::SetNumViewports(uint32_t const& element) { if (element == num_viewports_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); num_viewports_ = element; } -uint32_t const& FullDrawStateData::GetNumViewports() const { - return num_viewports_; -} +uint32_t const& FullDrawStateData::GetNumViewports() const { return num_viewports_; } void FullDrawStateData::SetStencilFront(VkStencilOpState const& element) { if (element == stencil_front_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); stencil_front_ = element; } -VkStencilOpState const& FullDrawStateData::GetStencilFront() const { - return stencil_front_; -} +VkStencilOpState const& FullDrawStateData::GetStencilFront() const { return stencil_front_; } void FullDrawStateData::SetStencilBack(VkStencilOpState const& element) { if (element == stencil_back_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); stencil_back_ = element; } -VkStencilOpState const& FullDrawStateData::GetStencilBack() const { - return stencil_back_; -} +VkStencilOpState const& FullDrawStateData::GetStencilBack() const { return stencil_back_; } void FullDrawStateData::SetStencilTestEnable(VkBool32 const& element) { if (element == stencil_test_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_1); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state); MarkDirty(); stencil_test_enable_ = element; } -VkBool32 const& FullDrawStateData::GetStencilTestEnable() const { - return stencil_test_enable_; -} +VkBool32 const& FullDrawStateData::GetStencilTestEnable() const { return stencil_test_enable_; } void FullDrawStateData::SetLogicOp(VkLogicOp const& element) { if (element == logic_op_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_2); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state2); MarkDirty(); logic_op_ = element; } -VkLogicOp const& FullDrawStateData::GetLogicOp() const { - return logic_op_; -} +VkLogicOp const& FullDrawStateData::GetLogicOp() const { return logic_op_; } void FullDrawStateData::SetPrimitiveRestartEnable(VkBool32 const& element) { if (element == primitive_restart_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_2); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state2); MarkDirty(); primitive_restart_enable_ = element; } -VkBool32 const& FullDrawStateData::GetPrimitiveRestartEnable() const { - return primitive_restart_enable_; -} +VkBool32 const& FullDrawStateData::GetPrimitiveRestartEnable() const { return primitive_restart_enable_; } void FullDrawStateData::SetRasterizerDiscardEnable(VkBool32 const& element) { if (element == rasterizer_discard_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_2); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state2); MarkDirty(); rasterizer_discard_enable_ = element; } -VkBool32 const& FullDrawStateData::GetRasterizerDiscardEnable() const { - return rasterizer_discard_enable_; -} +VkBool32 const& FullDrawStateData::GetRasterizerDiscardEnable() const { return rasterizer_discard_enable_; } void FullDrawStateData::SetDepthBiasEnable(VkBool32 const& element) { if (element == depth_bias_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_2); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state2); MarkDirty(); depth_bias_enable_ = element; } -VkBool32 const& FullDrawStateData::GetDepthBiasEnable() const { - return depth_bias_enable_; -} +VkBool32 const& FullDrawStateData::GetDepthBiasEnable() const { return depth_bias_enable_; } void FullDrawStateData::SetPatchControlPoints(uint32_t const& element) { if (element == patch_control_points_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_2); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state2); MarkDirty(); patch_control_points_ = element; } -uint32_t const& FullDrawStateData::GetPatchControlPoints() const { - return patch_control_points_; -} +uint32_t const& FullDrawStateData::GetPatchControlPoints() const { return patch_control_points_; } void FullDrawStateData::SetPolygonMode(VkPolygonMode const& element) { if (element == polygon_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); polygon_mode_ = element; } -VkPolygonMode const& FullDrawStateData::GetPolygonMode() const { - return polygon_mode_; -} +VkPolygonMode const& FullDrawStateData::GetPolygonMode() const { return polygon_mode_; } void FullDrawStateData::SetRasterizationSamples(VkSampleCountFlagBits const& element) { if (element == rasterization_samples_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); rasterization_samples_ = element; } -VkSampleCountFlagBits const& FullDrawStateData::GetRasterizationSamples() const { - return rasterization_samples_; -} +VkSampleCountFlagBits const& FullDrawStateData::GetRasterizationSamples() const { return rasterization_samples_; } void FullDrawStateData::SetLogicOpEnable(VkBool32 const& element) { if (element == logic_op_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); logic_op_enable_ = element; } -VkBool32 const& FullDrawStateData::GetLogicOpEnable() const { - return logic_op_enable_; -} +VkBool32 const& FullDrawStateData::GetLogicOpEnable() const { return logic_op_enable_; } void FullDrawStateData::SetDepthClampEnable(VkBool32 const& element) { if (element == depth_clamp_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); depth_clamp_enable_ = element; } -VkBool32 const& FullDrawStateData::GetDepthClampEnable() const { - return depth_clamp_enable_; -} +VkBool32 const& FullDrawStateData::GetDepthClampEnable() const { return depth_clamp_enable_; } void FullDrawStateData::SetDomainOrigin(VkTessellationDomainOrigin const& element) { if (element == domain_origin_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); domain_origin_ = element; } -VkTessellationDomainOrigin const& FullDrawStateData::GetDomainOrigin() const { - return domain_origin_; -} +VkTessellationDomainOrigin const& FullDrawStateData::GetDomainOrigin() const { return domain_origin_; } void FullDrawStateData::SetAlphaToOneEnable(VkBool32 const& element) { if (element == alpha_to_one_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); alpha_to_one_enable_ = element; } -VkBool32 const& FullDrawStateData::GetAlphaToOneEnable() const { - return alpha_to_one_enable_; -} +VkBool32 const& FullDrawStateData::GetAlphaToOneEnable() const { return alpha_to_one_enable_; } void FullDrawStateData::SetAlphaToCoverageEnable(VkBool32 const& element) { if (element == alpha_to_coverage_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); alpha_to_coverage_enable_ = element; } -VkBool32 const& FullDrawStateData::GetAlphaToCoverageEnable() const { - return alpha_to_coverage_enable_; -} +VkBool32 const& FullDrawStateData::GetAlphaToCoverageEnable() const { return alpha_to_coverage_enable_; } void FullDrawStateData::SetSampleMask(uint32_t index, VkSampleMask const& element) { if (element == sample_masks_[index]) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); sample_masks_[index] = element; } -VkSampleMask const& FullDrawStateData::GetSampleMask(uint32_t index) const { - return sample_masks_[index]; -} -VkSampleMask const* FullDrawStateData::GetSampleMaskPtr() const { - return sample_masks_; -} +VkSampleMask const& FullDrawStateData::GetSampleMask(uint32_t index) const { return sample_masks_[index]; } +VkSampleMask const* FullDrawStateData::GetSampleMaskPtr() const { return sample_masks_; } void FullDrawStateData::SetRasterizationStream(uint32_t const& element) { if (element == rasterization_stream_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); rasterization_stream_ = element; } -uint32_t const& FullDrawStateData::GetRasterizationStream() const { - return rasterization_stream_; -} +uint32_t const& FullDrawStateData::GetRasterizationStream() const { return rasterization_stream_; } void FullDrawStateData::SetConservativeRasterizationMode(VkConservativeRasterizationModeEXT const& element) { if (element == conservative_rasterization_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); conservative_rasterization_mode_ = element; } + VkConservativeRasterizationModeEXT const& FullDrawStateData::GetConservativeRasterizationMode() const { return conservative_rasterization_mode_; } - void FullDrawStateData::SetExtraPrimitiveOverestimationSize(float const& element) { if (element == extra_primitive_overestimation_size_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); extra_primitive_overestimation_size_ = element; } -float const& FullDrawStateData::GetExtraPrimitiveOverestimationSize() const { - return extra_primitive_overestimation_size_; -} +float const& FullDrawStateData::GetExtraPrimitiveOverestimationSize() const { return extra_primitive_overestimation_size_; } void FullDrawStateData::SetDepthClipEnable(VkBool32 const& element) { if (element == depth_clip_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); depth_clip_enable_ = element; } -VkBool32 const& FullDrawStateData::GetDepthClipEnable() const { - return depth_clip_enable_; -} +VkBool32 const& FullDrawStateData::GetDepthClipEnable() const { return depth_clip_enable_; } void FullDrawStateData::SetSampleLocationsEnable(VkBool32 const& element) { if (element == sample_locations_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); sample_locations_enable_ = element; } -VkBool32 const& FullDrawStateData::GetSampleLocationsEnable() const { - return sample_locations_enable_; -} +VkBool32 const& FullDrawStateData::GetSampleLocationsEnable() const { return sample_locations_enable_; } void FullDrawStateData::SetProvokingVertexMode(VkProvokingVertexModeEXT const& element) { if (element == provoking_vertex_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); provoking_vertex_mode_ = element; } -VkProvokingVertexModeEXT const& FullDrawStateData::GetProvokingVertexMode() const { - return provoking_vertex_mode_; -} +VkProvokingVertexModeEXT const& FullDrawStateData::GetProvokingVertexMode() const { return provoking_vertex_mode_; } void FullDrawStateData::SetLineRasterizationMode(VkLineRasterizationModeEXT const& element) { if (element == line_rasterization_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); line_rasterization_mode_ = element; } -VkLineRasterizationModeEXT const& FullDrawStateData::GetLineRasterizationMode() const { - return line_rasterization_mode_; -} +VkLineRasterizationModeEXT const& FullDrawStateData::GetLineRasterizationMode() const { return line_rasterization_mode_; } void FullDrawStateData::SetStippledLineEnable(VkBool32 const& element) { if (element == stippled_line_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); stippled_line_enable_ = element; } -VkBool32 const& FullDrawStateData::GetStippledLineEnable() const { - return stippled_line_enable_; -} +VkBool32 const& FullDrawStateData::GetStippledLineEnable() const { return stippled_line_enable_; } void FullDrawStateData::SetNegativeOneToOne(VkBool32 const& element) { if (element == negative_one_to_one_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); negative_one_to_one_ = element; } -VkBool32 const& FullDrawStateData::GetNegativeOneToOne() const { - return negative_one_to_one_; -} +VkBool32 const& FullDrawStateData::GetNegativeOneToOne() const { return negative_one_to_one_; } void FullDrawStateData::SetCoverageModulationMode(VkCoverageModulationModeNV const& element) { if (element == coverage_modulation_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_modulation_mode_ = element; } -VkCoverageModulationModeNV const& FullDrawStateData::GetCoverageModulationMode() const { - return coverage_modulation_mode_; -} +VkCoverageModulationModeNV const& FullDrawStateData::GetCoverageModulationMode() const { return coverage_modulation_mode_; } void FullDrawStateData::SetCoverageModulationTableEnable(VkBool32 const& element) { if (element == coverage_modulation_table_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_modulation_table_enable_ = element; } -VkBool32 const& FullDrawStateData::GetCoverageModulationTableEnable() const { - return coverage_modulation_table_enable_; -} +VkBool32 const& FullDrawStateData::GetCoverageModulationTableEnable() const { return coverage_modulation_table_enable_; } void FullDrawStateData::SetCoverageModulationTableValues(uint32_t index, float const& element) { if (element == coverage_modulation_table_valuess_[index]) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_modulation_table_valuess_[index] = element; } + float const& FullDrawStateData::GetCoverageModulationTableValues(uint32_t index) const { return coverage_modulation_table_valuess_[index]; } -float const* FullDrawStateData::GetCoverageModulationTableValuesPtr() const { - return coverage_modulation_table_valuess_; -} - +float const* FullDrawStateData::GetCoverageModulationTableValuesPtr() const { return coverage_modulation_table_valuess_; } void FullDrawStateData::SetCoverageModulationTableCount(uint32_t const& element) { if (element == coverage_modulation_table_count_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_modulation_table_count_ = element; } -uint32_t const& FullDrawStateData::GetCoverageModulationTableCount() const { - return coverage_modulation_table_count_; -} +uint32_t const& FullDrawStateData::GetCoverageModulationTableCount() const { return coverage_modulation_table_count_; } void FullDrawStateData::SetCoverageReductionMode(VkCoverageReductionModeNV const& element) { if (element == coverage_reduction_mode_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_reduction_mode_ = element; } -VkCoverageReductionModeNV const& FullDrawStateData::GetCoverageReductionMode() const { - return coverage_reduction_mode_; -} +VkCoverageReductionModeNV const& FullDrawStateData::GetCoverageReductionMode() const { return coverage_reduction_mode_; } void FullDrawStateData::SetCoverageToColorEnable(VkBool32 const& element) { if (element == coverage_to_color_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_to_color_enable_ = element; } -VkBool32 const& FullDrawStateData::GetCoverageToColorEnable() const { - return coverage_to_color_enable_; -} +VkBool32 const& FullDrawStateData::GetCoverageToColorEnable() const { return coverage_to_color_enable_; } void FullDrawStateData::SetCoverageToColorLocation(uint32_t const& element) { if (element == coverage_to_color_location_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); coverage_to_color_location_ = element; } -uint32_t const& FullDrawStateData::GetCoverageToColorLocation() const { - return coverage_to_color_location_; -} +uint32_t const& FullDrawStateData::GetCoverageToColorLocation() const { return coverage_to_color_location_; } void FullDrawStateData::SetViewportWScalingEnable(VkBool32 const& element) { if (element == viewport_w_scaling_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); viewport_w_scaling_enable_ = element; } -VkBool32 const& FullDrawStateData::GetViewportWScalingEnable() const { - return viewport_w_scaling_enable_; -} +VkBool32 const& FullDrawStateData::GetViewportWScalingEnable() const { return viewport_w_scaling_enable_; } void FullDrawStateData::SetViewportSwizzleCount(uint32_t const& element) { if (element == viewport_swizzle_count_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); viewport_swizzle_count_ = element; } -uint32_t const& FullDrawStateData::GetViewportSwizzleCount() const { - return viewport_swizzle_count_; -} +uint32_t const& FullDrawStateData::GetViewportSwizzleCount() const { return viewport_swizzle_count_; } void FullDrawStateData::SetViewportSwizzle(uint32_t index, VkViewportSwizzleNV const& element) { if (element == viewport_swizzles_[index]) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); viewport_swizzles_[index] = element; } -VkViewportSwizzleNV const& FullDrawStateData::GetViewportSwizzle(uint32_t index) const { - return viewport_swizzles_[index]; -} -VkViewportSwizzleNV const* FullDrawStateData::GetViewportSwizzlePtr() const { - return viewport_swizzles_; -} +VkViewportSwizzleNV const& FullDrawStateData::GetViewportSwizzle(uint32_t index) const { return viewport_swizzles_[index]; } +VkViewportSwizzleNV const* FullDrawStateData::GetViewportSwizzlePtr() const { return viewport_swizzles_; } void FullDrawStateData::SetShadingRateImageEnable(VkBool32 const& element) { if (element == shading_rate_image_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); shading_rate_image_enable_ = element; } -VkBool32 const& FullDrawStateData::GetShadingRateImageEnable() const { - return shading_rate_image_enable_; -} +VkBool32 const& FullDrawStateData::GetShadingRateImageEnable() const { return shading_rate_image_enable_; } void FullDrawStateData::SetRepresentativeFragmentTestEnable(VkBool32 const& element) { if (element == representative_fragment_test_enable_) { return; } - dirty_hash_bits_.set(EXTENDED_DYNAMIC_STATE_3); + dirty_hash_bits_.set(VK_EXT_extended_dynamic_state3); MarkDirty(); representative_fragment_test_enable_ = element; } -VkBool32 const& FullDrawStateData::GetRepresentativeFragmentTestEnable() const { - return representative_fragment_test_enable_; -} +VkBool32 const& FullDrawStateData::GetRepresentativeFragmentTestEnable() const { return representative_fragment_test_enable_; } void FullDrawStateData::SetVertexInputAttributeDescription(uint32_t index, VkVertexInputAttributeDescription const& element) { if (element == vertex_input_attribute_descriptions_[index]) { return; } - dirty_hash_bits_.set(VERTEX_INPUT_DYNAMIC); + dirty_hash_bits_.set(VK_EXT_vertex_input_dynamic_state); MarkDirty(); vertex_input_attribute_descriptions_[index] = element; } + VkVertexInputAttributeDescription const& FullDrawStateData::GetVertexInputAttributeDescription(uint32_t index) const { return vertex_input_attribute_descriptions_[index]; } VkVertexInputAttributeDescription const* FullDrawStateData::GetVertexInputAttributeDescriptionPtr() const { return vertex_input_attribute_descriptions_; } - void FullDrawStateData::SetVertexInputBindingDescription(uint32_t index, VkVertexInputBindingDescription const& element) { if (element == vertex_input_binding_descriptions_[index]) { return; } - dirty_hash_bits_.set(VERTEX_INPUT_DYNAMIC); + dirty_hash_bits_.set(VK_EXT_vertex_input_dynamic_state); MarkDirty(); vertex_input_binding_descriptions_[index] = element; } + VkVertexInputBindingDescription const& FullDrawStateData::GetVertexInputBindingDescription(uint32_t index) const { return vertex_input_binding_descriptions_[index]; } VkVertexInputBindingDescription const* FullDrawStateData::GetVertexInputBindingDescriptionPtr() const { return vertex_input_binding_descriptions_; } - void FullDrawStateData::SetNumVertexInputAttributeDescriptions(uint32_t const& element) { if (element == num_vertex_input_attribute_descriptions_) { return; } - dirty_hash_bits_.set(VERTEX_INPUT_DYNAMIC); + dirty_hash_bits_.set(VK_EXT_vertex_input_dynamic_state); MarkDirty(); num_vertex_input_attribute_descriptions_ = element; } + uint32_t const& FullDrawStateData::GetNumVertexInputAttributeDescriptions() const { return num_vertex_input_attribute_descriptions_; } - void FullDrawStateData::SetNumVertexInputBindingDescriptions(uint32_t const& element) { if (element == num_vertex_input_binding_descriptions_) { return; } - dirty_hash_bits_.set(VERTEX_INPUT_DYNAMIC); + dirty_hash_bits_.set(VK_EXT_vertex_input_dynamic_state); MarkDirty(); num_vertex_input_binding_descriptions_ = element; } -uint32_t const& FullDrawStateData::GetNumVertexInputBindingDescriptions() const { - return num_vertex_input_binding_descriptions_; -} +uint32_t const& FullDrawStateData::GetNumVertexInputBindingDescriptions() const { return num_vertex_input_binding_descriptions_; } bool FullDrawStateData::operator==(FullDrawStateData const& o) const { - if (!(o.depth_attachment_format_ == depth_attachment_format_) && (!o.dynamic_rendering_unused_attachments_ || o.depth_attachment_format_ != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || depth_attachment_format_ != VK_FORMAT_UNDEFINED)) { + if (!(o.depth_attachment_format_ == depth_attachment_format_) && + (!o.dynamic_rendering_unused_attachments_ || o.depth_attachment_format_ != VK_FORMAT_UNDEFINED) && + (!dynamic_rendering_unused_attachments_ || depth_attachment_format_ != VK_FORMAT_UNDEFINED)) { return false; } - if (!(o.stencil_attachment_format_ == stencil_attachment_format_) && (!o.dynamic_rendering_unused_attachments_ || o.stencil_attachment_format_ != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || stencil_attachment_format_ != VK_FORMAT_UNDEFINED)) { + if (!(o.stencil_attachment_format_ == stencil_attachment_format_) && + (!o.dynamic_rendering_unused_attachments_ || o.stencil_attachment_format_ != VK_FORMAT_UNDEFINED) && + (!dynamic_rendering_unused_attachments_ || stencil_attachment_format_ != VK_FORMAT_UNDEFINED)) { return false; } @@ -730,12 +624,15 @@ bool FullDrawStateData::operator==(FullDrawStateData const& o) const { return false; } for (uint32_t i = 0; i < limits_.max_color_attachments; ++i) { - if (!(o.color_attachment_formats_[i] == color_attachment_formats_[i]) && (!o.dynamic_rendering_unused_attachments_ || o.color_attachment_formats_[i] != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || color_attachment_formats_[i] != VK_FORMAT_UNDEFINED)) { + if (!(o.color_attachment_formats_[i] == color_attachment_formats_[i]) && + (!o.dynamic_rendering_unused_attachments_ || o.color_attachment_formats_[i] != VK_FORMAT_UNDEFINED) && + (!dynamic_rendering_unused_attachments_ || color_attachment_formats_[i] != VK_FORMAT_UNDEFINED)) { return false; } } - if (!(o.num_color_attachments_ == num_color_attachments_) && (!o.dynamic_rendering_unused_attachments_ && !dynamic_rendering_unused_attachments_)) { + if (!(o.num_color_attachments_ == num_color_attachments_) && + (!o.dynamic_rendering_unused_attachments_ && !dynamic_rendering_unused_attachments_)) { return false; } @@ -976,198 +873,194 @@ bool FullDrawStateData::operator==(FullDrawStateData const& o) const { return true; } - bool FullDrawStateData::CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const { - if (flag == VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT) { - if (!(o.comparable_shaders_[VERTEX_SHADER] == comparable_shaders_[VERTEX_SHADER])) { - return false; - } - if (!(o.comparable_shaders_[TESSELLATION_CONTROL_SHADER] == comparable_shaders_[TESSELLATION_CONTROL_SHADER])) { - return false; - } - if (!(o.comparable_shaders_[TESSELLATION_EVALUATION_SHADER] == comparable_shaders_[TESSELLATION_EVALUATION_SHADER])) { - return false; - } - if (!(o.comparable_shaders_[GEOMETRY_SHADER] == comparable_shaders_[GEOMETRY_SHADER])) { - return false; - } - if (!(o.comparable_shaders_[TASK_SHADER] == comparable_shaders_[TASK_SHADER])) { - return false; - } - if (!(o.comparable_shaders_[MESH_SHADER] == comparable_shaders_[MESH_SHADER])) { - return false; - } - if (!(o.cull_mode_ == cull_mode_)) { - return false; - } - - if (!(o.front_face_ == front_face_)) { - return false; - } +bool FullDrawStateData::CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const { + if (flag == VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT) { + if (!(o.comparable_shaders_[VERTEX_SHADER] == comparable_shaders_[VERTEX_SHADER])) { + return false; + } + if (!(o.comparable_shaders_[TESSELLATION_CONTROL_SHADER] == comparable_shaders_[TESSELLATION_CONTROL_SHADER])) { + return false; + } + if (!(o.comparable_shaders_[TESSELLATION_EVALUATION_SHADER] == comparable_shaders_[TESSELLATION_EVALUATION_SHADER])) { + return false; + } + if (!(o.comparable_shaders_[GEOMETRY_SHADER] == comparable_shaders_[GEOMETRY_SHADER])) { + return false; + } + if (!(o.comparable_shaders_[TASK_SHADER] == comparable_shaders_[TASK_SHADER])) { + return false; + } + if (!(o.comparable_shaders_[MESH_SHADER] == comparable_shaders_[MESH_SHADER])) { + return false; + } - if (!(o.num_scissors_ == num_scissors_)) { - return false; - } + if (!(o.cull_mode_ == cull_mode_)) { + return false; + } - if (!(o.num_viewports_ == num_viewports_)) { - return false; - } + if (!(o.front_face_ == front_face_)) { + return false; + } - if (!(o.depth_bias_enable_ == depth_bias_enable_)) { - return false; - } + if (!(o.num_scissors_ == num_scissors_)) { + return false; + } - if (!(o.patch_control_points_ == patch_control_points_)) { - return false; - } + if (!(o.num_viewports_ == num_viewports_)) { + return false; + } - if (!(o.polygon_mode_ == polygon_mode_)) { - return false; - } + if (!(o.depth_bias_enable_ == depth_bias_enable_)) { + return false; + } - if (!(o.depth_clamp_enable_ == depth_clamp_enable_)) { - return false; - } + if (!(o.patch_control_points_ == patch_control_points_)) { + return false; + } + if (!(o.polygon_mode_ == polygon_mode_)) { + return false; } - if (flag == VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT) { - if (!(o.comparable_shaders_[FRAGMENT_SHADER] == comparable_shaders_[FRAGMENT_SHADER])) { - return false; - } - if (!(o.depth_bounds_test_enable_ == depth_bounds_test_enable_)) { - return false; - } - if (!(o.depth_compare_op_ == depth_compare_op_)) { - return false; - } + if (!(o.depth_clamp_enable_ == depth_clamp_enable_)) { + return false; + } + } + if (flag == VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT) { + if (!(o.comparable_shaders_[FRAGMENT_SHADER] == comparable_shaders_[FRAGMENT_SHADER])) { + return false; + } - if (!(o.depth_test_enable_ == depth_test_enable_)) { - return false; - } + if (!(o.depth_bounds_test_enable_ == depth_bounds_test_enable_)) { + return false; + } - if (!(o.depth_write_enable_ == depth_write_enable_)) { - return false; - } + if (!(o.depth_compare_op_ == depth_compare_op_)) { + return false; + } - if (!(o.stencil_front_ == stencil_front_)) { - return false; - } + if (!(o.depth_test_enable_ == depth_test_enable_)) { + return false; + } - if (!(o.stencil_back_ == stencil_back_)) { - return false; - } + if (!(o.depth_write_enable_ == depth_write_enable_)) { + return false; + } - if (!(o.rasterization_samples_ == rasterization_samples_)) { - return false; - } + if (!(o.stencil_front_ == stencil_front_)) { + return false; + } - if (!(o.alpha_to_one_enable_ == alpha_to_one_enable_)) { - return false; - } + if (!(o.stencil_back_ == stencil_back_)) { + return false; + } - if (!(o.alpha_to_coverage_enable_ == alpha_to_coverage_enable_)) { - return false; - } + if (!(o.rasterization_samples_ == rasterization_samples_)) { + return false; + } - for (uint32_t i = 0; i < kMaxSampleMaskLength; ++i) { - if (!(o.sample_masks_[i] == sample_masks_[i])) { - return false; - } - } + if (!(o.alpha_to_one_enable_ == alpha_to_one_enable_)) { + return false; + } + if (!(o.alpha_to_coverage_enable_ == alpha_to_coverage_enable_)) { + return false; } - return true; - } - size_t FullDrawStateData::CalculatePartialHash(StateGroup state_group) const { - switch (state_group) { - default: assert(false); return 0; - case EXTENDED_DYNAMIC_STATE_1: - { - size_t res = 17; - res = res * 31 + std::hash()(cull_mode_); - res = res * 31 + std::hash()(depth_bounds_test_enable_); - res = res * 31 + std::hash()(depth_compare_op_); - res = res * 31 + std::hash()(depth_test_enable_); - res = res * 31 + std::hash()(depth_write_enable_); - res = res * 31 + std::hash()(front_face_); - res = res * 31 + std::hash()(primitive_topology_); - res = res * 31 + std::hash()(num_scissors_); - res = res * 31 + std::hash()(num_viewports_); - res = res * 31 + std::hash()(stencil_front_); - res = res * 31 + std::hash()(stencil_back_); - res = res * 31 + std::hash()(stencil_test_enable_); - return res; - } - case EXTENDED_DYNAMIC_STATE_2: - { - size_t res = 17; - res = res * 31 + std::hash()(logic_op_); - res = res * 31 + std::hash()(primitive_restart_enable_); - res = res * 31 + std::hash()(rasterizer_discard_enable_); - res = res * 31 + std::hash()(depth_bias_enable_); - res = res * 31 + std::hash()(patch_control_points_); - return res; - } - case EXTENDED_DYNAMIC_STATE_3: - { - size_t res = 17; - res = res * 31 + std::hash()(polygon_mode_); - res = res * 31 + std::hash()(rasterization_samples_); - res = res * 31 + std::hash()(logic_op_enable_); - res = res * 31 + std::hash()(depth_clamp_enable_); - res = res * 31 + std::hash()(domain_origin_); - res = res * 31 + std::hash()(alpha_to_one_enable_); - res = res * 31 + std::hash()(alpha_to_coverage_enable_); - // TODO: array comparison - res = res * 31 + std::hash()(rasterization_stream_); - res = res * 31 + std::hash()(conservative_rasterization_mode_); - res = res * 31 + std::hash()(extra_primitive_overestimation_size_); - res = res * 31 + std::hash()(depth_clip_enable_); - res = res * 31 + std::hash()(sample_locations_enable_); - res = res * 31 + std::hash()(provoking_vertex_mode_); - res = res * 31 + std::hash()(line_rasterization_mode_); - res = res * 31 + std::hash()(stippled_line_enable_); - res = res * 31 + std::hash()(negative_one_to_one_); - res = res * 31 + std::hash()(coverage_modulation_mode_); - res = res * 31 + std::hash()(coverage_modulation_table_enable_); - // TODO: array comparison - res = res * 31 + std::hash()(coverage_modulation_table_count_); - res = res * 31 + std::hash()(coverage_reduction_mode_); - res = res * 31 + std::hash()(coverage_to_color_enable_); - res = res * 31 + std::hash()(coverage_to_color_location_); - res = res * 31 + std::hash()(viewport_w_scaling_enable_); - res = res * 31 + std::hash()(viewport_swizzle_count_); - // TODO: array comparison - res = res * 31 + std::hash()(shading_rate_image_enable_); - res = res * 31 + std::hash()(representative_fragment_test_enable_); - return res; + + for (uint32_t i = 0; i < kMaxSampleMaskLength; ++i) { + if (!(o.sample_masks_[i] == sample_masks_[i])) { + return false; } - case VERTEX_INPUT_DYNAMIC: - { - size_t res = 17; - // TODO: array comparison - // TODO: array comparison - res = res * 31 + std::hash()(num_vertex_input_attribute_descriptions_); - res = res * 31 + std::hash()(num_vertex_input_binding_descriptions_); - return res; + } + } + return true; +} +size_t FullDrawStateData::CalculatePartialHash(StateGroup state_group) const { + switch (state_group) { + default: + assert(false); + return 0; + case EXTENDED_DYNAMIC_STATE: { + size_t res = 17; + res = res * 31 + std::hash()(cull_mode_); + res = res * 31 + std::hash()(depth_bounds_test_enable_); + res = res * 31 + std::hash()(depth_compare_op_); + res = res * 31 + std::hash()(depth_test_enable_); + res = res * 31 + std::hash()(depth_write_enable_); + res = res * 31 + std::hash()(front_face_); + res = res * 31 + std::hash()(primitive_topology_); + res = res * 31 + std::hash()(num_scissors_); + res = res * 31 + std::hash()(num_viewports_); + res = res * 31 + std::hash()(stencil_front_); + res = res * 31 + std::hash()(stencil_back_); + res = res * 31 + std::hash()(stencil_test_enable_); + return res; + } + case EXTENDED_DYNAMIC_STATE2: { + size_t res = 17; + res = res * 31 + std::hash()(logic_op_); + res = res * 31 + std::hash()(primitive_restart_enable_); + res = res * 31 + std::hash()(rasterizer_discard_enable_); + res = res * 31 + std::hash()(depth_bias_enable_); + res = res * 31 + std::hash()(patch_control_points_); + return res; + } + case EXTENDED_DYNAMIC_STATE3: { + size_t res = 17; + res = res * 31 + std::hash()(polygon_mode_); + res = res * 31 + std::hash()(rasterization_samples_); + res = res * 31 + std::hash()(logic_op_enable_); + res = res * 31 + std::hash()(depth_clamp_enable_); + res = res * 31 + std::hash()(domain_origin_); + res = res * 31 + std::hash()(alpha_to_one_enable_); + res = res * 31 + std::hash()(alpha_to_coverage_enable_); + // TODO: array comparison + res = res * 31 + std::hash()(rasterization_stream_); + res = res * 31 + std::hash()(conservative_rasterization_mode_); + res = res * 31 + std::hash()(extra_primitive_overestimation_size_); + res = res * 31 + std::hash()(depth_clip_enable_); + res = res * 31 + std::hash()(sample_locations_enable_); + res = res * 31 + std::hash()(provoking_vertex_mode_); + res = res * 31 + std::hash()(line_rasterization_mode_); + res = res * 31 + std::hash()(stippled_line_enable_); + res = res * 31 + std::hash()(negative_one_to_one_); + res = res * 31 + std::hash()(coverage_modulation_mode_); + res = res * 31 + std::hash()(coverage_modulation_table_enable_); + // TODO: array comparison + res = res * 31 + std::hash()(coverage_modulation_table_count_); + res = res * 31 + std::hash()(coverage_reduction_mode_); + res = res * 31 + std::hash()(coverage_to_color_enable_); + res = res * 31 + std::hash()(coverage_to_color_location_); + res = res * 31 + std::hash()(viewport_w_scaling_enable_); + res = res * 31 + std::hash()(viewport_swizzle_count_); + // TODO: array comparison + res = res * 31 + std::hash()(shading_rate_image_enable_); + res = res * 31 + std::hash()(representative_fragment_test_enable_); + return res; + } + case VERTEX_INPUT_DYNAMIC_STATE: { + size_t res = 17; + // TODO: array comparison + // TODO: array comparison + res = res * 31 + std::hash()(num_vertex_input_attribute_descriptions_); + res = res * 31 + std::hash()(num_vertex_input_binding_descriptions_); + return res; + } + case MISC: { + size_t res = 17; + if (!dynamic_rendering_unused_attachments_) { + res = res * 31 + std::hash()(depth_attachment_format_); } - case MISC: - { - size_t res = 17; - if (!dynamic_rendering_unused_attachments_) { - res = res * 31 + std::hash()(depth_attachment_format_); - } - if (!dynamic_rendering_unused_attachments_) { - res = res * 31 + std::hash()(stencil_attachment_format_); - } - // TODO: array comparison - res = res * 31 + std::hash()(num_color_attachments_); - // TODO: array comparison - // TODO: array comparison - return res; + if (!dynamic_rendering_unused_attachments_) { + res = res * 31 + std::hash()(stencil_attachment_format_); } + // TODO: array comparison + res = res * 31 + std::hash()(num_color_attachments_); + // TODO: array comparison + // TODO: array comparison + return res; } } +} } // namespace shader_object - diff --git a/layers/shader_object/generated/shader_object_full_draw_state_struct_members.inl b/layers/shader_object/generated/shader_object_full_draw_state_struct_members.inl index 0d2432e7..bff17c4f 100644 --- a/layers/shader_object/generated/shader_object_full_draw_state_struct_members.inl +++ b/layers/shader_object/generated/shader_object_full_draw_state_struct_members.inl @@ -18,242 +18,194 @@ */ public: - enum StateGroup { MISC, EXTENDED_DYNAMIC_STATE_1, EXTENDED_DYNAMIC_STATE_2, EXTENDED_DYNAMIC_STATE_3, VERTEX_INPUT_DYNAMIC, NUM_STATE_GROUPS }; +enum StateGroup { + MISC, + EXTENDED_DYNAMIC_STATE, + EXTENDED_DYNAMIC_STATE2, + EXTENDED_DYNAMIC_STATE3, + VERTEX_INPUT_DYNAMIC_STATE, + NUM_STATE_GROUPS +}; - void SetDepthAttachmentFormat(VkFormat const& element); - VkFormat const& GetDepthAttachmentFormat() const; - - void SetStencilAttachmentFormat(VkFormat const& element); - VkFormat const& GetStencilAttachmentFormat() const; - - void SetColorAttachmentFormat(uint32_t index, VkFormat const& element); - VkFormat const& GetColorAttachmentFormat(uint32_t index) const; - VkFormat const* GetColorAttachmentFormatPtr() const; - - void SetNumColorAttachments(uint32_t const& element); - uint32_t const& GetNumColorAttachments() const; - - void SetColorBlendAttachmentState(uint32_t index, VkPipelineColorBlendAttachmentState const& element); - VkPipelineColorBlendAttachmentState const& GetColorBlendAttachmentState(uint32_t index) const; - VkPipelineColorBlendAttachmentState const* GetColorBlendAttachmentStatePtr() const; - - void SetComparableShader(uint32_t index, ComparableShader const& element); - ComparableShader const& GetComparableShader(uint32_t index) const; - ComparableShader const* GetComparableShaderPtr() const; - - void SetCullMode(VkCullModeFlags const& element); - VkCullModeFlags const& GetCullMode() const; - - void SetDepthBoundsTestEnable(VkBool32 const& element); - VkBool32 const& GetDepthBoundsTestEnable() const; - - void SetDepthCompareOp(VkCompareOp const& element); - VkCompareOp const& GetDepthCompareOp() const; - - void SetDepthTestEnable(VkBool32 const& element); - VkBool32 const& GetDepthTestEnable() const; - - void SetDepthWriteEnable(VkBool32 const& element); - VkBool32 const& GetDepthWriteEnable() const; - - void SetFrontFace(VkFrontFace const& element); - VkFrontFace const& GetFrontFace() const; - - void SetPrimitiveTopology(VkPrimitiveTopology const& element); - VkPrimitiveTopology const& GetPrimitiveTopology() const; - - void SetNumScissors(uint32_t const& element); - uint32_t const& GetNumScissors() const; - - void SetNumViewports(uint32_t const& element); - uint32_t const& GetNumViewports() const; - - void SetStencilFront(VkStencilOpState const& element); - VkStencilOpState const& GetStencilFront() const; - - void SetStencilBack(VkStencilOpState const& element); - VkStencilOpState const& GetStencilBack() const; - - void SetStencilTestEnable(VkBool32 const& element); - VkBool32 const& GetStencilTestEnable() const; - - void SetLogicOp(VkLogicOp const& element); - VkLogicOp const& GetLogicOp() const; - - void SetPrimitiveRestartEnable(VkBool32 const& element); - VkBool32 const& GetPrimitiveRestartEnable() const; - - void SetRasterizerDiscardEnable(VkBool32 const& element); - VkBool32 const& GetRasterizerDiscardEnable() const; - - void SetDepthBiasEnable(VkBool32 const& element); - VkBool32 const& GetDepthBiasEnable() const; - - void SetPatchControlPoints(uint32_t const& element); - uint32_t const& GetPatchControlPoints() const; - - void SetPolygonMode(VkPolygonMode const& element); - VkPolygonMode const& GetPolygonMode() const; - - void SetRasterizationSamples(VkSampleCountFlagBits const& element); - VkSampleCountFlagBits const& GetRasterizationSamples() const; - - void SetLogicOpEnable(VkBool32 const& element); - VkBool32 const& GetLogicOpEnable() const; - - void SetDepthClampEnable(VkBool32 const& element); - VkBool32 const& GetDepthClampEnable() const; - - void SetDomainOrigin(VkTessellationDomainOrigin const& element); - VkTessellationDomainOrigin const& GetDomainOrigin() const; - - void SetAlphaToOneEnable(VkBool32 const& element); - VkBool32 const& GetAlphaToOneEnable() const; - - void SetAlphaToCoverageEnable(VkBool32 const& element); - VkBool32 const& GetAlphaToCoverageEnable() const; - - void SetSampleMask(uint32_t index, VkSampleMask const& element); - VkSampleMask const& GetSampleMask(uint32_t index) const; - VkSampleMask const* GetSampleMaskPtr() const; - - void SetRasterizationStream(uint32_t const& element); - uint32_t const& GetRasterizationStream() const; - - void SetConservativeRasterizationMode(VkConservativeRasterizationModeEXT const& element); - VkConservativeRasterizationModeEXT const& GetConservativeRasterizationMode() const; - - void SetExtraPrimitiveOverestimationSize(float const& element); - float const& GetExtraPrimitiveOverestimationSize() const; - - void SetDepthClipEnable(VkBool32 const& element); - VkBool32 const& GetDepthClipEnable() const; - - void SetSampleLocationsEnable(VkBool32 const& element); - VkBool32 const& GetSampleLocationsEnable() const; - - void SetProvokingVertexMode(VkProvokingVertexModeEXT const& element); - VkProvokingVertexModeEXT const& GetProvokingVertexMode() const; - - void SetLineRasterizationMode(VkLineRasterizationModeEXT const& element); - VkLineRasterizationModeEXT const& GetLineRasterizationMode() const; - - void SetStippledLineEnable(VkBool32 const& element); - VkBool32 const& GetStippledLineEnable() const; - - void SetNegativeOneToOne(VkBool32 const& element); - VkBool32 const& GetNegativeOneToOne() const; - - void SetCoverageModulationMode(VkCoverageModulationModeNV const& element); - VkCoverageModulationModeNV const& GetCoverageModulationMode() const; - - void SetCoverageModulationTableEnable(VkBool32 const& element); - VkBool32 const& GetCoverageModulationTableEnable() const; - - void SetCoverageModulationTableValues(uint32_t index, float const& element); - float const& GetCoverageModulationTableValues(uint32_t index) const; - float const* GetCoverageModulationTableValuesPtr() const; - - void SetCoverageModulationTableCount(uint32_t const& element); - uint32_t const& GetCoverageModulationTableCount() const; - - void SetCoverageReductionMode(VkCoverageReductionModeNV const& element); - VkCoverageReductionModeNV const& GetCoverageReductionMode() const; - - void SetCoverageToColorEnable(VkBool32 const& element); - VkBool32 const& GetCoverageToColorEnable() const; - - void SetCoverageToColorLocation(uint32_t const& element); - uint32_t const& GetCoverageToColorLocation() const; - - void SetViewportWScalingEnable(VkBool32 const& element); - VkBool32 const& GetViewportWScalingEnable() const; - - void SetViewportSwizzleCount(uint32_t const& element); - uint32_t const& GetViewportSwizzleCount() const; - - void SetViewportSwizzle(uint32_t index, VkViewportSwizzleNV const& element); - VkViewportSwizzleNV const& GetViewportSwizzle(uint32_t index) const; - VkViewportSwizzleNV const* GetViewportSwizzlePtr() const; - - void SetShadingRateImageEnable(VkBool32 const& element); - VkBool32 const& GetShadingRateImageEnable() const; - - void SetRepresentativeFragmentTestEnable(VkBool32 const& element); - VkBool32 const& GetRepresentativeFragmentTestEnable() const; - - void SetVertexInputAttributeDescription(uint32_t index, VkVertexInputAttributeDescription const& element); - VkVertexInputAttributeDescription const& GetVertexInputAttributeDescription(uint32_t index) const; - VkVertexInputAttributeDescription const* GetVertexInputAttributeDescriptionPtr() const; - - void SetVertexInputBindingDescription(uint32_t index, VkVertexInputBindingDescription const& element); - VkVertexInputBindingDescription const& GetVertexInputBindingDescription(uint32_t index) const; - VkVertexInputBindingDescription const* GetVertexInputBindingDescriptionPtr() const; - - void SetNumVertexInputAttributeDescriptions(uint32_t const& element); - uint32_t const& GetNumVertexInputAttributeDescriptions() const; - - void SetNumVertexInputBindingDescriptions(uint32_t const& element); - uint32_t const& GetNumVertexInputBindingDescriptions() const; - - bool operator==(FullDrawStateData const& o) const; - bool CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const; +void SetDepthAttachmentFormat(VkFormat const& element); +VkFormat const& GetDepthAttachmentFormat() const; +void SetStencilAttachmentFormat(VkFormat const& element); +VkFormat const& GetStencilAttachmentFormat() const; +void SetColorAttachmentFormat(uint32_t index, VkFormat const& element); +VkFormat const& GetColorAttachmentFormat(uint32_t index) const; +VkFormat const* GetColorAttachmentFormatPtr() const; +void SetNumColorAttachments(uint32_t const& element); +uint32_t const& GetNumColorAttachments() const; +void SetColorBlendAttachmentState(uint32_t index, VkPipelineColorBlendAttachmentState const& element); +VkPipelineColorBlendAttachmentState const& GetColorBlendAttachmentState(uint32_t index) const; +VkPipelineColorBlendAttachmentState const* GetColorBlendAttachmentStatePtr() const; +void SetComparableShader(uint32_t index, ComparableShader const& element); +ComparableShader const& GetComparableShader(uint32_t index) const; +ComparableShader const* GetComparableShaderPtr() const; +void SetCullMode(VkCullModeFlags const& element); +VkCullModeFlags const& GetCullMode() const; +void SetDepthBoundsTestEnable(VkBool32 const& element); +VkBool32 const& GetDepthBoundsTestEnable() const; +void SetDepthCompareOp(VkCompareOp const& element); +VkCompareOp const& GetDepthCompareOp() const; +void SetDepthTestEnable(VkBool32 const& element); +VkBool32 const& GetDepthTestEnable() const; +void SetDepthWriteEnable(VkBool32 const& element); +VkBool32 const& GetDepthWriteEnable() const; +void SetFrontFace(VkFrontFace const& element); +VkFrontFace const& GetFrontFace() const; +void SetPrimitiveTopology(VkPrimitiveTopology const& element); +VkPrimitiveTopology const& GetPrimitiveTopology() const; +void SetNumScissors(uint32_t const& element); +uint32_t const& GetNumScissors() const; +void SetNumViewports(uint32_t const& element); +uint32_t const& GetNumViewports() const; +void SetStencilFront(VkStencilOpState const& element); +VkStencilOpState const& GetStencilFront() const; +void SetStencilBack(VkStencilOpState const& element); +VkStencilOpState const& GetStencilBack() const; +void SetStencilTestEnable(VkBool32 const& element); +VkBool32 const& GetStencilTestEnable() const; +void SetLogicOp(VkLogicOp const& element); +VkLogicOp const& GetLogicOp() const; +void SetPrimitiveRestartEnable(VkBool32 const& element); +VkBool32 const& GetPrimitiveRestartEnable() const; +void SetRasterizerDiscardEnable(VkBool32 const& element); +VkBool32 const& GetRasterizerDiscardEnable() const; +void SetDepthBiasEnable(VkBool32 const& element); +VkBool32 const& GetDepthBiasEnable() const; +void SetPatchControlPoints(uint32_t const& element); +uint32_t const& GetPatchControlPoints() const; +void SetPolygonMode(VkPolygonMode const& element); +VkPolygonMode const& GetPolygonMode() const; +void SetRasterizationSamples(VkSampleCountFlagBits const& element); +VkSampleCountFlagBits const& GetRasterizationSamples() const; +void SetLogicOpEnable(VkBool32 const& element); +VkBool32 const& GetLogicOpEnable() const; +void SetDepthClampEnable(VkBool32 const& element); +VkBool32 const& GetDepthClampEnable() const; +void SetDomainOrigin(VkTessellationDomainOrigin const& element); +VkTessellationDomainOrigin const& GetDomainOrigin() const; +void SetAlphaToOneEnable(VkBool32 const& element); +VkBool32 const& GetAlphaToOneEnable() const; +void SetAlphaToCoverageEnable(VkBool32 const& element); +VkBool32 const& GetAlphaToCoverageEnable() const; +void SetSampleMask(uint32_t index, VkSampleMask const& element); +VkSampleMask const& GetSampleMask(uint32_t index) const; +VkSampleMask const* GetSampleMaskPtr() const; +void SetRasterizationStream(uint32_t const& element); +uint32_t const& GetRasterizationStream() const; +void SetConservativeRasterizationMode(VkConservativeRasterizationModeEXT const& element); +VkConservativeRasterizationModeEXT const& GetConservativeRasterizationMode() const; +void SetExtraPrimitiveOverestimationSize(float const& element); +float const& GetExtraPrimitiveOverestimationSize() const; +void SetDepthClipEnable(VkBool32 const& element); +VkBool32 const& GetDepthClipEnable() const; +void SetSampleLocationsEnable(VkBool32 const& element); +VkBool32 const& GetSampleLocationsEnable() const; +void SetProvokingVertexMode(VkProvokingVertexModeEXT const& element); +VkProvokingVertexModeEXT const& GetProvokingVertexMode() const; +void SetLineRasterizationMode(VkLineRasterizationModeEXT const& element); +VkLineRasterizationModeEXT const& GetLineRasterizationMode() const; +void SetStippledLineEnable(VkBool32 const& element); +VkBool32 const& GetStippledLineEnable() const; +void SetNegativeOneToOne(VkBool32 const& element); +VkBool32 const& GetNegativeOneToOne() const; +void SetCoverageModulationMode(VkCoverageModulationModeNV const& element); +VkCoverageModulationModeNV const& GetCoverageModulationMode() const; +void SetCoverageModulationTableEnable(VkBool32 const& element); +VkBool32 const& GetCoverageModulationTableEnable() const; +void SetCoverageModulationTableValues(uint32_t index, float const& element); +float const& GetCoverageModulationTableValues(uint32_t index) const; +float const* GetCoverageModulationTableValuesPtr() const; +void SetCoverageModulationTableCount(uint32_t const& element); +uint32_t const& GetCoverageModulationTableCount() const; +void SetCoverageReductionMode(VkCoverageReductionModeNV const& element); +VkCoverageReductionModeNV const& GetCoverageReductionMode() const; +void SetCoverageToColorEnable(VkBool32 const& element); +VkBool32 const& GetCoverageToColorEnable() const; +void SetCoverageToColorLocation(uint32_t const& element); +uint32_t const& GetCoverageToColorLocation() const; +void SetViewportWScalingEnable(VkBool32 const& element); +VkBool32 const& GetViewportWScalingEnable() const; +void SetViewportSwizzleCount(uint32_t const& element); +uint32_t const& GetViewportSwizzleCount() const; +void SetViewportSwizzle(uint32_t index, VkViewportSwizzleNV const& element); +VkViewportSwizzleNV const& GetViewportSwizzle(uint32_t index) const; +VkViewportSwizzleNV const* GetViewportSwizzlePtr() const; +void SetShadingRateImageEnable(VkBool32 const& element); +VkBool32 const& GetShadingRateImageEnable() const; +void SetRepresentativeFragmentTestEnable(VkBool32 const& element); +VkBool32 const& GetRepresentativeFragmentTestEnable() const; +void SetVertexInputAttributeDescription(uint32_t index, VkVertexInputAttributeDescription const& element); +VkVertexInputAttributeDescription const& GetVertexInputAttributeDescription(uint32_t index) const; +VkVertexInputAttributeDescription const* GetVertexInputAttributeDescriptionPtr() const; +void SetVertexInputBindingDescription(uint32_t index, VkVertexInputBindingDescription const& element); +VkVertexInputBindingDescription const& GetVertexInputBindingDescription(uint32_t index) const; +VkVertexInputBindingDescription const* GetVertexInputBindingDescriptionPtr() const; +void SetNumVertexInputAttributeDescriptions(uint32_t const& element); +uint32_t const& GetNumVertexInputAttributeDescriptions() const; +void SetNumVertexInputBindingDescriptions(uint32_t const& element); +uint32_t const& GetNumVertexInputBindingDescriptions() const; +bool operator==(FullDrawStateData const& o) const; +bool CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const; private: - size_t CalculatePartialHash(StateGroup state_group) const; - VkFormat depth_attachment_format_{}; - VkFormat stencil_attachment_format_{}; - VkFormat* color_attachment_formats_{}; - uint32_t num_color_attachments_{}; - VkPipelineColorBlendAttachmentState* color_blend_attachment_states_{}; - ComparableShader comparable_shaders_[NUM_SHADERS]; - VkCullModeFlags cull_mode_{}; - VkBool32 depth_bounds_test_enable_{}; - VkCompareOp depth_compare_op_{}; - VkBool32 depth_test_enable_{}; - VkBool32 depth_write_enable_{}; - VkFrontFace front_face_{}; - VkPrimitiveTopology primitive_topology_{}; - uint32_t num_scissors_{}; - uint32_t num_viewports_{}; - VkStencilOpState stencil_front_{}; - VkStencilOpState stencil_back_{}; - VkBool32 stencil_test_enable_{}; - VkLogicOp logic_op_{}; - VkBool32 primitive_restart_enable_{}; - VkBool32 rasterizer_discard_enable_{}; - VkBool32 depth_bias_enable_{}; - uint32_t patch_control_points_ = 1; - VkPolygonMode polygon_mode_{}; - VkSampleCountFlagBits rasterization_samples_{}; - VkBool32 logic_op_enable_{}; - VkBool32 depth_clamp_enable_{}; - VkTessellationDomainOrigin domain_origin_{}; - VkBool32 alpha_to_one_enable_{}; - VkBool32 alpha_to_coverage_enable_{}; - VkSampleMask sample_masks_[kMaxSampleMaskLength]; - uint32_t rasterization_stream_{}; - VkConservativeRasterizationModeEXT conservative_rasterization_mode_{}; - float extra_primitive_overestimation_size_{}; - VkBool32 depth_clip_enable_{}; - VkBool32 sample_locations_enable_{}; - VkProvokingVertexModeEXT provoking_vertex_mode_{}; - VkLineRasterizationModeEXT line_rasterization_mode_{}; - VkBool32 stippled_line_enable_{}; - VkBool32 negative_one_to_one_{}; - VkCoverageModulationModeNV coverage_modulation_mode_{}; - VkBool32 coverage_modulation_table_enable_{}; - float coverage_modulation_table_valuess_[VK_SAMPLE_COUNT_64_BIT]; - uint32_t coverage_modulation_table_count_{}; - VkCoverageReductionModeNV coverage_reduction_mode_{}; - VkBool32 coverage_to_color_enable_{}; - uint32_t coverage_to_color_location_{}; - VkBool32 viewport_w_scaling_enable_{}; - uint32_t viewport_swizzle_count_{}; - VkViewportSwizzleNV* viewport_swizzles_{}; - VkBool32 shading_rate_image_enable_{}; - VkBool32 representative_fragment_test_enable_{}; - VkVertexInputAttributeDescription* vertex_input_attribute_descriptions_{}; - VkVertexInputBindingDescription* vertex_input_binding_descriptions_{}; - uint32_t num_vertex_input_attribute_descriptions_{}; - uint32_t num_vertex_input_binding_descriptions_{}; +size_t CalculatePartialHash(StateGroup state_group) const; + +VkFormat depth_attachment_format_{}; +VkFormat stencil_attachment_format_{}; +VkFormat* color_attachment_formats_{}; +uint32_t num_color_attachments_{}; +VkPipelineColorBlendAttachmentState* color_blend_attachment_states_{}; +ComparableShader comparable_shaders_[NUM_SHADERS]; +VkCullModeFlags cull_mode_{}; +VkBool32 depth_bounds_test_enable_{}; +VkCompareOp depth_compare_op_{}; +VkBool32 depth_test_enable_{}; +VkBool32 depth_write_enable_{}; +VkFrontFace front_face_{}; +VkPrimitiveTopology primitive_topology_{}; +uint32_t num_scissors_{}; +uint32_t num_viewports_{}; +VkStencilOpState stencil_front_{}; +VkStencilOpState stencil_back_{}; +VkBool32 stencil_test_enable_{}; +VkLogicOp logic_op_{}; +VkBool32 primitive_restart_enable_{}; +VkBool32 rasterizer_discard_enable_{}; +VkBool32 depth_bias_enable_{}; +uint32_t patch_control_points_ = 1; +VkPolygonMode polygon_mode_{}; +VkSampleCountFlagBits rasterization_samples_{}; +VkBool32 logic_op_enable_{}; +VkBool32 depth_clamp_enable_{}; +VkTessellationDomainOrigin domain_origin_{}; +VkBool32 alpha_to_one_enable_{}; +VkBool32 alpha_to_coverage_enable_{}; +VkSampleMask sample_masks_[kMaxSampleMaskLength]; +uint32_t rasterization_stream_{}; +VkConservativeRasterizationModeEXT conservative_rasterization_mode_{}; +float extra_primitive_overestimation_size_{}; +VkBool32 depth_clip_enable_{}; +VkBool32 sample_locations_enable_{}; +VkProvokingVertexModeEXT provoking_vertex_mode_{}; +VkLineRasterizationModeEXT line_rasterization_mode_{}; +VkBool32 stippled_line_enable_{}; +VkBool32 negative_one_to_one_{}; +VkCoverageModulationModeNV coverage_modulation_mode_{}; +VkBool32 coverage_modulation_table_enable_{}; +float coverage_modulation_table_valuess_[VK_SAMPLE_COUNT_64_BIT]; +uint32_t coverage_modulation_table_count_{}; +VkCoverageReductionModeNV coverage_reduction_mode_{}; +VkBool32 coverage_to_color_enable_{}; +uint32_t coverage_to_color_location_{}; +VkBool32 viewport_w_scaling_enable_{}; +uint32_t viewport_swizzle_count_{}; +VkViewportSwizzleNV* viewport_swizzles_{}; +VkBool32 shading_rate_image_enable_{}; +VkBool32 representative_fragment_test_enable_{}; +VkVertexInputAttributeDescription* vertex_input_attribute_descriptions_{}; +VkVertexInputBindingDescription* vertex_input_binding_descriptions_{}; +uint32_t num_vertex_input_attribute_descriptions_{}; +uint32_t num_vertex_input_binding_descriptions_{}; diff --git a/layers/shader_object/generated/shader_object_full_draw_state_utility_functions.inl b/layers/shader_object/generated/shader_object_full_draw_state_utility_functions.inl index 03bb7e22..6ace84ce 100644 --- a/layers/shader_object/generated/shader_object_full_draw_state_utility_functions.inl +++ b/layers/shader_object/generated/shader_object_full_draw_state_utility_functions.inl @@ -17,22 +17,25 @@ * limitations under the License. */ - static constexpr void ReserveMemory(AlignedMemory& aligned_memory, Limits const& limits) { - aligned_memory.Add(); - aligned_memory.Add(limits.max_color_attachments); - aligned_memory.Add(limits.max_color_attachments); - aligned_memory.Add(limits.max_viewports); - aligned_memory.Add(limits.max_vertex_input_attributes); - aligned_memory.Add(limits.max_vertex_input_bindings); - } +static constexpr void ReserveMemory(AlignedMemory& aligned_memory, Limits const& limits) { + aligned_memory.Add(); + aligned_memory.Add(limits.max_color_attachments); + aligned_memory.Add(limits.max_color_attachments); + aligned_memory.Add(limits.max_viewports); + aligned_memory.Add(limits.max_vertex_input_attributes); + aligned_memory.Add(limits.max_vertex_input_bindings); +} - static void SetInternalArrayPointers(FullDrawStateData* state, Limits const& limits) { - // Set array pointers to beginning of their memory - AlignedMemory aligned_memory; - aligned_memory.SetMemoryWritePtr((char*)state + sizeof(FullDrawStateData)); - state->color_attachment_formats_ = aligned_memory.GetNextAlignedPtr(limits.max_color_attachments); - state->color_blend_attachment_states_ = aligned_memory.GetNextAlignedPtr(limits.max_color_attachments); - state->viewport_swizzles_ = aligned_memory.GetNextAlignedPtr(limits.max_viewports); - state->vertex_input_attribute_descriptions_ = aligned_memory.GetNextAlignedPtr(limits.max_vertex_input_attributes); - state->vertex_input_binding_descriptions_ = aligned_memory.GetNextAlignedPtr(limits.max_vertex_input_bindings); - } +static void SetInternalArrayPointers(FullDrawStateData* state, Limits const& limits) { + // Set array pointers to beginning of their memory + AlignedMemory aligned_memory; + aligned_memory.SetMemoryWritePtr((char*)state + sizeof(FullDrawStateData)); + state->color_attachment_formats_ = aligned_memory.GetNextAlignedPtr(limits.max_color_attachments); + state->color_blend_attachment_states_ = + aligned_memory.GetNextAlignedPtr(limits.max_color_attachments); + state->viewport_swizzles_ = aligned_memory.GetNextAlignedPtr(limits.max_viewports); + state->vertex_input_attribute_descriptions_ = + aligned_memory.GetNextAlignedPtr(limits.max_vertex_input_attributes); + state->vertex_input_binding_descriptions_ = + aligned_memory.GetNextAlignedPtr(limits.max_vertex_input_bindings); +} diff --git a/layers/shader_object/shader_object.cpp b/layers/shader_object/shader_object.cpp index 22375c1a..b803ffc6 100644 --- a/layers/shader_object/shader_object.cpp +++ b/layers/shader_object/shader_object.cpp @@ -332,7 +332,7 @@ VkResult Shader::Create(DeviceData const& deviceData, VkShaderCreateInfoEXT cons // Copy data over from create info struct aligned_memory.CopyBytes(shader->name, shader->name_byte_count, createInfo.pName, name_size); - + aligned_memory.CopyBytes(shader->spirv_data, shader->spirv_data_size, spirv_data, spirv_size); aligned_memory.CopyStruct(shader->push_constant_ranges, shader->num_push_constant_ranges, createInfo.pPushConstantRanges, @@ -1240,9 +1240,9 @@ void AddGraphicsPipelineToCache(DeviceData const& deviceData, VkAllocationCallba VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO }; VkPipelineInputAssemblyStateCreateInfo input_assembly{ - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO, nullptr, - 0, + 0, primitive_topology }; VkPipelineTessellationStateCreateInfo tessellation_state{ @@ -1340,7 +1340,7 @@ void AddGraphicsPipelineToCache(DeviceData const& deviceData, VkAllocationCallba VK_NULL_HANDLE, -1 }; - + VkPipeline temp_pipeline; VkResult result = vtable.CreateGraphicsPipelines(deviceData.device, cache, 1, &create_info, nullptr, &temp_pipeline); if (result == VK_SUCCESS) { @@ -1352,7 +1352,7 @@ void AddGraphicsPipelineToCache(DeviceData const& deviceData, VkAllocationCallba } PartialPipeline CreatePartiallyCompiledPipeline(DeviceData const& deviceData, VkAllocationCallbacks allocator, VkPipelineCache cache, - VkPipelineLayout layout, VkGraphicsPipelineLibraryFlagBitsEXT pipelineLibraryFlags, + VkPipelineLayout layout, VkGraphicsPipelineLibraryFlagBitsEXT pipelineLibraryFlags, Shader** ppShaders, uint32_t shaderCount) { // Ensure that pipelineLibraryFlags doesn't have both VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT and VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT ASSERT((pipelineLibraryFlags & @@ -1404,11 +1404,11 @@ PartialPipeline CreatePartiallyCompiledPipeline(DeviceData const& deviceData, Vk auto viewport = VkViewport{0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f}; auto scissor = VkRect2D{{0, 0}, {1, 1}}; VkPipelineViewportStateCreateInfo viewport_state{ - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, - nullptr, - 0, + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO, + nullptr, + 0, deviceData.HasDynamicState(VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT) ? 0u : 1u, - &viewport, + &viewport, deviceData.HasDynamicState(VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT) ? 0u : 1u, &scissor }; @@ -1428,9 +1428,9 @@ PartialPipeline CreatePartiallyCompiledPipeline(DeviceData const& deviceData, Vk 1.0f }; VkPipelineTessellationStateCreateInfo tessellation_state{ - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO, nullptr, - 0, + 0, 1 }; VkPipelineMultisampleStateCreateInfo multisample_state{ @@ -1587,14 +1587,14 @@ static VkResult PopulateCachesForShaders(DeviceData const& deviceData, VkAllocat if (vertex_or_mesh_shader) { vertex_or_mesh_shader->partial_pipeline = CreatePartiallyCompiledPipeline( deviceData, allocator, cache_for_linked_shaders, layout_for_linked_shaders, - VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, + VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT, pre_rasterization_shaders, pre_rasterization_shader_count ); } if (fragment_shader) { fragment_shader->partial_pipeline = CreatePartiallyCompiledPipeline( - deviceData, allocator, cache_for_linked_shaders, layout_for_linked_shaders, + deviceData, allocator, cache_for_linked_shaders, layout_for_linked_shaders, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT, &fragment_shader, 1 ); @@ -1833,7 +1833,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(const VkInstanceCreateInfo* result = fpEnumeratePhysicalDevices(*pInstance, &physical_device_count, nullptr); ASSERT(result == VK_SUCCESS); - void* memory = allocator.pfnAllocation(allocator.pUserData, + void* memory = allocator.pfnAllocation(allocator.pUserData, sizeof(InstanceData) + physical_device_count * (sizeof(VkPhysicalDevice) + sizeof(PhysicalDeviceData)), alignof(InstanceData), VkSystemAllocationScope::VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE); if (!memory) { @@ -1933,14 +1933,14 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2(VkPhysicalDevice ph if (shader_object_feature && (physical_device_data->supported_additional_extensions & SHADER_OBJECT) == 0) { ASSERT(reinterpret_cast(feature_before_shader_object->pNext) == reinterpret_cast(shader_object_feature)); - + // No native shader object in the driver, need to leave out shader object extension when calling underlying GetPhysicalDeviceFeatures2 feature_before_shader_object->pNext = reinterpret_cast(shader_object_feature->pNext); vtable.GetPhysicalDeviceFeatures2(physicalDevice, pFeatures); feature_before_shader_object->pNext = reinterpret_cast(shader_object_feature); // The layer requires maintenance2 and dynamic_rendering extensions - uint32_t const required_extensions = DYNAMIC_RENDERING | MAINTENANCE_2; + uint32_t const required_extensions = DYNAMIC_RENDERING | MAINTENANCE2; if ((physical_device_data->supported_additional_extensions & required_extensions) == required_extensions) { shader_object_feature->shaderObject = VK_TRUE; } else { @@ -2228,7 +2228,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevi if (current->pNext && current->pNext->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT) { auto shader_object_feature = reinterpret_cast(current->pNext); current->pNext = current->pNext->pNext; - + // Structure was allocated with new in SafePnextCopy shader_object_feature->pNext = nullptr; delete shader_object_feature; @@ -2241,7 +2241,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevi #include "generated/shader_object_create_device_feature_structs.inl" device_features.pNext = appended_features_chain; instance_vtable.GetPhysicalDeviceFeatures2(physicalDevice, &device_features); - if ((!vulkan_1_3_ptr || vulkan_1_3_ptr->dynamicRendering == VK_FALSE) && (!dynamic_rendering_ptr || dynamic_rendering_ptr->dynamicRendering == VK_FALSE)) { + if ((!VK_VERSION_1_3_ptr || VK_VERSION_1_3_ptr->dynamicRendering == VK_FALSE) && (!dynamic_rendering_ptr || dynamic_rendering_ptr->dynamicRendering == VK_FALSE)) { // Dynamic rendering is required vku::FreePnextChain(device_next_chain); allocator.pfnFree(allocator.pUserData, enabled_extension_names); @@ -2271,7 +2271,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevi }; // Append to deep-copied pNext chain - if ((vulkan_1_3_ptr && vulkan_1_3_ptr->privateData == VK_TRUE) || (private_data_ptr && private_data_ptr->privateData == VK_TRUE)) { + if ((VK_VERSION_1_3_ptr && VK_VERSION_1_3_ptr->privateData == VK_TRUE) || (private_data_ptr && private_data_ptr->privateData == VK_TRUE)) { last->pNext = reinterpret_cast(&reserved_private_data_slot); } else { last->pNext = appended_features_chain; @@ -2307,7 +2307,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevi // Fill in device data device_data->device = *pDevice; - device_data->flags = enable_layer ? DeviceData::SHADER_OBJECT_LAYER_ENABLED : 0; + device_data->flags = enable_layer ? DeviceData::SHADER_OBJECT_LAYER_ENABLED : 0; if (instance_data->layer_settings.disable_pipeline_pre_caching) { device_data->flags |= DeviceData::DISABLE_PIPELINE_PRE_CACHING; } @@ -2327,7 +2327,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevi #include "generated/shader_object_device_data_dynamic_state_adding.inl" // Handle special case dynamic states - if (!extended_dynamic_state_1_ptr || extended_dynamic_state_1_ptr->extendedDynamicState == VK_FALSE) { + if (!extended_dynamic_state_ptr || extended_dynamic_state_ptr->extendedDynamicState == VK_FALSE) { // No VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT, so use VK_DYNAMIC_STATE_VIEWPORT instead device_data->AddDynamicState(VK_DYNAMIC_STATE_VIEWPORT); device_data->AddDynamicState(VK_DYNAMIC_STATE_SCISSOR); @@ -2372,9 +2372,9 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice(VkPhysicalDevice physicalDevi // Find a supported depth stencil format (either VK_FORMAT_D24_UNORM_S8_UINT or VK_FORMAT_D32_SFLOAT_S8_UINT) VkImageFormatProperties format_properties; - VkResult format_result = instance_vtable.GetPhysicalDeviceImageFormatProperties(physicalDevice, - VK_FORMAT_D24_UNORM_S8_UINT, VK_IMAGE_TYPE_2D, - VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, + VkResult format_result = instance_vtable.GetPhysicalDeviceImageFormatProperties(physicalDevice, + VK_FORMAT_D24_UNORM_S8_UINT, VK_IMAGE_TYPE_2D, + VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, 0, &format_properties); if (format_result == VK_SUCCESS) { device_data->supported_depth_stencil_format = VK_FORMAT_D24_UNORM_S8_UINT; @@ -2740,7 +2740,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer(VkCommandBuffer command draw_state->SetSampleMask(i, all_ones); } - if ((device_data->enabled_extensions & NV_VIEWPORT_SWIZZLE) != 0 && device_data->extended_dynamic_state_3.extendedDynamicState3ViewportSwizzle == VK_FALSE) { + if ((device_data->enabled_extensions & NV_VIEWPORT_SWIZZLE) != 0 && device_data->extended_dynamic_state3.extendedDynamicState3ViewportSwizzle == VK_FALSE) { // Reset viewport swizzles for (uint32_t i = 0; i < device_data->properties.limits.maxViewports; ++i) { VkViewportSwizzleNV default_swizzle{ @@ -2784,7 +2784,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginRendering(VkCommandBuffer commandBuffe static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetNumViewports(viewportCount); cmd_data->device_data->vtable.CmdSetViewport(commandBuffer, 0, viewportCount, pViewports); } @@ -2792,20 +2792,20 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCount(VkCommandBuffer comman static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCount(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetNumScissors(scissorCount); cmd_data->device_data->vtable.CmdSetScissor(commandBuffer, 0, scissorCount, pScissors); } -static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2(VkCommandBuffer commandBuffer, - uint32_t firstBinding, uint32_t bindingCount, - const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, +static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2(VkCommandBuffer commandBuffer, + uint32_t firstBinding, uint32_t bindingCount, + const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides) { auto cmd_data = GetCommandBufferData(commandBuffer); auto draw_state = cmd_data->GetDrawStateData(); auto& vtable = cmd_data->device_data->vtable; - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); if (pStrides) { auto bindings = draw_state->GetVertexInputBindingDescriptionPtr(); for (uint32_t i = 0; i < bindingCount; ++i) { @@ -2831,7 +2831,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT(VkCommandBuffer commandBu uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->vertex_input_dynamic.vertexInputDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->vertex_input_dynamic_state.vertexInputDynamicState); FullDrawStateData* state = cmd_data->GetDrawStateData(); state->SetNumVertexInputBindingDescriptions(vertexBindingDescriptionCount); @@ -2879,7 +2879,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopology(VkCommandBuffer comman VK_PRIMITIVE_TOPOLOGY_PATCH_LIST }; - if (device_data->extended_dynamic_state_1.extendedDynamicState == VK_TRUE) { + if (device_data->extended_dynamic_state.extendedDynamicState == VK_TRUE) { ASSERT((device_data->flags & DeviceData::HAS_PRIMITIVE_TOPLOGY_UNRESTRICTED) == 0); // Collapse the primitive topology into a common primitive topology by class so that pipeline comparison is correct @@ -2893,75 +2893,75 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopology(VkCommandBuffer comman static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnable(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_2.extendedDynamicState2); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state2.extendedDynamicState2); cmd_data->GetDrawStateData()->SetPrimitiveRestartEnable(primitiveRestartEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnable(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_2.extendedDynamicState2); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state2.extendedDynamicState2); cmd_data->GetDrawStateData()->SetRasterizerDiscardEnable(rasterizerDiscardEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3RasterizationSamples); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3RasterizationSamples); cmd_data->GetDrawStateData()->SetRasterizationSamples(rasterizationSamples); } static VKAPI_ATTR void VKAPI_CALL CmdSetPolygonModeEXT(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3PolygonMode); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3PolygonMode); cmd_data->GetDrawStateData()->SetPolygonMode(polygonMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetCullMode(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetCullMode(cullMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFace(VkCommandBuffer commandBuffer, VkFrontFace frontFace) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetFrontFace(frontFace); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetDepthTestEnable(depthTestEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnable(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetDepthWriteEnable(depthWriteEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOp(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetDepthCompareOp(depthCompareOp); } static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnable(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetStencilTestEnable(stencilTestEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3LogicOpEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3LogicOpEnable); cmd_data->GetDrawStateData()->SetLogicOpEnable(logicOpEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkBool32* pColorBlendEnables) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ColorBlendEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ColorBlendEnable); FullDrawStateData* state = cmd_data->GetDrawStateData(); for (uint32_t i = 0; i < attachmentCount; ++i) { VkPipelineColorBlendAttachmentState blend_attachment_state = state->GetColorBlendAttachmentState(i + firstAttachment); @@ -2974,7 +2974,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT(VkCommandBuffer co uint32_t attachmentCount, const VkColorBlendEquationEXT* pColorBlendEquations) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ColorBlendEquation); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ColorBlendEquation); FullDrawStateData* state = cmd_data->GetDrawStateData(); for (uint32_t i = 0; i < attachmentCount; ++i) { VkPipelineColorBlendAttachmentState blend_attachment_state = state->GetColorBlendAttachmentState(i + firstAttachment); @@ -2993,7 +2993,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT(VkCommandBuffer co static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ColorWriteMask); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ColorWriteMask); FullDrawStateData* state = cmd_data->GetDrawStateData(); for (uint32_t i = 0; i < attachmentCount; ++i) { VkPipelineColorBlendAttachmentState color_blend_attachment_state = state->GetColorBlendAttachmentState(i + firstAttachment); @@ -3005,26 +3005,26 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT(VkCommandBuffer comman static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnable(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); cmd_data->GetDrawStateData()->SetDepthBoundsTestEnable(depthBoundsTestEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnable(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_2.extendedDynamicState2); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state2.extendedDynamicState2); cmd_data->GetDrawStateData()->SetDepthBiasEnable(depthBiasEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3DepthClampEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3DepthClampEnable); cmd_data->GetDrawStateData()->SetDepthClampEnable(depthClampEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOp(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_1.extendedDynamicState); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state.extendedDynamicState); FullDrawStateData* state = cmd_data->GetDrawStateData(); VkStencilOpState stencil_op{}; @@ -3043,7 +3043,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOp(VkCommandBuffer commandBuffer, static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT(VkCommandBuffer commandBuffer, VkLogicOp logicOp) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_2.extendedDynamicState2LogicOp); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state2.extendedDynamicState2LogicOp); cmd_data->GetDrawStateData()->SetLogicOp(logicOp); } @@ -3142,21 +3142,21 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV(VkCommandBuffe static VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer, uint32_t patchControlPoints) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_2.extendedDynamicState2PatchControlPoints); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state2.extendedDynamicState2PatchControlPoints); cmd_data->GetDrawStateData()->SetPatchControlPoints(patchControlPoints); } static VKAPI_ATTR void VKAPI_CALL CmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3TessellationDomainOrigin); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3TessellationDomainOrigin); cmd_data->GetDrawStateData()->SetDomainOrigin(domainOrigin); } static VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, const VkSampleMask* pSampleMask) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3SampleMask); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3SampleMask); uint32_t length = CalculateRequiredGroupSize(samples, 32); for (uint32_t i = 0; i < length; ++i) { cmd_data->GetDrawStateData()->SetSampleMask(i, pSampleMask[i]); @@ -3165,80 +3165,80 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT(VkCommandBuffer commandBuf static VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3AlphaToCoverageEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3AlphaToCoverageEnable); cmd_data->GetDrawStateData()->SetAlphaToCoverageEnable(alphaToCoverageEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3AlphaToOneEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3AlphaToOneEnable); cmd_data->GetDrawStateData()->SetAlphaToOneEnable(alphaToOneEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer, uint32_t rasterizationStream) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3RasterizationStream); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3RasterizationStream); ASSERT_VK_TRUE(cmd_data->device_data->transform_feedback.transformFeedback); cmd_data->GetDrawStateData()->SetRasterizationStream(rasterizationStream); } static VKAPI_ATTR void VKAPI_CALL CmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ConservativeRasterizationMode); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ConservativeRasterizationMode); cmd_data->GetDrawStateData()->SetConservativeRasterizationMode(conservativeRasterizationMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ExtraPrimitiveOverestimationSize); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ExtraPrimitiveOverestimationSize); cmd_data->GetDrawStateData()->SetExtraPrimitiveOverestimationSize(extraPrimitiveOverestimationSize); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3DepthClipEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3DepthClipEnable); cmd_data->GetDrawStateData()->SetDepthClipEnable(depthClipEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3SampleLocationsEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3SampleLocationsEnable); cmd_data->GetDrawStateData()->SetSampleLocationsEnable(sampleLocationsEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ProvokingVertexMode); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ProvokingVertexMode); cmd_data->GetDrawStateData()->SetProvokingVertexMode(provokingVertexMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3LineRasterizationMode); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3LineRasterizationMode); cmd_data->GetDrawStateData()->SetLineRasterizationMode(lineRasterizationMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3LineStippleEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3LineStippleEnable); cmd_data->GetDrawStateData()->SetStippledLineEnable(stippledLineEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3DepthClipNegativeOneToOne); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3DepthClipNegativeOneToOne); cmd_data->GetDrawStateData()->SetNegativeOneToOne(negativeOneToOne); } static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3CoverageModulationMode); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3CoverageModulationMode); cmd_data->GetDrawStateData()->SetCoverageModulationMode(coverageModulationMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3CoverageModulationTableEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3CoverageModulationTableEnable); cmd_data->GetDrawStateData()->SetCoverageModulationTableEnable(coverageModulationTableEnable); } @@ -3246,7 +3246,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV(VkCommandBuffe auto cmd_data = GetCommandBufferData(commandBuffer); auto draw_state = cmd_data->GetDrawStateData(); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3CoverageModulationTable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3CoverageModulationTable); draw_state->SetCoverageModulationTableCount(coverageModulationTableCount); for (uint32_t i = 0; i < coverageModulationTableCount; ++i) { @@ -3256,25 +3256,25 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV(VkCommandBuffe static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3CoverageReductionMode); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3CoverageReductionMode); cmd_data->GetDrawStateData()->SetCoverageReductionMode(coverageReductionMode); } static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3CoverageToColorEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3CoverageToColorEnable); cmd_data->GetDrawStateData()->SetCoverageToColorEnable(coverageToColorEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3CoverageToColorLocation); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3CoverageToColorLocation); cmd_data->GetDrawStateData()->SetCoverageToColorLocation(coverageToColorLocation); } static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ViewportWScalingEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ViewportWScalingEnable); cmd_data->GetDrawStateData()->SetViewportWScalingEnable(viewportWScalingEnable); } @@ -3282,7 +3282,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV(VkCommandBuffer comman auto cmd_data = GetCommandBufferData(commandBuffer); auto draw_state = cmd_data->GetDrawStateData(); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ViewportSwizzle); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ViewportSwizzle); draw_state->SetViewportSwizzleCount(firstViewport + viewportCount); for (uint32_t i = 0; i < viewportCount; ++i) { @@ -3292,13 +3292,13 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV(VkCommandBuffer comman static VKAPI_ATTR void VKAPI_CALL CmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3ShadingRateImageEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3ShadingRateImageEnable); cmd_data->GetDrawStateData()->SetShadingRateImageEnable(shadingRateImageEnable); } static VKAPI_ATTR void VKAPI_CALL CmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable) { auto cmd_data = GetCommandBufferData(commandBuffer); - ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state_3.extendedDynamicState3RepresentativeFragmentTestEnable); + ASSERT_VK_FALSE(cmd_data->device_data->extended_dynamic_state3.extendedDynamicState3RepresentativeFragmentTestEnable); cmd_data->GetDrawStateData()->SetRepresentativeFragmentTestEnable(representativeFragmentTestEnable); } @@ -3371,7 +3371,7 @@ static VKAPI_ATTR void VKAPI_CALL GetPrivateData(VkDevice device, VkObjectType o } static VKAPI_ATTR VkResult CreateDescriptorUpdateTemplate(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, + const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) { auto device_data = device_data_map.Get(device); VkResult result = device_data->vtable.CreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate); @@ -3381,7 +3381,7 @@ static VKAPI_ATTR VkResult CreateDescriptorUpdateTemplate(VkDevice device, const return result; } -static VKAPI_ATTR void DestroyDescriptorUpdateTemplate(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, +static VKAPI_ATTR void DestroyDescriptorUpdateTemplate(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator) { auto device_data = device_data_map.Get(device); device_data->vtable.DestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator); @@ -3460,7 +3460,7 @@ static void* FindFunctionByName(const char* pName, uint32_t functionType) { num_elements = GetArrayLength(kFunctionMap##type); \ map = kFunctionMap##type; \ } - + HANDLE_FUNCTION_TYPE(Instance); HANDLE_FUNCTION_TYPE(PhysicalDevice); HANDLE_FUNCTION_TYPE(Device); @@ -3509,7 +3509,7 @@ static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice devic } if (strcmp(pName, "vkCmdSetColorBlendAdvancedEXT") == 0) { - // Special case. Even though it's illegal to call this function (because the extension and feature is missing), + // Special case. Even though it's illegal to call this function (because the extension and feature is missing), // the layer must provide a non-null function pointer if (auto underlying_function = vtable.GetDeviceProcAddr(device, pName)) { return underlying_function; diff --git a/scripts/generate_source.py b/scripts/generate_source.py new file mode 100755 index 00000000..2e4c911a --- /dev/null +++ b/scripts/generate_source.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 +# Copyright (c) 2019-2025 The Khronos Group Inc. +# Copyright (c) 2019-2025 Valve Corporation +# Copyright (c) 2019-2025 LunarG, Inc. +# Copyright (c) 2019 Google Inc. +# Copyright (c) 2021-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# Copyright (c) 2023-2023 RasterGrid Kft. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Mike Schuchardt + +import argparse +import filecmp +import os +import subprocess +import shutil +import sys +import tempfile +import re + +from xml.etree import ElementTree + + +def repo_relative(path): + ''' helper to define paths relative to the repo root''' + return os.path.abspath(os.path.join(os.path.dirname(__file__), '..', path)) + + +# Points to the directory containing the top level CMakeLists.txt +PROJECT_SRC_DIR = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], '..')) +if not os.path.isfile(f'{PROJECT_SRC_DIR}/CMakeLists.txt'): + print(f'PROJECT_SRC_DIR invalid! {PROJECT_SRC_DIR}') + sys.exit(1) + + +def IsGHA(): + '''Returns true if we are running in GitHub actions + https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables''' + if 'GITHUB_ACTION' in os.environ: + return True + return False + + +def RunShellCmd(command, start_dir=PROJECT_SRC_DIR, env=None, verbose=False): + '''Runs a command in a directory and returns its return code. + Directory is project root by default, or a relative path from project root''' + + # Flush stdout here. Helps when debugging on CI. + sys.stdout.flush() + + if start_dir != PROJECT_SRC_DIR: + start_dir = repo_relative(start_dir) + cmd_list = command.split(" ") + + # Helps a lot when debugging CI issues + if IsGHA(): + verbose = True + + if verbose: + print(f'CICMD({cmd_list}, env={env})') + subprocess.check_call(cmd_list, cwd=start_dir, env=env) + + +GENERATED_FILENAMES = [ + 'shader_object_constants.h', + 'shader_object_device_data_declare_extension_variables.inl', + 'shader_object_device_data_set_extension_variables.inl', + 'shader_object_device_data_dynamic_state_adding.inl', + 'shader_object_create_device_feature_structs.inl', + 'shader_object_find_intercepted_dynamic_state_function_by_name.inl', + 'shader_object_full_draw_state_struct_members.inl', + 'shader_object_full_draw_state_struct_members.cpp', + 'shader_object_full_draw_state_utility_functions.inl', + 'shader_object_entry_points_x_macros.inl', +] + +# Because we have special logic to import the Registry from input arguments and the BaseGenerator +# comes from the registry, we have to delay defining it until *after* the Registry has been +# imported. Yes this is awkward, but it was the least awkward way to make --verify work. +generators = {} + + +def RunGenerators(api: str, registry: str, directory: str, styleFile: str, targetFilter: str, flatOutput: bool): + + try: + RunShellCmd(f'clang-format --version') + has_clang_format = True + except: + has_clang_format = False + if not has_clang_format: + print("WARNING: Unable to find clang-format!") + + # These live in the Vulkan-Docs repo, but are pulled in via the + # Vulkan-Headers/registry folder + # At runtime we inject python path to find these helper scripts + scripts = os.path.dirname(registry) + scripts_directory_path = os.path.dirname(os.path.abspath(__file__)) + registry_headers_path = os.path.join(scripts_directory_path, scripts) + sys.path.insert(0, registry_headers_path) + try: + from reg import Registry + except: + # normal python error message + print("ModuleNotFoundError: No module named 'reg'") + print( + f'{registry_headers_path} is not pointing to the Vulkan-Headers registry directory.') + print("Inside Vulkan-Headers there is a registry/reg.py file that is used.") + sys.exit(1) # Return without call stack so easy to spot error + + from base_generator import BaseGeneratorOptions + from shader_object_generator import ShaderObjectGenerator + + # These set fields that are needed by both OutputGenerator and BaseGenerator, + # but are uniform and don't need to be set at a per-generated file level + from base_generator import (SetTargetApiName, SetMergedApiNames) + SetTargetApiName(api) + + for filename in GENERATED_FILENAMES: + generators.update({filename: {'generator': ShaderObjectGenerator, 'genCombined': False, 'directory': 'layers/shader_object/generated/'}}) + + unknownTargets = [x for x in ( + targetFilter if targetFilter else []) if x not in generators.keys()] + if unknownTargets: + print( + f'ERROR: No generator options for unknown target(s): {", ".join(unknownTargets)}', file=sys.stderr) + return 1 + + # Filter if --target is passed in + targets = [x for x in generators.keys( + ) if not targetFilter or x in targetFilter] + + for index, target in enumerate(targets, start=1): + print(f'[{index}|{len(targets)}] Generating {target}') + + # First grab a class constructor object and create an instance + generator = generators[target]['generator'] + gen = generator() + + # This code and the 'genCombined' generator metadata is used by downstream + # users to generate code with all Vulkan APIs merged into the target API variant + # (e.g. Vulkan SC) when needed. The constructed apiList is also used to filter + # out non-applicable extensions later below. + apiList = [api] + if api != 'vulkan' and generators[target]['genCombined']: + SetMergedApiNames('vulkan') + apiList.append('vulkan') + else: + SetMergedApiNames(None) + + # For people who want to generate all the files in a single director + if flatOutput: + outDirectory = os.path.abspath(os.path.join(directory)) + else: + outDirectory = os.path.abspath(os.path.join( + directory, generators[target]['directory'])) + + options = BaseGeneratorOptions( + customFileName=target, + customDirectory=outDirectory) + + if not os.path.exists(outDirectory): + os.makedirs(outDirectory) + + # Create the registry object with the specified generator and generator + # options. The options are set before XML loading as they may affect it. + reg = Registry(gen, options) + + # Parse the specified registry XML into an ElementTree object + tree = ElementTree.parse(registry) + + # Load the XML tree into the registry object + reg.loadElementTree(tree) + + # Finally, use the output generator to create the requested target + reg.apiGen() + + # Run clang-format on the file + if has_clang_format and styleFile: + RunShellCmd(f'clang-format -i --style=file:{styleFile} {os.path.join(outDirectory, target)}') + + +def main(argv): + + # files to exclude from --verify check + verify_exclude = [] # None currently + + parser = argparse.ArgumentParser( + description='Generate source code for this repository') + parser.add_argument('registry', metavar='REGISTRY_PATH', + help='path to the Vulkan-Headers registry directory') + parser.add_argument('--api', + default='vulkan', + choices=['vulkan'], + help='Specify API name to generate') + parser.add_argument('--generated-version', + help='sets the header version used to generate the repo') + group = parser.add_mutually_exclusive_group() + group.add_argument('--target', nargs='+', + help='only generate file names passed in') + group.add_argument('-i', '--incremental', action='store_true', + help='only update repo files that change') + group.add_argument('-v', '--verify', action='store_true', + help='verify repo files match generator output') + group.add_argument('-o', action='store', dest='directory', + help='Create target and related files in specified directory') + args = parser.parse_args(argv) + + repo_dir = repo_relative('.') + + registry = os.path.abspath(os.path.join(args.registry, 'vk.xml')) + if not os.path.isfile(registry): + registry = os.path.abspath(os.path.join( + args.registry, 'Vulkan-Headers/registry/vk.xml')) + if not os.path.isfile(registry): + print(f'cannot find vk.xml in {args.registry}') + return -1 + + # Need pass style file in case running with --verify and it can't find the file automatically in the temp directory + style_file = os.path.join(repo_dir, '.clang-format') + + # get directory where generators will run + if args.verify or args.incremental: + # generate in temp directory so we can compare or copy later + temp_obj = tempfile.TemporaryDirectory( + prefix='extension_layer_codegen_') + temp_dir = temp_obj.name + gen_dir = temp_dir + elif args.directory: + gen_dir = args.directory + else: + # generate directly in the repo + gen_dir = repo_dir + + RunGenerators(api=args.api, registry=registry, directory=gen_dir, + styleFile=style_file, targetFilter=args.target, flatOutput=False) + + # optional post-generation steps + if args.verify: + + # compare contents of temp dir and repo + temp_files = {} + repo_files = {} + for details in generators.values(): + if details['directory'] not in temp_files: + temp_files[details['directory']] = set() + temp_files[details['directory']].update( + set(os.listdir(os.path.join(temp_dir, details['directory'])))) + if details['directory'] not in repo_files: + repo_files[details['directory']] = set() + repo_files[details['directory']].update(set(os.listdir( + os.path.join(repo_dir, details['directory']))) - set(verify_exclude)) + + # compare contents of temp dir and repo + files_match = True + for filename, details in generators.items(): + if filename not in repo_files[details['directory']]: + print('ERROR: Missing repo file', filename) + files_match = False + elif filename not in temp_files[details['directory']]: + print('ERROR: Missing generator for', filename) + files_match = False + elif not filecmp.cmp(os.path.join(temp_dir, details['directory'], filename), + os.path.join( + repo_dir, details['directory'], filename), + shallow=False): + print('ERROR: Repo files do not match generator output for', filename) + files_match = False + + # return code for test scripts + if files_match: + print('SUCCESS: Repo files match generator output') + return 0 + return 1 + + elif args.incremental: + # copy missing or differing files from temp directory to repo + for filename, details in generators.items(): + temp_filename = os.path.join( + temp_dir, details['directory'], filename) + repo_filename = os.path.join( + repo_dir, details['directory'], filename) + if not os.path.exists(repo_filename) or \ + not filecmp.cmp(temp_filename, repo_filename, shallow=False): + print('update', repo_filename) + shutil.copyfile(temp_filename, repo_filename) + + # write out the header version used to generate the code to a checked in CMake file + if args.generated_version: + # Update the CMake project version + with open(repo_relative('CMakeLists.txt'), "r+") as f: + data = f.read() + f.seek(0) + f.write(re.sub("project.*VERSION.*", + f"project(VEL VERSION {args.generated_version} LANGUAGES CXX)", data)) + f.truncate() + + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/scripts/shader_object_data.json b/scripts/shader_object_data.json deleted file mode 100644 index 035f628e..00000000 --- a/scripts/shader_object_data.json +++ /dev/null @@ -1,1360 +0,0 @@ -{ - "extensions": [ - { - "name": "DYNAMIC_RENDERING", - "extension_name_macro": "VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceDynamicRenderingFeatures", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES", - "promoted_to": "1_3" - }, - { - "name": "MAINTENANCE_2", - "extension_name_macro": "VK_KHR_MAINTENANCE2_EXTENSION_NAME" - }, - { - "name": "PRIVATE_DATA", - "extension_name_macro": "VK_EXT_PRIVATE_DATA_EXTENSION_NAME", - "feature_struct": "VkPhysicalDevicePrivateDataFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES", - "promoted_to": "1_3" - }, - { - "name": "EXTENDED_DYNAMIC_STATE_1", - "extension_name_macro": "VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT", - "dynamic_states": [ - { - "function_names": [ - "CmdSetCullMode", - "CmdSetCullModeEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_CULL_MODE_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkCullModeFlags", - "name": "cull_mode" - } - ] - }, - { - "function_names": [ - "CmdSetDepthBoundsTestEnable", - "CmdSetDepthBoundsTestEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkBool32", - "name": "depth_bounds_test_enable" - } - ] - }, - { - "function_names": [ - "CmdSetDepthCompareOp", - "CmdSetDepthCompareOpEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkCompareOp", - "name": "depth_compare_op" - } - ] - }, - { - "function_names": [ - "CmdSetDepthTestEnable", - "CmdSetDepthTestEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkBool32", - "name": "depth_test_enable" - } - ] - }, - { - "function_names": [ - "CmdSetDepthWriteEnable", - "CmdSetDepthWriteEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkBool32", - "name": "depth_write_enable" - } - ] - }, - { - "function_names": [ - "CmdSetFrontFace", - "CmdSetFrontFaceEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_FRONT_FACE_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkFrontFace", - "name": "front_face" - } - ] - }, - { - "function_names": [ - "CmdSetPrimitiveTopology", - "CmdSetPrimitiveTopologyEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkPrimitiveTopology", - "name": "primitive_topology" - } - ], - "additional_interception_requirement": "(flags & DeviceData::HAS_PRIMITIVE_TOPLOGY_UNRESTRICTED) != 0" - }, - { - "function_names": [ - "CmdSetScissorWithCount", - "CmdSetScissorWithCountEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "uint32_t", - "name": "num_scissors" - } - ] - }, - { - "function_names": [ - "CmdSetViewportWithCount", - "CmdSetViewportWithCountEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "uint32_t", - "name": "num_viewports" - } - ] - }, - { - "function_names": [ - "CmdSetStencilOp", - "CmdSetStencilOpEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_STENCIL_OP_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkStencilOpState", - "name": "stencil_front" - }, - { - "type": "VkStencilOpState", - "name": "stencil_back" - } - ] - }, - { - "function_names": [ - "CmdSetStencilTestEnable", - "CmdSetStencilTestEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState", - "variables": [ - { - "type": "VkBool32", - "name": "stencil_test_enable" - } - ] - }, - { - "function_names": [ - "CmdBindVertexBuffers2", - "CmdBindVertexBuffers2EXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT", - "required_feature_struct_member": "extendedDynamicState" - } - ] - }, - { - "name": "EXTENDED_DYNAMIC_STATE_2", - "extension_name_macro": "VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT", - "dynamic_states": [ - { - "function_names": [ - "CmdSetLogicOpEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_LOGIC_OP_EXT", - "required_feature_struct_member": "extendedDynamicState2LogicOp", - "variables": [ - { - "type": "VkLogicOp", - "name": "logic_op" - } - ] - }, - { - "function_names": [ - "CmdSetPrimitiveRestartEnable", - "CmdSetPrimitiveRestartEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE", - "required_feature_struct_member": "extendedDynamicState2", - "variables": [ - { - "type": "VkBool32", - "name": "primitive_restart_enable" - } - ] - }, - { - "function_names": [ - "CmdSetRasterizerDiscardEnable", - "CmdSetRasterizerDiscardEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE", - "required_feature_struct_member": "extendedDynamicState2", - "variables": [ - { - "type": "VkBool32", - "name": "rasterizer_discard_enable" - } - ] - }, - { - "function_names": [ - "CmdSetDepthBiasEnable", - "CmdSetDepthBiasEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState2", - "variables": [ - { - "type": "VkBool32", - "name": "depth_bias_enable" - } - ] - }, - { - "function_names": [ - "CmdSetPatchControlPointsEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT", - "required_feature_struct_member": "extendedDynamicState2PatchControlPoints", - "variables": [ - { - "type": "uint32_t", - "name": "patch_control_points" - } - ] - } - ] - }, - { - "name": "EXTENDED_DYNAMIC_STATE_3", - "extension_name_macro": "VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT", - "dynamic_states": [ - { - "function_names": [ - "CmdSetPolygonModeEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_POLYGON_MODE_EXT", - "required_feature_struct_member": "extendedDynamicState3PolygonMode", - "variables": [ - { - "type": "VkPolygonMode", - "name": "polygon_mode" - } - ] - }, - { - "function_names": [ - "CmdSetRasterizationSamplesEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT", - "required_feature_struct_member": "extendedDynamicState3RasterizationSamples", - "variables": [ - { - "type": "VkSampleCountFlagBits", - "name": "rasterization_samples" - } - ] - }, - { - "function_names": [ - "CmdSetLogicOpEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3LogicOpEnable", - "variables": [ - { - "type": "VkBool32", - "name": "logic_op_enable" - } - ] - }, - { - "function_names": [ - "CmdSetColorWriteMaskEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT", - "required_feature_struct_member": "extendedDynamicState3ColorWriteMask", - "variables": [] - }, - { - "function_names": [ - "CmdSetColorBlendEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3ColorBlendEnable", - "variables": [] - }, - { - "function_names": [ - "CmdSetColorBlendEquationEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT", - "required_feature_struct_member": "extendedDynamicState3ColorBlendEquation", - "variables": [] - }, - { - "function_names": [ - "CmdSetDepthClampEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3DepthClampEnable", - "variables": [ - { - "type": "VkBool32", - "name": "depth_clamp_enable" - } - ] - }, - { - "function_names": [ - "CmdSetTessellationDomainOriginEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT", - "required_feature_struct_member": "extendedDynamicState3TessellationDomainOrigin", - "variables": [ - { - "type": "VkTessellationDomainOrigin", - "name": "domain_origin" - } - ] - }, - { - "function_names": [ - "CmdSetAlphaToOneEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3AlphaToOneEnable", - "variables": [ - { - "type": "VkBool32", - "name": "alpha_to_one_enable" - } - ] - }, - { - "function_names": [ - "CmdSetAlphaToCoverageEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3AlphaToCoverageEnable", - "variables": [ - { - "type": "VkBool32", - "name": "alpha_to_coverage_enable" - } - ] - }, - { - "function_names": [ - "CmdSetSampleMaskEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_SAMPLE_MASK_EXT", - "required_feature_struct_member": "extendedDynamicState3SampleMask", - "variables": [ - { - "type": "VkSampleMask", - "name": "sample_mask", - "compile_time_array_length": "kMaxSampleMaskLength" - } - ] - }, - { - "function_names": [ - "CmdSetRasterizationStreamEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT", - "required_feature_struct_member": "extendedDynamicState3RasterizationStream", - "variables": [ - { - "type": "uint32_t", - "name": "rasterization_stream" - } - ], - "required_additional_extensions": [ - { - "name": "TRANSFORM_FEEDBACK", - "member": "transformFeedback" - } - ] - }, - { - "function_names": [ - "CmdSetConservativeRasterizationModeEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT", - "required_feature_struct_member": "extendedDynamicState3ConservativeRasterizationMode", - "variables": [ - { - "type": "VkConservativeRasterizationModeEXT", - "name": "conservative_rasterization_mode" - } - ], - "required_additional_extensions": [ - { - "name": "CONSERVATIVE_RASTERIZATION" - } - ] - }, - { - "function_names": [ - "CmdSetExtraPrimitiveOverestimationSizeEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT", - "required_feature_struct_member": "extendedDynamicState3ExtraPrimitiveOverestimationSize", - "variables": [ - { - "type": "float", - "name": "extra_primitive_overestimation_size" - } - ], - "required_additional_extensions": [ - { - "name": "CONSERVATIVE_RASTERIZATION" - } - ] - }, - { - "function_names": [ - "CmdSetDepthClipEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3DepthClipEnable", - "variables": [ - { - "type": "VkBool32", - "name": "depth_clip_enable" - } - ], - "required_additional_extensions": [ - { - "name": "DEPTH_CLIP_ENABLE", - "member": "depthClipEnable" - } - ] - }, - { - "function_names": [ - "CmdSetSampleLocationsEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3SampleLocationsEnable", - "variables": [ - { - "type": "VkBool32", - "name": "sample_locations_enable" - } - ], - "required_additional_extensions": [ - { - "name": "SAMPLE_LOCATIONS" - } - ] - }, - { - "function_names": [ - "CmdSetProvokingVertexModeEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT", - "required_feature_struct_member": "extendedDynamicState3ProvokingVertexMode", - "variables": [ - { - "type": "VkProvokingVertexModeEXT", - "name": "provoking_vertex_mode" - } - ], - "required_additional_extensions": [ - { - "name": "PROVOKING_VERTEX" - } - ] - }, - { - "function_names": [ - "CmdSetLineRasterizationModeEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT", - "required_feature_struct_member": "extendedDynamicState3LineRasterizationMode", - "variables": [ - { - "type": "VkLineRasterizationModeEXT", - "name": "line_rasterization_mode" - } - ], - "required_additional_extensions": [ - { - "name": "LINE_RASTERIZATION" - } - ] - }, - { - "function_names": [ - "CmdSetLineStippleEnableEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT", - "required_feature_struct_member": "extendedDynamicState3LineStippleEnable", - "variables": [ - { - "type": "VkBool32", - "name": "stippled_line_enable" - } - ], - "required_additional_extensions": [ - { - "name": "LINE_RASTERIZATION" - } - ] - }, - { - "function_names": [ - "CmdSetDepthClipNegativeOneToOneEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT", - "required_feature_struct_member": "extendedDynamicState3DepthClipNegativeOneToOne", - "variables": [ - { - "type": "VkBool32", - "name": "negative_one_to_one" - } - ], - "required_additional_extensions": [ - { - "name": "DEPTH_CLIP_CONTROL" - } - ] - }, - { - "function_names": [ - "CmdSetCoverageModulationModeNV" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV", - "required_feature_struct_member": "extendedDynamicState3CoverageModulationMode", - "variables": [ - { - "type": "VkCoverageModulationModeNV", - "name": "coverage_modulation_mode" - } - ], - "required_additional_extensions": [ - { - "name": "NV_FRAMEBUFFER_MIXED_SAMPLES" - } - ] - }, - { - "function_names": [ - "CmdSetCoverageModulationTableEnableNV" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV", - "required_feature_struct_member": "extendedDynamicState3CoverageModulationTableEnable", - "variables": [ - { - "type": "VkBool32", - "name": "coverage_modulation_table_enable" - } - ], - "required_additional_extensions": [ - { - "name": "NV_FRAMEBUFFER_MIXED_SAMPLES" - } - ] - }, - { - "function_names": [ - "CmdSetCoverageModulationTableNV" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV", - "required_feature_struct_member": "extendedDynamicState3CoverageModulationTable", - "variables": [ - { - "type": "float", - "name": "coverage_modulation_table_values", - "compile_time_array_length": "VK_SAMPLE_COUNT_64_BIT" - }, - { - "type": "uint32_t", - "name": "coverage_modulation_table_count" - } - ], - "required_additional_extensions": [ - { - "name": "NV_FRAMEBUFFER_MIXED_SAMPLES" - } - ] - }, - { - "function_names": [ - "CmdSetCoverageReductionModeNV" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV", - "required_feature_struct_member": "extendedDynamicState3CoverageReductionMode", - "variables": [ - { - "type": "VkCoverageReductionModeNV", - "name": "coverage_reduction_mode" - } - ], - "required_additional_extensions": [ - { - "name": "NV_COVERAGE_REDUCTION_MODE" - } - ] - }, - { - "function_names": [ - "CmdSetCoverageToColorEnableNV" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV", - "required_feature_struct_member": "extendedDynamicState3CoverageToColorEnable", - "variables": [ - { - "type": "VkBool32", - "name": "coverage_to_color_enable" - } - ], - "required_additional_extensions": [ - { - "name": "NV_FRAGMENT_COVERAGE_TO_COLOR" - } - ] - }, - { - "function_names": [ - "CmdSetCoverageToColorLocationNV" - ], - "required_feature_struct_member": "extendedDynamicState3CoverageToColorLocation", - "dynamic_state_enum": "VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV", - "variables": [ - { - "type": "uint32_t", - "name": "coverage_to_color_location" - } - ], - "required_additional_extensions": [ - { - "name": "NV_FRAGMENT_COVERAGE_TO_COLOR" - } - ] - }, - { - "function_names": [ - "CmdSetViewportWScalingEnableNV" - ], - "required_feature_struct_member": "extendedDynamicState3ViewportWScalingEnable", - "dynamic_state_enum": "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV", - "variables": [ - { - "type": "VkBool32", - "name": "viewport_w_scaling_enable" - } - ], - "required_additional_extensions": [ - { - "name": "NV_CLIP_SPACE_W_SCALING" - } - ] - }, - { - "function_names": [ - "CmdSetViewportSwizzleNV" - ], - "required_feature_struct_member": "extendedDynamicState3ViewportSwizzle", - "dynamic_state_enum": "VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV", - "variables": [ - { - "type": "uint32_t", - "name": "viewport_swizzle_count" - }, - { - "type": "VkViewportSwizzleNV", - "name": "viewport_swizzle", - "init_time_array_length": "max_viewports" - } - ], - "required_additional_extensions": [ - { - "name": "NV_VIEWPORT_SWIZZLE" - } - ] - }, - { - "function_names": [ - "CmdSetShadingRateImageEnableNV" - ], - "required_feature_struct_member": "extendedDynamicState3ShadingRateImageEnable", - "dynamic_state_enum": "VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV", - "variables": [ - { - "type": "VkBool32", - "name": "shading_rate_image_enable" - } - ], - "required_additional_extensions": [ - { - "name": "NV_SHADING_RATE_IMAGE" - } - ] - }, - { - "function_names": [ - "CmdSetRepresentativeFragmentTestEnableNV" - ], - "required_feature_struct_member": "extendedDynamicState3RepresentativeFragmentTestEnable", - "dynamic_state_enum": "VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV", - "variables": [ - { - "type": "VkBool32", - "name": "representative_fragment_test_enable" - } - ], - "required_additional_extensions": [ - { - "name": "NV_REPRESENTATIVE_FRAGMENT_TEST" - } - ] - } - ] - }, - { - "name": "VERTEX_INPUT_DYNAMIC", - "extension_name_macro": "VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT", - "dynamic_states": [ - { - "function_names": [ - "CmdSetVertexInputEXT" - ], - "dynamic_state_enum": "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT", - "required_feature_struct_member": "vertexInputDynamicState", - "variables": [ - { - "type": "VkVertexInputAttributeDescription", - "name": "vertex_input_attribute_description", - "init_time_array_length": "max_vertex_input_attributes" - }, - { - "type": "VkVertexInputBindingDescription", - "name": "vertex_input_binding_description", - "init_time_array_length": "max_vertex_input_bindings" - }, - { - "type": "uint32_t", - "name": "num_vertex_input_attribute_descriptions" - }, - { - "type": "uint32_t", - "name": "num_vertex_input_binding_descriptions" - } - ] - } - ] - }, - { - "name": "GRAPHICS_PIPELINE_LIBRARY", - "extension_name_macro": "VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT", - "dynamic_states": [] - }, - { - "name": "PIPELINE_LIBRARY", - "extension_name_macro": "VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME" - }, - { - "name": "MULTIVIEW", - "extension_name_macro": "VK_KHR_MULTIVIEW_EXTENSION_NAME" - }, - { - "name": "CREATE_RENDERPASS_2", - "extension_name_macro": "VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME" - }, - { - "name": "DEPTH_STENCIL_RESOLVE", - "extension_name_macro": "VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME" - }, - { - "name": "DRIVER_PROPERTIES", - "extension_name_macro": "VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME" - }, - { - "name": "DYNAMIC_RENDERING_UNUSED_ATTACHMENTS", - "extension_name_macro": "VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT", - "dynamic_states": [] - } - ], - "optional_extensions": [ - { - "name": "TRANSFORM_FEEDBACK", - "extension_name_macro": "VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceTransformFeedbackFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT" - }, - { - "name": "CONSERVATIVE_RASTERIZATION", - "extension_name_macro": "VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME" - }, - { - "name": "DEPTH_CLIP_ENABLE", - "extension_name_macro": "VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceDepthClipEnableFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT" - }, - { - "name": "SAMPLE_LOCATIONS", - "extension_name_macro": "VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME" - }, - { - "name": "PROVOKING_VERTEX", - "extension_name_macro": "VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceProvokingVertexFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT" - }, - { - "name": "LINE_RASTERIZATION", - "extension_name_macro": "VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceLineRasterizationFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT" - }, - { - "name": "DEPTH_CLIP_CONTROL", - "extension_name_macro": "VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceDepthClipControlFeaturesEXT", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT" - }, - { - "name": "NV_FRAMEBUFFER_MIXED_SAMPLES", - "extension_name_macro": "VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME" - }, - { - "name": "NV_COVERAGE_REDUCTION_MODE", - "extension_name_macro": "VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceCoverageReductionModeFeaturesNV", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV" - }, - { - "name": "NV_FRAGMENT_COVERAGE_TO_COLOR", - "extension_name_macro": "VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME" - }, - { - "name": "NV_CLIP_SPACE_W_SCALING", - "extension_name_macro": "VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME" - }, - { - "name": "NV_VIEWPORT_SWIZZLE", - "extension_name_macro": "VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME" - }, - { - "name": "NV_SHADING_RATE_IMAGE", - "extension_name_macro": "VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceShadingRateImageFeaturesNV", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV" - }, - { - "name": "NV_REPRESENTATIVE_FRAGMENT_TEST", - "extension_name_macro": "VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME", - "feature_struct": "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV", - "feature_struct_stype": "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV" - } - ], - "static_draw_states": [ - { - "type": "VkFormat", - "name": "depth_attachment_format" - }, - { - "type": "VkFormat", - "name": "stencil_attachment_format" - }, - { - "type": "VkFormat", - "name": "color_attachment_format", - "init_time_array_length": "max_color_attachments" - }, - { - "type": "uint32_t", - "name": "num_color_attachments" - }, - { - "type": "VkPipelineColorBlendAttachmentState", - "name": "color_blend_attachment_state", - "init_time_array_length": "max_color_attachments" - }, - { - "type": "ComparableShader", - "name": "comparable_shader", - "compile_time_array_length": "NUM_SHADERS" - } - ], - "entry_points": { - "intercept": { - "instance": [ - [ - "GetInstanceProcAddr" - ], - [ - "_layerGetPhysicalDeviceProcAddr" - ], - [ - "CreateInstance" - ], - [ - "DestroyInstance" - ], - [ - "EnumerateInstanceExtensionProperties" - ], - [ - "EnumerateInstanceLayerProperties" - ] - ], - "physical_device": [ - [ - "EnumerateDeviceExtensionProperties" - ], - [ - "GetPhysicalDeviceFeatures2", - "GetPhysicalDeviceFeatures2KHR" - ], - [ - "GetPhysicalDeviceProperties2", - "GetPhysicalDeviceProperties2KHR" - ], - [ - "CreateDevice" - ] - ], - "device": [ - [ - "GetDeviceProcAddr" - ], - [ - "DestroyDevice" - ], - [ - "CreateShadersEXT" - ], - [ - "DestroyShaderEXT" - ], - [ - "CmdBindShadersEXT" - ], - [ - "CmdBindPipeline" - ], - [ - "CreateImageView" - ], - [ - "DestroyImageView" - ], - [ - "AllocateCommandBuffers" - ], - [ - "FreeCommandBuffers" - ], - [ - "DestroyCommandPool" - ], - [ - "BeginCommandBuffer" - ], - [ - "CmdBeginRendering", - "CmdBeginRenderingKHR" - ], - [ - "GetShaderBinaryDataEXT" - ], - [ - "CmdSetViewportWithCount", - "CmdSetViewportWithCountEXT" - ], - [ - "CmdSetScissorWithCount", - "CmdSetScissorWithCountEXT" - ], - [ - "CmdSetVertexInputEXT" - ], - [ - "CmdSetPrimitiveTopology", - "CmdSetPrimitiveTopologyEXT" - ], - [ - "CmdSetPrimitiveRestartEnable", - "CmdSetPrimitiveRestartEnableEXT" - ], - [ - "CmdSetRasterizerDiscardEnable", - "CmdSetRasterizerDiscardEnableEXT" - ], - [ - "CmdSetRasterizationSamplesEXT" - ], - [ - "CmdSetPolygonModeEXT" - ], - [ - "CmdSetCullMode", - "CmdSetCullModeEXT" - ], - [ - "CmdSetFrontFace", - "CmdSetFrontFaceEXT" - ], - [ - "CmdSetDepthTestEnable", - "CmdSetDepthTestEnableEXT" - ], - [ - "CmdSetDepthWriteEnable", - "CmdSetDepthWriteEnableEXT" - ], - [ - "CmdSetDepthCompareOp", - "CmdSetDepthCompareOpEXT" - ], - [ - "CmdSetStencilTestEnable", - "CmdSetStencilTestEnableEXT" - ], - [ - "CmdSetLogicOpEnableEXT" - ], - [ - "CmdSetColorBlendEnableEXT" - ], - [ - "CmdSetColorBlendEquationEXT" - ], - [ - "CmdSetColorWriteMaskEXT" - ], - [ - "CmdSetDepthBoundsTestEnable", - "CmdSetDepthBoundsTestEnableEXT" - ], - [ - "CmdSetDepthBiasEnable", - "CmdSetDepthBiasEnableEXT" - ], - [ - "CmdSetDepthClampEnableEXT" - ], - [ - "CmdSetStencilOp", - "CmdSetStencilOpEXT" - ], - [ - "CmdDraw" - ], - [ - "CmdDrawIndirect" - ], - [ - "CmdDrawIndirectCount" - ], - [ - "CmdDrawIndexed" - ], - [ - "CmdDrawIndexedIndirect" - ], - [ - "CmdDrawIndexedIndirectCount" - ], - [ - "CmdDrawMeshTasksEXT" - ], - [ - "CmdDrawMeshTasksIndirectEXT" - ], - [ - "CmdDrawMeshTasksIndirectCountEXT" - ], - [ - "CmdDrawMeshTasksNV" - ], - [ - "CmdDrawMeshTasksIndirectNV" - ], - [ - "CmdDrawMeshTasksIndirectCountNV" - ], - [ - "CmdSetLogicOpEXT" - ], - [ - "CmdSetPatchControlPointsEXT" - ], - [ - "CmdSetTessellationDomainOriginEXT" - ], - [ - "CmdSetAlphaToOneEnableEXT" - ], - [ - "CmdSetAlphaToCoverageEnableEXT" - ], - [ - "CmdSetSampleMaskEXT" - ], - [ - "CmdSetRasterizationStreamEXT" - ], - [ - "CmdSetConservativeRasterizationModeEXT" - ], - [ - "CmdSetExtraPrimitiveOverestimationSizeEXT" - ], - [ - "CmdSetDepthClipEnableEXT" - ], - [ - "CmdSetSampleLocationsEnableEXT" - ], - [ - "CmdSetProvokingVertexModeEXT" - ], - [ - "CmdSetLineRasterizationModeEXT" - ], - [ - "CmdSetLineStippleEnableEXT" - ], - [ - "CmdSetDepthClipNegativeOneToOneEXT" - ], - [ - "CmdSetCoverageModulationModeNV" - ], - [ - "CmdSetCoverageModulationTableEnableNV" - ], - [ - "CmdSetCoverageModulationTableNV" - ], - [ - "CmdSetCoverageReductionModeNV" - ], - [ - "CmdSetCoverageToColorEnableNV" - ], - [ - "CmdSetCoverageToColorLocationNV" - ], - [ - "CmdSetViewportWScalingEnableNV" - ], - [ - "CmdSetViewportSwizzleNV" - ], - [ - "CmdSetShadingRateImageEnableNV" - ], - [ - "CmdSetRepresentativeFragmentTestEnableNV" - ], - [ - "CmdBindVertexBuffers2", - "CmdBindVertexBuffers2EXT" - ], - [ - "CmdBindDescriptorSets" - ], - [ - "CmdPushDescriptorSetKHR" - ], - [ - "CmdPushDescriptorSetWithTemplateKHR" - ], - [ - "CmdPushConstants" - ], - [ - "SetPrivateData", - "SetPrivateDataEXT" - ], - [ - "GetPrivateData", - "GetPrivateDataEXT" - ], - [ - "CreateDescriptorUpdateTemplate", - "CreateDescriptorUpdateTemplateKHR" - ], - [ - "DestroyDescriptorUpdateTemplate", - "DestroyDescriptorUpdateTemplateKHR" - ], - [ - "SetDebugUtilsObjectNameEXT" - ], - [ - "SetDebugUtilsObjectTagEXT" - ] - ] - }, - "forward": { - "instance": [ - ], - "physical_device": [ - [ - "GetPhysicalDeviceProperties" - ], - [ - "GetPhysicalDeviceImageFormatProperties" - ] - ], - "device": [ - [ - "CreatePipelineLayout" - ], - [ - "CreateGraphicsPipelines" - ], - [ - "CreateComputePipelines" - ], - [ - "DestroyPipelineLayout" - ], - [ - "DestroyPipeline" - ], - [ - "CreateShaderModule" - ], - [ - "DestroyShaderModule" - ], - [ - "CreatePipelineCache" - ], - [ - "DestroyPipelineCache" - ], - [ - "GetPipelineCacheData" - ], - [ - "MergePipelineCaches" - ], - [ - "GetDeviceQueue" - ], - [ - "QueueSubmit" - ], - [ - "QueueSubmit2", - "QueueSubmit2KHR" - ], - [ - "CmdSetViewport" - ], - [ - "CmdSetScissor" - ], - [ - "CreatePrivateDataSlotEXT" - ], - [ - "DestroyPrivateDataSlotEXT" - ], - [ - "CmdBindVertexBuffers" - ] - ] - } - }, - "pipeline_subsets": { - "VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT": { - "shaders": [ - "VERTEX_SHADER", - "TESSELLATION_CONTROL_SHADER", - "TESSELLATION_EVALUATION_SHADER", - "GEOMETRY_SHADER", - "TASK_SHADER", - "MESH_SHADER" - ], - "dynamic_state_enums": [ - "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT", - "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT", - "VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT", - "VK_DYNAMIC_STATE_POLYGON_MODE_EXT", - "VK_DYNAMIC_STATE_CULL_MODE_EXT", - "VK_DYNAMIC_STATE_FRONT_FACE_EXT", - "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT", - "VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT" - ] - }, - "VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT": { - "shaders": [ - "FRAGMENT_SHADER" - ], - "dynamic_state_enums": [ - "VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT", - "VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT", - "VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT", - "VK_DYNAMIC_STATE_SAMPLE_MASK_EXT", - "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT", - "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT", - "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT", - "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT", - "VK_DYNAMIC_STATE_STENCIL_OP_EXT" - ] - } - } -} \ No newline at end of file diff --git a/scripts/shader_object_generator.py b/scripts/shader_object_generator.py index deec7c7c..32bb2b59 100644 --- a/scripts/shader_object_generator.py +++ b/scripts/shader_object_generator.py @@ -1,25 +1,626 @@ # Copyright 2023-2024 Nintendo # -# Licensed under the Apache License, Version 2.0 (the "License"); +# Licensed under the Apache License, Version 2.0 (the 'License'); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, +# distributed under the License is distributed on an 'AS IS' BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -import json -import xml.etree.ElementTree as etree - -def create_generated_file(filename): - out_file = open(filename, 'w') - - out_file.write( -"""// *** THIS FILE IS GENERATED - DO NOT EDIT *** +from base_generator import BaseGenerator + +REQUIRED_EXTENSIONS = [ + 'VK_KHR_dynamic_rendering', + 'VK_KHR_maintenance2', + 'VK_EXT_private_data', + 'VK_EXT_extended_dynamic_state', + 'VK_EXT_extended_dynamic_state2', + 'VK_EXT_extended_dynamic_state3', + 'VK_EXT_vertex_input_dynamic_state', + 'VK_EXT_graphics_pipeline_library', + 'VK_KHR_pipeline_library', + 'VK_KHR_multiview', + 'VK_KHR_create_renderpass2', + 'VK_KHR_depth_stencil_resolve', + 'VK_KHR_driver_properties', + 'VK_EXT_dynamic_rendering_unused_attachments', +] +OPTIONAL_EXTENSIONS = [ + 'VK_EXT_transform_feedback', + 'VK_EXT_conservative_rasterization', + 'VK_EXT_depth_clip_enable', + 'VK_EXT_sample_locations', + 'VK_EXT_provoking_vertex', + 'VK_EXT_line_rasterization', + 'VK_EXT_depth_clip_control', + 'VK_NV_framebuffer_mixed_samples', + 'VK_NV_coverage_reduction_mode', + 'VK_NV_fragment_coverage_to_color', + 'VK_NV_clip_space_w_scaling', + 'VK_NV_viewport_swizzle', + 'VK_NV_shading_rate_image', + 'VK_NV_representative_fragment_test', +] + +DYNAMIC_STATE_MAP = { + 'VK_EXT_extended_dynamic_state': { + 'VK_DYNAMIC_STATE_CULL_MODE_EXT': { + 'commands': ['vkCmdSetCullMode', 'vkCmdSetCullModeEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkCullModeFlags', 'name': 'cull_mode'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT': { + 'commands': [ + 'vkCmdSetDepthBoundsTestEnable', + 'vkCmdSetDepthBoundsTestEnableEXT', + ], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkBool32', 'name': 'depth_bounds_test_enable'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT': { + 'commands': ['vkCmdSetDepthCompareOp', 'vkCmdSetDepthCompareOpEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkCompareOp', 'name': 'depth_compare_op'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT': { + 'commands': ['vkCmdSetDepthTestEnable', 'vkCmdSetDepthTestEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkBool32', 'name': 'depth_test_enable'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT': { + 'commands': ['vkCmdSetDepthWriteEnable', 'vkCmdSetDepthWriteEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkBool32', 'name': 'depth_write_enable'}], + }, + 'VK_DYNAMIC_STATE_FRONT_FACE_EXT': { + 'commands': ['vkCmdSetFrontFace', 'vkCmdSetFrontFaceEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkFrontFace', 'name': 'front_face'}], + }, + 'VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT': { + 'commands': ['vkCmdSetPrimitiveTopology', 'vkCmdSetPrimitiveTopologyEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [ + {'type': 'VkPrimitiveTopology', 'name': 'primitive_topology'} + ], + 'additional_interception_requirement': '(flags & DeviceData::HAS_PRIMITIVE_TOPLOGY_UNRESTRICTED) != 0', + }, + 'VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT': { + 'commands': ['vkCmdSetScissorWithCount', 'vkCmdSetScissorWithCountEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'uint32_t', 'name': 'num_scissors'}], + }, + 'VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT': { + 'commands': ['vkCmdSetViewportWithCount', 'vkCmdSetViewportWithCountEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'uint32_t', 'name': 'num_viewports'}], + }, + 'VK_DYNAMIC_STATE_STENCIL_OP_EXT': { + 'commands': ['vkCmdSetStencilOp', 'vkCmdSetStencilOpEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [ + {'type': 'VkStencilOpState', 'name': 'stencil_front'}, + {'type': 'VkStencilOpState', 'name': 'stencil_back'}, + ], + }, + 'VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT': { + 'commands': ['vkCmdSetStencilTestEnable', 'vkCmdSetStencilTestEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState', + 'variables': [{'type': 'VkBool32', 'name': 'stencil_test_enable'}], + }, + 'VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT': { + 'commands': ['vkCmdBindVertexBuffers2', 'vkCmdBindVertexBuffers2EXT'], + 'required_feature_struct_member': 'extendedDynamicState', + }, + }, + 'VK_EXT_extended_dynamic_state2': { + 'VK_DYNAMIC_STATE_LOGIC_OP_EXT': { + 'commands': ['vkCmdSetLogicOpEXT'], + 'required_feature_struct_member': 'extendedDynamicState2LogicOp', + 'variables': [{'type': 'VkLogicOp', 'name': 'logic_op'}], + }, + 'VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE': { + 'commands': [ + 'vkCmdSetPrimitiveRestartEnable', + 'vkCmdSetPrimitiveRestartEnableEXT', + ], + 'required_feature_struct_member': 'extendedDynamicState2', + 'variables': [{'type': 'VkBool32', 'name': 'primitive_restart_enable'}], + }, + 'VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE': { + 'commands': [ + 'vkCmdSetRasterizerDiscardEnable', + 'vkCmdSetRasterizerDiscardEnableEXT', + ], + 'required_feature_struct_member': 'extendedDynamicState2', + 'variables': [{'type': 'VkBool32', 'name': 'rasterizer_discard_enable'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT': { + 'commands': ['vkCmdSetDepthBiasEnable', 'vkCmdSetDepthBiasEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState2', + 'variables': [{'type': 'VkBool32', 'name': 'depth_bias_enable'}], + }, + 'VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT': { + 'commands': ['vkCmdSetPatchControlPointsEXT'], + 'required_feature_struct_member': 'extendedDynamicState2PatchControlPoints', + 'variables': [{'type': 'uint32_t', 'name': 'patch_control_points'}], + }, + }, + 'VK_EXT_extended_dynamic_state3': { + 'VK_DYNAMIC_STATE_POLYGON_MODE_EXT': { + 'commands': ['vkCmdSetPolygonModeEXT'], + 'required_feature_struct_member': 'extendedDynamicState3PolygonMode', + 'variables': [{'type': 'VkPolygonMode', 'name': 'polygon_mode'}], + }, + 'VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT': { + 'commands': ['vkCmdSetRasterizationSamplesEXT'], + 'required_feature_struct_member': 'extendedDynamicState3RasterizationSamples', + 'variables': [ + {'type': 'VkSampleCountFlagBits', 'name': 'rasterization_samples'} + ], + }, + 'VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT': { + 'commands': ['vkCmdSetLogicOpEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3LogicOpEnable', + 'variables': [{'type': 'VkBool32', 'name': 'logic_op_enable'}], + }, + 'VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT': { + 'commands': ['vkCmdSetColorWriteMaskEXT'], + 'required_feature_struct_member': 'extendedDynamicState3ColorWriteMask', + 'variables': [], + }, + 'VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT': { + 'commands': ['vkCmdSetColorBlendEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3ColorBlendEnable', + 'variables': [], + }, + 'VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT': { + 'commands': ['vkCmdSetColorBlendEquationEXT'], + 'required_feature_struct_member': 'extendedDynamicState3ColorBlendEquation', + 'variables': [], + }, + 'VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT': { + 'commands': ['vkCmdSetDepthClampEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3DepthClampEnable', + 'variables': [{'type': 'VkBool32', 'name': 'depth_clamp_enable'}], + }, + 'VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT': { + 'commands': ['vkCmdSetTessellationDomainOriginEXT'], + 'required_feature_struct_member': 'extendedDynamicState3TessellationDomainOrigin', + 'variables': [ + {'type': 'VkTessellationDomainOrigin', 'name': 'domain_origin'} + ], + }, + 'VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT': { + 'commands': ['vkCmdSetAlphaToOneEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3AlphaToOneEnable', + 'variables': [{'type': 'VkBool32', 'name': 'alpha_to_one_enable'}], + }, + 'VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT': { + 'commands': ['vkCmdSetAlphaToCoverageEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3AlphaToCoverageEnable', + 'variables': [{'type': 'VkBool32', 'name': 'alpha_to_coverage_enable'}], + }, + 'VK_DYNAMIC_STATE_SAMPLE_MASK_EXT': { + 'commands': ['vkCmdSetSampleMaskEXT'], + 'required_feature_struct_member': 'extendedDynamicState3SampleMask', + 'variables': [ + { + 'type': 'VkSampleMask', + 'name': 'sample_mask', + 'compile_time_array_length': 'kMaxSampleMaskLength', + } + ], + }, + 'VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT': { + 'commands': ['vkCmdSetRasterizationStreamEXT'], + 'required_feature_struct_member': 'extendedDynamicState3RasterizationStream', + 'variables': [{'type': 'uint32_t', 'name': 'rasterization_stream'}], + 'required_additional_extensions': [ + {'name': 'VK_EXT_TRANSFORM_FEEDBACK', + 'member': 'transformFeedback'} + ], + }, + 'VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT': { + 'commands': ['vkCmdSetConservativeRasterizationModeEXT'], + 'required_feature_struct_member': 'extendedDynamicState3ConservativeRasterizationMode', + 'variables': [ + { + 'type': 'VkConservativeRasterizationModeEXT', + 'name': 'conservative_rasterization_mode', + } + ], + 'required_additional_extensions': [{'name': 'VK_EXT_CONSERVATIVE_RASTERIZATION'}], + }, + 'VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT': { + 'commands': ['vkCmdSetExtraPrimitiveOverestimationSizeEXT'], + 'required_feature_struct_member': 'extendedDynamicState3ExtraPrimitiveOverestimationSize', + 'variables': [ + {'type': 'float', 'name': 'extra_primitive_overestimation_size'} + ], + 'required_additional_extensions': [{'name': 'VK_EXT_CONSERVATIVE_RASTERIZATION'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT': { + 'commands': ['vkCmdSetDepthClipEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3DepthClipEnable', + 'variables': [{'type': 'VkBool32', 'name': 'depth_clip_enable'}], + 'required_additional_extensions': [ + {'name': 'VK_EXT_DEPTH_CLIP_ENABLE', 'member': 'depthClipEnable'} + ], + }, + 'VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT': { + 'commands': ['vkCmdSetSampleLocationsEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3SampleLocationsEnable', + 'variables': [{'type': 'VkBool32', 'name': 'sample_locations_enable'}], + 'required_additional_extensions': [{'name': 'VK_EXT_SAMPLE_LOCATIONS'}], + }, + 'VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT': { + 'commands': ['vkCmdSetProvokingVertexModeEXT'], + 'required_feature_struct_member': 'extendedDynamicState3ProvokingVertexMode', + 'variables': [ + {'type': 'VkProvokingVertexModeEXT', + 'name': 'provoking_vertex_mode'} + ], + 'required_additional_extensions': [{'name': 'VK_EXT_PROVOKING_VERTEX'}], + }, + 'VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT': { + 'commands': ['vkCmdSetLineRasterizationModeEXT'], + 'required_feature_struct_member': 'extendedDynamicState3LineRasterizationMode', + 'variables': [ + { + 'type': 'VkLineRasterizationModeEXT', + 'name': 'line_rasterization_mode', + } + ], + 'required_additional_extensions': [{'name': 'VK_EXT_LINE_RASTERIZATION'}], + }, + 'VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT': { + 'commands': ['vkCmdSetLineStippleEnableEXT'], + 'required_feature_struct_member': 'extendedDynamicState3LineStippleEnable', + 'variables': [{'type': 'VkBool32', 'name': 'stippled_line_enable'}], + 'required_additional_extensions': [{'name': 'VK_EXT_LINE_RASTERIZATION'}], + }, + 'VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT': { + 'commands': ['vkCmdSetDepthClipNegativeOneToOneEXT'], + 'required_feature_struct_member': 'extendedDynamicState3DepthClipNegativeOneToOne', + 'variables': [{'type': 'VkBool32', 'name': 'negative_one_to_one'}], + 'required_additional_extensions': [{'name': 'VK_EXT_DEPTH_CLIP_CONTROL'}], + }, + 'VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV': { + 'commands': ['vkCmdSetCoverageModulationModeNV'], + 'required_feature_struct_member': 'extendedDynamicState3CoverageModulationMode', + 'variables': [ + { + 'type': 'VkCoverageModulationModeNV', + 'name': 'coverage_modulation_mode', + } + ], + 'required_additional_extensions': [ + {'name': 'VK_NV_FRAMEBUFFER_MIXED_SAMPLES'} + ], + }, + 'VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV': { + 'commands': ['vkCmdSetCoverageModulationTableEnableNV'], + 'required_feature_struct_member': 'extendedDynamicState3CoverageModulationTableEnable', + 'variables': [ + {'type': 'VkBool32', 'name': 'coverage_modulation_table_enable'} + ], + 'required_additional_extensions': [ + {'name': 'VK_NV_FRAMEBUFFER_MIXED_SAMPLES'} + ], + }, + 'VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV': { + 'commands': ['vkCmdSetCoverageModulationTableNV'], + 'required_feature_struct_member': 'extendedDynamicState3CoverageModulationTable', + 'variables': [ + { + 'type': 'float', + 'name': 'coverage_modulation_table_values', + 'compile_time_array_length': 'VK_SAMPLE_COUNT_64_BIT', + }, + {'type': 'uint32_t', 'name': 'coverage_modulation_table_count'}, + ], + 'required_additional_extensions': [ + {'name': 'VK_NV_FRAMEBUFFER_MIXED_SAMPLES'} + ], + }, + 'VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV': { + 'commands': ['vkCmdSetCoverageReductionModeNV'], + 'required_feature_struct_member': 'extendedDynamicState3CoverageReductionMode', + 'variables': [ + {'type': 'VkCoverageReductionModeNV', + 'name': 'coverage_reduction_mode'} + ], + 'required_additional_extensions': [{'name': 'VK_NV_COVERAGE_REDUCTION_MODE'}], + }, + 'VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV': { + 'commands': ['vkCmdSetCoverageToColorEnableNV'], + 'required_feature_struct_member': 'extendedDynamicState3CoverageToColorEnable', + 'variables': [{'type': 'VkBool32', 'name': 'coverage_to_color_enable'}], + 'required_additional_extensions': [ + {'name': 'VK_NV_FRAGMENT_COVERAGE_TO_COLOR'} + ], + }, + 'VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV': { + 'commands': ['vkCmdSetCoverageToColorLocationNV'], + 'required_feature_struct_member': 'extendedDynamicState3CoverageToColorLocation', + 'variables': [{'type': 'uint32_t', 'name': 'coverage_to_color_location'}], + 'required_additional_extensions': [ + {'name': 'VK_NV_FRAGMENT_COVERAGE_TO_COLOR'} + ], + }, + 'VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV': { + 'commands': ['vkCmdSetViewportWScalingEnableNV'], + 'required_feature_struct_member': 'extendedDynamicState3ViewportWScalingEnable', + 'variables': [{'type': 'VkBool32', 'name': 'viewport_w_scaling_enable'}], + 'required_additional_extensions': [{'name': 'VK_NV_CLIP_SPACE_W_SCALING'}], + }, + 'VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV': { + 'commands': ['vkCmdSetViewportSwizzleNV'], + 'required_feature_struct_member': 'extendedDynamicState3ViewportSwizzle', + 'variables': [ + {'type': 'uint32_t', 'name': 'viewport_swizzle_count'}, + { + 'type': 'VkViewportSwizzleNV', + 'name': 'viewport_swizzle', + 'init_time_array_length': 'max_viewports', + }, + ], + 'required_additional_extensions': [{'name': 'VK_NV_VIEWPORT_SWIZZLE'}], + }, + 'VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV': { + 'commands': ['vkCmdSetShadingRateImageEnableNV'], + 'required_feature_struct_member': 'extendedDynamicState3ShadingRateImageEnable', + 'variables': [{'type': 'VkBool32', 'name': 'shading_rate_image_enable'}], + 'required_additional_extensions': [{'name': 'VK_NV_SHADING_RATE_IMAGE'}], + }, + 'VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV': { + 'commands': ['vkCmdSetRepresentativeFragmentTestEnableNV'], + 'required_feature_struct_member': 'extendedDynamicState3RepresentativeFragmentTestEnable', + 'variables': [ + {'type': 'VkBool32', 'name': 'representative_fragment_test_enable'} + ], + 'required_additional_extensions': [ + {'name': 'VK_NV_REPRESENTATIVE_FRAGMENT_TEST'} + ], + }, + }, + 'VK_EXT_vertex_input_dynamic_state': { + 'VK_DYNAMIC_STATE_VERTEX_INPUT_EXT': { + 'commands': ['vkCmdSetVertexInputEXT'], + 'required_feature_struct_member': 'vertexInputDynamicState', + 'variables': [ + { + 'type': 'VkVertexInputAttributeDescription', + 'name': 'vertex_input_attribute_description', + 'init_time_array_length': 'max_vertex_input_attributes' + }, + { + 'type': 'VkVertexInputBindingDescription', + 'name': 'vertex_input_binding_description', + 'init_time_array_length': 'max_vertex_input_bindings' + }, + {'type': 'uint32_t', 'name': 'num_vertex_input_attribute_descriptions'}, + {'type': 'uint32_t', 'name': 'num_vertex_input_binding_descriptions'} + ], + }, + }, +} + +STATIC_DRAW_STATES = [ + { + 'type': 'VkFormat', + 'name': 'depth_attachment_format' + }, + { + 'type': 'VkFormat', + 'name': 'stencil_attachment_format' + }, + { + 'type': 'VkFormat', + 'name': 'color_attachment_format', + 'init_time_array_length': 'max_color_attachments' + }, + { + 'type': 'uint32_t', + 'name': 'num_color_attachments' + }, + { + 'type': 'VkPipelineColorBlendAttachmentState', + 'name': 'color_blend_attachment_state', + 'init_time_array_length': 'max_color_attachments' + }, + { + 'type': 'ComparableShader', + 'name': 'comparable_shader', + 'compile_time_array_length': 'NUM_SHADERS' + } +] + +ENTRY_POINTS = { + 'intercept': { + 'instance': [ + ['GetInstanceProcAddr'], + ['_layerGetPhysicalDeviceProcAddr'], + ['CreateInstance'], + ['DestroyInstance'], + ['EnumerateInstanceExtensionProperties'], + ['EnumerateInstanceLayerProperties'] + ], + 'physical_device': [ + ['EnumerateDeviceExtensionProperties'], + ['GetPhysicalDeviceFeatures2', 'GetPhysicalDeviceFeatures2KHR'], + ['GetPhysicalDeviceProperties2', 'GetPhysicalDeviceProperties2KHR'], + ['CreateDevice'] + ], + 'device': [ + ['GetDeviceProcAddr'], + ['DestroyDevice'], + ['CreateShadersEXT'], + ['DestroyShaderEXT'], + ['CmdBindShadersEXT'], + ['CmdBindPipeline'], + ['CreateImageView'], + ['DestroyImageView'], + ['AllocateCommandBuffers'], + ['FreeCommandBuffers'], + ['DestroyCommandPool'], + ['BeginCommandBuffer'], + ['CmdBeginRendering', 'CmdBeginRenderingKHR'], + ['GetShaderBinaryDataEXT'], + ['CmdSetViewportWithCount', 'CmdSetViewportWithCountEXT'], + ['CmdSetScissorWithCount', 'CmdSetScissorWithCountEXT'], + ['CmdSetVertexInputEXT'], + ['CmdSetPrimitiveTopology', 'CmdSetPrimitiveTopologyEXT'], + ['CmdSetPrimitiveRestartEnable', 'CmdSetPrimitiveRestartEnableEXT'], + ['CmdSetRasterizerDiscardEnable', 'CmdSetRasterizerDiscardEnableEXT'], + ['CmdSetRasterizationSamplesEXT'], + ['CmdSetPolygonModeEXT'], + ['CmdSetCullMode', 'CmdSetCullModeEXT'], + ['CmdSetFrontFace', 'CmdSetFrontFaceEXT'], + ['CmdSetDepthTestEnable', 'CmdSetDepthTestEnableEXT'], + ['CmdSetDepthWriteEnable', 'CmdSetDepthWriteEnableEXT'], + ['CmdSetDepthCompareOp', 'CmdSetDepthCompareOpEXT'], + ['CmdSetStencilTestEnable', 'CmdSetStencilTestEnableEXT'], + ['CmdSetLogicOpEnableEXT'], + ['CmdSetColorBlendEnableEXT'], + ['CmdSetColorBlendEquationEXT'], + ['CmdSetColorWriteMaskEXT'], + ['CmdSetDepthBoundsTestEnable', 'CmdSetDepthBoundsTestEnableEXT'], + ['CmdSetDepthBiasEnable', 'CmdSetDepthBiasEnableEXT'], + ['CmdSetDepthClampEnableEXT'], + ['CmdSetStencilOp', 'CmdSetStencilOpEXT'], + ['CmdDraw'], + ['CmdDrawIndirect'], + ['CmdDrawIndirectCount'], + ['CmdDrawIndexed'], + ['CmdDrawIndexedIndirect'], + ['CmdDrawIndexedIndirectCount'], + ['CmdDrawMeshTasksEXT'], + ['CmdDrawMeshTasksIndirectEXT'], + ['CmdDrawMeshTasksIndirectCountEXT'], + ['CmdDrawMeshTasksNV'], + ['CmdDrawMeshTasksIndirectNV'], + ['CmdDrawMeshTasksIndirectCountNV'], + ['CmdSetLogicOpEXT'], + ['CmdSetPatchControlPointsEXT'], + ['CmdSetTessellationDomainOriginEXT'], + ['CmdSetAlphaToOneEnableEXT'], + ['CmdSetAlphaToCoverageEnableEXT'], + ['CmdSetSampleMaskEXT'], + ['CmdSetRasterizationStreamEXT'], + ['CmdSetConservativeRasterizationModeEXT'], + ['CmdSetExtraPrimitiveOverestimationSizeEXT'], + ['CmdSetDepthClipEnableEXT'], + ['CmdSetSampleLocationsEnableEXT'], + ['CmdSetProvokingVertexModeEXT'], + ['CmdSetLineRasterizationModeEXT'], + ['CmdSetLineStippleEnableEXT'], + ['CmdSetDepthClipNegativeOneToOneEXT'], + ['CmdSetCoverageModulationModeNV'], + ['CmdSetCoverageModulationTableEnableNV'], + ['CmdSetCoverageModulationTableNV'], + ['CmdSetCoverageReductionModeNV'], + ['CmdSetCoverageToColorEnableNV'], + ['CmdSetCoverageToColorLocationNV'], + ['CmdSetViewportWScalingEnableNV'], + ['CmdSetViewportSwizzleNV'], + ['CmdSetShadingRateImageEnableNV'], + ['CmdSetRepresentativeFragmentTestEnableNV'], + ['CmdBindVertexBuffers2', 'CmdBindVertexBuffers2EXT'], + ['CmdBindDescriptorSets'], + ['CmdPushDescriptorSetKHR'], + ['CmdPushDescriptorSetWithTemplateKHR'], + ['CmdPushConstants'], + ['SetPrivateData', 'SetPrivateDataEXT'], + ['GetPrivateData', 'GetPrivateDataEXT'], + ['CreateDescriptorUpdateTemplate', 'CreateDescriptorUpdateTemplateKHR'], + ['DestroyDescriptorUpdateTemplate', 'DestroyDescriptorUpdateTemplateKHR'], + ['SetDebugUtilsObjectNameEXT'], + ['SetDebugUtilsObjectTagEXT'] + ] + }, + 'forward': { + 'instance': [], + 'physical_device': [ + ['GetPhysicalDeviceProperties'], + ['GetPhysicalDeviceImageFormatProperties'] + ], + 'device': [ + ['CreatePipelineLayout'], + ['CreateGraphicsPipelines'], + ['CreateComputePipelines'], + ['DestroyPipelineLayout'], + ['DestroyPipeline'], + ['CreateShaderModule'], + ['DestroyShaderModule'], + ['CreatePipelineCache'], + ['DestroyPipelineCache'], + ['GetPipelineCacheData'], + ['MergePipelineCaches'], + ['GetDeviceQueue'], + ['QueueSubmit'], + ['QueueSubmit2', 'QueueSubmit2KHR'], + ['CmdSetViewport'], + ['CmdSetScissor'], + ['CreatePrivateDataSlotEXT'], + ['DestroyPrivateDataSlotEXT'], + ['CmdBindVertexBuffers'] + ] + } +} + +PIPELINE_SUBSETS = { + 'VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT': { + 'shaders': [ + 'VERTEX_SHADER', + 'TESSELLATION_CONTROL_SHADER', + 'TESSELLATION_EVALUATION_SHADER', + 'GEOMETRY_SHADER', + 'TASK_SHADER', + 'MESH_SHADER' + ], + 'dynamic_state_enums': [ + 'VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT', + 'VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT', + 'VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT', + 'VK_DYNAMIC_STATE_POLYGON_MODE_EXT', + 'VK_DYNAMIC_STATE_CULL_MODE_EXT', + 'VK_DYNAMIC_STATE_FRONT_FACE_EXT', + 'VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT', + 'VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' + ] + }, + 'VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT': { + 'shaders': [ + 'FRAGMENT_SHADER' + ], + 'dynamic_state_enums': [ + 'VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT', + 'VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT', + 'VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT', + 'VK_DYNAMIC_STATE_SAMPLE_MASK_EXT', + 'VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT', + 'VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT', + 'VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT', + 'VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT', + 'VK_DYNAMIC_STATE_STENCIL_OP_EXT' + ] + } +} + + +class ShaderObjectGenerator(BaseGenerator): + def __init__(self): + BaseGenerator.__init__(self) + + def generate(self): + self.write('''// *** THIS FILE IS GENERATED - DO NOT EDIT *** // See shader_object_generator.py for modifications /* @@ -37,538 +638,517 @@ def create_generated_file(filename): * See the License for the specific language governing permissions and * limitations under the License. */ + ''') + + if self.filename == 'shader_object_constants.h': + self.generate_constants_file() + elif self.filename == 'shader_object_device_data_declare_extension_variables.inl': + self.generate_device_data_declare_extension_variables() + elif self.filename == 'shader_object_device_data_set_extension_variables.inl': + self.generate_device_data_set_extension_variables() + elif self.filename == 'shader_object_device_data_dynamic_state_adding.inl': + self.generate_device_data_dynamic_state_adding() + elif self.filename == 'shader_object_create_device_feature_structs.inl': + self.generate_create_device_feature_structs() + elif self.filename == 'shader_object_find_intercepted_dynamic_state_function_by_name.inl': + self.generate_find_intercepted_dynamic_state_function_by_name() + elif self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.generate_full_draw_state_struct_members() + elif self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.generate_full_draw_state_struct_members() + elif self.filename == 'shader_object_full_draw_state_utility_functions.inl': + self.generate_full_draw_state_utility_functions() + elif self.filename == 'shader_object_entry_points_x_macros.inl': + self.generate_entry_points() + + def snake_case_to_upper_camel_case(self, x): + uppercase_next = True + + out = '' + for char in x: + is_underscore = char == '_' + + if not is_underscore: + if uppercase_next: + out += char.upper() + else: + out += char -""") - - return out_file - -def snake_case_to_upper_camel_case(x): - uppercase_next = True - - out = '' - for char in x: - is_underscore = char == '_' - - if not is_underscore: - if uppercase_next: - out += char.upper() - else: - out += char - - uppercase_next = is_underscore - - return out - -def is_variable_array(variable_data): - return 'init_time_array_length' in variable_data or 'compile_time_array_length' in variable_data - -def get_private_variable_name(variable_data): - name = variable_data['name'] - is_plural = is_variable_array(variable_data) - return name + ('s' if is_plural else '') + '_' - -def generate_constants_file(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_constants.h') - - all_important_extensions = data['extensions'] + data['optional_extensions'] + [{ 'name': 'SHADER_OBJECT', 'extension_name_macro': 'VK_EXT_SHADER_OBJECT_EXTENSION_NAME' }] - - longest_name_length = 0 - longest_macro_name_length = 0 - for extension in all_important_extensions: - longest_name_length = max(longest_name_length, len(extension['name'])) - longest_macro_name_length = max(longest_macro_name_length, len(extension['extension_name_macro'])) - - out_file.write('#pragma once\n\n') - out_file.write('#include \n') - out_file.write('#include \n\n') - - out_file.write('#include "shader_object/shader_object_util.h"\n\n') - - out_file.write('enum AdditionalExtensionFlagBits {\n') - shift_amount = 0 - - for extension in all_important_extensions: - name = extension['name'] - padding = ' ' * (longest_name_length - len(name)) - out_file.write(f' {name}{padding} = 1u << {shift_amount},\n') - shift_amount = shift_amount + 1 - out_file.write('};\n') - out_file.write(f'using AdditionalExtensionFlags = uint32_t;\n\n') - - out_file.write('inline AdditionalExtensionFlags AdditionalExtensionStringToFlag(const char* pExtensionName) {\n') - for extension in all_important_extensions: - name = extension['name'] - extension_macro_name = extension['extension_name_macro'] - padding = ' ' * (longest_macro_name_length - len(extension_macro_name)) - out_file.write(f' if (strncmp(pExtensionName, {extension_macro_name},{padding} VK_MAX_EXTENSION_NAME_SIZE) == 0) {{ return {name}; }}\n') - out_file.write(' return {};\n}\n\n') - - - out_file.write('struct ExtensionData {\n const char* extension_name;\n AdditionalExtensionFlagBits flag;\n};\n\n') + uppercase_next = is_underscore - num_dynamic_states = 7 + 3 # There are 7 dynamic states that are always present from Vulkan 1.0 and 3 potential dynamic states from additional extensions + return out - out_file.write('constexpr ExtensionData kAdditionalExtensions[] = {\n') - for extension in data['extensions']: - name = extension['name'] - extension_macro_name = extension['extension_name_macro'] + def is_variable_array(self, variable_data): + return 'init_time_array_length' in variable_data or 'compile_time_array_length' in variable_data - padding = ' ' * (longest_macro_name_length - len(extension_macro_name)) - out_file.write(f' {{ {extension_macro_name},{padding} {name} }},\n') + def get_private_variable_name(self, variable_data): + name = variable_data['name'] + is_plural = self.is_variable_array(variable_data) + return name + ('s' if is_plural else '') + '_' - if 'dynamic_states' in extension: - num_dynamic_states = num_dynamic_states + len(extension['dynamic_states']) + def get_feature_struct(self, extension): + for struct in extension.structs: + if 'VkPhysicalDevice' in struct.name and 'Features' in struct.name: + return struct + return None - out_file.write('};\n\n') + def get_extension_flag_name(self, extension_name): + cut_prefix_amount = 1 if 'NV' in extension_name else 2 + return '_'.join(extension_name.split('_')[cut_prefix_amount:]).upper() - out_file.write(f'constexpr uint32_t kMaxDynamicStates = {num_dynamic_states};\n') - out_file.write(f'constexpr uint32_t kMaxSampleMaskLength = CalculateRequiredGroupSize(VK_SAMPLE_COUNT_64_BIT, 32);\n') + def get_extension_variable_name(self, extension_name): + return '_'.join(extension_name.split('_')[2:]).lower() - out_file.close() + def generate_constants_file(self): -def generate_device_data_declare_extension_variables(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_device_data_declare_extension_variables.inl') - - for extension in (data['extensions'] + data['optional_extensions']): - if 'feature_struct' not in extension: - continue + all_important_extensions = [] + all_important_extensions.extend(REQUIRED_EXTENSIONS) + all_important_extensions.extend(OPTIONAL_EXTENSIONS) + all_important_extensions.append('VK_EXT_shader_object') - out_file.writelines([ - extension['feature_struct'], - ' ', - extension['name'].lower(), - ';\n' - ]) + self.write('#pragma once\n') + self.write('#include ') + self.write('#include \n') - out_file.close() + self.write('#include "shader_object/shader_object_util.h"\n') -def generate_device_data_set_extension_variables(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_device_data_set_extension_variables.inl') + self.write('enum AdditionalExtensionFlagBits {') + shift_amount = 0 - for extension in (data['extensions'] + data['optional_extensions']): - if 'feature_struct' not in extension: - continue + for extension in all_important_extensions: + name = self.get_extension_flag_name(extension) + self.write(f' {name}= 1u << {shift_amount},') + shift_amount = shift_amount + 1 + self.write('};') + self.write('using AdditionalExtensionFlags = uint32_t;\n') - var_name = extension['name'].lower() - out_file.write(f'device_data->{var_name} = {var_name}_ptr ? *{var_name}_ptr : {var_name}_local;\n') + self.write('inline AdditionalExtensionFlags AdditionalExtensionStringToFlag(const char* pExtensionName) {') - out_file.close() + for extension in all_important_extensions: + name = self.get_extension_flag_name(extension) + extension_macro_name = self.vk.extensions[extension].nameString + self.write( + f'if (strncmp(pExtensionName, {extension_macro_name}, VK_MAX_EXTENSION_NAME_SIZE) == 0) {{ return {name}; }}') -def generate_device_data_dynamic_state_adding(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_device_data_dynamic_state_adding.inl') + self.write('return {};}') - for extension in data['extensions']: - if 'dynamic_states' not in extension: - continue + self.write('struct ExtensionData { const char* extension_name; AdditionalExtensionFlagBits flag;};') - struct_name = extension['name'].lower() - for dynamic_state in extension['dynamic_states']: - member = dynamic_state['required_feature_struct_member'] - enum = dynamic_state['dynamic_state_enum'] - - conditional = f'{struct_name}_ptr && {struct_name}_ptr->{member} == VK_TRUE' - if 'required_additional_extensions' in dynamic_state: - for additional_extension in dynamic_state['required_additional_extensions']: - additional_struct_name = additional_extension['name'].lower() - conditional += ' && (enabled_additional_extensions & ' + additional_extension['name'] + ') != 0' - if 'member' in additional_extension: - additional_struct_member = additional_extension['member'] - conditional += f' && {additional_struct_name}_ptr && {additional_struct_name}_ptr->{additional_struct_member} == VK_TRUE' - - out_file.write(f'if ({conditional}) {{\n') - out_file.write(f' device_data->AddDynamicState({enum});\n') - out_file.write('}\n') - - out_file.close() - -def generate_create_device_feature_structs(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_create_device_feature_structs.inl') - - if (len(data['extensions']) == 0): - return - - out_file.write('VkBaseOutStructure* appended_features_chain = nullptr;\n') - out_file.write('VkBaseOutStructure* appended_features_chain_last = nullptr;\n\n') - out_file.write('auto vulkan_1_3_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES));\n\n') - - # Performance could be improved, this is a naive implementation - - for extension in data['extensions']: - if 'feature_struct' not in extension: - continue - - struct_name = extension['feature_struct'] - sType = extension['feature_struct_stype'] - enum_name = extension['name'] - var_name = extension['name'].lower() - initializer = '{' + extension['feature_struct_stype'] + '}' - promoted_struct = f'vulkan_{extension['promoted_to']}_ptr == nullptr && ' if 'promoted_to' in extension else '' - out_file.write(f'auto {var_name}_ptr = reinterpret_cast<{struct_name}*>(FindStructureInChain(device_next_chain, {sType}));\n') - out_file.write(f'{struct_name} {var_name}_local{initializer};\n') - out_file.write(f'if ({promoted_struct}{var_name}_ptr == nullptr && (physical_device_data->supported_additional_extensions & {enum_name}) != 0) {{\n') - out_file.write(f' {var_name}_ptr = &{var_name}_local;\n') - out_file.write(f' if (appended_features_chain_last == nullptr) {{\n') - out_file.write(f' appended_features_chain = (VkBaseOutStructure*){var_name}_ptr;\n') - out_file.write(f' appended_features_chain_last = appended_features_chain;\n') - out_file.write(f' }} else {{\n') - out_file.write(f' appended_features_chain_last->pNext = (VkBaseOutStructure*){var_name}_ptr;\n') - out_file.write(f' appended_features_chain_last = appended_features_chain_last->pNext;\n') - out_file.write(f' }}\n') - out_file.write(f'}}\n') - - for extension in data['optional_extensions']: - if 'feature_struct' not in extension: - continue - - struct_name = extension['feature_struct'] - sType = extension['feature_struct_stype'] - enum_name = extension['name'] - var_name = extension['name'].lower() - initializer = '{' + extension['feature_struct_stype'] + '}' - out_file.write(f'auto {var_name}_ptr = reinterpret_cast<{struct_name}*>(FindStructureInChain(device_next_chain, {sType}));\n') - out_file.write(f'{struct_name} {var_name}_local{initializer};\n') - out_file.write(f'if ({var_name}_ptr == nullptr) {{\n') - out_file.write(f' {var_name}_ptr = &{var_name}_local;\n') - out_file.write(f'}}\n') - - out_file.write('\n') - - out_file.close() - -def generate_find_intercepted_dynamic_state_function_by_name(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_find_intercepted_dynamic_state_function_by_name.inl') - - for extension in data['extensions']: - if 'dynamic_states' not in extension: - continue - - struct_name = extension['name'].lower() - for dynamic_state in extension['dynamic_states']: - member = dynamic_state['required_feature_struct_member'] - - conditional = f'{struct_name}.{member} == VK_TRUE && (' - for idx, function_name in enumerate(dynamic_state['function_names']): - conditional = conditional + ('' if idx == 0 else ' || ') + f'strcmp("vk{function_name}", pName) == 0' - conditional = conditional + ')' - - if 'additional_interception_requirement' in dynamic_state: - conditional = conditional + ' && ' + dynamic_state['additional_interception_requirement'] - - out_file.write(f'if ({conditional}) {{\n') - out_file.write(f' DEBUG_LOG("not intercepting %s because real dynamic state exists ({struct_name}.{member} == VK_TRUE)\\n", pName);\n') - out_file.write(f' return nullptr;\n') - out_file.write('}\n') - - out_file.close() - -def generate_full_draw_state_struct_members(data): - getter_setter_section = [''] - getter_setter_section_impl = [''] - operator_equals_section = [''] - member_variables_section = [''] - subset_compare_section = dict() - - state_to_pipeline_subset = dict() - for subset in data['pipeline_subsets']: - for dynamic_state_enum in data['pipeline_subsets'][subset]['dynamic_state_enums']: - state_to_pipeline_subset[dynamic_state_enum] = subset - - def generate_getter_and_setter(state_group, name, variable_name, type, array_length = None): - is_singular = array_length == None - upper_camel_case_name = snake_case_to_upper_camel_case(name) - getter_setter_section.append(f'void Set{upper_camel_case_name}(' + ('' if is_singular else 'uint32_t index, ') + f'{type} const& element);\n') - getter_setter_section_impl.append(f'void FullDrawStateData::Set{upper_camel_case_name}(' + ('' if is_singular else 'uint32_t index, ') + f'{type} const& element) {{\n') - getter_setter_section_impl.append(f' if (element == {variable_name}' + ('' if is_singular else '[index]') + ') {\n') - getter_setter_section_impl.append(' return;\n') - getter_setter_section_impl.append(' }\n') - getter_setter_section_impl.append(f' dirty_hash_bits_.set({state_group});\n') - getter_setter_section_impl.append(' MarkDirty();\n') - getter_setter_section_impl.append(f' {variable_name}' + ('' if is_singular else '[index]') + ' = element;\n') - getter_setter_section_impl.append('}\n') - - getter_setter_section.append(f'{type} const& Get{upper_camel_case_name}(' + ('' if is_singular else 'uint32_t index') + ') const;\n') - getter_setter_section_impl.append(f'{type} const& FullDrawStateData::Get{upper_camel_case_name}(' + ('' if is_singular else 'uint32_t index') + ') const {\n') - getter_setter_section_impl.append(f' return {variable_name}' + ('' if is_singular else '[index]') + ';\n') - getter_setter_section_impl.append('}\n') - - if not is_singular: - getter_setter_section.append(f'{type} const* Get{upper_camel_case_name}Ptr() const;\n') - getter_setter_section_impl.append(f'{type} const* FullDrawStateData::Get{upper_camel_case_name}Ptr() const {{\n') - getter_setter_section_impl.append(f' return {variable_name};\n') - getter_setter_section_impl.append('}\n') - - getter_setter_section.append('\n') - getter_setter_section_impl.append('\n') - - def process_variable(variable_state_group, dynamic_state_enum, variable_data): - var_type = variable_data['type'] - var_name_private = get_private_variable_name(variable_data) - - comparison_code = [] - - if 'init_time_array_length' in variable_data: - # dynamic array member, we know the length at init time but not compile time - length = 'limits_.' + variable_data['init_time_array_length'] - member_variables_section.append(f'{var_type}* {var_name_private}{{}};\n') - - comparison_code.append(f'if (o.{length} != {length}) {{\n') - comparison_code.append(f' return false;\n') - comparison_code.append('}\n') - comparison_code.append(f'for (uint32_t i = 0; i < {length}; ++i) {{\n') - if var_type == 'VkFormat': - comparison_code.append(f' if (!(o.{var_name_private}[i] == {var_name_private}[i]) && (!o.dynamic_rendering_unused_attachments_ || o.{var_name_private}[i] != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || {var_name_private}[i] != VK_FORMAT_UNDEFINED)) {{\n') - else: - comparison_code.append(f' if (!(o.{var_name_private}[i] == {var_name_private}[i])) {{\n') - comparison_code.append(f' return false;\n') - comparison_code.append(f' }}\n') - comparison_code.append(f'}}\n\n') - - generate_getter_and_setter(variable_state_group, variable_data['name'], var_name_private, var_type, length) - elif 'compile_time_array_length' in variable_data: - # static array member - length = variable_data['compile_time_array_length'] - member_variables_section.append(f'{var_type} {var_name_private}[{length}];\n') - - comparison_code.append(f'for (uint32_t i = 0; i < {length}; ++i) {{\n') - comparison_code.append(f' if (!(o.{var_name_private}[i] == {var_name_private}[i])) {{\n') - comparison_code.append(f' return false;\n') - comparison_code.append(f' }}\n') - comparison_code.append(f'}}\n\n') - - generate_getter_and_setter(variable_state_group, variable_data['name'], var_name_private, var_type, length) - else: - # value member - if var_name_private == "patch_control_points_": - member_variables_section.append(f'{var_type} {var_name_private} = 1;\n') - else: - member_variables_section.append(f'{var_type} {var_name_private}{{}};\n') + self.write('constexpr ExtensionData kAdditionalExtensions[] = {') + for extension in REQUIRED_EXTENSIONS: + name = self.get_extension_flag_name(extension) + extension_macro_name = self.vk.extensions[extension].nameString + self.write(f' {{ {extension_macro_name}, {name} }},') - if var_type == 'VkFormat': - comparison_code.append(f'if (!(o.{var_name_private} == {var_name_private}) && (!o.dynamic_rendering_unused_attachments_ || o.{var_name_private} != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || {var_name_private} != VK_FORMAT_UNDEFINED)) {{\n') - elif var_name_private == 'num_color_attachments_': - comparison_code.append(f'if (!(o.{var_name_private} == {var_name_private}) && (!o.dynamic_rendering_unused_attachments_ && !dynamic_rendering_unused_attachments_)) {{\n') - else: - comparison_code.append(f'if (!(o.{var_name_private} == {var_name_private})) {{\n') - comparison_code.append(' return false;\n') - comparison_code.append('}\n\n') + num_dynamic_states = 0 + for dynamic_state_field in self.vk.enums['VkDynamicState'].fields: + if len(dynamic_state_field.extensions) == 0 or set(dynamic_state_field.extensions).issubset(REQUIRED_EXTENSIONS): + num_dynamic_states += 1 - generate_getter_and_setter(variable_state_group, variable_data['name'], var_name_private, var_type) + self.write('};\n') - operator_equals_section.extend(comparison_code) + self.write(f'constexpr uint32_t kMaxDynamicStates = {num_dynamic_states};') + self.write('constexpr uint32_t kMaxSampleMaskLength = CalculateRequiredGroupSize(VK_SAMPLE_COUNT_64_BIT, 32);') - if dynamic_state_enum in state_to_pipeline_subset: - subset = state_to_pipeline_subset[dynamic_state_enum] - if subset not in subset_compare_section: - subset_compare_section[subset] = [] - subset_compare_section[subset].append(comparison_code) + def generate_device_data_declare_extension_variables(self): + for extension_name in REQUIRED_EXTENSIONS + OPTIONAL_EXTENSIONS: + extension = self.vk.extensions[extension_name] + feature_struct = self.get_feature_struct(extension) + if feature_struct is not None: + self.write(f'{feature_struct.name} {self.get_extension_variable_name(extension.name)};') - for static_state in data['static_draw_states']: - process_variable('MISC', None, static_state) - - for extension in data['extensions']: - if 'dynamic_states' not in extension: - continue - - state_group = extension['name'] - for dynamic_state in extension['dynamic_states']: - if 'variables' not in dynamic_state: - continue - enum = dynamic_state['dynamic_state_enum'] - for variable in dynamic_state['variables']: - process_variable(state_group, enum, variable) - - out_file = create_generated_file('../layers/shader_object/generated/shader_object_full_draw_state_struct_members.inl') - out_cpp_file = create_generated_file('../layers/shader_object/generated/shader_object_full_draw_state_struct_members.cpp') - - out_cpp_file.write('#include "shader_object/shader_object_structs.h"\n\n') - out_cpp_file.write('namespace shader_object {\n\n') - - # public section - out_file.write('public:\n') - - # generate state group enum - out_file.write(' enum StateGroup { MISC') - for extension in data['extensions']: - if 'dynamic_states' in extension and len(extension['dynamic_states']) > 0: - out_file.write(', ' + extension['name']) - out_file.write(', NUM_STATE_GROUPS };\n\n') - - # getters and setters - out_file.write(' '.join(getter_setter_section)) - out_cpp_file.write(''.join(getter_setter_section_impl)) - - # generate operator== function - out_file.write(' bool operator==(FullDrawStateData const& o) const;\n') - out_cpp_file.write('bool FullDrawStateData::operator==(FullDrawStateData const& o) const {\n') - out_cpp_file.write(' '.join(operator_equals_section)) - out_cpp_file.write(' return true;\n') - out_cpp_file.write('}\n\n') - - # generate compare state subset - out_file.write(' bool CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const;\n'); - out_cpp_file.write(' bool FullDrawStateData::CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const {\n'); - - for subset_flag in subset_compare_section: - out_cpp_file.write(f' if (flag == {subset_flag}) {{\n') - - for shader in data['pipeline_subsets'][subset_flag]['shaders']: - out_cpp_file.write(f' if (!(o.comparable_shaders_[{shader}] == comparable_shaders_[{shader}])) {{\n') - out_cpp_file.write(f' return false;\n') - out_cpp_file.write(f' }}\n') - - for comparison_lines in subset_compare_section[subset_flag]: - lines = [''] - lines.extend(comparison_lines) - out_cpp_file.write(' '.join(lines)) - out_cpp_file.write(' }\n') - - out_cpp_file.write(' return true;\n') - out_cpp_file.write(' }\n') - - # private section - out_file.write('\nprivate:\n') - - # generate partial hash functions - variables_by_state_group = dict() - for extension in data['extensions']: - if 'dynamic_states' not in extension or len(extension['dynamic_states']) == 0: - continue - state_group = extension['name'] - - variables_by_state_group[state_group] = [] - for dynamic_state in extension['dynamic_states']: - if 'variables' not in dynamic_state: + def generate_device_data_set_extension_variables(self): + for extension_name in REQUIRED_EXTENSIONS + OPTIONAL_EXTENSIONS: + extension = self.vk.extensions[extension_name] + if self.get_feature_struct(extension) is None: continue - variables_by_state_group[state_group].extend(dynamic_state['variables']) - - variables_by_state_group['MISC'] = data['static_draw_states'] - - out_file.write(' size_t CalculatePartialHash(StateGroup state_group) const;\n') - out_cpp_file.write(' size_t FullDrawStateData::CalculatePartialHash(StateGroup state_group) const {\n') - out_cpp_file.write(' switch (state_group) {\n') - out_cpp_file.write(' default: assert(false); return 0;\n') - for state_group, variables in variables_by_state_group.items(): - out_cpp_file.write(f' case {state_group}:\n') - out_cpp_file.write(' {\n') - out_cpp_file.write(' size_t res = 17;\n') - - for variable in variables: - var_type = variable['type'] - var_name_private = get_private_variable_name(variable) - if is_variable_array(variable): - out_cpp_file.write(' // TODO: array comparison\n') - else: - if (var_type == 'VkFormat'): - out_cpp_file.write(' if (!dynamic_rendering_unused_attachments_) {\n') - out_cpp_file.write(f' res = res * 31 + std::hash<{var_type}>()({var_name_private});\n') - out_cpp_file.write(' }\n') - else: - out_cpp_file.write(f' res = res * 31 + std::hash<{var_type}>()({var_name_private});\n') + var_name = self.get_extension_variable_name(extension.name) + self.write(f'device_data->{var_name} = {var_name}_ptr ? *{var_name}_ptr : {var_name}_local;') - out_cpp_file.write(' return res;\n') - out_cpp_file.write(' }\n') - out_cpp_file.write(' }\n') - out_cpp_file.write(' }\n\n') + def generate_device_data_dynamic_state_adding(self): + for extension, extension_details in DYNAMIC_STATE_MAP.items(): + for dynamic_state, dynamic_state_details in extension_details.items(): + if self.get_feature_struct(self.vk.extensions[extension]) is None: + continue - out_file.write(' '.join(member_variables_section)) + member = dynamic_state_details['required_feature_struct_member'] - out_cpp_file.write('} // namespace shader_object\n\n') + struct_name = self.get_extension_variable_name(extension) + conditional = f'{struct_name}_ptr && {struct_name}_ptr->{member} == VK_TRUE' + if 'required_additional_extensions' in dynamic_state_details: + for additional_extension in dynamic_state_details['required_additional_extensions']: + additional_struct_name = self.get_extension_variable_name(additional_extension['name']) - out_file.close() - out_cpp_file.close() + conditional += ' && (enabled_additional_extensions & ' + self.get_extension_flag_name(additional_extension['name']) + ') != 0' -def generate_full_draw_state_utility_functions(data): - out_file = create_generated_file('../layers/shader_object/generated/shader_object_full_draw_state_utility_functions.inl') + if 'member' in additional_extension: + additional_struct_member = additional_extension['member'] + conditional += f' && {additional_struct_name}_ptr && {additional_struct_name}_ptr->{additional_struct_member} == VK_TRUE' - # gather init time array variables + self.write(f'if ({conditional}) {{') + self.write(f'device_data->AddDynamicState({dynamic_state});') + self.write('}') - init_time_array_variables = [] - for variable in data['static_draw_states']: - if 'init_time_array_length' in variable: - init_time_array_variables.append(variable) + def generate_create_device_feature_structs(self): + self.write('VkBaseOutStructure* appended_features_chain = nullptr;') + self.write('VkBaseOutStructure* appended_features_chain_last = nullptr;') + self.write('auto VK_VERSION_1_1_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES));') + self.write('auto VK_VERSION_1_3_ptr = reinterpret_cast(FindStructureInChain(device_next_chain, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES));') - for extension in data['extensions']: - if 'dynamic_states' not in extension: - continue + # Performance could be improved, this is a naive implementation - for dynamic_state in extension['dynamic_states']: - if 'variables' not in dynamic_state: + for extension_name in REQUIRED_EXTENSIONS: + extension = self.vk.extensions[extension_name] + feature_struct = self.get_feature_struct(extension) + if feature_struct is None: continue - for variable in dynamic_state['variables']: - if 'init_time_array_length' in variable: - init_time_array_variables.append(variable) - - # generate GetSizeInBytes - - out_file.write(' static constexpr void ReserveMemory(AlignedMemory& aligned_memory, Limits const& limits) {\n') - out_file.write(' aligned_memory.Add();\n') - - for var_data in init_time_array_variables: - var_type = var_data['type'] - length = var_data['init_time_array_length'] - out_file.write(f' aligned_memory.Add<{var_type}>(limits.{length});\n') - - out_file.write(' }\n\n') - - # generate SetInternalArrayPointers - - out_file.write(' static void SetInternalArrayPointers(FullDrawStateData* state, Limits const& limits) {\n') - out_file.write(' // Set array pointers to beginning of their memory\n') - out_file.write(' AlignedMemory aligned_memory;\n') - out_file.write(' aligned_memory.SetMemoryWritePtr((char*)state + sizeof(FullDrawStateData));\n') - - for var_data in init_time_array_variables: - var_name_private = get_private_variable_name(var_data) - var_type = var_data['type'] - length = var_data['init_time_array_length'] - - out_file.write(f' state->{var_name_private} = aligned_memory.GetNextAlignedPtr<{var_type}>(limits.{length});\n') - - out_file.write(' }\n') - - out_file.close() - -def generate_entry_points(data): - # generate all x macros - - out_file = create_generated_file('../layers/shader_object/generated/shader_object_entry_points_x_macros.inl') - - def generate_x_macro(name, function_names_list): - out_file.write(f'#define {name}') - - for function_names in function_names_list: - canon = function_names[0] - alias = function_names[1] if len(function_names) > 1 else None - out_file.write(f'\\\n ENTRY_POINT({canon})') - if alias is not None: - out_file.write(f'\\\n ENTRY_POINT_ALIAS({alias}, {canon})') - - out_file.write('\n\n') - - generate_x_macro('ENTRY_POINTS_INSTANCE', data['entry_points']['intercept']['instance']) - generate_x_macro('ENTRY_POINTS_PHYSICAL_DEVICE', data['entry_points']['intercept']['physical_device']) - generate_x_macro('ENTRY_POINTS_DEVICE', data['entry_points']['intercept']['device']) - generate_x_macro('ADDITIONAL_INSTANCE_FUNCTIONS', data['entry_points']['forward']['instance']) - generate_x_macro('ADDITIONAL_PHYSICAL_DEVICE_FUNCTIONS', data['entry_points']['forward']['physical_device']) - generate_x_macro('ADDITIONAL_DEVICE_FUNCTIONS', data['entry_points']['forward']['device']) - - out_file.close() - -# Load data - -f = open('shader_object_data.json', 'r') -data = json.load(f) -f.close() + struct_name = feature_struct.name + sType = feature_struct.sType + enum_name = extension_name + var_name = self.get_extension_variable_name(extension.name) + initializer = '{' + sType + '}' + promoted_struct = f'{extension.promotedTo}_ptr == nullptr && ' if extension.promotedTo is not None else '' + self.write(f'''auto {var_name}_ptr = reinterpret_cast<{struct_name}*>(FindStructureInChain(device_next_chain, {sType})); + {struct_name} {var_name}_local{initializer}; + if ({promoted_struct}{var_name}_ptr == nullptr && (physical_device_data->supported_additional_extensions & {enum_name}) != 0) {{ + {var_name}_ptr = &{var_name}_local; + if (appended_features_chain_last == nullptr) {{ + appended_features_chain = (VkBaseOutStructure*){var_name}_ptr; + appended_features_chain_last = appended_features_chain; + }} else {{ + appended_features_chain_last->pNext = (VkBaseOutStructure*){var_name}_ptr; + appended_features_chain_last = appended_features_chain_last->pNext; + }} + }}''') + + for extension_name in OPTIONAL_EXTENSIONS: + extension = self.vk.extensions[extension_name] + feature_struct = self.get_feature_struct(extension) + if feature_struct is None: + continue -# Generate files + struct_name = feature_struct.name + sType = feature_struct.sType + enum_name = extension_name + var_name = self.get_extension_variable_name(extension.name) + initializer = '{' + sType + '}' + self.write(f'''auto {var_name}_ptr = reinterpret_cast<{struct_name}*>(FindStructureInChain(device_next_chain, {sType})); + {struct_name} {var_name}_local{initializer}; + if ({var_name}_ptr == nullptr) {{ + {var_name}_ptr = &{var_name}_local; + }}''') + + def generate_find_intercepted_dynamic_state_function_by_name(self): + for extension, extension_details in DYNAMIC_STATE_MAP.items(): + struct_name = self.get_extension_variable_name(extension) + + for dynamic_state_details in extension_details.values(): + + member = dynamic_state_details['required_feature_struct_member'] + + conditional = f'{struct_name}.{member} == VK_TRUE && (' + for idx, command_name in enumerate(dynamic_state_details['commands']): + conditional = ( + conditional + + ('' if idx == 0 else ' || ') + + f'strcmp("{command_name}", pName) == 0' + ) + conditional = conditional + ')' + + if 'additional_interception_requirement' in dynamic_state_details: + conditional = conditional + ' && ' + dynamic_state_details['additional_interception_requirement'] + + self.write(f'''if ({conditional}) {{ + DEBUG_LOG("not intercepting %s because real dynamic state exists ({struct_name}.{member} == VK_TRUE)\\n", pName); + return nullptr; + }}''') + + def generate_full_draw_state_struct_members(self): + getter_setter_section = [''] + getter_setter_section_impl = [''] + operator_equals_section = [''] + member_variables_section = [''] + subset_compare_section = dict() + + state_to_pipeline_subset = dict() + for subset, subset_details in PIPELINE_SUBSETS.items(): + for dynamic_state_enum in subset_details['dynamic_state_enums']: + state_to_pipeline_subset[dynamic_state_enum] = subset + + def generate_getter_and_setter(state_group, name, variable_name, type, array_length=None): + is_singular = array_length == None + is_singular_sep_decl_str = '' if is_singular else 'uint32_t index, ' + is_singular_decl_str = '' if is_singular else 'uint32_t index' + is_singular_str = '' if is_singular else '[index]' + upper_camel_case_name = self.snake_case_to_upper_camel_case(name) + getter_setter_section.append(f'void Set{upper_camel_case_name}({is_singular_sep_decl_str}{type} const& element);') + getter_setter_section_impl.append( + f'''void FullDrawStateData::Set{upper_camel_case_name}({is_singular_sep_decl_str}{type} const& element) {{ + if (element == {variable_name}{is_singular_str}) {{ + return; + }} + dirty_hash_bits_.set({state_group}); + MarkDirty(); + {variable_name}{is_singular_str} = element; + }}''') + + getter_setter_section.append(f'{type} const& Get{upper_camel_case_name}({is_singular_decl_str}) const;') + getter_setter_section_impl.append(f''' + {type} const& FullDrawStateData::Get{upper_camel_case_name}({is_singular_decl_str}) const {{ + return {variable_name}{is_singular_str}; + }}''') + + if not is_singular: + getter_setter_section.append(f'{type} const* Get{upper_camel_case_name}Ptr() const;') + getter_setter_section_impl.append(f'{type} const* FullDrawStateData::Get{upper_camel_case_name}Ptr() const {{') + getter_setter_section_impl.append(f' return {variable_name};') + getter_setter_section_impl.append('}') + + def process_variable(variable_state_group, dynamic_state_enum, variable_data): + var_type = variable_data['type'] + var_name_private = self.get_private_variable_name(variable_data) + + comparison_code = [] + + if 'init_time_array_length' in variable_data: + # dynamic array member, we know the length at init time but not compile time + length = 'limits_.' + variable_data['init_time_array_length'] + member_variables_section.append(f'{var_type}* {var_name_private}{{}};') + + comparison_code.append(f'if (o.{length} != {length}) {{') + comparison_code.append(' return false;') + comparison_code.append('}') + comparison_code.append(f'for (uint32_t i = 0; i < {length}; ++i) {{') + if var_type == 'VkFormat': + comparison_code.append(f'if (!(o.{var_name_private}[i] == {var_name_private}[i]) && (!o.dynamic_rendering_unused_attachments_ || o.{var_name_private}[i] != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || {var_name_private}[i] != VK_FORMAT_UNDEFINED)) {{') + else: + comparison_code.append(f' if (!(o.{var_name_private}[i] == {var_name_private}[i])) {{') + comparison_code.append(' return false;') + comparison_code.append(' }') + comparison_code.append('}\n') + + generate_getter_and_setter(variable_state_group, variable_data['name'], var_name_private, var_type, length) + elif 'compile_time_array_length' in variable_data: + # static array member + length = variable_data['compile_time_array_length'] + member_variables_section.append(f'{var_type} {var_name_private}[{length}];') + + comparison_code.append( + f'''for (uint32_t i = 0; i < {length}; ++i) {{ + if (!(o.{var_name_private}[i] == {var_name_private}[i])) {{ + return false; + }} + }}\n''') + + generate_getter_and_setter(variable_state_group, variable_data['name'], var_name_private, var_type, length) + else: + # value member + if var_name_private == 'patch_control_points_': + member_variables_section.append(f'{var_type} {var_name_private} = 1;') + else: + member_variables_section.append(f'{var_type} {var_name_private}{{}};') -generate_constants_file(data) -generate_device_data_declare_extension_variables(data) -generate_device_data_set_extension_variables(data) -generate_device_data_dynamic_state_adding(data) -generate_create_device_feature_structs(data) -generate_find_intercepted_dynamic_state_function_by_name(data) -generate_full_draw_state_struct_members(data) -generate_full_draw_state_utility_functions(data) -generate_entry_points(data) + if var_type == 'VkFormat': + comparison_code.append(f'if (!(o.{var_name_private} == {var_name_private}) && (!o.dynamic_rendering_unused_attachments_ || o.{var_name_private} != VK_FORMAT_UNDEFINED) && (!dynamic_rendering_unused_attachments_ || {var_name_private} != VK_FORMAT_UNDEFINED)) {{') + elif var_name_private == 'num_color_attachments_': + comparison_code.append(f'if (!(o.{var_name_private} == {var_name_private}) && (!o.dynamic_rendering_unused_attachments_ && !dynamic_rendering_unused_attachments_)) {{') + else: + comparison_code.append(f'if (!(o.{var_name_private} == {var_name_private})) {{') + comparison_code.append(' return false;') + comparison_code.append('}\n') + + generate_getter_and_setter(variable_state_group, variable_data['name'], var_name_private, var_type) + + operator_equals_section.extend(comparison_code) + + if dynamic_state_enum in state_to_pipeline_subset: + subset = state_to_pipeline_subset[dynamic_state_enum] + if subset not in subset_compare_section: + subset_compare_section[subset] = [] + subset_compare_section[subset].append(comparison_code) + + for static_state in STATIC_DRAW_STATES: + process_variable('MISC', None, static_state) + + for extension, extension_details in DYNAMIC_STATE_MAP.items(): + for dynamic_state, dynamic_state_details in extension_details.items(): + if 'variables' not in dynamic_state_details: + continue + for variable in dynamic_state_details['variables']: + process_variable(extension, dynamic_state, variable) + + if self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.write('#include "shader_object/shader_object_structs.h"\n') + self.write('namespace shader_object {\n') + + # public section + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write('public:') + + # generate state group enum + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write(' enum StateGroup { MISC') + for extension in REQUIRED_EXTENSIONS: + if extension in DYNAMIC_STATE_MAP: + self.write(', ' + self.get_extension_flag_name(extension)) + self.write(', NUM_STATE_GROUPS };\n') + + # getters and setters + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write('\n '.join(getter_setter_section)) + elif self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.write('\n'.join(getter_setter_section_impl)) + + # generate operator== function + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write(' bool operator==(FullDrawStateData const& o) const;') + elif self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.write('bool FullDrawStateData::operator==(FullDrawStateData const& o) const {') + self.write('\n '.join(operator_equals_section)) + self.write(' return true;') + self.write('}\n') + + # generate compare state subset + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write('bool CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const;') + elif self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.write('bool FullDrawStateData::CompareStateSubset(FullDrawStateData const& o, VkGraphicsPipelineLibraryFlagBitsEXT flag) const {') + + for subset_flag, details in subset_compare_section.items(): + self.write(f'if (flag == {subset_flag}) {{') + + for shader in PIPELINE_SUBSETS[subset_flag]['shaders']: + self.write(f'if (!(o.comparable_shaders_[{shader}] == comparable_shaders_[{shader}])) {{') + self.write('return false;') + self.write('}') + + for comparison_lines in details: + lines = [''] + lines.extend(comparison_lines) + self.write('\n '.join(lines)) + self.write('}') + + self.write('return true;') + self.write('}') + + # private section + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write('\nprivate:') + + # generate partial hash functions + variables_by_state_group = dict() + for extension, extension_details in DYNAMIC_STATE_MAP.items(): + state_group = self.get_extension_flag_name(extension) + + variables_by_state_group[state_group] = [] + for dynamic_state_details in extension_details.values(): + if 'variables' not in dynamic_state_details: + continue + variables_by_state_group[state_group].extend( + dynamic_state_details['variables']) + + variables_by_state_group['MISC'] = STATIC_DRAW_STATES + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write('size_t CalculatePartialHash(StateGroup state_group) const;') + elif self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.write('size_t FullDrawStateData::CalculatePartialHash(StateGroup state_group) const {') + self.write('switch (state_group) {') + self.write('default: assert(false); return 0;') + for state_group, variables in variables_by_state_group.items(): + self.write(f'case {state_group}:') + self.write('{') + self.write('size_t res = 17;') + + for variable in variables: + var_type = variable['type'] + var_name_private = self.get_private_variable_name(variable) + if self.is_variable_array(variable): + self.write('// TODO: array comparison') + else: + if var_type == 'VkFormat': + self.write('if (!dynamic_rendering_unused_attachments_) {') + self.write(f'res = res * 31 + std::hash<{var_type}>()({var_name_private});') + self.write('}') + else: + self.write(f'res = res * 31 + std::hash<{var_type}>()({var_name_private});') + + self.write('return res;') + self.write('}') + self.write('}') + self.write('}\n') + + if self.filename == 'shader_object_full_draw_state_struct_members.inl': + self.write('\n '.join(member_variables_section)) + elif self.filename == 'shader_object_full_draw_state_struct_members.cpp': + self.write('} // namespace shader_object\n') + + def generate_full_draw_state_utility_functions(self): + # gather init time array variables + + init_time_array_variables = [] + for variable in STATIC_DRAW_STATES: + if 'init_time_array_length' in variable: + init_time_array_variables.append(variable) + + for extension_details in DYNAMIC_STATE_MAP.values(): + for dynamic_state_details in extension_details.values(): + if 'variables' not in dynamic_state_details: + continue + + for variable in dynamic_state_details['variables']: + if 'init_time_array_length' in variable: + init_time_array_variables.append(variable) + + # generate GetSizeInBytes + + self.write('static constexpr void ReserveMemory(AlignedMemory& aligned_memory, Limits const& limits) {') + self.write('aligned_memory.Add();') + + for var_data in init_time_array_variables: + var_type = var_data['type'] + length = var_data['init_time_array_length'] + self.write(f'aligned_memory.Add<{var_type}>(limits.{length});') + + self.write('}\n') + + # generate SetInternalArrayPointers + + self.write('static void SetInternalArrayPointers(FullDrawStateData* state, Limits const& limits) {') + self.write('// Set array pointers to beginning of their memory') + self.write('AlignedMemory aligned_memory;') + self.write('aligned_memory.SetMemoryWritePtr((char*)state + sizeof(FullDrawStateData));') + + for var_data in init_time_array_variables: + var_name_private = self.get_private_variable_name(var_data) + var_type = var_data['type'] + length = var_data['init_time_array_length'] + + self.write(f'state->{var_name_private} = aligned_memory.GetNextAlignedPtr<{var_type}>(limits.{length});') + + self.write('}') + + def generate_entry_points(self): + # generate all x macros + + def generate_x_macro(name, function_names_list): + out = [] + for function_names in function_names_list: + canon = function_names[0] + alias = function_names[1] if len(function_names) > 1 else None + out.append(f'ENTRY_POINT({canon})') + if alias is not None: + out.append(f'ENTRY_POINT_ALIAS({alias}, {canon})') + if len(out) > 0: + self.write(f'#define {name} \\') + self.write('\\\n '.join(out)) + else: + self.write(f'#define {name}') + self.write('\n') + + generate_x_macro('ENTRY_POINTS_INSTANCE', ENTRY_POINTS['intercept']['instance']) + generate_x_macro('ENTRY_POINTS_PHYSICAL_DEVICE', ENTRY_POINTS['intercept']['physical_device']) + generate_x_macro('ENTRY_POINTS_DEVICE', ENTRY_POINTS['intercept']['device']) + generate_x_macro('ADDITIONAL_INSTANCE_FUNCTIONS', ENTRY_POINTS['forward']['instance']) + generate_x_macro('ADDITIONAL_PHYSICAL_DEVICE_FUNCTIONS', ENTRY_POINTS['forward']['physical_device']) + generate_x_macro('ADDITIONAL_DEVICE_FUNCTIONS', ENTRY_POINTS['forward']['device'])