mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
vulkan-demos: Add recipe
Sascha Willems collection of Vulkan demos is useful as a smoke testing tool. * Add patch to install binaries and data. * Add patch to fix build on X86 * Use a combination of patch and do_install_append to avoid some 3D models with unclear licensing. (From OE-Core rev: 88a6fa37e7ec2e68cdb2374f2a5371a6f44b3d67) Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
75b147e8a5
commit
2d339f752a
+91
@@ -0,0 +1,91 @@
|
|||||||
|
From 55770fb07c42fe410cf8d09f8f5976babc89b9ef Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
||||||
|
Date: Tue, 4 Jul 2017 17:13:45 +0300
|
||||||
|
Subject: [PATCH] Don't build demos with questionably licensed data
|
||||||
|
|
||||||
|
Some of the models don't have open source compatible licenses:
|
||||||
|
don't build demos using those. Also don't build demos that need
|
||||||
|
resources that are not included.
|
||||||
|
|
||||||
|
ssao:
|
||||||
|
scenerendering:
|
||||||
|
Sibenik model, no license found
|
||||||
|
|
||||||
|
deferred:
|
||||||
|
deferredmultisampling:
|
||||||
|
deferredshadows:
|
||||||
|
armor model, CC-BY-3.0
|
||||||
|
|
||||||
|
vulkanscene:
|
||||||
|
imgui:
|
||||||
|
shadowmapping:
|
||||||
|
vulkanscene model, no license found
|
||||||
|
|
||||||
|
indirectdraw:
|
||||||
|
plant model, no license found
|
||||||
|
|
||||||
|
hdr:
|
||||||
|
pbribl:
|
||||||
|
pbrtexture:
|
||||||
|
Require external Vulkan Asset Pack
|
||||||
|
|
||||||
|
Upstream-Status: Inappropriate [configuration]
|
||||||
|
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 13 -------------
|
||||||
|
1 file changed, 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 4958fff..0f9d3e4 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -150,17 +150,11 @@ set(EXAMPLES
|
||||||
|
computeparticles
|
||||||
|
computeshader
|
||||||
|
debugmarker
|
||||||
|
- deferred
|
||||||
|
- deferredmultisampling
|
||||||
|
- deferredshadows
|
||||||
|
displacement
|
||||||
|
distancefieldfonts
|
||||||
|
dynamicuniformbuffer
|
||||||
|
gears
|
||||||
|
geometryshader
|
||||||
|
- hdr
|
||||||
|
- imgui
|
||||||
|
- indirectdraw
|
||||||
|
instancing
|
||||||
|
mesh
|
||||||
|
multisampling
|
||||||
|
@@ -170,20 +164,14 @@ set(EXAMPLES
|
||||||
|
parallaxmapping
|
||||||
|
particlefire
|
||||||
|
pbrbasic
|
||||||
|
- pbribl
|
||||||
|
- pbrtexture
|
||||||
|
pipelines
|
||||||
|
pushconstants
|
||||||
|
radialblur
|
||||||
|
raytracing
|
||||||
|
- scenerendering
|
||||||
|
screenshot
|
||||||
|
- shadowmapping
|
||||||
|
- shadowmappingomni
|
||||||
|
skeletalanimation
|
||||||
|
specializationconstants
|
||||||
|
sphericalenvmapping
|
||||||
|
- ssao
|
||||||
|
subpasses
|
||||||
|
terraintessellation
|
||||||
|
tessellation
|
||||||
|
@@ -196,7 +184,6 @@ set(EXAMPLES
|
||||||
|
texturesparseresidency
|
||||||
|
triangle
|
||||||
|
viewportarray
|
||||||
|
- vulkanscene
|
||||||
|
)
|
||||||
|
|
||||||
|
buildExamples()
|
||||||
|
--
|
||||||
|
2.13.2
|
||||||
|
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
From b0495efb6c3ea3a530fcbaddac86da57ecce5a66 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
||||||
|
Date: Mon, 10 Jul 2017 13:11:12 +0300
|
||||||
|
Subject: [PATCH] Fix build on x86
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
| func_common.inl:193:51: error: wrong number of template arguments
|
||||||
|
| (5, should be 6) struct compute_sign<T, P, vecType, false, Aligned>
|
||||||
|
|
||||||
|
The fix is backported from the upstream glm project.
|
||||||
|
|
||||||
|
Upstream-Status: Pending [https://github.com/SaschaWillems/Vulkan/issues/356]
|
||||||
|
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
||||||
|
---
|
||||||
|
external/glm/glm/detail/func_common.inl | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/external/glm/glm/detail/func_common.inl b/external/glm/glm/detail/func_common.inl
|
||||||
|
index cafaed5..2dd94e1 100644
|
||||||
|
--- a/external/glm/glm/detail/func_common.inl
|
||||||
|
+++ b/external/glm/glm/detail/func_common.inl
|
||||||
|
@@ -190,12 +190,12 @@ namespace detail
|
||||||
|
|
||||||
|
# if GLM_ARCH == GLM_ARCH_X86
|
||||||
|
template<length_t L, typename T, precision P, template<length_t, typename, precision> class vecType, bool Aligned>
|
||||||
|
- struct compute_sign<T, P, vecType, false, Aligned>
|
||||||
|
+ struct compute_sign<L, T, P, vecType, false, Aligned>
|
||||||
|
{
|
||||||
|
GLM_FUNC_QUALIFIER static vecType<L, T, P> call(vecType<L, T, P> const & x)
|
||||||
|
{
|
||||||
|
T const Shift(static_cast<T>(sizeof(T) * 8 - 1));
|
||||||
|
- vecType<L, T, P> const y(vecType<typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift));
|
||||||
|
+ vecType<L, T, P> const y(vecType<L, typename make_unsigned<T>::type, P>(-x) >> typename make_unsigned<T>::type(Shift));
|
||||||
|
|
||||||
|
return (x >> Shift) | y;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.1.4
|
||||||
|
|
||||||
+85
@@ -0,0 +1,85 @@
|
|||||||
|
From edca667684764cfcc0460e448e834fadf623a887 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
||||||
|
Date: Mon, 3 Jul 2017 14:49:18 +0300
|
||||||
|
Subject: [PATCH] Support installing demos, support out-of-tree builds
|
||||||
|
|
||||||
|
This is especially useful for cross-compile situation where testing
|
||||||
|
happens on target.
|
||||||
|
|
||||||
|
-DRESOURCE_INSTALL_DIR=<path> decides where data is installed (and
|
||||||
|
where the binaries will load the data from): if it's left empty,
|
||||||
|
then nothing will be installed and binaries will load the data from
|
||||||
|
CMAKE_SOURCE_DIR.
|
||||||
|
|
||||||
|
Binaries are now correctly built in CMAKE_BINARY_DIR.
|
||||||
|
|
||||||
|
Upstream-Status: Submitted [https://github.com/SaschaWillems/Vulkan/pull/352]
|
||||||
|
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 15 ++++++++++++++-
|
||||||
|
base/vulkanexamplebase.cpp | 2 +-
|
||||||
|
2 files changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index b9886bc..4958fff 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -16,6 +16,8 @@ include_directories(base)
|
||||||
|
OPTION(USE_D2D_WSI "Build the project using Direct to Display swapchain" OFF)
|
||||||
|
OPTION(USE_WAYLAND_WSI "Build the project using Wayland swapchain" OFF)
|
||||||
|
|
||||||
|
+set(RESOURCE_INSTALL_DIR "" CACHE PATH "Path to install resources to (leave empty for running uninstalled)")
|
||||||
|
+
|
||||||
|
# Use FindVulkan module added with CMAKE 3.7
|
||||||
|
if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
|
||||||
|
message(STATUS "Using module to find Vulkan")
|
||||||
|
@@ -108,6 +110,10 @@ function(buildExample EXAMPLE_NAME)
|
||||||
|
add_executable(${EXAMPLE_NAME} ${MAIN_CPP} ${SOURCE} ${SHADERS})
|
||||||
|
target_link_libraries(${EXAMPLE_NAME} ${Vulkan_LIBRARY} ${ASSIMP_LIBRARIES} ${WAYLAND_CLIENT_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
endif(WIN32)
|
||||||
|
+
|
||||||
|
+ if(RESOURCE_INSTALL_DIR)
|
||||||
|
+ install(TARGETS ${EXAMPLE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
+ endif()
|
||||||
|
endfunction(buildExample)
|
||||||
|
|
||||||
|
# Build all examples
|
||||||
|
@@ -117,6 +123,13 @@ function(buildExamples)
|
||||||
|
endforeach(EXAMPLE)
|
||||||
|
endfunction(buildExamples)
|
||||||
|
|
||||||
|
+if(RESOURCE_INSTALL_DIR)
|
||||||
|
+ add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${RESOURCE_INSTALL_DIR}/\")
|
||||||
|
+ install(DIRECTORY data/ DESTINATION ${RESOURCE_INSTALL_DIR}/)
|
||||||
|
+else()
|
||||||
|
+ add_definitions(-DVK_EXAMPLE_DATA_DIR=\"${CMAKE_SOURCE_DIR}/data/\")
|
||||||
|
+endif()
|
||||||
|
+
|
||||||
|
# Compiler specific stuff
|
||||||
|
IF(MSVC)
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
|
||||||
|
@@ -128,7 +141,7 @@ ELSE(WIN32)
|
||||||
|
link_libraries(${XCB_LIBRARIES} ${Vulkan_LIBRARY})
|
||||||
|
ENDIF(WIN32)
|
||||||
|
|
||||||
|
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin/")
|
||||||
|
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/")
|
||||||
|
|
||||||
|
set(EXAMPLES
|
||||||
|
bloom
|
||||||
|
diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp
|
||||||
|
index 647368a..a0f28a5 100644
|
||||||
|
--- a/base/vulkanexamplebase.cpp
|
||||||
|
+++ b/base/vulkanexamplebase.cpp
|
||||||
|
@@ -84,7 +84,7 @@ const std::string VulkanExampleBase::getAssetPath()
|
||||||
|
#if defined(__ANDROID__)
|
||||||
|
return "";
|
||||||
|
#else
|
||||||
|
- return "./../data/";
|
||||||
|
+ return VK_EXAMPLE_DATA_DIR;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.13.2
|
||||||
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
DESCRIPTION = "Collection of Vulkan examples"
|
||||||
|
LICENSE = "MIT"
|
||||||
|
DEPENDS = "zlib"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dcf473723faabf17baa9b5f2207599d0 \
|
||||||
|
file://triangle/triangle.cpp;endline=12;md5=bccd1bf9cadd9e10086cf7872157e4fa"
|
||||||
|
|
||||||
|
SRC_URI = "git://github.com/SaschaWillems/Vulkan.git \
|
||||||
|
file://0001-Support-installing-demos-support-out-of-tree-builds.patch \
|
||||||
|
file://0001-Don-t-build-demos-with-questionably-licensed-data.patch \
|
||||||
|
file://0001-Fix-build-on-x86.patch \
|
||||||
|
"
|
||||||
|
SRCREV = "18df00c7b4677b0889486e16977857aa987947e2"
|
||||||
|
UPSTREAM_CHECK_GITTAGREGEX = "These are not the releases you're looking for"
|
||||||
|
S = "${WORKDIR}/git"
|
||||||
|
|
||||||
|
inherit cmake distro_features_check
|
||||||
|
DEPENDS = "vulkan assimp"
|
||||||
|
|
||||||
|
do_install_append () {
|
||||||
|
# Remove assets that have uncertain licenses
|
||||||
|
rm ${D}${datadir}/vulkan-demos/models/armor/* \
|
||||||
|
${D}${datadir}/vulkan-demos/models/sibenik/* \
|
||||||
|
${D}${datadir}/vulkan-demos/models/vulkanscene* \
|
||||||
|
${D}${datadir}/vulkan-demos/models/plants.dae \
|
||||||
|
${D}${datadir}/vulkan-demos/textures/texturearray_plants*
|
||||||
|
}
|
||||||
|
|
||||||
|
EXTRA_OECMAKE = "-DRESOURCE_INSTALL_DIR=${datadir}/vulkan-demos"
|
||||||
|
|
||||||
|
ANY_OF_DISTRO_FEATURES = "x11 wayland"
|
||||||
|
|
||||||
|
# Can only pick one of [wayland,xcb]
|
||||||
|
PACKAGECONFIG = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', 'xcb' ,d)}"
|
||||||
|
PACKAGECONFIG[wayland] = "-DUSE_WAYLAND_WSI=ON, -DUSE_WAYLAND_WSI=OFF, wayland"
|
||||||
|
PACKAGECONFIG[xcb] = ",,libxcb"
|
||||||
Reference in New Issue
Block a user