Skip to content

Commit 4bd0cf3

Browse files
authored
Merge branch 'main' into windowing-input-audio
2 parents fd9a24c + 7b638ee commit 4bd0cf3

File tree

8 files changed

+1825
-14
lines changed

8 files changed

+1825
-14
lines changed

.github/workflows/CI.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ jobs:
4444
- name: awesome_bot
4545
run: |
4646
gem install awesome_bot
47-
awesome_bot --request-delay 2 -t 20 --allow-redirect --allow-dupe chapters/*.adoc chapters/extensions/*.adoc --white-list https://apps.apple.com/,https://www.youtube.com/,https://khr.io/slack,https://www.khronos.org/opengl/
47+
awesome_bot --request-delay 2 -t 20 --allow-redirect --allow-dupe chapters/*.adoc chapters/extensions/*.adoc --white-list http://schemas.android.com/apk/res/android.xsd,https://apps.apple.com/,https://www.youtube.com/,https://khr.io/slack,https://www.khronos.org/opengl/

README.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,13 @@ The Vulkan Guide can be built as a single page using `asciidoctor guide.adoc`
6666

6767
== xref:{chapters}windowing_audio_input.adoc[Windowing, Audio, and Input]
6868

69+
== xref:{chapters}ide.adoc[Development Environments & IDEs]
70+
71+
== xref:{chapters}vulkan_profiles.adoc[Vulkan Profiles]
72+
6973
== xref:{chapters}loader.adoc[Loader]
7074

75+
7176
== xref:{chapters}layers.adoc[Layers]
7277

7378
== xref:{chapters}querying_extensions_features.adoc[Querying Properties, Extensions, Features, Limits, and Formats]

antora/modules/ROOT/nav.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@
1111
** xref:{chapters}platforms.adoc[]
1212
** xref:{chapters}checking_for_support.adoc[]
1313
** xref:{chapters}versions.adoc[]
14+
** xref:{chapters}vulkan_profiles.adoc[]
1415
** xref:{chapters}vulkan_release_summary.adoc[]
1516
** xref:{chapters}what_is_spirv.adoc[]
1617
** xref:{chapters}portability_initiative.adoc[]
1718
** xref:{chapters}vulkan_cts.adoc[]
1819
** xref:{chapters}development_tools.adoc[]
20+
** xref:{chapters}ide.adoc[]
1921
** xref:{chapters}validation_overview.adoc[]
2022
** xref:{chapters}decoder_ring.adoc[]
2123
* Using Vulkan

chapters/checking_for_support.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,4 @@ View the link:https://vulkan.lunarg.com/doc/sdk/latest/windows/via.html[SDK docu
8282

8383
A simple way to check for Vulkan support cross platform is to create a simple "`Hello World`" Vulkan application. The `vkCreateInstance` function is used to create a Vulkan Instance and is also the shortest way to write a valid Vulkan application.
8484

85-
The Vulkan SDK provides a minimal link:https://vulkan.lunarg.com/doc/view/latest/windows/tutorial/html/01-init_instance.html[vkCreateInstance] example `01-init_instance.cpp` that can be used.
85+
The Vulkan SDK provides a minimal link:https://docs.vulkan.org/tutorial/latest/03_Drawing_a_triangle/00_Setup/01_Instance.html[vkCreateInstance] example `01-init_instance.cpp` that can be used.

chapters/development_tools.adoc

Lines changed: 103 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Layers are optional components that augment the Vulkan system. They can intercep
2424
The validation layer included multiple features:
2525
** link:https://vulkan.lunarg.com/doc/sdk/latest/windows/synchronization_usage.html[Synchronization Validation]: Identify resource access conflicts due to missing or incorrect synchronization operations between actions (Draw, Copy, Dispatch, Blit) reading or writing the same regions of memory.
2626
** link:https://vulkan.lunarg.com/doc/sdk/latest/windows/gpu_validation.html[GPU-Assisted Validation]: Instrument shader code to perform run-time checks for error conditions produced during shader execution.
27-
** link:https://vulkan.lunarg.com/doc/sdk/latest/windows/debug_printf.html[Shader printf]: Debug shader code by "`printing`" any values of interest to the debug callback or stdout.
27+
** link:https://vulkan.lunarg.com/doc/sdk/latest/windows/debug_printf.html[Shader printf]: Debug shader code by "`printing`" any values of interest to the debug callback or stdout. Environment variables provide a fast path for enabling this feature without code changes.
2828
** link:https://vulkan.lunarg.com/doc/sdk/latest/windows/best_practices.html[Best Practices Warnings]: Highlights potential performance issues, questionable usage patterns, common mistakes.
2929

3030
=== Vulkan SDK layers
@@ -60,7 +60,7 @@ There are also other publicly available layers that can be used to help in devel
6060
* link:https://developer.qualcomm.com/software/adreno-gpu-sdk/tools[`VK_LAYER_adreno`], the Vulkan Adreno Layer.
6161
Checks Vulkan applications for best practices on Qualcomm Adreno devices.
6262

63-
== Debugging
63+
== Debugging
6464

6565
Debugging something running on a GPU can be incredibly hard, luckily there are tools out there to help.
6666

@@ -78,16 +78,107 @@ The following tools help debug crashes.
7878
* link:https://gpuopen.com/radeon-gpu-detective[AMD GPU detective]
7979
* link:https://developer.nvidia.com/nsight-aftermath[NVIDIA Nsight Aftermath SDK]
8080

81+
=== Shader Debugging
82+
83+
Debugging shaders requires specialized tools and techniques. For comprehensive guidance on shader debugging in Vulkan applications, including:
84+
85+
* Shader debugging tools and their IDE integration
86+
* GPU-Assisted Validation for shader debugging
87+
* Shader printf techniques for both GLSL and HLSL
88+
* IDE-specific shader debugging configurations
89+
* Best practices for shader debugging workflows
90+
91+
See the xref:{chapters}ide.adoc#shader-debugging[Shader Debugging Integration] section in the Development Environments & IDEs chapter.
92+
93+
[[profiling]]
8194
== Profiling
8295

83-
With anything related to a GPU it is best to not assume and profile when possible. Here is a list of known profilers to aid in your development.
96+
With anything related to a GPU it is best to not assume and profile when possible. Profiling tools can help identify performance bottlenecks, analyze GPU workloads, and optimize your Vulkan applications. For IDE-specific profiling integration, see the xref:{chapters}ide.adoc[Development Environments & IDEs] chapter.
8497

85-
* link:https://gpuopen.com/rgp/[AMD Radeon GPU Profiler] - Low-level performance analysis tool for AMD Radeon GPUs.
86-
* link:https://developer.android.com/agi[Android GPU Inspector (AGI)] - Google's profiler for the Android platform with support for Vulkan
87-
* link:https://developer.arm.com/Tools%20and%20Software/Streamline%20Performance%20Analyzer[Arm Streamline Performance Analyzer] - Visualize the performance of mobile games and applications for a broad range of devices, using Arm Mobile Studio.
88-
* link:https://www.intel.com/content/www/us/en/developer/tools/graphics-performance-analyzers/overview.html[Intel(R) GPA] - Intel's Graphics Performance Analyzers that supports capturing and analyzing multi-frame streams of Vulkan apps.
89-
* link:https://developer.nvidia.com/nsight-graphics[NVIDIA Nsight]
90-
* link:https://github.com/GPUOpen-Tools/OCAT[OCAT] - The Open Capture and Analytics Tool (OCAT) provides an FPS overlay and performance measurement for D3D11, D3D12, and Vulkan.
91-
* link:https://developer.imaginationtech.com[PVRTune]
92-
* link:https://developer.qualcomm.com/software/snapdragon-profiler[Qualcomm Snapdragon Profiler] - Profiling tool targeting Adreno GPU.
93-
* link:https://www.vktracer.com[VKtracer] - Cross-vendor and cross-platform profiler.
98+
=== Vendor-Specific Profiling Tools
99+
100+
==== AMD
101+
102+
* link:https://gpuopen.com/rgp/[AMD Radeon GPU Profiler (RGP)] - Low-level performance analysis tool for AMD Radeon GPUs.
103+
** Provides detailed timing information for Vulkan API calls and GPU workloads
104+
** Visualizes the rendering pipeline and identifies bottlenecks
105+
** Supports hardware-based ray tracing analysis
106+
** Integrates with xref:{chapters}ide.adoc#visual-studio[Visual Studio] through the Radeon Developer Panel
107+
108+
==== NVIDIA
109+
110+
* link:https://developer.nvidia.com/nsight-graphics[NVIDIA Nsight Graphics] - Comprehensive graphics debugger and profiler for NVIDIA GPUs.
111+
** Provides frame debugging, GPU trace capture, and performance analysis
112+
** Supports Vulkan API debugging and optimization
113+
** Includes shader profiling and memory analysis
114+
** Integrates with xref:{chapters}ide.adoc#visual-studio[Visual Studio] and can be used standalone
115+
116+
==== ARM
117+
118+
* link:https://developer.arm.com/Tools%20and%20Software/Streamline%20Performance%20Analyzer[Arm Streamline Performance Analyzer] - Performance analysis tool for Arm-based devices.
119+
** Visualizes the performance of mobile games and applications
120+
** Provides CPU, GPU, and system-level performance metrics
121+
** Supports Vulkan workload analysis
122+
** Part of Arm Mobile Studio, which integrates with various IDEs
123+
124+
==== Imagination Technologies
125+
126+
* link:https://developer.imaginationtech.com[PVRTune] - Performance analysis tool for PowerVR GPUs.
127+
** Provides real-time hardware performance metrics
128+
** Supports Vulkan API tracing and analysis
129+
** Helps identify bottlenecks in PowerVR-based devices
130+
** Works with xref:{chapters}ide.adoc#android-studio[Android Studio] for mobile development
131+
132+
==== Qualcomm
133+
134+
* link:https://developer.qualcomm.com/software/snapdragon-profiler[Qualcomm Snapdragon Profiler] - Profiling tool targeting Adreno GPUs.
135+
** Provides detailed GPU metrics for Qualcomm Snapdragon devices
136+
** Supports Vulkan API trace capture and analysis
137+
** Includes shader profiling and optimization suggestions
138+
** Integrates with xref:{chapters}ide.adoc#android-studio[Android Studio] for Android development
139+
140+
=== Platform-Specific Profiling Tools
141+
142+
==== Android
143+
144+
* link:https://developer.android.com/agi[Android GPU Inspector (AGI)] - Google's profiler for the Android platform.
145+
** Provides Vulkan API tracing and GPU performance analysis
146+
** Supports system trace correlation with GPU workloads
147+
** Helps identify rendering bottlenecks on Android devices
148+
** Integrates with xref:{chapters}ide.adoc#android-studio[Android Studio]
149+
150+
=== Cross-Platform Profiling Tools
151+
152+
* link:https://github.com/GPUOpen-Tools/OCAT[OCAT] (Open Capture and Analytics Tool) - FPS overlay and performance measurement tool.
153+
** Provides real-time FPS monitoring and performance metrics
154+
** Supports D3D11, D3D12, and Vulkan
155+
** Generates detailed performance reports
156+
** Works alongside any development environment
157+
158+
* link:https://www.vktracer.com[VKtracer] - Cross-vendor and cross-platform Vulkan profiler.
159+
** Captures and analyzes Vulkan API calls
160+
** Works with all Vulkan-compatible GPUs
161+
** Provides timing information and bottleneck identification
162+
** Compatible with various development environments
163+
164+
* link:https://vulkan.lunarg.com/doc/sdk/latest/windows/capture_tools.html[GFXReconstruct] - Frame capture and replay tool for Vulkan.
165+
** Captures Vulkan API calls for later analysis
166+
** Supports cross-platform capture and replay
167+
** Helps identify performance issues and bugs
168+
** Included in the Vulkan SDK and works with all major IDEs
169+
170+
=== Profiling Best Practices
171+
172+
When profiling Vulkan applications, consider the following best practices:
173+
174+
1. **Start with validation layers**: Before profiling, ensure your application passes validation to avoid measuring performance of incorrect code.
175+
176+
2. **Profile on target hardware**: Performance characteristics can vary significantly between different GPUs and platforms.
177+
178+
3. **Use vendor-specific tools** for the most detailed insights on specific hardware.
179+
180+
4. **Combine CPU and GPU profiling** to identify bottlenecks across the entire rendering pipeline.
181+
182+
5. **Profile regularly** throughout development to catch performance regressions early.
183+
184+
For IDE-specific profiling workflows, refer to the relevant sections in the xref:{chapters}ide.adoc[Development Environments & IDEs] chapter.

0 commit comments

Comments
 (0)