Appendix
Feature Support Matrix
Feature | D3D11 | D3D12 | OpenGL | Vulkan |
---|---|---|---|---|
Frame Capture and Live Analysis |
Yes |
Yes |
Yes |
Yes |
Range Profiling and Performance Counters |
Yes |
Yes |
Yes |
|
Real-time Performance Signals |
Yes |
Yes |
Yes |
|
Real-time Performance Experiments |
Yes |
Yes |
Yes |
|
C++ Capture |
Yes |
Yes |
Yes |
Yes |
Shader Performance Analysis |
Yes |
Yes |
Yes |
Yes |
Pixel History |
Yes |
Yes |
Yes |
Yes |
Dynamic Shader Editing |
Yes |
Yes |
Yes |
|
GPU Trace |
Yes |
|||
Ray Tracing Debugging |
Yes |
Yes |
||
Nsight Aftermath GPU Crash Dumps |
Yes |
Supported OpenGL Functions
NVIDIA Nsight Graphics's Frame Debugger supports the set of OpenGL operations, which are defined by the OpenGL 4.5 core profile. Note that it is not necessary to create a core profile context to make use of the frame debugger. An application that uses a compatibility profile context, but restricts itself to using the OpenGL 4.5 core subset, will also work. A few OpenGL 4.5 compatibility profile features, such as support for alpha testing and a default vertex array object, are also supported.
The Frame Debugger supports three classes of OpenGL extensions, described below.
1. OpenGL Core Context Support
The OpenGL extensions listed below are supported in as much as the extension has been adopted by the OpenGL 4.5 core profile. For example, EXT_subtexture is included as part of OpenGL 1.1. Calls to glTexSubImage2DEXT are supported and behave the same as calls to glTexSubImage2D. On the other hand, while EXT_vertex_array is also included as part of OpenGL 1.1, glColorPointerEXT is not supported by the Frame Debugger. The operation of glColorPointerEXT was modified when it was included as part of OpenGL 1.1. Additionally, glColorPointer is part of the compatibility subset, but not the core subset.
// GL 1.1 EXT_vertex_array EXT_polygon_offset EXT_blend_logic_op EXT_texture EXT_copy_texture EXT_subtexture EXT_texture_object
// GL 1.2 EXT_texture3D EXT_bgra EXT_packed_pixels EXT_rescale_normal EXT_separate_specular_color SGIS_texture_edge_clamp SGIS_texture_lod EXT_draw_range_elements EXT_color_table EXT_color_subtable EXT_convolutionHP_convolution_border_modes SGI_color_matrix EXT_histogram EXT_blend_color EXT_blend_minmax EXT_blend_subtract
// GL 1.2.1 EXT_SGIS_multitexture
// GL 1.3 ARB_texture_compression ARB_texture_cube_map ARB_multisample ARB_multitexture ARB_texture_env_add ARB_texture_env_combine ARB_texture_env_dot3 ARB_texture_border_clamp ARB_transpose_matrix
// GL 1.4 SGIS_generate_mipmap NV_blend_square ARB_depth_texture ARB_shadow EXT_fog_coord EXT_multi_draw_arrays ARB_point_arameters EXT_secondary_color EXT_blend_func_separate EXT_stencil_wrap EXT_texture_env_crossbar EXT_texture_lod_bias ARB_texture_mirrored_repeat ARB_window_pos
// GL 1.5 ARB_vertex_buffer_object ARB_occlusion_query EXT_shadow_funcs
// GL 2.0 ARB_shader_objects ARB_vertex_shader ARB_fragment_shader ARB_draw_buffers ARB_texture_non_power_of_two ARB_point_sprite EXT_blend_equation_separate ATI_separate_stencil EXT_stencil_two_side
// GL 2.1 ARB_pixel_buffer_object EXT_direct_state_access EXT_texture_sRGB
// GL 3.0 EXT_gpu_shader4 NV_conditional_render APPLE_flush_buffer_range ARB_color_buffer_float NV_depth_buffer_float ARB_texture_float EXT_packed_float EXT_texture_shared_exponent EXT_framebuffer_object NV_half_float ARB_half_float_pixel EXT_framebuffer_multisample EXT_framebuffer_blit EXT_texture_integer EXT_texture_array EXT_packed_depth_stencil EXT_draw_buffers2 EXT_texture_compression_rgtc EXT_transform_feedback APPLE_vertex_array_object EXT_framebuffer_sRGB
// GL 3.1 EXT_draw_instanced ARB_draw_instanced ARB_copy_buffer NV_primitive_restart ARB_texture_buffer_object ARB_texture_rectangle ARB_uniform_buffer_object
// GL 3.2 ARB_vertex_array_bgra ARB_draw_elements_base_vertex ARB_fragment_coord_conventions ARB_provoking_vertex ARB_seamless_cube_map ARB_texture_multisample ARB_depth_clamp ARB_geometry_shader_4 ARB_sync
// GL 3.3 ARB_shader_bit_encoding ARB_blend_func_extended ARB_explicit_attrib_location ARB_occlusion_query2 ARB_sampler_objects ARB_texture_rgb10_a2ui ARB_texture_swizzle ARB_timer_query ARB_instanced_arrays ARB_vertex_type_2_10_10_10_rev
// GL 4.0 ARB_texture_query_lod ARB_draw_buffers_blend ARB_draw_indirect ARB_gpu_shader5 ARB_gpu_shader_fp64 ARB_sample_shading ARB_shader_subroutine ARB_tessellation_shader ARB_texture_buffer_object_rgb32 ARB_texture_cube_map_array ARB_texture_gather ARB_transform_feedback2 ARB_transform_feedback3
// GL 4.1 ARB_ES2_compatibility ARB_get_program_binary ARB_separate_shader_objects ARB_shader_precision ARB_vertex_attrib_64bit ARB_viewport_array
// GL 4.2 ARB_texture_compression_bptc ARB_compressed_texture_pixel_storage ARB_shader_atomic_counters ARB_texture_storage ARB_transform_feedback_instanced ARB_base_instance ARB_shader_image_load_store ARB_conservative_depth ARB_shading_language_420pack ARB_internalformat_query ARB_map_buffer_alignment
// GL 4.3 ARB_multi_draw_indirect ARB_program_interface_query ARB_shader_storage_buffer_object ARB_copy_image ARB_vertex_attrib_binding ARB_texture_view ARB_invalidate_subdata ARB_framebuffer_no_attachments ARB_stencil_texturing ARB_explicit_uniform_location ARB_texture_storage_multisample ARB_program_interface_query ARB_robust_buffer_access_behavior ARB_ES3_compatibility ARB_clear_buffer_object ARB_internal_format_query2 ARB_texture_buffer_range ARB_compute_shader ARB_debug_group ARB_debug_label ARB_debug_output
// GL 4.4 ARB_query_buffer_object ARB_enhanced_layouts ARB_multi_bind ARB_vertex_type_10f_11f_11f_rev ARB_texture_mirror_clamp_to_edge ARB_clear_texture
// GL 4.5 ARB_clip_control ARB_cull_distance ARB_conditional_render_inverted GL_KHR_context_flush_control ARB_get_texture_sub_image GL_KHR_robustness ARB_texture_barrier ARB_ES3_1_compatibility ARB_direct_state_access ARB_shader_texture_image_samples ARB_derivative_control
2. Other Supported OpenGL Extensions
The second class of OpenGL extensions is listed below. These extensions are not part of OpenGL 4.5 core or compatibility, but are fully supported by the frame debugger target. Context and object state, which is added by these extensions, may not be displayed by the host UI.
ARB_framebuffer_object EXT_texture_filter_anisotropic NV_buffer_store ARB_vertex_attrib_binding ARB_multi_draw_indirect NV_gpu_multicast ARB_parallel_shader_compile ARB_seamless_cubemap_per_texture NV_shader_buffer_load NV_vertex_buffer_unified_memory
3. Partially Supported OpenGL Extensions
The third class of OpenGL extensions are ones for which there is partial support. These extensions are listed below.
ARB_bindless_texture WGL_ARB_extensions_string WGL_ARB_pixel_format WGL_EXT_extensions_string WGL_EXT_swap_control WGL_EXT_swap_control_tear WGL_ARB_create_context
4. OpenGL Immediate Mode
Beyond the core functionality and extensions, a selection of immediate-mode functions is supported.
glBegin glEnd glVertex* glColor* glIndex* glNormal* glTexCoord* glDrawElement glEnableClientState glDisableClientState glVertexPointer glColorPointer glSecondaryColorPointer glIndexPointer glNormalPointer
Supported Vulkan Functions
NVIDIA Nsight Graphics™ frame debugging supports all of Vulkan 1.1.97, with the exception of functions and resources associated with sparse textures.
Note: |
Sparse texture support will be added to a future version of NVIDIA Nsight Graphics. |
Additionally, the follow extensions are supported:
VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_ANDROID_external_memory_android_hardware_buffer VK_EXT_astc_decode_mode VK_EXT_blend_operation_advanced VK_EXT_buffer_device_address VK_EXT_calibrated_timestamps VK_EXT_conditional_rendering VK_EXT_conservative_rasterization VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_debug_utils VK_EXT_depth_clip_enable VK_EXT_depth_range_unrestricted VK_EXT_descriptor_indexing VK_EXT_discard_rectangles VK_EXT_display_surface_counter VK_EXT_filter_cubic VK_EXT_fragment_density_map VK_EXT_fragment_shader_interlock VK_EXT_global_priority VK_EXT_hdr_metadata VK_EXT_headless_surface VK_EXT_host_query_reset VK_EXT_inline_uniform_block VK_EXT_memory_budget VK_EXT_memory_priority VK_EXT_pci_bus_info VK_EXT_pipeline_creation_feedback VK_EXT_post_depth_coverage VK_EXT_queue_family_foreign VK_EXT_sample_locations VK_EXT_sampler_filter_minmax VK_EXT_separate_stencil_usage VK_EXT_shader_demote_to_helper_invocation VK_EXT_shader_stencil_export VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_shader_viewport_index_layer VK_EXT_swapchain_colorspace VK_EXT_texel_buffer_alignment VK_EXT_transform_feedback VK_EXT_validation_cache VK_EXT_validation_features VK_EXT_validation_flags VK_EXT_vertex_attribute_divisor VK_EXT_ycbcr_image_arrays VK_GOOGLE_decorate_string VK_GOOGLE_hlsl_functionality1 VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_INTEL_shader_integer_functions2 VK_KHR_16bit_storage VK_KHR_8bit_storage VK_KHR_android_surface VK_KHR_bind_memory2 VK_KHR_create_renderpass2 VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_device_group VK_KHR_device_group_creation VK_KHR_display VK_KHR_display_swapchain VK_KHR_draw_indirect_count VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_display_properties2 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_image_format_list VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_maintenance2 VK_KHR_maintenance3 VK_KHR_multiview VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_sampler_ycbcr_conversion VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_surface_protected_capabilities VK_KHR_swapchain VK_KHR_uniform_buffer_standard_layout VK_KHR_variable_pointers VK_KHR_vulkan_memory_model VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_NV_clip_space_w_scaling VK_NV_compute_shader_derivatives VK_NV_cooperative_matrix VK_NV_corner_sampled_image VK_NV_coverage_reduction_mode VK_NV_dedicated_allocation VK_NV_dedicated_allocation_image_aliasing VK_NV_device_diagnostic_checkpoints VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_fragment_shader_barycentric VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_mesh_shader VK_NV_ray_tracing VK_NV_representative_fragment_test VK_NV_sample_mask_override_coverage VK_NV_scissor_exclusive VK_NV_shader_image_footprint VK_NV_shader_sm_builtins VK_NV_shader_subgroup_partitioned VK_NV_shading_rate_image VK_NV_viewport_array2 VK_NV_viewport_swizzle
Unsupported Captures
NVIDIA Nsight Graphics maintains a list of the unsupported functions or operations that are used by the application. If an unsupported operation is encountered, an unsupported capture will be reported. This unsupported capture guards against crashes or incorrect results coming from known limitations.
In some cases, however, these unsupported operations might not impact any analysis that follows. Accordingly, after warning about the risks of an unsupported capture, NVIDIA Nsight Graphics will offer the opportunity to proceed despite this warning. If the user proceeds, NVIDIA Nsight Graphics will continue into capture on a best-effort basis.
If you determine that this unsupported operation is innocuous, and you wish to turn it off completely, you may suppress this warning via the Ignore Incompatibilities option. Note that this will prevent you from being notified of future incompatibilities, however, so please use with caution.
Update Notification
NVIDIA Nsight Graphics can check for a new version and notify the user of any updates. There are 2 options available for controlling this feature, found in the Environment tab of the Tools > Options view.
By default, NVIDIA Nsight Graphics checks for updates every time the app is started. This can be changed by selecting “No” for the “Check for updates at startup” option. With this option disabled, NVIDIA Nsight Graphics will still check for updates every 3 days.
Update notifications can be completely disabled by setting the “Show version update notifications” value to “No”.
If the automatic checking feature is disabled, the user can still check for updates by selecting the Help > Check for updates… menu option.
Notices
Notice
THE INFORMATION IN THIS GUIDE AND ALL OTHER INFORMATION CONTAINED IN NVIDIA DOCUMENTATION REFERENCED IN THIS GUIDE IS PROVIDED “AS IS.” NVIDIA MAKES NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO THE INFORMATION FOR THE PRODUCT, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. Notwithstanding any damages that customer might incur for any reason whatsoever, NVIDIA’s aggregate and cumulative liability towards customer for the product described in this guide shall be limited in accordance with the NVIDIA terms and conditions of sale for the product.
THE NVIDIA PRODUCT DESCRIBED IN THIS GUIDE IS NOT FAULT TOLERANT AND IS NOT DESIGNED, MANUFACTURED OR INTENDED FOR USE IN CONNECTION WITH THE DESIGN, CONSTRUCTION, MAINTENANCE, AND/OR OPERATION OF ANY SYSTEM WHERE THE USE OR A FAILURE OF SUCH SYSTEM COULD RESULT IN A SITUATION THAT THREATENS THE SAFETY OF HUMAN LIFE OR SEVERE PHYSICAL HARM OR PROPERTY DAMAGE (INCLUDING, FOR EXAMPLE, USE IN CONNECTION WITH ANY NUCLEAR, AVIONICS, LIFE SUPPORT OR OTHER LIFE CRITICAL APPLICATION). NVIDIA EXPRESSLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH HIGH RISK USES. NVIDIA SHALL NOT BE LIABLE TO CUSTOMER OR ANY THIRD PARTY, IN WHOLE OR IN PART, FOR ANY CLAIMS OR DAMAGES ARISING FROM SUCH HIGH RISK USES.
NVIDIA makes no representation or warranty that the product described in this guide will be suitable for any specified use without further testing or modification. Testing of all parameters of each product is not necessarily performed by NVIDIA. It is customer’s sole responsibility to ensure the product is suitable and fit for the application planned by customer and to do the necessary testing for the application in order to avoid a default of the application or the product. Weaknesses in customer’s product designs may affect the quality and reliability of the NVIDIA product and may result in additional or different conditions and/or requirements beyond those contained in this guide. NVIDIA does not accept any liability related to any default, damage, costs or problem which may be based on or attributable to: (i) the use of the NVIDIA product in any manner that is contrary to this guide, or (ii) customer product designs.
Other than the right for customer to use the information in this guide with the product, no other license, either expressed or implied, is hereby granted by NVIDIA under this guide. Reproduction of information in this guide is permissible only if reproduction is approved by NVIDIA in writing, is reproduced without alteration, and is accompanied by all associated conditions, limitations, and notices.
Trademarks
NVIDIA, the NVIDIA logo, and cuBLAS, CUDA, CUDA-GDB, CUDA-MEMCHECK, cuDNN, cuFFT, cuSPARSE, DIGITS, DGX, DGX-1, DGX Station, NVIDIA DRIVE, NVIDIA DRIVE AGX, NVIDIA DRIVE Software, NVIDIA DRIVE OS, NVIDIA Developer Zone (aka "DevZone"), GRID, Jetson, NVIDIA Jetson Nano, NVIDIA Jetson AGX Xavier, NVIDIA Jetson TX2, NVIDIA Jetson TX2i, NVIDIA Jetson TX1, NVIDIA Jetson TK1, Kepler, NGX, NVIDIA GPU Cloud, Maxwell, Multimedia API, NCCL, NVIDIA Nsight Compute, NVIDIA Nsight Eclipse Edition, NVIDIA Nsight Graphics, NVIDIA Nsight Systems, NVLink, nvprof, Pascal, NVIDIA SDK Manager, Tegra, TensorRT, Tesla, Visual Profiler, VisionWorks and Volta are trademarks and/or registered trademarks of NVIDIA Corporation in the United States and other countries. Other company and product names may be trademarks of the respective companies with which they are associated.