diff --git a/packages/graphics/vulkan/vulkan-headers/package.mk b/packages/graphics/vulkan/vulkan-headers/package.mk new file mode 100644 index 0000000000..31bd246c16 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-headers/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2018-present Frank Hartung (supervisedthinking (@) gmail.com) +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="vulkan-headers" +PKG_VERSION="1.2.201" +PKG_SHA256="6b7f9c809acff4f0877e2e7722e02a08f2e17e06c6e2e8c84081631d15490009" +PKG_LICENSE="Apache-2.0" +PKG_SITE="https://github.com/KhronosGroup/Vulkan-Headers" +PKG_URL="https://github.com/KhronosGroup/Vulkan-Headers/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="Vulkan Header files and API registry" diff --git a/packages/graphics/vulkan/vulkan-loader/package.mk b/packages/graphics/vulkan/vulkan-loader/package.mk new file mode 100644 index 0000000000..0fc2a379ca --- /dev/null +++ b/packages/graphics/vulkan/vulkan-loader/package.mk @@ -0,0 +1,39 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2018-present Frank Hartung (supervisedthinking (@) gmail.com) +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="vulkan-loader" +PKG_VERSION="1.2.201" +PKG_SHA256="465e8a35e875ddebde7cb59f15b0e2cdfae9c3826680c775d7d5b731d95ee1d6" +PKG_LICENSE="Apache-2.0" +PKG_SITE="https://github.com/KhronosGroup/Vulkan-Loader" +PKG_URL="https://github.com/KhronosGroup/Vulkan-Loader/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain vulkan-headers" +PKG_LONGDESC="Vulkan Installable Client Driver (ICD) Loader." + +configure_package() { + # Displayserver Support + if [ "${DISPLAYSERVER}" = "x11" ]; then + PKG_DEPENDS_TARGET+=" libxcb libX11" + elif [ "${DISPLAYSERVER}" = "weston" ]; then + PKG_DEPENDS_TARGET+=" wayland" + fi +} + +pre_configure_target() { + PKG_CMAKE_OPTS_TARGET="-DBUILD_TESTS=OFF" + + if [ "${DISPLAYSERVER}" = "x11" ]; then + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_WSI_XCB_SUPPORT=ON \ + -DBUILD_WSI_XLIB_SUPPORT=ON \ + -DBUILD_WSI_WAYLAND_SUPPORT=OFF" + elif [ "${DISPLAYSERVER}" = "weston" ]; then + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_WSI_XCB_SUPPORT=OFF \ + -DBUILD_WSI_XLIB_SUPPORT=OFF \ + -DBUILD_WSI_WAYLAND_SUPPORT=ON" + else + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_WSI_XCB_SUPPORT=OFF \ + -DBUILD_WSI_XLIB_SUPPORT=OFF \ + -DBUILD_WSI_WAYLAND_SUPPORT=OFF" + fi +} diff --git a/packages/graphics/vulkan/vulkan-loader/patches/vulkan-loader-995.01-fix-cross-compile.patch b/packages/graphics/vulkan/vulkan-loader/patches/vulkan-loader-995.01-fix-cross-compile.patch new file mode 100644 index 0000000000..496285bc38 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-loader/patches/vulkan-loader-995.01-fix-cross-compile.patch @@ -0,0 +1,23 @@ +From 4b90138ea1c28246e6a2b8d9b7568836cc4f3782 Mon Sep 17 00:00:00 2001 +From: SupervisedThinking +Date: Wed, 18 Sep 2019 20:24:48 +0200 +Subject: [PATCH] loader/CMakeList.txt: fix execution of asm_offset + +--- + loader/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt +index ed78054a1..0af792501 100644 +--- a/loader/CMakeLists.txt ++++ b/loader/CMakeLists.txt +@@ -246,7 +246,7 @@ + add_executable(asm_offset asm_offset.c) + target_link_libraries(asm_offset Vulkan::Headers) + target_compile_definitions(asm_offset PRIVATE _GNU_SOURCE) +- add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND asm_offset GAS) ++ add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND ./asm_offset GAS) + add_custom_target(loader_asm_gen_files DEPENDS gen_defines.asm) + else() + if(USE_GAS) + diff --git a/packages/graphics/vulkan/vulkan-tools/package.mk b/packages/graphics/vulkan/vulkan-tools/package.mk new file mode 100644 index 0000000000..dfe6cdfaf3 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-tools/package.mk @@ -0,0 +1,55 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2018-present Frank Hartung (supervisedthinking (@) gmail.com) +# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="vulkan-tools" +PKG_VERSION="1.2.201" +PKG_SHA256="a259667fba1260352a872e70f325fe0a9a04f1caa5ef353e379acf04b1d2a15a" +PKG_LICENSE="Apache-2.0" +PKG_SITE="https://github.com/KhronosGroup/Vulkan-Tools" +PKG_URL="https://github.com/KhronosGroup/Vulkan-tools/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain vulkan-loader glslang:host" +PKG_LONGDESC="This project provides Khronos official Vulkan Tools and Utilities." + +configure_package() { + # Displayserver Support + if [ "${DISPLAYSERVER}" = "x11" ]; then + PKG_DEPENDS_TARGET+=" libxcb libX11" + elif [ "${DISPLAYSERVER}" = "weston" ]; then + PKG_DEPENDS_TARGET+=" wayland" + fi +} + +pre_configure_target() { + PKG_CMAKE_OPTS_TARGET="-DBUILD_VULKANINFO=ON \ + -DBUILD_ICD=OFF \ + -DINSTALL_ICD=OFF \ + -DBUILD_WSI_DIRECTFB_SUPPORT=OFF \ + -Wno-dev" + + if [ "${DISPLAYSERVER}" = "x11" ]; then + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_CUBE=ON \ + -DBUILD_WSI_XCB_SUPPORT=ON \ + -DBUILD_WSI_XLIB_SUPPORT=ON \ + -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ + -DCUBE_WSI_SELECTION=XCB" + elif [ "${DISPLAYSERVER}" = "weston" ]; then + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_CUBE=ON \ + -DBUILD_WSI_XCB_SUPPORT=OFF \ + -DBUILD_WSI_XLIB_SUPPORT=OFF \ + -DBUILD_WSI_WAYLAND_SUPPORT=ON + -DCUBE_WSI_SELECTION=WAYLAND" + else + PKG_CMAKE_OPTS_TARGET+=" -DBUILD_CUBE=ON \ + -DBUILD_WSI_XCB_SUPPORT=OFF \ + -DBUILD_WSI_XLIB_SUPPORT=OFF \ + -DBUILD_WSI_WAYLAND_SUPPORT=OFF \ + -DCUBE_WSI_SELECTION=DISPLAY" + fi +} + +pre_make_target() { + # Fix cross compiling + find ${PKG_BUILD} -name flags.make -exec sed -i "s:isystem :I:g" \{} \; + find ${PKG_BUILD} -name build.ninja -exec sed -i "s:isystem :I:g" \{} \; +} diff --git a/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.01-cmakelists-opts.patch b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.01-cmakelists-opts.patch new file mode 100644 index 0000000000..5bef68f8b2 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.01-cmakelists-opts.patch @@ -0,0 +1,26 @@ +From c9c7423f2d0ecfc7ab354d2a3d9ea9c2e4998416 Mon Sep 17 00:00:00 2001 +From: SupervisedThinking +Date: Thu, 18 Nov 2021 15:02:55 +0100 +Subject: [PATCH] CMakeLists: add CMake options for cube & vulkaninfo + +--- + CMakeLists.txt | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 422b7d2cc..d123c9dc5 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -41,6 +41,12 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + option(BUILD_CUBE "Build cube" ON) + option(BUILD_VULKANINFO "Build vulkaninfo" ON) + option(BUILD_ICD "Build icd" ON) ++option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON) ++option(BUILD_WSI_XLIB_SUPPORT "Build Xlib WSI support" ON) ++option(BUILD_WSI_WAYLAND_SUPPORT "Build Wayland WSI support" ON) ++option(BUILD_WSI_DIRECTFB_SUPPORT "Build DirectFB WSI support" OFF) ++set(CUBE_WSI_SELECTION "XCB" CACHE STRING "Select WSI target for vkcube (XCB, XLIB, WAYLAND, DIRECTFB, DISPLAY)") ++ + # Installing the Mock ICD to system directories is probably not desired since this ICD is not a very complete implementation. + # Require the user to ask that it be installed if they really want it. + option(INSTALL_ICD "Install icd" OFF) diff --git a/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.02-fix-find-pkg-wayland-protocols.patch b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.02-fix-find-pkg-wayland-protocols.patch new file mode 100644 index 0000000000..7e6088a645 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.02-fix-find-pkg-wayland-protocols.patch @@ -0,0 +1,25 @@ +From 3f2debf2710f84f42b999da2b7eb1f168205695f Mon Sep 17 00:00:00 2001 +From: SupervisedThinking +Date: Thu, 18 Nov 2021 13:28:38 +0100 +Subject: [PATCH] cmake/FindWaylandProtocols: fix wayland protocol path + generation for cross compile + +--- + cmake/FindWaylandProtocols.cmake | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/cmake/FindWaylandProtocols.cmake b/cmake/FindWaylandProtocols.cmake +index 17859ed7c..6941f6024 100644 +--- a/cmake/FindWaylandProtocols.cmake ++++ b/cmake/FindWaylandProtocols.cmake +@@ -6,8 +6,8 @@ + + if(NOT WIN32) + find_package(PkgConfig) +- pkg_check_modules(PKG_WAYLAND_PROTOCOLS QUIET wayland-protocols) +- set(WAYLAND_PROTOCOLS_PATH ${PKG_WAYLAND_PROTOCOLS_PREFIX}/share/wayland-protocols) ++ execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=pkgdatadir wayland-protocols ++ OUTPUT_VARIABLE WAYLAND_PROTOCOLS_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) + find_package_handle_standard_args(WAYLAND DEFAULT_MSG WAYLAND_PROTOCOLS_PATH) + mark_as_advanced(WAYLAND_PROTOCOLS_PATH) + endif() diff --git a/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.03-fix-cube-cross-compile.patch b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.03-fix-cube-cross-compile.patch new file mode 100644 index 0000000000..02b7f80dc7 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.03-fix-cube-cross-compile.patch @@ -0,0 +1,45 @@ +From b5ccef606aa9cb8bc96acfeba3b586da0617e80a Mon Sep 17 00:00:00 2001 +From: SupervisedThinking +Date: Fri, 19 Nov 2021 19:46:26 +0100 +Subject: [PATCH] cube: allow cross compile + +--- + cube/CMakeLists.txt | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt +index d59eb4366..c0c9ddad6 100644 +--- a/cube/CMakeLists.txt ++++ b/cube/CMakeLists.txt +@@ -228,7 +228,6 @@ include_directories(${CUBE_INCLUDE_DIRS}) + if(APPLE) + include(macOS/cube/cube.cmake) + elseif(NOT WIN32) +- if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) + add_executable(vkcube + cube.c + ${PROJECT_SOURCE_DIR}/cube/cube.vert +@@ -242,7 +241,6 @@ elseif(NOT WIN32) + if (NEED_RT) + target_link_libraries(vkcube rt) + endif() +- endif() + else() + if(CMAKE_CL_64) + set(LIB_DIR "Win64") +@@ -279,7 +277,6 @@ endif() + if(APPLE) + include(macOS/cubepp/cubepp.cmake) + elseif(NOT WIN32) +- if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL ${CMAKE_HOST_SYSTEM_PROCESSOR}) + add_executable(vkcubepp + cube.cpp + ${PROJECT_SOURCE_DIR}/cube/cube.vert +@@ -288,7 +285,6 @@ elseif(NOT WIN32) + cube.frag.inc + ${OPTIONAL_WAYLAND_DATA_FILES}) + target_link_libraries(vkcubepp Vulkan::Vulkan) +- endif() + else() + if(CMAKE_CL_64) + set(LIB_DIR "Win64") diff --git a/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.04-fix-glslangValidator-logik.patch b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.04-fix-glslangValidator-logik.patch new file mode 100644 index 0000000000..254f287535 --- /dev/null +++ b/packages/graphics/vulkan/vulkan-tools/patches/vulkan-tools-995.04-fix-glslangValidator-logik.patch @@ -0,0 +1,67 @@ +From a1894dc9f650ab94fb7e348e1b06ee75a1e9728b Mon Sep 17 00:00:00 2001 +From: SupervisedThinking +Date: Sat, 20 Nov 2021 18:39:04 +0100 +Subject: [PATCH] CMakeLists: updated glslangValidator logik + +--- + cube/CMakeLists.txt | 43 +++++++++++++++++++++++++++---------------- + 1 file changed, 27 insertions(+), 16 deletions(-) + +diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt +index d59eb4366..a684fc4f0 100644 +--- a/cube/CMakeLists.txt ++++ b/cube/CMakeLists.txt +@@ -26,26 +26,37 @@ endif() + if(GLSLANG_INSTALL_DIR) + message(STATUS "Using GLSLANG_INSTALL_DIR to look for glslangValidator") + find_program(GLSLANG_VALIDATOR names glslangValidator HINTS "${GLSLANG_INSTALL_DIR}/bin") ++ + else() + set(GLSLANG_VALIDATOR_NAME "glslangValidator") +- message(STATUS "Using cmake find_program to look for glslangValidator") +- if(WIN32) +- execute_process( +- COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-windows-x64-Release.zip) +- set(GLSLANG_VALIDATOR_NAME "glslangValidator.exe") +- elseif(APPLE) +- execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-osx-Release.zip) +- elseif(UNIX AND NOT APPLE) # i.e. Linux +- execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-linux-Release.zip) +- endif() +- if (WIN32) +- set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/windows/bin") +- elseif(APPLE) +- set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/darwin/bin") ++ message(CHECK_START "Looking for glslangValidator") ++ find_program(GLSLANG_VALIDATOR NAMES ${GLSLANG_VALIDATOR_NAME} HINTS ${PLATFORM_DIR}) ++ if(GLSLANG_VALIDATOR) ++ message(CHECK_PASS ${GLSLANG_VALIDATOR}) + else() +- set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/linux/bin") ++ if(WIN32) ++ execute_process( ++ COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-windows-x64-Release.zip) ++ set(GLSLANG_VALIDATOR_NAME "glslangValidator.exe") ++ elseif(APPLE) ++ execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-osx-Release.zip) ++ elseif(UNIX AND NOT APPLE) # i.e. Linux ++ execute_process(COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/fetch_glslangvalidator.py glslang-master-linux-Release.zip) ++ endif() ++ if (WIN32) ++ set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/windows/bin") ++ elseif(APPLE) ++ set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/darwin/bin") ++ else() ++ set(PLATFORM_DIR "${PROJECT_SOURCE_DIR}/glslang/linux/bin") ++ endif() ++ find_program(GLSLANG_VALIDATOR NAMES ${GLSLANG_VALIDATOR_NAME} HINTS ${PLATFORM_DIR}) ++ if(GLSLANG_VALIDATOR) ++ message(CHECK_PASS ${GLSLANG_VALIDATOR}) ++ else() ++ message(FATAL_ERROR "no glslangValidator binary found") ++ endif() + endif() +- find_program(GLSLANG_VALIDATOR NAMES ${GLSLANG_VALIDATOR_NAME} HINTS ${PLATFORM_DIR}) + endif() + + if(UNIX AND NOT APPLE) # i.e. Linux