From d297a4eca6f384b24233bf8e042589779a0916ea Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Mon, 15 Sep 2025 10:20:33 -0500 Subject: [PATCH 1/3] scripts: Move generators into generator folder --- scripts/{ => generators}/mock_icd_generator.py | 0 .../{ => generators}/vulkan_tools_helper_file_generator.py | 0 scripts/{ => generators}/vulkaninfo_generator.py | 0 scripts/kvt_genvk.py | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) rename scripts/{ => generators}/mock_icd_generator.py (100%) rename scripts/{ => generators}/vulkan_tools_helper_file_generator.py (100%) rename scripts/{ => generators}/vulkaninfo_generator.py (100%) diff --git a/scripts/mock_icd_generator.py b/scripts/generators/mock_icd_generator.py similarity index 100% rename from scripts/mock_icd_generator.py rename to scripts/generators/mock_icd_generator.py diff --git a/scripts/vulkan_tools_helper_file_generator.py b/scripts/generators/vulkan_tools_helper_file_generator.py similarity index 100% rename from scripts/vulkan_tools_helper_file_generator.py rename to scripts/generators/vulkan_tools_helper_file_generator.py diff --git a/scripts/vulkaninfo_generator.py b/scripts/generators/vulkaninfo_generator.py similarity index 100% rename from scripts/vulkaninfo_generator.py rename to scripts/generators/vulkaninfo_generator.py diff --git a/scripts/kvt_genvk.py b/scripts/kvt_genvk.py index 8b9de7b7d..868cc3fbf 100644 --- a/scripts/kvt_genvk.py +++ b/scripts/kvt_genvk.py @@ -359,9 +359,9 @@ def genTarget(args): from cgenerator import CGeneratorOptions, COutputGenerator # Generator Modifications - from mock_icd_generator import MockICDGeneratorOptions, MockICDOutputGenerator - from vulkan_tools_helper_file_generator import HelperFileOutputGenerator, HelperFileOutputGeneratorOptions - from vulkaninfo_generator import VulkanInfoGenerator, VulkanInfoGeneratorOptions + from generators.mock_icd_generator import MockICDGeneratorOptions, MockICDOutputGenerator + from generators.vulkan_tools_helper_file_generator import HelperFileOutputGenerator, HelperFileOutputGeneratorOptions + from generators.vulkaninfo_generator import VulkanInfoGenerator, VulkanInfoGeneratorOptions # Temporary workaround for vkconventions python2 compatibility import abc abc.ABC = abc.ABCMeta('ABC', (object,), {}) From 225013f661549d9675cd4136a966a9f3e5109926 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Wed, 1 Oct 2025 12:58:38 -0500 Subject: [PATCH 2/3] scripts: Update codegen to use Vulkan-Object --- icd/generated/function_declarations.h | 1394 +++++------- icd/generated/function_definitions.h | 1225 +--------- scripts/generate_source.py | 295 ++- scripts/generators/mock_icd_generator.py | 581 ++--- .../vulkan_tools_helper_file_generator.py | 1327 ++--------- scripts/generators/vulkaninfo_generator.py | 1983 ++++++----------- vulkaninfo/generated/vulkaninfo.hpp | 269 ++- 7 files changed, 1825 insertions(+), 5249 deletions(-) diff --git a/icd/generated/function_declarations.h b/icd/generated/function_declarations.h index b81bf8166..c6710d0f4 100644 --- a/icd/generated/function_declarations.h +++ b/icd/generated/function_declarations.h @@ -19,9 +19,7 @@ ** */ - #pragma once - #include #include #include @@ -29,438 +27,510 @@ #include namespace vkmock { - // Map of instance extension name to version static const std::unordered_map instance_extension_map = { - {"VK_KHR_surface", 25}, - {"VK_KHR_display", 23}, - {"VK_KHR_xlib_surface", 6}, - {"VK_KHR_xcb_surface", 6}, - {"VK_KHR_wayland_surface", 6}, - {"VK_KHR_android_surface", 6}, - {"VK_KHR_win32_surface", 6}, - {"VK_EXT_debug_report", 10}, - {"VK_GGP_stream_descriptor_surface", 1}, - {"VK_NV_external_memory_capabilities", 1}, - {"VK_KHR_get_physical_device_properties2", 2}, - {"VK_EXT_validation_flags", 3}, - {"VK_NN_vi_surface", 1}, - {"VK_KHR_device_group_creation", 1}, - {"VK_KHR_external_memory_capabilities", 1}, - {"VK_KHR_external_semaphore_capabilities", 1}, - {"VK_EXT_direct_mode_display", 1}, - {"VK_EXT_acquire_xlib_display", 1}, - {"VK_EXT_display_surface_counter", 1}, - {"VK_EXT_swapchain_colorspace", 5}, - {"VK_KHR_external_fence_capabilities", 1}, - {"VK_KHR_get_surface_capabilities2", 1}, - {"VK_KHR_get_display_properties2", 1}, - {"VK_MVK_ios_surface", 3}, - {"VK_MVK_macos_surface", 3}, - {"VK_EXT_debug_utils", 2}, - {"VK_FUCHSIA_imagepipe_surface", 1}, - {"VK_EXT_metal_surface", 1}, - {"VK_KHR_surface_protected_capabilities", 1}, - {"VK_EXT_validation_features", 6}, - {"VK_EXT_headless_surface", 1}, - {"VK_EXT_surface_maintenance1", 1}, - {"VK_EXT_acquire_drm_display", 1}, - {"VK_EXT_directfb_surface", 1}, - {"VK_QNX_screen_surface", 1}, - {"VK_KHR_portability_enumeration", 1}, - {"VK_GOOGLE_surfaceless_query", 2}, - {"VK_LUNARG_direct_driver_loading", 1}, - {"VK_KHR_surface_maintenance1", 1}, - {"VK_EXT_layer_settings", 2}, - {"VK_NV_display_stereo", 1}, - {"VK_OHOS_surface", 1}, + {"VK_KHR_surface", VK_KHR_SURFACE_SPEC_VERSION}, + {"VK_KHR_display", VK_KHR_DISPLAY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_XLIB_KHR + {"VK_KHR_xlib_surface", VK_KHR_XLIB_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_XCB_KHR + {"VK_KHR_xcb_surface", VK_KHR_XCB_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_WAYLAND_KHR + {"VK_KHR_wayland_surface", VK_KHR_WAYLAND_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_ANDROID_KHR + {"VK_KHR_android_surface", VK_KHR_ANDROID_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_KHR_win32_surface", VK_KHR_WIN32_SURFACE_SPEC_VERSION}, +#endif + {"VK_KHR_get_physical_device_properties2", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION}, + {"VK_KHR_device_group_creation", VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION}, + {"VK_KHR_external_memory_capabilities", VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION}, + {"VK_KHR_external_semaphore_capabilities", VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION}, + {"VK_KHR_external_fence_capabilities", VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION}, + {"VK_KHR_get_surface_capabilities2", VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION}, + {"VK_KHR_get_display_properties2", VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION}, + {"VK_KHR_surface_protected_capabilities", VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION}, + {"VK_KHR_portability_enumeration", VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION}, + {"VK_KHR_surface_maintenance1", VK_KHR_SURFACE_MAINTENANCE_1_SPEC_VERSION}, + {"VK_EXT_debug_report", VK_EXT_DEBUG_REPORT_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_GGP + {"VK_GGP_stream_descriptor_surface", VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION}, +#endif + {"VK_NV_external_memory_capabilities", VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION}, + {"VK_EXT_validation_flags", VK_EXT_VALIDATION_FLAGS_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_VI_NN + {"VK_NN_vi_surface", VK_NN_VI_SURFACE_SPEC_VERSION}, +#endif + {"VK_EXT_direct_mode_display", VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT + {"VK_EXT_acquire_xlib_display", VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION}, +#endif + {"VK_EXT_display_surface_counter", VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION}, + {"VK_EXT_swapchain_colorspace", VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_IOS_MVK + {"VK_MVK_ios_surface", VK_MVK_IOS_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_MACOS_MVK + {"VK_MVK_macos_surface", VK_MVK_MACOS_SURFACE_SPEC_VERSION}, +#endif + {"VK_EXT_debug_utils", VK_EXT_DEBUG_UTILS_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_FUCHSIA + {"VK_FUCHSIA_imagepipe_surface", VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_METAL_EXT + {"VK_EXT_metal_surface", VK_EXT_METAL_SURFACE_SPEC_VERSION}, +#endif + {"VK_EXT_validation_features", VK_EXT_VALIDATION_FEATURES_SPEC_VERSION}, + {"VK_EXT_headless_surface", VK_EXT_HEADLESS_SURFACE_SPEC_VERSION}, + {"VK_EXT_surface_maintenance1", VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION}, + {"VK_EXT_acquire_drm_display", VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_DIRECTFB_EXT + {"VK_EXT_directfb_surface", VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_SCREEN_QNX + {"VK_QNX_screen_surface", VK_QNX_SCREEN_SURFACE_SPEC_VERSION}, +#endif + {"VK_GOOGLE_surfaceless_query", VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION}, + {"VK_LUNARG_direct_driver_loading", VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION}, + {"VK_EXT_layer_settings", VK_EXT_LAYER_SETTINGS_SPEC_VERSION}, + {"VK_NV_display_stereo", VK_NV_DISPLAY_STEREO_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_OHOS + {"VK_OHOS_surface", VK_OHOS_SURFACE_SPEC_VERSION}, +#endif }; // Map of device extension name to version static const std::unordered_map device_extension_map = { - {"VK_KHR_swapchain", 70}, - {"VK_KHR_display_swapchain", 10}, - {"VK_NV_glsl_shader", 1}, - {"VK_EXT_depth_range_unrestricted", 1}, - {"VK_KHR_sampler_mirror_clamp_to_edge", 3}, - {"VK_IMG_filter_cubic", 1}, - {"VK_AMD_rasterization_order", 1}, - {"VK_AMD_shader_trinary_minmax", 1}, - {"VK_AMD_shader_explicit_vertex_parameter", 1}, - {"VK_EXT_debug_marker", 4}, - {"VK_KHR_video_queue", 8}, - {"VK_KHR_video_decode_queue", 8}, - {"VK_AMD_gcn_shader", 1}, - {"VK_NV_dedicated_allocation", 1}, - {"VK_EXT_transform_feedback", 1}, - {"VK_NVX_binary_import", 2}, - {"VK_NVX_image_view_handle", 3}, - {"VK_AMD_draw_indirect_count", 2}, - {"VK_AMD_negative_viewport_height", 1}, - {"VK_AMD_gpu_shader_half_float", 2}, - {"VK_AMD_shader_ballot", 1}, - {"VK_KHR_video_encode_h264", 14}, - {"VK_KHR_video_encode_h265", 14}, - {"VK_KHR_video_decode_h264", 9}, - {"VK_AMD_texture_gather_bias_lod", 1}, - {"VK_AMD_shader_info", 1}, - {"VK_KHR_dynamic_rendering", 1}, - {"VK_AMD_shader_image_load_store_lod", 1}, - {"VK_NV_corner_sampled_image", 2}, - {"VK_KHR_multiview", 1}, - {"VK_IMG_format_pvrtc", 1}, - {"VK_NV_external_memory", 1}, - {"VK_NV_external_memory_win32", 1}, - {"VK_NV_win32_keyed_mutex", 2}, - {"VK_KHR_device_group", 4}, - {"VK_KHR_shader_draw_parameters", 1}, - {"VK_EXT_shader_subgroup_ballot", 1}, - {"VK_EXT_shader_subgroup_vote", 1}, - {"VK_EXT_texture_compression_astc_hdr", 1}, - {"VK_EXT_astc_decode_mode", 1}, - {"VK_EXT_pipeline_robustness", 1}, - {"VK_KHR_maintenance1", 2}, - {"VK_KHR_external_memory", 1}, - {"VK_KHR_external_memory_win32", 1}, - {"VK_KHR_external_memory_fd", 1}, - {"VK_KHR_win32_keyed_mutex", 1}, - {"VK_KHR_external_semaphore", 1}, - {"VK_KHR_external_semaphore_win32", 1}, - {"VK_KHR_external_semaphore_fd", 1}, - {"VK_KHR_push_descriptor", 2}, - {"VK_EXT_conditional_rendering", 2}, - {"VK_KHR_shader_float16_int8", 1}, - {"VK_KHR_16bit_storage", 1}, - {"VK_KHR_incremental_present", 2}, - {"VK_KHR_descriptor_update_template", 1}, - {"VK_NV_clip_space_w_scaling", 1}, - {"VK_EXT_display_control", 1}, - {"VK_GOOGLE_display_timing", 1}, - {"VK_NV_sample_mask_override_coverage", 1}, - {"VK_NV_geometry_shader_passthrough", 1}, - {"VK_NV_viewport_array2", 1}, - {"VK_NVX_multiview_per_view_attributes", 1}, - {"VK_NV_viewport_swizzle", 1}, - {"VK_EXT_discard_rectangles", 2}, - {"VK_EXT_conservative_rasterization", 1}, - {"VK_EXT_depth_clip_enable", 1}, - {"VK_EXT_hdr_metadata", 3}, - {"VK_KHR_imageless_framebuffer", 1}, - {"VK_KHR_create_renderpass2", 1}, - {"VK_IMG_relaxed_line_rasterization", 1}, - {"VK_KHR_shared_presentable_image", 1}, - {"VK_KHR_external_fence", 1}, - {"VK_KHR_external_fence_win32", 1}, - {"VK_KHR_external_fence_fd", 1}, - {"VK_KHR_performance_query", 1}, - {"VK_KHR_maintenance2", 1}, - {"VK_KHR_variable_pointers", 1}, - {"VK_EXT_external_memory_dma_buf", 1}, - {"VK_EXT_queue_family_foreign", 1}, - {"VK_KHR_dedicated_allocation", 3}, - {"VK_ANDROID_external_memory_android_hardware_buffer", 5}, - {"VK_EXT_sampler_filter_minmax", 2}, - {"VK_KHR_storage_buffer_storage_class", 1}, - {"VK_AMD_gpu_shader_int16", 2}, - {"VK_AMDX_shader_enqueue", 2}, - {"VK_AMD_mixed_attachment_samples", 1}, - {"VK_AMD_shader_fragment_mask", 1}, - {"VK_EXT_inline_uniform_block", 1}, - {"VK_EXT_shader_stencil_export", 1}, - {"VK_KHR_shader_bfloat16", 1}, - {"VK_EXT_sample_locations", 1}, - {"VK_KHR_relaxed_block_layout", 1}, - {"VK_KHR_get_memory_requirements2", 1}, - {"VK_KHR_image_format_list", 1}, - {"VK_EXT_blend_operation_advanced", 2}, - {"VK_NV_fragment_coverage_to_color", 1}, - {"VK_KHR_acceleration_structure", 13}, - {"VK_KHR_ray_tracing_pipeline", 1}, - {"VK_KHR_ray_query", 1}, - {"VK_NV_framebuffer_mixed_samples", 1}, - {"VK_NV_fill_rectangle", 1}, - {"VK_NV_shader_sm_builtins", 1}, - {"VK_EXT_post_depth_coverage", 1}, - {"VK_KHR_sampler_ycbcr_conversion", 14}, - {"VK_KHR_bind_memory2", 1}, - {"VK_EXT_image_drm_format_modifier", 2}, - {"VK_EXT_descriptor_indexing", 2}, - {"VK_EXT_shader_viewport_index_layer", 1}, - {"VK_NV_shading_rate_image", 3}, - {"VK_NV_ray_tracing", 3}, - {"VK_NV_representative_fragment_test", 2}, - {"VK_KHR_maintenance3", 1}, - {"VK_KHR_draw_indirect_count", 1}, - {"VK_EXT_filter_cubic", 3}, - {"VK_QCOM_render_pass_shader_resolve", 4}, - {"VK_EXT_global_priority", 2}, - {"VK_KHR_shader_subgroup_extended_types", 1}, - {"VK_KHR_8bit_storage", 1}, - {"VK_EXT_external_memory_host", 1}, - {"VK_AMD_buffer_marker", 1}, - {"VK_KHR_shader_atomic_int64", 1}, - {"VK_KHR_shader_clock", 1}, - {"VK_AMD_pipeline_compiler_control", 1}, - {"VK_EXT_calibrated_timestamps", 2}, - {"VK_AMD_shader_core_properties", 2}, - {"VK_KHR_video_decode_h265", 8}, - {"VK_KHR_global_priority", 1}, - {"VK_AMD_memory_overallocation_behavior", 1}, - {"VK_EXT_vertex_attribute_divisor", 3}, - {"VK_GGP_frame_token", 1}, - {"VK_EXT_pipeline_creation_feedback", 1}, - {"VK_KHR_driver_properties", 1}, - {"VK_KHR_shader_float_controls", 4}, - {"VK_NV_shader_subgroup_partitioned", 1}, - {"VK_KHR_depth_stencil_resolve", 1}, - {"VK_KHR_swapchain_mutable_format", 1}, - {"VK_NV_compute_shader_derivatives", 1}, - {"VK_NV_mesh_shader", 1}, - {"VK_NV_fragment_shader_barycentric", 1}, - {"VK_NV_shader_image_footprint", 2}, - {"VK_NV_scissor_exclusive", 2}, - {"VK_NV_device_diagnostic_checkpoints", 2}, - {"VK_KHR_timeline_semaphore", 2}, - {"VK_INTEL_shader_integer_functions2", 1}, - {"VK_INTEL_performance_query", 2}, - {"VK_KHR_vulkan_memory_model", 3}, - {"VK_EXT_pci_bus_info", 2}, - {"VK_AMD_display_native_hdr", 1}, - {"VK_KHR_shader_terminate_invocation", 1}, - {"VK_EXT_fragment_density_map", 2}, - {"VK_EXT_scalar_block_layout", 1}, - {"VK_GOOGLE_hlsl_functionality1", 1}, - {"VK_GOOGLE_decorate_string", 1}, - {"VK_EXT_subgroup_size_control", 2}, - {"VK_KHR_fragment_shading_rate", 2}, - {"VK_AMD_shader_core_properties2", 1}, - {"VK_AMD_device_coherent_memory", 1}, - {"VK_KHR_dynamic_rendering_local_read", 1}, - {"VK_EXT_shader_image_atomic_int64", 1}, - {"VK_KHR_shader_quad_control", 1}, - {"VK_KHR_spirv_1_4", 1}, - {"VK_EXT_memory_budget", 1}, - {"VK_EXT_memory_priority", 1}, - {"VK_NV_dedicated_allocation_image_aliasing", 1}, - {"VK_KHR_separate_depth_stencil_layouts", 1}, - {"VK_EXT_buffer_device_address", 2}, - {"VK_EXT_tooling_info", 1}, - {"VK_EXT_separate_stencil_usage", 1}, - {"VK_KHR_present_wait", 1}, - {"VK_NV_cooperative_matrix", 1}, - {"VK_NV_coverage_reduction_mode", 1}, - {"VK_EXT_fragment_shader_interlock", 1}, - {"VK_EXT_ycbcr_image_arrays", 1}, - {"VK_KHR_uniform_buffer_standard_layout", 1}, - {"VK_EXT_provoking_vertex", 1}, - {"VK_EXT_full_screen_exclusive", 4}, - {"VK_KHR_buffer_device_address", 1}, - {"VK_EXT_line_rasterization", 1}, - {"VK_EXT_shader_atomic_float", 1}, - {"VK_EXT_host_query_reset", 1}, - {"VK_EXT_index_type_uint8", 1}, - {"VK_EXT_extended_dynamic_state", 1}, - {"VK_KHR_deferred_host_operations", 4}, - {"VK_KHR_pipeline_executable_properties", 1}, - {"VK_EXT_host_image_copy", 1}, - {"VK_KHR_map_memory2", 1}, - {"VK_EXT_map_memory_placed", 1}, - {"VK_EXT_shader_atomic_float2", 1}, - {"VK_EXT_swapchain_maintenance1", 1}, - {"VK_EXT_shader_demote_to_helper_invocation", 1}, - {"VK_NV_device_generated_commands", 3}, - {"VK_NV_inherited_viewport_scissor", 1}, - {"VK_KHR_shader_integer_dot_product", 1}, - {"VK_EXT_texel_buffer_alignment", 1}, - {"VK_QCOM_render_pass_transform", 5}, - {"VK_EXT_depth_bias_control", 1}, - {"VK_EXT_device_memory_report", 2}, - {"VK_EXT_robustness2", 1}, - {"VK_EXT_custom_border_color", 12}, - {"VK_GOOGLE_user_type", 1}, - {"VK_KHR_pipeline_library", 1}, - {"VK_NV_present_barrier", 1}, - {"VK_KHR_shader_non_semantic_info", 1}, - {"VK_KHR_present_id", 1}, - {"VK_EXT_private_data", 1}, - {"VK_EXT_pipeline_creation_cache_control", 3}, - {"VK_KHR_video_encode_queue", 12}, - {"VK_NV_device_diagnostics_config", 2}, - {"VK_QCOM_render_pass_store_ops", 2}, - {"VK_NV_cuda_kernel_launch", 2}, - {"VK_QCOM_tile_shading", 2}, - {"VK_NV_low_latency", 1}, - {"VK_EXT_metal_objects", 2}, - {"VK_KHR_synchronization2", 1}, - {"VK_EXT_descriptor_buffer", 1}, - {"VK_EXT_graphics_pipeline_library", 1}, - {"VK_AMD_shader_early_and_late_fragment_tests", 1}, - {"VK_KHR_fragment_shader_barycentric", 1}, - {"VK_KHR_shader_subgroup_uniform_control_flow", 1}, - {"VK_KHR_zero_initialize_workgroup_memory", 1}, - {"VK_NV_fragment_shading_rate_enums", 1}, - {"VK_NV_ray_tracing_motion_blur", 1}, - {"VK_EXT_mesh_shader", 1}, - {"VK_EXT_ycbcr_2plane_444_formats", 1}, - {"VK_EXT_fragment_density_map2", 1}, - {"VK_QCOM_rotated_copy_commands", 2}, - {"VK_EXT_image_robustness", 1}, - {"VK_KHR_workgroup_memory_explicit_layout", 1}, - {"VK_KHR_copy_commands2", 1}, - {"VK_EXT_image_compression_control", 1}, - {"VK_EXT_attachment_feedback_loop_layout", 2}, - {"VK_EXT_4444_formats", 1}, - {"VK_EXT_device_fault", 2}, - {"VK_ARM_rasterization_order_attachment_access", 1}, - {"VK_EXT_rgba10x6_formats", 1}, - {"VK_NV_acquire_winrt_display", 1}, - {"VK_VALVE_mutable_descriptor_type", 1}, - {"VK_EXT_vertex_input_dynamic_state", 2}, - {"VK_EXT_physical_device_drm", 1}, - {"VK_EXT_device_address_binding_report", 1}, - {"VK_EXT_depth_clip_control", 1}, - {"VK_EXT_primitive_topology_list_restart", 1}, - {"VK_KHR_format_feature_flags2", 2}, - {"VK_EXT_present_mode_fifo_latest_ready", 1}, - {"VK_FUCHSIA_external_memory", 1}, - {"VK_FUCHSIA_external_semaphore", 1}, - {"VK_FUCHSIA_buffer_collection", 2}, - {"VK_HUAWEI_subpass_shading", 3}, - {"VK_HUAWEI_invocation_mask", 1}, - {"VK_NV_external_memory_rdma", 1}, - {"VK_EXT_pipeline_properties", 1}, - {"VK_EXT_frame_boundary", 1}, - {"VK_EXT_multisampled_render_to_single_sampled", 1}, - {"VK_EXT_extended_dynamic_state2", 1}, - {"VK_EXT_color_write_enable", 1}, - {"VK_EXT_primitives_generated_query", 1}, - {"VK_KHR_ray_tracing_maintenance1", 1}, - {"VK_KHR_shader_untyped_pointers", 1}, - {"VK_EXT_global_priority_query", 1}, - {"VK_VALVE_video_encode_rgb_conversion", 1}, - {"VK_EXT_image_view_min_lod", 1}, - {"VK_EXT_multi_draw", 1}, - {"VK_EXT_image_2d_view_of_3d", 1}, - {"VK_EXT_shader_tile_image", 1}, - {"VK_EXT_opacity_micromap", 2}, - {"VK_NV_displacement_micromap", 2}, - {"VK_EXT_load_store_op_none", 1}, - {"VK_HUAWEI_cluster_culling_shader", 3}, - {"VK_EXT_border_color_swizzle", 1}, - {"VK_EXT_pageable_device_local_memory", 1}, - {"VK_KHR_maintenance4", 2}, - {"VK_ARM_shader_core_properties", 1}, - {"VK_KHR_shader_subgroup_rotate", 2}, - {"VK_ARM_scheduling_controls", 1}, - {"VK_EXT_image_sliced_view_of_3d", 1}, - {"VK_VALVE_descriptor_set_host_mapping", 1}, - {"VK_EXT_depth_clamp_zero_one", 1}, - {"VK_EXT_non_seamless_cube_map", 1}, - {"VK_ARM_render_pass_striped", 1}, - {"VK_QCOM_fragment_density_map_offset", 3}, - {"VK_NV_copy_memory_indirect", 1}, - {"VK_NV_memory_decompression", 1}, - {"VK_NV_device_generated_commands_compute", 2}, - {"VK_NV_ray_tracing_linear_swept_spheres", 1}, - {"VK_NV_linear_color_attachment", 1}, - {"VK_KHR_shader_maximal_reconvergence", 1}, - {"VK_EXT_image_compression_control_swapchain", 1}, - {"VK_QCOM_image_processing", 1}, - {"VK_EXT_nested_command_buffer", 1}, - {"VK_EXT_external_memory_acquire_unmodified", 1}, - {"VK_EXT_extended_dynamic_state3", 2}, - {"VK_EXT_subpass_merge_feedback", 2}, - {"VK_ARM_tensors", 1}, - {"VK_EXT_shader_module_identifier", 1}, - {"VK_EXT_rasterization_order_attachment_access", 1}, - {"VK_NV_optical_flow", 1}, - {"VK_EXT_legacy_dithering", 2}, - {"VK_EXT_pipeline_protected_access", 1}, - {"VK_ANDROID_external_format_resolve", 1}, - {"VK_KHR_maintenance5", 1}, - {"VK_AMD_anti_lag", 1}, - {"VK_AMDX_dense_geometry_format", 1}, - {"VK_KHR_present_id2", 1}, - {"VK_KHR_present_wait2", 1}, - {"VK_KHR_ray_tracing_position_fetch", 1}, - {"VK_EXT_shader_object", 1}, - {"VK_KHR_pipeline_binary", 1}, - {"VK_QCOM_tile_properties", 1}, - {"VK_SEC_amigo_profiling", 1}, - {"VK_KHR_swapchain_maintenance1", 1}, - {"VK_QCOM_multiview_per_view_viewports", 1}, - {"VK_NV_ray_tracing_invocation_reorder", 1}, - {"VK_NV_cooperative_vector", 4}, - {"VK_NV_extended_sparse_address_space", 1}, - {"VK_EXT_mutable_descriptor_type", 1}, - {"VK_EXT_legacy_vertex_attributes", 1}, - {"VK_ARM_shader_core_builtins", 2}, - {"VK_EXT_pipeline_library_group_handles", 1}, - {"VK_EXT_dynamic_rendering_unused_attachments", 1}, - {"VK_NV_low_latency2", 2}, - {"VK_KHR_cooperative_matrix", 2}, - {"VK_ARM_data_graph", 1}, - {"VK_QCOM_multiview_per_view_render_areas", 1}, - {"VK_KHR_compute_shader_derivatives", 1}, - {"VK_KHR_video_decode_av1", 1}, - {"VK_KHR_video_encode_av1", 1}, - {"VK_KHR_video_decode_vp9", 1}, - {"VK_KHR_video_maintenance1", 1}, - {"VK_NV_per_stage_descriptor_set", 1}, - {"VK_QCOM_image_processing2", 1}, - {"VK_QCOM_filter_cubic_weights", 1}, - {"VK_QCOM_ycbcr_degamma", 1}, - {"VK_QCOM_filter_cubic_clamp", 1}, - {"VK_EXT_attachment_feedback_loop_dynamic_state", 1}, - {"VK_KHR_vertex_attribute_divisor", 1}, - {"VK_KHR_load_store_op_none", 1}, - {"VK_KHR_unified_image_layouts", 1}, - {"VK_KHR_shader_float_controls2", 1}, - {"VK_QNX_external_memory_screen_buffer", 1}, - {"VK_MSFT_layered_driver", 1}, - {"VK_KHR_index_type_uint8", 1}, - {"VK_KHR_line_rasterization", 1}, - {"VK_KHR_calibrated_timestamps", 1}, - {"VK_KHR_shader_expect_assume", 1}, - {"VK_KHR_maintenance6", 1}, - {"VK_NV_descriptor_pool_overallocation", 1}, - {"VK_QCOM_tile_memory_heap", 1}, - {"VK_KHR_copy_memory_indirect", 1}, - {"VK_KHR_video_encode_intra_refresh", 1}, - {"VK_KHR_video_encode_quantization_map", 2}, - {"VK_NV_raw_access_chains", 1}, - {"VK_NV_external_compute_queue", 1}, - {"VK_KHR_shader_relaxed_extended_instruction", 1}, - {"VK_NV_command_buffer_inheritance", 1}, - {"VK_KHR_maintenance7", 1}, - {"VK_NV_shader_atomic_float16_vector", 1}, - {"VK_EXT_shader_replicated_composites", 1}, - {"VK_EXT_shader_float8", 1}, - {"VK_NV_ray_tracing_validation", 1}, - {"VK_NV_cluster_acceleration_structure", 4}, - {"VK_NV_partitioned_acceleration_structure", 1}, - {"VK_EXT_device_generated_commands", 1}, - {"VK_KHR_maintenance8", 1}, - {"VK_MESA_image_alignment_control", 1}, - {"VK_EXT_depth_clamp_control", 1}, - {"VK_KHR_maintenance9", 1}, - {"VK_KHR_video_maintenance2", 1}, - {"VK_HUAWEI_hdr_vivid", 1}, - {"VK_NV_cooperative_matrix2", 1}, - {"VK_ARM_pipeline_opacity_micromap", 1}, - {"VK_EXT_external_memory_metal", 1}, - {"VK_KHR_depth_clamp_zero_one", 1}, - {"VK_EXT_vertex_attribute_robustness", 1}, - {"VK_ARM_format_pack", 1}, - {"VK_VALVE_fragment_density_map_layered", 1}, - {"VK_KHR_robustness2", 1}, - {"VK_NV_present_metering", 1}, - {"VK_EXT_fragment_density_map_offset", 1}, - {"VK_EXT_zero_initialize_device_memory", 1}, - {"VK_KHR_present_mode_fifo_latest_ready", 1}, - {"VK_SEC_pipeline_cache_incremental_mode", 1}, + {"VK_KHR_swapchain", VK_KHR_SWAPCHAIN_SPEC_VERSION}, + {"VK_KHR_display_swapchain", VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION}, + {"VK_KHR_sampler_mirror_clamp_to_edge", VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION}, + {"VK_KHR_video_queue", VK_KHR_VIDEO_QUEUE_SPEC_VERSION}, + {"VK_KHR_video_decode_queue", VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION}, + {"VK_KHR_video_encode_h264", VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION}, + {"VK_KHR_video_encode_h265", VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION}, + {"VK_KHR_video_decode_h264", VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION}, + {"VK_KHR_dynamic_rendering", VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION}, + {"VK_KHR_multiview", VK_KHR_MULTIVIEW_SPEC_VERSION}, + {"VK_KHR_device_group", VK_KHR_DEVICE_GROUP_SPEC_VERSION}, + {"VK_KHR_shader_draw_parameters", VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION}, + {"VK_KHR_maintenance1", VK_KHR_MAINTENANCE_1_SPEC_VERSION}, + {"VK_KHR_external_memory", VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_KHR_external_memory_win32", VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION}, +#endif + {"VK_KHR_external_memory_fd", VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_KHR_win32_keyed_mutex", VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION}, +#endif + {"VK_KHR_external_semaphore", VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_KHR_external_semaphore_win32", VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION}, +#endif + {"VK_KHR_external_semaphore_fd", VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION}, + {"VK_KHR_push_descriptor", VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION}, + {"VK_KHR_shader_float16_int8", VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION}, + {"VK_KHR_16bit_storage", VK_KHR_16BIT_STORAGE_SPEC_VERSION}, + {"VK_KHR_incremental_present", VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION}, + {"VK_KHR_descriptor_update_template", VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION}, + {"VK_KHR_imageless_framebuffer", VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION}, + {"VK_KHR_create_renderpass2", VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION}, + {"VK_KHR_shared_presentable_image", VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION}, + {"VK_KHR_external_fence", VK_KHR_EXTERNAL_FENCE_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_KHR_external_fence_win32", VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION}, +#endif + {"VK_KHR_external_fence_fd", VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION}, + {"VK_KHR_performance_query", VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION}, + {"VK_KHR_maintenance2", VK_KHR_MAINTENANCE_2_SPEC_VERSION}, + {"VK_KHR_variable_pointers", VK_KHR_VARIABLE_POINTERS_SPEC_VERSION}, + {"VK_KHR_dedicated_allocation", VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION}, + {"VK_KHR_storage_buffer_storage_class", VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION}, + {"VK_KHR_shader_bfloat16", VK_KHR_SHADER_BFLOAT16_SPEC_VERSION}, + {"VK_KHR_relaxed_block_layout", VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION}, + {"VK_KHR_get_memory_requirements2", VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION}, + {"VK_KHR_image_format_list", VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION}, + {"VK_KHR_sampler_ycbcr_conversion", VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION}, + {"VK_KHR_bind_memory2", VK_KHR_BIND_MEMORY_2_SPEC_VERSION}, + {"VK_KHR_maintenance3", VK_KHR_MAINTENANCE_3_SPEC_VERSION}, + {"VK_KHR_draw_indirect_count", VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION}, + {"VK_KHR_shader_subgroup_extended_types", VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION}, + {"VK_KHR_8bit_storage", VK_KHR_8BIT_STORAGE_SPEC_VERSION}, + {"VK_KHR_shader_atomic_int64", VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION}, + {"VK_KHR_shader_clock", VK_KHR_SHADER_CLOCK_SPEC_VERSION}, + {"VK_KHR_video_decode_h265", VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION}, + {"VK_KHR_global_priority", VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION}, + {"VK_KHR_driver_properties", VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION}, + {"VK_KHR_shader_float_controls", VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION}, + {"VK_KHR_depth_stencil_resolve", VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION}, + {"VK_KHR_swapchain_mutable_format", VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION}, + {"VK_KHR_timeline_semaphore", VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION}, + {"VK_KHR_vulkan_memory_model", VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION}, + {"VK_KHR_shader_terminate_invocation", VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION}, + {"VK_KHR_fragment_shading_rate", VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION}, + {"VK_KHR_dynamic_rendering_local_read", VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_SPEC_VERSION}, + {"VK_KHR_shader_quad_control", VK_KHR_SHADER_QUAD_CONTROL_SPEC_VERSION}, + {"VK_KHR_spirv_1_4", VK_KHR_SPIRV_1_4_SPEC_VERSION}, + {"VK_KHR_separate_depth_stencil_layouts", VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION}, + {"VK_KHR_present_wait", VK_KHR_PRESENT_WAIT_SPEC_VERSION}, + {"VK_KHR_uniform_buffer_standard_layout", VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION}, + {"VK_KHR_buffer_device_address", VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION}, + {"VK_KHR_deferred_host_operations", VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION}, + {"VK_KHR_pipeline_executable_properties", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION}, + {"VK_KHR_map_memory2", VK_KHR_MAP_MEMORY_2_SPEC_VERSION}, + {"VK_KHR_shader_integer_dot_product", VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION}, + {"VK_KHR_pipeline_library", VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION}, + {"VK_KHR_shader_non_semantic_info", VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION}, + {"VK_KHR_present_id", VK_KHR_PRESENT_ID_SPEC_VERSION}, + {"VK_KHR_video_encode_queue", VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION}, + {"VK_KHR_synchronization2", VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION}, + {"VK_KHR_fragment_shader_barycentric", VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION}, + {"VK_KHR_shader_subgroup_uniform_control_flow", VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION}, + {"VK_KHR_zero_initialize_workgroup_memory", VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION}, + {"VK_KHR_workgroup_memory_explicit_layout", VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION}, + {"VK_KHR_copy_commands2", VK_KHR_COPY_COMMANDS_2_SPEC_VERSION}, + {"VK_KHR_format_feature_flags2", VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION}, + {"VK_KHR_ray_tracing_maintenance1", VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION}, + {"VK_KHR_shader_untyped_pointers", VK_KHR_SHADER_UNTYPED_POINTERS_SPEC_VERSION}, + {"VK_KHR_maintenance4", VK_KHR_MAINTENANCE_4_SPEC_VERSION}, + {"VK_KHR_shader_subgroup_rotate", VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION}, + {"VK_KHR_shader_maximal_reconvergence", VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_SPEC_VERSION}, + {"VK_KHR_maintenance5", VK_KHR_MAINTENANCE_5_SPEC_VERSION}, + {"VK_KHR_present_id2", VK_KHR_PRESENT_ID_2_SPEC_VERSION}, + {"VK_KHR_present_wait2", VK_KHR_PRESENT_WAIT_2_SPEC_VERSION}, + {"VK_KHR_ray_tracing_position_fetch", VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION}, + {"VK_KHR_pipeline_binary", VK_KHR_PIPELINE_BINARY_SPEC_VERSION}, + {"VK_KHR_swapchain_maintenance1", VK_KHR_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION}, + {"VK_KHR_cooperative_matrix", VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION}, + {"VK_KHR_compute_shader_derivatives", VK_KHR_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION}, + {"VK_KHR_video_decode_av1", VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION}, + {"VK_KHR_video_encode_av1", VK_KHR_VIDEO_ENCODE_AV1_SPEC_VERSION}, + {"VK_KHR_video_decode_vp9", VK_KHR_VIDEO_DECODE_VP9_SPEC_VERSION}, + {"VK_KHR_video_maintenance1", VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION}, + {"VK_KHR_vertex_attribute_divisor", VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION}, + {"VK_KHR_load_store_op_none", VK_KHR_LOAD_STORE_OP_NONE_SPEC_VERSION}, + {"VK_KHR_unified_image_layouts", VK_KHR_UNIFIED_IMAGE_LAYOUTS_SPEC_VERSION}, + {"VK_KHR_shader_float_controls2", VK_KHR_SHADER_FLOAT_CONTROLS_2_SPEC_VERSION}, + {"VK_KHR_index_type_uint8", VK_KHR_INDEX_TYPE_UINT8_SPEC_VERSION}, + {"VK_KHR_line_rasterization", VK_KHR_LINE_RASTERIZATION_SPEC_VERSION}, + {"VK_KHR_calibrated_timestamps", VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION}, + {"VK_KHR_shader_expect_assume", VK_KHR_SHADER_EXPECT_ASSUME_SPEC_VERSION}, + {"VK_KHR_maintenance6", VK_KHR_MAINTENANCE_6_SPEC_VERSION}, + {"VK_KHR_copy_memory_indirect", VK_KHR_COPY_MEMORY_INDIRECT_SPEC_VERSION}, + {"VK_KHR_video_encode_intra_refresh", VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_SPEC_VERSION}, + {"VK_KHR_video_encode_quantization_map", VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION}, + {"VK_KHR_shader_relaxed_extended_instruction", VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION}, + {"VK_KHR_maintenance7", VK_KHR_MAINTENANCE_7_SPEC_VERSION}, + {"VK_KHR_maintenance8", VK_KHR_MAINTENANCE_8_SPEC_VERSION}, + {"VK_KHR_maintenance9", VK_KHR_MAINTENANCE_9_SPEC_VERSION}, + {"VK_KHR_video_maintenance2", VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION}, + {"VK_KHR_depth_clamp_zero_one", VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION}, + {"VK_KHR_robustness2", VK_KHR_ROBUSTNESS_2_SPEC_VERSION}, + {"VK_KHR_present_mode_fifo_latest_ready", VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION}, + {"VK_NV_glsl_shader", VK_NV_GLSL_SHADER_SPEC_VERSION}, + {"VK_EXT_depth_range_unrestricted", VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION}, + {"VK_IMG_filter_cubic", VK_IMG_FILTER_CUBIC_SPEC_VERSION}, + {"VK_AMD_rasterization_order", VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION}, + {"VK_AMD_shader_trinary_minmax", VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION}, + {"VK_AMD_shader_explicit_vertex_parameter", VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION}, + {"VK_EXT_debug_marker", VK_EXT_DEBUG_MARKER_SPEC_VERSION}, + {"VK_AMD_gcn_shader", VK_AMD_GCN_SHADER_SPEC_VERSION}, + {"VK_NV_dedicated_allocation", VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION}, + {"VK_EXT_transform_feedback", VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION}, + {"VK_NVX_binary_import", VK_NVX_BINARY_IMPORT_SPEC_VERSION}, + {"VK_NVX_image_view_handle", VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION}, + {"VK_AMD_draw_indirect_count", VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION}, + {"VK_AMD_negative_viewport_height", VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION}, + {"VK_AMD_gpu_shader_half_float", VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION}, + {"VK_AMD_shader_ballot", VK_AMD_SHADER_BALLOT_SPEC_VERSION}, + {"VK_AMD_texture_gather_bias_lod", VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION}, + {"VK_AMD_shader_info", VK_AMD_SHADER_INFO_SPEC_VERSION}, + {"VK_AMD_shader_image_load_store_lod", VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION}, + {"VK_NV_corner_sampled_image", VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION}, + {"VK_IMG_format_pvrtc", VK_IMG_FORMAT_PVRTC_SPEC_VERSION}, + {"VK_NV_external_memory", VK_NV_EXTERNAL_MEMORY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_NV_external_memory_win32", VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_NV_win32_keyed_mutex", VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION}, +#endif + {"VK_EXT_shader_subgroup_ballot", VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION}, + {"VK_EXT_shader_subgroup_vote", VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION}, + {"VK_EXT_texture_compression_astc_hdr", VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION}, + {"VK_EXT_astc_decode_mode", VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION}, + {"VK_EXT_pipeline_robustness", VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION}, + {"VK_EXT_conditional_rendering", VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION}, + {"VK_NV_clip_space_w_scaling", VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION}, + {"VK_EXT_display_control", VK_EXT_DISPLAY_CONTROL_SPEC_VERSION}, + {"VK_GOOGLE_display_timing", VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION}, + {"VK_NV_sample_mask_override_coverage", VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION}, + {"VK_NV_geometry_shader_passthrough", VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION}, + {"VK_NV_viewport_array2", VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION}, + {"VK_NVX_multiview_per_view_attributes", VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION}, + {"VK_NV_viewport_swizzle", VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION}, + {"VK_EXT_discard_rectangles", VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION}, + {"VK_EXT_conservative_rasterization", VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION}, + {"VK_EXT_depth_clip_enable", VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION}, + {"VK_EXT_hdr_metadata", VK_EXT_HDR_METADATA_SPEC_VERSION}, + {"VK_IMG_relaxed_line_rasterization", VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION}, + {"VK_EXT_external_memory_dma_buf", VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION}, + {"VK_EXT_queue_family_foreign", VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_ANDROID_KHR + {"VK_ANDROID_external_memory_android_hardware_buffer", VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION}, +#endif + {"VK_EXT_sampler_filter_minmax", VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION}, + {"VK_AMD_gpu_shader_int16", VK_AMD_GPU_SHADER_INT16_SPEC_VERSION}, +#ifdef VK_ENABLE_BETA_EXTENSIONS + {"VK_AMDX_shader_enqueue", VK_AMDX_SHADER_ENQUEUE_SPEC_VERSION}, +#endif + {"VK_AMD_mixed_attachment_samples", VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION}, + {"VK_AMD_shader_fragment_mask", VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION}, + {"VK_EXT_inline_uniform_block", VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION}, + {"VK_EXT_shader_stencil_export", VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION}, + {"VK_EXT_sample_locations", VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION}, + {"VK_EXT_blend_operation_advanced", VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION}, + {"VK_NV_fragment_coverage_to_color", VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION}, + {"VK_NV_framebuffer_mixed_samples", VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION}, + {"VK_NV_fill_rectangle", VK_NV_FILL_RECTANGLE_SPEC_VERSION}, + {"VK_NV_shader_sm_builtins", VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION}, + {"VK_EXT_post_depth_coverage", VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION}, + {"VK_EXT_image_drm_format_modifier", VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION}, + {"VK_EXT_descriptor_indexing", VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION}, + {"VK_EXT_shader_viewport_index_layer", VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION}, + {"VK_NV_shading_rate_image", VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION}, + {"VK_NV_ray_tracing", VK_NV_RAY_TRACING_SPEC_VERSION}, + {"VK_NV_representative_fragment_test", VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION}, + {"VK_EXT_filter_cubic", VK_EXT_FILTER_CUBIC_SPEC_VERSION}, + {"VK_QCOM_render_pass_shader_resolve", VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION}, + {"VK_EXT_global_priority", VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION}, + {"VK_EXT_external_memory_host", VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION}, + {"VK_AMD_buffer_marker", VK_AMD_BUFFER_MARKER_SPEC_VERSION}, + {"VK_AMD_pipeline_compiler_control", VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION}, + {"VK_EXT_calibrated_timestamps", VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION}, + {"VK_AMD_shader_core_properties", VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION}, + {"VK_AMD_memory_overallocation_behavior", VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION}, + {"VK_EXT_vertex_attribute_divisor", VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_GGP + {"VK_GGP_frame_token", VK_GGP_FRAME_TOKEN_SPEC_VERSION}, +#endif + {"VK_EXT_pipeline_creation_feedback", VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION}, + {"VK_NV_shader_subgroup_partitioned", VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION}, + {"VK_NV_compute_shader_derivatives", VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION}, + {"VK_NV_mesh_shader", VK_NV_MESH_SHADER_SPEC_VERSION}, + {"VK_NV_fragment_shader_barycentric", VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION}, + {"VK_NV_shader_image_footprint", VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION}, + {"VK_NV_scissor_exclusive", VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION}, + {"VK_NV_device_diagnostic_checkpoints", VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION}, + {"VK_INTEL_shader_integer_functions2", VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION}, + {"VK_INTEL_performance_query", VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION}, + {"VK_EXT_pci_bus_info", VK_EXT_PCI_BUS_INFO_SPEC_VERSION}, + {"VK_AMD_display_native_hdr", VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION}, + {"VK_EXT_fragment_density_map", VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION}, + {"VK_EXT_scalar_block_layout", VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION}, + {"VK_GOOGLE_hlsl_functionality1", VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION}, + {"VK_GOOGLE_decorate_string", VK_GOOGLE_DECORATE_STRING_SPEC_VERSION}, + {"VK_EXT_subgroup_size_control", VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION}, + {"VK_AMD_shader_core_properties2", VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION}, + {"VK_AMD_device_coherent_memory", VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION}, + {"VK_EXT_shader_image_atomic_int64", VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION}, + {"VK_EXT_memory_budget", VK_EXT_MEMORY_BUDGET_SPEC_VERSION}, + {"VK_EXT_memory_priority", VK_EXT_MEMORY_PRIORITY_SPEC_VERSION}, + {"VK_NV_dedicated_allocation_image_aliasing", VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION}, + {"VK_EXT_buffer_device_address", VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION}, + {"VK_EXT_tooling_info", VK_EXT_TOOLING_INFO_SPEC_VERSION}, + {"VK_EXT_separate_stencil_usage", VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION}, + {"VK_NV_cooperative_matrix", VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION}, + {"VK_NV_coverage_reduction_mode", VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION}, + {"VK_EXT_fragment_shader_interlock", VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION}, + {"VK_EXT_ycbcr_image_arrays", VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION}, + {"VK_EXT_provoking_vertex", VK_EXT_PROVOKING_VERTEX_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_EXT_full_screen_exclusive", VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION}, +#endif + {"VK_EXT_line_rasterization", VK_EXT_LINE_RASTERIZATION_SPEC_VERSION}, + {"VK_EXT_shader_atomic_float", VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION}, + {"VK_EXT_host_query_reset", VK_EXT_HOST_QUERY_RESET_SPEC_VERSION}, + {"VK_EXT_index_type_uint8", VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION}, + {"VK_EXT_extended_dynamic_state", VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION}, + {"VK_EXT_host_image_copy", VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION}, + {"VK_EXT_map_memory_placed", VK_EXT_MAP_MEMORY_PLACED_SPEC_VERSION}, + {"VK_EXT_shader_atomic_float2", VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION}, + {"VK_EXT_swapchain_maintenance1", VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION}, + {"VK_EXT_shader_demote_to_helper_invocation", VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION}, + {"VK_NV_device_generated_commands", VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION}, + {"VK_NV_inherited_viewport_scissor", VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION}, + {"VK_EXT_texel_buffer_alignment", VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION}, + {"VK_QCOM_render_pass_transform", VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION}, + {"VK_EXT_depth_bias_control", VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION}, + {"VK_EXT_device_memory_report", VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION}, + {"VK_EXT_robustness2", VK_EXT_ROBUSTNESS_2_SPEC_VERSION}, + {"VK_EXT_custom_border_color", VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION}, + {"VK_GOOGLE_user_type", VK_GOOGLE_USER_TYPE_SPEC_VERSION}, + {"VK_NV_present_barrier", VK_NV_PRESENT_BARRIER_SPEC_VERSION}, + {"VK_EXT_private_data", VK_EXT_PRIVATE_DATA_SPEC_VERSION}, + {"VK_EXT_pipeline_creation_cache_control", VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION}, + {"VK_NV_device_diagnostics_config", VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION}, + {"VK_QCOM_render_pass_store_ops", VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION}, +#ifdef VK_ENABLE_BETA_EXTENSIONS + {"VK_NV_cuda_kernel_launch", VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION}, +#endif + {"VK_QCOM_tile_shading", VK_QCOM_TILE_SHADING_SPEC_VERSION}, + {"VK_NV_low_latency", VK_NV_LOW_LATENCY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_METAL_EXT + {"VK_EXT_metal_objects", VK_EXT_METAL_OBJECTS_SPEC_VERSION}, +#endif + {"VK_EXT_descriptor_buffer", VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION}, + {"VK_EXT_graphics_pipeline_library", VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION}, + {"VK_AMD_shader_early_and_late_fragment_tests", VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION}, + {"VK_NV_fragment_shading_rate_enums", VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION}, + {"VK_NV_ray_tracing_motion_blur", VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION}, + {"VK_EXT_ycbcr_2plane_444_formats", VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION}, + {"VK_EXT_fragment_density_map2", VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION}, + {"VK_QCOM_rotated_copy_commands", VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION}, + {"VK_EXT_image_robustness", VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION}, + {"VK_EXT_image_compression_control", VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION}, + {"VK_EXT_attachment_feedback_loop_layout", VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION}, + {"VK_EXT_4444_formats", VK_EXT_4444_FORMATS_SPEC_VERSION}, + {"VK_EXT_device_fault", VK_EXT_DEVICE_FAULT_SPEC_VERSION}, + {"VK_ARM_rasterization_order_attachment_access", VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION}, + {"VK_EXT_rgba10x6_formats", VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_WIN32_KHR + {"VK_NV_acquire_winrt_display", VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION}, +#endif + {"VK_VALVE_mutable_descriptor_type", VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION}, + {"VK_EXT_vertex_input_dynamic_state", VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION}, + {"VK_EXT_physical_device_drm", VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION}, + {"VK_EXT_device_address_binding_report", VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION}, + {"VK_EXT_depth_clip_control", VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION}, + {"VK_EXT_primitive_topology_list_restart", VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION}, + {"VK_EXT_present_mode_fifo_latest_ready", VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_FUCHSIA + {"VK_FUCHSIA_external_memory", VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_FUCHSIA + {"VK_FUCHSIA_external_semaphore", VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION}, +#endif +#ifdef VK_USE_PLATFORM_FUCHSIA + {"VK_FUCHSIA_buffer_collection", VK_FUCHSIA_BUFFER_COLLECTION_SPEC_VERSION}, +#endif + {"VK_HUAWEI_subpass_shading", VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION}, + {"VK_HUAWEI_invocation_mask", VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION}, + {"VK_NV_external_memory_rdma", VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION}, + {"VK_EXT_pipeline_properties", VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION}, + {"VK_EXT_frame_boundary", VK_EXT_FRAME_BOUNDARY_SPEC_VERSION}, + {"VK_EXT_multisampled_render_to_single_sampled", VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION}, + {"VK_EXT_extended_dynamic_state2", VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION}, + {"VK_EXT_color_write_enable", VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION}, + {"VK_EXT_primitives_generated_query", VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION}, + {"VK_EXT_global_priority_query", VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION}, + {"VK_VALVE_video_encode_rgb_conversion", VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_SPEC_VERSION}, + {"VK_EXT_image_view_min_lod", VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION}, + {"VK_EXT_multi_draw", VK_EXT_MULTI_DRAW_SPEC_VERSION}, + {"VK_EXT_image_2d_view_of_3d", VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION}, + {"VK_EXT_shader_tile_image", VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION}, + {"VK_EXT_opacity_micromap", VK_EXT_OPACITY_MICROMAP_SPEC_VERSION}, +#ifdef VK_ENABLE_BETA_EXTENSIONS + {"VK_NV_displacement_micromap", VK_NV_DISPLACEMENT_MICROMAP_SPEC_VERSION}, +#endif + {"VK_EXT_load_store_op_none", VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION}, + {"VK_HUAWEI_cluster_culling_shader", VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION}, + {"VK_EXT_border_color_swizzle", VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION}, + {"VK_EXT_pageable_device_local_memory", VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION}, + {"VK_ARM_shader_core_properties", VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION}, + {"VK_ARM_scheduling_controls", VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION}, + {"VK_EXT_image_sliced_view_of_3d", VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION}, + {"VK_VALVE_descriptor_set_host_mapping", VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION}, + {"VK_EXT_depth_clamp_zero_one", VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION}, + {"VK_EXT_non_seamless_cube_map", VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION}, + {"VK_ARM_render_pass_striped", VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION}, + {"VK_QCOM_fragment_density_map_offset", VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION}, + {"VK_NV_copy_memory_indirect", VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION}, + {"VK_NV_memory_decompression", VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION}, + {"VK_NV_device_generated_commands_compute", VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION}, + {"VK_NV_ray_tracing_linear_swept_spheres", VK_NV_RAY_TRACING_LINEAR_SWEPT_SPHERES_SPEC_VERSION}, + {"VK_NV_linear_color_attachment", VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION}, + {"VK_EXT_image_compression_control_swapchain", VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION}, + {"VK_QCOM_image_processing", VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION}, + {"VK_EXT_nested_command_buffer", VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION}, + {"VK_EXT_external_memory_acquire_unmodified", VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION}, + {"VK_EXT_extended_dynamic_state3", VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION}, + {"VK_EXT_subpass_merge_feedback", VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION}, + {"VK_ARM_tensors", VK_ARM_TENSORS_SPEC_VERSION}, + {"VK_EXT_shader_module_identifier", VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION}, + {"VK_EXT_rasterization_order_attachment_access", VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION}, + {"VK_NV_optical_flow", VK_NV_OPTICAL_FLOW_SPEC_VERSION}, + {"VK_EXT_legacy_dithering", VK_EXT_LEGACY_DITHERING_SPEC_VERSION}, + {"VK_EXT_pipeline_protected_access", VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_ANDROID_KHR + {"VK_ANDROID_external_format_resolve", VK_ANDROID_EXTERNAL_FORMAT_RESOLVE_SPEC_VERSION}, +#endif + {"VK_AMD_anti_lag", VK_AMD_ANTI_LAG_SPEC_VERSION}, +#ifdef VK_ENABLE_BETA_EXTENSIONS + {"VK_AMDX_dense_geometry_format", VK_AMDX_DENSE_GEOMETRY_FORMAT_SPEC_VERSION}, +#endif + {"VK_EXT_shader_object", VK_EXT_SHADER_OBJECT_SPEC_VERSION}, + {"VK_QCOM_tile_properties", VK_QCOM_TILE_PROPERTIES_SPEC_VERSION}, + {"VK_SEC_amigo_profiling", VK_SEC_AMIGO_PROFILING_SPEC_VERSION}, + {"VK_QCOM_multiview_per_view_viewports", VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION}, + {"VK_NV_ray_tracing_invocation_reorder", VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION}, + {"VK_NV_cooperative_vector", VK_NV_COOPERATIVE_VECTOR_SPEC_VERSION}, + {"VK_NV_extended_sparse_address_space", VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION}, + {"VK_EXT_mutable_descriptor_type", VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION}, + {"VK_EXT_legacy_vertex_attributes", VK_EXT_LEGACY_VERTEX_ATTRIBUTES_SPEC_VERSION}, + {"VK_ARM_shader_core_builtins", VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION}, + {"VK_EXT_pipeline_library_group_handles", VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION}, + {"VK_EXT_dynamic_rendering_unused_attachments", VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION}, + {"VK_NV_low_latency2", VK_NV_LOW_LATENCY_2_SPEC_VERSION}, + {"VK_ARM_data_graph", VK_ARM_DATA_GRAPH_SPEC_VERSION}, + {"VK_QCOM_multiview_per_view_render_areas", VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION}, + {"VK_NV_per_stage_descriptor_set", VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION}, + {"VK_QCOM_image_processing2", VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION}, + {"VK_QCOM_filter_cubic_weights", VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION}, + {"VK_QCOM_ycbcr_degamma", VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION}, + {"VK_QCOM_filter_cubic_clamp", VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION}, + {"VK_EXT_attachment_feedback_loop_dynamic_state", VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_SCREEN_QNX + {"VK_QNX_external_memory_screen_buffer", VK_QNX_EXTERNAL_MEMORY_SCREEN_BUFFER_SPEC_VERSION}, +#endif + {"VK_MSFT_layered_driver", VK_MSFT_LAYERED_DRIVER_SPEC_VERSION}, + {"VK_NV_descriptor_pool_overallocation", VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION}, + {"VK_QCOM_tile_memory_heap", VK_QCOM_TILE_MEMORY_HEAP_SPEC_VERSION}, + {"VK_NV_raw_access_chains", VK_NV_RAW_ACCESS_CHAINS_SPEC_VERSION}, + {"VK_NV_external_compute_queue", VK_NV_EXTERNAL_COMPUTE_QUEUE_SPEC_VERSION}, + {"VK_NV_command_buffer_inheritance", VK_NV_COMMAND_BUFFER_INHERITANCE_SPEC_VERSION}, + {"VK_NV_shader_atomic_float16_vector", VK_NV_SHADER_ATOMIC_FLOAT16_VECTOR_SPEC_VERSION}, + {"VK_EXT_shader_replicated_composites", VK_EXT_SHADER_REPLICATED_COMPOSITES_SPEC_VERSION}, + {"VK_EXT_shader_float8", VK_EXT_SHADER_FLOAT8_SPEC_VERSION}, + {"VK_NV_ray_tracing_validation", VK_NV_RAY_TRACING_VALIDATION_SPEC_VERSION}, + {"VK_NV_cluster_acceleration_structure", VK_NV_CLUSTER_ACCELERATION_STRUCTURE_SPEC_VERSION}, + {"VK_NV_partitioned_acceleration_structure", VK_NV_PARTITIONED_ACCELERATION_STRUCTURE_SPEC_VERSION}, + {"VK_EXT_device_generated_commands", VK_EXT_DEVICE_GENERATED_COMMANDS_SPEC_VERSION}, + {"VK_MESA_image_alignment_control", VK_MESA_IMAGE_ALIGNMENT_CONTROL_SPEC_VERSION}, + {"VK_EXT_depth_clamp_control", VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION}, + {"VK_HUAWEI_hdr_vivid", VK_HUAWEI_HDR_VIVID_SPEC_VERSION}, + {"VK_NV_cooperative_matrix2", VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION}, + {"VK_ARM_pipeline_opacity_micromap", VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_METAL_EXT + {"VK_EXT_external_memory_metal", VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION}, +#endif + {"VK_EXT_vertex_attribute_robustness", VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION}, + {"VK_ARM_format_pack", VK_ARM_FORMAT_PACK_SPEC_VERSION}, + {"VK_VALVE_fragment_density_map_layered", VK_VALVE_FRAGMENT_DENSITY_MAP_LAYERED_SPEC_VERSION}, +#ifdef VK_ENABLE_BETA_EXTENSIONS + {"VK_NV_present_metering", VK_NV_PRESENT_METERING_SPEC_VERSION}, +#endif + {"VK_EXT_fragment_density_map_offset", VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION}, + {"VK_EXT_zero_initialize_device_memory", VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_SPEC_VERSION}, + {"VK_SEC_pipeline_cache_incremental_mode", VK_SEC_PIPELINE_CACHE_INCREMENTAL_MODE_SPEC_VERSION}, + {"VK_KHR_acceleration_structure", VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION}, + {"VK_KHR_ray_tracing_pipeline", VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION}, + {"VK_KHR_ray_query", VK_KHR_RAY_QUERY_SPEC_VERSION}, + {"VK_EXT_mesh_shader", VK_EXT_MESH_SHADER_SPEC_VERSION}, }; - static VKAPI_ATTR VkResult VKAPI_CALL CreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, @@ -1258,7 +1328,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands( uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); - static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceVersion( uint32_t* pApiVersion); @@ -1404,7 +1473,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupport( const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCount( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1475,7 +1543,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddress( VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolProperties( VkPhysicalDevice physicalDevice, uint32_t* pToolCount, @@ -1656,7 +1723,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirements( uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStipple( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, @@ -1750,7 +1816,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayout( uint32_t transitionCount, const VkHostImageLayoutTransitionInfo* pTransitions); - static VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, @@ -1779,7 +1844,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModesKHR( uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes); - static VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, @@ -1829,7 +1893,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImage2KHR( const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex); - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -1871,14 +1934,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayPlaneSurfaceKHR( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - static VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); - #ifdef VK_USE_PLATFORM_XLIB_KHR static VKAPI_ATTR VkResult VKAPI_CALL CreateXlibSurfaceKHR( @@ -1895,7 +1956,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXlibPresentationSupportKH #endif /* VK_USE_PLATFORM_XLIB_KHR */ #ifdef VK_USE_PLATFORM_XCB_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, @@ -1910,7 +1970,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXcbPresentationSupportKHR #endif /* VK_USE_PLATFORM_XCB_KHR */ #ifdef VK_USE_PLATFORM_WAYLAND_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, @@ -1924,7 +1983,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWaylandPresentationSuppor #endif /* VK_USE_PLATFORM_WAYLAND_KHR */ #ifdef VK_USE_PLATFORM_ANDROID_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, @@ -1933,7 +1991,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR( #endif /* VK_USE_PLATFORM_ANDROID_KHR */ #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, @@ -1944,9 +2001,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWin32PresentationSupportK VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex); #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR( VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, @@ -2009,15 +2063,10 @@ static VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo); - static VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR( VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo); - - - - static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR( VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo); @@ -2025,8 +2074,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR( static VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR( VkCommandBuffer commandBuffer); - - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures); @@ -2060,7 +2107,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2K uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties); - static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, @@ -2081,26 +2127,20 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR( uint32_t groupCountY, uint32_t groupCountZ); - - static VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); - static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties); - - #ifdef VK_USE_PLATFORM_WIN32_KHR static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR( @@ -2114,8 +2154,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR( HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, @@ -2127,16 +2165,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR( int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties); -#ifdef VK_USE_PLATFORM_WIN32_KHR -#endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties); - - #ifdef VK_USE_PLATFORM_WIN32_KHR static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR( @@ -2148,8 +2180,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR( const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); @@ -2159,7 +2189,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR( const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd); - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -2175,10 +2204,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR( uint32_t set, const void* pData); - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, @@ -2196,8 +2221,6 @@ static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR( VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData); - - static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, @@ -2218,18 +2241,14 @@ static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo); - static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain); - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties); - - #ifdef VK_USE_PLATFORM_WIN32_KHR static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR( @@ -2241,8 +2260,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR( const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle); #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo); @@ -2252,7 +2269,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR( const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd); - static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -2272,8 +2288,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR( static VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR( VkDevice device); - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, @@ -2285,8 +2299,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormats2KHR( uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats); - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -2308,11 +2320,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilities2KHR( const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities); - - - - - static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, @@ -2329,8 +2336,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR( uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - - static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, @@ -2342,7 +2347,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR( VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator); - static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, @@ -2353,16 +2357,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR( uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos); -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -2381,17 +2380,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR( uint32_t maxDrawCount, uint32_t stride); - - - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR( VkDevice device, VkSemaphore semaphore, @@ -2406,9 +2394,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR( VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo); - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR( VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, @@ -2419,7 +2404,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR( const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); - static VKAPI_ATTR void VKAPI_CALL CmdSetRenderingAttachmentLocationsKHR( VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo); @@ -2428,19 +2412,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetRenderingInputAttachmentIndicesKHR( VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo); - - - - - static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR( VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout); - - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR( VkDevice device, const VkBufferDeviceAddressInfo* pInfo); @@ -2453,7 +2430,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR( VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); - static VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR( VkDevice device, const VkAllocationCallbacks* pAllocator, @@ -2476,7 +2452,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR( VkDevice device, VkDeferredOperationKHR operation); - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR( VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, @@ -2495,7 +2470,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentatio uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); - static VKAPI_ATTR VkResult VKAPI_CALL MapMemory2KHR( VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, @@ -2505,11 +2479,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL UnmapMemory2KHR( VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo); - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, @@ -2526,7 +2495,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR( VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo); - static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, @@ -2559,11 +2527,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR( const VkSubmitInfo2* pSubmits, VkFence fence); - - - - - static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR( VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo); @@ -2588,15 +2551,10 @@ static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR( VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo); - - static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirect2KHR( VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress); - - - static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR( VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, @@ -2613,9 +2571,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR( uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); - - - static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2KHR( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -2639,15 +2594,11 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2KHR( const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout); - - static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresent2KHR( VkDevice device, VkSwapchainKHR swapchain, const VkPresentWait2InfoKHR* pPresentWait2Info); - - static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineBinariesKHR( VkDevice device, const VkPipelineBinaryCreateInfoKHR* pCreateInfo, @@ -2676,35 +2627,20 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleaseCapturedPipelineDataKHR( const VkReleaseCapturedPipelineDataInfoKHR* pInfo, const VkAllocationCallbacks* pAllocator); - - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesKHR( VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesKHR* pProperties); - - - - - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleKHR( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsKHR( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, @@ -2717,8 +2653,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsKHR( uint64_t* pTimestamps, uint64_t* pMaxDeviation); - - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets2KHR( VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo); @@ -2743,7 +2677,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplers2EXT( VkCommandBuffer commandBuffer, const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo); - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo); @@ -2752,17 +2685,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo); - - - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, @@ -2784,13 +2706,6 @@ static VKAPI_ATTR void VKAPI_CALL DebugReportMessageEXT( const char* pLayerPrefix, const char* pMessage); - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo); @@ -2810,9 +2725,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); - - - static VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, @@ -2857,7 +2769,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT( uint32_t counterOffset, uint32_t vertexStride); - static VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX( VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, @@ -2884,7 +2795,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX( VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo); - static VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX( VkDevice device, const VkImageViewHandleInfoNVX* pInfo); @@ -2898,7 +2808,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX( VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -2917,11 +2826,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD( uint32_t maxDrawCount, uint32_t stride); - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD( VkDevice device, VkPipeline pipeline, @@ -2929,8 +2833,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD( VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo); - - #ifdef VK_USE_PLATFORM_GGP static VKAPI_ATTR VkResult VKAPI_CALL CreateStreamDescriptorSurfaceGGP( @@ -2939,10 +2841,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateStreamDescriptorSurfaceGGP( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #endif /* VK_USE_PLATFORM_GGP */ - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, VkFormat format, @@ -2952,8 +2850,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatProper VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); - - #ifdef VK_USE_PLATFORM_WIN32_KHR static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV( @@ -2963,25 +2859,13 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV( HANDLE* pHandle); #endif /* VK_USE_PLATFORM_WIN32_KHR */ -#ifdef VK_USE_PLATFORM_WIN32_KHR -#endif /* VK_USE_PLATFORM_WIN32_KHR */ - - #ifdef VK_USE_PLATFORM_VI_NN - static VKAPI_ATTR VkResult VKAPI_CALL CreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #endif /* VK_USE_PLATFORM_VI_NN */ - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); @@ -2989,18 +2873,15 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT( static VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer); - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings); - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display); - #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT static VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT( @@ -3014,14 +2895,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT( RROutput rrOutput, VkDisplayKHR* pDisplay); #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */ - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities); - static VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, @@ -3046,7 +2924,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT( VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue); - static VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, @@ -3058,12 +2935,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE( uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings); - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, @@ -3078,17 +2949,11 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleModeEXT( VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode); - - - - static VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata); - - #ifdef VK_USE_PLATFORM_IOS_MVK static VKAPI_ATTR VkResult VKAPI_CALL CreateIOSSurfaceMVK( @@ -3099,17 +2964,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateIOSSurfaceMVK( #endif /* VK_USE_PLATFORM_IOS_MVK */ #ifdef VK_USE_PLATFORM_MACOS_MVK - static VKAPI_ATTR VkResult VKAPI_CALL CreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #endif /* VK_USE_PLATFORM_MACOS_MVK */ - - - - static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo); @@ -3156,7 +3016,6 @@ static VKAPI_ATTR void VKAPI_CALL SubmitDebugUtilsMessageEXT( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); - #ifdef VK_USE_PLATFORM_ANDROID_KHR static VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID( @@ -3170,10 +3029,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID( struct AHardwareBuffer** pBuffer); #endif /* VK_USE_PLATFORM_ANDROID_KHR */ - - #ifdef VK_ENABLE_BETA_EXTENSIONS - static VKAPI_ATTR VkResult VKAPI_CALL CreateExecutionGraphPipelinesAMDX( VkDevice device, VkPipelineCache pipelineCache, @@ -3217,12 +3073,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectCountAMDX( VkDeviceSize scratchSize, VkDeviceAddress countInfo); #endif /* VK_ENABLE_BETA_EXTENSIONS */ - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo); @@ -3232,19 +3082,11 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT( VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties); - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); - static VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, @@ -3268,9 +3110,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT( size_t* pDataSize, void* pData); - - - static VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, VkImageView imageView, @@ -3288,7 +3127,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV( uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); - static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV( VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, @@ -3387,18 +3225,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV( VkPipeline pipeline, uint32_t shader); - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); - static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, @@ -3413,8 +3245,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD( VkDeviceSize dstOffset, uint32_t marker); - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, @@ -3427,16 +3257,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT( uint64_t* pTimestamps, uint64_t* pMaxDeviation); - - - -#ifdef VK_USE_PLATFORM_GGP -#endif /* VK_USE_PLATFORM_GGP */ - - - - - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, uint32_t taskCount, @@ -3458,9 +3278,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV( uint32_t maxDrawCount, uint32_t stride); - - - static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorEnableNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, @@ -3473,7 +3290,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV( uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); - static VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker); @@ -3488,8 +3304,6 @@ static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV( uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); - - static VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL( VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); @@ -3527,13 +3341,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL( VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue); - - static VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD( VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable); - #ifdef VK_USE_PLATFORM_FUCHSIA static VKAPI_ATTR VkResult VKAPI_CALL CreateImagePipeSurfaceFUCHSIA( @@ -3544,53 +3355,30 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateImagePipeSurfaceFUCHSIA( #endif /* VK_USE_PLATFORM_FUCHSIA */ #ifdef VK_USE_PLATFORM_METAL_EXT - static VKAPI_ATTR VkResult VKAPI_CALL CreateMetalSurfaceEXT( VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #endif /* VK_USE_PLATFORM_METAL_EXT */ - - - - - - - - - - - - - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT( VkDevice device, const VkBufferDeviceAddressInfo* pInfo); - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT( VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties); - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties); - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations); - - - - #ifdef VK_USE_PLATFORM_WIN32_KHR static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT( @@ -3612,30 +3400,23 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT( const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes); #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL CreateHeadlessSurfaceEXT( VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); - - static VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); - - static VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode); @@ -3695,7 +3476,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT( VkStencilOp depthFailOp, VkCompareOp compareOp); - static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImageEXT( VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo); @@ -3719,16 +3499,10 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2EXT( const VkImageSubresource2* pSubresource, VkSubresourceLayout2* pLayout); - - - - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesEXT( VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo); - - static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV( VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, @@ -3760,16 +3534,10 @@ static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV( VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator); - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias2EXT( VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo); - - static VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT( VkPhysicalDevice physicalDevice, int32_t drmFd, @@ -3781,11 +3549,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT( uint32_t connectorId, VkDisplayKHR* display); - - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT( VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, @@ -3810,10 +3573,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT( uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData); - - - - #ifdef VK_ENABLE_BETA_EXTENSIONS static VKAPI_ATTR VkResult VKAPI_CALL CreateCudaModuleNV( @@ -3848,8 +3607,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCudaLaunchKernelNV( VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo); #endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR void VKAPI_CALL CmdDispatchTileQCOM( VkCommandBuffer commandBuffer, const VkDispatchTileInfoQCOM* pDispatchTileInfo); @@ -3861,16 +3618,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginPerTileExecutionQCOM( static VKAPI_ATTR void VKAPI_CALL CmdEndPerTileExecutionQCOM( VkCommandBuffer commandBuffer, const VkPerTileEndInfoQCOM* pPerTileEndInfo); - - #ifdef VK_USE_PLATFORM_METAL_EXT static VKAPI_ATTR void VKAPI_CALL ExportMetalObjectsEXT( VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo); #endif /* VK_USE_PLATFORM_METAL_EXT */ - - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSizeEXT( VkDevice device, VkDescriptorSetLayout layout, @@ -3933,30 +3686,15 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureOpaqueCaptureDescr const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData); - - - static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV( VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceFaultInfoEXT( VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo); - - - #ifdef VK_USE_PLATFORM_WIN32_KHR static VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV( @@ -3970,7 +3708,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV( #endif /* VK_USE_PLATFORM_WIN32_KHR */ #ifdef VK_USE_PLATFORM_DIRECTFB_EXT - static VKAPI_ATTR VkResult VKAPI_CALL CreateDirectFBSurfaceEXT( VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, @@ -3982,21 +3719,12 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceDirectFBPresentationSuppo uint32_t queueFamilyIndex, IDirectFB* dfb); #endif /* VK_USE_PLATFORM_DIRECTFB_EXT */ - - - static VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT( VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions); - - - - - - #ifdef VK_USE_PLATFORM_FUCHSIA static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA( @@ -4009,9 +3737,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA( VkExternalMemoryHandleTypeFlagBits handleType, zx_handle_t zirconHandle, VkMemoryZirconHandlePropertiesFUCHSIA* pMemoryZirconHandleProperties); -#endif /* VK_USE_PLATFORM_FUCHSIA */ - -#ifdef VK_USE_PLATFORM_FUCHSIA static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA( VkDevice device, @@ -4021,9 +3746,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA( VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, zx_handle_t* pZirconHandle); -#endif /* VK_USE_PLATFORM_FUCHSIA */ - -#ifdef VK_USE_PLATFORM_FUCHSIA static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA( VkDevice device, @@ -4051,8 +3773,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA( VkBufferCollectionFUCHSIA collection, VkBufferCollectionPropertiesFUCHSIA* pProperties); #endif /* VK_USE_PLATFORM_FUCHSIA */ - - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( VkDevice device, VkRenderPass renderpass, @@ -4061,27 +3781,21 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUA static VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI( VkCommandBuffer commandBuffer); - static VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout); - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV( VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress); - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelinePropertiesEXT( VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties); - - - static VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT( VkCommandBuffer commandBuffer, uint32_t patchControlPoints); @@ -4101,7 +3815,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT( static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT( VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable); - #ifdef VK_USE_PLATFORM_SCREEN_QNX static VKAPI_ATTR VkResult VKAPI_CALL CreateScreenSurfaceQNX( @@ -4115,18 +3828,11 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceScreenPresentationSupport uint32_t queueFamilyIndex, struct _screen_window* window); #endif /* VK_USE_PLATFORM_SCREEN_QNX */ - - static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteEnableEXT( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables); - - - - - static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT( VkCommandBuffer commandBuffer, uint32_t drawCount, @@ -4144,9 +3850,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT( uint32_t stride, const int32_t* pVertexOffset); - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateMicromapEXT( VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo, @@ -4224,11 +3927,6 @@ static VKAPI_ATTR void VKAPI_CALL GetMicromapBuildSizesEXT( const VkMicromapBuildInfoEXT* pBuildInfo, VkMicromapBuildSizesInfoEXT* pSizeInfo); -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - - static VKAPI_ATTR void VKAPI_CALL CmdDrawClusterHUAWEI( VkCommandBuffer commandBuffer, uint32_t groupCountX, @@ -4240,17 +3938,11 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawClusterIndirectHUAWEI( VkBuffer buffer, VkDeviceSize offset); - - static VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT( VkDevice device, VkDeviceMemory memory, float priority); - - - - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutHostMappingInfoVALVE( VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, @@ -4261,11 +3953,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetHostMappingVALVE( VkDescriptorSet descriptorSet, void** ppData); - - - - - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectNV( VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, @@ -4281,7 +3968,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectNV( VkImageLayout dstImageLayout, const VkImageSubresourceLayers* pImageSubresources); - static VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryNV( VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, @@ -4293,7 +3979,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryIndirectCountNV( VkDeviceAddress indirectCommandsCountAddress, uint32_t stride); - static VKAPI_ATTR void VKAPI_CALL GetPipelineIndirectMemoryRequirementsNV( VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, @@ -4308,14 +3993,6 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetPipelineIndirectDeviceAddressNV( VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo); - - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthClampEnable); @@ -4452,9 +4129,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageReductionModeNV( VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode); - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateTensorARM( VkDevice device, const VkTensorCreateInfoARM* pCreateInfo, @@ -4511,7 +4185,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetTensorViewOpaqueCaptureDescriptorDataAR const VkTensorViewCaptureDescriptorDataInfoARM* pInfo, void* pData); - static VKAPI_ATTR void VKAPI_CALL GetShaderModuleIdentifierEXT( VkDevice device, VkShaderModule shaderModule, @@ -4522,8 +4195,6 @@ static VKAPI_ATTR void VKAPI_CALL GetShaderModuleCreateInfoIdentifierEXT( const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModuleIdentifierEXT* pIdentifier); - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceOpticalFlowImageFormatsNV( VkPhysicalDevice physicalDevice, const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, @@ -4553,20 +4224,10 @@ static VKAPI_ATTR void VKAPI_CALL CmdOpticalFlowExecuteNV( VkOpticalFlowSessionNV session, const VkOpticalFlowExecuteInfoNV* pExecuteInfo); - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR -#endif /* VK_USE_PLATFORM_ANDROID_KHR */ - - static VKAPI_ATTR void VKAPI_CALL AntiLagUpdateAMD( VkDevice device, const VkAntiLagDataAMD* pData); -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR VkResult VKAPI_CALL CreateShadersEXT( VkDevice device, uint32_t createInfoCount, @@ -4596,7 +4257,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampRangeEXT( VkDepthClampModeEXT depthClampMode, const VkDepthClampRangeEXT* pDepthClampRange); - static VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM( VkDevice device, VkFramebuffer framebuffer, @@ -4608,10 +4268,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM( const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties); - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeVectorPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -4626,14 +4282,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdConvertCooperativeVectorMatrixNV( uint32_t infoCount, const VkConvertCooperativeVectorMatrixInfoNV* pInfos); - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV( VkDevice device, VkSwapchainKHR swapchain, @@ -4658,7 +4306,6 @@ static VKAPI_ATTR void VKAPI_CALL QueueNotifyOutOfBandNV( VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo); - static VKAPI_ATTR VkResult VKAPI_CALL CreateDataGraphPipelinesARM( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -4723,17 +4370,9 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyDataGraphProcessin const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, VkQueueFamilyDataGraphProcessingEnginePropertiesARM* pQueueFamilyDataGraphProcessingEngineProperties); - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetAttachmentFeedbackLoopEnableEXT( VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask); - #ifdef VK_USE_PLATFORM_SCREEN_QNX static VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX( @@ -4741,17 +4380,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX( const struct _screen_buffer* buffer, VkScreenBufferPropertiesQNX* pProperties); #endif /* VK_USE_PLATFORM_SCREEN_QNX */ - - - - static VKAPI_ATTR void VKAPI_CALL CmdBindTileMemoryQCOM( VkCommandBuffer commandBuffer, const VkTileMemoryBindInfoQCOM* pTileMemoryBindInfo); - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateExternalComputeQueueNV( VkDevice device, const VkExternalComputeQueueCreateInfoNV* pCreateInfo, @@ -4768,12 +4400,6 @@ static VKAPI_ATTR void VKAPI_CALL GetExternalComputeQueueDataNV( VkExternalComputeQueueDataParamsNV* params, void* pData); - - - - - - static VKAPI_ATTR void VKAPI_CALL GetClusterAccelerationStructureBuildSizesNV( VkDevice device, const VkClusterAccelerationStructureInputInfoNV* pInfo, @@ -4783,7 +4409,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBuildClusterAccelerationStructureIndirectNV VkCommandBuffer commandBuffer, const VkClusterAccelerationStructureCommandsInfoNV* pCommandInfos); - static VKAPI_ATTR void VKAPI_CALL GetPartitionedAccelerationStructuresBuildSizesNV( VkDevice device, const VkPartitionedAccelerationStructureInstancesInputNV* pInfo, @@ -4793,7 +4418,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBuildPartitionedAccelerationStructuresNV( VkCommandBuffer commandBuffer, const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo); - static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsEXT( VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, @@ -4842,9 +4466,6 @@ static VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetShaderEXT( VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); - - - #ifdef VK_USE_PLATFORM_OHOS static VKAPI_ATTR VkResult VKAPI_CALL CreateSurfaceOHOS( @@ -4853,15 +4474,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSurfaceOHOS( const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface); #endif /* VK_USE_PLATFORM_OHOS */ - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties); - - #ifdef VK_USE_PLATFORM_METAL_EXT static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT( @@ -4875,21 +4491,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandlePropertiesEXT( const void* pHandle, VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties); #endif /* VK_USE_PLATFORM_METAL_EXT */ - - - - -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR void VKAPI_CALL CmdEndRendering2EXT( VkCommandBuffer commandBuffer, const VkRenderingEndInfoEXT* pRenderingEndInfo); - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR( VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, @@ -4982,7 +4587,6 @@ static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR( const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); - static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR( VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, @@ -5028,8 +4632,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR( VkCommandBuffer commandBuffer, uint32_t pipelineStackSize); - - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksEXT( VkCommandBuffer commandBuffer, uint32_t groupCountX, @@ -5051,7 +4653,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountEXT( VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride); - // Map of all APIs to be intercepted by this layer static const std::unordered_map name_to_funcptr_map = { {"vkCreateInstance", (void*)CreateInstance}, @@ -5945,3 +5546,4 @@ static const std::unordered_map name_to_funcptr_map = { } // namespace vkmock + diff --git a/icd/generated/function_definitions.h b/icd/generated/function_definitions.h index ff50c81dc..6f3a76e67 100644 --- a/icd/generated/function_definitions.h +++ b/icd/generated/function_definitions.h @@ -20,19 +20,14 @@ */ #pragma once - #include "mock_icd.h" #include "function_declarations.h" - namespace vkmock { - - static VKAPI_ATTR VkResult VKAPI_CALL CreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance) { - // TODO: If loader ver <=4 ICD must fail with VK_ERROR_INCOMPATIBLE_DRIVER for all vkCreateInstance calls with // apiVersion set to > Vulkan 1.0 because the loader is still at interface version <= 4. Otherwise, the // ICD should behave as normal. @@ -45,12 +40,10 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateInstance( // TODO: If emulating specific device caps, will need to add intelligence here return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyInstance( VkInstance instance, const VkAllocationCallbacks* pAllocator) { - if (instance) { for (const auto physical_device : physical_device_map.at(instance)) { display_map.erase(physical_device); @@ -60,7 +53,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyInstance( DestroyDispObjHandle((void*)instance); } } - static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, @@ -77,7 +69,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDevices( } return result_code; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) @@ -86,7 +77,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures( VkBool32 *bool_array = &pFeatures->robustBufferAccess; SetBoolArrayTrue(bool_array, num_bools); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, @@ -121,7 +111,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties( } } } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, @@ -146,7 +135,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) @@ -162,7 +150,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties( pProperties->limits = SetLimits(&pProperties->limits); pProperties->sparseProperties = { VK_TRUE, VK_TRUE, VK_TRUE, VK_TRUE, VK_TRUE }; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, @@ -179,7 +166,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties( GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, nullptr); } } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) @@ -209,12 +195,10 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties( pMemoryProperties->memoryHeaps[1].flags = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT; pMemoryProperties->memoryHeaps[1].size = 8000000000; } - static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr( VkInstance instance, const char* pName) { - if (!negotiate_loader_icd_interface_called) { loader_interface_version = 0; } @@ -225,32 +209,26 @@ static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr( // Mock should intercept all functions so if we get here just return null return nullptr; } - static VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr( VkDevice device, const char* pName) { - return GetInstanceProcAddr(nullptr, pName); } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice) { - *pDevice = (VkDevice)CreateDispObjHandle(); // TODO: If emulating specific device caps, will need to add intelligence here return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDevice( VkDevice device, const VkAllocationCallbacks* pAllocator) { - unique_lock_t lock(global_lock); // First destroy sub-device objects // Destroy Queues @@ -275,13 +253,11 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDevice( DestroyDispObjHandle((void*)device); // TODO: If emulating specific device caps, will need to add intelligence here } - static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { - // If requesting number of extensions, return that if (!pLayerName) { if (!pProperties) { @@ -305,14 +281,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceExtensionProperties( // If requesting extension properties, fill in data struct for number of extensions return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL EnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties) { - // If requesting number of extensions, return that if (!pLayerName) { if (!pProperties) { @@ -337,24 +311,19 @@ static VKAPI_ATTR VkResult VKAPI_CALL EnumerateDeviceExtensionProperties( // If requesting extension properties, fill in data struct for number of extensions return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties) { - return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL EnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties) { - return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, @@ -371,7 +340,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue( // TODO: If emulating specific device caps, will need to add intelligence here return; } - static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit( VkQueue queue, uint32_t submitCount, @@ -390,21 +358,18 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL QueueWaitIdle( VkQueue queue) { //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL DeviceWaitIdle( VkDevice device) { //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AllocateMemory( VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, @@ -416,7 +381,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AllocateMemory( *pMemory = (VkDeviceMemory)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL FreeMemory( VkDevice device, VkDeviceMemory memory, @@ -427,7 +391,6 @@ static VKAPI_ATTR void VKAPI_CALL FreeMemory( unique_lock_t lock(global_lock); allocated_memory_size_map.erase(memory); } - static VKAPI_ATTR VkResult VKAPI_CALL MapMemory( VkDevice device, VkDeviceMemory memory, @@ -448,7 +411,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL MapMemory( *ppData = map_addr; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL UnmapMemory( VkDevice device, VkDeviceMemory memory) @@ -459,7 +421,6 @@ static VKAPI_ATTR void VKAPI_CALL UnmapMemory( } mapped_memory_map.erase(memory); } - static VKAPI_ATTR VkResult VKAPI_CALL FlushMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, @@ -468,7 +429,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL FlushMappedMemoryRanges( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL InvalidateMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, @@ -477,7 +437,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL InvalidateMappedMemoryRanges( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, @@ -485,7 +444,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceMemoryCommitment( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory( VkDevice device, VkBuffer buffer, @@ -495,7 +453,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory( VkDevice device, VkImage image, @@ -505,7 +462,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, @@ -525,7 +481,6 @@ static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements( } } } - static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements( VkDevice device, VkImage image, @@ -545,7 +500,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements( // Here we hard-code that the memory type at index 3 doesn't support this image. pMemoryRequirements->memoryTypeBits = 0xFFFF & ~(0x1 << 3); } - static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements( VkDevice device, VkImage image, @@ -567,7 +521,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements( } } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, @@ -604,7 +557,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties( } } } - static VKAPI_ATTR VkResult VKAPI_CALL QueueBindSparse( VkQueue queue, uint32_t bindInfoCount, @@ -614,7 +566,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueueBindSparse( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, @@ -625,7 +576,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateFence( *pFence = (VkFence)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyFence( VkDevice device, VkFence fence, @@ -633,7 +583,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyFence( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL ResetFences( VkDevice device, uint32_t fenceCount, @@ -642,7 +591,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ResetFences( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetFenceStatus( VkDevice device, VkFence fence) @@ -650,7 +598,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetFenceStatus( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL WaitForFences( VkDevice device, uint32_t fenceCount, @@ -661,7 +608,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL WaitForFences( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, @@ -672,7 +618,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSemaphore( *pSemaphore = (VkSemaphore)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroySemaphore( VkDevice device, VkSemaphore semaphore, @@ -680,7 +625,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySemaphore( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, @@ -691,7 +635,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateEvent( *pEvent = (VkEvent)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyEvent( VkDevice device, VkEvent event, @@ -699,7 +642,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyEvent( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetEventStatus( VkDevice device, VkEvent event) @@ -707,7 +649,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetEventStatus( //Not a CREATE or DESTROY function return VK_EVENT_SET; } - static VKAPI_ATTR VkResult VKAPI_CALL SetEvent( VkDevice device, VkEvent event) @@ -715,7 +656,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetEvent( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL ResetEvent( VkDevice device, VkEvent event) @@ -723,7 +663,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ResetEvent( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, @@ -734,7 +673,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateQueryPool( *pQueryPool = (VkQueryPool)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyQueryPool( VkDevice device, VkQueryPool queryPool, @@ -742,7 +680,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyQueryPool( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetQueryPoolResults( VkDevice device, VkQueryPool queryPool, @@ -756,7 +693,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetQueryPoolResults( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, @@ -777,7 +713,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateBuffer( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyBuffer( VkDevice device, VkBuffer buffer, @@ -786,7 +721,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyBuffer( unique_lock_t lock(global_lock); buffer_map[device].erase(buffer); } - static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, @@ -797,7 +731,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferView( *pView = (VkBufferView)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyBufferView( VkDevice device, VkBufferView bufferView, @@ -805,7 +738,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyBufferView( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, @@ -817,7 +749,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateImage( image_memory_size_map[device][*pImage] = GetImageSizeFromCreateInfo(pCreateInfo); return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyImage( VkDevice device, VkImage image, @@ -826,7 +757,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyImage( unique_lock_t lock(global_lock); image_memory_size_map[device].erase(image); } - static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout( VkDevice device, VkImage image, @@ -836,7 +766,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout( // Need safe values. Callers are computing memory offsets from pLayout, with no return code to flag failure. *pLayout = VkSubresourceLayout(); // Default constructor zero values. } - static VKAPI_ATTR VkResult VKAPI_CALL CreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, @@ -847,7 +776,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateImageView( *pView = (VkImageView)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyImageView( VkDevice device, VkImageView imageView, @@ -855,7 +783,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyImageView( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, @@ -866,7 +793,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateShaderModule( *pShaderModule = (VkShaderModule)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyShaderModule( VkDevice device, VkShaderModule shaderModule, @@ -874,7 +800,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyShaderModule( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineCache( VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, @@ -885,7 +810,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineCache( *pPipelineCache = (VkPipelineCache)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, @@ -893,7 +817,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPipelineCache( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineCacheData( VkDevice device, VkPipelineCache pipelineCache, @@ -903,7 +826,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineCacheData( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL MergePipelineCaches( VkDevice device, VkPipelineCache dstCache, @@ -913,7 +835,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL MergePipelineCaches( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateGraphicsPipelines( VkDevice device, VkPipelineCache pipelineCache, @@ -928,7 +849,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateGraphicsPipelines( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateComputePipelines( VkDevice device, VkPipelineCache pipelineCache, @@ -943,7 +863,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateComputePipelines( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyPipeline( VkDevice device, VkPipeline pipeline, @@ -951,7 +870,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPipeline( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, @@ -962,7 +880,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineLayout( *pPipelineLayout = (VkPipelineLayout)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, @@ -970,7 +887,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPipelineLayout( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, @@ -981,7 +897,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSampler( *pSampler = (VkSampler)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroySampler( VkDevice device, VkSampler sampler, @@ -989,7 +904,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySampler( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, @@ -1000,7 +914,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorSetLayout( *pSetLayout = (VkDescriptorSetLayout)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, @@ -1008,7 +921,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorSetLayout( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorPool( VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, @@ -1019,7 +931,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorPool( *pDescriptorPool = (VkDescriptorPool)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, @@ -1027,7 +938,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorPool( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL ResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, @@ -1036,7 +946,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ResetDescriptorPool( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AllocateDescriptorSets( VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, @@ -1048,7 +957,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AllocateDescriptorSets( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL FreeDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, @@ -1058,7 +966,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL FreeDescriptorSets( //Destroy object return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSets( VkDevice device, uint32_t descriptorWriteCount, @@ -1068,7 +975,6 @@ static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSets( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, @@ -1079,7 +985,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateFramebuffer( *pFramebuffer = (VkFramebuffer)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, @@ -1087,7 +992,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyFramebuffer( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, @@ -1098,7 +1002,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass( *pRenderPass = (VkRenderPass)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyRenderPass( VkDevice device, VkRenderPass renderPass, @@ -1106,7 +1009,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyRenderPass( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL GetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, @@ -1115,7 +1017,6 @@ static VKAPI_ATTR void VKAPI_CALL GetRenderAreaGranularity( pGranularity->width = 1; pGranularity->height = 1; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateCommandPool( VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, @@ -1127,13 +1028,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateCommandPool( command_pool_map[device].insert(*pCommandPool); return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyCommandPool( VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator) { - // destroy command buffers for this pool unique_lock_t lock(global_lock); auto it = command_pool_buffer_map.find(commandPool); @@ -1145,7 +1044,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyCommandPool( } command_pool_map[device].erase(commandPool); } - static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandPool( VkDevice device, VkCommandPool commandPool, @@ -1154,13 +1052,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandPool( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AllocateCommandBuffers( VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers) { - unique_lock_t lock(global_lock); for (uint32_t i = 0; i < pAllocateInfo->commandBufferCount; ++i) { pCommandBuffers[i] = (VkCommandBuffer)CreateDispObjHandle(); @@ -1168,14 +1064,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL AllocateCommandBuffers( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL FreeCommandBuffers( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers) { - unique_lock_t lock(global_lock); for (auto i = 0u; i < commandBufferCount; ++i) { if (!pCommandBuffers[i]) { @@ -1193,7 +1087,6 @@ static VKAPI_ATTR void VKAPI_CALL FreeCommandBuffers( DestroyDispObjHandle((void*) pCommandBuffers[i]); } } - static VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo) @@ -1201,14 +1094,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL BeginCommandBuffer( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL EndCommandBuffer( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags) @@ -1216,7 +1107,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ResetCommandBuffer( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -1224,7 +1114,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindPipeline( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetViewport( VkCommandBuffer commandBuffer, uint32_t firstViewport, @@ -1233,7 +1122,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewport( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, @@ -1242,14 +1130,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetScissor( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, @@ -1258,14 +1144,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4]) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, @@ -1273,7 +1157,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBounds( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, @@ -1281,7 +1164,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilCompareMask( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, @@ -1289,7 +1171,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilWriteMask( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, @@ -1297,7 +1178,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilReference( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -1310,7 +1190,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1319,7 +1198,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers( VkCommandBuffer commandBuffer, uint32_t firstBinding, @@ -1329,7 +1207,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDraw( VkCommandBuffer commandBuffer, uint32_t vertexCount, @@ -1339,7 +1216,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDraw( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexed( VkCommandBuffer commandBuffer, uint32_t indexCount, @@ -1350,7 +1226,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexed( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1360,7 +1235,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirect( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1370,7 +1244,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirect( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, @@ -1379,7 +1252,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatch( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1387,7 +1259,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchIndirect( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, @@ -1397,7 +1268,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyImage( VkCommandBuffer commandBuffer, VkImage srcImage, @@ -1409,7 +1279,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyImage( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBlitImage( VkCommandBuffer commandBuffer, VkImage srcImage, @@ -1422,7 +1291,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBlitImage( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, @@ -1433,7 +1301,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer( VkCommandBuffer commandBuffer, VkImage srcImage, @@ -1444,7 +1311,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdUpdateBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, @@ -1454,7 +1320,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdUpdateBuffer( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, @@ -1464,7 +1329,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdFillBuffer( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdClearColorImage( VkCommandBuffer commandBuffer, VkImage image, @@ -1475,7 +1339,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdClearColorImage( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdClearDepthStencilImage( VkCommandBuffer commandBuffer, VkImage image, @@ -1486,7 +1349,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdClearDepthStencilImage( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, @@ -1496,7 +1358,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdClearAttachments( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResolveImage( VkCommandBuffer commandBuffer, VkImage srcImage, @@ -1508,7 +1369,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdResolveImage( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, @@ -1516,7 +1376,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetEvent( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, @@ -1524,7 +1383,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdResetEvent( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents( VkCommandBuffer commandBuffer, uint32_t eventCount, @@ -1540,7 +1398,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, @@ -1555,7 +1412,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -1564,7 +1420,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginQuery( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -1572,7 +1427,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdEndQuery( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -1581,7 +1435,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdResetQueryPool( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, @@ -1590,7 +1443,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -1603,7 +1455,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyQueryPoolResults( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushConstants( VkCommandBuffer commandBuffer, VkPipelineLayout layout, @@ -1614,7 +1465,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPushConstants( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, @@ -1622,20 +1472,17 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, @@ -1643,16 +1490,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdExecuteCommands( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL EnumerateInstanceVersion( uint32_t* pApiVersion) { - *pApiVersion = VK_HEADER_VERSION_COMPLETE; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2( VkDevice device, uint32_t bindInfoCount, @@ -1661,7 +1504,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2( VkDevice device, uint32_t bindInfoCount, @@ -1670,7 +1512,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeatures( VkDevice device, uint32_t heapIndex, @@ -1680,14 +1521,12 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeatures( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchBase( VkCommandBuffer commandBuffer, uint32_t baseGroupX, @@ -1699,7 +1538,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchBase( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, @@ -1707,7 +1545,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroups( { return EnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties); } - static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, @@ -1715,7 +1552,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2( { GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, @@ -1723,7 +1559,6 @@ static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2( { GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, @@ -1732,21 +1567,18 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2( { GetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) { GetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) { GetPhysicalDeviceProperties2KHR(physicalDevice, pProperties); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, VkFormat format, @@ -1754,7 +1586,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2( { GetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties); } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, @@ -1762,7 +1593,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2( { return GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, @@ -1770,14 +1600,12 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2( { GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { GetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, @@ -1786,7 +1614,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2( { GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties); } - static VKAPI_ATTR void VKAPI_CALL TrimCommandPool( VkDevice device, VkCommandPool commandPool, @@ -1794,7 +1621,6 @@ static VKAPI_ATTR void VKAPI_CALL TrimCommandPool( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, @@ -1803,7 +1629,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceQueue2( GetDeviceQueue(device, pQueueInfo->queueFamilyIndex, pQueueInfo->queueIndex, pQueue); // TODO: Add further support for GetDeviceQueue2 features } - static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, @@ -1814,7 +1639,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversion( *pYcbcrConversion = (VkSamplerYcbcrConversion)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, @@ -1822,7 +1646,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversion( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, @@ -1833,7 +1656,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplate( *pDescriptorUpdateTemplate = (VkDescriptorUpdateTemplate)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, @@ -1841,7 +1663,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplate( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, @@ -1850,7 +1671,6 @@ static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplate( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, @@ -1875,7 +1695,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferProperties( pExternalBufferProperties->externalMemoryProperties.compatibleHandleTypes = pExternalBufferInfo->handleType; } } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, @@ -1886,7 +1705,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFenceProperties( pExternalFenceProperties->compatibleHandleTypes = 0xF; pExternalFenceProperties->externalFenceFeatures = 0x3; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, @@ -1897,7 +1715,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphoreProperties( pExternalSemaphoreProperties->compatibleHandleTypes = 0x1F; pExternalSemaphoreProperties->externalSemaphoreFeatures = 0x3; } - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, @@ -1907,8 +1724,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupport( pSupport->supported = VK_TRUE; } } - - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCount( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1920,7 +1735,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCount( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCount( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -1932,7 +1746,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCount( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2( VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, @@ -1943,7 +1756,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2( *pRenderPass = (VkRenderPass)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, @@ -1951,7 +1763,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2( VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, @@ -1959,14 +1770,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2( VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL ResetQueryPool( VkDevice device, VkQueryPool queryPool, @@ -1975,7 +1784,6 @@ static VKAPI_ATTR void VKAPI_CALL ResetQueryPool( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValue( VkDevice device, VkSemaphore semaphore, @@ -1984,7 +1792,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValue( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphores( VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, @@ -1993,7 +1800,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphores( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphore( VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) @@ -2001,7 +1807,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphore( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddress( VkDevice device, const VkBufferDeviceAddressInfo* pInfo) @@ -2016,7 +1821,6 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddress( } return address; } - static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddress( VkDevice device, const VkBufferDeviceAddressInfo* pInfo) @@ -2024,7 +1828,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddress( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddress( VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) @@ -2032,8 +1835,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddress( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolProperties( VkPhysicalDevice physicalDevice, uint32_t* pToolCount, @@ -2042,7 +1843,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolProperties( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlot( VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, @@ -2053,7 +1853,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlot( *pPrivateDataSlot = (VkPrivateDataSlot)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlot( VkDevice device, VkPrivateDataSlot privateDataSlot, @@ -2061,7 +1860,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlot( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateData( VkDevice device, VkObjectType objectType, @@ -2072,7 +1870,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateData( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetPrivateData( VkDevice device, VkObjectType objectType, @@ -2082,7 +1879,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPrivateData( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2( VkCommandBuffer commandBuffer, VkEvent event, @@ -2090,7 +1886,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2( VkCommandBuffer commandBuffer, VkEvent event, @@ -2098,7 +1893,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2( VkCommandBuffer commandBuffer, uint32_t eventCount, @@ -2107,14 +1901,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2( VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2( VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, @@ -2123,7 +1915,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2( VkQueue queue, uint32_t submitCount, @@ -2133,83 +1924,71 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2( VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyImage2( VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2( VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2( VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBlitImage2( VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2( VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginRendering( VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndRendering( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCullMode( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFace( VkCommandBuffer commandBuffer, VkFrontFace frontFace) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopology( VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCount( VkCommandBuffer commandBuffer, uint32_t viewportCount, @@ -2217,7 +1996,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCount( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCount( VkCommandBuffer commandBuffer, uint32_t scissorCount, @@ -2225,7 +2003,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCount( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2( VkCommandBuffer commandBuffer, uint32_t firstBinding, @@ -2237,42 +2014,36 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnable( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnable( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOp( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnable( VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnable( VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOp( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, @@ -2283,28 +2054,24 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOp( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnable( VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnable( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnable( VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirements( VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, @@ -2317,7 +2084,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirements( // Return a size based on the buffer size from the create info. pMemoryRequirements->memoryRequirements.size = ((pInfo->pCreateInfo->size + 4095) / 4096) * 4096; } - static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirements( VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, @@ -2328,7 +2094,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirements( // Here we hard-code that the memory type at index 3 doesn't support this image. pMemoryRequirements->memoryRequirements.memoryTypeBits = 0xFFFF & ~(0x1 << 3); } - static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirements( VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, @@ -2337,8 +2102,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirements( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStipple( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, @@ -2346,7 +2109,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetLineStipple( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL MapMemory2( VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, @@ -2354,14 +2116,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL MapMemory2( { return MapMemory2KHR(device, pMemoryMapInfo, ppData); } - static VKAPI_ATTR VkResult VKAPI_CALL UnmapMemory2( VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo) { return UnmapMemory2KHR(device, pMemoryUnmapInfo); } - static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -2371,7 +2131,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetRenderingAreaGranularity( VkDevice device, const VkRenderingAreaInfo* pRenderingAreaInfo, @@ -2379,7 +2138,6 @@ static VKAPI_ATTR void VKAPI_CALL GetRenderingAreaGranularity( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSubresourceLayout( VkDevice device, const VkDeviceImageSubresourceInfo* pInfo, @@ -2387,7 +2145,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSubresourceLayout( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2( VkDevice device, VkImage image, @@ -2396,7 +2153,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSet( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -2407,7 +2163,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSet( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplate( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, @@ -2417,49 +2172,42 @@ static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplate( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRenderingAttachmentLocations( VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRenderingInputAttachmentIndices( VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets2( VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushConstants2( VkCommandBuffer commandBuffer, const VkPushConstantsInfo* pPushConstantsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSet2( VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplate2( VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImage( VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo) @@ -2467,7 +2215,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImage( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToMemory( VkDevice device, const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo) @@ -2475,7 +2222,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToMemory( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToImage( VkDevice device, const VkCopyImageToImageInfo* pCopyImageToImageInfo) @@ -2483,7 +2229,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToImage( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayout( VkDevice device, uint32_t transitionCount, @@ -2492,8 +2237,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayout( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, @@ -2501,7 +2244,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -2512,7 +2254,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceSupportKHR( *pSupported = VK_TRUE; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, @@ -2552,7 +2293,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilitiesKHR( VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, @@ -2574,7 +2314,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormatsKHR( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, @@ -2595,8 +2334,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModesKHR( } return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, @@ -2610,7 +2347,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSwapchainKHR( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, @@ -2619,7 +2355,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySwapchainKHR( unique_lock_t lock(global_lock); swapchain_image_map.clear(); } - static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, @@ -2639,7 +2374,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainImagesKHR( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR( VkDevice device, VkSwapchainKHR swapchain, @@ -2651,7 +2385,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImageKHR( *pImageIndex = 0; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo) @@ -2659,7 +2392,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueuePresentKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) @@ -2667,7 +2399,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupPresentCapabilitiesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, @@ -2676,7 +2407,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, @@ -2686,7 +2416,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDevicePresentRectanglesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, @@ -2695,8 +2424,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireNextImage2KHR( *pImageIndex = 0; return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -2711,7 +2438,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPropertiesKHR( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -2720,7 +2446,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlanePropertiesKHR //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, uint32_t planeIndex, @@ -2730,7 +2455,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneSupportedDisplaysKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, @@ -2740,7 +2464,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModePropertiesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayModeKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, @@ -2752,7 +2475,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayModeKHR( *pMode = (VkDisplayModeKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, @@ -2762,7 +2484,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayPlaneSurfaceKHR( VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, @@ -2773,8 +2494,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDisplayPlaneSurfaceKHR( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, @@ -2788,9 +2507,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSharedSwapchainsKHR( } return VK_SUCCESS; } - #ifdef VK_USE_PLATFORM_XLIB_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, @@ -2801,7 +2518,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateXlibSurfaceKHR( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXlibPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -2814,7 +2530,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXlibPresentationSupportKH #endif /* VK_USE_PLATFORM_XLIB_KHR */ #ifdef VK_USE_PLATFORM_XCB_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, @@ -2825,7 +2540,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateXcbSurfaceKHR( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXcbPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -2838,7 +2552,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXcbPresentationSupportKHR #endif /* VK_USE_PLATFORM_XCB_KHR */ #ifdef VK_USE_PLATFORM_WAYLAND_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, @@ -2849,7 +2562,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateWaylandSurfaceKHR( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWaylandPresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -2861,7 +2573,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWaylandPresentationSuppor #endif /* VK_USE_PLATFORM_WAYLAND_KHR */ #ifdef VK_USE_PLATFORM_ANDROID_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, @@ -2875,7 +2586,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateAndroidSurfaceKHR( #endif /* VK_USE_PLATFORM_ANDROID_KHR */ #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL CreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, @@ -2886,7 +2596,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateWin32SurfaceKHR( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex) @@ -2895,9 +2604,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWin32PresentationSupportK return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR( VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, @@ -2905,7 +2611,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR( { return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, @@ -2914,7 +2619,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR( { return VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR( VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, @@ -2925,7 +2629,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR( *pVideoSession = (VkVideoSessionKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR( VkDevice device, VkVideoSessionKHR videoSession, @@ -2933,7 +2636,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR( VkDevice device, VkVideoSessionKHR videoSession, @@ -2951,7 +2653,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR( VkDevice device, VkVideoSessionKHR videoSession, @@ -2961,7 +2662,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR( VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, @@ -2972,7 +2672,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR( *pVideoSessionParameters = (VkVideoSessionParametersKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR( VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, @@ -2981,7 +2680,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR( VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, @@ -2989,55 +2687,41 @@ static VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL CmdBeginVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR( VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR( VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo) { //Not a CREATE or DESTROY function } - - - - - static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR( VkCommandBuffer commandBuffer, const VkRenderingInfo* pRenderingInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures) @@ -3085,7 +2769,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFeatures2KHR( SetBoolArrayTrue(feat_bools, 1); } } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties) @@ -3238,7 +2921,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceProperties2KHR( } } } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, VkFormat format, @@ -3253,7 +2935,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceFormatProperties2KHR( props_3->optimalTilingFeatures |= VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT; } } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, @@ -3269,7 +2950,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties(physicalDevice, pImageFormatInfo->format, pImageFormatInfo->type, pImageFormatInfo->tiling, pImageFormatInfo->usage, pImageFormatInfo->flags, &pImageFormatProperties->imageFormatProperties); return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, @@ -3327,14 +3007,12 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyProperties2KHR( *pQueueFamilyPropertyCount = 3; } } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties) { GetPhysicalDeviceMemoryProperties(physicalDevice, &pMemoryProperties->memoryProperties); } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, @@ -3347,8 +3025,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceSparseImageFormatProperties2K GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, pFormatInfo->format, pFormatInfo->type, pFormatInfo->samples, pFormatInfo->usage, pFormatInfo->tiling, pPropertyCount, nullptr); } } - - static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR( VkDevice device, uint32_t heapIndex, @@ -3358,14 +3034,12 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR( VkCommandBuffer commandBuffer, uint32_t baseGroupX, @@ -3377,9 +3051,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, @@ -3387,8 +3058,6 @@ static VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, @@ -3404,8 +3073,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceGroupsKHR( } return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, @@ -3413,10 +3080,7 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalBufferPropertiesKHR( { GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties); } - - #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, @@ -3425,7 +3089,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, @@ -3436,8 +3099,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, @@ -3446,7 +3107,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR( *pFd = 1; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, @@ -3456,11 +3116,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, @@ -3468,10 +3123,7 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalSemaphorePropertiesKH { GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties); } - - #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) @@ -3479,7 +3131,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, @@ -3489,8 +3140,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) @@ -3498,7 +3147,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, @@ -3507,8 +3155,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -3519,7 +3165,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, @@ -3529,11 +3174,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR( { //Not a CREATE or DESTROY function } - - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, @@ -3544,7 +3184,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR( *pDescriptorUpdateTemplate = (VkDescriptorUpdateTemplate)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, @@ -3552,7 +3191,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, @@ -3561,9 +3199,6 @@ static VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, @@ -3574,7 +3209,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR( *pRenderPass = (VkRenderPass)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, @@ -3582,7 +3216,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR( VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, @@ -3590,15 +3223,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain) @@ -3606,8 +3236,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, @@ -3615,10 +3243,7 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalFencePropertiesKHR( { GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties); } - - #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) @@ -3626,7 +3251,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, @@ -3636,8 +3260,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo) @@ -3645,7 +3267,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, @@ -3654,8 +3275,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR( *pFd = 0x42; return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -3692,7 +3311,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerforma } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, @@ -3703,7 +3321,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPa *pNumPasses = 1; } } - static VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR( VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo) @@ -3711,15 +3328,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR( VkDevice device) { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, @@ -3740,7 +3353,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2KHR( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, @@ -3764,9 +3376,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceFormats2KHR( } return VK_SUCCESS; } - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -3775,7 +3384,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayProperties2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -3784,7 +3392,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceDisplayPlaneProperties2KH //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, @@ -3794,7 +3401,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayModeProperties2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, @@ -3803,12 +3409,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilities2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - - static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, @@ -3816,7 +3416,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR( { GetImageMemoryRequirements(device, pInfo->image, &pMemoryRequirements->memoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, @@ -3824,7 +3423,6 @@ static VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR( { GetBufferMemoryRequirements(device, pInfo->buffer, &pMemoryRequirements->memoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, @@ -3837,9 +3435,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR( GetImageSparseMemoryRequirements(device, pInfo->image, pSparseMemoryRequirementCount, nullptr); } } - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, @@ -3850,7 +3445,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR( *pYcbcrConversion = (VkSamplerYcbcrConversion)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, @@ -3858,8 +3452,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR( { //Destroy object } - - static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, @@ -3868,7 +3460,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, @@ -3877,11 +3468,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, @@ -3889,8 +3475,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR( { GetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport); } - - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -3902,7 +3486,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -3914,18 +3497,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR( { //Not a CREATE or DESTROY function } - - - - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR( VkDevice device, VkSemaphore semaphore, @@ -3934,7 +3505,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR( VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, @@ -3943,7 +3513,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR( VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo) @@ -3951,10 +3520,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR( VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, @@ -3969,7 +3534,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR( VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, @@ -3977,27 +3541,18 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdSetRenderingAttachmentLocationsKHR( VkCommandBuffer commandBuffer, const VkRenderingAttachmentLocationInfo* pLocationInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRenderingInputAttachmentIndicesKHR( VkCommandBuffer commandBuffer, const VkRenderingInputAttachmentIndexInfo* pInputAttachmentIndexInfo) { //Not a CREATE or DESTROY function } - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR( VkDevice device, VkSwapchainKHR swapchain, @@ -4007,16 +3562,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR( VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { return GetBufferDeviceAddress(device, pInfo); } - static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR( VkDevice device, const VkBufferDeviceAddressInfo* pInfo) @@ -4024,7 +3575,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR( VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) @@ -4032,8 +3582,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR( VkDevice device, const VkAllocationCallbacks* pAllocator, @@ -4043,7 +3591,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR( *pDeferredOperation = (VkDeferredOperationKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR( VkDevice device, VkDeferredOperationKHR operation, @@ -4051,7 +3598,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR( { //Destroy object } - static VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR( VkDevice device, VkDeferredOperationKHR operation) @@ -4059,7 +3605,6 @@ static VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR( VkDevice device, VkDeferredOperationKHR operation) @@ -4067,7 +3612,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR( VkDevice device, VkDeferredOperationKHR operation) @@ -4075,8 +3619,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR( VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, @@ -4086,7 +3628,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR( VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, @@ -4096,7 +3637,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR( VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, @@ -4106,8 +3646,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentatio //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL MapMemory2KHR( VkDevice device, const VkMemoryMapInfo* pMemoryMapInfo, @@ -4115,7 +3653,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL MapMemory2KHR( { return MapMemory(device, pMemoryMapInfo->memory, pMemoryMapInfo->offset, pMemoryMapInfo->size, pMemoryMapInfo->flags, ppData); } - static VKAPI_ATTR VkResult VKAPI_CALL UnmapMemory2KHR( VkDevice device, const VkMemoryUnmapInfo* pMemoryUnmapInfo) @@ -4123,12 +3660,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL UnmapMemory2KHR( UnmapMemory(device, pMemoryUnmapInfo->memory); return VK_SUCCESS; } - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, @@ -4137,7 +3668,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoEncodeQualityLevelPr //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetEncodedVideoSessionParametersKHR( VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, @@ -4148,15 +3678,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetEncodedVideoSessionParametersKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR( VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, @@ -4164,7 +3691,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, @@ -4172,7 +3698,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR( VkCommandBuffer commandBuffer, uint32_t eventCount, @@ -4181,14 +3706,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2KHR( VkCommandBuffer commandBuffer, const VkDependencyInfo* pDependencyInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR( VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, @@ -4197,7 +3720,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR( VkQueue queue, uint32_t submitCount, @@ -4207,66 +3729,48 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR( VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyImage2KHR( VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2KHR( VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2KHR( VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBlitImage2KHR( VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR( VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo) { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirect2KHR( VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR( VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, @@ -4274,7 +3778,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR( { GetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR( VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, @@ -4282,7 +3785,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR( { GetDeviceImageMemoryRequirements(device, pInfo, pMemoryRequirements); } - static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR( VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, @@ -4291,10 +3793,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR( { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2KHR( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -4304,7 +3802,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2KHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetRenderingAreaGranularityKHR( VkDevice device, const VkRenderingAreaInfo* pRenderingAreaInfo, @@ -4312,7 +3809,6 @@ static VKAPI_ATTR void VKAPI_CALL GetRenderingAreaGranularityKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSubresourceLayoutKHR( VkDevice device, const VkDeviceImageSubresourceInfo* pInfo, @@ -4320,7 +3816,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceImageSubresourceLayoutKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2KHR( VkDevice device, VkImage image, @@ -4329,9 +3824,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2KHR( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresent2KHR( VkDevice device, VkSwapchainKHR swapchain, @@ -4340,9 +3832,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL WaitForPresent2KHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineBinariesKHR( VkDevice device, const VkPipelineBinaryCreateInfoKHR* pCreateInfo, @@ -4355,7 +3844,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineBinariesKHR( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyPipelineBinaryKHR( VkDevice device, VkPipelineBinaryKHR pipelineBinary, @@ -4363,7 +3851,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPipelineBinaryKHR( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineKeyKHR( VkDevice device, const VkPipelineCreateInfoKHR* pPipelineCreateInfo, @@ -4372,7 +3859,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineKeyKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineBinaryDataKHR( VkDevice device, const VkPipelineBinaryDataInfoKHR* pInfo, @@ -4383,7 +3869,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelineBinaryDataKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseCapturedPipelineDataKHR( VkDevice device, const VkReleaseCapturedPipelineDataInfoKHR* pInfo, @@ -4392,9 +3877,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleaseCapturedPipelineDataKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesKHR( VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo) @@ -4402,8 +3884,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -4428,18 +3908,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixProperti } return VK_SUCCESS; } - - - - - - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleKHR( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, @@ -4447,8 +3915,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleKHR( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsKHR( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, @@ -4462,7 +3928,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsK } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsKHR( VkDevice device, uint32_t timestampCount, @@ -4473,77 +3938,54 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets2KHR( VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfo* pBindDescriptorSetsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushConstants2KHR( VkCommandBuffer commandBuffer, const VkPushConstantsInfo* pPushConstantsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSet2KHR( VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfo* pPushDescriptorSetInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplate2KHR( VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfo* pPushDescriptorSetWithTemplateInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsets2EXT( VkCommandBuffer commandBuffer, const VkSetDescriptorBufferOffsetsInfoEXT* pSetDescriptorBufferOffsetsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplers2EXT( VkCommandBuffer commandBuffer, const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryIndirectInfoKHR* pCopyMemoryIndirectInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryToImageIndirectInfoKHR* pCopyMemoryToImageIndirectInfo) { //Not a CREATE or DESTROY function } - - - - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, @@ -4554,7 +3996,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugReportCallbackEXT( *pCallback = (VkDebugReportCallbackEXT)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, @@ -4562,7 +4003,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDebugReportCallbackEXT( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL DebugReportMessageEXT( VkInstance instance, VkDebugReportFlagsEXT flags, @@ -4575,14 +4015,6 @@ static VKAPI_ATTR void VKAPI_CALL DebugReportMessageEXT( { //Not a CREATE or DESTROY function } - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo) @@ -4590,7 +4022,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo) @@ -4598,30 +4029,23 @@ static VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, @@ -4632,7 +4056,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, @@ -4642,7 +4065,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, @@ -4652,7 +4074,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -4662,7 +4083,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, @@ -4671,7 +4091,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT( VkCommandBuffer commandBuffer, uint32_t instanceCount, @@ -4683,8 +4102,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX( VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, @@ -4695,7 +4112,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX( *pModule = (VkCuModuleNVX)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX( VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, @@ -4706,7 +4122,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX( *pFunction = (VkCuFunctionNVX)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX( VkDevice device, VkCuModuleNVX module, @@ -4714,7 +4129,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX( VkDevice device, VkCuFunctionNVX function, @@ -4722,15 +4136,12 @@ static VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX( VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX( VkDevice device, const VkImageViewHandleInfoNVX* pInfo) @@ -4738,7 +4149,6 @@ static VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR uint64_t VKAPI_CALL GetImageViewHandle64NVX( VkDevice device, const VkImageViewHandleInfoNVX* pInfo) @@ -4746,7 +4156,6 @@ static VKAPI_ATTR uint64_t VKAPI_CALL GetImageViewHandle64NVX( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX( VkDevice device, VkImageView imageView, @@ -4755,8 +4164,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -4768,7 +4175,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -4780,12 +4186,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD( { //Not a CREATE or DESTROY function } - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD( VkDevice device, VkPipeline pipeline, @@ -4797,10 +4197,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - #ifdef VK_USE_PLATFORM_GGP - static VKAPI_ATTR VkResult VKAPI_CALL CreateStreamDescriptorSurfaceGGP( VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, @@ -4812,10 +4209,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateStreamDescriptorSurfaceGGP( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_GGP */ - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatPropertiesNV( VkPhysicalDevice physicalDevice, VkFormat format, @@ -4829,10 +4222,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceExternalImageFormatProper //Not a CREATE or DESTROY function return VK_SUCCESS; } - - #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV( VkDevice device, VkDeviceMemory memory, @@ -4844,12 +4234,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV( } #endif /* VK_USE_PLATFORM_WIN32_KHR */ -#ifdef VK_USE_PLATFORM_WIN32_KHR -#endif /* VK_USE_PLATFORM_WIN32_KHR */ - - #ifdef VK_USE_PLATFORM_VI_NN - static VKAPI_ATTR VkResult VKAPI_CALL CreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, @@ -4861,27 +4246,17 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateViSurfaceNN( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_VI_NN */ - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, @@ -4890,8 +4265,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display) @@ -4899,9 +4272,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleaseDisplayEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - static VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, @@ -4910,7 +4281,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireXlibDisplayEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, @@ -4921,8 +4291,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetRandROutputDisplayEXT( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_XLIB_XRANDR_EXT */ - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, @@ -4931,8 +4299,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceCapabilities2EXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, @@ -4941,7 +4307,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, @@ -4951,7 +4316,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, @@ -4963,7 +4327,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT( *pFence = (VkFence)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, @@ -4973,8 +4336,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, @@ -4983,7 +4344,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, @@ -4993,13 +4353,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, @@ -5008,25 +4361,18 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEnableEXT( VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleModeEXT( VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode) { //Not a CREATE or DESTROY function } - - - - - static VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, @@ -5035,10 +4381,7 @@ static VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT( { //Not a CREATE or DESTROY function } - - #ifdef VK_USE_PLATFORM_IOS_MVK - static VKAPI_ATTR VkResult VKAPI_CALL CreateIOSSurfaceMVK( VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, @@ -5052,7 +4395,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateIOSSurfaceMVK( #endif /* VK_USE_PLATFORM_IOS_MVK */ #ifdef VK_USE_PLATFORM_MACOS_MVK - static VKAPI_ATTR VkResult VKAPI_CALL CreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, @@ -5064,10 +4406,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateMacOSSurfaceMVK( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_MACOS_MVK */ - - - - static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo) @@ -5075,7 +4413,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo) @@ -5083,47 +4420,40 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT( VkQueue queue) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugUtilsMessengerEXT( VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, @@ -5134,7 +4464,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDebugUtilsMessengerEXT( *pMessenger = (VkDebugUtilsMessengerEXT)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, @@ -5142,7 +4471,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDebugUtilsMessengerEXT( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL SubmitDebugUtilsMessageEXT( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, @@ -5151,9 +4479,7 @@ static VKAPI_ATTR void VKAPI_CALL SubmitDebugUtilsMessageEXT( { //Not a CREATE or DESTROY function } - #ifdef VK_USE_PLATFORM_ANDROID_KHR - static VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const struct AHardwareBuffer* buffer, @@ -5175,7 +4501,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, @@ -5186,10 +4511,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID( } #endif /* VK_USE_PLATFORM_ANDROID_KHR */ - - #ifdef VK_ENABLE_BETA_EXTENSIONS - static VKAPI_ATTR VkResult VKAPI_CALL CreateExecutionGraphPipelinesAMDX( VkDevice device, VkPipelineCache pipelineCache, @@ -5204,7 +4526,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateExecutionGraphPipelinesAMDX( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineScratchSizeAMDX( VkDevice device, VkPipeline executionGraph, @@ -5213,7 +4534,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineScratchSizeAMDX( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineNodeIndexAMDX( VkDevice device, VkPipeline executionGraph, @@ -5223,7 +4543,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineNodeIndexAMDX( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdInitializeGraphScratchMemoryAMDX( VkCommandBuffer commandBuffer, VkPipeline executionGraph, @@ -5232,7 +4551,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdInitializeGraphScratchMemoryAMDX( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphAMDX( VkCommandBuffer commandBuffer, VkDeviceAddress scratch, @@ -5241,7 +4559,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphAMDX( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectAMDX( VkCommandBuffer commandBuffer, VkDeviceAddress scratch, @@ -5250,7 +4567,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectAMDX( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectCountAMDX( VkCommandBuffer commandBuffer, VkDeviceAddress scratch, @@ -5260,19 +4576,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectCountAMDX( //Not a CREATE or DESTROY function } #endif /* VK_ENABLE_BETA_EXTENSIONS */ - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, @@ -5283,14 +4592,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT( pMultisampleProperties->maxSampleLocationGridSize = {32, 32}; } } - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT( VkDevice device, VkImage image, @@ -5299,8 +4600,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, @@ -5311,7 +4610,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT( *pValidationCache = (VkValidationCacheEXT)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, @@ -5319,7 +4617,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, @@ -5329,7 +4626,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, @@ -5339,10 +4635,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - static VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, VkImageView imageView, @@ -5350,7 +4642,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, @@ -5359,7 +4650,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, @@ -5368,8 +4658,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV( VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, @@ -5380,7 +4668,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV( *pAccelerationStructure = (VkAccelerationStructureNV)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, @@ -5388,7 +4675,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV( VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, @@ -5399,7 +4685,6 @@ static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV( pMemoryRequirements->memoryRequirements.alignment = 1; pMemoryRequirements->memoryRequirements.memoryTypeBits = 0xFFFF; } - static VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV( VkDevice device, uint32_t bindInfoCount, @@ -5408,7 +4693,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, @@ -5422,7 +4706,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, @@ -5431,7 +4714,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV( VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, @@ -5451,7 +4733,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV( VkDevice device, VkPipelineCache pipelineCache, @@ -5466,7 +4747,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR( VkDevice device, VkPipeline pipeline, @@ -5478,7 +4758,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV( VkDevice device, VkPipeline pipeline, @@ -5490,7 +4769,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, @@ -5500,7 +4778,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, @@ -5511,7 +4788,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV( VkDevice device, VkPipeline pipeline, @@ -5520,12 +4796,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, @@ -5535,8 +4805,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT( pMemoryHostPointerProperties->memoryTypeBits = 1 << 5; // DEVICE_LOCAL only type return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, @@ -5546,7 +4814,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD( VkCommandBuffer commandBuffer, VkPipelineStageFlags2 stage, @@ -5556,9 +4823,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, @@ -5572,7 +4836,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsE } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT( VkDevice device, uint32_t timestampCount, @@ -5583,17 +4846,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - -#ifdef VK_USE_PLATFORM_GGP -#endif /* VK_USE_PLATFORM_GGP */ - - - - - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, uint32_t taskCount, @@ -5601,7 +4853,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -5611,7 +4862,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -5623,10 +4873,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV( { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorEnableNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, @@ -5635,7 +4881,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorEnableNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, @@ -5644,15 +4889,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV( VkQueue queue, uint32_t* pCheckpointDataCount, @@ -5660,7 +4902,6 @@ static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV( VkQueue queue, uint32_t* pCheckpointDataCount, @@ -5668,9 +4909,6 @@ static VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL( VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo) @@ -5678,13 +4916,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL UninitializePerformanceApiINTEL( VkDevice device) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) @@ -5692,7 +4928,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) @@ -5700,7 +4935,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) @@ -5708,7 +4942,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL( VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, @@ -5717,7 +4950,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL( VkDevice device, VkPerformanceConfigurationINTEL configuration) @@ -5725,7 +4957,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL( VkQueue queue, VkPerformanceConfigurationINTEL configuration) @@ -5733,7 +4964,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL( VkDevice device, VkPerformanceParameterTypeINTEL parameter, @@ -5742,9 +4972,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - static VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD( VkDevice device, VkSwapchainKHR swapChain, @@ -5752,9 +4979,7 @@ static VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD( { //Not a CREATE or DESTROY function } - #ifdef VK_USE_PLATFORM_FUCHSIA - static VKAPI_ATTR VkResult VKAPI_CALL CreateImagePipeSurfaceFUCHSIA( VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, @@ -5768,7 +4993,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateImagePipeSurfaceFUCHSIA( #endif /* VK_USE_PLATFORM_FUCHSIA */ #ifdef VK_USE_PLATFORM_METAL_EXT - static VKAPI_ATTR VkResult VKAPI_CALL CreateMetalSurfaceEXT( VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, @@ -5780,27 +5004,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateMetalSurfaceEXT( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_METAL_EXT */ - - - - - - - - - - - - - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT( VkDevice device, const VkBufferDeviceAddressInfo* pInfo) { return GetBufferDeviceAddress(device, pInfo); } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT( VkPhysicalDevice physicalDevice, uint32_t* pToolCount, @@ -5809,10 +5018,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceToolPropertiesEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -5821,8 +5026,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixProperti //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, @@ -5831,12 +5034,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixed //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, @@ -5846,7 +5044,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfacePresentModes2EXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain) @@ -5854,7 +5051,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain) @@ -5862,7 +5058,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT( VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, @@ -5872,8 +5067,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceGroupSurfacePresentModes2EXT( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_WIN32_KHR */ - - static VKAPI_ATTR VkResult VKAPI_CALL CreateHeadlessSurfaceEXT( VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, @@ -5884,8 +5077,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateHeadlessSurfaceEXT( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, @@ -5893,9 +5084,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT( VkDevice device, VkQueryPool queryPool, @@ -5904,30 +5092,24 @@ static VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetFrontFaceEXT( VkCommandBuffer commandBuffer, VkFrontFace frontFace) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopologyEXT( VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT( VkCommandBuffer commandBuffer, uint32_t viewportCount, @@ -5935,7 +5117,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT( VkCommandBuffer commandBuffer, uint32_t scissorCount, @@ -5943,7 +5124,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, @@ -5955,42 +5135,36 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOpEXT( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, @@ -6001,8 +5175,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImageEXT( VkDevice device, const VkCopyMemoryToImageInfo* pCopyMemoryToImageInfo) @@ -6010,7 +5182,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImageEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToMemoryEXT( VkDevice device, const VkCopyImageToMemoryInfo* pCopyImageToMemoryInfo) @@ -6018,7 +5189,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToMemoryEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToImageEXT( VkDevice device, const VkCopyImageToImageInfo* pCopyImageToImageInfo) @@ -6026,7 +5196,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyImageToImageEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayoutEXT( VkDevice device, uint32_t transitionCount, @@ -6035,7 +5204,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayoutEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2EXT( VkDevice device, VkImage image, @@ -6044,11 +5212,6 @@ static VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2EXT( { //Not a CREATE or DESTROY function } - - - - - static VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesEXT( VkDevice device, const VkReleaseSwapchainImagesInfoKHR* pReleaseInfo) @@ -6056,9 +5219,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV( VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, @@ -6066,14 +5226,12 @@ static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsNV( VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV( VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, @@ -6081,7 +5239,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -6090,7 +5247,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, @@ -6101,7 +5257,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV( *pIndirectCommandsLayout = (VkIndirectCommandsLayoutNV)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV( VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, @@ -6109,20 +5264,12 @@ static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV( { //Destroy object } - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias2EXT( VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT* pDepthBiasInfo) { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT( VkPhysicalDevice physicalDevice, int32_t drmFd, @@ -6131,7 +5278,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT( VkPhysicalDevice physicalDevice, int32_t drmFd, @@ -6141,12 +5287,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT( VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, @@ -6157,7 +5297,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT( *pPrivateDataSlot = (VkPrivateDataSlot)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT( VkDevice device, VkPrivateDataSlot privateDataSlot, @@ -6165,7 +5304,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT( VkDevice device, VkObjectType objectType, @@ -6176,7 +5314,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT( VkDevice device, VkObjectType objectType, @@ -6186,12 +5323,7 @@ static VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT( { //Not a CREATE or DESTROY function } - - - - #ifdef VK_ENABLE_BETA_EXTENSIONS - static VKAPI_ATTR VkResult VKAPI_CALL CreateCudaModuleNV( VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, @@ -6202,7 +5334,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateCudaModuleNV( *pModule = (VkCudaModuleNV)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetCudaModuleCacheNV( VkDevice device, VkCudaModuleNV module, @@ -6212,7 +5343,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetCudaModuleCacheNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateCudaFunctionNV( VkDevice device, const VkCudaFunctionCreateInfoNV* pCreateInfo, @@ -6223,7 +5353,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateCudaFunctionNV( *pFunction = (VkCudaFunctionNV)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyCudaModuleNV( VkDevice device, VkCudaModuleNV module, @@ -6231,7 +5360,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyCudaModuleNV( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL DestroyCudaFunctionNV( VkDevice device, VkCudaFunctionNV function, @@ -6239,7 +5367,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyCudaFunctionNV( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL CmdCudaLaunchKernelNV( VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo) @@ -6247,32 +5374,25 @@ static VKAPI_ATTR void VKAPI_CALL CmdCudaLaunchKernelNV( //Not a CREATE or DESTROY function } #endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR void VKAPI_CALL CmdDispatchTileQCOM( VkCommandBuffer commandBuffer, const VkDispatchTileInfoQCOM* pDispatchTileInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBeginPerTileExecutionQCOM( VkCommandBuffer commandBuffer, const VkPerTileBeginInfoQCOM* pPerTileBeginInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdEndPerTileExecutionQCOM( VkCommandBuffer commandBuffer, const VkPerTileEndInfoQCOM* pPerTileEndInfo) { //Not a CREATE or DESTROY function } - - #ifdef VK_USE_PLATFORM_METAL_EXT - static VKAPI_ATTR void VKAPI_CALL ExportMetalObjectsEXT( VkDevice device, VkExportMetalObjectsInfoEXT* pMetalObjectsInfo) @@ -6280,8 +5400,6 @@ static VKAPI_ATTR void VKAPI_CALL ExportMetalObjectsEXT( //Not a CREATE or DESTROY function } #endif /* VK_USE_PLATFORM_METAL_EXT */ - - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSizeEXT( VkDevice device, VkDescriptorSetLayout layout, @@ -6290,7 +5408,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSizeEXT( // Need to give something non-zero *pLayoutSizeInBytes = 4; } - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutBindingOffsetEXT( VkDevice device, VkDescriptorSetLayout layout, @@ -6299,7 +5416,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutBindingOffsetEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDescriptorEXT( VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, @@ -6308,7 +5424,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBuffersEXT( VkCommandBuffer commandBuffer, uint32_t bufferCount, @@ -6316,7 +5431,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBuffersEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsetsEXT( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -6328,7 +5442,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsetsEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplersEXT( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -6337,7 +5450,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplersEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL GetBufferOpaqueCaptureDescriptorDataEXT( VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, @@ -6346,7 +5458,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetBufferOpaqueCaptureDescriptorDataEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetImageOpaqueCaptureDescriptorDataEXT( VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, @@ -6355,7 +5466,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetImageOpaqueCaptureDescriptorDataEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewOpaqueCaptureDescriptorDataEXT( VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, @@ -6364,7 +5474,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetImageViewOpaqueCaptureDescriptorDataEXT //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetSamplerOpaqueCaptureDescriptorDataEXT( VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, @@ -6373,7 +5482,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSamplerOpaqueCaptureDescriptorDataEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureOpaqueCaptureDescriptorDataEXT( VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, @@ -6382,10 +5490,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureOpaqueCaptureDescr //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV( VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, @@ -6393,16 +5497,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV( { //Not a CREATE or DESTROY function } - - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceFaultInfoEXT( VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, @@ -6411,11 +5505,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceFaultInfoEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - #ifdef VK_USE_PLATFORM_WIN32_KHR - static VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV( VkPhysicalDevice physicalDevice, VkDisplayKHR display) @@ -6423,7 +5513,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV( VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, @@ -6435,7 +5524,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV( #endif /* VK_USE_PLATFORM_WIN32_KHR */ #ifdef VK_USE_PLATFORM_DIRECTFB_EXT - static VKAPI_ATTR VkResult VKAPI_CALL CreateDirectFBSurfaceEXT( VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, @@ -6446,7 +5534,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDirectFBSurfaceEXT( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceDirectFBPresentationSupportEXT( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -6456,9 +5543,6 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceDirectFBPresentationSuppo return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_DIRECTFB_EXT */ - - - static VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT( VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, @@ -6468,14 +5552,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT( { //Not a CREATE or DESTROY function } - - - - - - #ifdef VK_USE_PLATFORM_FUCHSIA - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA( VkDevice device, const VkMemoryGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, @@ -6484,7 +5561,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, @@ -6494,10 +5570,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA( //Not a CREATE or DESTROY function return VK_SUCCESS; } -#endif /* VK_USE_PLATFORM_FUCHSIA */ - -#ifdef VK_USE_PLATFORM_FUCHSIA - static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA( VkDevice device, const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) @@ -6505,7 +5577,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA( VkDevice device, const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo, @@ -6514,10 +5585,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA( //Not a CREATE or DESTROY function return VK_SUCCESS; } -#endif /* VK_USE_PLATFORM_FUCHSIA */ - -#ifdef VK_USE_PLATFORM_FUCHSIA - static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA( VkDevice device, const VkBufferCollectionCreateInfoFUCHSIA* pCreateInfo, @@ -6528,7 +5595,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA( *pCollection = (VkBufferCollectionFUCHSIA)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA( VkDevice device, VkBufferCollectionFUCHSIA collection, @@ -6537,7 +5603,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA( VkDevice device, VkBufferCollectionFUCHSIA collection, @@ -6546,7 +5611,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSI //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA( VkDevice device, VkBufferCollectionFUCHSIA collection, @@ -6554,7 +5618,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA( VkDevice device, VkBufferCollectionFUCHSIA collection, @@ -6564,8 +5627,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_FUCHSIA */ - - static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI( VkDevice device, VkRenderPass renderpass, @@ -6574,14 +5635,11 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUA //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI( VkCommandBuffer commandBuffer) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI( VkCommandBuffer commandBuffer, VkImageView imageView, @@ -6589,8 +5647,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV( VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, @@ -6599,8 +5655,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR VkResult VKAPI_CALL GetPipelinePropertiesEXT( VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, @@ -6609,47 +5663,37 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPipelinePropertiesEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT( VkCommandBuffer commandBuffer, uint32_t patchControlPoints) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnableEXT( VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT( VkCommandBuffer commandBuffer, VkLogicOp logicOp) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT( VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable) { //Not a CREATE or DESTROY function } - #ifdef VK_USE_PLATFORM_SCREEN_QNX - static VKAPI_ATTR VkResult VKAPI_CALL CreateScreenSurfaceQNX( VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, @@ -6660,7 +5704,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateScreenSurfaceQNX( *pSurface = (VkSurfaceKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceScreenPresentationSupportQNX( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -6670,21 +5713,13 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceScreenPresentationSupport return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_SCREEN_QNX */ - - static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteEnableEXT( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkBool32* pColorWriteEnables) { -//Not a CREATE or DESTROY function -} - - - - - - +//Not a CREATE or DESTROY function +} static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT( VkCommandBuffer commandBuffer, uint32_t drawCount, @@ -6695,7 +5730,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT( VkCommandBuffer commandBuffer, uint32_t drawCount, @@ -6707,10 +5741,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT( { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateMicromapEXT( VkDevice device, const VkMicromapCreateInfoEXT* pCreateInfo, @@ -6721,7 +5751,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateMicromapEXT( *pMicromap = (VkMicromapEXT)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyMicromapEXT( VkDevice device, VkMicromapEXT micromap, @@ -6729,7 +5758,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyMicromapEXT( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL CmdBuildMicromapsEXT( VkCommandBuffer commandBuffer, uint32_t infoCount, @@ -6737,7 +5765,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBuildMicromapsEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL BuildMicromapsEXT( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -6747,7 +5774,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BuildMicromapsEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapEXT( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -6756,7 +5782,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapToMemoryEXT( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -6765,7 +5790,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapToMemoryEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToMicromapEXT( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -6774,7 +5798,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToMicromapEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL WriteMicromapsPropertiesEXT( VkDevice device, uint32_t micromapCount, @@ -6787,28 +5810,24 @@ static VKAPI_ATTR VkResult VKAPI_CALL WriteMicromapsPropertiesEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapEXT( VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapToMemoryEXT( VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToMicromapEXT( VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdWriteMicromapsPropertiesEXT( VkCommandBuffer commandBuffer, uint32_t micromapCount, @@ -6819,7 +5838,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteMicromapsPropertiesEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDeviceMicromapCompatibilityEXT( VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo, @@ -6827,7 +5845,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceMicromapCompatibilityEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetMicromapBuildSizesEXT( VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, @@ -6836,12 +5853,6 @@ static VKAPI_ATTR void VKAPI_CALL GetMicromapBuildSizesEXT( { //Not a CREATE or DESTROY function } - -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - - static VKAPI_ATTR void VKAPI_CALL CmdDrawClusterHUAWEI( VkCommandBuffer commandBuffer, uint32_t groupCountX, @@ -6850,7 +5861,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawClusterHUAWEI( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawClusterIndirectHUAWEI( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -6858,9 +5868,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawClusterIndirectHUAWEI( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT( VkDevice device, VkDeviceMemory memory, @@ -6868,11 +5875,6 @@ static VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT( { //Not a CREATE or DESTROY function } - - - - - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutHostMappingInfoVALVE( VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, @@ -6880,7 +5882,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutHostMappingInfoVALVE( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetHostMappingVALVE( VkDevice device, VkDescriptorSet descriptorSet, @@ -6888,12 +5889,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDescriptorSetHostMappingVALVE( { //Not a CREATE or DESTROY function } - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectNV( VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, @@ -6902,7 +5897,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectNV( VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, @@ -6914,8 +5908,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectNV( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryNV( VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, @@ -6923,7 +5915,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryIndirectCountNV( VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, @@ -6932,8 +5923,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryIndirectCountNV( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL GetPipelineIndirectMemoryRequirementsNV( VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, @@ -6941,7 +5930,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPipelineIndirectMemoryRequirementsNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdUpdatePipelineIndirectBufferNV( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, @@ -6949,7 +5937,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdUpdatePipelineIndirectBufferNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetPipelineIndirectDeviceAddressNV( VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo) @@ -6957,36 +5944,24 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetPipelineIndirectDeviceAddressNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthClampEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetPolygonModeEXT( VkCommandBuffer commandBuffer, VkPolygonMode polygonMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationSamplesEXT( VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT( VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, @@ -6994,28 +5969,24 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToCoverageEnableEXT( VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToOneEnableEXT( VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEnableEXT( VkCommandBuffer commandBuffer, VkBool32 logicOpEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEnableEXT( VkCommandBuffer commandBuffer, uint32_t firstAttachment, @@ -7024,7 +5995,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEnableEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT( VkCommandBuffer commandBuffer, uint32_t firstAttachment, @@ -7033,7 +6003,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT( VkCommandBuffer commandBuffer, uint32_t firstAttachment, @@ -7042,49 +6011,42 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetTessellationDomainOriginEXT( VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationStreamEXT( VkCommandBuffer commandBuffer, uint32_t rasterizationStream) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetConservativeRasterizationModeEXT( VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetExtraPrimitiveOverestimationSizeEXT( VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthClipEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEnableEXT( VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendAdvancedEXT( VkCommandBuffer commandBuffer, uint32_t firstAttachment, @@ -7093,42 +6055,36 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendAdvancedEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetProvokingVertexModeEXT( VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetLineRasterizationModeEXT( VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEnableEXT( VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipNegativeOneToOneEXT( VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingEnableNV( VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, @@ -7137,35 +6093,30 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorEnableNV( VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorLocationNV( VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationModeNV( VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableEnableNV( VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV( VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount, @@ -7173,31 +6124,24 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetShadingRateImageEnableNV( VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetRepresentativeFragmentTestEnableNV( VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetCoverageReductionModeNV( VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode) { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateTensorARM( VkDevice device, const VkTensorCreateInfoARM* pCreateInfo, @@ -7208,7 +6152,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateTensorARM( *pTensor = (VkTensorARM)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyTensorARM( VkDevice device, VkTensorARM tensor, @@ -7216,7 +6159,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyTensorARM( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateTensorViewARM( VkDevice device, const VkTensorViewCreateInfoARM* pCreateInfo, @@ -7227,7 +6169,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateTensorViewARM( *pView = (VkTensorViewARM)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyTensorViewARM( VkDevice device, VkTensorViewARM tensorView, @@ -7235,7 +6176,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyTensorViewARM( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL GetTensorMemoryRequirementsARM( VkDevice device, const VkTensorMemoryRequirementsInfoARM* pInfo, @@ -7243,7 +6183,6 @@ static VKAPI_ATTR void VKAPI_CALL GetTensorMemoryRequirementsARM( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL BindTensorMemoryARM( VkDevice device, uint32_t bindInfoCount, @@ -7252,7 +6191,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindTensorMemoryARM( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetDeviceTensorMemoryRequirementsARM( VkDevice device, const VkDeviceTensorMemoryRequirementsARM* pInfo, @@ -7260,14 +6198,12 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceTensorMemoryRequirementsARM( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyTensorARM( VkCommandBuffer commandBuffer, const VkCopyTensorInfoARM* pCopyTensorInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalTensorPropertiesARM( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalTensorInfoARM* pExternalTensorInfo, @@ -7275,7 +6211,6 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceExternalTensorPropertiesARM( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL GetTensorOpaqueCaptureDescriptorDataARM( VkDevice device, const VkTensorCaptureDescriptorDataInfoARM* pInfo, @@ -7284,7 +6219,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetTensorOpaqueCaptureDescriptorDataARM( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetTensorViewOpaqueCaptureDescriptorDataARM( VkDevice device, const VkTensorViewCaptureDescriptorDataInfoARM* pInfo, @@ -7293,8 +6227,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetTensorViewOpaqueCaptureDescriptorDataAR //Not a CREATE or DESTROY function return VK_SUCCESS; } - - static VKAPI_ATTR void VKAPI_CALL GetShaderModuleIdentifierEXT( VkDevice device, VkShaderModule shaderModule, @@ -7306,7 +6238,6 @@ static VKAPI_ATTR void VKAPI_CALL GetShaderModuleIdentifierEXT( pIdentifier->identifier[0] = 0x01; } } - static VKAPI_ATTR void VKAPI_CALL GetShaderModuleCreateInfoIdentifierEXT( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, @@ -7314,9 +6245,6 @@ static VKAPI_ATTR void VKAPI_CALL GetShaderModuleCreateInfoIdentifierEXT( { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceOpticalFlowImageFormatsNV( VkPhysicalDevice physicalDevice, const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, @@ -7326,7 +6254,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceOpticalFlowImageFormatsNV //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateOpticalFlowSessionNV( VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, @@ -7337,7 +6264,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateOpticalFlowSessionNV( *pSession = (VkOpticalFlowSessionNV)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyOpticalFlowSessionNV( VkDevice device, VkOpticalFlowSessionNV session, @@ -7345,7 +6271,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyOpticalFlowSessionNV( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL BindOpticalFlowSessionImageNV( VkDevice device, VkOpticalFlowSessionNV session, @@ -7356,7 +6281,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindOpticalFlowSessionImageNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdOpticalFlowExecuteNV( VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session, @@ -7364,24 +6288,12 @@ static VKAPI_ATTR void VKAPI_CALL CmdOpticalFlowExecuteNV( { //Not a CREATE or DESTROY function } - - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR -#endif /* VK_USE_PLATFORM_ANDROID_KHR */ - - static VKAPI_ATTR void VKAPI_CALL AntiLagUpdateAMD( VkDevice device, const VkAntiLagDataAMD* pData) { //Not a CREATE or DESTROY function } - -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR VkResult VKAPI_CALL CreateShadersEXT( VkDevice device, uint32_t createInfoCount, @@ -7395,7 +6307,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateShadersEXT( } return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyShaderEXT( VkDevice device, VkShaderEXT shader, @@ -7403,7 +6314,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyShaderEXT( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL GetShaderBinaryDataEXT( VkDevice device, VkShaderEXT shader, @@ -7413,7 +6323,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetShaderBinaryDataEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdBindShadersEXT( VkCommandBuffer commandBuffer, uint32_t stageCount, @@ -7422,7 +6331,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBindShadersEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampRangeEXT( VkCommandBuffer commandBuffer, VkDepthClampModeEXT depthClampMode, @@ -7430,8 +6338,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampRangeEXT( { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM( VkDevice device, VkFramebuffer framebuffer, @@ -7441,7 +6347,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM( VkDevice device, const VkRenderingInfo* pRenderingInfo, @@ -7450,11 +6355,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM( //Not a CREATE or DESTROY function return VK_SUCCESS; } - - - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeVectorPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -7463,7 +6363,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeVectorProperti //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL ConvertCooperativeVectorMatrixNV( VkDevice device, const VkConvertCooperativeVectorMatrixInfoNV* pInfo) @@ -7471,7 +6370,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL ConvertCooperativeVectorMatrixNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdConvertCooperativeVectorMatrixNV( VkCommandBuffer commandBuffer, uint32_t infoCount, @@ -7479,15 +6377,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdConvertCooperativeVectorMatrixNV( { //Not a CREATE or DESTROY function } - - - - - - - - - static VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV( VkDevice device, VkSwapchainKHR swapchain, @@ -7496,7 +6385,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL LatencySleepNV( VkDevice device, VkSwapchainKHR swapchain, @@ -7505,7 +6393,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL LatencySleepNV( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL SetLatencyMarkerNV( VkDevice device, VkSwapchainKHR swapchain, @@ -7513,7 +6400,6 @@ static VKAPI_ATTR void VKAPI_CALL SetLatencyMarkerNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetLatencyTimingsNV( VkDevice device, VkSwapchainKHR swapchain, @@ -7521,15 +6407,12 @@ static VKAPI_ATTR void VKAPI_CALL GetLatencyTimingsNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL QueueNotifyOutOfBandNV( VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR VkResult VKAPI_CALL CreateDataGraphPipelinesARM( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -7545,7 +6428,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDataGraphPipelinesARM( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CreateDataGraphPipelineSessionARM( VkDevice device, const VkDataGraphPipelineSessionCreateInfoARM* pCreateInfo, @@ -7556,7 +6438,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateDataGraphPipelineSessionARM( *pSession = (VkDataGraphPipelineSessionARM)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDataGraphPipelineSessionBindPointRequirementsARM( VkDevice device, const VkDataGraphPipelineSessionBindPointRequirementsInfoARM* pInfo, @@ -7566,7 +6447,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDataGraphPipelineSessionBindPointRequir //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetDataGraphPipelineSessionMemoryRequirementsARM( VkDevice device, const VkDataGraphPipelineSessionMemoryRequirementsInfoARM* pInfo, @@ -7574,7 +6454,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDataGraphPipelineSessionMemoryRequirementsA { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL BindDataGraphPipelineSessionMemoryARM( VkDevice device, uint32_t bindInfoCount, @@ -7583,7 +6462,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BindDataGraphPipelineSessionMemoryARM( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyDataGraphPipelineSessionARM( VkDevice device, VkDataGraphPipelineSessionARM session, @@ -7591,7 +6469,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDataGraphPipelineSessionARM( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL CmdDispatchDataGraphARM( VkCommandBuffer commandBuffer, VkDataGraphPipelineSessionARM session, @@ -7599,7 +6476,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDispatchDataGraphARM( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL GetDataGraphPipelineAvailablePropertiesARM( VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, @@ -7609,7 +6485,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDataGraphPipelineAvailablePropertiesARM //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetDataGraphPipelinePropertiesARM( VkDevice device, const VkDataGraphPipelineInfoARM* pPipelineInfo, @@ -7619,7 +6494,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetDataGraphPipelinePropertiesARM( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceQueueFamilyDataGraphPropertiesARM( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, @@ -7629,7 +6503,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceQueueFamilyDataGraphPrope //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyDataGraphProcessingEnginePropertiesARM( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceQueueFamilyDataGraphProcessingEngineInfoARM* pQueueFamilyDataGraphProcessingEngineInfo, @@ -7637,23 +6510,13 @@ static VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyDataGraphProcessin { //Not a CREATE or DESTROY function } - - - - - - - - static VKAPI_ATTR void VKAPI_CALL CmdSetAttachmentFeedbackLoopEnableEXT( VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask) { //Not a CREATE or DESTROY function } - #ifdef VK_USE_PLATFORM_SCREEN_QNX - static VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX( VkDevice device, const struct _screen_buffer* buffer, @@ -7663,20 +6526,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_SCREEN_QNX */ - - - - static VKAPI_ATTR void VKAPI_CALL CmdBindTileMemoryQCOM( VkCommandBuffer commandBuffer, const VkTileMemoryBindInfoQCOM* pTileMemoryBindInfo) { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateExternalComputeQueueNV( VkDevice device, const VkExternalComputeQueueCreateInfoNV* pCreateInfo, @@ -7684,10 +6539,9 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateExternalComputeQueueNV( VkExternalComputeQueueNV* pExternalQueue) { unique_lock_t lock(global_lock); - *pExternalQueue = (VkExternalComputeQueueNV)CreateDispObjHandle(); + *pExternalQueue = (VkExternalComputeQueueNV)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyExternalComputeQueueNV( VkDevice device, VkExternalComputeQueueNV externalQueue, @@ -7695,7 +6549,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyExternalComputeQueueNV( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL GetExternalComputeQueueDataNV( VkExternalComputeQueueNV externalQueue, VkExternalComputeQueueDataParamsNV* params, @@ -7703,13 +6556,6 @@ static VKAPI_ATTR void VKAPI_CALL GetExternalComputeQueueDataNV( { //Not a CREATE or DESTROY function } - - - - - - - static VKAPI_ATTR void VKAPI_CALL GetClusterAccelerationStructureBuildSizesNV( VkDevice device, const VkClusterAccelerationStructureInputInfoNV* pInfo, @@ -7717,15 +6563,12 @@ static VKAPI_ATTR void VKAPI_CALL GetClusterAccelerationStructureBuildSizesNV( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBuildClusterAccelerationStructureIndirectNV( VkCommandBuffer commandBuffer, const VkClusterAccelerationStructureCommandsInfoNV* pCommandInfos) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL GetPartitionedAccelerationStructuresBuildSizesNV( VkDevice device, const VkPartitionedAccelerationStructureInstancesInputNV* pInfo, @@ -7733,15 +6576,12 @@ static VKAPI_ATTR void VKAPI_CALL GetPartitionedAccelerationStructuresBuildSizes { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBuildPartitionedAccelerationStructuresNV( VkCommandBuffer commandBuffer, const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo) { //Not a CREATE or DESTROY function } - - static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsEXT( VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo, @@ -7749,7 +6589,6 @@ static VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsEXT( VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoEXT* pGeneratedCommandsInfo, @@ -7757,7 +6596,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsEXT( VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, @@ -7765,7 +6603,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutEXT( VkDevice device, const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo, @@ -7776,7 +6613,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutEXT( *pIndirectCommandsLayout = (VkIndirectCommandsLayoutEXT)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutEXT( VkDevice device, VkIndirectCommandsLayoutEXT indirectCommandsLayout, @@ -7784,7 +6620,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutEXT( { //Destroy object } - static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectExecutionSetEXT( VkDevice device, const VkIndirectExecutionSetCreateInfoEXT* pCreateInfo, @@ -7795,7 +6630,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectExecutionSetEXT( *pIndirectExecutionSet = (VkIndirectExecutionSetEXT)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyIndirectExecutionSetEXT( VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, @@ -7803,7 +6637,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyIndirectExecutionSetEXT( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetPipelineEXT( VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, @@ -7812,7 +6645,6 @@ static VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetPipelineEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetShaderEXT( VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, @@ -7821,11 +6653,7 @@ static VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetShaderEXT( { //Not a CREATE or DESTROY function } - - - #ifdef VK_USE_PLATFORM_OHOS - static VKAPI_ATTR VkResult VKAPI_CALL CreateSurfaceOHOS( VkInstance instance, const VkSurfaceCreateInfoOHOS* pCreateInfo, @@ -7837,9 +6665,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateSurfaceOHOS( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_OHOS */ - - - static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, @@ -7848,10 +6673,7 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexible //Not a CREATE or DESTROY function return VK_SUCCESS; } - - #ifdef VK_USE_PLATFORM_METAL_EXT - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT( VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, @@ -7860,7 +6682,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandlePropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, @@ -7871,24 +6692,12 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandlePropertiesEXT( return VK_SUCCESS; } #endif /* VK_USE_PLATFORM_METAL_EXT */ - - - - -#ifdef VK_ENABLE_BETA_EXTENSIONS -#endif /* VK_ENABLE_BETA_EXTENSIONS */ - - static VKAPI_ATTR void VKAPI_CALL CmdEndRendering2EXT( VkCommandBuffer commandBuffer, const VkRenderingEndInfoEXT* pRenderingEndInfo) { //Not a CREATE or DESTROY function } - - - - static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR( VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, @@ -7899,7 +6708,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR( *pAccelerationStructure = (VkAccelerationStructureKHR)global_unique_handle++; return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR( VkDevice device, VkAccelerationStructureKHR accelerationStructure, @@ -7907,7 +6715,6 @@ static VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR( { //Destroy object } - static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR( VkCommandBuffer commandBuffer, uint32_t infoCount, @@ -7916,7 +6723,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR( VkCommandBuffer commandBuffer, uint32_t infoCount, @@ -7927,7 +6733,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -7938,7 +6743,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -7947,7 +6751,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -7956,7 +6759,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -7965,7 +6767,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR( VkDevice device, uint32_t accelerationStructureCount, @@ -7978,28 +6779,24 @@ static VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureToMemoryKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddressKHR( VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) @@ -8007,7 +6804,6 @@ static VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddre // arbitrary - need to be aligned to 256 bytes return 0x262144; } - static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, @@ -8018,7 +6814,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR( VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, @@ -8026,7 +6821,6 @@ static VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR( VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, @@ -8039,8 +6833,6 @@ static VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR( pSizeInfo->updateScratchSize = 4; pSizeInfo->buildScratchSize = 4; } - - static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR( VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, @@ -8053,7 +6845,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, @@ -8069,7 +6860,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR( } return VK_SUCCESS; } - static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandlesKHR( VkDevice device, VkPipeline pipeline, @@ -8081,7 +6871,6 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandl //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR( VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, @@ -8092,7 +6881,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR( VkDevice device, VkPipeline pipeline, @@ -8102,16 +6890,12 @@ static VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR( //Not a CREATE or DESTROY function return VK_SUCCESS; } - static VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR( VkCommandBuffer commandBuffer, uint32_t pipelineStackSize) { //Not a CREATE or DESTROY function } - - - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksEXT( VkCommandBuffer commandBuffer, uint32_t groupCountX, @@ -8120,7 +6904,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectEXT( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -8130,7 +6913,6 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectEXT( { //Not a CREATE or DESTROY function } - static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountEXT( VkCommandBuffer commandBuffer, VkBuffer buffer, @@ -8145,3 +6927,4 @@ static VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountEXT( } // namespace vkmock + diff --git a/scripts/generate_source.py b/scripts/generate_source.py index 336e5ffb5..82bc213e0 100755 --- a/scripts/generate_source.py +++ b/scripts/generate_source.py @@ -1,9 +1,10 @@ #!/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-2025 Google Inc. -# Copyright (c) 2023-2025 RasterGrid Kft. +# Copyright (c) 2019 The Khronos Group Inc. +# Copyright (c) 2019 Valve Corporation +# Copyright (c) 2019 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. @@ -22,118 +23,218 @@ import argparse import filecmp import os -import re -import json import shutil -import subprocess import sys +import re import tempfile - +import json import common_codegen -# files to exclude from --verify check -verify_exclude = ['.clang-format'] +from xml.etree import ElementTree + +# 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, video_registry: str, directory: str, styleFile: str, targetFilter: str, flatOutput: bool): + + try: + common_codegen.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: + print("ModuleNotFoundError: No module named 'reg'") # normal python error message + 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 generators.mock_icd_generator import MockICDOutputGenerator + from generators.vulkan_tools_helper_file_generator import HelperFileOutputGenerator + from generators.vulkaninfo_generator import VulkanInfoGenerator + + # 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) + + # Generated directory and dispatch table helper file name may be API specific (e.g. Vulkan SC) + mock_icd_generated_directory = 'icd/generated' + vulkaninfo_generated_directory = 'vulkaninfo/generated' + + generators.update({ + 'vk_typemap_helper.h': { + 'generator' : HelperFileOutputGenerator, + 'genCombined': False, + 'directory' : mock_icd_generated_directory, + }, + 'function_declarations.h': { + 'generator' : MockICDOutputGenerator, + 'genCombined': False, + 'directory' : mock_icd_generated_directory, + }, + 'function_definitions.h': { + 'generator' : MockICDOutputGenerator, + 'genCombined': False, + 'directory' : mock_icd_generated_directory, + }, + 'vulkaninfo.hpp': { + 'generator' : VulkanInfoGenerator, + 'genCombined': False, + 'directory' : vulkaninfo_generated_directory, + }, + }) + + 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) + + # Set the path to the video registry so that videoStd is available + reg.genOpts.videoXmlPath = video_registry + + # Finally, use the output generator to create the requested target + reg.apiGen() + + # Run clang-format on the file + if has_clang_format and styleFile: + common_codegen.RunShellCmd(f'clang-format -i --style=file:{styleFile} {os.path.join(outDirectory, target)}') + def main(argv): + + # files to exclude from --verify check + verify_exclude = ['.clang-format'] # 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', 'vulkansc'], help='Specify API name to generate') parser.add_argument('--generated-version', help='sets the header version used to generate the repo') - parser.add_argument('registry', metavar='REGISTRY_PATH', help='path to the Vulkan-Headers registry directory') 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) - # output paths and the list of files in the path - files_to_gen = {str(os.path.join('icd','generated')) : ['vk_typemap_helper.h', - 'function_definitions.h', - 'function_declarations.h'], - str(os.path.join('vulkaninfo','generated')): ['vulkaninfo.hpp']} - - #base directory for the source repository - repo_dir = common_codegen.repo_relative('') - - # Update the api_version in the respective json files - if args.generated_version: - json_files = [] - json_files.append(common_codegen.repo_relative('icd/VkICD_mock_icd.json.in')) - for json_file in json_files: - with open(json_file) as f: - data = json.load(f) - - data["ICD"]["api_version"] = args.generated_version - - with open(json_file, mode='w', encoding='utf-8', newline='\n') as f: - f.write(json.dumps(data, indent=4)) - - # get directory where generators will run if needed - if args.verify or args.incremental: - # generate in temp directory so we can compare or copy later - temp_obj = tempfile.TemporaryDirectory(prefix='VulkanLoader_generated_source_') - temp_dir = temp_obj.name - for path in files_to_gen.keys(): - os.makedirs(os.path.join(temp_dir, path)) + repo_dir = common_codegen.repo_relative('.') registry = os.path.abspath(os.path.join(args.registry, 'vk.xml')) - if not os.path.isfile(registry): + video_registry = os.path.abspath(os.path.join(args.registry, 'video.xml')) + if not os.path.isfile(registry) and 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 + video_registry = os.path.abspath(os.path.join(args.registry, 'Vulkan-Headers/registry/video.xml')) + if not os.path.isfile(video_registry): + print(f'{video_registry} does not exist') + return -1 + + # Need pass style file incase running with --verify and it can't find the file automatically in the temp directory + style_file = os.path.join(repo_dir, '.clang-format') - # run each code generator - for path, filenames in files_to_gen.items(): - for filename in filenames: - if args.verify or args.incremental: - output_path = os.path.join(temp_dir, path) - else: - output_path = common_codegen.repo_relative(path) - - cmd = [common_codegen.repo_relative(os.path.join('scripts','kvt_genvk.py')), - '-api', args.api, - '-registry', registry, - '-quiet', '-directory', output_path, filename] - print(' '.join(cmd)) - try: - if args.verify or args.incremental: - subprocess.check_call([sys.executable] + cmd, cwd=temp_dir) - else: - subprocess.check_call([sys.executable] + cmd, cwd=repo_dir) - - except Exception as e: - print('ERROR:', str(e)) - return 1 + # 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='vulkan_tools_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, video_registry=video_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 = {} - for path in files_to_gen.keys(): - temp_files[path] = set() - temp_files[path].update(set(os.listdir(os.path.join(temp_dir, path)))) - repo_files = {} - for path in files_to_gen.keys(): - repo_files[path] = set() - repo_files[path].update(set(os.listdir(os.path.join(repo_dir, path))) - set(verify_exclude)) + 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 path in files_to_gen.keys(): - for filename in sorted((temp_files[path] | repo_files[path])): - if filename not in repo_files[path]: - print('ERROR: Missing repo file', filename) - files_match = False - elif filename not in temp_files[path]: - print('ERROR: Missing generator for', filename) - files_match = False - elif not filecmp.cmp(os.path.join(temp_dir, path, filename), - os.path.join(repo_dir, path, filename), - shallow=False): - print('ERROR: Repo files do not match generator output for', filename) - files_match = False + 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: @@ -143,17 +244,27 @@ def main(argv): elif args.incremental: # copy missing or differing files from temp directory to repo - for path in files_to_gen.keys(): - for filename in os.listdir(os.path.join(temp_dir,path)): - temp_filename = os.path.join(temp_dir, path, filename) - repo_filename = os.path.join(repo_dir, path, 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) + 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: + json_files = [] + json_files.append(common_codegen.repo_relative('icd/VkICD_mock_icd.json.in')) + for json_file in json_files: + with open(json_file) as f: + data = json.load(f) + + data["ICD"]["api_version"] = args.generated_version + + with open(json_file, mode='w', encoding='utf-8', newline='\n') as f: + f.write(json.dumps(data, indent=4)) + # Update the CMake project version with open(common_codegen.repo_relative('CMakeLists.txt'), "r+") as f: data = f.read() diff --git a/scripts/generators/mock_icd_generator.py b/scripts/generators/mock_icd_generator.py index f64f4af03..c78253cef 100644 --- a/scripts/generators/mock_icd_generator.py +++ b/scripts/generators/mock_icd_generator.py @@ -25,9 +25,7 @@ # in its initial state. Rather it's intended to be a starting point that # can be copied and customized to assist in creation of a new layer. -import os,re,sys -from generator import * -from common_codegen import * +from base_generator import BaseGenerator CUSTOM_C_INTERCEPTS = { 'vkCreateInstance': ''' @@ -1200,323 +1198,80 @@ ''' } -# MockICDGeneratorOptions - subclass of GeneratorOptions. -# -# Adds options used by MockICDOutputGenerator objects during Mock -# ICD generation. -# -# Additional members -# prefixText - list of strings to prefix generated header with -# (usually a copyright statement + calling convention macros). -# protectFile - True if multiple inclusion protection should be -# generated (based on the filename) around the entire header. -# protectFeature - True if #ifndef..#endif protection should be -# generated around a feature interface in the header file. -# genFuncPointers - True if function pointer typedefs should be -# generated -# protectProto - If conditional protection should be generated -# around prototype declarations, set to either '#ifdef' -# to require opt-in (#ifdef protectProtoStr) or '#ifndef' -# to require opt-out (#ifndef protectProtoStr). Otherwise -# set to None. -# protectProtoStr - #ifdef/#ifndef symbol to use around prototype -# declarations, if protectProto is set -# apicall - string to use for the function declaration prefix, -# such as APICALL on Windows. -# apientry - string to use for the calling convention macro, -# in typedefs, such as APIENTRY. -# apientryp - string to use for the calling convention macro -# in function pointer typedefs, such as APIENTRYP. -# indentFuncProto - True if prototype declarations should put each -# parameter on a separate line -# indentFuncPointer - True if typedefed function pointers should put each -# parameter on a separate line -# alignFuncParam - if nonzero and parameters are being put on a -# separate line, align parameter names at the specified column -class MockICDGeneratorOptions(GeneratorOptions): - def __init__(self, - conventions = None, - filename = None, - directory = '.', - genpath = None, - apiname = None, - profile = None, - versions = '.*', - emitversions = '.*', - defaultExtensions = None, - addExtensions = None, - removeExtensions = None, - emitExtensions = None, - sortProcedure = regSortFeatures, - prefixText = "", - genFuncPointers = True, - protectFile = True, - protectFeature = True, - protectProto = None, - protectProtoStr = None, - apicall = '', - apientry = '', - apientryp = '', - indentFuncProto = True, - indentFuncPointer = False, - alignFuncParam = 0, - expandEnumerants = True, - helper_file_type = ''): - GeneratorOptions.__init__(self, - conventions = conventions, - filename = filename, - directory = directory, - genpath = genpath, - apiname = apiname, - profile = profile, - versions = versions, - emitversions = emitversions, - defaultExtensions = defaultExtensions, - addExtensions = addExtensions, - removeExtensions = removeExtensions, - emitExtensions = emitExtensions, - sortProcedure = sortProcedure) - self.prefixText = prefixText - self.genFuncPointers = genFuncPointers - self.protectFile = protectFile - self.protectFeature = protectFeature - self.protectProto = protectProto - self.protectProtoStr = protectProtoStr - self.apicall = apicall - self.apientry = apientry - self.apientryp = apientryp - self.indentFuncProto = indentFuncProto - self.indentFuncPointer = indentFuncPointer - self.alignFuncParam = alignFuncParam - -# MockICDOutputGenerator - subclass of OutputGenerator. +# MockICDOutputGenerator # Generates a mock vulkan ICD. # This is intended to be a minimal replacement for a vulkan device in order -# to enable Vulkan Validation testing. +# to enable testing of Vulkan applications and layers # -# ---- methods ---- -# MockOutputGenerator(errFile, warnFile, diagFile) - args as for -# OutputGenerator. Defines additional internal state. -# ---- methods overriding base class ---- -# beginFile(genOpts) -# endFile() -# beginFeature(interface, emit) -# endFeature() -# genType(typeinfo,name) -# genStruct(typeinfo,name) -# genGroup(groupinfo,name) -# genEnum(enuminfo, name) -# genCmd(cmdinfo) -class MockICDOutputGenerator(OutputGenerator): - """Generate specified API interfaces in a specific style, such as a C header""" - # This is an ordered list of sections in the header file. - TYPE_SECTIONS = ['include', 'define', 'basetype', 'handle', 'enum', - 'group', 'bitmask', 'funcpointer', 'struct'] - ALL_SECTIONS = TYPE_SECTIONS + ['command'] - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - # Internal state - accumulators for different inner block text - self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) - self.intercepts = [] - self.function_declarations = False - - # Check if the parameter passed in is a pointer to an array - def paramIsArray(self, param): - return param.attrib.get('len') is not None - - # Check if the parameter passed in is a pointer - def paramIsPointer(self, param): - ispointer = False - for elem in param: - if ((elem.tag != 'type') and (elem.tail is not None)) and '*' in elem.tail: - ispointer = True - return ispointer +class MockICDOutputGenerator(BaseGenerator): + def __init__(self): + BaseGenerator.__init__(self) - # Check if an object is a non-dispatchable handle - def isHandleTypeNonDispatchable(self, handletype): - handle = self.registry.tree.find("types/type/[name='" + handletype + "'][@category='handle']") - if handle is not None and handle.find('type').text == 'VK_DEFINE_NON_DISPATCHABLE_HANDLE': - return True - else: - return False - - # Check if an object is a dispatchable handle - def isHandleTypeDispatchable(self, handletype): - handle = self.registry.tree.find("types/type/[name='" + handletype + "'][@category='handle']") - if handle is not None and handle.find('type').text == 'VK_DEFINE_HANDLE': - return True - else: - return False + # Ignore extensions that ICDs should not implement or are not safe to report + self.ignore_exts = ['VK_EXT_validation_cache', 'VK_KHR_portability_subset'] - # Check that the target API is in the supported list for the extension - def checkExtensionAPISupport(self, supported): - return self.genOpts.apiname in supported.split(',') + # Dispatchable handles + self.dispatchable_handles = ['VkInstance','VkPhysicalDevice', 'VkDevice', 'VkCommandBuffer', 'VkQueue'] - def beginFile(self, genOpts): - OutputGenerator.beginFile(self, genOpts) - # C-specific - # - # Multiple inclusion protection & C++ namespace. - if (genOpts.protectFile and self.genOpts.filename == "function_declarations.h"): - self.function_declarations = True + def generate_function_declarations(self, out): - # User-supplied prefix text, if any (list of strings) - if (genOpts.prefixText): - for s in genOpts.prefixText: - write(s, file=self.outFile) - - if self.function_declarations: - self.newline() - # Include all of the extensions in ICD except specific ignored ones - device_exts = [] - instance_exts = [] - # Ignore extensions that ICDs should not implement or are not safe to report - ignore_exts = ['VK_EXT_validation_cache', 'VK_KHR_portability_subset'] - for ext in self.registry.tree.findall("extensions/extension"): - if self.checkExtensionAPISupport(ext.attrib['supported']): # Only include API-relevant extensions - if (ext.attrib['name'] not in ignore_exts): - # Search for extension version enum - for enum in ext.findall('require/enum'): - if enum.get('name', '').endswith('_SPEC_VERSION'): - ext_version = enum.get('value') - if (ext.attrib.get('type') == 'instance'): - instance_exts.append(' {"%s", %s},' % (ext.attrib['name'], ext_version)) - else: - device_exts.append(' {"%s", %s},' % (ext.attrib['name'], ext_version)) - break - write('#pragma once\n',file=self.outFile) - write('#include ',file=self.outFile) - write('#include ',file=self.outFile) - write('#include ',file=self.outFile) - write('#include ',file=self.outFile) - write('#include ',file=self.outFile) - self.newline() - write('namespace vkmock {\n', file=self.outFile) - write('// Map of instance extension name to version', file=self.outFile) - write('static const std::unordered_map instance_extension_map = {', file=self.outFile) - write('\n'.join(instance_exts), file=self.outFile) - write('};', file=self.outFile) - write('// Map of device extension name to version', file=self.outFile) - write('static const std::unordered_map device_extension_map = {', file=self.outFile) - write('\n'.join(device_exts), file=self.outFile) - write('};', file=self.outFile) - else: - write('#pragma once\n',file=self.outFile) - write('#include "mock_icd.h"',file=self.outFile) - write('#include "function_declarations.h"\n',file=self.outFile) - write('namespace vkmock {', file=self.outFile) + out.append('#include \n') + out.append('#include \n') + out.append('#include \n') + out.append('#include \n') + out.append('#include \n') + out.append('\n') + out.append('namespace vkmock {\n') + out.append('// Map of instance extension name to version\n') + out.append('static const std::unordered_map instance_extension_map = {\n') + for ext in [x for x in self.vk.extensions.values() if x.instance and x.name not in self.ignore_exts]: + if ext.protect: + out.append(f'#ifdef {ext.protect}\n') + out.append(f' {{"{ext.name}", {ext.specVersion}}},\n') + if ext.protect: + out.append('#endif\n') + out.append('};\n') + out.append('// Map of device extension name to version\n') + out.append('static const std::unordered_map device_extension_map = {\n') + for ext in [x for x in self.vk.extensions.values() if x.device and x.name not in self.ignore_exts]: + if ext.protect: + out.append(f'#ifdef {ext.protect}\n') + out.append(f' {{"{ext.name}", {ext.specVersion}}},\n') + if ext.protect: + out.append('#endif\n') + out.append('};\n') + current_protect = None + for name, cmd in self.vk.commands.items(): + prepend_newline = '\n' + if cmd.protect != current_protect: + if current_protect is not None: + out.append(f'#endif /* {current_protect} */\n') + prepend_newline = '' + if current_protect is not None and cmd.protect is not None: + out.append('\n') + if cmd.protect is not None: + out.append(f'#ifdef {cmd.protect}\n') + current_protect = cmd.protect + out.append(f'{prepend_newline}static {cmd.cPrototype.replace(name, name[2:])}\n') + if current_protect is not None: + out.append('#endif\n') - def endFile(self): - # C-specific - # Finish C++ namespace - self.newline() - if self.function_declarations: # record intercepted procedures - write('// Map of all APIs to be intercepted by this layer', file=self.outFile) - write('static const std::unordered_map name_to_funcptr_map = {', file=self.outFile) - write('\n'.join(self.intercepts), file=self.outFile) - write('};\n', file=self.outFile) - write('} // namespace vkmock', file=self.outFile) - self.newline() + out.append('// Map of all APIs to be intercepted by this layer\n') + out.append('static const std::unordered_map name_to_funcptr_map = {\n') + for name, cmd in self.vk.commands.items(): + if cmd.protect: + out.append(f'#ifdef {cmd.protect}\n') + out.append(f' {{"{name}", (void*){name[2:]}}},\n') + if cmd.protect: + out.append('#endif\n') + out.append('};\n') - # Finish processing in superclass - OutputGenerator.endFile(self) - def beginFeature(self, interface, emit): - #write('// starting beginFeature', file=self.outFile) - # Start processing in superclass - OutputGenerator.beginFeature(self, interface, emit) - self.featureExtraProtect = GetFeatureProtect(interface) - # C-specific - # Accumulate includes, defines, types, enums, function pointer typedefs, - # end function prototypes separately for this feature. They're only - # printed in endFeature(). - self.sections = dict([(section, []) for section in self.ALL_SECTIONS]) - #write('// ending beginFeature', file=self.outFile) - def endFeature(self): - # C-specific - # Actually write the interface to the output file. - #write('// starting endFeature', file=self.outFile) - if (self.emit): - self.newline() - if (self.genOpts.protectFeature): - write('#ifndef', self.featureName, file=self.outFile) - # If type declarations are needed by other features based on - # this one, it may be necessary to suppress the ExtraProtect, - # or move it below the 'for section...' loop. - #write('// endFeature looking at self.featureExtraProtect', file=self.outFile) - if (self.featureExtraProtect != None): - write('#ifdef', self.featureExtraProtect, file=self.outFile) - #write('#define', self.featureName, '1', file=self.outFile) - for section in self.TYPE_SECTIONS: - #write('// endFeature writing section'+section, file=self.outFile) - contents = self.sections[section] - if contents: - write('\n'.join(contents), file=self.outFile) - self.newline() - #write('// endFeature looking at self.sections[command]', file=self.outFile) - if (self.sections['command']): - write('\n'.join(self.sections['command']), end=u'', file=self.outFile) - self.newline() - if (self.featureExtraProtect != None): - write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile) - if (self.genOpts.protectFeature): - write('#endif /*', self.featureName, '*/', file=self.outFile) - # Finish processing in superclass - OutputGenerator.endFeature(self) - #write('// ending endFeature', file=self.outFile) - # - # Append a definition to the specified section - def appendSection(self, section, text): - # self.sections[section].append('SECTION: ' + section + '\n') - self.sections[section].append(text) - # - # Type generation - def genType(self, typeinfo, name, alias): - pass - # - # Struct (e.g. C "struct" type) generation. - # This is a special case of the tag where the contents are - # interpreted as a set of tags instead of freeform C - # C type declarations. The tags are just like - # tags - they are a declaration of a struct or union member. - # Only simple member declarations are supported (no nested - # structs etc.) - def genStruct(self, typeinfo, typeName, alias): - OutputGenerator.genStruct(self, typeinfo, typeName, alias) - body = 'typedef ' + typeinfo.elem.get('category') + ' ' + typeName + ' {\n' - # paramdecl = self.makeCParamDecl(typeinfo.elem, self.genOpts.alignFuncParam) - for member in typeinfo.elem.findall('.//member'): - body += self.makeCParamDecl(member, self.genOpts.alignFuncParam) - body += ';\n' - body += '} ' + typeName + ';\n' - self.appendSection('struct', body) - # - # Group (e.g. C "enum" type) generation. - # These are concatenated together with other types. - def genGroup(self, groupinfo, groupName, alias): - pass - # Enumerant generation - # tags may specify their values in several ways, but are usually - # just integers. - def genEnum(self, enuminfo, name, alias): - pass - # - # Command generation - def genCmd(self, cmdinfo, name, alias): - decls = self.makeCDecls(cmdinfo.elem) - if self.function_declarations: # In the header declare all intercepts - self.appendSection('command', '') - self.appendSection('command', 'static %s' % (decls[0])) - if (self.featureExtraProtect != None): - self.intercepts += [ '#ifdef %s' % self.featureExtraProtect ] - self.intercepts += [ ' {"%s", (void*)%s},' % (name,name[2:]) ] - if (self.featureExtraProtect != None): - self.intercepts += [ '#endif' ] - return + def generate_function_definitions(self, out): + out.append('#include "mock_icd.h"\n') + out.append('#include "function_declarations.h"\n') + out.append('namespace vkmock {\n') manual_functions = [ # Include functions here to be intercepted w/ manually implemented function bodies @@ -1537,99 +1292,127 @@ def genCmd(self, cmdinfo, name, alias): 'vkEnumerateDeviceLayerProperties', 'vkEnumerateDeviceExtensionProperties', ] - if name in manual_functions: - self.appendSection('command', '') - if name not in CUSTOM_C_INTERCEPTS: - self.appendSection('command', '// declare only') - self.appendSection('command', 'static %s' % (decls[0])) - self.appendSection('command', '// TODO: Implement custom intercept body') - else: - self.appendSection('command', 'static %s' % (decls[0][:-1])) - self.appendSection('command', '{\n%s}' % (CUSTOM_C_INTERCEPTS[name])) - self.intercepts += [ ' {"%s", (void*)%s},' % (name,name[2:]) ] - return - # record that the function will be intercepted - if (self.featureExtraProtect != None): - self.intercepts += [ '#ifdef %s' % self.featureExtraProtect ] - self.intercepts += [ ' {"%s", (void*)%s},' % (name,name[2:]) ] - if (self.featureExtraProtect != None): - self.intercepts += [ '#endif' ] + current_protect = None + for name, cmd in self.vk.commands.items(): + if cmd.protect != current_protect: + if current_protect is not None: + out.append(f'#endif /* {current_protect} */\n') + if current_protect is not None and cmd.protect is not None: + out.append('\n') + if cmd.protect is not None: + out.append(f'#ifdef {cmd.protect}\n') + current_protect = cmd.protect + + if name in manual_functions: + if name not in CUSTOM_C_INTERCEPTS: + out.append(f'static {cmd.cPrototype.replace(name, name[2:])}\n') + out.append('// TODO: Implement custom intercept body\n') + else: + out.append(f'static {cmd.cPrototype[:-1].replace(name, name[2:])}\n') + out.append(f'{{{CUSTOM_C_INTERCEPTS[name]}}}\n') + continue + + out.append(f'static {cmd.cPrototype[:-1].replace(name, name[2:])}\n') + if name in CUSTOM_C_INTERCEPTS: + out.append(f'{{{CUSTOM_C_INTERCEPTS[name]}}}\n') + continue - OutputGenerator.genCmd(self, cmdinfo, name, alias) - # - self.appendSection('command', '') - self.appendSection('command', 'static %s' % (decls[0][:-1])) - if name in CUSTOM_C_INTERCEPTS: - self.appendSection('command', '{%s}' % (CUSTOM_C_INTERCEPTS[name])) - return + # if the name w/ KHR postfix is in the CUSTOM_C_INTERCEPTS + # Call the KHR custom version instead of generating separate code + khr_name = name + "KHR" + if khr_name in CUSTOM_C_INTERCEPTS: + return_string = '' + if cmd.returnType != 'void': + return_string = 'return ' - # Declare result variable, if any. - resulttype = cmdinfo.elem.find('proto/type') - if (resulttype != None and resulttype.text == 'void'): - resulttype = None - # if the name w/ KHR postfix is in the CUSTOM_C_INTERCEPTS - # Call the KHR custom version instead of generating separate code - khr_name = name + "KHR" - if khr_name in CUSTOM_C_INTERCEPTS: - return_string = '' - if resulttype != None: - return_string = 'return ' - params = cmdinfo.elem.findall('param/name') - param_names = [] - for param in params: - param_names.append(param.text) - self.appendSection('command', '{\n %s%s(%s);\n}' % (return_string, khr_name[2:], ", ".join(param_names))) - return - self.appendSection('command', '{') + param_names = [] + for param in cmd.params: + param_names.append(param.name) + out.append(f'{{\n {return_string}{khr_name[2:]}({", ".join(param_names)});\n}}\n') + continue + out.append('{\n') - api_function_name = cmdinfo.elem.attrib.get('name') - # GET THE TYPE OF FUNCTION - if any(api_function_name.startswith(ftxt) for ftxt in ('vkCreate', 'vkAllocate')): - # Get last param - last_param = cmdinfo.elem.findall('param')[-1] - lp_txt = last_param.find('name').text - lp_len = None - if ('len' in last_param.attrib): - lp_len = last_param.attrib['len'] - lp_len = lp_len.replace('::', '->') - lp_type = last_param.find('type').text - handle_type = 'dispatchable' - allocator_txt = 'CreateDispObjHandle()'; - if (self.isHandleTypeNonDispatchable(lp_type)): - handle_type = 'non-' + handle_type - allocator_txt = 'global_unique_handle++'; - # Need to lock in both cases - self.appendSection('command', ' unique_lock_t lock(global_lock);') - if (lp_len != None): - #print("%s last params (%s) has len %s" % (handle_type, lp_txt, lp_len)) - self.appendSection('command', ' for (uint32_t i = 0; i < %s; ++i) {' % (lp_len)) - self.appendSection('command', ' %s[i] = (%s)%s;' % (lp_txt, lp_type, allocator_txt)) - self.appendSection('command', ' }') + # GET THE TYPE OF FUNCTION + if any(name.startswith(ftxt) for ftxt in ('vkCreate', 'vkAllocate')): + # Get last param + last_param = cmd.params[-1] + lp_txt = last_param.name + lp_len = None + if last_param.length is not None: + lp_len = last_param.length + lp_len = lp_len.replace('::', '->') + lp_type = last_param.type + handle_type = 'dispatchable' + allocator_txt = 'CreateDispObjHandle()' + if lp_type not in self.dispatchable_handles: + handle_type = 'non-' + handle_type + allocator_txt = 'global_unique_handle++' + # Need to lock in both cases + out.append(' unique_lock_t lock(global_lock);\n') + if lp_len is not None: + #print("%s last params (%s) has len %s" % (handle_type, lp_txt, lp_len)) + out.append(f' for (uint32_t i = 0; i < {lp_len}; ++i) {{\n') + out.append(f' {lp_txt}[i] = ({lp_type}){allocator_txt};\n') + out.append(' }\n') + else: + #print("Single %s last param is '%s' w/ type '%s'" % (handle_type, lp_txt, lp_type)) + if 'AllocateMemory' in name: + # Store allocation size in case it's mapped + out.append(' allocated_memory_size_map[(VkDeviceMemory)global_unique_handle] = pAllocateInfo->allocationSize;\n') + out.append(f' *{lp_txt} = ({lp_type}){allocator_txt};\n') + elif True in [ftxt in name for ftxt in ['Destroy', 'Free']]: + out.append('//Destroy object\n') + if 'FreeMemory' in name: + # If the memory is mapped, unmap it + out.append(' UnmapMemory(device, memory);\n') + # Remove from allocation map + out.append(' unique_lock_t lock(global_lock);\n') + out.append(' allocated_memory_size_map.erase(memory);\n') else: - #print("Single %s last param is '%s' w/ type '%s'" % (handle_type, lp_txt, lp_type)) - if 'AllocateMemory' in api_function_name: - # Store allocation size in case it's mapped - self.appendSection('command', ' allocated_memory_size_map[(VkDeviceMemory)global_unique_handle] = pAllocateInfo->allocationSize;') - self.appendSection('command', ' *%s = (%s)%s;' % (lp_txt, lp_type, allocator_txt)) - elif True in [ftxt in api_function_name for ftxt in ['Destroy', 'Free']]: - self.appendSection('command', '//Destroy object') - if 'FreeMemory' in api_function_name: - # If the memory is mapped, unmap it - self.appendSection('command', ' UnmapMemory(device, memory);') - # Remove from allocation map - self.appendSection('command', ' unique_lock_t lock(global_lock);') - self.appendSection('command', ' allocated_memory_size_map.erase(memory);') + out.append('//Not a CREATE or DESTROY function\n') + + # Return result variable, if any. + if cmd.returnType != 'void': + if name == 'vkGetEventStatus': + out.append(' return VK_EVENT_SET;\n') + else: + out.append(' return VK_SUCCESS;\n') + out.append('}\n') + if current_protect is not None: + out.append('#endif\n') + + def generate(self): + out = [] + out.append('''/* +** Copyright (c) 2015-2025 The Khronos Group Inc. +** +** 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. +*/ + +/* +** This header is generated from the Khronos Vulkan XML API Registry. +** +*/ + +#pragma once +''') + + if self.filename == "function_declarations.h": + self.generate_function_declarations(out) else: - self.appendSection('command', '//Not a CREATE or DESTROY function') + self.generate_function_definitions(out) - # Return result variable, if any. - if (resulttype != None): - if api_function_name == 'vkGetEventStatus': - self.appendSection('command', ' return VK_EVENT_SET;') - else: - self.appendSection('command', ' return VK_SUCCESS;') - self.appendSection('command', '}') - # - # override makeProtoName to drop the "vk" prefix - def makeProtoName(self, name, tail): - return self.genOpts.apientry + name[2:] + tail + out.append('\n') + out.append('} // namespace vkmock\n') + out.append('\n') + self.write(''.join(out)) diff --git a/scripts/generators/vulkan_tools_helper_file_generator.py b/scripts/generators/vulkan_tools_helper_file_generator.py index b0e486ef6..baf3e8165 100644 --- a/scripts/generators/vulkan_tools_helper_file_generator.py +++ b/scripts/generators/vulkan_tools_helper_file_generator.py @@ -21,1220 +21,143 @@ # Author: Tobin Ehlis # Author: John Zulauf -import os,re,sys -import xml.etree.ElementTree as etree -from generator import * -from collections import namedtuple -from common_codegen import * +from base_generator import BaseGenerator -# -# HelperFileOutputGeneratorOptions - subclass of GeneratorOptions. -class HelperFileOutputGeneratorOptions(GeneratorOptions): - def __init__(self, - conventions = None, - filename = None, - directory = '.', - genpath = None, - apiname = None, - profile = None, - versions = '.*', - emitversions = '.*', - defaultExtensions = None, - addExtensions = None, - removeExtensions = None, - emitExtensions = None, - sortProcedure = regSortFeatures, - prefixText = "", - genFuncPointers = True, - protectFile = True, - protectFeature = True, - apicall = '', - apientry = '', - apientryp = '', - alignFuncParam = 0, - library_name = '', - expandEnumerants = True, - helper_file_type = ''): - GeneratorOptions.__init__(self, - conventions = conventions, - filename = filename, - directory = directory, - genpath = genpath, - apiname = apiname, - profile = profile, - versions = versions, - emitversions = emitversions, - defaultExtensions = defaultExtensions, - addExtensions = addExtensions, - removeExtensions = removeExtensions, - emitExtensions = emitExtensions, - sortProcedure = sortProcedure) - self.prefixText = prefixText - self.genFuncPointers = genFuncPointers - self.protectFile = protectFile - self.protectFeature = protectFeature - self.apicall = apicall - self.apientry = apientry - self.apientryp = apientryp - self.alignFuncParam = alignFuncParam - self.library_name = library_name - self.helper_file_type = helper_file_type -# # HelperFileOutputGenerator - subclass of OutputGenerator. Outputs Vulkan helper files -class HelperFileOutputGenerator(OutputGenerator): - """Generate helper file based on XML element attributes""" - def __init__(self, - errFile = sys.stderr, - warnFile = sys.stderr, - diagFile = sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - # Internal state - accumulators for different inner block text - self.enum_output = '' # string built up of enum string routines - # Internal state - accumulators for different inner block text - self.structNames = [] # List of Vulkan struct typenames - self.structTypes = dict() # Map of Vulkan struct typename to required VkStructureType - self.structMembers = [] # List of StructMemberData records for all Vulkan structs - self.object_types = [] # List of all handle types - self.object_type_aliases = [] # Aliases to handles types (for handles that were extensions) - self.debug_report_object_types = [] # Handy copy of debug_report_object_type enum data - self.core_object_types = [] # Handy copy of core_object_type enum data - self.device_extension_info = dict() # Dict of device extension name defines and ifdef values - self.instance_extension_info = dict() # Dict of instance extension name defines and ifdef values - - # Named tuples to store struct and command data - self.StructType = namedtuple('StructType', ['name', 'value']) - self.CommandParam = namedtuple('CommandParam', ['type', 'name', 'ispointer', 'isstaticarray', 'isconst', 'iscount', 'len', 'extstructs', 'cdecl']) - self.StructMemberData = namedtuple('StructMemberData', ['name', 'members', 'ifdef_protect']) - - self.custom_construct_params = { - # safe_VkGraphicsPipelineCreateInfo needs to know if subpass has color and\or depth\stencil attachments to use its pointers - 'VkGraphicsPipelineCreateInfo' : - ', const bool uses_color_attachment, const bool uses_depthstencil_attachment', - # safe_VkPipelineViewportStateCreateInfo needs to know if viewport and scissor is dynamic to use its pointers - 'VkPipelineViewportStateCreateInfo' : - ', const bool is_dynamic_viewports, const bool is_dynamic_scissors', - } - # - # Called once at the beginning of each run - def beginFile(self, genOpts): - OutputGenerator.beginFile(self, genOpts) - # User-supplied prefix text, if any (list of strings) - self.helper_file_type = genOpts.helper_file_type - self.library_name = genOpts.library_name - # File Comment - file_comment = '// *** THIS FILE IS GENERATED - DO NOT EDIT ***\n' - file_comment += '// See vulkan_tools_helper_file_generator.py for modifications\n' - write(file_comment, file=self.outFile) - # Copyright Notice - copyright = '' - copyright += '\n' - copyright += '/***************************************************************************\n' - copyright += ' *\n' - copyright += ' * Copyright (c) 2015-2017 The Khronos Group Inc.\n' - copyright += ' * Copyright (c) 2015-2017 Valve Corporation\n' - copyright += ' * Copyright (c) 2015-2017 LunarG, Inc.\n' - copyright += ' * Copyright (c) 2015-2017 Google Inc.\n' - copyright += ' *\n' - copyright += ' * Licensed under the Apache License, Version 2.0 (the "License");\n' - copyright += ' * you may not use this file except in compliance with the License.\n' - copyright += ' * You may obtain a copy of the License at\n' - copyright += ' *\n' - copyright += ' * http://www.apache.org/licenses/LICENSE-2.0\n' - copyright += ' *\n' - copyright += ' * Unless required by applicable law or agreed to in writing, software\n' - copyright += ' * distributed under the License is distributed on an "AS IS" BASIS,\n' - copyright += ' * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n' - copyright += ' * See the License for the specific language governing permissions and\n' - copyright += ' * limitations under the License.\n' - copyright += ' *\n' - copyright += ' * Author: Mark Lobodzinski \n' - copyright += ' * Author: Courtney Goeltzenleuchter \n' - copyright += ' * Author: Tobin Ehlis \n' - copyright += ' * Author: Chris Forbes \n' - copyright += ' * Author: John Zulauf\n' - copyright += ' *\n' - copyright += ' ****************************************************************************/\n' - write(copyright, file=self.outFile) - # - # Write generated file content to output file - def endFile(self): - dest_file = '' - dest_file += self.OutputDestFile() - # Remove blank lines at EOF - if dest_file.endswith('\n'): - dest_file = dest_file[:-1] - write(dest_file, file=self.outFile); - # Finish processing in superclass - OutputGenerator.endFile(self) - # - # Override parent class to be notified of the beginning of an extension - def beginFeature(self, interface, emit): - # Start processing in superclass - OutputGenerator.beginFeature(self, interface, emit) - self.featureExtraProtect = GetFeatureProtect(interface) - - if interface.tag != 'extension': - return - name = self.featureName - for enum in interface.findall('require/enum'): - if enum.get('name', '').endswith('EXTENSION_NAME'): - name_define = enum.get('name') - break - requires = interface.get('requires') - if requires is not None: - required_extensions = requires.split(',') - else: - required_extensions = list() - info = { 'define': name_define, 'ifdef':self.featureExtraProtect, 'reqs':required_extensions } - if interface.get('type') == 'instance': - self.instance_extension_info[name] = info - else: - self.device_extension_info[name] = info - - # - # Override parent class to be notified of the end of an extension - def endFeature(self): - # Finish processing in superclass - OutputGenerator.endFeature(self) - # - # Grab group (e.g. C "enum" type) info to output for enum-string conversion helper - def genGroup(self, groupinfo, groupName, alias): - OutputGenerator.genGroup(self, groupinfo, groupName, alias) - groupElem = groupinfo.elem - # For enum_string_header - if self.helper_file_type == 'enum_string_header': - value_set = set() - for elem in groupElem.findall('enum'): - if elem.get('supported') != 'disabled' and elem.get('alias') == None: - value_set.add(elem.get('name')) - self.enum_output += self.GenerateEnumStringConversion(groupName, value_set) - elif self.helper_file_type == 'object_types_header': - if groupName == 'VkDebugReportObjectTypeEXT': - for elem in groupElem.findall('enum'): - if elem.get('supported') != 'disabled': - item_name = elem.get('name') - self.debug_report_object_types.append(item_name) - elif groupName == 'VkObjectType': - for elem in groupElem.findall('enum'): - if elem.get('supported') != 'disabled': - item_name = elem.get('name') - self.core_object_types.append(item_name) - - # - # Called for each type -- if the type is a struct/union, grab the metadata - def genType(self, typeinfo, name, alias): - OutputGenerator.genType(self, typeinfo, name, alias) - typeElem = typeinfo.elem - # If the type is a struct type, traverse the imbedded tags generating a structure. - # Otherwise, emit the tag text. - category = typeElem.get('category') - if category == 'handle': - if alias: - self.object_type_aliases.append((name,alias)) - else: - self.object_types.append(name) - elif (category == 'struct' or category == 'union'): - self.structNames.append(name) - self.genStruct(typeinfo, name, alias) - # - # Check if the parameter passed in is a pointer - def paramIsPointer(self, param): - ispointer = False - for elem in param: - if ((elem.tag != 'type') and (elem.tail is not None)) and '*' in elem.tail: - ispointer = True - return ispointer - # - # Check if the parameter passed in is a static array - def paramIsStaticArray(self, param): - isstaticarray = 0 - paramname = param.find('name') - if (paramname.tail is not None) and ('[' in paramname.tail): - isstaticarray = paramname.tail.count('[') - return isstaticarray - # - # Retrieve the type and name for a parameter - def getTypeNameTuple(self, param): - type = '' - name = '' - for elem in param: - if elem.tag == 'type': - type = noneStr(elem.text) - elif elem.tag == 'name': - name = noneStr(elem.text) - return (type, name) - # - # Retrieve the value of the len tag - def getLen(self, param): - result = None - len = param.attrib.get('len') - if len and len != 'null-terminated': - # For string arrays, 'len' can look like 'count,null-terminated', indicating that we - # have a null terminated array of strings. We strip the null-terminated from the - # 'len' field and only return the parameter specifying the string count - if 'null-terminated' in len: - result = len.split(',')[0] - else: - result = len - if 'altlen' in param.attrib: - # Elements with latexmath 'len' also contain a C equivalent 'altlen' attribute - # Use indexing operator instead of get() so we fail if the attribute is missing - result = param.attrib['altlen'] - # Spec has now notation for len attributes, using :: instead of platform specific pointer symbol - result = str(result).replace('::', '->') - return result - # - # Check if a structure is or contains a dispatchable (dispatchable = True) or - # non-dispatchable (dispatchable = False) handle - def TypeContainsObjectHandle(self, handle_type, dispatchable): - if dispatchable: - type_key = 'VK_DEFINE_HANDLE' - else: - type_key = 'VK_DEFINE_NON_DISPATCHABLE_HANDLE' - handle = self.registry.tree.find("types/type/[name='" + handle_type + "'][@category='handle']") - if handle is not None and handle.find('type').text == type_key: - return True - # if handle_type is a struct, search its members - if handle_type in self.structNames: - member_index = next((i for i, v in enumerate(self.structMembers) if v[0] == handle_type), None) - if member_index is not None: - for item in self.structMembers[member_index].members: - handle = self.registry.tree.find("types/type/[name='" + item.type + "'][@category='handle']") - if handle is not None and handle.find('type').text == type_key: - return True - return False - # - # Generate local ready-access data describing Vulkan structures and unions from the XML metadata - def genStruct(self, typeinfo, typeName, alias): - OutputGenerator.genStruct(self, typeinfo, typeName, alias) - members = typeinfo.elem.findall('.//member') - # Iterate over members once to get length parameters for arrays - lens = set() - for member in members: - len = self.getLen(member) - if len: - lens.add(len) - # Generate member info - membersInfo = [] - for member in members: - # Get the member's type and name - info = self.getTypeNameTuple(member) - type = info[0] - name = info[1] - cdecl = self.makeCParamDecl(member, 1) - # Process VkStructureType - if type == 'VkStructureType': - # Extract the required struct type value from the comments - # embedded in the original text defining the 'typeinfo' element - rawXml = etree.tostring(typeinfo.elem).decode('ascii') - result = re.search(r'VK_STRUCTURE_TYPE_\w+', rawXml) - if result: - value = result.group(0) - # Store the required type value - self.structTypes[typeName] = self.StructType(name=name, value=value) - # Store pointer/array/string info - isstaticarray = self.paramIsStaticArray(member) - membersInfo.append(self.CommandParam(type=type, - name=name, - ispointer=self.paramIsPointer(member), - isstaticarray=isstaticarray, - isconst=True if 'const' in cdecl else False, - iscount=True if name in lens else False, - len=self.getLen(member), - extstructs=self.registry.validextensionstructs[typeName] if name == 'pNext' else None, - cdecl=cdecl)) - self.structMembers.append(self.StructMemberData(name=typeName, members=membersInfo, ifdef_protect=self.featureExtraProtect)) - # - # Enum_string_header: Create a routine to convert an enumerated value into a string - def GenerateEnumStringConversion(self, groupName, value_list): - outstring = '\n' - outstring += 'static inline const char* string_%s(%s input_value)\n' % (groupName, groupName) - outstring += '{\n' - outstring += ' switch ((%s)input_value)\n' % groupName - outstring += ' {\n' - for item in value_list: - outstring += ' case %s:\n' % item - outstring += ' return "%s";\n' % item - outstring += ' default:\n' - outstring += ' return "Unhandled %s";\n' % groupName - outstring += ' }\n' - outstring += '}\n' - return outstring - # - # Tack on a helper which, given an index into a VkPhysicalDeviceFeatures structure, will print the corresponding feature name - def DeIndexPhysDevFeatures(self): - pdev_members = None - for name, members, ifdef in self.structMembers: - if name == 'VkPhysicalDeviceFeatures': - pdev_members = members - break - deindex = '\n' - deindex += 'static inline const char * GetPhysDevFeatureString(uint32_t index) {\n' - deindex += ' const char * IndexToPhysDevFeatureString[] = {\n' - for feature in pdev_members: - deindex += ' "%s",\n' % feature.name - deindex += ' };\n\n' - deindex += ' return IndexToPhysDevFeatureString[index];\n' - deindex += '}\n' - return deindex - # - # Combine enum string helper header file preamble with body text and return - def GenerateEnumStringHelperHeader(self): - enum_string_helper_header = '\n' - enum_string_helper_header += '#pragma once\n' - enum_string_helper_header += '#ifdef _WIN32\n' - enum_string_helper_header += '#pragma warning( disable : 4065 )\n' - enum_string_helper_header += '#endif\n' - enum_string_helper_header += '\n' - enum_string_helper_header += '#include \n' - enum_string_helper_header += '\n' - enum_string_helper_header += self.enum_output - enum_string_helper_header += self.DeIndexPhysDevFeatures() - return enum_string_helper_header - # - # Helper function for declaring a counter variable only once - def DeclareCounter(self, string_var, declare_flag): - if declare_flag == False: - string_var += ' uint32_t i = 0;\n' - declare_flag = True - return string_var, declare_flag - # - # Combine safe struct helper header file preamble with body text and return - def GenerateSafeStructHelperHeader(self): - safe_struct_helper_header = '\n' - safe_struct_helper_header += '#pragma once\n' - safe_struct_helper_header += '#include \n' - safe_struct_helper_header += '\n' - safe_struct_helper_header += self.GenerateSafeStructHeader() - return safe_struct_helper_header - # - # safe_struct header: build function prototypes for header file - def GenerateSafeStructHeader(self): - safe_struct_header = '' - for item in self.structMembers: - if self.NeedSafeStruct(item) == True: - safe_struct_header += '\n' - if item.ifdef_protect != None: - safe_struct_header += '#ifdef %s\n' % item.ifdef_protect - safe_struct_header += 'struct safe_%s {\n' % (item.name) - for member in item.members: - if member.type in self.structNames: - member_index = next((i for i, v in enumerate(self.structMembers) if v[0] == member.type), None) - if member_index is not None and self.NeedSafeStruct(self.structMembers[member_index]) == True: - if member.ispointer: - safe_struct_header += ' safe_%s* %s;\n' % (member.type, member.name) - else: - safe_struct_header += ' safe_%s %s;\n' % (member.type, member.name) - continue - if member.len is not None and (self.TypeContainsObjectHandle(member.type, True) or self.TypeContainsObjectHandle(member.type, False)): - safe_struct_header += ' %s* %s;\n' % (member.type, member.name) - else: - safe_struct_header += '%s;\n' % member.cdecl - safe_struct_header += ' safe_%s(const %s* in_struct%s);\n' % (item.name, item.name, self.custom_construct_params.get(item.name, '')) - safe_struct_header += ' safe_%s(const safe_%s& src);\n' % (item.name, item.name) - safe_struct_header += ' safe_%s& operator=(const safe_%s& src);\n' % (item.name, item.name) - safe_struct_header += ' safe_%s();\n' % item.name - safe_struct_header += ' ~safe_%s();\n' % item.name - safe_struct_header += ' void initialize(const %s* in_struct%s);\n' % (item.name, self.custom_construct_params.get(item.name, '')) - safe_struct_header += ' void initialize(const safe_%s* src);\n' % (item.name) - safe_struct_header += ' %s *ptr() { return reinterpret_cast<%s *>(this); }\n' % (item.name, item.name) - safe_struct_header += ' %s const *ptr() const { return reinterpret_cast<%s const *>(this); }\n' % (item.name, item.name) - safe_struct_header += '};\n' - if item.ifdef_protect != None: - safe_struct_header += '#endif // %s\n' % item.ifdef_protect - return safe_struct_header - # - # Generate extension helper header file - def GenerateExtensionHelperHeader(self): - - V_1_0_instance_extensions_promoted_to_core = [ - 'vk_khr_device_group_creation', - 'vk_khr_external_fence_capabilities', - 'vk_khr_external_memory_capabilities', - 'vk_khr_external_semaphore_capabilities', - 'vk_khr_get_physical_device_properties_2', - ] - - V_1_0_device_extensions_promoted_to_core = [ - 'vk_khr_16bit_storage', - 'vk_khr_bind_memory_2', - 'vk_khr_dedicated_allocation', - 'vk_khr_descriptor_update_template', - 'vk_khr_device_group', - 'vk_khr_external_fence', - 'vk_khr_external_memory', - 'vk_khr_external_semaphore', - 'vk_khr_get_memory_requirements_2', - 'vk_khr_maintenance1', - 'vk_khr_maintenance2', - 'vk_khr_maintenance3', - 'vk_khr_multiview', - 'vk_khr_relaxed_block_layout', - 'vk_khr_sampler_ycbcr_conversion', - 'vk_khr_shader_draw_parameters', - 'vk_khr_storage_buffer_storage_class', - 'vk_khr_variable_pointers', - ] - - output = [ - '', - '#ifndef VK_EXTENSION_HELPER_H_', - '#define VK_EXTENSION_HELPER_H_', - '#include ', - '#include ', - '#include ', - '', - '#include ', - ''] - - def guarded(ifdef, value): - if ifdef is not None: - return '\n'.join([ '#ifdef %s' % ifdef, value, '#endif' ]) - else: - return value - - for type in ['Instance', 'Device']: - struct_type = '%sExtensions' % type - if type == 'Instance': - extension_dict = self.instance_extension_info - promoted_ext_list = V_1_0_instance_extensions_promoted_to_core - struct_decl = 'struct %s {' % struct_type - instance_struct_type = struct_type - else: - extension_dict = self.device_extension_info - promoted_ext_list = V_1_0_device_extensions_promoted_to_core - struct_decl = 'struct %s : public %s {' % (struct_type, instance_struct_type) - - extension_items = sorted(extension_dict.items()) - - field_name = { ext_name: re.sub('_extension_name', '', info['define'].lower()) for ext_name, info in extension_items } - if type == 'Instance': - instance_field_name = field_name - instance_extension_dict = extension_dict - else: - # Get complete field name and extension data for both Instance and Device extensions - field_name.update(instance_field_name) - extension_dict = extension_dict.copy() # Don't modify the self. we're pointing to - extension_dict.update(instance_extension_dict) - - # Output the data member list - struct = [struct_decl] - struct.extend([ ' bool %s{false};' % field_name[ext_name] for ext_name, info in extension_items]) - - # Construct the extension information map -- mapping name to data member (field), and required extensions - # The map is contained within a static function member for portability reasons. - info_type = '%sInfo' % type - info_map_type = '%sMap' % info_type - req_type = '%sReq' % type - req_vec_type = '%sVec' % req_type - struct.extend([ - '', - ' struct %s {' % req_type, - ' const bool %s::* enabled;' % struct_type, - ' const char *name;', - ' };', - ' typedef std::vector<%s> %s;' % (req_type, req_vec_type), - ' struct %s {' % info_type, - ' %s(bool %s::* state_, const %s requires_): state(state_), requires(requires_) {}' % ( info_type, struct_type, req_vec_type), - ' bool %s::* state;' % struct_type, - ' %s requires;' % req_vec_type, - ' };', - '', - ' typedef std::unordered_map %s;' % (info_type, info_map_type), - ' static const %s &get_info(const char *name) {' %info_type, - ' static const %s info_map = {' % info_map_type ]) - - field_format = '&' + struct_type + '::%s' - req_format = '{' + field_format+ ', %s}' - req_indent = '\n ' - req_join = ',' + req_indent - info_format = (' std::make_pair(%s, ' + info_type + '(' + field_format + ', {%s})),') - def format_info(ext_name, info): - reqs = req_join.join([req_format % (field_name[req], extension_dict[req]['define']) for req in info['reqs']]) - return info_format % (info['define'], field_name[ext_name], '{%s}' % (req_indent + reqs) if reqs else '') - - struct.extend([guarded(info['ifdef'], format_info(ext_name, info)) for ext_name, info in extension_items]) - struct.extend([ - ' };', - '', - ' static const %s empty_info {nullptr, %s()};' % (info_type, req_vec_type), - ' %s::const_iterator info = info_map.find(name);' % info_map_type, - ' if ( info != info_map.cend()) {', - ' return info->second;', - ' }', - ' return empty_info;', - ' }', - '']) - - if type == 'Instance': - struct.extend([ - ' uint32_t NormalizeApiVersion(uint32_t specified_version) {', - ' uint32_t api_version = (specified_version < VK_API_VERSION_1_1) ? VK_API_VERSION_1_0 : VK_API_VERSION_1_1;', - ' return api_version;', - ' }', - '', - ' uint32_t InitFromInstanceCreateInfo(uint32_t requested_api_version, const VkInstanceCreateInfo *pCreateInfo) {']) - else: - struct.extend([ - ' %s() = default;' % struct_type, - ' %s(const %s& instance_ext) : %s(instance_ext) {}' % (struct_type, instance_struct_type, instance_struct_type), - '', - ' uint32_t InitFromDeviceCreateInfo(const %s *instance_extensions, uint32_t requested_api_version,' % instance_struct_type, - ' const VkDeviceCreateInfo *pCreateInfo) {', - ' // Initialize: this to defaults, base class fields to input.', - ' assert(instance_extensions);', - ' *this = %s(*instance_extensions);' % struct_type]) - - struct.extend([ - '', - ' static const std::vector V_1_0_promoted_%s_extensions = {' % type.lower() ]) - struct.extend([' %s_EXTENSION_NAME,' % ext_name.upper() for ext_name in promoted_ext_list]) - struct.extend([ - ' };', - '', - ' // Initialize struct data, robust to invalid pCreateInfo', - ' if (pCreateInfo->ppEnabledExtensionNames) {', - ' for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {', - ' if (!pCreateInfo->ppEnabledExtensionNames[i]) continue;', - ' auto info = get_info(pCreateInfo->ppEnabledExtensionNames[i]);', - ' if(info.state) this->*(info.state) = true;', - ' }', - ' }', - ' uint32_t api_version = NormalizeApiVersion(requested_api_version);', - ' if (api_version >= VK_API_VERSION_1_1) {', - ' for (auto promoted_ext : V_1_0_promoted_%s_extensions) {' % type.lower(), - ' auto info = get_info(promoted_ext);', - ' assert(info.state);', - ' if (info.state) this->*(info.state) = true;', - ' }', - ' }', - ' return api_version;', - ' }', - '};']) - - # Output reference lists of instance/device extension names - struct.extend(['', 'static const char * const k%sExtensionNames = ' % type]) - struct.extend([guarded(info['ifdef'], ' %s' % info['define']) for ext_name, info in extension_items]) - struct.extend([';', '']) - output.extend(struct) - - output.extend(['', '#endif // VK_EXTENSION_HELPER_H_']) - return '\n'.join(output) - # - # Combine object types helper header file preamble with body text and return - def GenerateObjectTypesHelperHeader(self): - object_types_helper_header = '\n' - object_types_helper_header += '#pragma once\n' - object_types_helper_header += '\n' - object_types_helper_header += '#include \n\n' - object_types_helper_header += self.GenerateObjectTypesHeader() - return object_types_helper_header - # - # Object types header: create object enum type header file - def GenerateObjectTypesHeader(self): - object_types_header = '' - object_types_header += '// Object Type enum for validation layer internal object handling\n' - object_types_header += 'typedef enum VulkanObjectType {\n' - object_types_header += ' kVulkanObjectTypeUnknown = 0,\n' - enum_num = 1 - type_list = []; - enum_entry_map = {} +class HelperFileOutputGenerator(BaseGenerator): + def __init__(self): + BaseGenerator.__init__(self) - # Output enum definition as each handle is processed, saving the names to use for the conversion routine - for item in self.object_types: - fixup_name = item[2:] - enum_entry = 'kVulkanObjectType%s' % fixup_name - enum_entry_map[item] = enum_entry - object_types_header += ' ' + enum_entry - object_types_header += ' = %d,\n' % enum_num - enum_num += 1 - type_list.append(enum_entry) - object_types_header += ' kVulkanObjectTypeMax = %d,\n' % enum_num - object_types_header += ' // Aliases for backwards compatibilty of "promoted" types\n' - for (name, alias) in self.object_type_aliases: - fixup_name = name[2:] - object_types_header += ' kVulkanObjectType{} = {},\n'.format(fixup_name, enum_entry_map[alias]) - object_types_header += '} VulkanObjectType;\n\n' - # Output name string helper - object_types_header += '// Array of object name strings for OBJECT_TYPE enum conversion\n' - object_types_header += 'static const char * const object_string[kVulkanObjectTypeMax] = {\n' - object_types_header += ' "Unknown",\n' - for item in self.object_types: - fixup_name = item[2:] - object_types_header += ' "%s",\n' % fixup_name - object_types_header += '};\n' + def generate(self): + out = [] - # Key creation helper for map comprehensions that convert between k and VK symbols - def to_key(regex, raw_key): return re.search(regex, raw_key).group(1).lower().replace("_","") - - # Output a conversion routine from the layer object definitions to the debug report definitions - # As the VK_DEBUG_REPORT types are not being updated, specify UNKNOWN for unmatched types - object_types_header += '\n' - object_types_header += '// Helper array to get Vulkan VK_EXT_debug_report object type enum from the internal layers version\n' - object_types_header += 'const VkDebugReportObjectTypeEXT get_debug_report_enum[] = {\n' - object_types_header += ' VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeUnknown\n' - - dbg_re = '^VK_DEBUG_REPORT_OBJECT_TYPE_(.*)_EXT$' - dbg_map = {to_key(dbg_re, dbg) : dbg for dbg in self.debug_report_object_types} - dbg_default = 'VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT' - for object_type in type_list: - vk_object_type = dbg_map.get(object_type.replace("kVulkanObjectType", "").lower(), dbg_default) - object_types_header += ' %s, // %s\n' % (vk_object_type, object_type) - object_types_header += '};\n' - - # Output a conversion routine from the layer object definitions to the core object type definitions - # This will intentionally *fail* for unmatched types as the VK_OBJECT_TYPE list should match the kVulkanObjectType list - object_types_header += '\n' - object_types_header += '// Helper array to get Official Vulkan VkObjectType enum from the internal layers version\n' - object_types_header += 'const VkObjectType get_object_type_enum[] = {\n' - object_types_header += ' VK_OBJECT_TYPE_UNKNOWN, // kVulkanObjectTypeUnknown\n' - - vko_re = '^VK_OBJECT_TYPE_(.*)' - vko_map = {to_key(vko_re, vko) : vko for vko in self.core_object_types} - for object_type in type_list: - vk_object_type = vko_map[object_type.replace("kVulkanObjectType", "").lower()] - object_types_header += ' %s, // %s\n' % (vk_object_type, object_type) - object_types_header += '};\n' - - # Create a function to convert from VkDebugReportObjectTypeEXT to VkObjectType - object_types_header += '\n' - object_types_header += '// Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType\n' - object_types_header += 'static inline VkObjectType convertDebugReportObjectToCoreObject(VkDebugReportObjectTypeEXT debug_report_obj){\n' - object_types_header += ' if (debug_report_obj == VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT) {\n' - object_types_header += ' return VK_OBJECT_TYPE_UNKNOWN;\n' - for core_object_type in self.core_object_types: - core_target_type = core_object_type.replace("VK_OBJECT_TYPE_", "").lower() - core_target_type = core_target_type.replace("_", "") - for dr_object_type in self.debug_report_object_types: - dr_target_type = dr_object_type.replace("VK_DEBUG_REPORT_OBJECT_TYPE_", "").lower() - dr_target_type = dr_target_type[:-4] - dr_target_type = dr_target_type.replace("_", "") - if core_target_type == dr_target_type: - object_types_header += ' } else if (debug_report_obj == %s) {\n' % dr_object_type - object_types_header += ' return %s;\n' % core_object_type - break - object_types_header += ' }\n' - object_types_header += ' return VK_OBJECT_TYPE_UNKNOWN;\n' - object_types_header += '}\n' - - # Create a function to convert from VkObjectType to VkDebugReportObjectTypeEXT - object_types_header += '\n' - object_types_header += '// Helper function to convert from VkDebugReportObjectTypeEXT to VkObjectType\n' - object_types_header += 'static inline VkDebugReportObjectTypeEXT convertCoreObjectToDebugReportObject(VkObjectType core_report_obj){\n' - object_types_header += ' if (core_report_obj == VK_OBJECT_TYPE_UNKNOWN) {\n' - object_types_header += ' return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;\n' - for core_object_type in self.core_object_types: - core_target_type = core_object_type.replace("VK_OBJECT_TYPE_", "").lower() - core_target_type = core_target_type.replace("_", "") - for dr_object_type in self.debug_report_object_types: - dr_target_type = dr_object_type.replace("VK_DEBUG_REPORT_OBJECT_TYPE_", "").lower() - dr_target_type = dr_target_type[:-4] - dr_target_type = dr_target_type.replace("_", "") - if core_target_type == dr_target_type: - object_types_header += ' } else if (core_report_obj == %s) {\n' % core_object_type - object_types_header += ' return %s;\n' % dr_object_type - break - object_types_header += ' }\n' - object_types_header += ' return VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT;\n' - object_types_header += '}\n' - return object_types_header - # - # Determine if a structure needs a safe_struct helper function - # That is, it has an sType or one of its members is a pointer - def NeedSafeStruct(self, structure): - if 'sType' == structure.name: - return True - for member in structure.members: - if member.ispointer == True: - return True - return False - # - # Combine safe struct helper source file preamble with body text and return - def GenerateSafeStructHelperSource(self): - safe_struct_helper_source = '\n' - safe_struct_helper_source += '#include "vk_safe_struct.h"\n' - safe_struct_helper_source += '#include \n' - safe_struct_helper_source += '#ifdef VK_USE_PLATFORM_ANDROID_KHR\n' - safe_struct_helper_source += '#if __ANDROID_API__ < __ANDROID_API_O__\n' - safe_struct_helper_source += 'struct AHardwareBuffer {};\n' - safe_struct_helper_source += '#endif\n' - safe_struct_helper_source += '#endif\n' - - safe_struct_helper_source += '\n' - safe_struct_helper_source += self.GenerateSafeStructSource() - return safe_struct_helper_source - # - # safe_struct source -- create bodies of safe struct helper functions - def GenerateSafeStructSource(self): - safe_struct_body = [] - wsi_structs = ['VkXlibSurfaceCreateInfoKHR', - 'VkXcbSurfaceCreateInfoKHR', - 'VkWaylandSurfaceCreateInfoKHR', - 'VkMirSurfaceCreateInfoKHR', - 'VkAndroidSurfaceCreateInfoKHR', - 'VkWin32SurfaceCreateInfoKHR' - ] - for item in self.structMembers: - if self.NeedSafeStruct(item) == False: - continue - if item.name in wsi_structs: - continue - if item.ifdef_protect != None: - safe_struct_body.append("#ifdef %s\n" % item.ifdef_protect) - ss_name = "safe_%s" % item.name - init_list = '' # list of members in struct constructor initializer - default_init_list = '' # Default constructor just inits ptrs to nullptr in initializer - init_func_txt = '' # Txt for initialize() function that takes struct ptr and inits members - construct_txt = '' # Body of constuctor as well as body of initialize() func following init_func_txt - destruct_txt = '' - - custom_construct_txt = { - # VkWriteDescriptorSet is special case because pointers may be non-null but ignored - 'VkWriteDescriptorSet' : - ' switch (descriptorType) {\n' - ' case VK_DESCRIPTOR_TYPE_SAMPLER:\n' - ' case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:\n' - ' case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:\n' - ' case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:\n' - ' case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:\n' - ' if (descriptorCount && in_struct->pImageInfo) {\n' - ' pImageInfo = new VkDescriptorImageInfo[descriptorCount];\n' - ' for (uint32_t i=0; ipImageInfo[i];\n' - ' }\n' - ' }\n' - ' break;\n' - ' case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:\n' - ' case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:\n' - ' case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:\n' - ' case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:\n' - ' if (descriptorCount && in_struct->pBufferInfo) {\n' - ' pBufferInfo = new VkDescriptorBufferInfo[descriptorCount];\n' - ' for (uint32_t i=0; ipBufferInfo[i];\n' - ' }\n' - ' }\n' - ' break;\n' - ' case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:\n' - ' case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:\n' - ' if (descriptorCount && in_struct->pTexelBufferView) {\n' - ' pTexelBufferView = new VkBufferView[descriptorCount];\n' - ' for (uint32_t i=0; ipTexelBufferView[i];\n' - ' }\n' - ' }\n' - ' break;\n' - ' default:\n' - ' break;\n' - ' }\n', - 'VkShaderModuleCreateInfo' : - ' if (in_struct->pCode) {\n' - ' pCode = reinterpret_cast(new uint8_t[codeSize]);\n' - ' memcpy((void *)pCode, (void *)in_struct->pCode, codeSize);\n' - ' }\n', - # VkGraphicsPipelineCreateInfo is special case because its pointers may be non-null but ignored - 'VkGraphicsPipelineCreateInfo' : - ' if (stageCount && in_struct->pStages) {\n' - ' pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];\n' - ' for (uint32_t i=0; ipStages[i]);\n' - ' }\n' - ' }\n' - ' if (in_struct->pVertexInputState)\n' - ' pVertexInputState = new safe_VkPipelineVertexInputStateCreateInfo(in_struct->pVertexInputState);\n' - ' else\n' - ' pVertexInputState = NULL;\n' - ' if (in_struct->pInputAssemblyState)\n' - ' pInputAssemblyState = new safe_VkPipelineInputAssemblyStateCreateInfo(in_struct->pInputAssemblyState);\n' - ' else\n' - ' pInputAssemblyState = NULL;\n' - ' bool has_tessellation_stage = false;\n' - ' if (stageCount && pStages)\n' - ' for (uint32_t i=0; ipTessellationState && has_tessellation_stage)\n' - ' pTessellationState = new safe_VkPipelineTessellationStateCreateInfo(in_struct->pTessellationState);\n' - ' else\n' - ' pTessellationState = NULL; // original pTessellationState pointer ignored\n' - ' bool has_rasterization = in_struct->pRasterizationState ? !in_struct->pRasterizationState->rasterizerDiscardEnable : false;\n' - ' if (in_struct->pViewportState && has_rasterization) {\n' - ' bool is_dynamic_viewports = false;\n' - ' bool is_dynamic_scissors = false;\n' - ' if (in_struct->pDynamicState && in_struct->pDynamicState->pDynamicStates) {\n' - ' for (uint32_t i = 0; i < in_struct->pDynamicState->dynamicStateCount && !is_dynamic_viewports; ++i)\n' - ' if (in_struct->pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_VIEWPORT)\n' - ' is_dynamic_viewports = true;\n' - ' for (uint32_t i = 0; i < in_struct->pDynamicState->dynamicStateCount && !is_dynamic_scissors; ++i)\n' - ' if (in_struct->pDynamicState->pDynamicStates[i] == VK_DYNAMIC_STATE_SCISSOR)\n' - ' is_dynamic_scissors = true;\n' - ' }\n' - ' pViewportState = new safe_VkPipelineViewportStateCreateInfo(in_struct->pViewportState, is_dynamic_viewports, is_dynamic_scissors);\n' - ' } else\n' - ' pViewportState = NULL; // original pViewportState pointer ignored\n' - ' if (in_struct->pRasterizationState)\n' - ' pRasterizationState = new safe_VkPipelineRasterizationStateCreateInfo(in_struct->pRasterizationState);\n' - ' else\n' - ' pRasterizationState = NULL;\n' - ' if (in_struct->pMultisampleState && has_rasterization)\n' - ' pMultisampleState = new safe_VkPipelineMultisampleStateCreateInfo(in_struct->pMultisampleState);\n' - ' else\n' - ' pMultisampleState = NULL; // original pMultisampleState pointer ignored\n' - ' // needs a tracked subpass state uses_depthstencil_attachment\n' - ' if (in_struct->pDepthStencilState && has_rasterization && uses_depthstencil_attachment)\n' - ' pDepthStencilState = new safe_VkPipelineDepthStencilStateCreateInfo(in_struct->pDepthStencilState);\n' - ' else\n' - ' pDepthStencilState = NULL; // original pDepthStencilState pointer ignored\n' - ' // needs a tracked subpass state usesColorAttachment\n' - ' if (in_struct->pColorBlendState && has_rasterization && uses_color_attachment)\n' - ' pColorBlendState = new safe_VkPipelineColorBlendStateCreateInfo(in_struct->pColorBlendState);\n' - ' else\n' - ' pColorBlendState = NULL; // original pColorBlendState pointer ignored\n' - ' if (in_struct->pDynamicState)\n' - ' pDynamicState = new safe_VkPipelineDynamicStateCreateInfo(in_struct->pDynamicState);\n' - ' else\n' - ' pDynamicState = NULL;\n', - # VkPipelineViewportStateCreateInfo is special case because its pointers may be non-null but ignored - 'VkPipelineViewportStateCreateInfo' : - ' if (in_struct->pViewports && !is_dynamic_viewports) {\n' - ' pViewports = new VkViewport[in_struct->viewportCount];\n' - ' memcpy ((void *)pViewports, (void *)in_struct->pViewports, sizeof(VkViewport)*in_struct->viewportCount);\n' - ' }\n' - ' else\n' - ' pViewports = NULL;\n' - ' if (in_struct->pScissors && !is_dynamic_scissors) {\n' - ' pScissors = new VkRect2D[in_struct->scissorCount];\n' - ' memcpy ((void *)pScissors, (void *)in_struct->pScissors, sizeof(VkRect2D)*in_struct->scissorCount);\n' - ' }\n' - ' else\n' - ' pScissors = NULL;\n', - # VkDescriptorSetLayoutBinding is special case because its pImmutableSamplers pointer may be non-null but ignored - 'VkDescriptorSetLayoutBinding' : - ' const bool sampler_type = in_struct->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || in_struct->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;\n' - ' if (descriptorCount && in_struct->pImmutableSamplers && sampler_type) {\n' - ' pImmutableSamplers = new VkSampler[descriptorCount];\n' - ' for (uint32_t i=0; ipImmutableSamplers[i];\n' - ' }\n' - ' }\n', - } - - custom_copy_txt = { - # VkGraphicsPipelineCreateInfo is special case because it has custom construct parameters - 'VkGraphicsPipelineCreateInfo' : - ' if (stageCount && src.pStages) {\n' - ' pStages = new safe_VkPipelineShaderStageCreateInfo[stageCount];\n' - ' for (uint32_t i=0; irasterizerDiscardEnable : false;\n' - ' if (src.pViewportState && has_rasterization) {\n' - ' pViewportState = new safe_VkPipelineViewportStateCreateInfo(*src.pViewportState);\n' - ' } else\n' - ' pViewportState = NULL; // original pViewportState pointer ignored\n' - ' if (src.pRasterizationState)\n' - ' pRasterizationState = new safe_VkPipelineRasterizationStateCreateInfo(*src.pRasterizationState);\n' - ' else\n' - ' pRasterizationState = NULL;\n' - ' if (src.pMultisampleState && has_rasterization)\n' - ' pMultisampleState = new safe_VkPipelineMultisampleStateCreateInfo(*src.pMultisampleState);\n' - ' else\n' - ' pMultisampleState = NULL; // original pMultisampleState pointer ignored\n' - ' if (src.pDepthStencilState && has_rasterization)\n' - ' pDepthStencilState = new safe_VkPipelineDepthStencilStateCreateInfo(*src.pDepthStencilState);\n' - ' else\n' - ' pDepthStencilState = NULL; // original pDepthStencilState pointer ignored\n' - ' if (src.pColorBlendState && has_rasterization)\n' - ' pColorBlendState = new safe_VkPipelineColorBlendStateCreateInfo(*src.pColorBlendState);\n' - ' else\n' - ' pColorBlendState = NULL; // original pColorBlendState pointer ignored\n' - ' if (src.pDynamicState)\n' - ' pDynamicState = new safe_VkPipelineDynamicStateCreateInfo(*src.pDynamicState);\n' - ' else\n' - ' pDynamicState = NULL;\n', - # VkPipelineViewportStateCreateInfo is special case because it has custom construct parameters - 'VkPipelineViewportStateCreateInfo' : - ' if (src.pViewports) {\n' - ' pViewports = new VkViewport[src.viewportCount];\n' - ' memcpy ((void *)pViewports, (void *)src.pViewports, sizeof(VkViewport)*src.viewportCount);\n' - ' }\n' - ' else\n' - ' pViewports = NULL;\n' - ' if (src.pScissors) {\n' - ' pScissors = new VkRect2D[src.scissorCount];\n' - ' memcpy ((void *)pScissors, (void *)src.pScissors, sizeof(VkRect2D)*src.scissorCount);\n' - ' }\n' - ' else\n' - ' pScissors = NULL;\n', - } - - custom_destruct_txt = {'VkShaderModuleCreateInfo' : - ' if (pCode)\n' - ' delete[] reinterpret_cast(pCode);\n' } - - for member in item.members: - m_type = member.type - if member.type in self.structNames: - member_index = next((i for i, v in enumerate(self.structMembers) if v[0] == member.type), None) - if member_index is not None and self.NeedSafeStruct(self.structMembers[member_index]) == True: - m_type = 'safe_%s' % member.type - if member.ispointer and 'safe_' not in m_type and self.TypeContainsObjectHandle(member.type, False) == False: - # Ptr types w/o a safe_struct, for non-null case need to allocate new ptr and copy data in - if m_type in ['void', 'char']: - # For these exceptions just copy initial value over for now - init_list += '\n %s(in_struct->%s),' % (member.name, member.name) - init_func_txt += ' %s = in_struct->%s;\n' % (member.name, member.name) - else: - default_init_list += '\n %s(nullptr),' % (member.name) - init_list += '\n %s(nullptr),' % (member.name) - init_func_txt += ' %s = nullptr;\n' % (member.name) - if 'pNext' != member.name and 'void' not in m_type: - if not member.isstaticarray and (member.len is None or '/' in member.len): - construct_txt += ' if (in_struct->%s) {\n' % member.name - construct_txt += ' %s = new %s(*in_struct->%s);\n' % (member.name, m_type, member.name) - construct_txt += ' }\n' - destruct_txt += ' if (%s)\n' % member.name - destruct_txt += ' delete %s;\n' % member.name - else: - construct_txt += ' if (in_struct->%s) {\n' % member.name - construct_txt += ' %s = new %s[in_struct->%s];\n' % (member.name, m_type, member.len) - construct_txt += ' memcpy ((void *)%s, (void *)in_struct->%s, sizeof(%s)*in_struct->%s);\n' % (member.name, member.name, m_type, member.len) - construct_txt += ' }\n' - destruct_txt += ' if (%s)\n' % member.name - destruct_txt += ' delete[] %s;\n' % member.name - elif member.isstaticarray or member.len is not None: - if member.len is None: - # Extract length of static array by grabbing val between [] - static_array_size = re.match(r"[^[]*\[([^]]*)\]", member.cdecl) - construct_txt += ' for (uint32_t i=0; i<%s; ++i) {\n' % static_array_size.group(1) - construct_txt += ' %s[i] = in_struct->%s[i];\n' % (member.name, member.name) - construct_txt += ' }\n' - else: - # Init array ptr to NULL - default_init_list += '\n %s(nullptr),' % member.name - init_list += '\n %s(nullptr),' % member.name - init_func_txt += ' %s = nullptr;\n' % member.name - array_element = 'in_struct->%s[i]' % member.name - if member.type in self.structNames: - member_index = next((i for i, v in enumerate(self.structMembers) if v[0] == member.type), None) - if member_index is not None and self.NeedSafeStruct(self.structMembers[member_index]) == True: - array_element = '%s(&in_struct->safe_%s[i])' % (member.type, member.name) - construct_txt += ' if (%s && in_struct->%s) {\n' % (member.len, member.name) - construct_txt += ' %s = new %s[%s];\n' % (member.name, m_type, member.len) - destruct_txt += ' if (%s)\n' % member.name - destruct_txt += ' delete[] %s;\n' % member.name - construct_txt += ' for (uint32_t i=0; i<%s; ++i) {\n' % (member.len) - if 'safe_' in m_type: - construct_txt += ' %s[i].initialize(&in_struct->%s[i]);\n' % (member.name, member.name) - else: - construct_txt += ' %s[i] = %s;\n' % (member.name, array_element) - construct_txt += ' }\n' - construct_txt += ' }\n' - elif member.ispointer == True: - construct_txt += ' if (in_struct->%s)\n' % member.name - construct_txt += ' %s = new %s(in_struct->%s);\n' % (member.name, m_type, member.name) - construct_txt += ' else\n' - construct_txt += ' %s = NULL;\n' % member.name - destruct_txt += ' if (%s)\n' % member.name - destruct_txt += ' delete %s;\n' % member.name - elif 'safe_' in m_type: - init_list += '\n %s(&in_struct->%s),' % (member.name, member.name) - init_func_txt += ' %s.initialize(&in_struct->%s);\n' % (member.name, member.name) - else: - init_list += '\n %s(in_struct->%s),' % (member.name, member.name) - init_func_txt += ' %s = in_struct->%s;\n' % (member.name, member.name) - if '' != init_list: - init_list = init_list[:-1] # hack off final comma - if item.name in custom_construct_txt: - construct_txt = custom_construct_txt[item.name] - if item.name in custom_destruct_txt: - destruct_txt = custom_destruct_txt[item.name] - safe_struct_body.append("\n%s::%s(const %s* in_struct%s) :%s\n{\n%s}" % (ss_name, ss_name, item.name, self.custom_construct_params.get(item.name, ''), init_list, construct_txt)) - if '' != default_init_list: - default_init_list = " :%s" % (default_init_list[:-1]) - safe_struct_body.append("\n%s::%s()%s\n{}" % (ss_name, ss_name, default_init_list)) - # Create slight variation of init and construct txt for copy constructor that takes a src object reference vs. struct ptr - copy_construct_init = init_func_txt.replace('in_struct->', 'src.') - copy_construct_txt = construct_txt.replace(' (in_struct->', ' (src.') # Exclude 'if' blocks from next line - copy_construct_txt = copy_construct_txt.replace('(in_struct->', '(*src.') # Pass object to copy constructors - copy_construct_txt = copy_construct_txt.replace('in_struct->', 'src.') # Modify remaining struct refs for src object - if item.name in custom_copy_txt: - copy_construct_txt = custom_copy_txt[item.name] - copy_assign_txt = ' if (&src == this) return *this;\n\n' + destruct_txt + '\n' + copy_construct_init + copy_construct_txt + '\n return *this;' - safe_struct_body.append("\n%s::%s(const %s& src)\n{\n%s%s}" % (ss_name, ss_name, ss_name, copy_construct_init, copy_construct_txt)) # Copy constructor - safe_struct_body.append("\n%s& %s::operator=(const %s& src)\n{\n%s\n}" % (ss_name, ss_name, ss_name, copy_assign_txt)) # Copy assignment operator - safe_struct_body.append("\n%s::~%s()\n{\n%s}" % (ss_name, ss_name, destruct_txt)) - safe_struct_body.append("\nvoid %s::initialize(const %s* in_struct%s)\n{\n%s%s}" % (ss_name, item.name, self.custom_construct_params.get(item.name, ''), init_func_txt, construct_txt)) - # Copy initializer uses same txt as copy constructor but has a ptr and not a reference - init_copy = copy_construct_init.replace('src.', 'src->') - init_construct = copy_construct_txt.replace('src.', 'src->') - safe_struct_body.append("\nvoid %s::initialize(const %s* src)\n{\n%s%s}" % (ss_name, ss_name, init_copy, init_construct)) - if item.ifdef_protect != None: - safe_struct_body.append("#endif // %s\n" % item.ifdef_protect) - return "\n".join(safe_struct_body) - # - # Generate the type map - def GenerateTypeMapHelperHeader(self): - prefix = 'Lvl' - fprefix = 'lvl_' - typemap = prefix + 'TypeMap' - idmap = prefix + 'STypeMap' - type_member = 'Type' - id_member = 'kSType' - id_decl = 'static const VkStructureType ' - generic_header = prefix + 'GenericHeader' - generic_mod_header = prefix + 'GenericModHeader' - typename_func = fprefix + 'typename' - idname_func = fprefix + 'stype_name' - find_func = fprefix + 'find_in_chain' - find_mod_func = fprefix + 'find_mod_in_chain' - init_func = fprefix + 'init_struct' - - explanatory_comment = '\n'.join(( - '// These empty generic templates are specialized for each type with sType', - '// members and for each sType -- providing a two way map between structure', - '// types and sTypes')) - - empty_typemap = 'template struct ' + typemap + ' {};' - typemap_format = 'template <> struct {template}<{typename}> {{\n' - typemap_format += ' {id_decl}{id_member} = {id_value};\n' - typemap_format += '}};\n' + # File Comment + out.append('// *** THIS FILE IS GENERATED - DO NOT EDIT ***\n') + out.append('// See vulkan_tools_helper_file_generator.py for modifications\n') - empty_idmap = 'template struct ' + idmap + ' {};' - idmap_format = ''.join(( - 'template <> struct {template}<{id_value}> {{\n', - ' typedef {typename} {typedef};\n', - '}};\n')) + # Copyright Notice + out.append(''' + +/*************************************************************************** + * + * Copyright (c) 2015-2017 The Khronos Group Inc. + * Copyright (c) 2015-2017 Valve Corporation + * Copyright (c) 2015-2017 LunarG, Inc. + * Copyright (c) 2015-2017 Google Inc. + * + * 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: Mark Lobodzinski + * Author: Courtney Goeltzenleuchter + * Author: Tobin Ehlis + * Author: Chris Forbes + * Author: John Zulauf + * + ****************************************************************************/ +''') - # Define the utilities (here so any renaming stays consistent), if this grows large, refactor to a fixed .h file - utilities_format = '\n'.join(( - '// Header "base class" for pNext chain traversal', - 'struct {header} {{', - ' VkStructureType sType;', - ' const {header} *pNext;', - '}};', - 'struct {mod_header} {{', - ' VkStructureType sType;', - ' {mod_header} *pNext;', - '}};', - '', - '// Find an entry of the given type in the pNext chain', - 'template const T *{find_func}(const void *next) {{', - ' const {header} *current = reinterpret_cast(next);', - ' const T *found = nullptr;', - ' while (current) {{', - ' if ({type_map}::{id_member} == current->sType) {{', - ' found = reinterpret_cast(current);', - ' current = nullptr;', - ' }} else {{', - ' current = current->pNext;', - ' }}', - ' }}', - ' return found;', - '}}', - '// Find an entry of the given type in the pNext chain', - 'template T *{find_mod_func}(void *next) {{', - ' {mod_header} *current = reinterpret_cast<{mod_header} *>(next);', - ' T *found = nullptr;', - ' while (current) {{', - ' if ({type_map}::{id_member} == current->sType) {{', - ' found = reinterpret_cast(current);', - ' current = nullptr;', - ' }} else {{', - ' current = current->pNext;', - ' }}', - ' }}', - ' return found;', - '}}', - '', - '// Init the header of an sType struct with pNext', - 'template T {init_func}(void *p_next) {{', - ' T out = {{}};', - ' out.sType = {type_map}::kSType;', - ' out.pNext = p_next;', - ' return out;', - '}}', - '', - '// Init the header of an sType struct', - 'template T {init_func}() {{', - ' T out = {{}};', - ' out.sType = {type_map}::kSType;', - ' return out;', - '}}', + # Generate header + out.append(''' +#pragma once +#include - '')) +// These empty generic templates are specialized for each type with sType +// members and for each sType -- providing a two way map between structure +// types and sTypes - code = [] +template struct LvlSTypeMap {}; +template struct LvlTypeMap {}; - # Generate header - code.append('\n'.join(( - '#pragma once', - '#include \n', - explanatory_comment, '', - empty_idmap, - empty_typemap, ''))) +''') # Generate the specializations for each type and stype - for item in self.structMembers: - typename = item.name - info = self.structTypes.get(typename) - if not info: + for struct in self.vk.structs.values(): + if struct.sType is None: continue - if item.ifdef_protect != None: - code.append('#ifdef %s' % item.ifdef_protect) - - code.append('// Map type {} to id {}'.format(typename, info.value)) - code.append(typemap_format.format(template=typemap, typename=typename, id_value=info.value, - id_decl=id_decl, id_member=id_member)) - code.append(idmap_format.format(template=idmap, typename=typename, id_value=info.value, typedef=type_member)) - - if item.ifdef_protect != None: - code.append('#endif // %s' % item.ifdef_protect) - - # Generate utilities for all types - code.append('\n'.join(( - utilities_format.format(id_member=id_member, id_map=idmap, type_map=typemap, - type_member=type_member, header=generic_header, mod_header=generic_mod_header, - typename_func=typename_func, idname_func=idname_func, find_func=find_func, - find_mod_func=find_mod_func, init_func=init_func), '' - ))) - - return "\n".join(code) + if struct.protect is not None: + out.append(f'#ifdef {struct.protect}\n') + + out.append(f'// Map type {struct.name} to id {struct.sType}\n') + out.append(f'template <> struct LvlTypeMap<{struct.name}> {{\n') + out.append(f' static const VkStructureType kSType = {struct.sType};\n') + out.append('};\n\n') + + + out.append(f'template <> struct LvlSTypeMap<{struct.sType}> {{\n') + out.append(f' typedef {struct.name} Type;\n') + out.append('};\n\n') + + if struct.protect is not None: + out.append(f'#endif // {struct.protect}\n') + + # Define the utilities (here so any renaming stays consistent), if this grows large, refactor to a fixed .h file + + out.append('''// Header "base class" for pNext chain traversal +struct LvlGenericHeader { + VkStructureType sType; + const LvlGenericHeader *pNext; +}; +struct LvlGenericModHeader { + VkStructureType sType; + LvlGenericModHeader *pNext; +}; + +// Find an entry of the given type in the pNext chain +template const T *lvl_find_in_chain(const void *next) { + const LvlGenericHeader *current = reinterpret_cast(next); + const T *found = nullptr; + while (current) { + if (LvlTypeMap::kSType == current->sType) { + found = reinterpret_cast(current); + current = nullptr; + } else { + current = current->pNext; + } + } + return found; +} +// Find an entry of the given type in the pNext chain +template T *lvl_find_mod_in_chain(void *next) { + LvlGenericModHeader *current = reinterpret_cast(next); + T *found = nullptr; + while (current) { + if (LvlTypeMap::kSType == current->sType) { + found = reinterpret_cast(current); + current = nullptr; + } else { + current = current->pNext; + } + } + return found; +} + +// Init the header of an sType struct with pNext +template T lvl_init_struct(void *p_next) { + T out = {}; + out.sType = LvlTypeMap::kSType; + out.pNext = p_next; + return out; +} + +// Init the header of an sType struct +template T lvl_init_struct() { + T out = {}; + out.sType = LvlTypeMap::kSType; + return out; +} +''') + + self.write(''.join(out)) - # - # Create a helper file and return it as a string - def OutputDestFile(self): - if self.helper_file_type == 'enum_string_header': - return self.GenerateEnumStringHelperHeader() - elif self.helper_file_type == 'safe_struct_header': - return self.GenerateSafeStructHelperHeader() - elif self.helper_file_type == 'safe_struct_source': - return self.GenerateSafeStructHelperSource() - elif self.helper_file_type == 'object_types_header': - return self.GenerateObjectTypesHelperHeader() - elif self.helper_file_type == 'extension_helper_header': - return self.GenerateExtensionHelperHeader() - elif self.helper_file_type == 'typemap_helper_header': - return self.GenerateTypeMapHelperHeader() - else: - return 'Bad Helper File Generator Option %s' % self.helper_file_type diff --git a/scripts/generators/vulkaninfo_generator.py b/scripts/generators/vulkaninfo_generator.py index 20e408e4a..6843e7eb0 100644 --- a/scripts/generators/vulkaninfo_generator.py +++ b/scripts/generators/vulkaninfo_generator.py @@ -19,16 +19,9 @@ # # Author: Charles Giessen -import re -import os -import sys -import copy -import operator +from base_generator import BaseGenerator + from collections import OrderedDict -import generator as gen -from common_codegen import GetFeatureProtect -from generator import GeneratorOptions, OutputGenerator -import xml.etree.ElementTree as etree LICENSE_HEADER = ''' /* @@ -117,28 +110,24 @@ ('phys_device_props2', {'extends': 'VkPhysicalDeviceProperties2', 'type': EXTENSION_TYPE_BOTH, - 'holder_type': 'VkPhysicalDeviceProperties2', 'print_iterator': True, 'can_show_promoted_structs': True, 'ignore_vendor_exclusion': False}), ('phys_device_mem_props2', {'extends': 'VkPhysicalDeviceMemoryProperties2', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type':'VkPhysicalDeviceMemoryProperties2', 'print_iterator': False, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': False}), ('phys_device_features2', - {'extends': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo', + {'extends': 'VkPhysicalDeviceFeatures2', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type': 'VkPhysicalDeviceFeatures2', 'print_iterator': True, 'can_show_promoted_structs': True, 'ignore_vendor_exclusion': False}), ('surface_capabilities2', {'extends': 'VkSurfaceCapabilities2KHR', 'type': EXTENSION_TYPE_BOTH, - 'holder_type': 'VkSurfaceCapabilities2KHR', 'print_iterator': True, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': False, @@ -146,421 +135,221 @@ ('format_properties2', {'extends': 'VkFormatProperties2', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type':'VkFormatProperties2', 'print_iterator': True, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': False}), ('queue_properties2', {'extends': 'VkQueueFamilyProperties2', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type': 'VkQueueFamilyProperties2', 'print_iterator': True, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': False}), ('video_profile_info', {'extends': 'VkVideoProfileInfoKHR', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type': 'VkVideoProfileInfoKHR', 'print_iterator': True, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': True}), ('video_capabilities', {'extends': 'VkVideoCapabilitiesKHR', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type': 'VkVideoCapabilitiesKHR', 'print_iterator': True, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': True,}), ('video_format_properties', {'extends': 'VkVideoFormatPropertiesKHR', 'type': EXTENSION_TYPE_DEVICE, - 'holder_type': 'VkVideoFormatPropertiesKHR', 'print_iterator': True, 'can_show_promoted_structs': False, 'ignore_vendor_exclusion': True}) )) -class VulkanInfoGeneratorOptions(GeneratorOptions): - def __init__(self, - conventions=None, - input=None, - filename=None, - directory='.', - genpath = None, - apiname=None, - profile=None, - versions='.*', - emitversions='.*', - defaultExtensions=None, - addExtensions=None, - removeExtensions=None, - emitExtensions=None, - sortProcedure=None, - prefixText='', - genFuncPointers=True, - protectFile=True, - protectFeature=True, - protectProto=None, - protectProtoStr=None, - apicall='', - apientry='', - apientryp='', - indentFuncProto=True, - indentFuncPointer=False, - alignFuncParam=0, - expandEnumerants=True, - registryFile='vk.xml' - ): - GeneratorOptions.__init__(self, - conventions = conventions, - filename = filename, - directory = directory, - genpath = genpath, - apiname = apiname, - profile = profile, - versions = versions, - emitversions = emitversions, - defaultExtensions = defaultExtensions, - addExtensions = addExtensions, - removeExtensions = removeExtensions, - emitExtensions = emitExtensions, - sortProcedure = sortProcedure) - self.input = input - self.prefixText = prefixText - self.genFuncPointers = genFuncPointers - self.protectFile = protectFile - self.protectFeature = protectFeature - self.protectProto = protectProto - self.protectProtoStr = protectProtoStr - self.apicall = apicall - self.apientry = apientry - self.apientryp = apientryp - self.indentFuncProto = indentFuncProto - self.indentFuncPointer = indentFuncPointer - self.alignFuncParam = alignFuncParam - self.registryFile = registryFile - -# VulkanInfoGenerator - subclass of OutputGenerator. -# Generates a vulkan info output helper function - - -class VulkanInfoGenerator(OutputGenerator): - - def __init__(self, - errFile=sys.stderr, - warnFile=sys.stderr, - diagFile=sys.stdout): - OutputGenerator.__init__(self, errFile, warnFile, diagFile) - - self.constants = OrderedDict() - - self.types_to_gen = set() - - self.extension_sets = OrderedDict() - for ext_cat in EXTENSION_CATEGORIES.keys(): - self.extension_sets[ext_cat] = set() - - self.enums = [] - self.flags = [] - self.bitmasks = [] +class VulkanInfoGenerator(BaseGenerator): + def __init__(self): + BaseGenerator.__init__(self) self.format_ranges = [] - self.all_structures = [] - self.aliases = OrderedDict() - - self.extFuncs = OrderedDict() - self.extTypes = OrderedDict() - - self.vendor_abbreviations = [] - self.vulkan_versions = [] - - def beginFile(self, genOpts): - gen.OutputGenerator.beginFile(self, genOpts) - - for node in self.registry.reg.findall('enums'): - if node.get('name') == 'API Constants': - for item in node.findall('enum'): - self.constants[item.get('name')] = item.get('value') - - for node in self.registry.reg.find('extensions').findall('extension'): - ext = VulkanExtension(node) - for item in ext.vktypes: - if item not in self.extTypes: - self.extTypes[item] = [] - self.extTypes[item].append(ext) - for item in ext.vkfuncs: - self.extFuncs[item] = ext - # need list of venders to blacklist vendor extensions - for tag in self.registry.reg.find('tags'): - if tag.get('name') not in ['KHR', 'EXT']: - self.vendor_abbreviations.append('_' + tag.get('name')) - - for ver in self.registry.reg.findall('feature'): - self.vulkan_versions.append(VulkanVersion(ver)) - - def endFile(self): + def generate(self): self.findFormatRanges() # gather the types that are needed to generate types_to_gen = set() - for s in ENUMS_TO_GEN: - types_to_gen.add(s) - - for f in FLAGS_TO_GEN: - types_to_gen.add(f) + types_to_gen.update(ENUMS_TO_GEN) + types_to_gen.update(FLAGS_TO_GEN) + types_to_gen.update(STRUCTURES_TO_GEN) + + extension_types = {} + for key, ext_info in EXTENSION_CATEGORIES.items(): + extension_types[key] = [] + + for extended_struct in self.vk.structs[ext_info.get('extends')].extendedBy: + if ext_info.get('exclude') is not None and extended_struct in ext_info.get('exclude'): + continue + elif ext_info.get('ignore_vendor_exclusion'): + extension_types[key].append(extended_struct) + continue + vendor_tags = [] + for extension in self.vk.structs[extended_struct].extensions: + vendor_tags.append(extension.split('_')[1]) + if len(vendor_tags) == 0 or 'KHR' in vendor_tags or 'EXT' in vendor_tags: + extension_types[key].append(extended_struct) + extension_types[key] = sorted(extension_types[key]) + types_to_gen.update(extension_types[key]) + + # find all the types that need + types_to_gen.update(self.findAllTypesToGen(types_to_gen)) - types_to_gen.update( - GatherTypesToGen(self.all_structures, STRUCTURES_TO_GEN)) - for key, info in EXTENSION_CATEGORIES.items(): - types_to_gen.update( - GatherTypesToGen(self.all_structures, self.extension_sets[key], info.get('exclude'))) types_to_gen = sorted(types_to_gen) - names_of_structures_to_gen = set() - for s in self.all_structures: - if s.name in types_to_gen: - names_of_structures_to_gen.add(s.name) - names_of_structures_to_gen = sorted(names_of_structures_to_gen) + comparison_types_to_gen = set() + comparison_types_to_gen.update(STRUCT_COMPARISONS_TO_GEN) + comparison_types_to_gen.update(self.findAllTypesToGen(comparison_types_to_gen)) + comparison_types_to_gen = sorted(comparison_types_to_gen) - structs_to_comp = set() - for s in STRUCT_COMPARISONS_TO_GEN: - structs_to_comp.add(s) - structs_to_comp.update( - GatherTypesToGen(self.all_structures, STRUCT_COMPARISONS_TO_GEN)) - - for key, value in self.extension_sets.items(): - self.extension_sets[key] = sorted(value) - - self.enums = sorted(self.enums, key=operator.attrgetter('name')) - self.flags = sorted(self.flags, key=operator.attrgetter('name')) - self.bitmasks = sorted(self.bitmasks, key=operator.attrgetter('name')) - self.all_structures = sorted(self.all_structures, key=operator.attrgetter('name')) # print the types gathered - out = '' - out += LICENSE_HEADER + '\n' - out += '#include "vulkaninfo.h"\n' - out += '#include "outputprinter.h"\n' - out += CUSTOM_FORMATTERS + out = [] + out.append(LICENSE_HEADER + '\n') + out.append('#include "vulkaninfo.h"\n') + out.append('#include "outputprinter.h"\n') + out.append(CUSTOM_FORMATTERS) + + out.extend(self.genVideoEnums()) - out += self.genVideoEnums() + for enum in (e for e in types_to_gen if e in self.vk.enums): + out.extend(self.PrintEnumToString(self.vk.enums[enum])) + out.extend(self.PrintEnum(self.vk.enums[enum])) - for enum in (e for e in self.enums if e.name in types_to_gen): - out += PrintEnumToString(enum, self) - out += PrintEnum(enum, self) + # Need to go through all flags to find if they or their associated bitmask needs printing + # This is because both bitmask and flag types are generated in PrintBitMask + for name in (x for x in sorted(self.vk.flags.keys()) if x in types_to_gen or self.vk.flags[x].bitmaskName in types_to_gen): + bitmask = self.vk.bitmasks[self.vk.flags[name].bitmaskName] - for flag in self.flags: - if flag.name in types_to_gen or flag.enum in types_to_gen: - for bitmask in (b for b in self.bitmasks if b.name == flag.enum): - out += PrintBitMask(bitmask, flag.name, self) + out.extend(self.PrintBitMask(bitmask, bitmask.flagName)) - if flag.name in FLAG_STRINGS_TO_GEN: - for bitmask in (b for b in self.bitmasks if b.name == flag.enum): - out += PrintBitMaskToString(bitmask, flag.name, self) + if bitmask.flagName in FLAG_STRINGS_TO_GEN: + out.extend(self.PrintBitMaskToString(bitmask, bitmask.flagName)) - for s in (x for x in self.all_structures if x.name in types_to_gen and x.name not in STRUCT_BLACKLIST): - out += PrintStructure(s) + for s in (x for x in types_to_gen if x in self.vk.structs and x not in STRUCT_BLACKLIST): + out.extend(self.PrintStructure(self.vk.structs[s])) for key, value in EXTENSION_CATEGORIES.items(): - out += PrintChainStruct(key, self.extension_sets[key], self.all_structures, value, self.extTypes, self.aliases, self.vulkan_versions) + out.extend(self.PrintChainStruct(key, extension_types[key], value)) - for s in (x for x in self.all_structures if x.name in structs_to_comp): - out += PrintStructComparisonForwardDecl(s) - for s in (x for x in self.all_structures if x.name in structs_to_comp): - out += PrintStructComparison(s) - for s in (x for x in self.all_structures if x.name in STRUCT_SHORT_VERSIONS_TO_GEN): - out += PrintStructShort(s) + for s in (x for x in comparison_types_to_gen if x in self.vk.structs): + out.extend(self.PrintStructComparisonForwardDecl(self.vk.structs[s])) + for s in (x for x in comparison_types_to_gen if x in self.vk.structs): + out.extend(self.PrintStructComparison(self.vk.structs[s])) + for s in (x for x in types_to_gen if x in self.vk.structs and x in STRUCT_SHORT_VERSIONS_TO_GEN): + out.extend(self.PrintStructShort(self.vk.structs[s])) - out += 'auto format_ranges = std::array{\n' + out.append('auto format_ranges = std::array{\n') for f in self.format_ranges: - out += f' FormatRange{{{f.minimum_instance_version}, {f.extension_name if f.extension_name is not None else "nullptr"}, ' - out += f'static_cast({f.first_format}), static_cast({f.last_format})}},\n' - out += '};\n' + out.append(f' FormatRange{{{f.minimum_instance_version}, {self.vk.extensions[f.extensions[0]].nameString if len(f.extensions) > 0 else "nullptr"}, ') + out.append(f'static_cast({f.first_format}), static_cast({f.last_format})}},\n') + out.append('};\n') - out += self.genVideoProfileUtils() + out.extend(self.genVideoProfileUtils()) - gen.write(out, file=self.outFile) + self.write(''.join(out)) - gen.OutputGenerator.endFile(self) def genVideoEnums(self): - # We need to add dumping utilities for enums declared in the video std headers and directly - # present in the Vulkan API structures. In order to do that we really have no choice but - # to parse the video.xml and generate the utilities based on the enum types defined there - videoRegistryFile = self.genOpts.registryFile.replace('vk.xml', 'video.xml') - if os.path.isfile(videoRegistryFile): - videoxml = etree.parse(videoRegistryFile) - else: - assert False, "Could not find video.xml to generate utilities for video enum types" - out = '' - for enum in videoxml.findall("./enums[@name]"): - enumname = enum.get('name') - out += f'std::string {enumname}String({enumname} value) {{\n' - out += ' switch (value) {\n' - for option in enum.findall("./enum[@name]"): - name = option.get('name') + out = [] + for enum in self.vk.videoStd.enums.values(): + out.append(f'std::string {enum.name}String({enum.name} value) {{\n') + out.append(' switch (value) {\n') + for field in enum.fields: # Ignore aliases - if option.get('value') is not None: - out += f' case {name}: return "{name}";\n' - out += f' default: return std::string("UNKNOWN_{enumname}_value") + std::to_string(value);\n' - out += ' }\n}\n' - out += f'void Dump{enumname}(Printer &p, std::string name, {enumname} value) {{\n' - out += f' p.PrintKeyString(name, {enumname}String(value));\n}}\n' + if field.value is not None: + out.append(f' case {field.name}: return "{field.name}";\n') + out.append(f' default: return std::string("UNKNOWN_{enum.name}_value") + std::to_string(value);\n') + out.append(' }\n}\n') + out.append(f'void Dump{enum.name}(Printer &p, std::string name, {enum.name} value) {{\n') + out.append(f' p.PrintKeyString(name, {enum.name}String(value));\n}}\n') return out - def genVideoProfileUtils(self): - out = '' - - # Parse video codec information from the XML - videoCodecs = OrderedDict() - xmlVideoCodecs = self.registry.reg.find("./videocodecs") - for xmlVideoCodec in xmlVideoCodecs.findall("./videocodec"): - name = xmlVideoCodec.get('name') - extend = xmlVideoCodec.get('extend') - value = xmlVideoCodec.get('value') - if value is None: - # Video codec category - videoCodecs[name] = VulkanVideoCodec(name) - else: - # Specific video codec - videoCodecs[name] = VulkanVideoCodec(name, videoCodecs[extend], value) - videoCodec = videoCodecs[name] - - for xmlVideoProfiles in xmlVideoCodec.findall("./videoprofiles"): - videoProfileStructName = xmlVideoProfiles.get('struct') - videoCodec.profileStructs[videoProfileStructName] = VulkanVideoProfileStruct(videoProfileStructName) - videoProfileStruct = videoCodec.profileStructs[videoProfileStructName] - - for xmlVideoProfileMember in xmlVideoProfiles.findall("./videoprofilemember"): - memberName = xmlVideoProfileMember.get('name') - videoProfileStruct.members[memberName] = VulkanVideoProfileStructMember(memberName) - videoProfileStructMember = videoProfileStruct.members[memberName] - - for xmlVideoProfile in xmlVideoProfileMember.findall("./videoprofile"): - videoProfileStructMember.values[xmlVideoProfile.get('value')] = xmlVideoProfile.get('name') - - for xmlVideoCapabilities in xmlVideoCodec.findall("./videocapabilities"): - capabilityStructName = xmlVideoCapabilities.get('struct') - videoCodec.capabilities[capabilityStructName] = capabilityStructName - - for xmlVideoFormat in xmlVideoCodec.findall("./videoformat"): - videoFormatName = xmlVideoFormat.get('name') - videoFormatExtend = xmlVideoFormat.get('extend') - if videoFormatName is not None: - # This is a new video format category - videoFormatUsage = xmlVideoFormat.get('usage') - videoCodec.formats[videoFormatName] = VulkanVideoFormat(videoFormatName, videoFormatUsage) - videoFormat = videoCodec.formats[videoFormatName] - elif videoFormatExtend is not None: - # This is an extension to an already defined video format category - if videoFormatExtend in videoCodec.formats: - videoFormat = videoCodec.formats[videoFormatExtend] - else: - assert False, f"Video format category '{videoFormatExtend}' not found but it is attempted to be extended" - else: - assert False, "'name' or 'extend' is attribute is required for 'videoformat' element" - - for xmlVideoFormatProperties in xmlVideoFormat.findall("./videoformatproperties"): - propertiesStructName = xmlVideoFormatProperties.get('struct') - videoFormat.properties[propertiesStructName] = propertiesStructName - - for xmlVideoFormatRequiredCap in xmlVideoFormat.findall("./videorequirecapabilities"): - requiredCapStruct = xmlVideoFormatRequiredCap.get('struct') - requiredCapMember = xmlVideoFormatRequiredCap.get('member') - requiredCapValue = xmlVideoFormatRequiredCap.get('value') - videoFormat.requiredCaps.append(VulkanVideoRequiredCapabilities(requiredCapStruct, requiredCapMember, requiredCapValue)) - - # Collect flag types in a set because we will need to look this up - flagTypes = set() - for flagType in self.flags: - flagTypes.add(flagType.name) - - # Utility to get structure definition from structure name - def GetStructDef(name): - for s in self.all_structures: - if s.name == name: - return s - assert False, f"Definition for structure '{name}' is missing" - - # Utility to get the extension / version precondition of a list of type names - def GetTypesPrecondition(typelist, indent): - indent = ' ' * indent - out = '' - extEnables = {} - for typename in typelist: - for k, elem in self.extTypes.items(): - if k == typename or (typename in self.aliases.keys() and k in self.aliases[typename]): - for e in elem: - extEnables[e.extNameStr] = e.type - - version = None - for typename in typelist: - for v in self.vulkan_versions: - if typename in v.names: - if version is not None and (v.major > version.major or (v.major == version.major and v.minor > version.minor)): - version = v - - has_version = version is not None - has_extNameStr = len(extEnables) > 0 or typename in self.aliases.keys() - if has_version or has_extNameStr: - out += f'{indent}if (' - has_printed_condition = False - if has_extNameStr: - for key, value in extEnables.items(): - if has_printed_condition: - out += f'\n{indent} || ' - else: - has_printed_condition = True - if has_version: - out += '(' - if value == EXTENSION_TYPE_DEVICE: - out += f'gpu.CheckPhysicalDeviceExtensionIncluded({key})' - else: - assert False, 'Should never get here' - if has_version: + + # Utility to get the extension / version precondition of a list of type names + def GetTypesPrecondition(self, typelist, indent): + indent = ' ' * indent + out = [] + extEnables = [] + for typename in typelist: + extEnables.extend(self.vk.structs[typename].extensions) + + version = None + for typename in typelist: + for v in self.vk.versions.values(): + if typename in v.name: + if version is not None and (v.major > version.major or (v.major == version.major and v.minor > version.minor)): + version = v + + + has_version = version is not None + has_extNameStr = len(extEnables) > 0 + if has_version or has_extNameStr: + out.append(f'{indent}if (') + has_printed_condition = False + if has_extNameStr: + for ext in extEnables: if has_printed_condition: - out += f'\n{indent} || (gpu.api_version >= {version.constant})' + out.append(f'\n{indent} || ') else: - out += f'gpu.api_version >= {version.constant}' - out += ') {\n' - else: - out = f'{indent}{{\n' - return out - - # Utility to construct a capability prerequisite condition evaluation expression - def GetRequiredCapsCondition(structName, memberName, memberRef, value): - condition = '' - requiredCapStructDef = GetStructDef(structName) - for member in requiredCapStructDef.members: - if member.name == memberName: - if member.typeID in flagTypes: - # Check that the flags contain all the required values - def genExpressionFromValue(value): - return value if value == "" else f"({memberRef} & {value}) != 0" - - for char in condition: - if char in ['(', ')', '+', ',']: - condition += genExpressionFromValue(value) - value = "" - if char == '+': - # '+' means AND - condition += ' && ' - elif char == ',': - # ',' means OR - condition += ' || ' - else: - condition += char - else: - value += char - condition += genExpressionFromValue(value) + has_printed_condition = True + if has_version: + out.append('(') + if self.vk.extensions[ext].device: + out.append(f'gpu.CheckPhysicalDeviceExtensionIncluded({self.vk.extensions[ext].nameString})') else: - condition = f'{memberRef} == {value}' - if condition == '': - return 'true' - else: - return f'({condition})' + assert False, 'Should never get here' + if has_version: + if has_printed_condition: + out.append(f'\n{indent} || (gpu.api_version >= {version.nameApi})') + else: + out.append(f'gpu.api_version >= {version.nameApi}') + out.append(') {\n') + else: + out = f'{indent}{{\n' + return out + + # Utility to construct a capability prerequisite condition evaluation expression + def GetRequiredCapsCondition(self, structName, memberName, memberRef, value): + condition = '' + requiredCapStructDef = self.vk.structs[structName] + for member in requiredCapStructDef.members: + if member.name == memberName: + if member.type in self.vk.flags: + # Check that the flags contain all the required values + def genExpressionFromValue(value): + return value if value == "" else f"({memberRef} & {value}) != 0" + + for char in condition: + if char in ['(', ')', '+', ',']: + condition += genExpressionFromValue(value) + value = "" + if char == '+': + # '+' means AND + condition += ' && ' + elif char == ',': + # ',' means OR + condition += ' || ' + else: + condition += char + else: + value += char + condition += genExpressionFromValue(value) + else: + condition = f'{memberRef} == {value}' + if condition == '': + return 'true' + else: + return f'({condition})' + + def genVideoProfileUtils(self): + out = [] # Generate video format properties comparator - out += ''' + out.append(''' bool is_video_format_same(const VkVideoFormatPropertiesKHR &format_a, const VkVideoFormatPropertiesKHR &format_b) { auto a = reinterpret_cast(&format_a); auto b = reinterpret_cast(&format_b); @@ -570,19 +359,19 @@ def genExpressionFromValue(value): // Structure type mismatch (extension structures are expected to be chained in the same order) same = false; } else { - switch (a->sType) {''' + switch (a->sType) {''') if 'VkVideoFormatPropertiesKHR' in self.registry.validextensionstructs: for extstruct in ['VkVideoFormatPropertiesKHR'] + self.registry.validextensionstructs['VkVideoFormatPropertiesKHR']: - extstructDef = GetStructDef(extstruct) - out += f''' - case {extstructDef.sTypeName}: + extstructDef = self.vk.structs[extstruct] + out.append(f''' + case {extstructDef.sType}: same = same && memcmp(reinterpret_cast(a) + sizeof(VkBaseInStructure), reinterpret_cast(b) + sizeof(VkBaseInStructure), sizeof({extstruct}) - sizeof(VkBaseInStructure)) == 0; - break;''' + break;''') - out += ''' + out.append(''' default: // Unexpected structure type same = false; @@ -594,10 +383,10 @@ def genExpressionFromValue(value): } return same; } -''' +''') # Generate video profile info capture utilities - out += ''' + out.append(''' std::vector> enumerate_supported_video_profiles(AppGpu &gpu) { std::vector> result{}; @@ -665,19 +454,19 @@ def genExpressionFromValue(value): result.push_back(std::move(profile)); } }; -''' +''') # Generate individual video profiles from the video codec metadata - for videoCodec in videoCodecs.values(): + for videoCodec in self.vk.videoCodecs.values(): # Ignore video codec categories if videoCodec.value is None: continue - out += '\n' - out += GetTypesPrecondition(videoCodec.profileStructs, 4) - out += f'{" " * 8}const std::string codec_name = "{videoCodec.name}";\n' + out.append('\n') + out.extend(self.GetTypesPrecondition(videoCodec.profiles.keys(), 4)) + out.append(f'{" " * 8}const std::string codec_name = "{videoCodec.name}";\n') - out += ''' + out.append(''' for (auto chroma_subsampling : chroma_subsampling_list) { for (auto luma_bit_depth : bit_depth_list) { for (auto chroma_bit_depth : bit_depth_list) { @@ -687,107 +476,107 @@ def genExpressionFromValue(value): } std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth); -''' +''') # Setup video profile info - out += f'{" " * 20}VkVideoProfileInfoKHR profile_info{{\n' - out += f'{" " * 20} VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,\n' - out += f'{" " * 20} nullptr,\n' - out += f'{" " * 20} {videoCodec.value},\n' - out += f'{" " * 20} chroma_subsampling.value,\n' - out += f'{" " * 20} luma_bit_depth.value,\n' - out += f'{" " * 20} chroma_bit_depth.value\n' - out += f'{" " * 20}}};\n\n' + out.append(f'{" " * 20}VkVideoProfileInfoKHR profile_info{{\n') + out.append(f'{" " * 20} VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,\n') + out.append(f'{" " * 20} nullptr,\n') + out.append(f'{" " * 20} {videoCodec.value},\n') + out.append(f'{" " * 20} chroma_subsampling.value,\n') + out.append(f'{" " * 20} luma_bit_depth.value,\n') + out.append(f'{" " * 20} chroma_bit_depth.value\n') + out.append(f'{" " * 20}}};\n\n') # Setup video profile info chain creation callback - out += f'{" " * 20}auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr {{\n' - out += f'{" " * 20} auto profile_info_chain = std::make_unique();\n' - for profileStruct in videoCodec.profileStructs: - structDef = GetStructDef(profileStruct) - out += AddGuardHeader(structDef) - out += f'{" " * 24}if (profile_info_chain != nullptr) {{\n' - out += f'{" " * 28}profile_info_chain->{profileStruct[2:]}.sType = {structDef.sTypeName};\n' - out += f'{" " * 28}profile_info_chain->{profileStruct[2:]}.pNext = nullptr;\n' - out += f'{" " * 28}*ppnext = &profile_info_chain->{profileStruct[2:]};\n' - out += f'{" " * 28}ppnext = &profile_info_chain->{profileStruct[2:]}.pNext;\n' - out += f'{" " * 24}}}\n' - if structDef.guard: - out += f'#else\n{" " * 20}profile_info_chain = nullptr;\n' - out += AddGuardFooter(structDef) - out += f'{" " * 20} return profile_info_chain;\n' - out += f'{" " * 20}}};\n\n' + out.append(f'{" " * 20}auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr {{\n') + out.append(f'{" " * 20} auto profile_info_chain = std::make_unique();\n') + for profileStruct in videoCodec.profiles: + structDef = self.vk.structs[profileStruct] + out.append(self.AddGuardHeader(structDef)) + out.append(f'{" " * 24}if (profile_info_chain != nullptr) {{\n') + out.append(f'{" " * 28}profile_info_chain->{profileStruct[2:]}.sType = {structDef.sType};\n') + out.append(f'{" " * 28}profile_info_chain->{profileStruct[2:]}.pNext = nullptr;\n') + out.append(f'{" " * 28}*ppnext = &profile_info_chain->{profileStruct[2:]};\n') + out.append(f'{" " * 28}ppnext = &profile_info_chain->{profileStruct[2:]}.pNext;\n') + out.append(f'{" " * 24}}}\n') + if structDef.protect: + out.append(f'#else\n{" " * 20}profile_info_chain = nullptr;\n') + out.append(self.AddGuardFooter(structDef)) + out.append(f'{" " * 20} return profile_info_chain;\n') + out.append(f'{" " * 20}}};\n\n') # Setup video capabilities chain creation callback - out += f'{" " * 20}auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr {{\n' - out += f'{" " * 20} auto capabilities_chain = std::make_unique();\n' + out.append(f'{" " * 20}auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr {{\n') + out.append(f'{" " * 20} auto capabilities_chain = std::make_unique();\n') for capabilities in videoCodec.capabilities: - structDef = GetStructDef(capabilities) - out += AddGuardHeader(structDef) - out += f'{" " * 24}if (capabilities_chain != nullptr) {{\n' - out += GetTypesPrecondition([capabilities], 28) - out += f'{" " * 32}capabilities_chain->{capabilities[2:]}.sType = {structDef.sTypeName};\n' - out += f'{" " * 32}capabilities_chain->{capabilities[2:]}.pNext = nullptr;\n' - out += f'{" " * 32}*ppnext = &capabilities_chain->{capabilities[2:]};\n' - out += f'{" " * 32}ppnext = &capabilities_chain->{capabilities[2:]}.pNext;\n' - out += f'{" " * 28}}}\n' - out += f'{" " * 24}}}\n' - out += AddGuardFooter(structDef) - out += f'{" " * 20} return capabilities_chain;\n' - out += f'{" " * 20}}};\n\n' + structDef = self.vk.structs[capabilities] + out.append(self.AddGuardHeader(structDef)) + out.append(f'{" " * 24}if (capabilities_chain != nullptr) {{\n') + out.extend(self.GetTypesPrecondition([capabilities], 28)) + out.append(f'{" " * 32}capabilities_chain->{capabilities[2:]}.sType = {structDef.sType};\n') + out.append(f'{" " * 32}capabilities_chain->{capabilities[2:]}.pNext = nullptr;\n') + out.append(f'{" " * 32}*ppnext = &capabilities_chain->{capabilities[2:]};\n') + out.append(f'{" " * 32}ppnext = &capabilities_chain->{capabilities[2:]}.pNext;\n') + out.append(f'{" " * 28}}}\n') + out.append(f'{" " * 24}}}\n') + out.append(self.AddGuardFooter(structDef)) + out.append(f'{" " * 20} return capabilities_chain;\n') + out.append(f'{" " * 20}}};\n\n') # Setup video format properties chain creation callbacks - out += f'{" " * 20}const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {{\n' + out.append(f'{" " * 20}const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {{\n') for format in videoCodec.formats.values(): - out += f'{" " * 24}AppVideoProfile::CreateFormatPropertiesChainCb {{\n' - out += f'{" " * 28}"{format.name}",\n' - out += f'{" " * 28}{format.usage.replace("+", " | ")},\n' + out.append(f'{" " * 24}AppVideoProfile::CreateFormatPropertiesChainCb {{\n') + out.append(f'{" " * 28}"{format.name}",\n') + out.append(f'{" " * 28}{format.usage.replace("+", " | ")},\n') # Callback to check required capabilities - out += f'{" " * 28}[&](const VkVideoCapabilitiesKHR &capabilities) -> bool {{\n' - out += f'{" " * 28} bool supported = true;\n' + out.append(f'{" " * 28}[&](const VkVideoCapabilitiesKHR &capabilities) -> bool {{\n') + out.append(f'{" " * 28} bool supported = true;\n') for requiredCap in format.requiredCaps: - structDef = GetStructDef(requiredCap.struct) - out += AddGuardHeader(structDef) - out += GetTypesPrecondition([requiredCap.struct], 32) - out += f'{" " * 32} auto caps = reinterpret_cast(find_caps_struct(capabilities, {structDef.sTypeName}));\n' - out += f'{" " * 32} if (caps != nullptr) {{\n' - out += f'{" " * 32} supported = supported && {GetRequiredCapsCondition(requiredCap.struct, requiredCap.member, f"caps->{requiredCap.member}", requiredCap.value)};\n' - out += f'{" " * 32} }} else {{\n' - out += f'{" " * 32} supported = false;\n' - out += f'{" " * 32} }}\n' - out += f'{" " * 32}}} else {{\n' - out += f'{" " * 32} supported = false;\n' - out += f'{" " * 32}}}\n' - if structDef.guard: - out += f'#else\n{" " * 32}supported = false;\n' - out += AddGuardFooter(structDef) - out += f'{" " * 28} return supported;\n' - out += f'{" " * 28}}},\n' + structDef = self.vk.structs[requiredCap.struct] + out.append(self.AddGuardHeader(structDef)) + out.extend(self.GetTypesPrecondition([requiredCap.struct], 32)) + out.append(f'{" " * 32} auto caps = reinterpret_cast(find_caps_struct(capabilities, {structDef.sType}));\n') + out.append(f'{" " * 32} if (caps != nullptr) {{\n') + out.append(f'{" " * 32} supported = supported && {self.GetRequiredCapsCondition(requiredCap.struct, requiredCap.member, f"caps->{requiredCap.member}", requiredCap.value)};\n') + out.append(f'{" " * 32} }} else {{\n') + out.append(f'{" " * 32} supported = false;\n') + out.append(f'{" " * 32} }}\n') + out.append(f'{" " * 32}}} else {{\n') + out.append(f'{" " * 32} supported = false;\n') + out.append(f'{" " * 32}}}\n') + if structDef.protect: + out.append(f'#else\n{" " * 32}supported = false;\n') + out.append(self.AddGuardFooter(structDef)) + out.append(f'{" " * 28} return supported;\n') + out.append(f'{" " * 28}}},\n') # Callback to create video format properties chain - out += f'{" " * 28}[&](void **ppnext) -> std::unique_ptr {{\n' - out += f'{" " * 28} auto format_properties_chain = std::make_unique();\n' + out.append(f'{" " * 28}[&](void **ppnext) -> std::unique_ptr {{\n') + out.append(f'{" " * 28} auto format_properties_chain = std::make_unique();\n') for formatProps in format.properties: - structDef = GetStructDef(formatProps) - out += AddGuardHeader(structDef) - out += f'{" " * 32}if (format_properties_chain != nullptr) {{\n' - out += GetTypesPrecondition([formatProps], 36) - out += f'{" " * 40}format_properties_chain->{formatProps[2:]}.sType = {structDef.sTypeName};\n' - out += f'{" " * 40}format_properties_chain->{formatProps[2:]}.pNext = nullptr;\n' - out += f'{" " * 40}*ppnext = &format_properties_chain->{formatProps[2:]};\n' - out += f'{" " * 40}ppnext = &format_properties_chain->{formatProps[2:]}.pNext;\n' - out += f'{" " * 36}}}\n' - out += f'{" " * 32}}}\n' - out += AddGuardFooter(structDef) - out += f'{" " * 28} return format_properties_chain;\n' - out += f'{" " * 28}}},\n' - - out += f'{" " * 24}}},\n' - out += f'{" " * 20}}};\n\n' + structDef = self.vk.structs[formatProps] + out.append(self.AddGuardHeader(structDef)) + out.append(f'{" " * 32}if (format_properties_chain != nullptr) {{\n') + out.extend(self.GetTypesPrecondition([formatProps], 36)) + out.append(f'{" " * 40}format_properties_chain->{formatProps[2:]}.sType = {structDef.sType};\n') + out.append(f'{" " * 40}format_properties_chain->{formatProps[2:]}.pNext = nullptr;\n') + out.append(f'{" " * 40}*ppnext = &format_properties_chain->{formatProps[2:]};\n') + out.append(f'{" " * 40}ppnext = &format_properties_chain->{formatProps[2:]}.pNext;\n') + out.append(f'{" " * 36}}}\n') + out.append(f'{" " * 32}}}\n') + out.append(self.AddGuardFooter(structDef)) + out.append(f'{" " * 28} return format_properties_chain;\n') + out.append(f'{" " * 28}}},\n') + + out.append(f'{" " * 24}}},\n') + out.append(f'{" " * 20}}};\n\n') # Permute profiles for each profile struct member value profiles = {'': []} - for profileStruct in videoCodec.profileStructs.values(): + for profileStruct in videoCodec.profiles.values(): for profileStructMember in profileStruct.members.values(): newProfiles = {} for profileStructMemberValue, profileStructMemberName in profileStructMember.values.items(): @@ -795,246 +584,144 @@ def genExpressionFromValue(value): # Only add video profile name suffix to the full descriptive name if not empty to avoid excess whitespace newProfileName = profileName if profileStructMemberName == '' else f'{profileName} {profileStructMemberName}' newProfiles[newProfileName] = profile + [{ - "struct": profileStruct.struct, + "struct": profileStruct.name, "member": profileStructMember.name, "value": profileStructMemberValue }] profiles = newProfiles for profileName, profile in profiles.items(): - out += f'{" " * 20}add_profile(profile_base_name + "{profileName}", profile_info,\n' - out += f'{" " * 20} create_profile_info_chain, create_capabilities_chain,\n' - out += f'{" " * 20} create_format_properties_chain_list,\n' - out += f'{" " * 20} [](AppVideoProfile& profile) {{\n' - for profileStruct in videoCodec.profileStructs: - structDef = GetStructDef(profileStruct) - out += AddGuardHeader(structDef) + out.append(f'{" " * 20}add_profile(profile_base_name + "{profileName}", profile_info,\n') + out.append(f'{" " * 20} create_profile_info_chain, create_capabilities_chain,\n') + out.append(f'{" " * 20} create_format_properties_chain_list,\n') + out.append(f'{" " * 20} [](AppVideoProfile& profile) {{\n') + for profileStruct in videoCodec.profiles: + structDef = self.vk.structs[profileStruct] + out.append(self.AddGuardHeader(structDef)) for elem in profile: if elem['struct'] == profileStruct: - out += f'{" " * 24}profile.profile_info_chain->{elem["struct"][2:]}.{elem["member"]} = {elem["value"]};\n' - out += AddGuardFooter(structDef) - out += f'{" " * 20}}});\n' + out.append(f'{" " * 24}profile.profile_info_chain->{elem["struct"][2:]}.{elem["member"]} = {elem["value"]};\n') + out.append(self.AddGuardFooter(structDef)) + out.append(f'{" " * 20}}});\n') - out += f'{" " * 16}}}\n' - out += f'{" " * 12}}}\n' - out += f'{" " * 8}}}\n' - out += f'{" " * 4}}}\n' + out.append(f'{" " * 16}}}\n') + out.append(f'{" " * 12}}}\n') + out.append(f'{" " * 8}}}\n') + out.append(f'{" " * 4}}}\n') - out += ' return result;\n' - out += '}\n\n' + out.append(' return result;\n') + out.append('}\n\n') return out - def genCmd(self, cmd, name, alias): - gen.OutputGenerator.genCmd(self, cmd, name, alias) - # These are actually constants - def genEnum(self, enuminfo, name, alias): - gen.OutputGenerator.genEnum(self, enuminfo, name, alias) + # finds all the ranges of formats from core (1.0), core versions (1.1+), and extensions + def findFormatRanges(self): + min_val = 2**32 + prev_field = None + max_val = 0 + for f in self.vk.enums['VkFormat'].fields: + if f.value is None: + continue + if prev_field is not None and f.value != prev_field.value + 1: + for ext in prev_field.extensions: + if self.vk.extensions[ext].promotedTo is not None: + self.format_ranges.append(VulkanFormatRange(self.vk.extensions[ext].promotedTo.replace("VK_", "VK_API_"), [], min_val, max_val)) + break + # only bother with the first extension + self.format_ranges.append(VulkanFormatRange(0, prev_field.extensions, min_val, max_val)) + min_val = 2**32 + max_val = 0 + min_val = min(min_val, f.value) + max_val = max(max_val, f.value) - # These are actually enums - def genGroup(self, groupinfo, groupName, alias): - gen.OutputGenerator.genGroup(self, groupinfo, groupName, alias) + prev_field = f - if alias is not None: - if alias in self.aliases.keys(): - self.aliases[alias].append(groupName) - else: - self.aliases[alias] = [groupName, ] - return + for ext in prev_field.extensions: + if self.vk.extensions[ext].promotedTo is not None: + self.format_ranges.append(VulkanFormatRange(self.vk.extensions[ext].promotedTo.replace("VK_", "VK_API_"), [], min_val, max_val)) + break - if groupinfo.elem.get('type') == 'bitmask': - self.bitmasks.append(VulkanBitmask(groupinfo.elem)) - elif groupinfo.elem.get('type') == 'enum': - self.enums.append(VulkanEnum(groupinfo.elem)) + self.format_ranges.append(VulkanFormatRange(0, prev_field.extensions, min_val, max_val)) - def genType(self, typeinfo, name, alias): - gen.OutputGenerator.genType(self, typeinfo, name, alias) + def findAllTypesToGen(self, initial_type_set): + out_set = set() + current_set = initial_type_set + while len(current_set) > 0: + out_set.update(current_set) + next_set = set() - if alias is not None: - if alias in self.aliases.keys(): - self.aliases[alias].append(name) - else: - self.aliases[alias] = [name, ] - return - - if typeinfo.elem.get('category') == 'bitmask': - self.flags.append(VulkanFlags(typeinfo.elem)) - - if typeinfo.elem.get('category') == 'struct': - self.all_structures.append(VulkanStructure( - name, typeinfo.elem, self.constants, self.extTypes)) - - is_vendor_type = False - for vendor in self.vendor_abbreviations: - for node in typeinfo.elem.findall('member'): - if node.get('values') is not None: - if node.get('values').find(vendor) != -1: - is_vendor_type = True - break - if is_vendor_type: - break + for current_item in current_set: + if current_item in self.vk.structs: + for member in self.vk.structs[current_item].members: + if member.type not in out_set and member.name not in NAMES_TO_IGNORE: + next_set.add(member.type) - for key, value in EXTENSION_CATEGORIES.items(): - if str(typeinfo.elem.get('structextends')).find(value.get('extends')) != -1: - if value.get('exclude') is None or name not in value.get('exclude'): - if not is_vendor_type or value.get('ignore_vendor_exclusion'): - self.extension_sets[key].add(name) + current_set = next_set + return out_set - # finds all the ranges of formats from core (1.0), core versions (1.1+), and extensions - def findFormatRanges(self): - for enums in self.registry.reg.findall('enums'): - if enums.get('name') == 'VkFormat': - min_val = 2**32 - max_val = 0 - for enum in enums.findall('enum'): - if enum.get('value') is None: - continue - value = int(enum.get('value')) - min_val = min(min_val, value) - max_val = max(max_val, value) - if min_val < 2**32 and max_val > 0: - self.format_ranges.append(VulkanFormatRange(0, None, min_val, max_val)) - - for feature in self.registry.reg.findall('feature'): - for require in feature.findall('require'): - comment = require.get('comment') - original_ext = None - if comment is not None and comment.find('Promoted from') >= 0: - # may need tweaking in the future - some ext names aren't just the upper case version - original_ext = comment.split(' ')[2].upper() + '_EXTENSION_NAME' - # insert an underscore before numbers in the name define - original_ext = re.sub(r'([A-Z])(\d+)', r'\1_\2', original_ext) - min_val = 2**32 - max_val = 0 - for enum in require.findall('enum'): - if enum.get('extends') == 'VkFormat': - value = CalcEnumValue(int(enum.get('extnumber')), int(enum.get('offset'))) - min_val = min(min_val, value) - max_val = max(max_val, value) - if min_val < 2**32 and max_val > 0: - self.format_ranges.append(VulkanFormatRange(feature.get('name').replace('_VERSION_', '_API_VERSION_'), None, min_val, max_val)) - # If the formats came from an extension, add a format range for that extension so it'll be printed if the ext is supported but not the core version - if original_ext is not None: - self.format_ranges.append(VulkanFormatRange(0, original_ext, min_val, max_val)) - - for extension in self.registry.reg.find('extensions').findall('extension'): - if not self.genOpts.apiname in extension.get('supported').split(','): - continue + def AddGuardHeader(self,obj): + if obj is not None and obj.protect is not None: + return f'#ifdef {obj.protect}\n' + else: + return '' + + + def AddGuardFooter(self,obj): + if obj is not None and obj.protect is not None: + return f'#endif // {obj.protect}\n' + else: + return '' + + def PrintEnumToString(self,enum): + out = [] + out.append(self.AddGuardHeader(enum)) + out.append(f'std::string {enum.name}String({enum.name} value) {{\n') + out.append(' switch (value) {\n') + for v in enum.fields: + out.append(f' case ({v.name}): return "{v.name[3:]}";\n') + out.append(f' default: return std::string("UNKNOWN_{enum.name}_value") + std::to_string(value);\n') + out.append(' }\n}\n') + out.append(self.AddGuardFooter(enum)) + return out - min_val = 2**32 - max_val = 0 - enum_name_string = '' - for require in extension.findall('require'): - for enum in require.findall('enum'): - if enum.get('value') is not None and enum.get('value').find(extension.get('name')): - enum_name_string = enum.get('name') - if enum.get('extends') == 'VkFormat': - if enum.get('offset') is None: - continue - value = CalcEnumValue(int(extension.get('number')), int(enum.get('offset'))) - min_val = min(min_val, value) - max_val = max(max_val, value) - if min_val < 2**32 and max_val > 0: - self.format_ranges.append(VulkanFormatRange(0, enum_name_string, min_val, max_val)) - - - -def GatherTypesToGen(structure_list, structures, exclude = None): - if exclude is None: - exclude = [] - types = set() - for s in structures: - types.add(s) - added_stuff = True # repeat until no new types are added - while added_stuff is True: - added_stuff = False - for s in structure_list: - if s.name in types: - for m in s.members: - if m.typeID not in PREDEFINED_TYPES and m.name not in NAMES_TO_IGNORE: - if m.typeID not in types: - if s.name not in exclude: - types.add(m.typeID) - added_stuff = True - return types - - -def GetExtension(name, generator): - if name in generator.extFuncs: - return generator.extFuncs[name] - elif name in generator.extTypes: - return generator.extTypes[name][0] - else: - return None - - -def AddGuardHeader(obj): - if obj is not None and obj.guard is not None: - return f'#ifdef {obj.guard}\n' - else: - return '' - - -def AddGuardFooter(obj): - if obj is not None and obj.guard is not None: - return f'#endif // {obj.guard}\n' - else: - return '' - -def CalcEnumValue(num, offset): - base = 1000000000 - block_size = 1000 - return base + (num - 1) * block_size + offset - -def PrintEnumToString(enum, generator): - out = '' - out += AddGuardHeader(GetExtension(enum.name, generator)) - out += f'std::string {enum.name}String({enum.name} value) {{\n' - out += ' switch (value) {\n' - for v in enum.options: - out += f' case ({v.name}): return "{v.name[3:]}";\n' - out += f' default: return std::string("UNKNOWN_{enum.name}_value") + std::to_string(value);\n' - out += ' }\n}\n' - out += AddGuardFooter(GetExtension(enum.name, generator)) - return out - - -def PrintEnum(enum, generator): - out = '' - out += AddGuardHeader(GetExtension(enum.name, generator)) - out += f'''void Dump{enum.name}(Printer &p, std::string name, {enum.name} value) {{ + + def PrintEnum(self,enum): + out = [] + out.append(self.AddGuardHeader(enum)) + out.append(f'''void Dump{enum.name}(Printer &p, std::string name, {enum.name} value) {{ if (p.Type() == OutputType::json) p.PrintKeyString(name, std::string("VK_") + {enum.name}String(value)); else p.PrintKeyString(name, {enum.name}String(value)); }} -''' - out += AddGuardFooter(GetExtension(enum.name, generator)) - return out - - -def PrintGetFlagStrings(name, bitmask): - out = '' - out += f'std::vector {name}GetStrings({name} value) {{\n' - out += ' std::vector strings;\n' - # If a bitmask contains a field whose value is zero, we want to support printing the correct bitflag - # Otherwise, use "None" for when there are not bits set in the bitmask - if bitmask.options[0].value != 0: - out += ' if (value == 0) { strings.push_back("None"); return strings; }\n' - else: - out += f' if (value == 0) {{ strings.push_back("{bitmask.options[0].name[3:]}"); return strings; }}\n' - for v in bitmask.options: - # only check single-bit flags - if v.value != 0 and (v.value & (v.value - 1)) == 0: - out += f' if ({v.name} & value) strings.push_back("{v.name[3:]}");\n' - out += ' return strings;\n}\n' - return out - - -def PrintFlags(bitmask, name): - out = f'void Dump{name}(Printer &p, std::string name, {name} value) {{\n' - out += f''' if (static_cast<{bitmask.name}>(value) == 0) {{ +''') + out.append(self.AddGuardFooter(enum)) + return out + + + def PrintGetFlagStrings(self,name, bitmask): + out = [] + out.append(f'std::vector {name}GetStrings({name} value) {{\n') + out.append(' std::vector strings;\n') + # If a bitmask contains a field whose value is zero, we want to support printing the correct bitflag + # Otherwise, use "None" for when there are not bits set in the bitmask + if bitmask.flags[0].value != 0: + out.append(' if (value == 0) { strings.push_back("None"); return strings; }\n') + else: + out.append(f' if (value == 0) {{ strings.push_back("{bitmask.flags[0].name[3:]}"); return strings; }}\n') + for v in bitmask.flags: + # only check single-bit flags + if v.value != 0 and (v.value & (v.value - 1)) == 0: + out.append(f' if ({v.name} & value) strings.push_back("{v.name[3:]}");\n') + out.append(' return strings;\n}\n') + return out + + + def PrintFlags(self, bitmask, name): + out = [] + out.append(f'void Dump{name}(Printer &p, std::string name, {name} value) {{\n') + out.append(f''' if (static_cast<{bitmask.name}>(value) == 0) {{ ArrayWrapper arr(p, name, 0); if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None"); @@ -1049,12 +736,12 @@ def PrintFlags(bitmask, name): p.SetAsType().PrintString(str); }} }} -''' - return out +''') + return out -def PrintFlagBits(bitmask): - return f'''void Dump{bitmask.name}(Printer &p, std::string name, {bitmask.name} value) {{ + def PrintFlagBits(self, bitmask): + return [f'''void Dump{bitmask.name}(Printer &p, std::string name, {bitmask.name} value) {{ auto strings = {bitmask.name}GetStrings(value); if (strings.size() > 0) {{ if (p.Type() == OutputType::json) @@ -1063,263 +750,249 @@ def PrintFlagBits(bitmask): p.PrintKeyString(name, strings.at(0)); }} }} -''' +'''] + + + def PrintBitMask(self,bitmask, name): + out = [] + out.extend(self.PrintGetFlagStrings(bitmask.name, bitmask)) + out.append(self.AddGuardHeader(bitmask)) + out.extend(self.PrintFlags(bitmask, name)) + out.extend(self.PrintFlagBits(bitmask)) + out.append(self.AddGuardFooter(bitmask)) + out.append('\n') + return out + + def PrintBitMaskToString(self, bitmask, name): + out = [] + out.append(self.AddGuardHeader(bitmask)) + out.append(f'std::string {name}String({name} value) {{\n') + out.append(' std::string out;\n') + out.append(' bool is_first = true;\n') + for v in bitmask.flags: + out.append(f' if ({v.name} & value) {{\n') + out.append(' if (is_first) { is_first = false; } else { out += " | "; }\n') + out.append(f' out += "{str(v.name)[3:]}";\n') + out.append(' }\n') + out.append(' return out;\n') + out.append('}\n') + out.append(self.AddGuardFooter(bitmask)) + return out -def PrintBitMask(bitmask, name, generator): - out = PrintGetFlagStrings(bitmask.name, bitmask) - out += AddGuardHeader(GetExtension(bitmask.name, generator)) - out += PrintFlags(bitmask, name) - out += PrintFlagBits(bitmask) - out += AddGuardFooter(GetExtension(bitmask.name, generator)) - out += '\n' - return out - - -def PrintBitMaskToString(bitmask, name, generator): - out = AddGuardHeader(GetExtension(bitmask.name, generator)) - out += f'std::string {name}String({name} value) {{\n' - out += ' std::string out;\n' - out += ' bool is_first = true;\n' - for v in bitmask.options: - out += f' if ({v.name} & value) {{\n' - out += ' if (is_first) { is_first = false; } else { out += " | "; }\n' - out += f' out += "{str(v.name)[3:]}";\n' - out += ' }\n' - out += ' return out;\n' - out += '}\n' - out += AddGuardFooter(GetExtension(bitmask.name, generator)) - return out - - -def PrintStructure(struct): - if len(struct.members) == 0: - return '' - out = '' - out += AddGuardHeader(struct) - max_key_len = 0 - for v in struct.members: - if v.arrayLength is not None: - if len(v.name) + len(v.arrayLength) + 2 > max_key_len: - max_key_len = len(v.name) + len(v.arrayLength) + 2 - elif v.typeID in PREDEFINED_TYPES or v.typeID in STRUCT_BLACKLIST: - if len(v.name) > max_key_len: - max_key_len = len(v.name) - - out += f'void Dump{struct.name}(Printer &p, std::string name, const {struct.name} &obj) {{\n' - if struct.name == 'VkPhysicalDeviceLimits': - out += ' if (p.Type() == OutputType::json)\n' - out += ' p.ObjectStart("limits");\n' - out += ' else\n' - out += ' p.SetSubHeader().ObjectStart(name);\n' - elif struct.name == 'VkPhysicalDeviceSparseProperties': - out += ' if (p.Type() == OutputType::json)\n' - out += ' p.ObjectStart("sparseProperties");\n' - out += ' else\n' - out += ' p.SetSubHeader().ObjectStart(name);\n' - else: - out += ' ObjectWrapper object{p, name};\n' - if max_key_len > 0: - out += f' p.SetMinKeyWidth({max_key_len});\n' - for v in struct.members: - # arrays - if v.arrayLength is not None: - # strings - if v.typeID == 'char': - out += f' p.PrintKeyString("{v.name}", obj.{v.name});\n' - # uuid's - elif v.typeID == 'uint8_t' and (v.arrayLength == '8' or v.arrayLength == '16'): # VK_UUID_SIZE - if v.arrayLength == '8': - out += ' if (obj.deviceLUIDValid) { // special case\n' - out += f' p.PrintKeyValue("{v.name}", obj.{v.name});\n' - if v.arrayLength == '8': - out += ' }\n' - elif struct.name == 'VkQueueFamilyGlobalPriorityProperties' and v.name == 'priorities': - out += f' ArrayWrapper arr(p,"{v.name}", obj.priorityCount);\n' - out += ' for (uint32_t i = 0; i < obj.priorityCount; i++) {\n' - out += ' if (p.Type() == OutputType::json)\n' - out += ' p.PrintString(std::string("VK_") + VkQueueGlobalPriorityString(obj.priorities[i]));\n' - out += ' else\n' - out += ' p.PrintString(VkQueueGlobalPriorityString(obj.priorities[i]));\n' - out += ' }\n' - elif v.arrayLength.isdigit(): - out += f' {{\n ArrayWrapper arr(p,"{v.name}", ' + v.arrayLength + ');\n' - out += f' for (uint32_t i = 0; i < {v.arrayLength}; i++) {{ p.PrintElement(obj.{v.name}[i]); }}\n' - out += ' }\n' - else: # dynamic array length based on other member - out += f' if (obj.{v.arrayLength} == 0 || obj.{v.name} == nullptr) {{\n' - out += f' p.PrintKeyString("{v.name}", "NULL");\n' - out += ' } else {\n' - out += f' ArrayWrapper arr(p,"{v.name}", obj.{v.arrayLength});\n' - out += f' for (uint32_t i = 0; i < obj.{v.arrayLength}; i++) {{\n' - out += f' Dump{v.typeID}(p, std::to_string(i), obj.{v.name}[i]);\n' - out += ' }\n' - out += ' }\n' - elif v.typeID == 'VkBool32': - out += f' p.PrintKeyBool("{v.name}", static_cast(obj.{v.name}));\n' - elif v.typeID == 'uint8_t': - out += f' p.PrintKeyValue("{v.name}", static_cast(obj.{v.name}));\n' - elif v.typeID == 'VkDeviceSize' or (v.typeID == 'uint32_t' and v.name in ['vendorID', 'deviceID']): - out += f' p.PrintKeyValue("{v.name}", to_hex_str(p, obj.{v.name}));\n' - elif v.typeID in PREDEFINED_TYPES: - out += f' p.PrintKeyValue("{v.name}", obj.{v.name});\n' - elif v.name not in NAMES_TO_IGNORE: - # if it is an enum/flag/bitmask - if v.typeID in ['VkFormatFeatureFlags', 'VkFormatFeatureFlags2']: - out += ' p.SetOpenDetails();\n' # special case so that feature flags are open in html output - out += f' Dump{v.typeID}(p, "{v.name}", obj.{v.name});\n' - - if struct.name in ['VkPhysicalDeviceLimits', 'VkPhysicalDeviceSparseProperties']: - out += ' p.ObjectEnd();\n' - out += '}\n' - - out += AddGuardFooter(struct) - return out - - -def PrintStructShort(struct): - out = '' - out += AddGuardHeader(struct) - out += f'std::ostream &operator<<(std::ostream &o, {struct.name} &obj) {{\n' - out += ' return o << "(" << ' - - first = True - for v in struct.members: - if first: - first = False - out += f'obj.{v.name} << ' + def PrintStructure(self,struct): + if len(struct.members) == 0: + return [] + out = [] + out.append(self.AddGuardHeader(struct)) + max_key_len = 0 + for v in struct.members: + if (v.type in PREDEFINED_TYPES or v.type in STRUCT_BLACKLIST) and (v.length is None or v.type in ['char'] or v.fixedSizeArray[0] in ['VK_UUID_SIZE', 'VK_LUID_SIZE']): + max_key_len = max(max_key_len, len(v.name)) + + out.append(f'void Dump{struct.name}(Printer &p, std::string name, const {struct.name} &obj) {{\n') + if struct.name == 'VkPhysicalDeviceLimits': + out.append(' if (p.Type() == OutputType::json)\n') + out.append(' p.ObjectStart("limits");\n') + out.append(' else\n') + out.append(' p.SetSubHeader().ObjectStart(name);\n') + elif struct.name == 'VkPhysicalDeviceSparseProperties': + out.append(' if (p.Type() == OutputType::json)\n') + out.append(' p.ObjectStart("sparseProperties");\n') + out.append(' else\n') + out.append(' p.SetSubHeader().ObjectStart(name);\n') else: - out += f'\',\' << obj.{v.name} << ' - out += '")";\n' - out += '}\n' - out += AddGuardFooter(struct) - return out - -def PrintChainStruct(listName, structures, all_structures, chain_details, extTypes, aliases, vulkan_versions): - sorted_structures = sorted( - all_structures, key=operator.attrgetter('name')) - - version_desc = '' - if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: - version_desc = 'gpu.api_version' - else: - version_desc = 'inst.instance_version' - - out = '' - structs_to_print = [] - for s in sorted_structures: - if s.name in structures: - structs_to_print.append(s) - # use default constructor and delete copy & move operators - out += f'''struct {listName}_chain {{ + out.append(' ObjectWrapper object{p, name};\n') + if max_key_len > 0: + out.append(f' p.SetMinKeyWidth({max_key_len});\n') + for v in struct.members: + # arrays + if v.length is not None: + # strings + if v.type == 'char': + out.append(f' p.PrintKeyString("{v.name}", obj.{v.name});\n') + # uuid's + elif v.type == 'uint8_t' and (v.fixedSizeArray[0] == 'VK_LUID_SIZE' or v.fixedSizeArray[0] == 'VK_UUID_SIZE'): # VK_UUID_SIZE + if v.fixedSizeArray[0] == 'VK_LUID_SIZE': + out.append(' if (obj.deviceLUIDValid) { // special case\n') + out.append(f' p.PrintKeyValue("{v.name}", obj.{v.name});\n') + if v.fixedSizeArray[0] == 'VK_LUID_SIZE': + out.append(' }\n') + elif struct.name == 'VkQueueFamilyGlobalPriorityProperties' and v.name == 'priorities': + out.append(f' ArrayWrapper arr(p,"{v.name}", obj.priorityCount);\n') + out.append(' for (uint32_t i = 0; i < obj.priorityCount; i++) {\n') + out.append(' if (p.Type() == OutputType::json)\n') + out.append(' p.PrintString(std::string("VK_") + VkQueueGlobalPriorityString(obj.priorities[i]));\n') + out.append(' else\n') + out.append(' p.PrintString(VkQueueGlobalPriorityString(obj.priorities[i]));\n') + out.append(' }\n') + elif len(v.fixedSizeArray) == 2: + out.append(f' {{\n ArrayWrapper arr(p,"{v.name}", ' + v.fixedSizeArray[0] + ');\n') + out.append(f' for (uint32_t i = 0; i < {v.fixedSizeArray[0]}; i++) {{\n') + out.append(f' for (uint32_t j = 0; j < {v.fixedSizeArray[1]}; j++) {{\n') + out.append(f' p.PrintElement(obj.{v.name}[i][j]); }} }}\n') + out.append(' }\n') + elif len(v.fixedSizeArray) == 1: + out.append(f' {{\n ArrayWrapper arr(p,"{v.name}", ' + v.fixedSizeArray[0] + ');\n') + out.append(f' for (uint32_t i = 0; i < {v.fixedSizeArray[0]}; i++) {{ p.PrintElement(obj.{v.name}[i]); }}\n') + out.append(' }\n') + else: # dynamic array length based on other member + out.append(f' if (obj.{v.length} == 0 || obj.{v.name} == nullptr) {{\n') + out.append(f' p.PrintKeyString("{v.name}", "NULL");\n') + out.append(' } else {\n') + out.append(f' ArrayWrapper arr(p,"{v.name}", obj.{v.length});\n') + out.append(f' for (uint32_t i = 0; i < obj.{v.length}; i++) {{\n') + out.append(f' Dump{v.type}(p, std::to_string(i), obj.{v.name}[i]);\n') + out.append(' }\n') + out.append(' }\n') + elif v.type == 'VkBool32': + out.append(f' p.PrintKeyBool("{v.name}", static_cast(obj.{v.name}));\n') + elif v.type == 'uint8_t': + out.append(f' p.PrintKeyValue("{v.name}", static_cast(obj.{v.name}));\n') + elif v.type == 'VkDeviceSize' or (v.type == 'uint32_t' and v.name in ['vendorID', 'deviceID']): + out.append(f' p.PrintKeyValue("{v.name}", to_hex_str(p, obj.{v.name}));\n') + elif v.type in PREDEFINED_TYPES: + out.append(f' p.PrintKeyValue("{v.name}", obj.{v.name});\n') + elif v.name not in NAMES_TO_IGNORE: + # if it is an enum/flag/bitmask + if v.type in ['VkFormatFeatureFlags', 'VkFormatFeatureFlags2']: + out.append(' p.SetOpenDetails();\n') # special case so that feature flags are open in html output + out.append(f' Dump{v.type}(p, "{v.name}", obj.{v.name});\n') + + if struct.name in ['VkPhysicalDeviceLimits', 'VkPhysicalDeviceSparseProperties']: + out.append(' p.ObjectEnd();\n') + out.append('}\n') + + out.append(self.AddGuardFooter(struct)) + return out + + + def PrintStructShort(self,struct): + out = [] + out.append(self.AddGuardHeader(struct)) + out.append(f'std::ostream &operator<<(std::ostream &o, {struct.name} &obj) {{\n') + out.append(' return o << "(" << ') + + first = True + for v in struct.members: + if first: + first = False + out.append(f'obj.{v.name} << ') + else: + out.append(f'\',\' << obj.{v.name} << ') + out.append('")";\n') + out.append('}\n') + out.append(self.AddGuardFooter(struct)) + return out + + def PrintChainStruct(self, listName, structs_to_print, chain_details): + version_desc = '' + if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: + version_desc = 'gpu.api_version' + else: + version_desc = 'inst.instance_version' + + out = [] + + # use default constructor and delete copy & move operators + out.append(f'''struct {listName}_chain {{ {listName}_chain() = default; {listName}_chain(const {listName}_chain &) = delete; {listName}_chain& operator=(const {listName}_chain &) = delete; {listName}_chain({listName}_chain &&) = delete; {listName}_chain& operator=({listName}_chain &&) = delete; -''' +''') + + out.append(' void* start_of_chain = nullptr;\n') + for s in structs_to_print: + if s in STRUCT_BLACKLIST: + continue + struct = self.vk.structs[s] + out.append(self.AddGuardHeader(struct)) + if struct.sType is not None: + out.append(f' {struct.name} {struct.name[2:]}{{}};\n') + # Specific versions of drivers have an incorrect definition of the size of these structs. + # We need to artificially pad the structure it just so the driver doesn't write out of bounds and + # into other structures that are adjacent. This bug comes from the in-development version of + # the extension having a larger size than the final version, so older drivers try to write to + # members which don't exist. + if struct.name in ['VkPhysicalDeviceShaderIntegerDotProductFeatures', 'VkPhysicalDeviceHostImageCopyFeaturesEXT']: + out.append(f' char {struct.name}_padding[64];\n') + for member in struct.members: + if member.length is not None and len(member.fixedSizeArray) == 0: + out.append(f' std::vector<{member.type}> {struct.name}_{member.name};\n') + out.append(self.AddGuardFooter(struct)) + out.append(' void initialize_chain(') + if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: + out.append('AppInstance &inst, ') + if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: + out.append('AppGpu &gpu ') + if chain_details.get('can_show_promoted_structs'): + out.append(', bool show_promoted_structs') + out.append(') noexcept {\n') + for s in structs_to_print: + if s in STRUCT_BLACKLIST: + continue + struct = self.vk.structs[s] - out += ' void* start_of_chain = nullptr;\n' - for s in structs_to_print: - if s.name in STRUCT_BLACKLIST: - continue - out += AddGuardHeader(s) - if s.sTypeName is not None: - out += f' {s.name} {s.name[2:]}{{}};\n' - # Specific versions of drivers have an incorrect definition of the size of these structs. - # We need to artificially pad the structure it just so the driver doesn't write out of bounds and - # into other structures that are adjacent. This bug comes from the in-development version of - # the extension having a larger size than the final version, so older drivers try to write to - # members which don't exist. - if s.name in ['VkPhysicalDeviceShaderIntegerDotProductFeatures', 'VkPhysicalDeviceHostImageCopyFeaturesEXT']: - out += f' char {s.name}_padding[64];\n' - if s.hasLengthmember: - for member in s.members: - if member.lengthMember: - out += f' std::vector<{member.typeID}> {s.name}_{member.name};\n' - out += AddGuardFooter(s) - out += ' void initialize_chain(' - if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: - out += 'AppInstance &inst, ' - if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: - out += 'AppGpu &gpu ' - if chain_details.get('can_show_promoted_structs'): - out += ', bool show_promoted_structs' - out += ') noexcept {\n' - for s in structs_to_print: - if s.name in STRUCT_BLACKLIST: - continue - out += AddGuardHeader(s) - out += f' {s.name[2:]}.sType = {s.sTypeName};\n' - out += AddGuardFooter(s) - - - out += ' std::vector chain_members{};\n' - for s in structs_to_print: - if s.name in STRUCT_BLACKLIST: - continue - out += AddGuardHeader(s) - extEnables = {} - for k, elem in extTypes.items(): - if k == s.name or (s.name in aliases.keys() and k in aliases[s.name]): - for e in elem: - extEnables[e.extNameStr] = e.type + out.append(self.AddGuardHeader(struct)) + out.append(f' {struct.name[2:]}.sType = {struct.sType};\n') + out.append(self.AddGuardFooter(struct)) - version = None - oldVersionName = None - for v in vulkan_versions: - if s.name in v.names: - version = v - if s.name in aliases.keys(): - for alias in aliases[s.name]: - oldVersionName = alias - has_version = version is not None - has_extNameStr = len(extEnables) > 0 or s.name in aliases.keys() - if has_version or has_extNameStr: - out += ' if (' - has_printed_condition = False - if has_extNameStr: - for key, value in extEnables.items(): - if has_printed_condition: - out += '\n || ' - else: - has_printed_condition = True - if has_version: - out += '(' - if value == EXTENSION_TYPE_DEVICE: - out += f'gpu.CheckPhysicalDeviceExtensionIncluded({key})' - elif value == EXTENSION_TYPE_INSTANCE: - out += f'inst.CheckExtensionEnabled({key})' + out.append(' std::vector chain_members{};\n') + for s in structs_to_print: + if s in STRUCT_BLACKLIST: + continue + struct = self.vk.structs[s] + out.append(self.AddGuardHeader(struct)) + + has_version = struct.version is not None + has_extNameStr = len(struct.extensions) > 0 or len(struct.aliases) > 0 + if has_version or has_extNameStr: + out.append(' if (') + has_printed_condition = False + if has_extNameStr: + for ext in struct.extensions: + if has_printed_condition: + out.append('\n || ') + else: + has_printed_condition = True + if has_version: + out.append('(') + if self.vk.extensions[ext].device: + out.append(f'gpu.CheckPhysicalDeviceExtensionIncluded({self.vk.extensions[ext].nameString})') + elif self.vk.extensions[ext].instance: + out.append(f'inst.CheckExtensionEnabled({self.vk.extensions[ext].nameString})') + else: + assert False, 'Should never get here' + if has_version: + str_show_promoted_structs = '|| show_promoted_structs' if chain_details.get('can_show_promoted_structs') else '' + if struct.name in STRUCT_1_1_LIST: + out.append(f'{version_desc} == {struct.version.nameApi} {str_show_promoted_structs}') + elif has_printed_condition: + out.append(f')\n && ({version_desc} < {struct.version.nameApi} {str_show_promoted_structs})') else: - assert False, 'Should never get here' - if has_version: - str_show_promoted_structs = '|| show_promoted_structs' if chain_details.get('can_show_promoted_structs') else '' - if s.name in STRUCT_1_1_LIST: - out += f'{version_desc} == {version.constant} {str_show_promoted_structs}' - elif has_printed_condition: - out += f')\n && ({version_desc} < {version.constant} {str_show_promoted_structs})' - else: - out += f'({version_desc} >= {version.constant})' - out += ')\n ' - else: - out += ' ' - out += f'chain_members.push_back(reinterpret_cast(&{s.name[2:]}));\n' - out += AddGuardFooter(s) - chain_param_list = [] - chain_arg_list = [] - if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: - chain_param_list.append('AppInstance &inst') - chain_arg_list.append('inst') - if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: - chain_param_list.append('AppGpu &gpu') - chain_arg_list.append('gpu') - if chain_details.get('can_show_promoted_structs'): - chain_param_list.append('bool show_promoted_structs') - chain_arg_list.append('show_promoted_structs') - - out += f''' + out.append(f'({version_desc} >= {struct.version.nameApi})') + out.append(')\n ') + else: + out.append(' ') + out.append(f'chain_members.push_back(reinterpret_cast(&{struct.name[2:]}));\n') + out.append(self.AddGuardFooter(struct)) + chain_param_list = [] + chain_arg_list = [] + if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: + chain_param_list.append('AppInstance &inst') + chain_arg_list.append('inst') + if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: + chain_param_list.append('AppGpu &gpu') + chain_arg_list.append('gpu') + if chain_details.get('can_show_promoted_structs'): + chain_param_list.append('bool show_promoted_structs') + chain_arg_list.append('show_promoted_structs') + + out.append(f''' if (!chain_members.empty()) {{ for(size_t i = 0; i < chain_members.size() - 1; i++){{ chain_members[i]->pNext = chain_members[i + 1]; @@ -1328,402 +1001,104 @@ def PrintChainStruct(listName, structures, all_structures, chain_details, extTyp }} }} }}; -void setup_{listName}_chain({chain_details['holder_type']}& start, std::unique_ptr<{listName}_chain>& chain, {','.join(chain_param_list)}){{ +void setup_{listName}_chain({chain_details['extends']}& start, std::unique_ptr<{listName}_chain>& chain, {','.join(chain_param_list)}){{ chain = std::unique_ptr<{listName}_chain>(new {listName}_chain()); chain->initialize_chain({','.join(chain_arg_list)}); start.pNext = chain->start_of_chain; }}; -''' - if chain_details.get('print_iterator'): - out += '\n' - out += f'void chain_iterator_{listName}(Printer &p, ' - if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: - out += 'AppInstance &inst, ' - if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: - out += 'AppGpu &gpu, ' - if chain_details.get('can_show_promoted_structs'): - out += 'bool show_promoted_structs, ' - out += 'const void * place) {\n' - out += ' while (place) {\n' - out += ' const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;\n' - out += ' p.SetSubHeader();\n' - - for s in sorted_structures: - if s.sTypeName is None or s.name in STRUCT_BLACKLIST: - continue - - extEnables = {} - for k, elem in extTypes.items(): - if k == s.name or (s.name in aliases.keys() and k in aliases[s.name]): - for e in elem: - extEnables[e.extNameStr] = e.type - - version = None - oldVersionName = None - for v in vulkan_versions: - if s.name in v.names: - version = v - if s.name in aliases.keys(): - for alias in aliases[s.name]: - oldVersionName = alias - - if s.name in structures: - out += AddGuardHeader(s) - out += f' if (structure->sType == {s.sTypeName}' - if s.name in PORTABILITY_STRUCTS: - out += ' && p.Type() != OutputType::json' - has_version = version is not None - has_extNameStr = len(extEnables) > 0 or s.name in aliases.keys() - out += ') {\n' - out += f' const {s.name}* props = (const {s.name}*)structure;\n' - out += f' Dump{s.name}(p, ' - if s.name in aliases.keys() and version is not None: - out += f'{version_desc} >= {version.constant} ?"{s.name}":"{oldVersionName}"' +''') + if chain_details.get('print_iterator'): + out.append('\n') + out.append(f'void chain_iterator_{listName}(Printer &p, ') + if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: + out.append('AppInstance &inst, ') + if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: + out.append('AppGpu &gpu, ') + if chain_details.get('can_show_promoted_structs'): + out.append('bool show_promoted_structs, ') + out.append('const void * place) {\n') + out.append(' while (place) {\n') + out.append(' const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;\n') + out.append(' p.SetSubHeader();\n') + + for s in structs_to_print: + if s in STRUCT_BLACKLIST: + continue + struct = self.vk.structs[s] + + out.append(self.AddGuardHeader(struct)) + out.append(f' if (structure->sType == {struct.sType}') + if struct.name in PORTABILITY_STRUCTS: + out.append(' && p.Type() != OutputType::json') + has_version = struct.version is not None + has_extNameStr = len(struct.extensions) > 0 or len(struct.aliases) > 0 + out.append(') {\n') + out.append(f' const {struct.name}* props = (const {struct.name}*)structure;\n') + out.append(f' Dump{struct.name}(p, ') + if len(struct.aliases) > 0 and struct.version is not None: + out.append(f'{version_desc} >= {struct.version.nameApi} ?"{struct.name}":"{struct.aliases[0]}"') else: - out += f'"{s.name}"' - out += ', *props);\n' - out += ' p.AddNewline();\n' - out += ' }\n' - out += AddGuardFooter(s) - out += ' place = structure->pNext;\n' - out += ' }\n' - out += '}\n' - - out += '\n' - out += f'bool prepare_{listName}_twocall_chain_vectors(std::unique_ptr<{listName}_chain>& chain) {{\n' - out += ' (void)chain;\n' - is_twocall = False - for s in structs_to_print: - if not s.hasLengthmember: - continue - if s.name in STRUCT_BLACKLIST: - continue - out += AddGuardHeader(s) - for member in s.members: - if member.lengthMember: - out += f' chain->{s.name}_{member.name}.resize(chain->{s.name[2:]}.{member.arrayLength});\n' - out += f' chain->{s.name[2:]}.{member.name} = chain->{s.name}_{member.name}.data();\n' - out += AddGuardFooter(s) - is_twocall = True - out += f' return {"true" if is_twocall else "false"};\n' - out += '}\n' - - return out - - -def PrintStructComparisonForwardDecl(structure): - out = '' - out += f'bool operator==(const {structure.name} & a, const {structure.name} b);\n' - return out - - -def PrintStructComparison(structure): - out = '' - out += f'bool operator==(const {structure.name} & a, const {structure.name} b) {{\n' - out += ' return ' - is_first = True - for m in structure.members: - if m.name not in NAMES_TO_IGNORE: - if not is_first: - out += '\n && ' - else: - is_first = False - out += f'a.{m.name} == b.{m.name}' - out += ';\n' - out += '}\n' - return out - - -class VulkanEnum: - class Option: - - def __init__(self, name, value, bitpos, comment): - self.name = name - self.comment = comment - - if bitpos is not None: - value = 1 << int(bitpos) - elif isinstance(value, str): - if value.lower().startswith('0x'): - value = int(value, 16) - else: - value = int(value) - - self.value = value - - def values(self): - return { - 'optName': self.name, - 'optValue': self.value, - 'optComment': self.comment, - } - - def __init__(self, rootNode): - self.name = rootNode.get('name') - self.type = rootNode.get('type') - self.options = [] - - for child in rootNode: - childName = child.get('name') - childValue = child.get('value') - childBitpos = child.get('bitpos') - childComment = child.get('comment') - childExtends = child.get('extends') - childOffset = child.get('offset') - childExtNum = child.get('extnumber') - support = child.get('supported') - if support == 'disabled': - continue - - if childName is None: + out.append(f'"{struct.name}"') + out.append(', *props);\n') + out.append(' p.AddNewline();\n') + out.append(' }\n') + out.append(self.AddGuardFooter(struct)) + out.append(' place = structure->pNext;\n') + out.append(' }\n') + out.append('}\n') + + out.append('\n') + out.append(f'bool prepare_{listName}_twocall_chain_vectors(std::unique_ptr<{listName}_chain>& chain) {{\n') + out.append(' (void)chain;\n') + is_twocall = False + for s in structs_to_print: + if s in STRUCT_BLACKLIST: continue - if childValue is None and childBitpos is None and childOffset is None: + struct = self.vk.structs[s] + has_length = False + for member in struct.members: + if member.length is not None and len(member.fixedSizeArray) == 0: + has_length = True + if not has_length: continue + out.append(self.AddGuardHeader(struct)) + for member in struct.members: + if member.length is not None and len(member.fixedSizeArray) == 0: + out.append(f' chain->{struct.name}_{member.name}.resize(chain->{struct.name[2:]}.{member.length});\n') + out.append(f' chain->{struct.name[2:]}.{member.name} = chain->{struct.name}_{member.name}.data();\n') + out.append(self.AddGuardFooter(struct)) + is_twocall = True + out.append(f' return {"true" if is_twocall else "false"};\n') + out.append('}\n') - if childExtends is not None and childExtNum is not None and childOffset is not None: - childValue = CalcEnumValue(int(childExtNum), int(childOffset)) - if 'dir' in child.keys(): - childValue = -childValue - duplicate = False - for o in self.options: - if o.values()['optName'] == childName: - duplicate = True - if duplicate: - continue - - self.options.append(VulkanEnum.Option( - childName, childValue, childBitpos, childComment)) - - -class VulkanBitmask: - - def __init__(self, rootNode): - self.name = rootNode.get('name') - self.type = rootNode.get('type') + return out - # Read each value that the enum contains - self.options = [] - for child in rootNode: - childName = child.get('name') - childValue = child.get('value') - childBitpos = child.get('bitpos') - childComment = child.get('comment') - support = child.get('supported') - if childName is None or (childValue is None and childBitpos is None): - continue - if support == 'disabled': - continue - duplicate = False - for option in self.options: - if option.name == childName: - duplicate = True - if duplicate: - continue + def PrintStructComparisonForwardDecl(self,structure): + out = [] + out.append(f'bool operator==(const {structure.name} & a, const {structure.name} b);\n') + return out - self.options.append(VulkanEnum.Option( - childName, childValue, childBitpos, childComment)) - - -class VulkanFlags: - - def __init__(self, rootNode): - self.name = rootNode.get('name') - self.type = rootNode.get('type') - self.enum = rootNode.get('requires') - # 64 bit flags use bitvalues, not requires - if self.enum is None: - self.enum = rootNode.get('bitvalues') - - -class VulkanVariable: - def __init__(self, rootNode, constants): - self.name = rootNode.find('name').text - # Typename, dereferenced and converted to a useable C++ token - self.typeID = rootNode.find('type').text - self.baseType = self.typeID - self.childType = None - self.arrayLength = None - self.text = '' - for node in rootNode.itertext(): - comment = rootNode.find('comment') - if comment is not None and comment.text == node: - continue - self.text += node - - typeMatch = re.search('.+?(?=' + self.name + ')', self.text) - self.type = typeMatch.string[typeMatch.start():typeMatch.end()] - self.type = ' '.join(self.type.split()) - bracketMatch = re.search('(?<=\\[)[a-zA-Z0-9_]+(?=\\])', self.text) - if bracketMatch is not None: - matchText = bracketMatch.string[bracketMatch.start( - ):bracketMatch.end()] - self.childType = self.type - self.type += '[' + matchText + ']' - if matchText in constants: - self.arrayLength = constants[matchText] - else: - self.arrayLength = matchText - - self.lengthMember = False - lengthString = rootNode.get('len') - lengths = [] - if lengthString is not None: - lengths = re.split(',', lengthString) - lengths = list(filter(('null-terminated').__ne__, lengths)) - if self.arrayLength is None and len(lengths) > 0: - self.childType = '*'.join(self.type.split('*')[0:-1]) - self.arrayLength = lengths[0] - self.lengthMember = True - if self.arrayLength is not None and self.arrayLength.startswith('latexmath'): - code = self.arrayLength[10:len(self.arrayLength)] - code = re.sub('\\[', '', code) - code = re.sub('\\]', '', code) - code = re.sub('\\\\(lceil|rceil)', '', code) - code = re.sub('{|}', '', code) - code = re.sub('\\\\mathit', '', code) - code = re.sub('\\\\over', '/', code) - code = re.sub('\\\\textrm', '', code) - self.arrayLength = code - - # Dereference if necessary and handle members of variables - if self.arrayLength is not None: - self.arrayLength = re.sub('::', '->', self.arrayLength) - sections = self.arrayLength.split('->') - if sections[-1][0] == 'p' and sections[0][1].isupper(): - self.arrayLength = '*' + self.arrayLength - - -class VulkanStructure: - def __init__(self, name, rootNode, constants, extTypes): - self.name = name - self.members = [] - self.guard = None - self.sTypeName = None - self.extendsStruct = rootNode.get('structextends') - self.hasLengthmember = False - - for node in rootNode.findall('member'): - if node.get('values') is not None: - self.sTypeName = node.get('values') - self.members.append(VulkanVariable(node, constants)) - - for member in self.members: - if member.lengthMember: - self.hasLengthmember = True - break - for k, elem in extTypes.items(): - if k == self.name: - for e in elem: - if e.guard is not None: - self.guard = e.guard - - -class VulkanExtension: - def __init__(self, rootNode): - self.name = rootNode.get('name') - self.number = int(rootNode.get('number')) - self.type = rootNode.get('type') - self.dependency = rootNode.get('requires') - self.guard = GetFeatureProtect(rootNode) - self.supported = rootNode.get('supported') - self.extNameStr = None - self.vktypes = [] - self.vkfuncs = [] - self.constants = OrderedDict() - self.enumValues = OrderedDict() - self.node = rootNode - - for req in rootNode.findall('require'): - for ty in req.findall('type'): - self.vktypes.append(ty.get('name')) - - for func in req.findall('command'): - self.vkfuncs.append(func.get('name')) - - for enum in req.findall('enum'): - base = enum.get('extends') - name = enum.get('name') - value = enum.get('value') - bitpos = enum.get('bitpos') - offset = enum.get('offset') - # gets the VK_XXX_EXTENSION_NAME string - if value == f'"{self.name}"': - self.extNameStr = name - - if value is None and bitpos is not None: - value = 1 << int(bitpos) - - if offset is not None: - offset = int(offset) - if base is not None and offset is not None: - enumValue = 1000000000 + 1000*(self.number - 1) + offset - if enum.get('dir') == '-': - enumValue = -enumValue - self.enumValues[base] = (name, enumValue) + def PrintStructComparison(self,structure): + out = [] + out.append(f'bool operator==(const {structure.name} & a, const {structure.name} b) {{\n') + out.append(' return ') + is_first = True + for m in structure.members: + if m.name not in NAMES_TO_IGNORE: + if not is_first: + out.append('\n && ') else: - self.constants[name] = value - - -class VulkanVersion: - def __init__(self, rootNode): - self.name = rootNode.get('name') - self.constant = self.name.replace('_VERSION_', '_API_VERSION_') - self.names = set() - - match = re.search(r"^[A-Z]+_VERSION_([1-9][0-9]*)_([0-9]+)$", self.name) - self.major = int(match.group(1)) - self.minor = int(match.group(2)) - - for req in rootNode.findall('require'): - for ty in req.findall('type'): - self.names.add(ty.get('name')) - for func in req.findall('command'): - self.names.add(func.get('name')) - for enum in req.findall('enum'): - self.names.add(enum.get('name')) - self.names = sorted(self.names) + is_first = False + out.append(f'a.{m.name} == b.{m.name}') + out.append(';\n') + out.append('}\n') + return out class VulkanFormatRange: - def __init__(self, min_inst_version, ext_name, first, last): + def __init__(self, min_inst_version, extensions, first, last): self.minimum_instance_version = min_inst_version - self.extension_name = ext_name + self.extensions = extensions self.first_format = first self.last_format = last - -class VulkanVideoRequiredCapabilities(): - def __init__(self, struct, member, value): - self.struct = struct - self.member = member - self.value = value - -class VulkanVideoFormat(): - def __init__(self, name, usage): - self.name = name - self.usage = usage - self.properties = OrderedDict() - self.requiredCaps = list() - super().__init__() - -class VulkanVideoProfileStructMember(): - def __init__(self, name): - self.name = name - self.values = OrderedDict() - -class VulkanVideoProfileStruct(): - def __init__(self, struct): - self.struct = struct - self.members = OrderedDict() - -class VulkanVideoCodec(): - def __init__(self, name, extend = None, value = None): - self.name = name - self.value = value - self.profileStructs = OrderedDict() - self.capabilities = OrderedDict() - self.formats = OrderedDict() - if extend is not None: - self.profileStructs = copy.deepcopy(extend.profileStructs) - self.capabilities = copy.deepcopy(extend.capabilities) - self.formats = copy.deepcopy(extend.formats) diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp index ce66ef13c..721d658f8 100644 --- a/vulkaninfo/generated/vulkaninfo.hpp +++ b/vulkaninfo/generated/vulkaninfo.hpp @@ -356,97 +356,6 @@ std::string StdVideoH265AspectRatioIdcString(StdVideoH265AspectRatioIdc value) { void DumpStdVideoH265AspectRatioIdc(Printer &p, std::string name, StdVideoH265AspectRatioIdc value) { p.PrintKeyString(name, StdVideoH265AspectRatioIdcString(value)); } -std::string StdVideoVP9ProfileString(StdVideoVP9Profile value) { - switch (value) { - case STD_VIDEO_VP9_PROFILE_0: return "STD_VIDEO_VP9_PROFILE_0"; - case STD_VIDEO_VP9_PROFILE_1: return "STD_VIDEO_VP9_PROFILE_1"; - case STD_VIDEO_VP9_PROFILE_2: return "STD_VIDEO_VP9_PROFILE_2"; - case STD_VIDEO_VP9_PROFILE_3: return "STD_VIDEO_VP9_PROFILE_3"; - case STD_VIDEO_VP9_PROFILE_INVALID: return "STD_VIDEO_VP9_PROFILE_INVALID"; - default: return std::string("UNKNOWN_StdVideoVP9Profile_value") + std::to_string(value); - } -} -void DumpStdVideoVP9Profile(Printer &p, std::string name, StdVideoVP9Profile value) { - p.PrintKeyString(name, StdVideoVP9ProfileString(value)); -} -std::string StdVideoVP9LevelString(StdVideoVP9Level value) { - switch (value) { - case STD_VIDEO_VP9_LEVEL_1_0: return "STD_VIDEO_VP9_LEVEL_1_0"; - case STD_VIDEO_VP9_LEVEL_1_1: return "STD_VIDEO_VP9_LEVEL_1_1"; - case STD_VIDEO_VP9_LEVEL_2_0: return "STD_VIDEO_VP9_LEVEL_2_0"; - case STD_VIDEO_VP9_LEVEL_2_1: return "STD_VIDEO_VP9_LEVEL_2_1"; - case STD_VIDEO_VP9_LEVEL_3_0: return "STD_VIDEO_VP9_LEVEL_3_0"; - case STD_VIDEO_VP9_LEVEL_3_1: return "STD_VIDEO_VP9_LEVEL_3_1"; - case STD_VIDEO_VP9_LEVEL_4_0: return "STD_VIDEO_VP9_LEVEL_4_0"; - case STD_VIDEO_VP9_LEVEL_4_1: return "STD_VIDEO_VP9_LEVEL_4_1"; - case STD_VIDEO_VP9_LEVEL_5_0: return "STD_VIDEO_VP9_LEVEL_5_0"; - case STD_VIDEO_VP9_LEVEL_5_1: return "STD_VIDEO_VP9_LEVEL_5_1"; - case STD_VIDEO_VP9_LEVEL_5_2: return "STD_VIDEO_VP9_LEVEL_5_2"; - case STD_VIDEO_VP9_LEVEL_6_0: return "STD_VIDEO_VP9_LEVEL_6_0"; - case STD_VIDEO_VP9_LEVEL_6_1: return "STD_VIDEO_VP9_LEVEL_6_1"; - case STD_VIDEO_VP9_LEVEL_6_2: return "STD_VIDEO_VP9_LEVEL_6_2"; - case STD_VIDEO_VP9_LEVEL_INVALID: return "STD_VIDEO_VP9_LEVEL_INVALID"; - default: return std::string("UNKNOWN_StdVideoVP9Level_value") + std::to_string(value); - } -} -void DumpStdVideoVP9Level(Printer &p, std::string name, StdVideoVP9Level value) { - p.PrintKeyString(name, StdVideoVP9LevelString(value)); -} -std::string StdVideoVP9FrameTypeString(StdVideoVP9FrameType value) { - switch (value) { - case STD_VIDEO_VP9_FRAME_TYPE_KEY: return "STD_VIDEO_VP9_FRAME_TYPE_KEY"; - case STD_VIDEO_VP9_FRAME_TYPE_NON_KEY: return "STD_VIDEO_VP9_FRAME_TYPE_NON_KEY"; - case STD_VIDEO_VP9_FRAME_TYPE_INVALID: return "STD_VIDEO_VP9_FRAME_TYPE_INVALID"; - default: return std::string("UNKNOWN_StdVideoVP9FrameType_value") + std::to_string(value); - } -} -void DumpStdVideoVP9FrameType(Printer &p, std::string name, StdVideoVP9FrameType value) { - p.PrintKeyString(name, StdVideoVP9FrameTypeString(value)); -} -std::string StdVideoVP9ReferenceNameString(StdVideoVP9ReferenceName value) { - switch (value) { - case STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME"; - case STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME"; - case STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME"; - case STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME"; - case STD_VIDEO_VP9_REFERENCE_NAME_INVALID: return "STD_VIDEO_VP9_REFERENCE_NAME_INVALID"; - default: return std::string("UNKNOWN_StdVideoVP9ReferenceName_value") + std::to_string(value); - } -} -void DumpStdVideoVP9ReferenceName(Printer &p, std::string name, StdVideoVP9ReferenceName value) { - p.PrintKeyString(name, StdVideoVP9ReferenceNameString(value)); -} -std::string StdVideoVP9InterpolationFilterString(StdVideoVP9InterpolationFilter value) { - switch (value) { - case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP"; - case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH"; - case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP"; - case STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR"; - case STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE"; - case STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID"; - default: return std::string("UNKNOWN_StdVideoVP9InterpolationFilter_value") + std::to_string(value); - } -} -void DumpStdVideoVP9InterpolationFilter(Printer &p, std::string name, StdVideoVP9InterpolationFilter value) { - p.PrintKeyString(name, StdVideoVP9InterpolationFilterString(value)); -} -std::string StdVideoVP9ColorSpaceString(StdVideoVP9ColorSpace value) { - switch (value) { - case STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN: return "STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN"; - case STD_VIDEO_VP9_COLOR_SPACE_BT_601: return "STD_VIDEO_VP9_COLOR_SPACE_BT_601"; - case STD_VIDEO_VP9_COLOR_SPACE_BT_709: return "STD_VIDEO_VP9_COLOR_SPACE_BT_709"; - case STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170: return "STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170"; - case STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240: return "STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240"; - case STD_VIDEO_VP9_COLOR_SPACE_BT_2020: return "STD_VIDEO_VP9_COLOR_SPACE_BT_2020"; - case STD_VIDEO_VP9_COLOR_SPACE_RESERVED: return "STD_VIDEO_VP9_COLOR_SPACE_RESERVED"; - case STD_VIDEO_VP9_COLOR_SPACE_RGB: return "STD_VIDEO_VP9_COLOR_SPACE_RGB"; - case STD_VIDEO_VP9_COLOR_SPACE_INVALID: return "STD_VIDEO_VP9_COLOR_SPACE_INVALID"; - default: return std::string("UNKNOWN_StdVideoVP9ColorSpace_value") + std::to_string(value); - } -} -void DumpStdVideoVP9ColorSpace(Printer &p, std::string name, StdVideoVP9ColorSpace value) { - p.PrintKeyString(name, StdVideoVP9ColorSpaceString(value)); -} std::string StdVideoAV1ProfileString(StdVideoAV1Profile value) { switch (value) { case STD_VIDEO_AV1_PROFILE_MAIN: return "STD_VIDEO_AV1_PROFILE_MAIN"; @@ -647,6 +556,97 @@ std::string StdVideoAV1ChromaSamplePositionString(StdVideoAV1ChromaSamplePositio void DumpStdVideoAV1ChromaSamplePosition(Printer &p, std::string name, StdVideoAV1ChromaSamplePosition value) { p.PrintKeyString(name, StdVideoAV1ChromaSamplePositionString(value)); } +std::string StdVideoVP9ProfileString(StdVideoVP9Profile value) { + switch (value) { + case STD_VIDEO_VP9_PROFILE_0: return "STD_VIDEO_VP9_PROFILE_0"; + case STD_VIDEO_VP9_PROFILE_1: return "STD_VIDEO_VP9_PROFILE_1"; + case STD_VIDEO_VP9_PROFILE_2: return "STD_VIDEO_VP9_PROFILE_2"; + case STD_VIDEO_VP9_PROFILE_3: return "STD_VIDEO_VP9_PROFILE_3"; + case STD_VIDEO_VP9_PROFILE_INVALID: return "STD_VIDEO_VP9_PROFILE_INVALID"; + default: return std::string("UNKNOWN_StdVideoVP9Profile_value") + std::to_string(value); + } +} +void DumpStdVideoVP9Profile(Printer &p, std::string name, StdVideoVP9Profile value) { + p.PrintKeyString(name, StdVideoVP9ProfileString(value)); +} +std::string StdVideoVP9LevelString(StdVideoVP9Level value) { + switch (value) { + case STD_VIDEO_VP9_LEVEL_1_0: return "STD_VIDEO_VP9_LEVEL_1_0"; + case STD_VIDEO_VP9_LEVEL_1_1: return "STD_VIDEO_VP9_LEVEL_1_1"; + case STD_VIDEO_VP9_LEVEL_2_0: return "STD_VIDEO_VP9_LEVEL_2_0"; + case STD_VIDEO_VP9_LEVEL_2_1: return "STD_VIDEO_VP9_LEVEL_2_1"; + case STD_VIDEO_VP9_LEVEL_3_0: return "STD_VIDEO_VP9_LEVEL_3_0"; + case STD_VIDEO_VP9_LEVEL_3_1: return "STD_VIDEO_VP9_LEVEL_3_1"; + case STD_VIDEO_VP9_LEVEL_4_0: return "STD_VIDEO_VP9_LEVEL_4_0"; + case STD_VIDEO_VP9_LEVEL_4_1: return "STD_VIDEO_VP9_LEVEL_4_1"; + case STD_VIDEO_VP9_LEVEL_5_0: return "STD_VIDEO_VP9_LEVEL_5_0"; + case STD_VIDEO_VP9_LEVEL_5_1: return "STD_VIDEO_VP9_LEVEL_5_1"; + case STD_VIDEO_VP9_LEVEL_5_2: return "STD_VIDEO_VP9_LEVEL_5_2"; + case STD_VIDEO_VP9_LEVEL_6_0: return "STD_VIDEO_VP9_LEVEL_6_0"; + case STD_VIDEO_VP9_LEVEL_6_1: return "STD_VIDEO_VP9_LEVEL_6_1"; + case STD_VIDEO_VP9_LEVEL_6_2: return "STD_VIDEO_VP9_LEVEL_6_2"; + case STD_VIDEO_VP9_LEVEL_INVALID: return "STD_VIDEO_VP9_LEVEL_INVALID"; + default: return std::string("UNKNOWN_StdVideoVP9Level_value") + std::to_string(value); + } +} +void DumpStdVideoVP9Level(Printer &p, std::string name, StdVideoVP9Level value) { + p.PrintKeyString(name, StdVideoVP9LevelString(value)); +} +std::string StdVideoVP9FrameTypeString(StdVideoVP9FrameType value) { + switch (value) { + case STD_VIDEO_VP9_FRAME_TYPE_KEY: return "STD_VIDEO_VP9_FRAME_TYPE_KEY"; + case STD_VIDEO_VP9_FRAME_TYPE_NON_KEY: return "STD_VIDEO_VP9_FRAME_TYPE_NON_KEY"; + case STD_VIDEO_VP9_FRAME_TYPE_INVALID: return "STD_VIDEO_VP9_FRAME_TYPE_INVALID"; + default: return std::string("UNKNOWN_StdVideoVP9FrameType_value") + std::to_string(value); + } +} +void DumpStdVideoVP9FrameType(Printer &p, std::string name, StdVideoVP9FrameType value) { + p.PrintKeyString(name, StdVideoVP9FrameTypeString(value)); +} +std::string StdVideoVP9ReferenceNameString(StdVideoVP9ReferenceName value) { + switch (value) { + case STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME"; + case STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME"; + case STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME"; + case STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME: return "STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME"; + case STD_VIDEO_VP9_REFERENCE_NAME_INVALID: return "STD_VIDEO_VP9_REFERENCE_NAME_INVALID"; + default: return std::string("UNKNOWN_StdVideoVP9ReferenceName_value") + std::to_string(value); + } +} +void DumpStdVideoVP9ReferenceName(Printer &p, std::string name, StdVideoVP9ReferenceName value) { + p.PrintKeyString(name, StdVideoVP9ReferenceNameString(value)); +} +std::string StdVideoVP9InterpolationFilterString(StdVideoVP9InterpolationFilter value) { + switch (value) { + case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP"; + case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH"; + case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP"; + case STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR"; + case STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE"; + case STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID: return "STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID"; + default: return std::string("UNKNOWN_StdVideoVP9InterpolationFilter_value") + std::to_string(value); + } +} +void DumpStdVideoVP9InterpolationFilter(Printer &p, std::string name, StdVideoVP9InterpolationFilter value) { + p.PrintKeyString(name, StdVideoVP9InterpolationFilterString(value)); +} +std::string StdVideoVP9ColorSpaceString(StdVideoVP9ColorSpace value) { + switch (value) { + case STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN: return "STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN"; + case STD_VIDEO_VP9_COLOR_SPACE_BT_601: return "STD_VIDEO_VP9_COLOR_SPACE_BT_601"; + case STD_VIDEO_VP9_COLOR_SPACE_BT_709: return "STD_VIDEO_VP9_COLOR_SPACE_BT_709"; + case STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170: return "STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170"; + case STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240: return "STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240"; + case STD_VIDEO_VP9_COLOR_SPACE_BT_2020: return "STD_VIDEO_VP9_COLOR_SPACE_BT_2020"; + case STD_VIDEO_VP9_COLOR_SPACE_RESERVED: return "STD_VIDEO_VP9_COLOR_SPACE_RESERVED"; + case STD_VIDEO_VP9_COLOR_SPACE_RGB: return "STD_VIDEO_VP9_COLOR_SPACE_RGB"; + case STD_VIDEO_VP9_COLOR_SPACE_INVALID: return "STD_VIDEO_VP9_COLOR_SPACE_INVALID"; + default: return std::string("UNKNOWN_StdVideoVP9ColorSpace_value") + std::to_string(value); + } +} +void DumpStdVideoVP9ColorSpace(Printer &p, std::string name, StdVideoVP9ColorSpace value) { + p.PrintKeyString(name, StdVideoVP9ColorSpaceString(value)); +} std::string VkColorSpaceKHRString(VkColorSpaceKHR value) { switch (value) { case (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR): return "COLOR_SPACE_SRGB_NONLINEAR_KHR"; @@ -3073,7 +3073,7 @@ void DumpVkDrmFormatModifierProperties2EXT(Printer &p, std::string name, const V } void DumpVkExtensionProperties(Printer &p, std::string name, const VkExtensionProperties &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(18); + p.SetMinKeyWidth(13); p.PrintKeyString("extensionName", obj.extensionName); p.PrintKeyValue("specVersion", obj.specVersion); } @@ -3456,7 +3456,7 @@ void DumpVkPhysicalDeviceDiscardRectanglePropertiesEXT(Printer &p, std::string n } void DumpVkPhysicalDeviceDriverProperties(Printer &p, std::string name, const VkPhysicalDeviceDriverProperties &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(15); + p.SetMinKeyWidth(10); DumpVkDriverId(p, "driverID", obj.driverID); p.PrintKeyString("driverName", obj.driverName); p.PrintKeyString("driverInfo", obj.driverInfo); @@ -3739,7 +3739,7 @@ void DumpVkPhysicalDeviceHostImageCopyFeatures(Printer &p, std::string name, con } void DumpVkPhysicalDeviceHostImageCopyProperties(Printer &p, std::string name, const VkPhysicalDeviceHostImageCopyProperties &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(35); + p.SetMinKeyWidth(31); p.PrintKeyValue("copySrcLayoutCount", obj.copySrcLayoutCount); if (obj.copySrcLayoutCount == 0 || obj.pCopySrcLayouts == nullptr) { p.PrintKeyString("pCopySrcLayouts", "NULL"); @@ -3835,7 +3835,7 @@ void DumpVkPhysicalDeviceInlineUniformBlockProperties(Printer &p, std::string na } void DumpVkPhysicalDeviceLayeredApiPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceLayeredApiPropertiesKHR &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(15); + p.SetMinKeyWidth(10); p.PrintKeyValue("vendorID", to_hex_str(p, obj.vendorID)); p.PrintKeyValue("deviceID", to_hex_str(p, obj.deviceID)); DumpVkPhysicalDeviceLayeredApiKHR(p, "layeredAPI", obj.layeredAPI); @@ -3843,7 +3843,7 @@ void DumpVkPhysicalDeviceLayeredApiPropertiesKHR(Printer &p, std::string name, c } void DumpVkPhysicalDeviceLayeredApiPropertiesListKHR(Printer &p, std::string name, const VkPhysicalDeviceLayeredApiPropertiesListKHR &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(29); + p.SetMinKeyWidth(15); p.PrintKeyValue("layeredApiCount", obj.layeredApiCount); if (obj.layeredApiCount == 0 || obj.pLayeredApis == nullptr) { p.PrintKeyString("pLayeredApis", "NULL"); @@ -4106,14 +4106,13 @@ void DumpVkPhysicalDeviceMapMemoryPlacedPropertiesEXT(Printer &p, std::string na } void DumpVkPhysicalDeviceMemoryBudgetPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceMemoryBudgetPropertiesEXT &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(14); { - ArrayWrapper arr(p,"heapBudget", 16); - for (uint32_t i = 0; i < 16; i++) { p.PrintElement(obj.heapBudget[i]); } + ArrayWrapper arr(p,"heapBudget", VK_MAX_MEMORY_HEAPS); + for (uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; i++) { p.PrintElement(obj.heapBudget[i]); } } { - ArrayWrapper arr(p,"heapUsage", 16); - for (uint32_t i = 0; i < 16; i++) { p.PrintElement(obj.heapUsage[i]); } + ArrayWrapper arr(p,"heapUsage", VK_MAX_MEMORY_HEAPS); + for (uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; i++) { p.PrintElement(obj.heapUsage[i]); } } } void DumpVkPhysicalDeviceMemoryPriorityFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMemoryPriorityFeaturesEXT &obj) { @@ -4478,7 +4477,7 @@ void DumpVkPhysicalDeviceRobustness2PropertiesKHR(Printer &p, std::string name, } void DumpVkPhysicalDeviceSampleLocationsPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceSampleLocationsPropertiesEXT &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(32); + p.SetMinKeyWidth(26); DumpVkSampleCountFlags(p, "sampleLocationSampleCounts", obj.sampleLocationSampleCounts); DumpVkExtent2D(p, "maxSampleLocationGridSize", obj.maxSampleLocationGridSize); { @@ -4649,7 +4648,7 @@ void DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(Printer &p, std::stri } void DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(39); + p.SetMinKeyWidth(35); p.PrintKeyValue("shaderModuleIdentifierAlgorithmUUID", obj.shaderModuleIdentifierAlgorithmUUID); } void DumpVkPhysicalDeviceShaderObjectFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderObjectFeaturesEXT &obj) { @@ -4659,7 +4658,7 @@ void DumpVkPhysicalDeviceShaderObjectFeaturesEXT(Printer &p, std::string name, c } void DumpVkPhysicalDeviceShaderObjectPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderObjectPropertiesEXT &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(20); + p.SetMinKeyWidth(19); p.PrintKeyValue("shaderBinaryUUID", obj.shaderBinaryUUID); p.PrintKeyValue("shaderBinaryVersion", obj.shaderBinaryVersion); } @@ -4798,7 +4797,7 @@ void DumpVkPhysicalDeviceTimelineSemaphoreProperties(Printer &p, std::string nam } void DumpVkPhysicalDeviceToolProperties(Printer &p, std::string name, const VkPhysicalDeviceToolProperties &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(16); + p.SetMinKeyWidth(11); p.PrintKeyString("name", obj.name); p.PrintKeyString("version", obj.version); DumpVkToolPurposeFlags(p, "purposes", obj.purposes); @@ -5216,7 +5215,7 @@ void DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(Printer &p, std:: } void DumpVkQueueFamilyGlobalPriorityProperties(Printer &p, std::string name, const VkQueueFamilyGlobalPriorityProperties &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(14); + p.SetMinKeyWidth(13); p.PrintKeyValue("priorityCount", obj.priorityCount); ArrayWrapper arr(p,"priorities", obj.priorityCount); for (uint32_t i = 0; i < obj.priorityCount; i++) { @@ -5287,7 +5286,7 @@ void DumpVkSurfaceFormatKHR(Printer &p, std::string name, const VkSurfaceFormatK } void DumpVkSurfacePresentModeCompatibilityKHR(Printer &p, std::string name, const VkSurfacePresentModeCompatibilityKHR &obj) { ObjectWrapper object{p, name}; - p.SetMinKeyWidth(31); + p.SetMinKeyWidth(16); p.PrintKeyValue("presentModeCount", obj.presentModeCount); if (obj.presentModeCount == 0 || obj.pPresentModes == nullptr) { p.PrintKeyString("pPresentModes", "NULL"); @@ -5701,8 +5700,8 @@ struct phys_device_props2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceConservativeRasterizationPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCooperativeMatrixPropertiesKHR)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCopyMemoryIndirectPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCustomBorderColorPropertiesEXT)); @@ -5760,8 +5759,8 @@ struct phys_device_props2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceLayeredApiPropertiesListKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceLegacyVertexAttributesPropertiesEXT)); - if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)) + if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceLineRasterizationProperties)); if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_3_EXTENSION_NAME)) @@ -5818,8 +5817,8 @@ struct phys_device_props2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDevicePushDescriptorProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingPipelinePropertiesKHR)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRobustness2PropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceSampleLocationsPropertiesEXT)); @@ -6641,8 +6640,8 @@ struct phys_device_features2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceBufferDeviceAddressFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceColorWriteEnableFeaturesEXT)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceComputeShaderDerivativesFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceConditionalRenderingFeaturesEXT)); @@ -6656,8 +6655,8 @@ struct phys_device_features2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthBiasControlFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthClampControlFeaturesEXT)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthClampZeroOneFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthClipControlFeaturesEXT)); @@ -6695,8 +6694,8 @@ struct phys_device_features2_chain { if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME) || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentShaderBarycentricFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentShaderInterlockFeaturesEXT)); @@ -6732,8 +6731,8 @@ struct phys_device_features2_chain { if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceImagelessFramebufferFeatures)); - if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME)) + if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceIndexTypeUint8Features)); if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) @@ -6743,8 +6742,8 @@ struct phys_device_features2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceLegacyDitheringFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceLegacyVertexAttributesFeaturesEXT)); - if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)) + if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceLineRasterizationFeatures)); if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) @@ -6813,8 +6812,8 @@ struct phys_device_features2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentId2FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentIdFeaturesKHR)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentWait2FeaturesKHR)); @@ -6844,8 +6843,8 @@ struct phys_device_features2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingPipelineFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingPositionFetchFeaturesKHR)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRobustness2FeaturesKHR)); if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs)) @@ -6920,8 +6919,8 @@ struct phys_device_features2_chain { chain_members.push_back(reinterpret_cast(&PhysicalDeviceSubgroupSizeControlFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceSubpassMergeFeedbackFeaturesEXT)); - if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME)) + if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceSwapchainMaintenance1FeaturesKHR)); if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs)) @@ -6944,8 +6943,8 @@ struct phys_device_features2_chain { if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVariablePointersFeatures)); - if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME) - || gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) + if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME) + || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) && (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVertexAttributeDivisorFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME)) @@ -7212,7 +7211,7 @@ void chain_iterator_phys_device_features2(Printer &p, AppGpu &gpu, bool show_pro } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES) { const VkPhysicalDeviceGlobalPriorityQueryFeatures* props = (const VkPhysicalDeviceGlobalPriorityQueryFeatures*)structure; - DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceGlobalPriorityQueryFeatures":"VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", *props); + DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceGlobalPriorityQueryFeatures":"VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT) { @@ -7564,7 +7563,7 @@ void chain_iterator_phys_device_features2(Printer &p, AppGpu &gpu, bool show_pro } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES) { const VkPhysicalDeviceShaderFloat16Int8Features* props = (const VkPhysicalDeviceShaderFloat16Int8Features*)structure; - DumpVkPhysicalDeviceShaderFloat16Int8Features(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceShaderFloat16Int8Features":"VkPhysicalDeviceFloat16Int8FeaturesKHR", *props); + DumpVkPhysicalDeviceShaderFloat16Int8Features(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceShaderFloat16Int8Features":"VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT) { @@ -7699,7 +7698,7 @@ void chain_iterator_phys_device_features2(Printer &p, AppGpu &gpu, bool show_pro } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES) { const VkPhysicalDeviceVariablePointersFeatures* props = (const VkPhysicalDeviceVariablePointersFeatures*)structure; - DumpVkPhysicalDeviceVariablePointersFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceVariablePointersFeatures":"VkPhysicalDeviceVariablePointersFeaturesKHR", *props); + DumpVkPhysicalDeviceVariablePointersFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceVariablePointersFeatures":"VkPhysicalDeviceVariablePointerFeatures", *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES) { @@ -7997,7 +7996,7 @@ void chain_iterator_queue_properties2(Printer &p, AppGpu &gpu, const void * plac p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES) { const VkQueueFamilyGlobalPriorityProperties* props = (const VkQueueFamilyGlobalPriorityProperties*)structure; - DumpVkQueueFamilyGlobalPriorityProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkQueueFamilyGlobalPriorityProperties":"VkQueueFamilyGlobalPriorityPropertiesEXT", *props); + DumpVkQueueFamilyGlobalPriorityProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkQueueFamilyGlobalPriorityProperties":"VkQueueFamilyGlobalPriorityPropertiesKHR", *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR) { From e2e5523c49ac24e274ad5780449e79af322cd529 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Fri, 3 Oct 2025 21:20:22 -0500 Subject: [PATCH 3/3] vulkaninfo: Upgrade pNext chain naming Structs were only checking the first alias when deciding the display name to use. Now, pNext chains consider all aliases. Additionally, --show-promoted-structs now includes printing aliased types, whereas before it would only work for 'completely distinct aliases', eg the structs are different types instead of being C typedefs. --- scripts/generators/vulkaninfo_generator.py | 81 +- vulkaninfo/generated/vulkaninfo.hpp | 1244 +++++++++++++++----- 2 files changed, 1031 insertions(+), 294 deletions(-) diff --git a/scripts/generators/vulkaninfo_generator.py b/scripts/generators/vulkaninfo_generator.py index 6843e7eb0..3f34d9f61 100644 --- a/scripts/generators/vulkaninfo_generator.py +++ b/scripts/generators/vulkaninfo_generator.py @@ -924,13 +924,14 @@ def PrintChainStruct(self, listName, structs_to_print, chain_details): out.append(f' std::vector<{member.type}> {struct.name}_{member.name};\n') out.append(self.AddGuardFooter(struct)) out.append(' void initialize_chain(') + args = [] if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: - out.append('AppInstance &inst, ') + args.append('AppInstance &inst') if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: - out.append('AppGpu &gpu ') + args.append('AppGpu &gpu') if chain_details.get('can_show_promoted_structs'): - out.append(', bool show_promoted_structs') - out.append(') noexcept {\n') + args.append('bool show_promoted_structs') + out.append(f'{", ".join(args)}) noexcept {{\n') for s in structs_to_print: if s in STRUCT_BLACKLIST: continue @@ -940,7 +941,6 @@ def PrintChainStruct(self, listName, structs_to_print, chain_details): out.append(f' {struct.name[2:]}.sType = {struct.sType};\n') out.append(self.AddGuardFooter(struct)) - out.append(' std::vector chain_members{};\n') for s in structs_to_print: if s in STRUCT_BLACKLIST: @@ -1009,14 +1009,16 @@ def PrintChainStruct(self, listName, structs_to_print, chain_details): ''') if chain_details.get('print_iterator'): out.append('\n') - out.append(f'void chain_iterator_{listName}(Printer &p, ') + out.append(f'void chain_iterator_{listName}(') + args = ['Printer &p'] if chain_details.get('type') in [EXTENSION_TYPE_INSTANCE, EXTENSION_TYPE_BOTH]: - out.append('AppInstance &inst, ') + args.append('AppInstance &inst') if chain_details.get('type') in [EXTENSION_TYPE_DEVICE, EXTENSION_TYPE_BOTH]: - out.append('AppGpu &gpu, ') + args.append('AppGpu &gpu') if chain_details.get('can_show_promoted_structs'): - out.append('bool show_promoted_structs, ') - out.append('const void * place) {\n') + args.append('bool show_promoted_structs') + args.append('const void * place') + out.append(f'{", ".join(args)}) {{\n') out.append(' while (place) {\n') out.append(' const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;\n') out.append(' p.SetSubHeader();\n') @@ -1030,16 +1032,9 @@ def PrintChainStruct(self, listName, structs_to_print, chain_details): out.append(f' if (structure->sType == {struct.sType}') if struct.name in PORTABILITY_STRUCTS: out.append(' && p.Type() != OutputType::json') - has_version = struct.version is not None - has_extNameStr = len(struct.extensions) > 0 or len(struct.aliases) > 0 out.append(') {\n') out.append(f' const {struct.name}* props = (const {struct.name}*)structure;\n') - out.append(f' Dump{struct.name}(p, ') - if len(struct.aliases) > 0 and struct.version is not None: - out.append(f'{version_desc} >= {struct.version.nameApi} ?"{struct.name}":"{struct.aliases[0]}"') - else: - out.append(f'"{struct.name}"') - out.append(', *props);\n') + out.extend(self.PrintStructNameDecisionLogic(struct, version_desc, chain_details.get('can_show_promoted_structs'))) out.append(' p.AddNewline();\n') out.append(' }\n') out.append(self.AddGuardFooter(struct)) @@ -1073,6 +1068,56 @@ def PrintChainStruct(self, listName, structs_to_print, chain_details): return out + def GetStructCheckStringForMatchingExtension(self, struct, structName): + for ext_name in struct.extensions: + ext = self.vk.extensions[ext_name] + vendor = ext.name.split('_')[1] + if structName.endswith(vendor): + if ext.device: + return f'gpu.CheckPhysicalDeviceExtensionIncluded({ext.nameString})' + elif ext.instance: + return f'inst.CheckExtensionEnabled({ext.nameString})' + return None + + # Function is complex because it has to do the following: + # Always print the struct with the most appropriate name given the gpu api version & enabled instance/device extensions + # Print struct aliases when --show-promoted-structs is set + # Not let alias printing duplicate the most appropriate name + def PrintStructNameDecisionLogic(self, struct, version_desc, can_show_promoted_structs): + out = [] + out.append(f'{" " * 12}const char* name = ') + # Get a list of all the conditions to check and the type name to use + check_list = [] + if struct.version is not None: + check_list.append([f'{version_desc} >= {struct.version.nameApi}', struct.name]) + else: + check_list.append([f'{self.GetStructCheckStringForMatchingExtension(struct, struct.name)}', struct.name]) + + for alias in struct.aliases: + ext_str = self.GetStructCheckStringForMatchingExtension(struct, alias) + if ext_str is not None: + check_list.append([f'{self.GetStructCheckStringForMatchingExtension(struct, alias)}', alias]) + end_parens = '' + # Turn the conditions into a nested ternary condition - + for check in check_list: + if check == check_list[-1]: + out.append( f'"{check[1]}"') + else: + out.append( f'{check[0]} ? "{check[1]}" : (') + end_parens += ')' + out.append(f'{end_parens};\n') + out.append(f'{" " * 12}Dump{struct.name}(p, name, *props);\n') + if not can_show_promoted_structs: + return out + for alias in struct.aliases: + ext_str = self.GetStructCheckStringForMatchingExtension(struct, alias) + if ext_str is not None: + out.append(f'{" " * 12}if (show_promoted_structs && strcmp(name, "{alias}") != 0 && {ext_str}) {{\n') + out.append(f'{" " * 16}p.AddNewline();\n') + out.append(f'{" " * 16}p.SetSubHeader();\n') + out.append(f'{" " * 16}Dump{struct.name}(p, "{alias}", *props);\n') + out.append(f'{" " * 12}}}\n') + return out def PrintStructComparisonForwardDecl(self,structure): out = [] diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp index 721d658f8..85a72be38 100644 --- a/vulkaninfo/generated/vulkaninfo.hpp +++ b/vulkaninfo/generated/vulkaninfo.hpp @@ -5616,7 +5616,7 @@ struct phys_device_props2_chain { VkPhysicalDeviceVulkan14Properties PhysicalDeviceVulkan14Properties{}; std::vector VkPhysicalDeviceVulkan14Properties_pCopySrcLayouts; std::vector VkPhysicalDeviceVulkan14Properties_pCopyDstLayouts; - void initialize_chain(AppInstance &inst, AppGpu &gpu , bool show_promoted_structs) noexcept { + void initialize_chain(AppInstance &inst, AppGpu &gpu, bool show_promoted_structs) noexcept { PhysicalDeviceAccelerationStructurePropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR; PhysicalDeviceBlendOperationAdvancedPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT; PhysicalDeviceComputeShaderDerivativesPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR; @@ -5881,354 +5881,554 @@ void chain_iterator_phys_device_props2(Printer &p, AppInstance &inst, AppGpu &gp p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR) { const VkPhysicalDeviceAccelerationStructurePropertiesKHR* props = (const VkPhysicalDeviceAccelerationStructurePropertiesKHR*)structure; - DumpVkPhysicalDeviceAccelerationStructurePropertiesKHR(p, "VkPhysicalDeviceAccelerationStructurePropertiesKHR", *props); + const char* name = "VkPhysicalDeviceAccelerationStructurePropertiesKHR"; + DumpVkPhysicalDeviceAccelerationStructurePropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT) { const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT* props = (const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*)structure; - DumpVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(p, "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT"; + DumpVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR) { const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR* props = (const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR*)structure; - DumpVkPhysicalDeviceComputeShaderDerivativesPropertiesKHR(p, "VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR", *props); + const char* name = "VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR"; + DumpVkPhysicalDeviceComputeShaderDerivativesPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT) { const VkPhysicalDeviceConservativeRasterizationPropertiesEXT* props = (const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*)structure; - DumpVkPhysicalDeviceConservativeRasterizationPropertiesEXT(p, "VkPhysicalDeviceConservativeRasterizationPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceConservativeRasterizationPropertiesEXT"; + DumpVkPhysicalDeviceConservativeRasterizationPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR) { const VkPhysicalDeviceCooperativeMatrixPropertiesKHR* props = (const VkPhysicalDeviceCooperativeMatrixPropertiesKHR*)structure; - DumpVkPhysicalDeviceCooperativeMatrixPropertiesKHR(p, "VkPhysicalDeviceCooperativeMatrixPropertiesKHR", *props); + const char* name = "VkPhysicalDeviceCooperativeMatrixPropertiesKHR"; + DumpVkPhysicalDeviceCooperativeMatrixPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR) { const VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR* props = (const VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR*)structure; - DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(p, "VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME) ? "VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR" : ("VkPhysicalDeviceCopyMemoryIndirectPropertiesNV"); + DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(p, "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT) { const VkPhysicalDeviceCustomBorderColorPropertiesEXT* props = (const VkPhysicalDeviceCustomBorderColorPropertiesEXT*)structure; - DumpVkPhysicalDeviceCustomBorderColorPropertiesEXT(p, "VkPhysicalDeviceCustomBorderColorPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceCustomBorderColorPropertiesEXT"; + DumpVkPhysicalDeviceCustomBorderColorPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES) { const VkPhysicalDeviceDepthStencilResolveProperties* props = (const VkPhysicalDeviceDepthStencilResolveProperties*)structure; - DumpVkPhysicalDeviceDepthStencilResolveProperties(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceDepthStencilResolveProperties":"VkPhysicalDeviceDepthStencilResolvePropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDepthStencilResolveProperties" : ("VkPhysicalDeviceDepthStencilResolvePropertiesKHR"); + DumpVkPhysicalDeviceDepthStencilResolveProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDepthStencilResolvePropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDepthStencilResolveProperties(p, "VkPhysicalDeviceDepthStencilResolvePropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT) { const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT* props = (const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT*)structure; - DumpVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(p, "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT"; + DumpVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT) { const VkPhysicalDeviceDescriptorBufferPropertiesEXT* props = (const VkPhysicalDeviceDescriptorBufferPropertiesEXT*)structure; - DumpVkPhysicalDeviceDescriptorBufferPropertiesEXT(p, "VkPhysicalDeviceDescriptorBufferPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceDescriptorBufferPropertiesEXT"; + DumpVkPhysicalDeviceDescriptorBufferPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES) { const VkPhysicalDeviceDescriptorIndexingProperties* props = (const VkPhysicalDeviceDescriptorIndexingProperties*)structure; - DumpVkPhysicalDeviceDescriptorIndexingProperties(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceDescriptorIndexingProperties":"VkPhysicalDeviceDescriptorIndexingPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDescriptorIndexingProperties" : ("VkPhysicalDeviceDescriptorIndexingPropertiesEXT"); + DumpVkPhysicalDeviceDescriptorIndexingProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDescriptorIndexingPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDescriptorIndexingProperties(p, "VkPhysicalDeviceDescriptorIndexingPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT) { const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT* props = (const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT*)structure; - DumpVkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(p, "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT"; + DumpVkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT) { const VkPhysicalDeviceDiscardRectanglePropertiesEXT* props = (const VkPhysicalDeviceDiscardRectanglePropertiesEXT*)structure; - DumpVkPhysicalDeviceDiscardRectanglePropertiesEXT(p, "VkPhysicalDeviceDiscardRectanglePropertiesEXT", *props); + const char* name = "VkPhysicalDeviceDiscardRectanglePropertiesEXT"; + DumpVkPhysicalDeviceDiscardRectanglePropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES) { const VkPhysicalDeviceDriverProperties* props = (const VkPhysicalDeviceDriverProperties*)structure; - DumpVkPhysicalDeviceDriverProperties(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceDriverProperties":"VkPhysicalDeviceDriverPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDriverProperties" : ("VkPhysicalDeviceDriverPropertiesKHR"); + DumpVkPhysicalDeviceDriverProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDriverPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDriverProperties(p, "VkPhysicalDeviceDriverPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT) { const VkPhysicalDeviceDrmPropertiesEXT* props = (const VkPhysicalDeviceDrmPropertiesEXT*)structure; - DumpVkPhysicalDeviceDrmPropertiesEXT(p, "VkPhysicalDeviceDrmPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceDrmPropertiesEXT"; + DumpVkPhysicalDeviceDrmPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT) { const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT* props = (const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT*)structure; - DumpVkPhysicalDeviceExtendedDynamicState3PropertiesEXT(p, "VkPhysicalDeviceExtendedDynamicState3PropertiesEXT", *props); + const char* name = "VkPhysicalDeviceExtendedDynamicState3PropertiesEXT"; + DumpVkPhysicalDeviceExtendedDynamicState3PropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT) { const VkPhysicalDeviceExternalMemoryHostPropertiesEXT* props = (const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*)structure; - DumpVkPhysicalDeviceExternalMemoryHostPropertiesEXT(p, "VkPhysicalDeviceExternalMemoryHostPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceExternalMemoryHostPropertiesEXT"; + DumpVkPhysicalDeviceExternalMemoryHostPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES) { const VkPhysicalDeviceFloatControlsProperties* props = (const VkPhysicalDeviceFloatControlsProperties*)structure; - DumpVkPhysicalDeviceFloatControlsProperties(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceFloatControlsProperties":"VkPhysicalDeviceFloatControlsPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceFloatControlsProperties" : ("VkPhysicalDeviceFloatControlsPropertiesKHR"); + DumpVkPhysicalDeviceFloatControlsProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFloatControlsPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceFloatControlsProperties(p, "VkPhysicalDeviceFloatControlsPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT) { const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT* props = (const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT*)structure; - DumpVkPhysicalDeviceFragmentDensityMap2PropertiesEXT(p, "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT", *props); + const char* name = "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT"; + DumpVkPhysicalDeviceFragmentDensityMap2PropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT) { const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT* props = (const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT*)structure; - DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(p, "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME) ? "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT" : ("VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM"); + DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(p, "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT) { const VkPhysicalDeviceFragmentDensityMapPropertiesEXT* props = (const VkPhysicalDeviceFragmentDensityMapPropertiesEXT*)structure; - DumpVkPhysicalDeviceFragmentDensityMapPropertiesEXT(p, "VkPhysicalDeviceFragmentDensityMapPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceFragmentDensityMapPropertiesEXT"; + DumpVkPhysicalDeviceFragmentDensityMapPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR) { const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR* props = (const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR*)structure; - DumpVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR(p, "VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR", *props); + const char* name = "VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR"; + DumpVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR) { const VkPhysicalDeviceFragmentShadingRatePropertiesKHR* props = (const VkPhysicalDeviceFragmentShadingRatePropertiesKHR*)structure; - DumpVkPhysicalDeviceFragmentShadingRatePropertiesKHR(p, "VkPhysicalDeviceFragmentShadingRatePropertiesKHR", *props); + const char* name = "VkPhysicalDeviceFragmentShadingRatePropertiesKHR"; + DumpVkPhysicalDeviceFragmentShadingRatePropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT) { const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT* props = (const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT*)structure; - DumpVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(p, "VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT"; + DumpVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES) { const VkPhysicalDeviceHostImageCopyProperties* props = (const VkPhysicalDeviceHostImageCopyProperties*)structure; - DumpVkPhysicalDeviceHostImageCopyProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceHostImageCopyProperties":"VkPhysicalDeviceHostImageCopyPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceHostImageCopyProperties" : ("VkPhysicalDeviceHostImageCopyPropertiesEXT"); + DumpVkPhysicalDeviceHostImageCopyProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceHostImageCopyPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceHostImageCopyProperties(p, "VkPhysicalDeviceHostImageCopyPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES) { const VkPhysicalDeviceIDProperties* props = (const VkPhysicalDeviceIDProperties*)structure; - DumpVkPhysicalDeviceIDProperties(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceIDProperties":"VkPhysicalDeviceIDPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceIDProperties" : ("VkPhysicalDeviceIDPropertiesKHR"); + DumpVkPhysicalDeviceIDProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceIDPropertiesKHR") != 0 && inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceIDProperties(p, "VkPhysicalDeviceIDPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES) { const VkPhysicalDeviceInlineUniformBlockProperties* props = (const VkPhysicalDeviceInlineUniformBlockProperties*)structure; - DumpVkPhysicalDeviceInlineUniformBlockProperties(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceInlineUniformBlockProperties":"VkPhysicalDeviceInlineUniformBlockPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceInlineUniformBlockProperties" : ("VkPhysicalDeviceInlineUniformBlockPropertiesEXT"); + DumpVkPhysicalDeviceInlineUniformBlockProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceInlineUniformBlockPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceInlineUniformBlockProperties(p, "VkPhysicalDeviceInlineUniformBlockPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR) { const VkPhysicalDeviceLayeredApiPropertiesListKHR* props = (const VkPhysicalDeviceLayeredApiPropertiesListKHR*)structure; - DumpVkPhysicalDeviceLayeredApiPropertiesListKHR(p, "VkPhysicalDeviceLayeredApiPropertiesListKHR", *props); + const char* name = "VkPhysicalDeviceLayeredApiPropertiesListKHR"; + DumpVkPhysicalDeviceLayeredApiPropertiesListKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT) { const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT* props = (const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT*)structure; - DumpVkPhysicalDeviceLegacyVertexAttributesPropertiesEXT(p, "VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT"; + DumpVkPhysicalDeviceLegacyVertexAttributesPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES) { const VkPhysicalDeviceLineRasterizationProperties* props = (const VkPhysicalDeviceLineRasterizationProperties*)structure; - DumpVkPhysicalDeviceLineRasterizationProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceLineRasterizationProperties":"VkPhysicalDeviceLineRasterizationPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceLineRasterizationProperties" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME) ? "VkPhysicalDeviceLineRasterizationPropertiesKHR" : ("VkPhysicalDeviceLineRasterizationPropertiesEXT")); + DumpVkPhysicalDeviceLineRasterizationProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceLineRasterizationProperties(p, "VkPhysicalDeviceLineRasterizationPropertiesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceLineRasterizationProperties(p, "VkPhysicalDeviceLineRasterizationPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES) { const VkPhysicalDeviceMaintenance3Properties* props = (const VkPhysicalDeviceMaintenance3Properties*)structure; - DumpVkPhysicalDeviceMaintenance3Properties(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceMaintenance3Properties":"VkPhysicalDeviceMaintenance3PropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceMaintenance3Properties" : ("VkPhysicalDeviceMaintenance3PropertiesKHR"); + DumpVkPhysicalDeviceMaintenance3Properties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance3PropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_3_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance3Properties(p, "VkPhysicalDeviceMaintenance3PropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES) { const VkPhysicalDeviceMaintenance4Properties* props = (const VkPhysicalDeviceMaintenance4Properties*)structure; - DumpVkPhysicalDeviceMaintenance4Properties(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceMaintenance4Properties":"VkPhysicalDeviceMaintenance4PropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceMaintenance4Properties" : ("VkPhysicalDeviceMaintenance4PropertiesKHR"); + DumpVkPhysicalDeviceMaintenance4Properties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance4PropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance4Properties(p, "VkPhysicalDeviceMaintenance4PropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES) { const VkPhysicalDeviceMaintenance5Properties* props = (const VkPhysicalDeviceMaintenance5Properties*)structure; - DumpVkPhysicalDeviceMaintenance5Properties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceMaintenance5Properties":"VkPhysicalDeviceMaintenance5PropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance5Properties" : ("VkPhysicalDeviceMaintenance5PropertiesKHR"); + DumpVkPhysicalDeviceMaintenance5Properties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance5PropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_5_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance5Properties(p, "VkPhysicalDeviceMaintenance5PropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES) { const VkPhysicalDeviceMaintenance6Properties* props = (const VkPhysicalDeviceMaintenance6Properties*)structure; - DumpVkPhysicalDeviceMaintenance6Properties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceMaintenance6Properties":"VkPhysicalDeviceMaintenance6PropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance6Properties" : ("VkPhysicalDeviceMaintenance6PropertiesKHR"); + DumpVkPhysicalDeviceMaintenance6Properties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance6PropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_6_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance6Properties(p, "VkPhysicalDeviceMaintenance6PropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR) { const VkPhysicalDeviceMaintenance7PropertiesKHR* props = (const VkPhysicalDeviceMaintenance7PropertiesKHR*)structure; - DumpVkPhysicalDeviceMaintenance7PropertiesKHR(p, "VkPhysicalDeviceMaintenance7PropertiesKHR", *props); + const char* name = "VkPhysicalDeviceMaintenance7PropertiesKHR"; + DumpVkPhysicalDeviceMaintenance7PropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR) { const VkPhysicalDeviceMaintenance9PropertiesKHR* props = (const VkPhysicalDeviceMaintenance9PropertiesKHR*)structure; - DumpVkPhysicalDeviceMaintenance9PropertiesKHR(p, "VkPhysicalDeviceMaintenance9PropertiesKHR", *props); + const char* name = "VkPhysicalDeviceMaintenance9PropertiesKHR"; + DumpVkPhysicalDeviceMaintenance9PropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT) { const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT* props = (const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT*)structure; - DumpVkPhysicalDeviceMapMemoryPlacedPropertiesEXT(p, "VkPhysicalDeviceMapMemoryPlacedPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceMapMemoryPlacedPropertiesEXT"; + DumpVkPhysicalDeviceMapMemoryPlacedPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT) { const VkPhysicalDeviceMeshShaderPropertiesEXT* props = (const VkPhysicalDeviceMeshShaderPropertiesEXT*)structure; - DumpVkPhysicalDeviceMeshShaderPropertiesEXT(p, "VkPhysicalDeviceMeshShaderPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceMeshShaderPropertiesEXT"; + DumpVkPhysicalDeviceMeshShaderPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT) { const VkPhysicalDeviceMultiDrawPropertiesEXT* props = (const VkPhysicalDeviceMultiDrawPropertiesEXT*)structure; - DumpVkPhysicalDeviceMultiDrawPropertiesEXT(p, "VkPhysicalDeviceMultiDrawPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceMultiDrawPropertiesEXT"; + DumpVkPhysicalDeviceMultiDrawPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES) { const VkPhysicalDeviceMultiviewProperties* props = (const VkPhysicalDeviceMultiviewProperties*)structure; - DumpVkPhysicalDeviceMultiviewProperties(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceMultiviewProperties":"VkPhysicalDeviceMultiviewPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceMultiviewProperties" : ("VkPhysicalDeviceMultiviewPropertiesKHR"); + DumpVkPhysicalDeviceMultiviewProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMultiviewPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MULTIVIEW_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMultiviewProperties(p, "VkPhysicalDeviceMultiviewPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT) { const VkPhysicalDeviceNestedCommandBufferPropertiesEXT* props = (const VkPhysicalDeviceNestedCommandBufferPropertiesEXT*)structure; - DumpVkPhysicalDeviceNestedCommandBufferPropertiesEXT(p, "VkPhysicalDeviceNestedCommandBufferPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceNestedCommandBufferPropertiesEXT"; + DumpVkPhysicalDeviceNestedCommandBufferPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT) { const VkPhysicalDeviceOpacityMicromapPropertiesEXT* props = (const VkPhysicalDeviceOpacityMicromapPropertiesEXT*)structure; - DumpVkPhysicalDeviceOpacityMicromapPropertiesEXT(p, "VkPhysicalDeviceOpacityMicromapPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceOpacityMicromapPropertiesEXT"; + DumpVkPhysicalDeviceOpacityMicromapPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT) { const VkPhysicalDevicePCIBusInfoPropertiesEXT* props = (const VkPhysicalDevicePCIBusInfoPropertiesEXT*)structure; - DumpVkPhysicalDevicePCIBusInfoPropertiesEXT(p, "VkPhysicalDevicePCIBusInfoPropertiesEXT", *props); + const char* name = "VkPhysicalDevicePCIBusInfoPropertiesEXT"; + DumpVkPhysicalDevicePCIBusInfoPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR) { const VkPhysicalDevicePerformanceQueryPropertiesKHR* props = (const VkPhysicalDevicePerformanceQueryPropertiesKHR*)structure; - DumpVkPhysicalDevicePerformanceQueryPropertiesKHR(p, "VkPhysicalDevicePerformanceQueryPropertiesKHR", *props); + const char* name = "VkPhysicalDevicePerformanceQueryPropertiesKHR"; + DumpVkPhysicalDevicePerformanceQueryPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR) { const VkPhysicalDevicePipelineBinaryPropertiesKHR* props = (const VkPhysicalDevicePipelineBinaryPropertiesKHR*)structure; - DumpVkPhysicalDevicePipelineBinaryPropertiesKHR(p, "VkPhysicalDevicePipelineBinaryPropertiesKHR", *props); + const char* name = "VkPhysicalDevicePipelineBinaryPropertiesKHR"; + DumpVkPhysicalDevicePipelineBinaryPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES) { const VkPhysicalDevicePipelineRobustnessProperties* props = (const VkPhysicalDevicePipelineRobustnessProperties*)structure; - DumpVkPhysicalDevicePipelineRobustnessProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDevicePipelineRobustnessProperties":"VkPhysicalDevicePipelineRobustnessPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePipelineRobustnessProperties" : ("VkPhysicalDevicePipelineRobustnessPropertiesEXT"); + DumpVkPhysicalDevicePipelineRobustnessProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineRobustnessPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePipelineRobustnessProperties(p, "VkPhysicalDevicePipelineRobustnessPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES) { const VkPhysicalDevicePointClippingProperties* props = (const VkPhysicalDevicePointClippingProperties*)structure; - DumpVkPhysicalDevicePointClippingProperties(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDevicePointClippingProperties":"VkPhysicalDevicePointClippingPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDevicePointClippingProperties" : ("VkPhysicalDevicePointClippingPropertiesKHR"); + DumpVkPhysicalDevicePointClippingProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePointClippingPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_2_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePointClippingProperties(p, "VkPhysicalDevicePointClippingPropertiesKHR", *props); + } p.AddNewline(); } #ifdef VK_ENABLE_BETA_EXTENSIONS if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR && p.Type() != OutputType::json) { const VkPhysicalDevicePortabilitySubsetPropertiesKHR* props = (const VkPhysicalDevicePortabilitySubsetPropertiesKHR*)structure; - DumpVkPhysicalDevicePortabilitySubsetPropertiesKHR(p, "VkPhysicalDevicePortabilitySubsetPropertiesKHR", *props); + const char* name = "VkPhysicalDevicePortabilitySubsetPropertiesKHR"; + DumpVkPhysicalDevicePortabilitySubsetPropertiesKHR(p, name, *props); p.AddNewline(); } #endif // VK_ENABLE_BETA_EXTENSIONS if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES) { const VkPhysicalDeviceProtectedMemoryProperties* props = (const VkPhysicalDeviceProtectedMemoryProperties*)structure; - DumpVkPhysicalDeviceProtectedMemoryProperties(p, "VkPhysicalDeviceProtectedMemoryProperties", *props); + const char* name = "VkPhysicalDeviceProtectedMemoryProperties"; + DumpVkPhysicalDeviceProtectedMemoryProperties(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT) { const VkPhysicalDeviceProvokingVertexPropertiesEXT* props = (const VkPhysicalDeviceProvokingVertexPropertiesEXT*)structure; - DumpVkPhysicalDeviceProvokingVertexPropertiesEXT(p, "VkPhysicalDeviceProvokingVertexPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceProvokingVertexPropertiesEXT"; + DumpVkPhysicalDeviceProvokingVertexPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES) { const VkPhysicalDevicePushDescriptorProperties* props = (const VkPhysicalDevicePushDescriptorProperties*)structure; - DumpVkPhysicalDevicePushDescriptorProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDevicePushDescriptorProperties":"VkPhysicalDevicePushDescriptorPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePushDescriptorProperties" : ("VkPhysicalDevicePushDescriptorPropertiesKHR"); + DumpVkPhysicalDevicePushDescriptorProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePushDescriptorPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePushDescriptorProperties(p, "VkPhysicalDevicePushDescriptorPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR) { const VkPhysicalDeviceRayTracingPipelinePropertiesKHR* props = (const VkPhysicalDeviceRayTracingPipelinePropertiesKHR*)structure; - DumpVkPhysicalDeviceRayTracingPipelinePropertiesKHR(p, "VkPhysicalDeviceRayTracingPipelinePropertiesKHR", *props); + const char* name = "VkPhysicalDeviceRayTracingPipelinePropertiesKHR"; + DumpVkPhysicalDeviceRayTracingPipelinePropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR) { const VkPhysicalDeviceRobustness2PropertiesKHR* props = (const VkPhysicalDeviceRobustness2PropertiesKHR*)structure; - DumpVkPhysicalDeviceRobustness2PropertiesKHR(p, "VkPhysicalDeviceRobustness2PropertiesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) ? "VkPhysicalDeviceRobustness2PropertiesKHR" : ("VkPhysicalDeviceRobustness2PropertiesEXT"); + DumpVkPhysicalDeviceRobustness2PropertiesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceRobustness2PropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceRobustness2PropertiesKHR(p, "VkPhysicalDeviceRobustness2PropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT) { const VkPhysicalDeviceSampleLocationsPropertiesEXT* props = (const VkPhysicalDeviceSampleLocationsPropertiesEXT*)structure; - DumpVkPhysicalDeviceSampleLocationsPropertiesEXT(p, "VkPhysicalDeviceSampleLocationsPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceSampleLocationsPropertiesEXT"; + DumpVkPhysicalDeviceSampleLocationsPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES) { const VkPhysicalDeviceSamplerFilterMinmaxProperties* props = (const VkPhysicalDeviceSamplerFilterMinmaxProperties*)structure; - DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceSamplerFilterMinmaxProperties":"VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceSamplerFilterMinmaxProperties" : ("VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT"); + DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(p, "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES) { const VkPhysicalDeviceShaderIntegerDotProductProperties* props = (const VkPhysicalDeviceShaderIntegerDotProductProperties*)structure; - DumpVkPhysicalDeviceShaderIntegerDotProductProperties(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceShaderIntegerDotProductProperties":"VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderIntegerDotProductProperties" : ("VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR"); + DumpVkPhysicalDeviceShaderIntegerDotProductProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderIntegerDotProductProperties(p, "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT) { const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT* props = (const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT*)structure; - DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(p, "VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT"; + DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT) { const VkPhysicalDeviceShaderObjectPropertiesEXT* props = (const VkPhysicalDeviceShaderObjectPropertiesEXT*)structure; - DumpVkPhysicalDeviceShaderObjectPropertiesEXT(p, "VkPhysicalDeviceShaderObjectPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceShaderObjectPropertiesEXT"; + DumpVkPhysicalDeviceShaderObjectPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT) { const VkPhysicalDeviceShaderTileImagePropertiesEXT* props = (const VkPhysicalDeviceShaderTileImagePropertiesEXT*)structure; - DumpVkPhysicalDeviceShaderTileImagePropertiesEXT(p, "VkPhysicalDeviceShaderTileImagePropertiesEXT", *props); + const char* name = "VkPhysicalDeviceShaderTileImagePropertiesEXT"; + DumpVkPhysicalDeviceShaderTileImagePropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES) { const VkPhysicalDeviceSubgroupProperties* props = (const VkPhysicalDeviceSubgroupProperties*)structure; - DumpVkPhysicalDeviceSubgroupProperties(p, "VkPhysicalDeviceSubgroupProperties", *props); + const char* name = "VkPhysicalDeviceSubgroupProperties"; + DumpVkPhysicalDeviceSubgroupProperties(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES) { const VkPhysicalDeviceSubgroupSizeControlProperties* props = (const VkPhysicalDeviceSubgroupSizeControlProperties*)structure; - DumpVkPhysicalDeviceSubgroupSizeControlProperties(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceSubgroupSizeControlProperties":"VkPhysicalDeviceSubgroupSizeControlPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceSubgroupSizeControlProperties" : ("VkPhysicalDeviceSubgroupSizeControlPropertiesEXT"); + DumpVkPhysicalDeviceSubgroupSizeControlProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSubgroupSizeControlProperties(p, "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES) { const VkPhysicalDeviceTexelBufferAlignmentProperties* props = (const VkPhysicalDeviceTexelBufferAlignmentProperties*)structure; - DumpVkPhysicalDeviceTexelBufferAlignmentProperties(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceTexelBufferAlignmentProperties":"VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceTexelBufferAlignmentProperties" : ("VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"); + DumpVkPhysicalDeviceTexelBufferAlignmentProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceTexelBufferAlignmentProperties(p, "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES) { const VkPhysicalDeviceTimelineSemaphoreProperties* props = (const VkPhysicalDeviceTimelineSemaphoreProperties*)structure; - DumpVkPhysicalDeviceTimelineSemaphoreProperties(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceTimelineSemaphoreProperties":"VkPhysicalDeviceTimelineSemaphorePropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceTimelineSemaphoreProperties" : ("VkPhysicalDeviceTimelineSemaphorePropertiesKHR"); + DumpVkPhysicalDeviceTimelineSemaphoreProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTimelineSemaphorePropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceTimelineSemaphoreProperties(p, "VkPhysicalDeviceTimelineSemaphorePropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT) { const VkPhysicalDeviceTransformFeedbackPropertiesEXT* props = (const VkPhysicalDeviceTransformFeedbackPropertiesEXT*)structure; - DumpVkPhysicalDeviceTransformFeedbackPropertiesEXT(p, "VkPhysicalDeviceTransformFeedbackPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceTransformFeedbackPropertiesEXT"; + DumpVkPhysicalDeviceTransformFeedbackPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES) { const VkPhysicalDeviceVertexAttributeDivisorProperties* props = (const VkPhysicalDeviceVertexAttributeDivisorProperties*)structure; - DumpVkPhysicalDeviceVertexAttributeDivisorProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceVertexAttributeDivisorProperties":"VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceVertexAttributeDivisorProperties" : ("VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR"); + DumpVkPhysicalDeviceVertexAttributeDivisorProperties(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceVertexAttributeDivisorProperties(p, "VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT) { const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT* props = (const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*)structure; - DumpVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(p, "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT", *props); + const char* name = "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT"; + DumpVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES) { const VkPhysicalDeviceVulkan11Properties* props = (const VkPhysicalDeviceVulkan11Properties*)structure; - DumpVkPhysicalDeviceVulkan11Properties(p, "VkPhysicalDeviceVulkan11Properties", *props); + const char* name = "VkPhysicalDeviceVulkan11Properties"; + DumpVkPhysicalDeviceVulkan11Properties(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES) { const VkPhysicalDeviceVulkan12Properties* props = (const VkPhysicalDeviceVulkan12Properties*)structure; - DumpVkPhysicalDeviceVulkan12Properties(p, "VkPhysicalDeviceVulkan12Properties", *props); + const char* name = "VkPhysicalDeviceVulkan12Properties"; + DumpVkPhysicalDeviceVulkan12Properties(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES) { const VkPhysicalDeviceVulkan13Properties* props = (const VkPhysicalDeviceVulkan13Properties*)structure; - DumpVkPhysicalDeviceVulkan13Properties(p, "VkPhysicalDeviceVulkan13Properties", *props); + const char* name = "VkPhysicalDeviceVulkan13Properties"; + DumpVkPhysicalDeviceVulkan13Properties(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES) { const VkPhysicalDeviceVulkan14Properties* props = (const VkPhysicalDeviceVulkan14Properties*)structure; - DumpVkPhysicalDeviceVulkan14Properties(p, "VkPhysicalDeviceVulkan14Properties", *props); + const char* name = "VkPhysicalDeviceVulkan14Properties"; + DumpVkPhysicalDeviceVulkan14Properties(p, name, *props); p.AddNewline(); } place = structure->pNext; @@ -6257,7 +6457,7 @@ struct phys_device_mem_props2_chain { phys_device_mem_props2_chain& operator=(phys_device_mem_props2_chain &&) = delete; void* start_of_chain = nullptr; VkPhysicalDeviceMemoryBudgetPropertiesEXT PhysicalDeviceMemoryBudgetPropertiesEXT{}; - void initialize_chain(AppGpu &gpu ) noexcept { + void initialize_chain(AppGpu &gpu) noexcept { PhysicalDeviceMemoryBudgetPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; std::vector chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_BUDGET_EXTENSION_NAME)) @@ -6449,7 +6649,7 @@ struct phys_device_features2_chain { VkPhysicalDeviceYcbcrImageArraysFeaturesEXT PhysicalDeviceYcbcrImageArraysFeaturesEXT{}; VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT{}; VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures{}; - void initialize_chain(AppGpu &gpu , bool show_promoted_structs) noexcept { + void initialize_chain(AppGpu &gpu, bool show_promoted_structs) noexcept { PhysicalDevice16BitStorageFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES; PhysicalDevice4444FormatsFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; PhysicalDevice8BitStorageFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES; @@ -7006,794 +7206,1247 @@ void chain_iterator_phys_device_features2(Printer &p, AppGpu &gpu, bool show_pro p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES) { const VkPhysicalDevice16BitStorageFeatures* props = (const VkPhysicalDevice16BitStorageFeatures*)structure; - DumpVkPhysicalDevice16BitStorageFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDevice16BitStorageFeatures":"VkPhysicalDevice16BitStorageFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDevice16BitStorageFeatures" : ("VkPhysicalDevice16BitStorageFeaturesKHR"); + DumpVkPhysicalDevice16BitStorageFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevice16BitStorageFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_16BIT_STORAGE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevice16BitStorageFeatures(p, "VkPhysicalDevice16BitStorageFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT) { const VkPhysicalDevice4444FormatsFeaturesEXT* props = (const VkPhysicalDevice4444FormatsFeaturesEXT*)structure; - DumpVkPhysicalDevice4444FormatsFeaturesEXT(p, "VkPhysicalDevice4444FormatsFeaturesEXT", *props); + const char* name = "VkPhysicalDevice4444FormatsFeaturesEXT"; + DumpVkPhysicalDevice4444FormatsFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES) { const VkPhysicalDevice8BitStorageFeatures* props = (const VkPhysicalDevice8BitStorageFeatures*)structure; - DumpVkPhysicalDevice8BitStorageFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDevice8BitStorageFeatures":"VkPhysicalDevice8BitStorageFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDevice8BitStorageFeatures" : ("VkPhysicalDevice8BitStorageFeaturesKHR"); + DumpVkPhysicalDevice8BitStorageFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevice8BitStorageFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_8BIT_STORAGE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevice8BitStorageFeatures(p, "VkPhysicalDevice8BitStorageFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT) { const VkPhysicalDeviceASTCDecodeFeaturesEXT* props = (const VkPhysicalDeviceASTCDecodeFeaturesEXT*)structure; - DumpVkPhysicalDeviceASTCDecodeFeaturesEXT(p, "VkPhysicalDeviceASTCDecodeFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceASTCDecodeFeaturesEXT"; + DumpVkPhysicalDeviceASTCDecodeFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR) { const VkPhysicalDeviceAccelerationStructureFeaturesKHR* props = (const VkPhysicalDeviceAccelerationStructureFeaturesKHR*)structure; - DumpVkPhysicalDeviceAccelerationStructureFeaturesKHR(p, "VkPhysicalDeviceAccelerationStructureFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceAccelerationStructureFeaturesKHR"; + DumpVkPhysicalDeviceAccelerationStructureFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT) { const VkPhysicalDeviceAddressBindingReportFeaturesEXT* props = (const VkPhysicalDeviceAddressBindingReportFeaturesEXT*)structure; - DumpVkPhysicalDeviceAddressBindingReportFeaturesEXT(p, "VkPhysicalDeviceAddressBindingReportFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceAddressBindingReportFeaturesEXT"; + DumpVkPhysicalDeviceAddressBindingReportFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT) { const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT* props = (const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT*)structure; - DumpVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(p, "VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT"; + DumpVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT) { const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT* props = (const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT*)structure; - DumpVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT(p, "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT"; + DumpVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT) { const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* props = (const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*)structure; - DumpVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(p, "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT"; + DumpVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT) { const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT* props = (const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT*)structure; - DumpVkPhysicalDeviceBorderColorSwizzleFeaturesEXT(p, "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT"; + DumpVkPhysicalDeviceBorderColorSwizzleFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES) { const VkPhysicalDeviceBufferDeviceAddressFeatures* props = (const VkPhysicalDeviceBufferDeviceAddressFeatures*)structure; - DumpVkPhysicalDeviceBufferDeviceAddressFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceBufferDeviceAddressFeatures":"VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceBufferDeviceAddressFeatures" : ("VkPhysicalDeviceBufferDeviceAddressFeaturesKHR"); + DumpVkPhysicalDeviceBufferDeviceAddressFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceBufferDeviceAddressFeatures(p, "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT) { const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT* props = (const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT*)structure; - DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(p, "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME) ? "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT" : ("VkPhysicalDeviceBufferAddressFeaturesEXT"); + DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceBufferAddressFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(p, "VkPhysicalDeviceBufferAddressFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT) { const VkPhysicalDeviceColorWriteEnableFeaturesEXT* props = (const VkPhysicalDeviceColorWriteEnableFeaturesEXT*)structure; - DumpVkPhysicalDeviceColorWriteEnableFeaturesEXT(p, "VkPhysicalDeviceColorWriteEnableFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceColorWriteEnableFeaturesEXT"; + DumpVkPhysicalDeviceColorWriteEnableFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR) { const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR* props = (const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR*)structure; - DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(p, "VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME) ? "VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR" : ("VkPhysicalDeviceComputeShaderDerivativesFeaturesNV"); + DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(p, "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT) { const VkPhysicalDeviceConditionalRenderingFeaturesEXT* props = (const VkPhysicalDeviceConditionalRenderingFeaturesEXT*)structure; - DumpVkPhysicalDeviceConditionalRenderingFeaturesEXT(p, "VkPhysicalDeviceConditionalRenderingFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceConditionalRenderingFeaturesEXT"; + DumpVkPhysicalDeviceConditionalRenderingFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR) { const VkPhysicalDeviceCooperativeMatrixFeaturesKHR* props = (const VkPhysicalDeviceCooperativeMatrixFeaturesKHR*)structure; - DumpVkPhysicalDeviceCooperativeMatrixFeaturesKHR(p, "VkPhysicalDeviceCooperativeMatrixFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceCooperativeMatrixFeaturesKHR"; + DumpVkPhysicalDeviceCooperativeMatrixFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR) { const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR* props = (const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR*)structure; - DumpVkPhysicalDeviceCopyMemoryIndirectFeaturesKHR(p, "VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR"; + DumpVkPhysicalDeviceCopyMemoryIndirectFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT) { const VkPhysicalDeviceCustomBorderColorFeaturesEXT* props = (const VkPhysicalDeviceCustomBorderColorFeaturesEXT*)structure; - DumpVkPhysicalDeviceCustomBorderColorFeaturesEXT(p, "VkPhysicalDeviceCustomBorderColorFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceCustomBorderColorFeaturesEXT"; + DumpVkPhysicalDeviceCustomBorderColorFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT) { const VkPhysicalDeviceDepthBiasControlFeaturesEXT* props = (const VkPhysicalDeviceDepthBiasControlFeaturesEXT*)structure; - DumpVkPhysicalDeviceDepthBiasControlFeaturesEXT(p, "VkPhysicalDeviceDepthBiasControlFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDepthBiasControlFeaturesEXT"; + DumpVkPhysicalDeviceDepthBiasControlFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT) { const VkPhysicalDeviceDepthClampControlFeaturesEXT* props = (const VkPhysicalDeviceDepthClampControlFeaturesEXT*)structure; - DumpVkPhysicalDeviceDepthClampControlFeaturesEXT(p, "VkPhysicalDeviceDepthClampControlFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDepthClampControlFeaturesEXT"; + DumpVkPhysicalDeviceDepthClampControlFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR) { const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR* props = (const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR*)structure; - DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(p, "VkPhysicalDeviceDepthClampZeroOneFeaturesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME) ? "VkPhysicalDeviceDepthClampZeroOneFeaturesKHR" : ("VkPhysicalDeviceDepthClampZeroOneFeaturesEXT"); + DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(p, "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT) { const VkPhysicalDeviceDepthClipControlFeaturesEXT* props = (const VkPhysicalDeviceDepthClipControlFeaturesEXT*)structure; - DumpVkPhysicalDeviceDepthClipControlFeaturesEXT(p, "VkPhysicalDeviceDepthClipControlFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDepthClipControlFeaturesEXT"; + DumpVkPhysicalDeviceDepthClipControlFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT) { const VkPhysicalDeviceDepthClipEnableFeaturesEXT* props = (const VkPhysicalDeviceDepthClipEnableFeaturesEXT*)structure; - DumpVkPhysicalDeviceDepthClipEnableFeaturesEXT(p, "VkPhysicalDeviceDepthClipEnableFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDepthClipEnableFeaturesEXT"; + DumpVkPhysicalDeviceDepthClipEnableFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT) { const VkPhysicalDeviceDescriptorBufferFeaturesEXT* props = (const VkPhysicalDeviceDescriptorBufferFeaturesEXT*)structure; - DumpVkPhysicalDeviceDescriptorBufferFeaturesEXT(p, "VkPhysicalDeviceDescriptorBufferFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDescriptorBufferFeaturesEXT"; + DumpVkPhysicalDeviceDescriptorBufferFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES) { const VkPhysicalDeviceDescriptorIndexingFeatures* props = (const VkPhysicalDeviceDescriptorIndexingFeatures*)structure; - DumpVkPhysicalDeviceDescriptorIndexingFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceDescriptorIndexingFeatures":"VkPhysicalDeviceDescriptorIndexingFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDescriptorIndexingFeatures" : ("VkPhysicalDeviceDescriptorIndexingFeaturesEXT"); + DumpVkPhysicalDeviceDescriptorIndexingFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDescriptorIndexingFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDescriptorIndexingFeatures(p, "VkPhysicalDeviceDescriptorIndexingFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT) { const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT* props = (const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT*)structure; - DumpVkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(p, "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT"; + DumpVkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT) { const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT* props = (const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT*)structure; - DumpVkPhysicalDeviceDeviceMemoryReportFeaturesEXT(p, "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT"; + DumpVkPhysicalDeviceDeviceMemoryReportFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES) { const VkPhysicalDeviceDynamicRenderingFeatures* props = (const VkPhysicalDeviceDynamicRenderingFeatures*)structure; - DumpVkPhysicalDeviceDynamicRenderingFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceDynamicRenderingFeatures":"VkPhysicalDeviceDynamicRenderingFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceDynamicRenderingFeatures" : ("VkPhysicalDeviceDynamicRenderingFeaturesKHR"); + DumpVkPhysicalDeviceDynamicRenderingFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDynamicRenderingFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDynamicRenderingFeatures(p, "VkPhysicalDeviceDynamicRenderingFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES) { const VkPhysicalDeviceDynamicRenderingLocalReadFeatures* props = (const VkPhysicalDeviceDynamicRenderingLocalReadFeatures*)structure; - DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceDynamicRenderingLocalReadFeatures":"VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceDynamicRenderingLocalReadFeatures" : ("VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR"); + DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(p, "VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT) { const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT* props = (const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT*)structure; - DumpVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(p, "VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT"; + DumpVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT) { const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT* props = (const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT*)structure; - DumpVkPhysicalDeviceExtendedDynamicState2FeaturesEXT(p, "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT", *props); + const char* name = "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT"; + DumpVkPhysicalDeviceExtendedDynamicState2FeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT) { const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT* props = (const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT*)structure; - DumpVkPhysicalDeviceExtendedDynamicState3FeaturesEXT(p, "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT", *props); + const char* name = "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT"; + DumpVkPhysicalDeviceExtendedDynamicState3FeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT) { const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT* props = (const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT*)structure; - DumpVkPhysicalDeviceExtendedDynamicStateFeaturesEXT(p, "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT"; + DumpVkPhysicalDeviceExtendedDynamicStateFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT) { const VkPhysicalDeviceFaultFeaturesEXT* props = (const VkPhysicalDeviceFaultFeaturesEXT*)structure; - DumpVkPhysicalDeviceFaultFeaturesEXT(p, "VkPhysicalDeviceFaultFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceFaultFeaturesEXT"; + DumpVkPhysicalDeviceFaultFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT) { const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT* props = (const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT*)structure; - DumpVkPhysicalDeviceFragmentDensityMap2FeaturesEXT(p, "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT", *props); + const char* name = "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT"; + DumpVkPhysicalDeviceFragmentDensityMap2FeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT) { const VkPhysicalDeviceFragmentDensityMapFeaturesEXT* props = (const VkPhysicalDeviceFragmentDensityMapFeaturesEXT*)structure; - DumpVkPhysicalDeviceFragmentDensityMapFeaturesEXT(p, "VkPhysicalDeviceFragmentDensityMapFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceFragmentDensityMapFeaturesEXT"; + DumpVkPhysicalDeviceFragmentDensityMapFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT) { const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT* props = (const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT*)structure; - DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(p, "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME) ? "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT" : ("VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM"); + DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(p, "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR) { const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR* props = (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR*)structure; - DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(p, "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME) ? "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR" : ("VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV"); + DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(p, "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT) { const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT* props = (const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*)structure; - DumpVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(p, "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT"; + DumpVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR) { const VkPhysicalDeviceFragmentShadingRateFeaturesKHR* props = (const VkPhysicalDeviceFragmentShadingRateFeaturesKHR*)structure; - DumpVkPhysicalDeviceFragmentShadingRateFeaturesKHR(p, "VkPhysicalDeviceFragmentShadingRateFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceFragmentShadingRateFeaturesKHR"; + DumpVkPhysicalDeviceFragmentShadingRateFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT) { const VkPhysicalDeviceFrameBoundaryFeaturesEXT* props = (const VkPhysicalDeviceFrameBoundaryFeaturesEXT*)structure; - DumpVkPhysicalDeviceFrameBoundaryFeaturesEXT(p, "VkPhysicalDeviceFrameBoundaryFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceFrameBoundaryFeaturesEXT"; + DumpVkPhysicalDeviceFrameBoundaryFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES) { const VkPhysicalDeviceGlobalPriorityQueryFeatures* props = (const VkPhysicalDeviceGlobalPriorityQueryFeatures*)structure; - DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceGlobalPriorityQueryFeatures":"VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceGlobalPriorityQueryFeatures" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME) ? "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR" : ("VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT")); + DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT) { const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT* props = (const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT*)structure; - DumpVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(p, "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT"; + DumpVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES) { const VkPhysicalDeviceHostImageCopyFeatures* props = (const VkPhysicalDeviceHostImageCopyFeatures*)structure; - DumpVkPhysicalDeviceHostImageCopyFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceHostImageCopyFeatures":"VkPhysicalDeviceHostImageCopyFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceHostImageCopyFeatures" : ("VkPhysicalDeviceHostImageCopyFeaturesEXT"); + DumpVkPhysicalDeviceHostImageCopyFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceHostImageCopyFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceHostImageCopyFeatures(p, "VkPhysicalDeviceHostImageCopyFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES) { const VkPhysicalDeviceHostQueryResetFeatures* props = (const VkPhysicalDeviceHostQueryResetFeatures*)structure; - DumpVkPhysicalDeviceHostQueryResetFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceHostQueryResetFeatures":"VkPhysicalDeviceHostQueryResetFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceHostQueryResetFeatures" : ("VkPhysicalDeviceHostQueryResetFeaturesEXT"); + DumpVkPhysicalDeviceHostQueryResetFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceHostQueryResetFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceHostQueryResetFeatures(p, "VkPhysicalDeviceHostQueryResetFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT) { const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT* props = (const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT*)structure; - DumpVkPhysicalDeviceImage2DViewOf3DFeaturesEXT(p, "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT"; + DumpVkPhysicalDeviceImage2DViewOf3DFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT) { const VkPhysicalDeviceImageCompressionControlFeaturesEXT* props = (const VkPhysicalDeviceImageCompressionControlFeaturesEXT*)structure; - DumpVkPhysicalDeviceImageCompressionControlFeaturesEXT(p, "VkPhysicalDeviceImageCompressionControlFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceImageCompressionControlFeaturesEXT"; + DumpVkPhysicalDeviceImageCompressionControlFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT) { const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT* props = (const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT*)structure; - DumpVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(p, "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT"; + DumpVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES) { const VkPhysicalDeviceImageRobustnessFeatures* props = (const VkPhysicalDeviceImageRobustnessFeatures*)structure; - DumpVkPhysicalDeviceImageRobustnessFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceImageRobustnessFeatures":"VkPhysicalDeviceImageRobustnessFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceImageRobustnessFeatures" : ("VkPhysicalDeviceImageRobustnessFeaturesEXT"); + DumpVkPhysicalDeviceImageRobustnessFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceImageRobustnessFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceImageRobustnessFeatures(p, "VkPhysicalDeviceImageRobustnessFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT) { const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT* props = (const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT*)structure; - DumpVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(p, "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT"; + DumpVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT) { const VkPhysicalDeviceImageViewMinLodFeaturesEXT* props = (const VkPhysicalDeviceImageViewMinLodFeaturesEXT*)structure; - DumpVkPhysicalDeviceImageViewMinLodFeaturesEXT(p, "VkPhysicalDeviceImageViewMinLodFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceImageViewMinLodFeaturesEXT"; + DumpVkPhysicalDeviceImageViewMinLodFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES) { const VkPhysicalDeviceImagelessFramebufferFeatures* props = (const VkPhysicalDeviceImagelessFramebufferFeatures*)structure; - DumpVkPhysicalDeviceImagelessFramebufferFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceImagelessFramebufferFeatures":"VkPhysicalDeviceImagelessFramebufferFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceImagelessFramebufferFeatures" : ("VkPhysicalDeviceImagelessFramebufferFeaturesKHR"); + DumpVkPhysicalDeviceImagelessFramebufferFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceImagelessFramebufferFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceImagelessFramebufferFeatures(p, "VkPhysicalDeviceImagelessFramebufferFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES) { const VkPhysicalDeviceIndexTypeUint8Features* props = (const VkPhysicalDeviceIndexTypeUint8Features*)structure; - DumpVkPhysicalDeviceIndexTypeUint8Features(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceIndexTypeUint8Features":"VkPhysicalDeviceIndexTypeUint8FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceIndexTypeUint8Features" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME) ? "VkPhysicalDeviceIndexTypeUint8FeaturesKHR" : ("VkPhysicalDeviceIndexTypeUint8FeaturesEXT")); + DumpVkPhysicalDeviceIndexTypeUint8Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceIndexTypeUint8FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceIndexTypeUint8Features(p, "VkPhysicalDeviceIndexTypeUint8FeaturesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceIndexTypeUint8FeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceIndexTypeUint8Features(p, "VkPhysicalDeviceIndexTypeUint8FeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES) { const VkPhysicalDeviceInlineUniformBlockFeatures* props = (const VkPhysicalDeviceInlineUniformBlockFeatures*)structure; - DumpVkPhysicalDeviceInlineUniformBlockFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceInlineUniformBlockFeatures":"VkPhysicalDeviceInlineUniformBlockFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceInlineUniformBlockFeatures" : ("VkPhysicalDeviceInlineUniformBlockFeaturesEXT"); + DumpVkPhysicalDeviceInlineUniformBlockFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceInlineUniformBlockFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceInlineUniformBlockFeatures(p, "VkPhysicalDeviceInlineUniformBlockFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT) { const VkPhysicalDeviceLegacyDitheringFeaturesEXT* props = (const VkPhysicalDeviceLegacyDitheringFeaturesEXT*)structure; - DumpVkPhysicalDeviceLegacyDitheringFeaturesEXT(p, "VkPhysicalDeviceLegacyDitheringFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceLegacyDitheringFeaturesEXT"; + DumpVkPhysicalDeviceLegacyDitheringFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT) { const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT* props = (const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT*)structure; - DumpVkPhysicalDeviceLegacyVertexAttributesFeaturesEXT(p, "VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT"; + DumpVkPhysicalDeviceLegacyVertexAttributesFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES) { const VkPhysicalDeviceLineRasterizationFeatures* props = (const VkPhysicalDeviceLineRasterizationFeatures*)structure; - DumpVkPhysicalDeviceLineRasterizationFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceLineRasterizationFeatures":"VkPhysicalDeviceLineRasterizationFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceLineRasterizationFeatures" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME) ? "VkPhysicalDeviceLineRasterizationFeaturesKHR" : ("VkPhysicalDeviceLineRasterizationFeaturesEXT")); + DumpVkPhysicalDeviceLineRasterizationFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceLineRasterizationFeatures(p, "VkPhysicalDeviceLineRasterizationFeaturesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceLineRasterizationFeatures(p, "VkPhysicalDeviceLineRasterizationFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES) { const VkPhysicalDeviceMaintenance4Features* props = (const VkPhysicalDeviceMaintenance4Features*)structure; - DumpVkPhysicalDeviceMaintenance4Features(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceMaintenance4Features":"VkPhysicalDeviceMaintenance4FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceMaintenance4Features" : ("VkPhysicalDeviceMaintenance4FeaturesKHR"); + DumpVkPhysicalDeviceMaintenance4Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance4FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance4Features(p, "VkPhysicalDeviceMaintenance4FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES) { const VkPhysicalDeviceMaintenance5Features* props = (const VkPhysicalDeviceMaintenance5Features*)structure; - DumpVkPhysicalDeviceMaintenance5Features(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceMaintenance5Features":"VkPhysicalDeviceMaintenance5FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance5Features" : ("VkPhysicalDeviceMaintenance5FeaturesKHR"); + DumpVkPhysicalDeviceMaintenance5Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance5FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_5_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance5Features(p, "VkPhysicalDeviceMaintenance5FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES) { const VkPhysicalDeviceMaintenance6Features* props = (const VkPhysicalDeviceMaintenance6Features*)structure; - DumpVkPhysicalDeviceMaintenance6Features(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceMaintenance6Features":"VkPhysicalDeviceMaintenance6FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance6Features" : ("VkPhysicalDeviceMaintenance6FeaturesKHR"); + DumpVkPhysicalDeviceMaintenance6Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance6FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_6_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMaintenance6Features(p, "VkPhysicalDeviceMaintenance6FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR) { const VkPhysicalDeviceMaintenance7FeaturesKHR* props = (const VkPhysicalDeviceMaintenance7FeaturesKHR*)structure; - DumpVkPhysicalDeviceMaintenance7FeaturesKHR(p, "VkPhysicalDeviceMaintenance7FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceMaintenance7FeaturesKHR"; + DumpVkPhysicalDeviceMaintenance7FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR) { const VkPhysicalDeviceMaintenance8FeaturesKHR* props = (const VkPhysicalDeviceMaintenance8FeaturesKHR*)structure; - DumpVkPhysicalDeviceMaintenance8FeaturesKHR(p, "VkPhysicalDeviceMaintenance8FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceMaintenance8FeaturesKHR"; + DumpVkPhysicalDeviceMaintenance8FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR) { const VkPhysicalDeviceMaintenance9FeaturesKHR* props = (const VkPhysicalDeviceMaintenance9FeaturesKHR*)structure; - DumpVkPhysicalDeviceMaintenance9FeaturesKHR(p, "VkPhysicalDeviceMaintenance9FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceMaintenance9FeaturesKHR"; + DumpVkPhysicalDeviceMaintenance9FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT) { const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT* props = (const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT*)structure; - DumpVkPhysicalDeviceMapMemoryPlacedFeaturesEXT(p, "VkPhysicalDeviceMapMemoryPlacedFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceMapMemoryPlacedFeaturesEXT"; + DumpVkPhysicalDeviceMapMemoryPlacedFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT) { const VkPhysicalDeviceMemoryPriorityFeaturesEXT* props = (const VkPhysicalDeviceMemoryPriorityFeaturesEXT*)structure; - DumpVkPhysicalDeviceMemoryPriorityFeaturesEXT(p, "VkPhysicalDeviceMemoryPriorityFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceMemoryPriorityFeaturesEXT"; + DumpVkPhysicalDeviceMemoryPriorityFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT) { const VkPhysicalDeviceMeshShaderFeaturesEXT* props = (const VkPhysicalDeviceMeshShaderFeaturesEXT*)structure; - DumpVkPhysicalDeviceMeshShaderFeaturesEXT(p, "VkPhysicalDeviceMeshShaderFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceMeshShaderFeaturesEXT"; + DumpVkPhysicalDeviceMeshShaderFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT) { const VkPhysicalDeviceMultiDrawFeaturesEXT* props = (const VkPhysicalDeviceMultiDrawFeaturesEXT*)structure; - DumpVkPhysicalDeviceMultiDrawFeaturesEXT(p, "VkPhysicalDeviceMultiDrawFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceMultiDrawFeaturesEXT"; + DumpVkPhysicalDeviceMultiDrawFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT) { const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT* props = (const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT*)structure; - DumpVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(p, "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT"; + DumpVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES) { const VkPhysicalDeviceMultiviewFeatures* props = (const VkPhysicalDeviceMultiviewFeatures*)structure; - DumpVkPhysicalDeviceMultiviewFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceMultiviewFeatures":"VkPhysicalDeviceMultiviewFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceMultiviewFeatures" : ("VkPhysicalDeviceMultiviewFeaturesKHR"); + DumpVkPhysicalDeviceMultiviewFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMultiviewFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MULTIVIEW_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMultiviewFeatures(p, "VkPhysicalDeviceMultiviewFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT) { const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT* props = (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT*)structure; - DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(p, "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME) ? "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT" : ("VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE"); + DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(p, "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT) { const VkPhysicalDeviceNestedCommandBufferFeaturesEXT* props = (const VkPhysicalDeviceNestedCommandBufferFeaturesEXT*)structure; - DumpVkPhysicalDeviceNestedCommandBufferFeaturesEXT(p, "VkPhysicalDeviceNestedCommandBufferFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceNestedCommandBufferFeaturesEXT"; + DumpVkPhysicalDeviceNestedCommandBufferFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT) { const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT* props = (const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT*)structure; - DumpVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT(p, "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT"; + DumpVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT) { const VkPhysicalDeviceOpacityMicromapFeaturesEXT* props = (const VkPhysicalDeviceOpacityMicromapFeaturesEXT*)structure; - DumpVkPhysicalDeviceOpacityMicromapFeaturesEXT(p, "VkPhysicalDeviceOpacityMicromapFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceOpacityMicromapFeaturesEXT"; + DumpVkPhysicalDeviceOpacityMicromapFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT) { const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT* props = (const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT*)structure; - DumpVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(p, "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT", *props); + const char* name = "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT"; + DumpVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR) { const VkPhysicalDevicePerformanceQueryFeaturesKHR* props = (const VkPhysicalDevicePerformanceQueryFeaturesKHR*)structure; - DumpVkPhysicalDevicePerformanceQueryFeaturesKHR(p, "VkPhysicalDevicePerformanceQueryFeaturesKHR", *props); + const char* name = "VkPhysicalDevicePerformanceQueryFeaturesKHR"; + DumpVkPhysicalDevicePerformanceQueryFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR) { const VkPhysicalDevicePipelineBinaryFeaturesKHR* props = (const VkPhysicalDevicePipelineBinaryFeaturesKHR*)structure; - DumpVkPhysicalDevicePipelineBinaryFeaturesKHR(p, "VkPhysicalDevicePipelineBinaryFeaturesKHR", *props); + const char* name = "VkPhysicalDevicePipelineBinaryFeaturesKHR"; + DumpVkPhysicalDevicePipelineBinaryFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES) { const VkPhysicalDevicePipelineCreationCacheControlFeatures* props = (const VkPhysicalDevicePipelineCreationCacheControlFeatures*)structure; - DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDevicePipelineCreationCacheControlFeatures":"VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDevicePipelineCreationCacheControlFeatures" : ("VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT"); + DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(p, "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR) { const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR* props = (const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR*)structure; - DumpVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(p, "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", *props); + const char* name = "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR"; + DumpVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT) { const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT* props = (const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT*)structure; - DumpVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(p, "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT", *props); + const char* name = "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT"; + DumpVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT) { const VkPhysicalDevicePipelinePropertiesFeaturesEXT* props = (const VkPhysicalDevicePipelinePropertiesFeaturesEXT*)structure; - DumpVkPhysicalDevicePipelinePropertiesFeaturesEXT(p, "VkPhysicalDevicePipelinePropertiesFeaturesEXT", *props); + const char* name = "VkPhysicalDevicePipelinePropertiesFeaturesEXT"; + DumpVkPhysicalDevicePipelinePropertiesFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES) { const VkPhysicalDevicePipelineProtectedAccessFeatures* props = (const VkPhysicalDevicePipelineProtectedAccessFeatures*)structure; - DumpVkPhysicalDevicePipelineProtectedAccessFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDevicePipelineProtectedAccessFeatures":"VkPhysicalDevicePipelineProtectedAccessFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePipelineProtectedAccessFeatures" : ("VkPhysicalDevicePipelineProtectedAccessFeaturesEXT"); + DumpVkPhysicalDevicePipelineProtectedAccessFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePipelineProtectedAccessFeatures(p, "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES) { const VkPhysicalDevicePipelineRobustnessFeatures* props = (const VkPhysicalDevicePipelineRobustnessFeatures*)structure; - DumpVkPhysicalDevicePipelineRobustnessFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDevicePipelineRobustnessFeatures":"VkPhysicalDevicePipelineRobustnessFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePipelineRobustnessFeatures" : ("VkPhysicalDevicePipelineRobustnessFeaturesEXT"); + DumpVkPhysicalDevicePipelineRobustnessFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineRobustnessFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePipelineRobustnessFeatures(p, "VkPhysicalDevicePipelineRobustnessFeaturesEXT", *props); + } p.AddNewline(); } #ifdef VK_ENABLE_BETA_EXTENSIONS if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR && p.Type() != OutputType::json) { const VkPhysicalDevicePortabilitySubsetFeaturesKHR* props = (const VkPhysicalDevicePortabilitySubsetFeaturesKHR*)structure; - DumpVkPhysicalDevicePortabilitySubsetFeaturesKHR(p, "VkPhysicalDevicePortabilitySubsetFeaturesKHR", *props); + const char* name = "VkPhysicalDevicePortabilitySubsetFeaturesKHR"; + DumpVkPhysicalDevicePortabilitySubsetFeaturesKHR(p, name, *props); p.AddNewline(); } #endif // VK_ENABLE_BETA_EXTENSIONS if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR) { const VkPhysicalDevicePresentId2FeaturesKHR* props = (const VkPhysicalDevicePresentId2FeaturesKHR*)structure; - DumpVkPhysicalDevicePresentId2FeaturesKHR(p, "VkPhysicalDevicePresentId2FeaturesKHR", *props); + const char* name = "VkPhysicalDevicePresentId2FeaturesKHR"; + DumpVkPhysicalDevicePresentId2FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR) { const VkPhysicalDevicePresentIdFeaturesKHR* props = (const VkPhysicalDevicePresentIdFeaturesKHR*)structure; - DumpVkPhysicalDevicePresentIdFeaturesKHR(p, "VkPhysicalDevicePresentIdFeaturesKHR", *props); + const char* name = "VkPhysicalDevicePresentIdFeaturesKHR"; + DumpVkPhysicalDevicePresentIdFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR) { const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR* props = (const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR*)structure; - DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(p, "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME) ? "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR" : ("VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT"); + DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(p, "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR) { const VkPhysicalDevicePresentWait2FeaturesKHR* props = (const VkPhysicalDevicePresentWait2FeaturesKHR*)structure; - DumpVkPhysicalDevicePresentWait2FeaturesKHR(p, "VkPhysicalDevicePresentWait2FeaturesKHR", *props); + const char* name = "VkPhysicalDevicePresentWait2FeaturesKHR"; + DumpVkPhysicalDevicePresentWait2FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR) { const VkPhysicalDevicePresentWaitFeaturesKHR* props = (const VkPhysicalDevicePresentWaitFeaturesKHR*)structure; - DumpVkPhysicalDevicePresentWaitFeaturesKHR(p, "VkPhysicalDevicePresentWaitFeaturesKHR", *props); + const char* name = "VkPhysicalDevicePresentWaitFeaturesKHR"; + DumpVkPhysicalDevicePresentWaitFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT) { const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT* props = (const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT*)structure; - DumpVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(p, "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT", *props); + const char* name = "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT"; + DumpVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT) { const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT* props = (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT*)structure; - DumpVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(p, "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT", *props); + const char* name = "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT"; + DumpVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES) { const VkPhysicalDevicePrivateDataFeatures* props = (const VkPhysicalDevicePrivateDataFeatures*)structure; - DumpVkPhysicalDevicePrivateDataFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDevicePrivateDataFeatures":"VkPhysicalDevicePrivateDataFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDevicePrivateDataFeatures" : ("VkPhysicalDevicePrivateDataFeaturesEXT"); + DumpVkPhysicalDevicePrivateDataFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePrivateDataFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIVATE_DATA_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDevicePrivateDataFeatures(p, "VkPhysicalDevicePrivateDataFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES) { const VkPhysicalDeviceProtectedMemoryFeatures* props = (const VkPhysicalDeviceProtectedMemoryFeatures*)structure; - DumpVkPhysicalDeviceProtectedMemoryFeatures(p, "VkPhysicalDeviceProtectedMemoryFeatures", *props); + const char* name = "VkPhysicalDeviceProtectedMemoryFeatures"; + DumpVkPhysicalDeviceProtectedMemoryFeatures(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT) { const VkPhysicalDeviceProvokingVertexFeaturesEXT* props = (const VkPhysicalDeviceProvokingVertexFeaturesEXT*)structure; - DumpVkPhysicalDeviceProvokingVertexFeaturesEXT(p, "VkPhysicalDeviceProvokingVertexFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceProvokingVertexFeaturesEXT"; + DumpVkPhysicalDeviceProvokingVertexFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT) { const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT* props = (const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT*)structure; - DumpVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(p, "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT"; + DumpVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT) { const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT* props = (const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT*)structure; - DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(p, "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME) ? "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT" : ("VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM"); + DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(p, "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR) { const VkPhysicalDeviceRayQueryFeaturesKHR* props = (const VkPhysicalDeviceRayQueryFeaturesKHR*)structure; - DumpVkPhysicalDeviceRayQueryFeaturesKHR(p, "VkPhysicalDeviceRayQueryFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceRayQueryFeaturesKHR"; + DumpVkPhysicalDeviceRayQueryFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR) { const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR* props = (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR*)structure; - DumpVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR(p, "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR"; + DumpVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR) { const VkPhysicalDeviceRayTracingPipelineFeaturesKHR* props = (const VkPhysicalDeviceRayTracingPipelineFeaturesKHR*)structure; - DumpVkPhysicalDeviceRayTracingPipelineFeaturesKHR(p, "VkPhysicalDeviceRayTracingPipelineFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceRayTracingPipelineFeaturesKHR"; + DumpVkPhysicalDeviceRayTracingPipelineFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR) { const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR* props = (const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR*)structure; - DumpVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR(p, "VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR"; + DumpVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR) { const VkPhysicalDeviceRobustness2FeaturesKHR* props = (const VkPhysicalDeviceRobustness2FeaturesKHR*)structure; - DumpVkPhysicalDeviceRobustness2FeaturesKHR(p, "VkPhysicalDeviceRobustness2FeaturesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) ? "VkPhysicalDeviceRobustness2FeaturesKHR" : ("VkPhysicalDeviceRobustness2FeaturesEXT"); + DumpVkPhysicalDeviceRobustness2FeaturesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceRobustness2FeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceRobustness2FeaturesKHR(p, "VkPhysicalDeviceRobustness2FeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES) { const VkPhysicalDeviceSamplerYcbcrConversionFeatures* props = (const VkPhysicalDeviceSamplerYcbcrConversionFeatures*)structure; - DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceSamplerYcbcrConversionFeatures":"VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceSamplerYcbcrConversionFeatures" : ("VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR"); + DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(p, "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES) { const VkPhysicalDeviceScalarBlockLayoutFeatures* props = (const VkPhysicalDeviceScalarBlockLayoutFeatures*)structure; - DumpVkPhysicalDeviceScalarBlockLayoutFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceScalarBlockLayoutFeatures":"VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceScalarBlockLayoutFeatures" : ("VkPhysicalDeviceScalarBlockLayoutFeaturesEXT"); + DumpVkPhysicalDeviceScalarBlockLayoutFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceScalarBlockLayoutFeatures(p, "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES) { const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures* props = (const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures*)structure; - DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures":"VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures" : ("VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR"); + DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(p, "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT) { const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT* props = (const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(p, "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT"; + DumpVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT) { const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT* props = (const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderAtomicFloatFeaturesEXT(p, "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT"; + DumpVkPhysicalDeviceShaderAtomicFloatFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES) { const VkPhysicalDeviceShaderAtomicInt64Features* props = (const VkPhysicalDeviceShaderAtomicInt64Features*)structure; - DumpVkPhysicalDeviceShaderAtomicInt64Features(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceShaderAtomicInt64Features":"VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceShaderAtomicInt64Features" : ("VkPhysicalDeviceShaderAtomicInt64FeaturesKHR"); + DumpVkPhysicalDeviceShaderAtomicInt64Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderAtomicInt64Features(p, "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR) { const VkPhysicalDeviceShaderBfloat16FeaturesKHR* props = (const VkPhysicalDeviceShaderBfloat16FeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderBfloat16FeaturesKHR(p, "VkPhysicalDeviceShaderBfloat16FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderBfloat16FeaturesKHR"; + DumpVkPhysicalDeviceShaderBfloat16FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR) { const VkPhysicalDeviceShaderClockFeaturesKHR* props = (const VkPhysicalDeviceShaderClockFeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderClockFeaturesKHR(p, "VkPhysicalDeviceShaderClockFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderClockFeaturesKHR"; + DumpVkPhysicalDeviceShaderClockFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES) { const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures* props = (const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures*)structure; - DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures":"VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures" : ("VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"); + DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(p, "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES) { const VkPhysicalDeviceShaderDrawParametersFeatures* props = (const VkPhysicalDeviceShaderDrawParametersFeatures*)structure; - DumpVkPhysicalDeviceShaderDrawParametersFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceShaderDrawParametersFeatures":"VkPhysicalDeviceShaderDrawParameterFeatures", *props); + const char* name = "VkPhysicalDeviceShaderDrawParametersFeatures"; + DumpVkPhysicalDeviceShaderDrawParametersFeatures(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES) { const VkPhysicalDeviceShaderExpectAssumeFeatures* props = (const VkPhysicalDeviceShaderExpectAssumeFeatures*)structure; - DumpVkPhysicalDeviceShaderExpectAssumeFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceShaderExpectAssumeFeatures":"VkPhysicalDeviceShaderExpectAssumeFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceShaderExpectAssumeFeatures" : ("VkPhysicalDeviceShaderExpectAssumeFeaturesKHR"); + DumpVkPhysicalDeviceShaderExpectAssumeFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderExpectAssumeFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderExpectAssumeFeatures(p, "VkPhysicalDeviceShaderExpectAssumeFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES) { const VkPhysicalDeviceShaderFloat16Int8Features* props = (const VkPhysicalDeviceShaderFloat16Int8Features*)structure; - DumpVkPhysicalDeviceShaderFloat16Int8Features(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceShaderFloat16Int8Features":"VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceShaderFloat16Int8Features" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME) ? "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR" : ("VkPhysicalDeviceFloat16Int8FeaturesKHR")); + DumpVkPhysicalDeviceShaderFloat16Int8Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderFloat16Int8Features(p, "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFloat16Int8FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderFloat16Int8Features(p, "VkPhysicalDeviceFloat16Int8FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT) { const VkPhysicalDeviceShaderFloat8FeaturesEXT* props = (const VkPhysicalDeviceShaderFloat8FeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderFloat8FeaturesEXT(p, "VkPhysicalDeviceShaderFloat8FeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderFloat8FeaturesEXT"; + DumpVkPhysicalDeviceShaderFloat8FeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES) { const VkPhysicalDeviceShaderFloatControls2Features* props = (const VkPhysicalDeviceShaderFloatControls2Features*)structure; - DumpVkPhysicalDeviceShaderFloatControls2Features(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceShaderFloatControls2Features":"VkPhysicalDeviceShaderFloatControls2FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceShaderFloatControls2Features" : ("VkPhysicalDeviceShaderFloatControls2FeaturesKHR"); + DumpVkPhysicalDeviceShaderFloatControls2Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderFloatControls2FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderFloatControls2Features(p, "VkPhysicalDeviceShaderFloatControls2FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT) { const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT* props = (const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(p, "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT"; + DumpVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES) { const VkPhysicalDeviceShaderIntegerDotProductFeatures* props = (const VkPhysicalDeviceShaderIntegerDotProductFeatures*)structure; - DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceShaderIntegerDotProductFeatures":"VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderIntegerDotProductFeatures" : ("VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR"); + DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(p, "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR) { const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR* props = (const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR(p, "VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR"; + DumpVkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT) { const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT* props = (const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(p, "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT"; + DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT) { const VkPhysicalDeviceShaderObjectFeaturesEXT* props = (const VkPhysicalDeviceShaderObjectFeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderObjectFeaturesEXT(p, "VkPhysicalDeviceShaderObjectFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderObjectFeaturesEXT"; + DumpVkPhysicalDeviceShaderObjectFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR) { const VkPhysicalDeviceShaderQuadControlFeaturesKHR* props = (const VkPhysicalDeviceShaderQuadControlFeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderQuadControlFeaturesKHR(p, "VkPhysicalDeviceShaderQuadControlFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderQuadControlFeaturesKHR"; + DumpVkPhysicalDeviceShaderQuadControlFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR) { const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR* props = (const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR(p, "VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR"; + DumpVkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT) { const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT* props = (const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT(p, "VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT"; + DumpVkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES) { const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures* props = (const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures*)structure; - DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures":"VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures" : ("VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR"); + DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(p, "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES) { const VkPhysicalDeviceShaderSubgroupRotateFeatures* props = (const VkPhysicalDeviceShaderSubgroupRotateFeatures*)structure; - DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceShaderSubgroupRotateFeatures":"VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceShaderSubgroupRotateFeatures" : ("VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR"); + DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(p, "VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR) { const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR* props = (const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(p, "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR"; + DumpVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES) { const VkPhysicalDeviceShaderTerminateInvocationFeatures* props = (const VkPhysicalDeviceShaderTerminateInvocationFeatures*)structure; - DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceShaderTerminateInvocationFeatures":"VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderTerminateInvocationFeatures" : ("VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR"); + DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(p, "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT) { const VkPhysicalDeviceShaderTileImageFeaturesEXT* props = (const VkPhysicalDeviceShaderTileImageFeaturesEXT*)structure; - DumpVkPhysicalDeviceShaderTileImageFeaturesEXT(p, "VkPhysicalDeviceShaderTileImageFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceShaderTileImageFeaturesEXT"; + DumpVkPhysicalDeviceShaderTileImageFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR) { const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR* props = (const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR*)structure; - DumpVkPhysicalDeviceShaderUntypedPointersFeaturesKHR(p, "VkPhysicalDeviceShaderUntypedPointersFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceShaderUntypedPointersFeaturesKHR"; + DumpVkPhysicalDeviceShaderUntypedPointersFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES) { const VkPhysicalDeviceSubgroupSizeControlFeatures* props = (const VkPhysicalDeviceSubgroupSizeControlFeatures*)structure; - DumpVkPhysicalDeviceSubgroupSizeControlFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceSubgroupSizeControlFeatures":"VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceSubgroupSizeControlFeatures" : ("VkPhysicalDeviceSubgroupSizeControlFeaturesEXT"); + DumpVkPhysicalDeviceSubgroupSizeControlFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSubgroupSizeControlFeatures(p, "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT) { const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT* props = (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT*)structure; - DumpVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT(p, "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT"; + DumpVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR) { const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR* props = (const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR*)structure; - DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(p, "VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR", *props); + const char* name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME) ? "VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR" : ("VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT"); + DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(p, "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES) { const VkPhysicalDeviceSynchronization2Features* props = (const VkPhysicalDeviceSynchronization2Features*)structure; - DumpVkPhysicalDeviceSynchronization2Features(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceSynchronization2Features":"VkPhysicalDeviceSynchronization2FeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceSynchronization2Features" : ("VkPhysicalDeviceSynchronization2FeaturesKHR"); + DumpVkPhysicalDeviceSynchronization2Features(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSynchronization2FeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceSynchronization2Features(p, "VkPhysicalDeviceSynchronization2FeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT) { const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT* props = (const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*)structure; - DumpVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(p, "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT"; + DumpVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES) { const VkPhysicalDeviceTextureCompressionASTCHDRFeatures* props = (const VkPhysicalDeviceTextureCompressionASTCHDRFeatures*)structure; - DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceTextureCompressionASTCHDRFeatures":"VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceTextureCompressionASTCHDRFeatures" : ("VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT"); + DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(p, "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES) { const VkPhysicalDeviceTimelineSemaphoreFeatures* props = (const VkPhysicalDeviceTimelineSemaphoreFeatures*)structure; - DumpVkPhysicalDeviceTimelineSemaphoreFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceTimelineSemaphoreFeatures":"VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceTimelineSemaphoreFeatures" : ("VkPhysicalDeviceTimelineSemaphoreFeaturesKHR"); + DumpVkPhysicalDeviceTimelineSemaphoreFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceTimelineSemaphoreFeatures(p, "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT) { const VkPhysicalDeviceTransformFeedbackFeaturesEXT* props = (const VkPhysicalDeviceTransformFeedbackFeaturesEXT*)structure; - DumpVkPhysicalDeviceTransformFeedbackFeaturesEXT(p, "VkPhysicalDeviceTransformFeedbackFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceTransformFeedbackFeaturesEXT"; + DumpVkPhysicalDeviceTransformFeedbackFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR) { const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR* props = (const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR*)structure; - DumpVkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR(p, "VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR"; + DumpVkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES) { const VkPhysicalDeviceUniformBufferStandardLayoutFeatures* props = (const VkPhysicalDeviceUniformBufferStandardLayoutFeatures*)structure; - DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceUniformBufferStandardLayoutFeatures":"VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceUniformBufferStandardLayoutFeatures" : ("VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR"); + DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(p, "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES) { const VkPhysicalDeviceVariablePointersFeatures* props = (const VkPhysicalDeviceVariablePointersFeatures*)structure; - DumpVkPhysicalDeviceVariablePointersFeatures(p, gpu.api_version >= VK_API_VERSION_1_1 ?"VkPhysicalDeviceVariablePointersFeatures":"VkPhysicalDeviceVariablePointerFeatures", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceVariablePointersFeatures" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME) ? "VkPhysicalDeviceVariablePointerFeaturesKHR" : ("VkPhysicalDeviceVariablePointersFeaturesKHR")); + DumpVkPhysicalDeviceVariablePointersFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVariablePointerFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceVariablePointersFeatures(p, "VkPhysicalDeviceVariablePointerFeaturesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVariablePointersFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceVariablePointersFeatures(p, "VkPhysicalDeviceVariablePointersFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES) { const VkPhysicalDeviceVertexAttributeDivisorFeatures* props = (const VkPhysicalDeviceVertexAttributeDivisorFeatures*)structure; - DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkPhysicalDeviceVertexAttributeDivisorFeatures":"VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceVertexAttributeDivisorFeatures" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME) ? "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR" : ("VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT")); + DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR", *props); + } + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT) { const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT* props = (const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT*)structure; - DumpVkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(p, "VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT"; + DumpVkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT) { const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT* props = (const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT*)structure; - DumpVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(p, "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT"; + DumpVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR) { const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR* props = (const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR*)structure; - DumpVkPhysicalDeviceVideoDecodeVP9FeaturesKHR(p, "VkPhysicalDeviceVideoDecodeVP9FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceVideoDecodeVP9FeaturesKHR"; + DumpVkPhysicalDeviceVideoDecodeVP9FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR) { const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR* props = (const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR*)structure; - DumpVkPhysicalDeviceVideoEncodeAV1FeaturesKHR(p, "VkPhysicalDeviceVideoEncodeAV1FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceVideoEncodeAV1FeaturesKHR"; + DumpVkPhysicalDeviceVideoEncodeAV1FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR) { const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR* props = (const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR*)structure; - DumpVkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR(p, "VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR"; + DumpVkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR) { const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR* props = (const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR*)structure; - DumpVkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR(p, "VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR"; + DumpVkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR) { const VkPhysicalDeviceVideoMaintenance1FeaturesKHR* props = (const VkPhysicalDeviceVideoMaintenance1FeaturesKHR*)structure; - DumpVkPhysicalDeviceVideoMaintenance1FeaturesKHR(p, "VkPhysicalDeviceVideoMaintenance1FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceVideoMaintenance1FeaturesKHR"; + DumpVkPhysicalDeviceVideoMaintenance1FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR) { const VkPhysicalDeviceVideoMaintenance2FeaturesKHR* props = (const VkPhysicalDeviceVideoMaintenance2FeaturesKHR*)structure; - DumpVkPhysicalDeviceVideoMaintenance2FeaturesKHR(p, "VkPhysicalDeviceVideoMaintenance2FeaturesKHR", *props); + const char* name = "VkPhysicalDeviceVideoMaintenance2FeaturesKHR"; + DumpVkPhysicalDeviceVideoMaintenance2FeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES) { const VkPhysicalDeviceVulkan11Features* props = (const VkPhysicalDeviceVulkan11Features*)structure; - DumpVkPhysicalDeviceVulkan11Features(p, "VkPhysicalDeviceVulkan11Features", *props); + const char* name = "VkPhysicalDeviceVulkan11Features"; + DumpVkPhysicalDeviceVulkan11Features(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES) { const VkPhysicalDeviceVulkan12Features* props = (const VkPhysicalDeviceVulkan12Features*)structure; - DumpVkPhysicalDeviceVulkan12Features(p, "VkPhysicalDeviceVulkan12Features", *props); + const char* name = "VkPhysicalDeviceVulkan12Features"; + DumpVkPhysicalDeviceVulkan12Features(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES) { const VkPhysicalDeviceVulkan13Features* props = (const VkPhysicalDeviceVulkan13Features*)structure; - DumpVkPhysicalDeviceVulkan13Features(p, "VkPhysicalDeviceVulkan13Features", *props); + const char* name = "VkPhysicalDeviceVulkan13Features"; + DumpVkPhysicalDeviceVulkan13Features(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES) { const VkPhysicalDeviceVulkan14Features* props = (const VkPhysicalDeviceVulkan14Features*)structure; - DumpVkPhysicalDeviceVulkan14Features(p, "VkPhysicalDeviceVulkan14Features", *props); + const char* name = "VkPhysicalDeviceVulkan14Features"; + DumpVkPhysicalDeviceVulkan14Features(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES) { const VkPhysicalDeviceVulkanMemoryModelFeatures* props = (const VkPhysicalDeviceVulkanMemoryModelFeatures*)structure; - DumpVkPhysicalDeviceVulkanMemoryModelFeatures(p, gpu.api_version >= VK_API_VERSION_1_2 ?"VkPhysicalDeviceVulkanMemoryModelFeatures":"VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceVulkanMemoryModelFeatures" : ("VkPhysicalDeviceVulkanMemoryModelFeaturesKHR"); + DumpVkPhysicalDeviceVulkanMemoryModelFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceVulkanMemoryModelFeatures(p, "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", *props); + } p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR) { const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR* props = (const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR*)structure; - DumpVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(p, "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR", *props); + const char* name = "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR"; + DumpVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT) { const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT* props = (const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT*)structure; - DumpVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(p, "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT"; + DumpVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT) { const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT* props = (const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT*)structure; - DumpVkPhysicalDeviceYcbcrImageArraysFeaturesEXT(p, "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT"; + DumpVkPhysicalDeviceYcbcrImageArraysFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT) { const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT* props = (const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT*)structure; - DumpVkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(p, "VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT", *props); + const char* name = "VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT"; + DumpVkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES) { const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures* props = (const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures*)structure; - DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures":"VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures" : ("VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR"); + DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(p, name, *props); + if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR") != 0 && gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME)) { + p.AddNewline(); + p.SetSubHeader(); + DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(p, "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR", *props); + } p.AddNewline(); } place = structure->pNext; @@ -7818,7 +8471,7 @@ struct surface_capabilities2_chain { VkSurfaceCapabilitiesPresentId2KHR SurfaceCapabilitiesPresentId2KHR{}; VkSurfaceCapabilitiesPresentWait2KHR SurfaceCapabilitiesPresentWait2KHR{}; VkSurfaceProtectedCapabilitiesKHR SurfaceProtectedCapabilitiesKHR{}; - void initialize_chain(AppInstance &inst, AppGpu &gpu ) noexcept { + void initialize_chain(AppInstance &inst, AppGpu &gpu) noexcept { SharedPresentSurfaceCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR; #ifdef VK_USE_PLATFORM_WIN32_KHR SurfaceCapabilitiesFullScreenExclusiveEXT.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT; @@ -7860,29 +8513,34 @@ void chain_iterator_surface_capabilities2(Printer &p, AppInstance &inst, AppGpu p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR) { const VkSharedPresentSurfaceCapabilitiesKHR* props = (const VkSharedPresentSurfaceCapabilitiesKHR*)structure; - DumpVkSharedPresentSurfaceCapabilitiesKHR(p, "VkSharedPresentSurfaceCapabilitiesKHR", *props); + const char* name = "VkSharedPresentSurfaceCapabilitiesKHR"; + DumpVkSharedPresentSurfaceCapabilitiesKHR(p, name, *props); p.AddNewline(); } #ifdef VK_USE_PLATFORM_WIN32_KHR if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT) { const VkSurfaceCapabilitiesFullScreenExclusiveEXT* props = (const VkSurfaceCapabilitiesFullScreenExclusiveEXT*)structure; - DumpVkSurfaceCapabilitiesFullScreenExclusiveEXT(p, "VkSurfaceCapabilitiesFullScreenExclusiveEXT", *props); + const char* name = "VkSurfaceCapabilitiesFullScreenExclusiveEXT"; + DumpVkSurfaceCapabilitiesFullScreenExclusiveEXT(p, name, *props); p.AddNewline(); } #endif // VK_USE_PLATFORM_WIN32_KHR if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR) { const VkSurfaceCapabilitiesPresentId2KHR* props = (const VkSurfaceCapabilitiesPresentId2KHR*)structure; - DumpVkSurfaceCapabilitiesPresentId2KHR(p, "VkSurfaceCapabilitiesPresentId2KHR", *props); + const char* name = "VkSurfaceCapabilitiesPresentId2KHR"; + DumpVkSurfaceCapabilitiesPresentId2KHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR) { const VkSurfaceCapabilitiesPresentWait2KHR* props = (const VkSurfaceCapabilitiesPresentWait2KHR*)structure; - DumpVkSurfaceCapabilitiesPresentWait2KHR(p, "VkSurfaceCapabilitiesPresentWait2KHR", *props); + const char* name = "VkSurfaceCapabilitiesPresentWait2KHR"; + DumpVkSurfaceCapabilitiesPresentWait2KHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR) { const VkSurfaceProtectedCapabilitiesKHR* props = (const VkSurfaceProtectedCapabilitiesKHR*)structure; - DumpVkSurfaceProtectedCapabilitiesKHR(p, "VkSurfaceProtectedCapabilitiesKHR", *props); + const char* name = "VkSurfaceProtectedCapabilitiesKHR"; + DumpVkSurfaceProtectedCapabilitiesKHR(p, name, *props); p.AddNewline(); } place = structure->pNext; @@ -7902,7 +8560,7 @@ struct format_properties2_chain { void* start_of_chain = nullptr; VkFormatProperties3 FormatProperties3{}; VkSubpassResolvePerformanceQueryEXT SubpassResolvePerformanceQueryEXT{}; - void initialize_chain(AppGpu &gpu ) noexcept { + void initialize_chain(AppGpu &gpu) noexcept { FormatProperties3.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3; SubpassResolvePerformanceQueryEXT.sType = VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT; std::vector chain_members{}; @@ -7932,12 +8590,14 @@ void chain_iterator_format_properties2(Printer &p, AppGpu &gpu, const void * pla p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3) { const VkFormatProperties3* props = (const VkFormatProperties3*)structure; - DumpVkFormatProperties3(p, gpu.api_version >= VK_API_VERSION_1_3 ?"VkFormatProperties3":"VkFormatProperties3KHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkFormatProperties3" : ("VkFormatProperties3KHR"); + DumpVkFormatProperties3(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT) { const VkSubpassResolvePerformanceQueryEXT* props = (const VkSubpassResolvePerformanceQueryEXT*)structure; - DumpVkSubpassResolvePerformanceQueryEXT(p, "VkSubpassResolvePerformanceQueryEXT", *props); + const char* name = "VkSubpassResolvePerformanceQueryEXT"; + DumpVkSubpassResolvePerformanceQueryEXT(p, name, *props); p.AddNewline(); } place = structure->pNext; @@ -7959,7 +8619,7 @@ struct queue_properties2_chain { VkQueueFamilyOwnershipTransferPropertiesKHR QueueFamilyOwnershipTransferPropertiesKHR{}; VkQueueFamilyQueryResultStatusPropertiesKHR QueueFamilyQueryResultStatusPropertiesKHR{}; VkQueueFamilyVideoPropertiesKHR QueueFamilyVideoPropertiesKHR{}; - void initialize_chain(AppGpu &gpu ) noexcept { + void initialize_chain(AppGpu &gpu) noexcept { QueueFamilyGlobalPriorityProperties.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES; QueueFamilyOwnershipTransferPropertiesKHR.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR; QueueFamilyQueryResultStatusPropertiesKHR.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR; @@ -7996,22 +8656,26 @@ void chain_iterator_queue_properties2(Printer &p, AppGpu &gpu, const void * plac p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES) { const VkQueueFamilyGlobalPriorityProperties* props = (const VkQueueFamilyGlobalPriorityProperties*)structure; - DumpVkQueueFamilyGlobalPriorityProperties(p, gpu.api_version >= VK_API_VERSION_1_4 ?"VkQueueFamilyGlobalPriorityProperties":"VkQueueFamilyGlobalPriorityPropertiesKHR", *props); + const char* name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkQueueFamilyGlobalPriorityProperties" : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME) ? "VkQueueFamilyGlobalPriorityPropertiesKHR" : ("VkQueueFamilyGlobalPriorityPropertiesEXT")); + DumpVkQueueFamilyGlobalPriorityProperties(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR) { const VkQueueFamilyOwnershipTransferPropertiesKHR* props = (const VkQueueFamilyOwnershipTransferPropertiesKHR*)structure; - DumpVkQueueFamilyOwnershipTransferPropertiesKHR(p, "VkQueueFamilyOwnershipTransferPropertiesKHR", *props); + const char* name = "VkQueueFamilyOwnershipTransferPropertiesKHR"; + DumpVkQueueFamilyOwnershipTransferPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR) { const VkQueueFamilyQueryResultStatusPropertiesKHR* props = (const VkQueueFamilyQueryResultStatusPropertiesKHR*)structure; - DumpVkQueueFamilyQueryResultStatusPropertiesKHR(p, "VkQueueFamilyQueryResultStatusPropertiesKHR", *props); + const char* name = "VkQueueFamilyQueryResultStatusPropertiesKHR"; + DumpVkQueueFamilyQueryResultStatusPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR) { const VkQueueFamilyVideoPropertiesKHR* props = (const VkQueueFamilyVideoPropertiesKHR*)structure; - DumpVkQueueFamilyVideoPropertiesKHR(p, "VkQueueFamilyVideoPropertiesKHR", *props); + const char* name = "VkQueueFamilyVideoPropertiesKHR"; + DumpVkQueueFamilyVideoPropertiesKHR(p, name, *props); p.AddNewline(); } place = structure->pNext; @@ -8039,7 +8703,7 @@ struct video_profile_info_chain { VkVideoEncodeH265ProfileInfoKHR VideoEncodeH265ProfileInfoKHR{}; VkVideoEncodeProfileRgbConversionInfoVALVE VideoEncodeProfileRgbConversionInfoVALVE{}; VkVideoEncodeUsageInfoKHR VideoEncodeUsageInfoKHR{}; - void initialize_chain(AppGpu &gpu ) noexcept { + void initialize_chain(AppGpu &gpu) noexcept { VideoDecodeAV1ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR; VideoDecodeH264ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR; VideoDecodeH265ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR; @@ -8092,52 +8756,62 @@ void chain_iterator_video_profile_info(Printer &p, AppGpu &gpu, const void * pla p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR) { const VkVideoDecodeAV1ProfileInfoKHR* props = (const VkVideoDecodeAV1ProfileInfoKHR*)structure; - DumpVkVideoDecodeAV1ProfileInfoKHR(p, "VkVideoDecodeAV1ProfileInfoKHR", *props); + const char* name = "VkVideoDecodeAV1ProfileInfoKHR"; + DumpVkVideoDecodeAV1ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR) { const VkVideoDecodeH264ProfileInfoKHR* props = (const VkVideoDecodeH264ProfileInfoKHR*)structure; - DumpVkVideoDecodeH264ProfileInfoKHR(p, "VkVideoDecodeH264ProfileInfoKHR", *props); + const char* name = "VkVideoDecodeH264ProfileInfoKHR"; + DumpVkVideoDecodeH264ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR) { const VkVideoDecodeH265ProfileInfoKHR* props = (const VkVideoDecodeH265ProfileInfoKHR*)structure; - DumpVkVideoDecodeH265ProfileInfoKHR(p, "VkVideoDecodeH265ProfileInfoKHR", *props); + const char* name = "VkVideoDecodeH265ProfileInfoKHR"; + DumpVkVideoDecodeH265ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR) { const VkVideoDecodeUsageInfoKHR* props = (const VkVideoDecodeUsageInfoKHR*)structure; - DumpVkVideoDecodeUsageInfoKHR(p, "VkVideoDecodeUsageInfoKHR", *props); + const char* name = "VkVideoDecodeUsageInfoKHR"; + DumpVkVideoDecodeUsageInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR) { const VkVideoDecodeVP9ProfileInfoKHR* props = (const VkVideoDecodeVP9ProfileInfoKHR*)structure; - DumpVkVideoDecodeVP9ProfileInfoKHR(p, "VkVideoDecodeVP9ProfileInfoKHR", *props); + const char* name = "VkVideoDecodeVP9ProfileInfoKHR"; + DumpVkVideoDecodeVP9ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR) { const VkVideoEncodeAV1ProfileInfoKHR* props = (const VkVideoEncodeAV1ProfileInfoKHR*)structure; - DumpVkVideoEncodeAV1ProfileInfoKHR(p, "VkVideoEncodeAV1ProfileInfoKHR", *props); + const char* name = "VkVideoEncodeAV1ProfileInfoKHR"; + DumpVkVideoEncodeAV1ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR) { const VkVideoEncodeH264ProfileInfoKHR* props = (const VkVideoEncodeH264ProfileInfoKHR*)structure; - DumpVkVideoEncodeH264ProfileInfoKHR(p, "VkVideoEncodeH264ProfileInfoKHR", *props); + const char* name = "VkVideoEncodeH264ProfileInfoKHR"; + DumpVkVideoEncodeH264ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR) { const VkVideoEncodeH265ProfileInfoKHR* props = (const VkVideoEncodeH265ProfileInfoKHR*)structure; - DumpVkVideoEncodeH265ProfileInfoKHR(p, "VkVideoEncodeH265ProfileInfoKHR", *props); + const char* name = "VkVideoEncodeH265ProfileInfoKHR"; + DumpVkVideoEncodeH265ProfileInfoKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE) { const VkVideoEncodeProfileRgbConversionInfoVALVE* props = (const VkVideoEncodeProfileRgbConversionInfoVALVE*)structure; - DumpVkVideoEncodeProfileRgbConversionInfoVALVE(p, "VkVideoEncodeProfileRgbConversionInfoVALVE", *props); + const char* name = "VkVideoEncodeProfileRgbConversionInfoVALVE"; + DumpVkVideoEncodeProfileRgbConversionInfoVALVE(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR) { const VkVideoEncodeUsageInfoKHR* props = (const VkVideoEncodeUsageInfoKHR*)structure; - DumpVkVideoEncodeUsageInfoKHR(p, "VkVideoEncodeUsageInfoKHR", *props); + const char* name = "VkVideoEncodeUsageInfoKHR"; + DumpVkVideoEncodeUsageInfoKHR(p, name, *props); p.AddNewline(); } place = structure->pNext; @@ -8170,7 +8844,7 @@ struct video_capabilities_chain { VkVideoEncodeIntraRefreshCapabilitiesKHR VideoEncodeIntraRefreshCapabilitiesKHR{}; VkVideoEncodeQuantizationMapCapabilitiesKHR VideoEncodeQuantizationMapCapabilitiesKHR{}; VkVideoEncodeRgbConversionCapabilitiesVALVE VideoEncodeRgbConversionCapabilitiesVALVE{}; - void initialize_chain(AppGpu &gpu ) noexcept { + void initialize_chain(AppGpu &gpu) noexcept { VideoDecodeAV1CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR; VideoDecodeCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR; VideoDecodeH264CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR; @@ -8238,77 +8912,92 @@ void chain_iterator_video_capabilities(Printer &p, AppGpu &gpu, const void * pla p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR) { const VkVideoDecodeAV1CapabilitiesKHR* props = (const VkVideoDecodeAV1CapabilitiesKHR*)structure; - DumpVkVideoDecodeAV1CapabilitiesKHR(p, "VkVideoDecodeAV1CapabilitiesKHR", *props); + const char* name = "VkVideoDecodeAV1CapabilitiesKHR"; + DumpVkVideoDecodeAV1CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR) { const VkVideoDecodeCapabilitiesKHR* props = (const VkVideoDecodeCapabilitiesKHR*)structure; - DumpVkVideoDecodeCapabilitiesKHR(p, "VkVideoDecodeCapabilitiesKHR", *props); + const char* name = "VkVideoDecodeCapabilitiesKHR"; + DumpVkVideoDecodeCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR) { const VkVideoDecodeH264CapabilitiesKHR* props = (const VkVideoDecodeH264CapabilitiesKHR*)structure; - DumpVkVideoDecodeH264CapabilitiesKHR(p, "VkVideoDecodeH264CapabilitiesKHR", *props); + const char* name = "VkVideoDecodeH264CapabilitiesKHR"; + DumpVkVideoDecodeH264CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR) { const VkVideoDecodeH265CapabilitiesKHR* props = (const VkVideoDecodeH265CapabilitiesKHR*)structure; - DumpVkVideoDecodeH265CapabilitiesKHR(p, "VkVideoDecodeH265CapabilitiesKHR", *props); + const char* name = "VkVideoDecodeH265CapabilitiesKHR"; + DumpVkVideoDecodeH265CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR) { const VkVideoDecodeVP9CapabilitiesKHR* props = (const VkVideoDecodeVP9CapabilitiesKHR*)structure; - DumpVkVideoDecodeVP9CapabilitiesKHR(p, "VkVideoDecodeVP9CapabilitiesKHR", *props); + const char* name = "VkVideoDecodeVP9CapabilitiesKHR"; + DumpVkVideoDecodeVP9CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR) { const VkVideoEncodeAV1CapabilitiesKHR* props = (const VkVideoEncodeAV1CapabilitiesKHR*)structure; - DumpVkVideoEncodeAV1CapabilitiesKHR(p, "VkVideoEncodeAV1CapabilitiesKHR", *props); + const char* name = "VkVideoEncodeAV1CapabilitiesKHR"; + DumpVkVideoEncodeAV1CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR) { const VkVideoEncodeAV1QuantizationMapCapabilitiesKHR* props = (const VkVideoEncodeAV1QuantizationMapCapabilitiesKHR*)structure; - DumpVkVideoEncodeAV1QuantizationMapCapabilitiesKHR(p, "VkVideoEncodeAV1QuantizationMapCapabilitiesKHR", *props); + const char* name = "VkVideoEncodeAV1QuantizationMapCapabilitiesKHR"; + DumpVkVideoEncodeAV1QuantizationMapCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR) { const VkVideoEncodeCapabilitiesKHR* props = (const VkVideoEncodeCapabilitiesKHR*)structure; - DumpVkVideoEncodeCapabilitiesKHR(p, "VkVideoEncodeCapabilitiesKHR", *props); + const char* name = "VkVideoEncodeCapabilitiesKHR"; + DumpVkVideoEncodeCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR) { const VkVideoEncodeH264CapabilitiesKHR* props = (const VkVideoEncodeH264CapabilitiesKHR*)structure; - DumpVkVideoEncodeH264CapabilitiesKHR(p, "VkVideoEncodeH264CapabilitiesKHR", *props); + const char* name = "VkVideoEncodeH264CapabilitiesKHR"; + DumpVkVideoEncodeH264CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR) { const VkVideoEncodeH264QuantizationMapCapabilitiesKHR* props = (const VkVideoEncodeH264QuantizationMapCapabilitiesKHR*)structure; - DumpVkVideoEncodeH264QuantizationMapCapabilitiesKHR(p, "VkVideoEncodeH264QuantizationMapCapabilitiesKHR", *props); + const char* name = "VkVideoEncodeH264QuantizationMapCapabilitiesKHR"; + DumpVkVideoEncodeH264QuantizationMapCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR) { const VkVideoEncodeH265CapabilitiesKHR* props = (const VkVideoEncodeH265CapabilitiesKHR*)structure; - DumpVkVideoEncodeH265CapabilitiesKHR(p, "VkVideoEncodeH265CapabilitiesKHR", *props); + const char* name = "VkVideoEncodeH265CapabilitiesKHR"; + DumpVkVideoEncodeH265CapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR) { const VkVideoEncodeH265QuantizationMapCapabilitiesKHR* props = (const VkVideoEncodeH265QuantizationMapCapabilitiesKHR*)structure; - DumpVkVideoEncodeH265QuantizationMapCapabilitiesKHR(p, "VkVideoEncodeH265QuantizationMapCapabilitiesKHR", *props); + const char* name = "VkVideoEncodeH265QuantizationMapCapabilitiesKHR"; + DumpVkVideoEncodeH265QuantizationMapCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR) { const VkVideoEncodeIntraRefreshCapabilitiesKHR* props = (const VkVideoEncodeIntraRefreshCapabilitiesKHR*)structure; - DumpVkVideoEncodeIntraRefreshCapabilitiesKHR(p, "VkVideoEncodeIntraRefreshCapabilitiesKHR", *props); + const char* name = "VkVideoEncodeIntraRefreshCapabilitiesKHR"; + DumpVkVideoEncodeIntraRefreshCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR) { const VkVideoEncodeQuantizationMapCapabilitiesKHR* props = (const VkVideoEncodeQuantizationMapCapabilitiesKHR*)structure; - DumpVkVideoEncodeQuantizationMapCapabilitiesKHR(p, "VkVideoEncodeQuantizationMapCapabilitiesKHR", *props); + const char* name = "VkVideoEncodeQuantizationMapCapabilitiesKHR"; + DumpVkVideoEncodeQuantizationMapCapabilitiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE) { const VkVideoEncodeRgbConversionCapabilitiesVALVE* props = (const VkVideoEncodeRgbConversionCapabilitiesVALVE*)structure; - DumpVkVideoEncodeRgbConversionCapabilitiesVALVE(p, "VkVideoEncodeRgbConversionCapabilitiesVALVE", *props); + const char* name = "VkVideoEncodeRgbConversionCapabilitiesVALVE"; + DumpVkVideoEncodeRgbConversionCapabilitiesVALVE(p, name, *props); p.AddNewline(); } place = structure->pNext; @@ -8329,7 +9018,7 @@ struct video_format_properties_chain { VkVideoFormatAV1QuantizationMapPropertiesKHR VideoFormatAV1QuantizationMapPropertiesKHR{}; VkVideoFormatH265QuantizationMapPropertiesKHR VideoFormatH265QuantizationMapPropertiesKHR{}; VkVideoFormatQuantizationMapPropertiesKHR VideoFormatQuantizationMapPropertiesKHR{}; - void initialize_chain(AppGpu &gpu ) noexcept { + void initialize_chain(AppGpu &gpu) noexcept { VideoFormatAV1QuantizationMapPropertiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR; VideoFormatH265QuantizationMapPropertiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR; VideoFormatQuantizationMapPropertiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR; @@ -8361,17 +9050,20 @@ void chain_iterator_video_format_properties(Printer &p, AppGpu &gpu, const void p.SetSubHeader(); if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR) { const VkVideoFormatAV1QuantizationMapPropertiesKHR* props = (const VkVideoFormatAV1QuantizationMapPropertiesKHR*)structure; - DumpVkVideoFormatAV1QuantizationMapPropertiesKHR(p, "VkVideoFormatAV1QuantizationMapPropertiesKHR", *props); + const char* name = "VkVideoFormatAV1QuantizationMapPropertiesKHR"; + DumpVkVideoFormatAV1QuantizationMapPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR) { const VkVideoFormatH265QuantizationMapPropertiesKHR* props = (const VkVideoFormatH265QuantizationMapPropertiesKHR*)structure; - DumpVkVideoFormatH265QuantizationMapPropertiesKHR(p, "VkVideoFormatH265QuantizationMapPropertiesKHR", *props); + const char* name = "VkVideoFormatH265QuantizationMapPropertiesKHR"; + DumpVkVideoFormatH265QuantizationMapPropertiesKHR(p, name, *props); p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR) { const VkVideoFormatQuantizationMapPropertiesKHR* props = (const VkVideoFormatQuantizationMapPropertiesKHR*)structure; - DumpVkVideoFormatQuantizationMapPropertiesKHR(p, "VkVideoFormatQuantizationMapPropertiesKHR", *props); + const char* name = "VkVideoFormatQuantizationMapPropertiesKHR"; + DumpVkVideoFormatQuantizationMapPropertiesKHR(p, name, *props); p.AddNewline(); } place = structure->pNext;