/* * Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved. * * 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. * * SPDX-FileCopyrightText: Copyright (c) 2018-2021 NVIDIA CORPORATION * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include /** \fn load_VK_EXTENSIONS \brief load_VK_EXTENSIONS : Vulkan Extension Loader The extensions_vk files takes care of loading and providing the symbols of Vulkan C Api extensions. It is generated by `extensions_vk.py` and generates all extensions found in vk.xml. See script for details. . The framework triggers this implicitly in the `nvvk::Context` class, immediately after creating the device. \code{.cpp} // loads all known extensions load_VK_EXTENSIONS(instance, vkGetInstanceProcAddr, device, vkGetDeviceProcAddr); \endcode */ /* Load all avaiable extensions */ void load_VK_EXTENSIONS(VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device, PFN_vkGetDeviceProcAddr getDeviceProcAddr); /* NVVK_GENERATE_DEFINE */ #if defined(VK_AMD_buffer_marker) #define NVVK_HAS_VK_AMD_buffer_marker #endif /* VK_AMD_buffer_marker */ #if defined(VK_AMD_display_native_hdr) #define NVVK_HAS_VK_AMD_display_native_hdr #endif /* VK_AMD_display_native_hdr */ #if defined(VK_AMD_draw_indirect_count) #define NVVK_HAS_VK_AMD_draw_indirect_count #endif /* VK_AMD_draw_indirect_count */ #if defined(VK_AMD_shader_info) #define NVVK_HAS_VK_AMD_shader_info #endif /* VK_AMD_shader_info */ #if defined(VK_ANDROID_external_memory_android_hardware_buffer) #define NVVK_HAS_VK_ANDROID_external_memory_android_hardware_buffer #endif /* VK_ANDROID_external_memory_android_hardware_buffer */ #if defined(VK_EXT_acquire_drm_display) #define NVVK_HAS_VK_EXT_acquire_drm_display #endif /* VK_EXT_acquire_drm_display */ #if defined(VK_EXT_acquire_xlib_display) #define NVVK_HAS_VK_EXT_acquire_xlib_display #endif /* VK_EXT_acquire_xlib_display */ #if defined(VK_EXT_buffer_device_address) #define NVVK_HAS_VK_EXT_buffer_device_address #endif /* VK_EXT_buffer_device_address */ #if defined(VK_EXT_calibrated_timestamps) #define NVVK_HAS_VK_EXT_calibrated_timestamps #endif /* VK_EXT_calibrated_timestamps */ #if defined(VK_EXT_color_write_enable) #define NVVK_HAS_VK_EXT_color_write_enable #endif /* VK_EXT_color_write_enable */ #if defined(VK_EXT_conditional_rendering) #define NVVK_HAS_VK_EXT_conditional_rendering #endif /* VK_EXT_conditional_rendering */ #if defined(VK_EXT_debug_marker) #define NVVK_HAS_VK_EXT_debug_marker #endif /* VK_EXT_debug_marker */ #if defined(VK_EXT_debug_report) #define NVVK_HAS_VK_EXT_debug_report #endif /* VK_EXT_debug_report */ #if defined(VK_EXT_debug_utils) #define NVVK_HAS_VK_EXT_debug_utils #endif /* VK_EXT_debug_utils */ #if defined(VK_EXT_descriptor_buffer) #define NVVK_HAS_VK_EXT_descriptor_buffer #endif /* VK_EXT_descriptor_buffer */ #if defined(VK_EXT_device_fault) #define NVVK_HAS_VK_EXT_device_fault #endif /* VK_EXT_device_fault */ #if defined(VK_EXT_direct_mode_display) #define NVVK_HAS_VK_EXT_direct_mode_display #endif /* VK_EXT_direct_mode_display */ #if defined(VK_EXT_directfb_surface) #define NVVK_HAS_VK_EXT_directfb_surface #endif /* VK_EXT_directfb_surface */ #if defined(VK_EXT_discard_rectangles) #define NVVK_HAS_VK_EXT_discard_rectangles #endif /* VK_EXT_discard_rectangles */ #if defined(VK_EXT_display_control) #define NVVK_HAS_VK_EXT_display_control #endif /* VK_EXT_display_control */ #if defined(VK_EXT_display_surface_counter) #define NVVK_HAS_VK_EXT_display_surface_counter #endif /* VK_EXT_display_surface_counter */ #if defined(VK_EXT_extended_dynamic_state) #define NVVK_HAS_VK_EXT_extended_dynamic_state #endif /* VK_EXT_extended_dynamic_state */ #if defined(VK_EXT_extended_dynamic_state2) #define NVVK_HAS_VK_EXT_extended_dynamic_state2 #endif /* VK_EXT_extended_dynamic_state2 */ #if defined(VK_EXT_extended_dynamic_state3) #define NVVK_HAS_VK_EXT_extended_dynamic_state3 #endif /* VK_EXT_extended_dynamic_state3 */ #if defined(VK_EXT_external_memory_host) #define NVVK_HAS_VK_EXT_external_memory_host #endif /* VK_EXT_external_memory_host */ #if defined(VK_EXT_full_screen_exclusive) #define NVVK_HAS_VK_EXT_full_screen_exclusive #endif /* VK_EXT_full_screen_exclusive */ #if defined(VK_EXT_hdr_metadata) #define NVVK_HAS_VK_EXT_hdr_metadata #endif /* VK_EXT_hdr_metadata */ #if defined(VK_EXT_headless_surface) #define NVVK_HAS_VK_EXT_headless_surface #endif /* VK_EXT_headless_surface */ #if defined(VK_EXT_host_query_reset) #define NVVK_HAS_VK_EXT_host_query_reset #endif /* VK_EXT_host_query_reset */ #if defined(VK_EXT_image_compression_control) #define NVVK_HAS_VK_EXT_image_compression_control #endif /* VK_EXT_image_compression_control */ #if defined(VK_EXT_image_drm_format_modifier) #define NVVK_HAS_VK_EXT_image_drm_format_modifier #endif /* VK_EXT_image_drm_format_modifier */ #if defined(VK_EXT_line_rasterization) #define NVVK_HAS_VK_EXT_line_rasterization #endif /* VK_EXT_line_rasterization */ #if defined(VK_EXT_mesh_shader) #define NVVK_HAS_VK_EXT_mesh_shader #endif /* VK_EXT_mesh_shader */ #if defined(VK_EXT_metal_objects) #define NVVK_HAS_VK_EXT_metal_objects #endif /* VK_EXT_metal_objects */ #if defined(VK_EXT_metal_surface) #define NVVK_HAS_VK_EXT_metal_surface #endif /* VK_EXT_metal_surface */ #if defined(VK_EXT_multi_draw) #define NVVK_HAS_VK_EXT_multi_draw #endif /* VK_EXT_multi_draw */ #if defined(VK_EXT_opacity_micromap) #define NVVK_HAS_VK_EXT_opacity_micromap #endif /* VK_EXT_opacity_micromap */ #if defined(VK_EXT_pageable_device_local_memory) #define NVVK_HAS_VK_EXT_pageable_device_local_memory #endif /* VK_EXT_pageable_device_local_memory */ #if defined(VK_EXT_pipeline_properties) #define NVVK_HAS_VK_EXT_pipeline_properties #endif /* VK_EXT_pipeline_properties */ #if defined(VK_EXT_private_data) #define NVVK_HAS_VK_EXT_private_data #endif /* VK_EXT_private_data */ #if defined(VK_EXT_sample_locations) #define NVVK_HAS_VK_EXT_sample_locations #endif /* VK_EXT_sample_locations */ #if defined(VK_EXT_shader_module_identifier) #define NVVK_HAS_VK_EXT_shader_module_identifier #endif /* VK_EXT_shader_module_identifier */ #if defined(VK_EXT_shader_object) #define NVVK_HAS_VK_EXT_shader_object #endif /* VK_EXT_shader_object */ #if defined(VK_EXT_swapchain_maintenance1) #define NVVK_HAS_VK_EXT_swapchain_maintenance1 #endif /* VK_EXT_swapchain_maintenance1 */ #if defined(VK_EXT_tooling_info) #define NVVK_HAS_VK_EXT_tooling_info #endif /* VK_EXT_tooling_info */ #if defined(VK_EXT_transform_feedback) #define NVVK_HAS_VK_EXT_transform_feedback #endif /* VK_EXT_transform_feedback */ #if defined(VK_EXT_validation_cache) #define NVVK_HAS_VK_EXT_validation_cache #endif /* VK_EXT_validation_cache */ #if defined(VK_EXT_vertex_input_dynamic_state) #define NVVK_HAS_VK_EXT_vertex_input_dynamic_state #endif /* VK_EXT_vertex_input_dynamic_state */ #if defined(VK_FUCHSIA_buffer_collection) #define NVVK_HAS_VK_FUCHSIA_buffer_collection #endif /* VK_FUCHSIA_buffer_collection */ #if defined(VK_FUCHSIA_external_memory) #define NVVK_HAS_VK_FUCHSIA_external_memory #endif /* VK_FUCHSIA_external_memory */ #if defined(VK_FUCHSIA_external_semaphore) #define NVVK_HAS_VK_FUCHSIA_external_semaphore #endif /* VK_FUCHSIA_external_semaphore */ #if defined(VK_FUCHSIA_imagepipe_surface) #define NVVK_HAS_VK_FUCHSIA_imagepipe_surface #endif /* VK_FUCHSIA_imagepipe_surface */ #if defined(VK_GGP_stream_descriptor_surface) #define NVVK_HAS_VK_GGP_stream_descriptor_surface #endif /* VK_GGP_stream_descriptor_surface */ #if defined(VK_GOOGLE_display_timing) #define NVVK_HAS_VK_GOOGLE_display_timing #endif /* VK_GOOGLE_display_timing */ #if defined(VK_HUAWEI_cluster_culling_shader) #define NVVK_HAS_VK_HUAWEI_cluster_culling_shader #endif /* VK_HUAWEI_cluster_culling_shader */ #if defined(VK_HUAWEI_invocation_mask) #define NVVK_HAS_VK_HUAWEI_invocation_mask #endif /* VK_HUAWEI_invocation_mask */ #if defined(VK_HUAWEI_subpass_shading) #define NVVK_HAS_VK_HUAWEI_subpass_shading #endif /* VK_HUAWEI_subpass_shading */ #if defined(VK_INTEL_performance_query) #define NVVK_HAS_VK_INTEL_performance_query #endif /* VK_INTEL_performance_query */ #if defined(VK_KHR_acceleration_structure) #define NVVK_HAS_VK_KHR_acceleration_structure #endif /* VK_KHR_acceleration_structure */ #if defined(VK_KHR_android_surface) #define NVVK_HAS_VK_KHR_android_surface #endif /* VK_KHR_android_surface */ #if defined(VK_KHR_bind_memory2) #define NVVK_HAS_VK_KHR_bind_memory2 #endif /* VK_KHR_bind_memory2 */ #if defined(VK_KHR_buffer_device_address) #define NVVK_HAS_VK_KHR_buffer_device_address #endif /* VK_KHR_buffer_device_address */ #if defined(VK_KHR_copy_commands2) #define NVVK_HAS_VK_KHR_copy_commands2 #endif /* VK_KHR_copy_commands2 */ #if defined(VK_KHR_create_renderpass2) #define NVVK_HAS_VK_KHR_create_renderpass2 #endif /* VK_KHR_create_renderpass2 */ #if defined(VK_KHR_deferred_host_operations) #define NVVK_HAS_VK_KHR_deferred_host_operations #endif /* VK_KHR_deferred_host_operations */ #if defined(VK_KHR_descriptor_update_template) #define NVVK_HAS_VK_KHR_descriptor_update_template #endif /* VK_KHR_descriptor_update_template */ #if defined(VK_KHR_device_group) #define NVVK_HAS_VK_KHR_device_group #endif /* VK_KHR_device_group */ #if defined(VK_KHR_device_group_creation) #define NVVK_HAS_VK_KHR_device_group_creation #endif /* VK_KHR_device_group_creation */ #if defined(VK_KHR_draw_indirect_count) #define NVVK_HAS_VK_KHR_draw_indirect_count #endif /* VK_KHR_draw_indirect_count */ #if defined(VK_KHR_dynamic_rendering) #define NVVK_HAS_VK_KHR_dynamic_rendering #endif /* VK_KHR_dynamic_rendering */ #if defined(VK_KHR_external_fence_capabilities) #define NVVK_HAS_VK_KHR_external_fence_capabilities #endif /* VK_KHR_external_fence_capabilities */ #if defined(VK_KHR_external_fence_fd) #define NVVK_HAS_VK_KHR_external_fence_fd #endif /* VK_KHR_external_fence_fd */ #if defined(VK_KHR_external_fence_win32) #define NVVK_HAS_VK_KHR_external_fence_win32 #endif /* VK_KHR_external_fence_win32 */ #if defined(VK_KHR_external_memory_capabilities) #define NVVK_HAS_VK_KHR_external_memory_capabilities #endif /* VK_KHR_external_memory_capabilities */ #if defined(VK_KHR_external_memory_fd) #define NVVK_HAS_VK_KHR_external_memory_fd #endif /* VK_KHR_external_memory_fd */ #if defined(VK_KHR_external_memory_win32) #define NVVK_HAS_VK_KHR_external_memory_win32 #endif /* VK_KHR_external_memory_win32 */ #if defined(VK_KHR_external_semaphore_capabilities) #define NVVK_HAS_VK_KHR_external_semaphore_capabilities #endif /* VK_KHR_external_semaphore_capabilities */ #if defined(VK_KHR_external_semaphore_fd) #define NVVK_HAS_VK_KHR_external_semaphore_fd #endif /* VK_KHR_external_semaphore_fd */ #if defined(VK_KHR_external_semaphore_win32) #define NVVK_HAS_VK_KHR_external_semaphore_win32 #endif /* VK_KHR_external_semaphore_win32 */ #if defined(VK_KHR_fragment_shading_rate) #define NVVK_HAS_VK_KHR_fragment_shading_rate #endif /* VK_KHR_fragment_shading_rate */ #if defined(VK_KHR_get_memory_requirements2) #define NVVK_HAS_VK_KHR_get_memory_requirements2 #endif /* VK_KHR_get_memory_requirements2 */ #if defined(VK_KHR_get_physical_device_properties2) #define NVVK_HAS_VK_KHR_get_physical_device_properties2 #endif /* VK_KHR_get_physical_device_properties2 */ #if defined(VK_KHR_maintenance1) #define NVVK_HAS_VK_KHR_maintenance1 #endif /* VK_KHR_maintenance1 */ #if defined(VK_KHR_maintenance3) #define NVVK_HAS_VK_KHR_maintenance3 #endif /* VK_KHR_maintenance3 */ #if defined(VK_KHR_maintenance4) #define NVVK_HAS_VK_KHR_maintenance4 #endif /* VK_KHR_maintenance4 */ #if defined(VK_KHR_map_memory2) #define NVVK_HAS_VK_KHR_map_memory2 #endif /* VK_KHR_map_memory2 */ #if defined(VK_KHR_performance_query) #define NVVK_HAS_VK_KHR_performance_query #endif /* VK_KHR_performance_query */ #if defined(VK_KHR_pipeline_executable_properties) #define NVVK_HAS_VK_KHR_pipeline_executable_properties #endif /* VK_KHR_pipeline_executable_properties */ #if defined(VK_KHR_present_wait) #define NVVK_HAS_VK_KHR_present_wait #endif /* VK_KHR_present_wait */ #if defined(VK_KHR_push_descriptor) #define NVVK_HAS_VK_KHR_push_descriptor #endif /* VK_KHR_push_descriptor */ #if defined(VK_KHR_ray_tracing_maintenance1) #define NVVK_HAS_VK_KHR_ray_tracing_maintenance1 #endif /* VK_KHR_ray_tracing_maintenance1 */ #if defined(VK_KHR_ray_tracing_pipeline) #define NVVK_HAS_VK_KHR_ray_tracing_pipeline #endif /* VK_KHR_ray_tracing_pipeline */ #if defined(VK_KHR_sampler_ycbcr_conversion) #define NVVK_HAS_VK_KHR_sampler_ycbcr_conversion #endif /* VK_KHR_sampler_ycbcr_conversion */ #if defined(VK_KHR_shared_presentable_image) #define NVVK_HAS_VK_KHR_shared_presentable_image #endif /* VK_KHR_shared_presentable_image */ #if defined(VK_KHR_synchronization2) #define NVVK_HAS_VK_KHR_synchronization2 #endif /* VK_KHR_synchronization2 */ #if defined(VK_KHR_timeline_semaphore) #define NVVK_HAS_VK_KHR_timeline_semaphore #endif /* VK_KHR_timeline_semaphore */ #if defined(VK_KHR_video_decode_queue) #define NVVK_HAS_VK_KHR_video_decode_queue #endif /* VK_KHR_video_decode_queue */ #if defined(VK_KHR_video_queue) #define NVVK_HAS_VK_KHR_video_queue #endif /* VK_KHR_video_queue */ #if defined(VK_MVK_ios_surface) #define NVVK_HAS_VK_MVK_ios_surface #endif /* VK_MVK_ios_surface */ #if defined(VK_MVK_macos_surface) #define NVVK_HAS_VK_MVK_macos_surface #endif /* VK_MVK_macos_surface */ #if defined(VK_NN_vi_surface) #define NVVK_HAS_VK_NN_vi_surface #endif /* VK_NN_vi_surface */ #if defined(VK_NVX_binary_import) #define NVVK_HAS_VK_NVX_binary_import #endif /* VK_NVX_binary_import */ #if defined(VK_NVX_image_view_handle) #define NVVK_HAS_VK_NVX_image_view_handle #endif /* VK_NVX_image_view_handle */ #if defined(VK_NV_acquire_winrt_display) #define NVVK_HAS_VK_NV_acquire_winrt_display #endif /* VK_NV_acquire_winrt_display */ #if defined(VK_NV_clip_space_w_scaling) #define NVVK_HAS_VK_NV_clip_space_w_scaling #endif /* VK_NV_clip_space_w_scaling */ #if defined(VK_NV_cooperative_matrix) #define NVVK_HAS_VK_NV_cooperative_matrix #endif /* VK_NV_cooperative_matrix */ #if defined(VK_NV_copy_memory_indirect) #define NVVK_HAS_VK_NV_copy_memory_indirect #endif /* VK_NV_copy_memory_indirect */ #if defined(VK_NV_coverage_reduction_mode) #define NVVK_HAS_VK_NV_coverage_reduction_mode #endif /* VK_NV_coverage_reduction_mode */ #if defined(VK_NV_device_diagnostic_checkpoints) #define NVVK_HAS_VK_NV_device_diagnostic_checkpoints #endif /* VK_NV_device_diagnostic_checkpoints */ #if defined(VK_NV_device_generated_commands) #define NVVK_HAS_VK_NV_device_generated_commands #endif /* VK_NV_device_generated_commands */ #if defined(VK_NV_external_memory_capabilities) #define NVVK_HAS_VK_NV_external_memory_capabilities #endif /* VK_NV_external_memory_capabilities */ #if defined(VK_NV_external_memory_rdma) #define NVVK_HAS_VK_NV_external_memory_rdma #endif /* VK_NV_external_memory_rdma */ #if defined(VK_NV_external_memory_win32) #define NVVK_HAS_VK_NV_external_memory_win32 #endif /* VK_NV_external_memory_win32 */ #if defined(VK_NV_fragment_shading_rate_enums) #define NVVK_HAS_VK_NV_fragment_shading_rate_enums #endif /* VK_NV_fragment_shading_rate_enums */ #if defined(VK_NV_memory_decompression) #define NVVK_HAS_VK_NV_memory_decompression #endif /* VK_NV_memory_decompression */ #if defined(VK_NV_mesh_shader) #define NVVK_HAS_VK_NV_mesh_shader #endif /* VK_NV_mesh_shader */ #if defined(VK_NV_optical_flow) #define NVVK_HAS_VK_NV_optical_flow #endif /* VK_NV_optical_flow */ #if defined(VK_NV_ray_tracing) #define NVVK_HAS_VK_NV_ray_tracing #endif /* VK_NV_ray_tracing */ #if defined(VK_NV_scissor_exclusive) #define NVVK_HAS_VK_NV_scissor_exclusive #endif /* VK_NV_scissor_exclusive */ #if defined(VK_NV_shading_rate_image) #define NVVK_HAS_VK_NV_shading_rate_image #endif /* VK_NV_shading_rate_image */ #if defined(VK_QCOM_tile_properties) #define NVVK_HAS_VK_QCOM_tile_properties #endif /* VK_QCOM_tile_properties */ #if defined(VK_QNX_screen_surface) #define NVVK_HAS_VK_QNX_screen_surface #endif /* VK_QNX_screen_surface */ #if defined(VK_VALVE_descriptor_set_host_mapping) #define NVVK_HAS_VK_VALVE_descriptor_set_host_mapping #endif /* VK_VALVE_descriptor_set_host_mapping */ /* NVVK_GENERATE_DEFINE */