From 068d95c0786fb0d59e5879b553ac37154f9734d3 Mon Sep 17 00:00:00 2001 From: DH Date: Tue, 3 Sep 2024 15:31:53 +0300 Subject: [PATCH] cmake: move add_precompiled_vulkan_spirv to root cmake --- CMakeLists.txt | 36 +++++++++++++++++++++++++++++++++ hw/amdgpu/device/CMakeLists.txt | 33 ------------------------------ 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 79118dac..80d7bfd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,42 @@ set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_subdirectory(3rdparty EXCLUDE_FROM_ALL) + +function(add_precompiled_vulkan_spirv target) + add_library(${target} INTERFACE) + set(SPIRV_GEN_ROOT_DIR "spirv-gen/include/") + set(SPIRV_GEN_DIR "${SPIRV_GEN_ROOT_DIR}/shaders") + + cmake_path(ABSOLUTE_PATH SPIRV_GEN_ROOT_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputrootdir) + cmake_path(ABSOLUTE_PATH SPIRV_GEN_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputdir) + file(MAKE_DIRECTORY ${outputrootdir}) + file(MAKE_DIRECTORY ${outputdir}) + target_include_directories(${target} INTERFACE ${outputrootdir}) + + foreach(input IN LISTS ARGN) + cmake_path(GET input FILENAME inputname) + cmake_path(REPLACE_EXTENSION inputname LAST_ONLY .h OUTPUT_VARIABLE outputname) + cmake_path(APPEND outputdir ${outputname} OUTPUT_VARIABLE outputpath) + cmake_path(REMOVE_EXTENSION inputname LAST_ONLY OUTPUT_VARIABLE varname) + + string(REPLACE "." "_" varname ${varname}) + string(PREPEND varname "spirv_") + + add_custom_command( + OUTPUT ${outputpath} + COMMAND $ -V --target-env vulkan1.3 --vn "${varname}" -o "${outputpath}" "${CMAKE_CURRENT_SOURCE_DIR}/${input}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}" glslang-standalone + COMMENT "Generating ${outputname}..." + ) + + set(subtarget ".${target}-subtarget-${outputname}") + add_custom_target(${subtarget} DEPENDS ${outputpath}) + add_dependencies(${target} ${subtarget}) + endforeach() +endfunction() + +add_subdirectory(tools) + add_subdirectory(orbis-kernel) add_subdirectory(rpcsx-os) add_subdirectory(rpcsx-gpu) diff --git a/hw/amdgpu/device/CMakeLists.txt b/hw/amdgpu/device/CMakeLists.txt index 004cfbc8..be22227a 100644 --- a/hw/amdgpu/device/CMakeLists.txt +++ b/hw/amdgpu/device/CMakeLists.txt @@ -5,39 +5,6 @@ set(SRC src/device.cpp ) -function(add_precompiled_vulkan_spirv target) - add_library(${target} INTERFACE) - set(SPIRV_GEN_ROOT_DIR "spirv-gen/include/") - set(SPIRV_GEN_DIR "${SPIRV_GEN_ROOT_DIR}/shaders") - - cmake_path(ABSOLUTE_PATH SPIRV_GEN_ROOT_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputrootdir) - cmake_path(ABSOLUTE_PATH SPIRV_GEN_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputdir) - file(MAKE_DIRECTORY ${outputrootdir}) - file(MAKE_DIRECTORY ${outputdir}) - target_include_directories(${target} INTERFACE ${outputrootdir}) - - foreach(input IN LISTS ARGN) - cmake_path(GET input FILENAME inputname) - cmake_path(REPLACE_EXTENSION inputname LAST_ONLY .h OUTPUT_VARIABLE outputname) - cmake_path(APPEND outputdir ${outputname} OUTPUT_VARIABLE outputpath) - cmake_path(REMOVE_EXTENSION inputname LAST_ONLY OUTPUT_VARIABLE varname) - - string(REPLACE "." "_" varname ${varname}) - string(PREPEND varname "spirv_") - - add_custom_command( - OUTPUT ${outputpath} - COMMAND $ -V --target-env vulkan1.3 --vn "${varname}" -o "${outputpath}" "${CMAKE_CURRENT_SOURCE_DIR}/${input}" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}" glslang-standalone - COMMENT "Generating ${outputname}..." - ) - - set(subtarget ".${target}-subtarget-${outputname}") - add_custom_target(${subtarget} DEPENDS ${outputpath}) - add_dependencies(${target} ${subtarget}) - endforeach() -endfunction() - add_precompiled_vulkan_spirv(${PROJECT_NAME}-shaders src/rect_list.geom.glsl )