Skip to content

Commit ee4dfe9

Browse files
committed
Merge branch 'main' into shader_quad_control
# Conflicts: # samples/extensions/README.adoc
2 parents b2b8574 + 97fcdee commit ee4dfe9

File tree

591 files changed

+48381
-14413
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

591 files changed

+48381
-14413
lines changed

CMakeLists.txt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ if(Vulkan_FOUND)
7272
message(STATUS "Couldn't find slang Shader Compiler executable, make sure it is present in Vulkan SDK or add it manually via Vulkan_slang_EXECUTABLE cmake variable. Slang shaders won't be compiled.")
7373
endif()
7474
# glsl compiler
75-
if(NOT Vulkan_glslang_exe_FOUND)
75+
if(NOT Vulkan_glslc_exe_FOUND)
7676
find_program(Vulkan_glslc_EXECUTABLE
7777
NAMES glslc
7878
HINTS
@@ -85,7 +85,21 @@ if(Vulkan_FOUND)
8585
else()
8686
message(STATUS "Couldn't find glslc Shader Compiler executable, make sure it is present in Vulkan SDK or add it manually via Vulkan_glslc_EXECUTABLE cmake variable. GLSL shaders won't be compiled.")
8787
endif()
88-
# glsl compiler
88+
# spvasm compiler
89+
if(NOT Vulkan_spirvas_exe_FOUND)
90+
find_program(Vulkan_spirvas_EXECUTABLE
91+
NAMES spirv-as
92+
HINTS
93+
"$ENV{VULKAN_SDK}/Bin"
94+
"$ENV{VULKAN_SDK}/bin"
95+
)
96+
endif()
97+
if(Vulkan_spirvas_EXECUTABLE)
98+
message(STATUS "Found spirv-as Shader Compiler under ${Vulkan_spirvas_EXECUTABLE}")
99+
else()
100+
message(STATUS "Couldn't find spirv-as Shader Compiler executable, make sure it is present in Vulkan SDK or add it manually via Vulkan_spirvas_EXECUTABLE cmake variable. SPIR-V assembly shaders won't be compiled.")
101+
endif()
102+
89103
endif()
90104

91105
# globally add VKB_DEBUG for the debug build

antora/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2022-2024 The Khronos Group Inc.
1+
# Copyright 2022-2025 The Khronos Group Inc.
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Configure Vulkan Guide Antora tree with transformed markup files.
@@ -19,10 +19,10 @@ function(gatherAntoraAssets)
1919
set(IMAGES_DIR_SEARCH)
2020
foreach (DIR ${DIRS_TO_SEARCH})
2121
list(APPEND PAGES_DIR_SEARCH ${CMAKE_SOURCE_DIR}/${DIR}/*.adoc)
22-
list(APPEND IMAGES_DIR_SEARCH ${CMAKE_SOURCE_DIR}/${DIR}/*.jpg ${CMAKE_SOURCE_DIR}/${DIR}/*.png ${CMAKE_SOURCE_DIR}/${DIR}/*.gif)
22+
list(APPEND IMAGES_DIR_SEARCH ${CMAKE_SOURCE_DIR}/${DIR}/*.jpg ${CMAKE_SOURCE_DIR}/${DIR}/*.png ${CMAKE_SOURCE_DIR}/${DIR}/*.gif ${CMAKE_SOURCE_DIR}/*.svg)
2323
endforeach ()
2424
file(GLOB PAGES ${CMAKE_SOURCE_DIR}/*.adoc)
25-
file(GLOB IMAGES ${CMAKE_SOURCE_DIR}/*.jpg ${CMAKE_SOURCE_DIR}/*.png ${CMAKE_SOURCE_DIR}/*.gif)
25+
file(GLOB IMAGES ${CMAKE_SOURCE_DIR}/*.jpg ${CMAKE_SOURCE_DIR}/*.png ${CMAKE_SOURCE_DIR}/*.gif ${CMAKE_SOURCE_DIR}/*.svg)
2626
file(GLOB_RECURSE PAGES_R ${PAGES_DIR_SEARCH})
2727
file(GLOB_RECURSE IMAGES_R ${IMAGES_DIR_SEARCH})
2828

antora/modules/ROOT/nav.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
////
22
- Copyright (c) 2023-2025, Holochip Inc
33
- Copyright (c) 2023-2025, Sascha Willems
4+
- Copyright (c) 2025, Arm Limited and Contributors
45
-
56
- SPDX-License-Identifier: Apache-2.0
67
-
@@ -62,6 +63,7 @@
6263
** xref:samples/extensions/dynamic_rendering/README.adoc[Dynamic rendering]
6364
** xref:samples/extensions/dynamic_rendering_local_read/README.adoc[Dynamic rendering local read]
6465
** xref:samples/extensions/extended_dynamic_state2/README.adoc[Extended dynamic state2]
66+
** xref:samples/extensions/fragment_density_map/README.adoc[Fragment density map]
6567
** xref:samples/extensions/fragment_shader_barycentric/README.adoc[Fragment shader barycentric]
6668
** xref:samples/extensions/fragment_shading_rate/README.adoc[Fragment shading rate]
6769
** xref:samples/extensions/fragment_shading_rate_dynamic/README.adoc[Fragment shading rate dynamic]
@@ -90,6 +92,8 @@
9092
** xref:samples/extensions/shader_debugprintf/README.adoc[Shader Debug Printf]
9193
** xref:samples/extensions/sparse_image/README.adoc[Sparse Image]
9294
** xref:samples/extensions/synchronization_2/README.adoc[Synchronization 2]
95+
** xref:samples/extensions/tensor_and_data_graph/README.adoc[Tensor and Data Graph]
96+
*** xref:samples/extensions/tensor_and_data_graph/simple_tensor_and_data_graph/README.adoc[Simple Tensor and Data Graph]
9397
** xref:samples/extensions/timeline_semaphore/README.adoc[Timeline semaphore]
9498
** xref:samples/extensions/vertex_dynamic_state/README.adoc[Vertex dynamic state]
9599
** xref:samples/extensions/dynamic_multisample_rasterization/README.adoc[Dynamic multisample rasterization]
@@ -128,3 +132,4 @@
128132
** xref:docs/build.adoc[Build guide]
129133
** xref:docs/memory_limits.adoc[Memory limits]
130134
** xref:docs/misc.adoc[Miscellaneous]
135+
* link:https://github.com/KhronosGroup/Vulkan-Samples[GitHub Repository, window=_blank]

bldsys/cmake/global_options.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ set(VKB_WSI_SELECTION "XCB" CACHE STRING "Select WSI target (XCB, XLIB, WAYLAND,
117117
set(VKB_CLANG_TIDY OFF CACHE STRING "Use CMake Clang Tidy integration")
118118
set(VKB_CLANG_TIDY_EXTRAS "-header-filter=framework,samples,app;-checks=-*,google-*,-google-runtime-references;--fix;--fix-errors" CACHE STRING "Clang Tidy Parameters")
119119
set(VKB_PROFILING OFF CACHE BOOL "Enable Tracy profiling")
120+
set(VKB_SKIP_SLANG_SHADER_COMPILATION OFF CACHE BOOL "Skips compilation for Slang shader")
120121

121122
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin/${CMAKE_BUILD_TYPE}/${TARGET_ARCH}")
122123
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "lib/${CMAKE_BUILD_TYPE}/${TARGET_ARCH}")

bldsys/cmake/sample_helper.cmake

Lines changed: 83 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
set(SCRIPT_DIR ${CMAKE_CURRENT_LIST_DIR})
2323

2424
function(add_sample)
25-
set(options)
25+
set(options)
2626
set(oneValueArgs ID CATEGORY AUTHOR NAME DESCRIPTION DXC_ADDITIONAL_ARGUMENTS GLSLC_ADDITIONAL_ARGUMENTS)
2727
set(multiValueArgs FILES LIBS SHADER_FILES_GLSL SHADER_FILES_HLSL SHADER_FILES_SLANG)
2828

@@ -35,7 +35,7 @@ function(add_sample)
3535
AUTHOR ${TARGET_AUTHOR}
3636
NAME ${TARGET_NAME}
3737
DESCRIPTION ${TARGET_DESCRIPTION}
38-
TAGS
38+
TAGS
3939
"any"
4040
FILES
4141
${TARGET_FILES}
@@ -54,7 +54,7 @@ endfunction()
5454
function(add_sample_with_tags)
5555
set(options)
5656
set(oneValueArgs ID CATEGORY AUTHOR NAME DESCRIPTION DXC_ADDITIONAL_ARGUMENTS GLSLC_ADDITIONAL_ARGUMENTS)
57-
set(multiValueArgs TAGS FILES LIBS SHADER_FILES_GLSL SHADER_FILES_HLSL SHADER_FILES_SLANG)
57+
set(multiValueArgs TAGS FILES LIBS SHADER_FILES_GLSL SHADER_FILES_HLSL SHADER_FILES_SLANG SHADER_FILES_SPVASM)
5858

5959
cmake_parse_arguments(TARGET "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
6060

@@ -83,7 +83,12 @@ function(add_sample_with_tags)
8383
# Add slang shader files for this sample
8484
foreach(SHADER_FILE_SLANG ${TARGET_SHADER_FILES_SLANG})
8585
list(APPEND SHADERS_SLANG "${PROJECT_SOURCE_DIR}/shaders/${SHADER_FILE_SLANG}")
86-
endforeach()
86+
endforeach()
87+
88+
# Add spvasm shader files for this sample
89+
foreach(SHADER_FILE_SPVASM ${TARGET_SHADER_FILES_SPVASM})
90+
list(APPEND SHADERS_SPVASM "${PROJECT_SOURCE_DIR}/shaders/${SHADER_FILE_SPVASM}")
91+
endforeach()
8792

8893
add_project(
8994
TYPE "Sample"
@@ -92,7 +97,7 @@ function(add_sample_with_tags)
9297
AUTHOR ${TARGET_AUTHOR}
9398
NAME ${TARGET_NAME}
9499
DESCRIPTION ${TARGET_DESCRIPTION}
95-
TAGS
100+
TAGS
96101
${TARGET_TAGS}
97102
FILES
98103
${SRC_FILES}
@@ -103,15 +108,17 @@ function(add_sample_with_tags)
103108
SHADERS_HLSL
104109
${SHADERS_HLSL}
105110
SHADERS_SLANG
106-
${SHADERS_SLANG}
111+
${SHADERS_SLANG}
112+
SHADERS_SPVASM
113+
${SHADERS_SPVASM}
107114
DXC_ADDITIONAL_ARGUMENTS ${TARGET_DXC_ADDITIONAL_ARGUMENTS}
108115
GLSLC_ADDITIONAL_ARGUMENTS ${TARGET_GLSLC_ADDITIONAL_ARGUMENTS})
109116
endfunction()
110117

111118
function(add_project)
112-
set(options)
119+
set(options)
113120
set(oneValueArgs TYPE ID CATEGORY AUTHOR NAME DESCRIPTION DXC_ADDITIONAL_ARGUMENTS GLSLC_ADDITIONAL_ARGUMENTS)
114-
set(multiValueArgs TAGS FILES LIBS SHADERS_GLSL SHADERS_HLSL SHADERS_SLANG)
121+
set(multiValueArgs TAGS FILES LIBS SHADERS_GLSL SHADERS_HLSL SHADERS_SLANG SHADERS_SPVASM)
115122

116123
cmake_parse_arguments(TARGET "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
117124

@@ -138,16 +145,19 @@ function(add_project)
138145
if (TARGET_SHADERS_HLSL)
139146
source_group("\\Shaders\\hlsl" FILES ${TARGET_SHADERS_HLSL})
140147
# Disable automatic compilation of HLSL shaders for MSVC
141-
set_source_files_properties(SOURCE ${SHADERS_HLSL} PROPERTIES VS_SETTINGS "ExcludedFromBuild=true")
148+
set_source_files_properties(SOURCE ${SHADERS_HLSL} PROPERTIES VS_SETTINGS "ExcludedFromBuild=true")
142149
endif()
143150
if (TARGET_SHADERS_SLANG)
144151
source_group("\\Shaders\\slang" FILES ${TARGET_SHADERS_SLANG})
145-
endif()
152+
endif()
153+
if (TARGET_SHADERS_SPVASM)
154+
source_group("\\Shaders\\spvasm" FILES ${TARGET_SHADERS_SPVASM})
155+
endif()
146156

147157
if(${TARGET_TYPE} STREQUAL "Sample")
148-
add_library(${PROJECT_NAME} OBJECT ${TARGET_FILES} ${SHADERS_GLSL} ${SHADERS_HLSL} ${SHADERS_SLANG})
158+
add_library(${PROJECT_NAME} OBJECT ${TARGET_FILES} ${SHADERS_GLSL} ${SHADERS_HLSL} ${SHADERS_SLANG} ${SHADERS_SPVASM})
149159
elseif(${TARGET_TYPE} STREQUAL "Test")
150-
add_library(${PROJECT_NAME} STATIC ${TARGET_FILES} ${SHADERS_GLSL} ${SHADERS_HLSL} ${SHADERS_SLANG})
160+
add_library(${PROJECT_NAME} STATIC ${TARGET_FILES} ${SHADERS_GLSL} ${SHADERS_HLSL} ${SHADERS_SLANG} ${SHADERS_SPVASM})
151161
endif()
152162
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
153163

@@ -160,15 +170,15 @@ endif()
160170
target_link_libraries(${PROJECT_NAME} PUBLIC ${TARGET_LIBS})
161171
endif()
162172

163-
# capitalise the first letter of the category (performance -> Performance)
173+
# capitalise the first letter of the category (performance -> Performance)
164174
string(SUBSTRING ${TARGET_CATEGORY} 0 1 FIRST_LETTER)
165175
string(TOUPPER ${FIRST_LETTER} FIRST_LETTER)
166176
string(REGEX REPLACE "^.(.*)" "${FIRST_LETTER}\\1" CATEGORY "${TARGET_CATEGORY}")
167177

168178
if(${TARGET_TYPE} STREQUAL "Sample")
169179
# set sample properties
170180
set_target_properties(${PROJECT_NAME}
171-
PROPERTIES
181+
PROPERTIES
172182
SAMPLE_CATEGORY ${TARGET_CATEGORY}
173183
SAMPLE_AUTHOR ${TARGET_AUTHOR}
174184
SAMPLE_NAME ${TARGET_NAME}
@@ -185,12 +195,12 @@ endif()
185195
if(VKB_DO_CLANG_TIDY)
186196
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_CLANG_TIDY "${VKB_DO_CLANG_TIDY}")
187197
endif()
188-
198+
189199
# HLSL compilation via DXC
190200
if(Vulkan_dxc_EXECUTABLE AND DEFINED SHADERS_HLSL)
191201
set(OUTPUT_FILES "")
192202
set(HLSL_TARGET_NAME ${PROJECT_NAME}-HLSL)
193-
foreach(SHADER_FILE_HLSL ${TARGET_SHADERS_HLSL})
203+
foreach(SHADER_FILE_HLSL ${TARGET_SHADERS_HLSL})
194204
get_filename_component(HLSL_SPV_FILE ${SHADER_FILE_HLSL} NAME_WLE)
195205
get_filename_component(bare_name ${HLSL_SPV_FILE} NAME_WLE)
196206
get_filename_component(extension ${HLSL_SPV_FILE} LAST_EXT)
@@ -242,11 +252,20 @@ endif()
242252
endforeach()
243253
add_custom_target(${HLSL_TARGET_NAME} DEPENDS ${OUTPUT_FILES})
244254
set_property(TARGET ${HLSL_TARGET_NAME} PROPERTY FOLDER "Shaders-HLSL")
245-
add_dependencies(${PROJECT_NAME} ${HLSL_TARGET_NAME})
255+
add_dependencies(${PROJECT_NAME} ${HLSL_TARGET_NAME})
246256
endif()
247257

248258
# Slang shader compilation
249-
if(Vulkan_slang_EXECUTABLE AND DEFINED SHADERS_SLANG)
259+
# Skip on MacOS/iOS due to CI/CD using potentially broken slang compiler versions from the SDK
260+
# Might revisit once Slang shipped with the SDK is usable
261+
set(SLANG_SKIP_COMPILE false)
262+
if (($ENV{CI} MATCHES true) AND ((CMAKE_SYSTEM_NAME MATCHES "Darwin") OR (CMAKE_SYSTEM_NAME MATCHES "iOS")))
263+
set(SLANG_SKIP_COMPILE true)
264+
endif()
265+
if(VKB_SKIP_SLANG_SHADER_COMPILATION)
266+
set(SLANG_SKIP_COMPILE true)
267+
endif()
268+
if(NOT SLANG_SKIP_COMPILE AND Vulkan_slang_EXECUTABLE AND DEFINED SHADERS_SLANG)
250269
set(OUTPUT_FILES "")
251270
set(SLANG_TARGET_NAME ${PROJECT_NAME}-SLANG)
252271
foreach(SHADER_FILE_SLANG ${TARGET_SHADERS_SLANG})
@@ -274,11 +293,11 @@ endif()
274293
endforeach()
275294
add_custom_target(${SLANG_TARGET_NAME} DEPENDS ${OUTPUT_FILES})
276295
set_property(TARGET ${SLANG_TARGET_NAME} PROPERTY FOLDER "Shaders-SLANG")
277-
add_dependencies(${PROJECT_NAME} ${SLANG_TARGET_NAME})
296+
add_dependencies(${PROJECT_NAME} ${SLANG_TARGET_NAME})
278297
endif()
279298

280299
# GLSL shader compilation
281-
if(Vulkan_glslc_EXECUTABLE AND DEFINED SHADERS_GLSL)
300+
if(Vulkan_glslc_EXECUTABLE AND DEFINED SHADERS_GLSL)
282301
set(GLSL_TARGET_NAME ${PROJECT_NAME}-GLSL)
283302
set(OUTPUT_FILES "")
284303
foreach(SHADER_FILE_GLSL ${TARGET_SHADERS_GLSL})
@@ -293,9 +312,22 @@ endif()
293312
set(OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/shader-glsl-spv")
294313
set(OUTPUT_FILE ${OUTPUT_DIR}/${bare_name}${extension}.spv)
295314
file(MAKE_DIRECTORY ${OUTPUT_DIR})
315+
316+
# NOTE: Vulkan SDK has old glslc but new glslang. We must use glslang to compile shaders from `tensor_and_data_graph`.
317+
# TODO: Remove workaround once glslc is updated.
318+
if ("${CMAKE_CURRENT_BINARY_DIR}" MATCHES "tensor_and_data_graph" AND NOT ${SHADER_FILE_GLSL} MATCHES "base")
319+
# glslang (NOT glslangValidator, as that also seems to be old)
320+
string(REPLACE "glslangValidator" "glslang" GLSLANG_EXECUTABLE ${Vulkan_GLSLANG_VALIDATOR_EXECUTABLE})
321+
SET(COMPILE_COMMAND ${GLSLANG_EXECUTABLE} ${SHADER_FILE_GLSL} -o ${OUTPUT_FILE} -V -I"${CMAKE_SOURCE_DIR}/shaders/includes/glsl" ${TARGET_GLSLC_ADDITIONAL_ARGUMENTS})
322+
else()
323+
# glslc
324+
SET(COMPILE_COMMAND ${Vulkan_glslc_EXECUTABLE} ${SHADER_FILE_GLSL} -o ${OUTPUT_FILE} -I "${CMAKE_SOURCE_DIR}/shaders/includes/glsl" ${TARGET_GLSLC_ADDITIONAL_ARGUMENTS})
325+
endif()
326+
327+
296328
add_custom_command(
297329
OUTPUT ${OUTPUT_FILE}
298-
COMMAND ${Vulkan_glslc_EXECUTABLE} ${SHADER_FILE_GLSL} -o ${OUTPUT_FILE} -I "${CMAKE_SOURCE_DIR}/shaders/includes/glsl" ${TARGET_GLSLC_ADDITIONAL_ARGUMENTS}
330+
COMMAND ${COMPILE_COMMAND}
299331
COMMAND ${CMAKE_COMMAND} -E copy ${OUTPUT_FILE} ${directory}
300332
MAIN_DEPENDENCY ${SHADER_FILE_GLSL}
301333
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -310,4 +342,34 @@ endif()
310342
add_dependencies(${PROJECT_NAME} ${GLSL_TARGET_NAME})
311343
endif()
312344

345+
# spvasm shader compilation
346+
if(Vulkan_spirvas_EXECUTABLE AND DEFINED SHADERS_SPVASM)
347+
set(SPVASM_TARGET_NAME ${PROJECT_NAME}-SPVASM)
348+
set(OUTPUT_FILES "")
349+
foreach(SHADER_FILE_SPVASM ${TARGET_SHADERS_SPVASM})
350+
get_filename_component(SPVASM_FILE ${SHADER_FILE_SPVASM} NAME_WLE)
351+
get_filename_component(bare_name ${SPVASM_FILE} NAME_WLE)
352+
get_filename_component(extension ${SHADER_FILE_SPVASM} LAST_EXT)
353+
get_filename_component(directory ${SHADER_FILE_SPVASM} DIRECTORY)
354+
set(OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/shader-spvasm-spv")
355+
set(OUTPUT_FILE ${OUTPUT_DIR}/${bare_name}${extension}.spv)
356+
file(MAKE_DIRECTORY ${OUTPUT_DIR})
357+
add_custom_command(
358+
OUTPUT ${OUTPUT_FILE}
359+
COMMAND ${Vulkan_spirvas_EXECUTABLE} ${SHADER_FILE_SPVASM} -o ${OUTPUT_FILE} ${TARGET_SPVASM_ADDITIONAL_ARGUMENTS}
360+
COMMAND ${CMAKE_COMMAND} -E copy ${OUTPUT_FILE} ${directory}
361+
MAIN_DEPENDENCY ${SHADER_FILE_SPVASM}
362+
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
363+
)
364+
list(APPEND OUTPUT_FILES ${OUTPUT_FILE})
365+
set_source_files_properties(${OUTPUT_FILE} PROPERTIES
366+
MACOSX_PACKAGE_LOCATION Resources
367+
)
368+
endforeach()
369+
add_custom_target(${SPVASM_TARGET_NAME} DEPENDS ${OUTPUT_FILES})
370+
set_property(TARGET ${SPVASM_TARGET_NAME} PROPERTY FOLDER "Shaders-SPVASM")
371+
add_dependencies(${PROJECT_NAME} ${SPVASM_TARGET_NAME})
372+
373+
endif()
374+
313375
endfunction()

docs/build.adoc

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ Tracy is not currently enabled for Android builds. In the future, we may add sup
105105

106106
*Default:* `OFF`
107107

108+
=== VKB_SKIP_SLANG_SHADER_COMPILATION
109+
110+
By default, Slang shaders are compiled if a Slang compiler is found on the system. In cases where this is undesirable, set this to `OFF` to disable Slang shader compilation.
111+
112+
You can still select Slang as a shading language target for the samples since Slang shaders are included as precompiled SPIR-V files.
113+
114+
*Default:* `OFF`
115+
108116
== Quality Assurance
109117

110118
We use a small set of tools to provide a level of quality to the project.
@@ -174,33 +182,14 @@ Please make sure, when running any sample, that you either:
174182
* Run Command Prompt or Visual Studio as administrator
175183
____
176184

177-
`Step 1.` The following command will generate the VS project
178-
179-
----
180-
cmake -G "Visual Studio 15 2017 Win64" -S . -Bbuild/windows
181-
----
182-
183-
(Prior to CMake v3.13)
184-
185-
----
186-
cmake -G "Visual Studio 15 2017 Win64" . -Bbuild/windows
187-
----
188-
189-
(New in CMake v3.14.
190-
Visual Studio 2019 must be installed)
191-
192-
----
193-
cmake -G "Visual Studio 16 2019" -A x64 -S . -Bbuild/windows
194-
----
195-
196-
(New in CMake v3.21.
197-
Visual Studio 2022 must be installed)
185+
`Step 1.` Generate the VS solution from the root of the repository
198186

187+
(For other VS versions please refer to https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html#id15[CMake Generators])
199188
----
200189
cmake -G "Visual Studio 17 2022" -A x64 -S . -Bbuild/windows
201190
----
202191

203-
Open the *vulkan_samples.sln* VS project inside build/windows and build with Ctrl-Shift-B. To run Vulkan Samples, use Visual Studio's Debug Properties selection and set the Debugging Command Arguments to --help. Click the "Local Windows Debugger" button and you should see the help output in the terminal. For convenience, the default setting is to run the hello_triangle sample; just edit that to your desired sample to run.
192+
Open the *vulkan_samples.sln* or *vulkan_samples.slnx* VS solution inside *build/windows* and build with Ctrl-Shift-B. To run Vulkan Samples, use Visual Studio's Debug Properties selection and set the Debugging Command Arguments to --help. Click the "Local Windows Debugger" button and you should see the help output in the terminal. For convenience, the default setting is to run the hello_triangle sample; just edit that to your desired sample to run.
204193

205194
Alternatively, for command line builds use the steps below:
206195

@@ -210,10 +199,10 @@ Alternatively, for command line builds use the steps below:
210199
cmake --build build/windows --config Release --target vulkan_samples
211200
----
212201

213-
`Step 3.` Run the *Vulkan Samples* application
202+
`Step 3.` Run the *Vulkan Samples* application by specifying the name of the sample
214203

215204
----
216-
build\windows\app\bin\Release\AMD64\vulkan_samples.exe
205+
build\windows\app\bin\Release\AMD64\vulkan_samples.exe sample <sample_name>
217206
----
218207

219208
== Linux
@@ -388,7 +377,7 @@ ____
388377
It is highly recommended to install https://d.android.com/studio[Android Studio] to build, run and trace the sample project. Building via Android Studio requires at least Ladybug 2024.2.1.
389378

390379
Android Studio uses the following plugins/tools to build samples:
391-
380+
392381
* Android Gradle Plugin
393382
* CMake Plugin, which installs and uses Ninja
394383
* NDK

0 commit comments

Comments
 (0)