From fecccd7ebf62b8da88569d229b5c7bb3938aaa76 Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Fri, 7 Apr 2017 13:51:54 +0200 Subject: tdx-nv-binaries: renamed from trdx-nv-binaries While at it also update the comment in recipes-graphics/mesa/mesa_%.bbappend. Signed-off-by: Marcel Ziswiler Acked-by: Dominik Sliwa --- recipes-bsp/tdx-nv-binaries/files/aplay.desktop | 5 + recipes-bsp/tdx-nv-binaries/files/egl.pc | 10 ++ recipes-bsp/tdx-nv-binaries/files/eglplatform.h | 147 ++++++++++++++++ recipes-bsp/tdx-nv-binaries/files/gles.pc | 10 ++ recipes-bsp/tdx-nv-binaries/files/glesv2.pc | 10 ++ .../tdx-nv-binaries/files/khronos_headers.tgz | Bin 0 -> 279190 bytes recipes-bsp/tdx-nv-binaries/files/mimeapps.list | 10 ++ .../tdx-nv-binaries/files/nvgstplayer.desktop | 6 + .../tdx-nv-binaries/files/nvsamples-hardfp.patch | Bin 0 -> 6479 bytes .../files/nvsamples-no-binary-shaders.patch | 93 ++++++++++ .../tdx-nv-binaries/files/nvsamples-oe.patch | 50 ++++++ recipes-bsp/tdx-nv-binaries/nvsamples.bb | 59 +++++++ recipes-bsp/tdx-nv-binaries/tdx-nv-binaries.bb | 187 +++++++++++++++++++++ recipes-bsp/trdx-nv-binaries/files/aplay.desktop | 5 - recipes-bsp/trdx-nv-binaries/files/egl.pc | 10 -- recipes-bsp/trdx-nv-binaries/files/eglplatform.h | 147 ---------------- recipes-bsp/trdx-nv-binaries/files/gles.pc | 10 -- recipes-bsp/trdx-nv-binaries/files/glesv2.pc | 10 -- .../trdx-nv-binaries/files/khronos_headers.tgz | Bin 279190 -> 0 bytes recipes-bsp/trdx-nv-binaries/files/mimeapps.list | 10 -- .../trdx-nv-binaries/files/nvgstplayer.desktop | 6 - .../trdx-nv-binaries/files/nvsamples-hardfp.patch | Bin 6479 -> 0 bytes .../files/nvsamples-no-binary-shaders.patch | 93 ---------- .../trdx-nv-binaries/files/nvsamples-oe.patch | 50 ------ recipes-bsp/trdx-nv-binaries/nvsamples.bb | 59 ------- recipes-bsp/trdx-nv-binaries/trdx-nv-binaries.bb | 187 --------------------- 26 files changed, 587 insertions(+), 587 deletions(-) create mode 100644 recipes-bsp/tdx-nv-binaries/files/aplay.desktop create mode 100644 recipes-bsp/tdx-nv-binaries/files/egl.pc create mode 100644 recipes-bsp/tdx-nv-binaries/files/eglplatform.h create mode 100644 recipes-bsp/tdx-nv-binaries/files/gles.pc create mode 100644 recipes-bsp/tdx-nv-binaries/files/glesv2.pc create mode 100644 recipes-bsp/tdx-nv-binaries/files/khronos_headers.tgz create mode 100644 recipes-bsp/tdx-nv-binaries/files/mimeapps.list create mode 100644 recipes-bsp/tdx-nv-binaries/files/nvgstplayer.desktop create mode 100644 recipes-bsp/tdx-nv-binaries/files/nvsamples-hardfp.patch create mode 100644 recipes-bsp/tdx-nv-binaries/files/nvsamples-no-binary-shaders.patch create mode 100644 recipes-bsp/tdx-nv-binaries/files/nvsamples-oe.patch create mode 100644 recipes-bsp/tdx-nv-binaries/nvsamples.bb create mode 100644 recipes-bsp/tdx-nv-binaries/tdx-nv-binaries.bb delete mode 100644 recipes-bsp/trdx-nv-binaries/files/aplay.desktop delete mode 100644 recipes-bsp/trdx-nv-binaries/files/egl.pc delete mode 100644 recipes-bsp/trdx-nv-binaries/files/eglplatform.h delete mode 100644 recipes-bsp/trdx-nv-binaries/files/gles.pc delete mode 100644 recipes-bsp/trdx-nv-binaries/files/glesv2.pc delete mode 100644 recipes-bsp/trdx-nv-binaries/files/khronos_headers.tgz delete mode 100644 recipes-bsp/trdx-nv-binaries/files/mimeapps.list delete mode 100644 recipes-bsp/trdx-nv-binaries/files/nvgstplayer.desktop delete mode 100644 recipes-bsp/trdx-nv-binaries/files/nvsamples-hardfp.patch delete mode 100644 recipes-bsp/trdx-nv-binaries/files/nvsamples-no-binary-shaders.patch delete mode 100644 recipes-bsp/trdx-nv-binaries/files/nvsamples-oe.patch delete mode 100644 recipes-bsp/trdx-nv-binaries/nvsamples.bb delete mode 100644 recipes-bsp/trdx-nv-binaries/trdx-nv-binaries.bb (limited to 'recipes-bsp') diff --git a/recipes-bsp/tdx-nv-binaries/files/aplay.desktop b/recipes-bsp/tdx-nv-binaries/files/aplay.desktop new file mode 100644 index 0000000..ead86f3 --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/aplay.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Application +Name=aplay +Exec=aplay %f +NoDisplay=true diff --git a/recipes-bsp/tdx-nv-binaries/files/egl.pc b/recipes-bsp/tdx-nv-binaries/files/egl.pc new file mode 100644 index 0000000..3af7eec --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/egl.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=/usr/lib +includedir=/usr/include + +Name: egl +Description: EGL implementation +Version: 1 +Cflags: -I${includedir}/EGL +Libs: -L${libdir} -lEGL diff --git a/recipes-bsp/tdx-nv-binaries/files/eglplatform.h b/recipes-bsp/tdx-nv-binaries/files/eglplatform.h new file mode 100644 index 0000000..72b5f2d --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/eglplatform.h @@ -0,0 +1,147 @@ +#ifndef __eglplatform_h_ +#define __eglplatform_h_ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Platform-specific types and definitions for egl.h + * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "EGL" component "Registry". + */ + +#include + +/* Macros used in EGL function prototype declarations. + * + * EGL functions should be prototyped as: + * + * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); + * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); + * + * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h + */ + +#ifndef EGLAPI +#define EGLAPI KHRONOS_APICALL +#endif + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY KHRONOS_APIENTRY +#endif +#define EGLAPIENTRYP EGLAPIENTRY* + +/* The types NativeDisplayType, NativeWindowType, and NativePixmapType + * are aliases of window-system-dependent types, such as X Display * or + * Windows Device Context. They must be defined in platform-specific + * code below. The EGL-prefixed versions of Native*Type are the same + * types, renamed in EGL 1.3 so all types in the API start with "EGL". + * + * Khronos STRONGLY RECOMMENDS that you use the default definitions + * provided below, since these changes affect both binary and source + * portability of applications using EGL running on different EGL + * implementations. + */ + +#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include + +typedef HDC EGLNativeDisplayType; +typedef HBITMAP EGLNativePixmapType; +typedef HWND EGLNativeWindowType; + +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ + +typedef int EGLNativeDisplayType; +typedef void *EGLNativeWindowType; +typedef void *EGLNativePixmapType; + +#elif defined(WL_EGL_PLATFORM) + +typedef struct wl_display *EGLNativeDisplayType; +typedef struct wl_egl_pixmap *EGLNativePixmapType; +typedef struct wl_egl_window *EGLNativeWindowType; + +#elif defined(__GBM__) + +typedef struct gbm_device *EGLNativeDisplayType; +typedef struct gbm_bo *EGLNativePixmapType; +typedef void *EGLNativeWindowType; + +#elif defined(ANDROID) /* Android */ + +struct ANativeWindow; +struct egl_native_pixmap_t; + +typedef struct ANativeWindow *EGLNativeWindowType; +typedef struct egl_native_pixmap_t *EGLNativePixmapType; +typedef void *EGLNativeDisplayType; + +#elif defined(__unix__) + +/* don't include the X headers here, some define clash with Qt5 symbols */ +#if 1 + +typedef struct _XDisplay *EGLNativeDisplayType; +typedef unsigned long EGLNativePixmapType; +typedef unsigned long EGLNativeWindowType; + +#else + +/* X11 (tentative) */ +#include +#include + +typedef Display *EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; + +#endif /* MESA_EGL_NO_X11_HEADERS */ + +#else +#error "Platform not recognized" +#endif + +/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ +typedef EGLNativeDisplayType NativeDisplayType; +typedef EGLNativePixmapType NativePixmapType; +typedef EGLNativeWindowType NativeWindowType; + + +/* Define EGLint. This must be a signed integral type large enough to contain + * all legal attribute names and values passed into and out of EGL, whether + * their type is boolean, bitmask, enumerant (symbolic constant), integer, + * handle, or other. While in general a 32-bit integer will suffice, if + * handles are 64 bit types, then EGLint should be defined as a signed 64-bit + * integer type. + */ +typedef khronos_int32_t EGLint; + +#endif /* __eglplatform_h */ diff --git a/recipes-bsp/tdx-nv-binaries/files/gles.pc b/recipes-bsp/tdx-nv-binaries/files/gles.pc new file mode 100644 index 0000000..91387c9 --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/gles.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=/usr/lib +includedir=/usr/include + +Name: glesv2 +Description: OpenGL ES 1.1 implementation +Version: 1.1 +Cflags: -I${includedir}/GLES +Libs: -L${libdir} -lGLESv1_CM diff --git a/recipes-bsp/tdx-nv-binaries/files/glesv2.pc b/recipes-bsp/tdx-nv-binaries/files/glesv2.pc new file mode 100644 index 0000000..356a1cb --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/glesv2.pc @@ -0,0 +1,10 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=/usr/lib +includedir=/usr/include + +Name: glesv2 +Description: OpenGL ES 2 implementation +Version: 2 +Cflags: -I${includedir}/GLESv2 +Libs: -L${libdir} -lGLESv2 diff --git a/recipes-bsp/tdx-nv-binaries/files/khronos_headers.tgz b/recipes-bsp/tdx-nv-binaries/files/khronos_headers.tgz new file mode 100644 index 0000000..5eb5db7 Binary files /dev/null and b/recipes-bsp/tdx-nv-binaries/files/khronos_headers.tgz differ diff --git a/recipes-bsp/tdx-nv-binaries/files/mimeapps.list b/recipes-bsp/tdx-nv-binaries/files/mimeapps.list new file mode 100644 index 0000000..6a513dc --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/mimeapps.list @@ -0,0 +1,10 @@ +[Added Associations] +video/mpeg=nvgstplayer.desktop; +video/x-msvideo=nvgstplayer.desktop; +video/mp4=nvgstplayer.desktop; +video/quicktime=nvgstplayer.desktop; +video/x-ms-wmv=nvgstplayer.desktop; +video/x-matroska=cd nvgstplayer.desktop; +audio/mpeg=nvgstplayer.desktop; +audio/basic=aplay.desktop; +audio/x-wav=aplay.desktop; diff --git a/recipes-bsp/tdx-nv-binaries/files/nvgstplayer.desktop b/recipes-bsp/tdx-nv-binaries/files/nvgstplayer.desktop new file mode 100644 index 0000000..f85659c --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/nvgstplayer.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Type=Application +Name=nvgstplayer +Exec=nvgstplayer --uri %u +Terminal=true +NoDisplay=true diff --git a/recipes-bsp/tdx-nv-binaries/files/nvsamples-hardfp.patch b/recipes-bsp/tdx-nv-binaries/files/nvsamples-hardfp.patch new file mode 100644 index 0000000..43376d7 Binary files /dev/null and b/recipes-bsp/tdx-nv-binaries/files/nvsamples-hardfp.patch differ diff --git a/recipes-bsp/tdx-nv-binaries/files/nvsamples-no-binary-shaders.patch b/recipes-bsp/tdx-nv-binaries/files/nvsamples-no-binary-shaders.patch new file mode 100644 index 0000000..73b27a1 --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/nvsamples-no-binary-shaders.patch @@ -0,0 +1,93 @@ +diff -Naur nvsamples.orig/make/nvdefs.mk nvsamples/make/nvdefs.mk +--- nvsamples.orig/make/nvdefs.mk 2012-09-10 19:16:45.299731097 +0200 ++++ nvsamples/make/nvdefs.mk 2012-09-24 19:41:40.659811178 +0200 +@@ -86,7 +86,8 @@ + + NV_CGDIR = $(NV_TOPDIR)/utils/Cg + HEXIFY = $(NV_CGDIR)/hexify.pl +-CGC = $(NV_CGDIR)/$(NV_HOST_OSTYPE)/cgc -quiet ++#prevent binary shaders, the L4T OpenGL drivers do not support them ++#CGC = $(NV_CGDIR)/$(NV_HOST_OSTYPE)/cgc -quiet + SHADER_FIX = $(NV_CGDIR)/$(NV_HOST_OSTYPE)/shaderfix + CGC_CG = $(CGC) + CGC_GLSL = $(CGC) -ogles +@@ -124,3 +127,10 @@ + $(CGC_CG_FRG) -o $*.tmp $< + $(SHADER_FIX) -o $@ $*.tmp + rm -rf $*.tmp ++ ++#deploy source shaders in headerfiles ++%.hglslv: %.glslv ++ $(HEXIFY) $< $@ ++ ++%.hglslf: %.glslf ++ $(HEXIFY) $< $@ + +diff -Naur nvsamples.orig/samples/opengles2/bubble/shaders.c nvsamples/samples/opengles2/bubble/shaders.c +--- nvsamples.orig/samples/opengles2/bubble/shaders.c 2011-05-04 13:36:25.000000000 +0200 ++++ nvsamples/samples/opengles2/bubble/shaders.c 2012-10-16 14:17:57.593654157 +0200 +@@ -88,16 +88,16 @@ + // Otherwise, load and compile the shader sources + prog_bubble = + NvGl2DemoLoadShaderSources( +- "bubble_vert.glslv", "bubble_frag.glslf", GL_FALSE); ++ "shaders/bubble_vert.glslv", "shaders/bubble_frag.glslf", GL_FALSE); + prog_mesh = + NvGl2DemoLoadShaderSources( +- "mesh_vert.glslv", "mesh_frag.glslf", GL_FALSE); ++ "shaders/mesh_vert.glslv", "shaders/mesh_frag.glslf", GL_FALSE); + prog_cube = + NvGl2DemoLoadShaderSources( +- "envCube_vert.glslv", "envCube_frag.glslf", GL_FALSE); ++ "shaders/envCube_vert.glslv", "shaders/envCube_frag.glslf", GL_FALSE); + prog_mouse = + NvGl2DemoLoadShaderSources( +- "mouse_vert.glslv", "mouse_frag.glslf", GL_FALSE); ++ "shaders/mouse_vert.glslv", "shaders/mouse_frag.glslf", GL_FALSE); + # endif + + success = prog_bubble && prog_mesh && prog_cube && prog_mouse; +diff -Naur nvsamples.orig/samples/opengles2/ctree/shaders.c nvsamples/samples/opengles2/ctree/shaders.c +--- nvsamples.orig/samples/opengles2/ctree/shaders.c 2011-05-04 13:36:26.000000000 +0200 ++++ nvsamples/samples/opengles2/ctree/shaders.c 2012-10-16 14:17:16.193651084 +0200 +@@ -130,22 +130,22 @@ + // Otherwise, load and compile the shader sources + prog_solids = + NvGl2DemoLoadShaderSources( +- "lighting_vert.glslv", "solids_frag.glslf", GL_FALSE); ++ "shaders/lighting_vert.glslv", "shaders/solids_frag.glslf", GL_FALSE); + prog_leaves = + NvGl2DemoLoadShaderSources( +- "lighting_vert.glslv", "leaves_frag.glslf", GL_FALSE); ++ "shaders/lighting_vert.glslv", "shaders/leaves_frag.glslf", GL_FALSE); + prog_simplecol = + NvGl2DemoLoadShaderSources( +- "simplecol_vert.glslv", "simplecol_frag.glslf", GL_FALSE); ++ "shaders/simplecol_vert.glslv", "shaders/simplecol_frag.glslf", GL_FALSE); + prog_simpletex = + NvGl2DemoLoadShaderSources( +- "simpletex_vert.glslv", "simpletex_frag.glslf", GL_FALSE); ++ "shaders/simpletex_vert.glslv", "shaders/simpletex_frag.glslf", GL_FALSE); + prog_overlaycol = + NvGl2DemoLoadShaderSources( +- "overlaycol_vert.glslv", "overlaycol_frag.glslf", GL_FALSE); ++ "shaders/overlaycol_vert.glslv", "shaders/overlaycol_frag.glslf", GL_FALSE); + prog_overlaytex = + NvGl2DemoLoadShaderSources( +- "overlaytex_vert.glslv", "overlaytex_frag.glslf", GL_FALSE); ++ "shaders/overlaytex_vert.glslv", "shaders/overlaytex_frag.glslf", GL_FALSE); + # endif + success = prog_solids && prog_leaves + && prog_simplecol && prog_simpletex +diff -Naur nvsamples.orig/samples/opengles2/gears/gears.c nvsamples/samples/opengles2/gears/gears.c +--- nvsamples.orig/samples/opengles2/gears/gears.c 2011-05-04 13:36:27.000000000 +0200 ++++ nvsamples/samples/opengles2/gears/gears.c 2012-10-16 14:14:51.433680786 +0200 +@@ -393,7 +393,7 @@ + // Otherwise, load and compile the shader source + gearShaderProgram = + NvGl2DemoLoadShaderSources( +- "gears_vert.glslv", "gears_frag.glslf", GL_FALSE); ++ "shaders/gears_vert.glslv", "shaders/gears_frag.glslf", GL_FALSE); + # endif + + // Use the program we just loaded diff --git a/recipes-bsp/tdx-nv-binaries/files/nvsamples-oe.patch b/recipes-bsp/tdx-nv-binaries/files/nvsamples-oe.patch new file mode 100644 index 0000000..5b8e137 --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/files/nvsamples-oe.patch @@ -0,0 +1,50 @@ +diff -Naur nvsamples-1.0-r0.orig/nvsamples/make/nvdefs.mk nvsamples-1.0-r0/nvsamples/make/nvdefs.mk +--- nvsamples/make/nvdefs.mk.orig 2011-12-07 10:22:49.000000000 +0100 ++++ nvsamples/make/nvdefs.mk 2012-07-07 12:37:13.000000000 +0200 +@@ -1,4 +1,4 @@ +-NV_TOPDIR = $(HOME)/nvsamples ++NV_TOPDIR = $(WORKDIR)/nvsamples + NV_PLATFORM_DIR = $(NV_TOPDIR) + NV_KERNDIR = $(NV_TOPDIR)/../kernel + +@@ -42,17 +42,13 @@ + NV_PLATFORM_CPPFLAGS += -DKD + endif + +-NV_PLATFORM_LDFLAGS = ++NV_PLATFORM_LDFLAGS = -L/usr/X11R6.4/lib -lX11 -lICE -lSM + + NV_PLATFORM_SDK_INC_DIR = $(NV_TOPDIR)/include + NV_PLATFORM_SDK_LIB_DIR = $(NV_TOPDIR)/lib-target +-ROOTFS_LIB_DIR = $(NV_TOPDIR)/../T20_LinuxImageV1.0Beta4/rootfs/usr/lib + + NV_PLATFORM_SDK_INC = -I$(NV_PLATFORM_SDK_INC_DIR) +-NV_PLATFORM_SDK_LIB = -L$(NV_PLATFORM_SDK_LIB_DIR) \ +- -L$(ROOTFS_LIB_DIR) \ +- -Xlinker -rpath-link \ +- -Xlinker $(ROOTFS_LIB_DIR) ++NV_PLATFORM_SDK_LIB = -L$(NV_PLATFORM_SDK_LIB_DIR) + NV_PLATFORM_OPT = -Os -O2 + NV_PLATFORM_MATHLIB = -lm + NV_PLATFORM_THREADLIB = -lpthread +@@ -80,13 +76,13 @@ + + # compiler utilities + +-CROSSBIN = $(NV_TOPDIR)/../arm-2009q3/bin/arm-none-linux-gnueabi- +-CC = $(CROSSBIN)gcc +-CXX = $(CROSSBIN)g++ +-LD = $(CROSSBIN)gcc +-AR = $(CROSSBIN)ar +-RANLIB = $(CROSSBIN)ranlib +-STRIP = $(CROSSBIN)strip ++CROSSBIN = arm-angstrom-linux-gnueabi- ++CC ?= $(CROSSBIN)gcc ++CXX ?= $(CROSSBIN)g++ ++LD = $(CC) ++AR ?= $(CROSSBIN)ar ++RANLIB ?= $(CROSSBIN)ranlib ++STRIP ?= $(CROSSBIN)strip + + NV_CGDIR = $(NV_TOPDIR)/utils/Cg + HEXIFY = $(NV_CGDIR)/hexify.pl diff --git a/recipes-bsp/tdx-nv-binaries/nvsamples.bb b/recipes-bsp/tdx-nv-binaries/nvsamples.bb new file mode 100644 index 0000000..493ec8f --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/nvsamples.bb @@ -0,0 +1,59 @@ +SECTION = "graphical/utils" +SUMMARY = "Nvidia samples for OpenGL ES, OpenGL ES headers" +LICENSE = "CLOSED" +DEPENDS = "tdx-nv-binaries virtual/libx11 libsm libice" + +PR = "r1" + +PARALLEL_MAKE = "" + +SRC_URI = " \ + http://developer.toradex.com/files/toradex-dev/uploads/media/Colibri/Linux/Samples/nvsamples.tar.bz2 \ + file://nvsamples-oe.patch \ + file://nvsamples-no-binary-shaders.patch \ + file://nvsamples-hardfp.patch \ +" + +S = "${WORKDIR}/nvsamples" + +SRC_URI[md5sum] = "240b0beb0056dde2e6ac1538dc8b6684" +SRC_URI[sha256sum] = "2638beea80fd85fdc5f9443e6959c210e275e627f662266cd404ce7c68b0806d" + +#no gnu_hash in NVIDIA binaries, skip QA for this package +INSANE_SKIP_${PN} = "dev-so ldflags" + +FILES_${PN} += " \ + /home/root/textures/* \ + /home/root/shaders/* \ +" + +do_compile () { + cd ${S}/samples/tools/nvtexfont2 + oe_runmake clean + oe_runmake WORKDIR=${WORKDIR} + ln -sf ../samples/tools/nvtexfont2/libnvtexfont2.a ${S}/lib-target/ + + cd ${S}/samples/tools/nvgl2demo_common + oe_runmake clean + oe_runmake WORKDIR=${WORKDIR} + ln -sf ../samples/tools/nvgl2demo_common/libnvgl2demo_common.a ${S}/lib-target/ + + cd ${S}/samples/opengles2 + oe_runmake clean + oe_runmake WORKDIR=${WORKDIR} +} + +do_install () { + # install the sample code + install -d ${D}${bindir} + install -d ${D}/home/root/textures + install -d ${D}/home/root/shaders + install -m 0755 ${S}/samples/opengles2/ctree/ctree ${D}${bindir} + install -m 0644 ${S}/samples/opengles2/ctree/textures/* ${D}/home/root/textures + install -m 0644 ${S}/samples/opengles2/ctree/*.glsl? ${D}/home/root/shaders + install -m 0755 ${S}/samples/opengles2/bubble/bubble ${D}${bindir} + install -m 0644 ${S}/samples/opengles2/bubble/textures/* ${D}/home/root/textures + install -m 0644 ${S}/samples/opengles2/bubble/*.glsl? ${D}/home/root/shaders + install -m 0755 ${S}/samples/opengles2/gears/gears ${D}${bindir} + install -m 0644 ${S}/samples/opengles2/gears/*.glsl? ${D}/home/root/shaders +} diff --git a/recipes-bsp/tdx-nv-binaries/tdx-nv-binaries.bb b/recipes-bsp/tdx-nv-binaries/tdx-nv-binaries.bb new file mode 100644 index 0000000..cd5f668 --- /dev/null +++ b/recipes-bsp/tdx-nv-binaries/tdx-nv-binaries.bb @@ -0,0 +1,187 @@ +SUMMARY = "binary files from Nvidia along with their configuration" +LICENSE = "CLOSED & SGI & Khronos" +PR = "r19" + +PACKAGE_ARCH = "${MACHINE_ARCH}" +COMPATIBLE_MACHINE = "(tegra)" + +PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2" + +# the khronos headers are taken from here: https://www.khronos.org/registry/khronos_headers.tgz +# this tarball changes from time to time breaking the receipe, thus it is provided with the recipe +SRC_COMMON = " \ + file://aplay.desktop \ + file://egl.pc \ + file://eglplatform.h \ + file://gles.pc \ + file://glesv2.pc \ + file://khronos_headers.tgz \ + file://mimeapps.list \ + file://nvgstplayer.desktop \ + https://www.khronos.org/registry/omxil/api/1.1.2/OpenMAX_IL_1_1_2_Header.zip;name=openmax-h;unpack=no \ +" + +SRC_URI_tegra2 = " \ + http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/ventana_release_armhf/Tegra20_Linux-codecs_R16.5_armhf.tbz2;name=t20codecs \ + http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/ventana_release_armhf/Tegra20_Linux_R16.5_armhf.tbz2;name=t20drivers \ + ${SRC_COMMON} \ +" + +SRC_URI_tegra3 = " \ + http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/cardhu_release_armhf/Tegra30_Linux-codecs_R16.5_armhf.tbz2;name=t30codecs \ + http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/cardhu_release_armhf/Tegra30_Linux_R16.5_armhf.tbz2;name=t30drivers \ + http://developer.toradex.com/files/toradex-dev/uploads/media/Colibri/Linux/Extra/libgstomx.so;name=libgstomx \ + ${SRC_COMMON} \ +" + +SRC_URI[openmax-h.md5sum] = "402a7600397c341895cfecbbe1f4e028" +SRC_URI[openmax-h.sha256sum] = "e7159c88185df60a0dbb28583815067c31285a1f1d4652f6752a7329ccb534d1" + +SRC_URI[t20codecs.md5sum] = "03da7451b755094c61dade6250f1ad0a" +SRC_URI[t20codecs.sha256sum] = "0c5fe818d5e0bdc83c24b7cb0db4f87705244258bfe1925d0a0a0698e3bf712b" +SRC_URI[t20drivers.md5sum] = "5252b747668c14376b3f82d08debad2c" +SRC_URI[t20drivers.sha256sum] = "02b7a83b29cec59cf275b98f0de0fc87a24ffa25593af6af729cd2e881c41587" + +SRC_URI[t30codecs.md5sum] = "03a0b726f18a26ed379c62b83119e497" +SRC_URI[t30codecs.sha256sum] = "640df86c47d0dd6cbfc15eff49ee146a964c2a0362fe52ee6880c84e08b7a98b" +SRC_URI[t30drivers.md5sum] = "8759be1c7b93511cf70939df28b8af51" +SRC_URI[t30drivers.sha256sum] = "2288ad9ce30239975208cbd5fd896791c9d37d87ca8d30b51f04bacc74835427" +SRC_URI[libgstomx.md5sum] = "faa6ee38fb1b7aba7c6c7f98f6b2cedd" +SRC_URI[libgstomx.sha256sum] = "844c2f3ecb8498a9b287c2b2bc6184de75c2cf7d76f64f0a7749e76e1a37a1dc" + + +# xserver-xorg driver ABI version to be used by the symlink, must match the required ABI version from the used xserver +XSERVER_DRIVER_ABI_REQUIRED = "14" + +LIC_FILES_CHKSUM = " \ + file://../khronos_headers/GLES2/gl2.h;beginline=8;endline=29;md5=c0e8cc16602f8077310fb00bbf128ef6 \ + file://${WORKDIR}/Linux_for_Tegra/nv_tegra/LICENSE;md5=d88b0db2ba7f6dfe70852c64b2fce6ce \ + file://${WORKDIR}/Tegra_Software_License_Agreement-Tegra-Linux-codecs.txt;md5=47cc79e762df48980a032c610cfc172f \ + file://${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/LICENSE.gst-openmax;md5=a7d467726825e72551082b781a94d09d \ +" + +PACKAGES = "${PN}-dbg ${PN}-restricted-codecs ${PN}-nv-gstapps ${PN} ${PN}-dev" + +FILES_${PN}-dbg += " \ + /usr/lib/gstreamer-0.10/.debug \ +" +FILES_${PN} += " \ + ${sysconfdir}/X11/def* \ + ${sysconfdir}/X11/xorg.conf.* \ + ${sysconfdir}/init/* \ + ${sysconfdir}/udev/rules.d/* \ + ${sysconfdir}/init/nv* \ + ${sysconfdir}/init/wpa* \ + /lib/firmware/* \ + /usr/lib/lib* \ + /usr/lib/xorg/* \ + /usr/lib/gstreamer*/* \ + /home/root/.local/share/applications/* \ +" +FILES_${PN}-restricted-codecs += " \ + /lib/firmware/*.axf \ +" +FILES_${PN}-nv-gstapps += " \ + /usr/bin/* \ + /usr/share/doc/nv_gstapps/* \ +" + +#no gnu_hash in NVIDIA binaries, skip QA dev-so for this package +#we have symlinks ending in .so, skip QA ldflags for this package +#inhibit warnings about files being stripped +INSANE_SKIP_${PN} = "build-deps dev-so ldflags already-stripped textrel" +INSANE_SKIP_${PN}-nv-gstapps = "build-deps dev-so ldflags already-stripped textrel file-rdeps" + +do_patch () { + mkdir -p OpenMAX/il + unzip -o -d OpenMAX/il OpenMAX_IL_1_1_2_Header.zip +} + +do_compile () { + #unpack the different packages + #nvidia drivers + mkdir nvidia_drivers + tar -C nvidia_drivers -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nvidia_drivers.tbz2 + tar -C nvidia_drivers -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/config.tbz2 + + #nvidia sample gstreamer apps + mkdir -p nvgstapps/usr/share/doc/nv_gstapps + tar -C nvgstapps -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/nvgstapps.tbz2 + cp ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/nv*.txt nvgstapps/usr/share/doc/nv_gstapps/ + + #restricted codecs + mkdir restricted_codecs + tar -C restricted_codecs -xjf ${WORKDIR}/restricted_codecs.tbz2 +} + +do_install () { + #nvidia_driver + install -d ${D}/usr/lib/xorg/modules/drivers ${D}/home/root/.local/share/applications/ + install -d ${D}/lib/firmware/ + install -d ${D}/${sysconfdir}/X11 ${D}/${sysconfdir}/init ${D}/${sysconfdir}/udev/rules.d + install -m 0644 nvidia_drivers/${sysconfdir}/X11/xorg.conf ${D}/${sysconfdir}/X11/xorg.conf.nvidia + install -m 0755 nvidia_drivers/${sysconfdir}/init/* ${D}/${sysconfdir}/init/ + install -m 0644 nvidia_drivers/${sysconfdir}/udev/rules.d/* ${D}/${sysconfdir}/udev/rules.d/ + install -m 0644 nvidia_drivers/${sysconfdir}/nv* ${D}/${sysconfdir}/ + install -m 0644 nvidia_drivers/${sysconfdir}/wpa_supplicant.conf ${D}/${sysconfdir}/wpa_supplicant.conf.nvidia + install -m 0644 nvidia_drivers/lib/firmware/* ${D}/lib/firmware/ + install -m 0644 nvidia_drivers/usr/lib/*.so ${D}/usr/lib/ + install -m 0644 nvidia_drivers/usr/lib/*.so.? ${D}/usr/lib/ + rm ${D}/usr/lib/libjpeg.so + install -m 0644 nvidia_drivers/usr/lib/xorg/modules/drivers/* ${D}/usr/lib/xorg/modules/drivers/ + ln -s tegra_drv.abi${XSERVER_DRIVER_ABI_REQUIRED}.so ${D}/usr/lib/xorg/modules/drivers/tegra_drv.so + # create symlink to the shared libs for development, *.so -> *.so.x + export LIBNAME=`ls ${D}/usr/lib/libGLESv2.so.?` + export LIBNAME=`basename $LIBNAME` + ln -s $LIBNAME ${D}/usr/lib/libGLESv2.so + export LIBNAME=`ls ${D}/usr/lib/libEGL.so.?` + export LIBNAME=`basename $LIBNAME` + ln -s $LIBNAME ${D}/usr/lib/libEGL.so + export LIBNAME=`ls ${D}/usr/lib/libGLESv1_CM.so.?` + export LIBNAME=`basename $LIBNAME` + ln -s $LIBNAME ${D}/usr/lib/libGLESv1_CM.so + + #nvidia sample gstreamer apps + install -d ${D}/usr/bin ${D}/usr/lib/gstreamer-0.10 ${D}/usr/share/doc/nv_gstapps + install -d ${D}/usr/lib/xorg/modules/drivers ${D}/home/root/.local/share/applications/ + install -m 0755 nvgstapps/usr/bin/* ${D}/usr/bin/ + install -m 0644 nvgstapps/usr/lib/gstreamer-0.10/*.so ${D}/usr/lib/gstreamer-0.10/ + install -m 0644 nvgstapps/usr/share/doc/nv_gstapps/* ${D}/usr/share/doc/nv_gstapps/ + install -m 0644 ${WORKDIR}/*.desktop ${D}/home/root/.local/share/applications/ + install -m 0644 ${WORKDIR}/mimeapps.list ${D}//home/root/.local/share/applications/ + ln -s libpcre.so.1 ${D}/usr/lib/libpcre.so.3 + ln -s libpcreposix.so.0 ${D}/usr/lib/libpcreposix.so.3 + + #nvidia restricted codecs + install -d ${D}/lib/firmware/ + install -m 0644 restricted_codecs/lib/firmware/* ${D}/lib/firmware/ + + #khronos headers for EGL/GLES/GLES2/OpenMax + for dir in EGL GLES GLES2 KD KHR + do + install -d ${D}${includedir}/$dir + install -m 0644 ${WORKDIR}/khronos_headers/$dir/* ${D}${includedir}/$dir + done + + #Override eglplatform.h that khronos provide. + install -m 0644 ${WORKDIR}/eglplatform.h ${D}${includedir}/EGL/ + + dir="OpenMAX/il" + install -d ${D}${includedir}/$dir + install -m 0644 ${WORKDIR}/$dir/* ${D}${includedir}/$dir + + install -d ${D}/usr/lib/pkgconfig + install -m 0644 ${WORKDIR}/*.pc ${D}/usr/lib/pkgconfig/ +} + +do_install_append_tegra3 () { + #OpenMAX-IL implementation library, evaluation version with fix to validate input frame rate + install -m 0644 ${WORKDIR}/libgstomx.so ${D}/usr/lib/gstreamer-0.10/ +} + +# Add the ABI dependency at package generation time, as otherwise bitbake will +# attempt to find a provider for it (and fail) when it does the parse. +python populate_packages_prepend() { + pn = d.getVar("PN", True) + d.appendVar("RDEPENDS_" + pn, " xorg-abi-video-${XSERVER_DRIVER_ABI_REQUIRED}") +} diff --git a/recipes-bsp/trdx-nv-binaries/files/aplay.desktop b/recipes-bsp/trdx-nv-binaries/files/aplay.desktop deleted file mode 100644 index ead86f3..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/aplay.desktop +++ /dev/null @@ -1,5 +0,0 @@ -[Desktop Entry] -Type=Application -Name=aplay -Exec=aplay %f -NoDisplay=true diff --git a/recipes-bsp/trdx-nv-binaries/files/egl.pc b/recipes-bsp/trdx-nv-binaries/files/egl.pc deleted file mode 100644 index 3af7eec..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/egl.pc +++ /dev/null @@ -1,10 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=/usr/lib -includedir=/usr/include - -Name: egl -Description: EGL implementation -Version: 1 -Cflags: -I${includedir}/EGL -Libs: -L${libdir} -lEGL diff --git a/recipes-bsp/trdx-nv-binaries/files/eglplatform.h b/recipes-bsp/trdx-nv-binaries/files/eglplatform.h deleted file mode 100644 index 72b5f2d..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/eglplatform.h +++ /dev/null @@ -1,147 +0,0 @@ -#ifndef __eglplatform_h_ -#define __eglplatform_h_ - -/* -** Copyright (c) 2007-2009 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -/* Platform-specific types and definitions for egl.h - * $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ - * - * Adopters may modify khrplatform.h and this file to suit their platform. - * You are encouraged to submit all modifications to the Khronos group so that - * they can be included in future versions of this file. Please submit changes - * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) - * by filing a bug against product "EGL" component "Registry". - */ - -#include - -/* Macros used in EGL function prototype declarations. - * - * EGL functions should be prototyped as: - * - * EGLAPI return-type EGLAPIENTRY eglFunction(arguments); - * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); - * - * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h - */ - -#ifndef EGLAPI -#define EGLAPI KHRONOS_APICALL -#endif - -#ifndef EGLAPIENTRY -#define EGLAPIENTRY KHRONOS_APIENTRY -#endif -#define EGLAPIENTRYP EGLAPIENTRY* - -/* The types NativeDisplayType, NativeWindowType, and NativePixmapType - * are aliases of window-system-dependent types, such as X Display * or - * Windows Device Context. They must be defined in platform-specific - * code below. The EGL-prefixed versions of Native*Type are the same - * types, renamed in EGL 1.3 so all types in the API start with "EGL". - * - * Khronos STRONGLY RECOMMENDS that you use the default definitions - * provided below, since these changes affect both binary and source - * portability of applications using EGL running on different EGL - * implementations. - */ - -#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN 1 -#endif -#include - -typedef HDC EGLNativeDisplayType; -typedef HBITMAP EGLNativePixmapType; -typedef HWND EGLNativeWindowType; - -#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ - -typedef int EGLNativeDisplayType; -typedef void *EGLNativeWindowType; -typedef void *EGLNativePixmapType; - -#elif defined(WL_EGL_PLATFORM) - -typedef struct wl_display *EGLNativeDisplayType; -typedef struct wl_egl_pixmap *EGLNativePixmapType; -typedef struct wl_egl_window *EGLNativeWindowType; - -#elif defined(__GBM__) - -typedef struct gbm_device *EGLNativeDisplayType; -typedef struct gbm_bo *EGLNativePixmapType; -typedef void *EGLNativeWindowType; - -#elif defined(ANDROID) /* Android */ - -struct ANativeWindow; -struct egl_native_pixmap_t; - -typedef struct ANativeWindow *EGLNativeWindowType; -typedef struct egl_native_pixmap_t *EGLNativePixmapType; -typedef void *EGLNativeDisplayType; - -#elif defined(__unix__) - -/* don't include the X headers here, some define clash with Qt5 symbols */ -#if 1 - -typedef struct _XDisplay *EGLNativeDisplayType; -typedef unsigned long EGLNativePixmapType; -typedef unsigned long EGLNativeWindowType; - -#else - -/* X11 (tentative) */ -#include -#include - -typedef Display *EGLNativeDisplayType; -typedef Pixmap EGLNativePixmapType; -typedef Window EGLNativeWindowType; - -#endif /* MESA_EGL_NO_X11_HEADERS */ - -#else -#error "Platform not recognized" -#endif - -/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ -typedef EGLNativeDisplayType NativeDisplayType; -typedef EGLNativePixmapType NativePixmapType; -typedef EGLNativeWindowType NativeWindowType; - - -/* Define EGLint. This must be a signed integral type large enough to contain - * all legal attribute names and values passed into and out of EGL, whether - * their type is boolean, bitmask, enumerant (symbolic constant), integer, - * handle, or other. While in general a 32-bit integer will suffice, if - * handles are 64 bit types, then EGLint should be defined as a signed 64-bit - * integer type. - */ -typedef khronos_int32_t EGLint; - -#endif /* __eglplatform_h */ diff --git a/recipes-bsp/trdx-nv-binaries/files/gles.pc b/recipes-bsp/trdx-nv-binaries/files/gles.pc deleted file mode 100644 index 91387c9..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/gles.pc +++ /dev/null @@ -1,10 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=/usr/lib -includedir=/usr/include - -Name: glesv2 -Description: OpenGL ES 1.1 implementation -Version: 1.1 -Cflags: -I${includedir}/GLES -Libs: -L${libdir} -lGLESv1_CM diff --git a/recipes-bsp/trdx-nv-binaries/files/glesv2.pc b/recipes-bsp/trdx-nv-binaries/files/glesv2.pc deleted file mode 100644 index 356a1cb..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/glesv2.pc +++ /dev/null @@ -1,10 +0,0 @@ -prefix=/usr -exec_prefix=${prefix} -libdir=/usr/lib -includedir=/usr/include - -Name: glesv2 -Description: OpenGL ES 2 implementation -Version: 2 -Cflags: -I${includedir}/GLESv2 -Libs: -L${libdir} -lGLESv2 diff --git a/recipes-bsp/trdx-nv-binaries/files/khronos_headers.tgz b/recipes-bsp/trdx-nv-binaries/files/khronos_headers.tgz deleted file mode 100644 index 5eb5db7..0000000 Binary files a/recipes-bsp/trdx-nv-binaries/files/khronos_headers.tgz and /dev/null differ diff --git a/recipes-bsp/trdx-nv-binaries/files/mimeapps.list b/recipes-bsp/trdx-nv-binaries/files/mimeapps.list deleted file mode 100644 index 6a513dc..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/mimeapps.list +++ /dev/null @@ -1,10 +0,0 @@ -[Added Associations] -video/mpeg=nvgstplayer.desktop; -video/x-msvideo=nvgstplayer.desktop; -video/mp4=nvgstplayer.desktop; -video/quicktime=nvgstplayer.desktop; -video/x-ms-wmv=nvgstplayer.desktop; -video/x-matroska=cd nvgstplayer.desktop; -audio/mpeg=nvgstplayer.desktop; -audio/basic=aplay.desktop; -audio/x-wav=aplay.desktop; diff --git a/recipes-bsp/trdx-nv-binaries/files/nvgstplayer.desktop b/recipes-bsp/trdx-nv-binaries/files/nvgstplayer.desktop deleted file mode 100644 index f85659c..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/nvgstplayer.desktop +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Type=Application -Name=nvgstplayer -Exec=nvgstplayer --uri %u -Terminal=true -NoDisplay=true diff --git a/recipes-bsp/trdx-nv-binaries/files/nvsamples-hardfp.patch b/recipes-bsp/trdx-nv-binaries/files/nvsamples-hardfp.patch deleted file mode 100644 index 43376d7..0000000 Binary files a/recipes-bsp/trdx-nv-binaries/files/nvsamples-hardfp.patch and /dev/null differ diff --git a/recipes-bsp/trdx-nv-binaries/files/nvsamples-no-binary-shaders.patch b/recipes-bsp/trdx-nv-binaries/files/nvsamples-no-binary-shaders.patch deleted file mode 100644 index 73b27a1..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/nvsamples-no-binary-shaders.patch +++ /dev/null @@ -1,93 +0,0 @@ -diff -Naur nvsamples.orig/make/nvdefs.mk nvsamples/make/nvdefs.mk ---- nvsamples.orig/make/nvdefs.mk 2012-09-10 19:16:45.299731097 +0200 -+++ nvsamples/make/nvdefs.mk 2012-09-24 19:41:40.659811178 +0200 -@@ -86,7 +86,8 @@ - - NV_CGDIR = $(NV_TOPDIR)/utils/Cg - HEXIFY = $(NV_CGDIR)/hexify.pl --CGC = $(NV_CGDIR)/$(NV_HOST_OSTYPE)/cgc -quiet -+#prevent binary shaders, the L4T OpenGL drivers do not support them -+#CGC = $(NV_CGDIR)/$(NV_HOST_OSTYPE)/cgc -quiet - SHADER_FIX = $(NV_CGDIR)/$(NV_HOST_OSTYPE)/shaderfix - CGC_CG = $(CGC) - CGC_GLSL = $(CGC) -ogles -@@ -124,3 +127,10 @@ - $(CGC_CG_FRG) -o $*.tmp $< - $(SHADER_FIX) -o $@ $*.tmp - rm -rf $*.tmp -+ -+#deploy source shaders in headerfiles -+%.hglslv: %.glslv -+ $(HEXIFY) $< $@ -+ -+%.hglslf: %.glslf -+ $(HEXIFY) $< $@ - -diff -Naur nvsamples.orig/samples/opengles2/bubble/shaders.c nvsamples/samples/opengles2/bubble/shaders.c ---- nvsamples.orig/samples/opengles2/bubble/shaders.c 2011-05-04 13:36:25.000000000 +0200 -+++ nvsamples/samples/opengles2/bubble/shaders.c 2012-10-16 14:17:57.593654157 +0200 -@@ -88,16 +88,16 @@ - // Otherwise, load and compile the shader sources - prog_bubble = - NvGl2DemoLoadShaderSources( -- "bubble_vert.glslv", "bubble_frag.glslf", GL_FALSE); -+ "shaders/bubble_vert.glslv", "shaders/bubble_frag.glslf", GL_FALSE); - prog_mesh = - NvGl2DemoLoadShaderSources( -- "mesh_vert.glslv", "mesh_frag.glslf", GL_FALSE); -+ "shaders/mesh_vert.glslv", "shaders/mesh_frag.glslf", GL_FALSE); - prog_cube = - NvGl2DemoLoadShaderSources( -- "envCube_vert.glslv", "envCube_frag.glslf", GL_FALSE); -+ "shaders/envCube_vert.glslv", "shaders/envCube_frag.glslf", GL_FALSE); - prog_mouse = - NvGl2DemoLoadShaderSources( -- "mouse_vert.glslv", "mouse_frag.glslf", GL_FALSE); -+ "shaders/mouse_vert.glslv", "shaders/mouse_frag.glslf", GL_FALSE); - # endif - - success = prog_bubble && prog_mesh && prog_cube && prog_mouse; -diff -Naur nvsamples.orig/samples/opengles2/ctree/shaders.c nvsamples/samples/opengles2/ctree/shaders.c ---- nvsamples.orig/samples/opengles2/ctree/shaders.c 2011-05-04 13:36:26.000000000 +0200 -+++ nvsamples/samples/opengles2/ctree/shaders.c 2012-10-16 14:17:16.193651084 +0200 -@@ -130,22 +130,22 @@ - // Otherwise, load and compile the shader sources - prog_solids = - NvGl2DemoLoadShaderSources( -- "lighting_vert.glslv", "solids_frag.glslf", GL_FALSE); -+ "shaders/lighting_vert.glslv", "shaders/solids_frag.glslf", GL_FALSE); - prog_leaves = - NvGl2DemoLoadShaderSources( -- "lighting_vert.glslv", "leaves_frag.glslf", GL_FALSE); -+ "shaders/lighting_vert.glslv", "shaders/leaves_frag.glslf", GL_FALSE); - prog_simplecol = - NvGl2DemoLoadShaderSources( -- "simplecol_vert.glslv", "simplecol_frag.glslf", GL_FALSE); -+ "shaders/simplecol_vert.glslv", "shaders/simplecol_frag.glslf", GL_FALSE); - prog_simpletex = - NvGl2DemoLoadShaderSources( -- "simpletex_vert.glslv", "simpletex_frag.glslf", GL_FALSE); -+ "shaders/simpletex_vert.glslv", "shaders/simpletex_frag.glslf", GL_FALSE); - prog_overlaycol = - NvGl2DemoLoadShaderSources( -- "overlaycol_vert.glslv", "overlaycol_frag.glslf", GL_FALSE); -+ "shaders/overlaycol_vert.glslv", "shaders/overlaycol_frag.glslf", GL_FALSE); - prog_overlaytex = - NvGl2DemoLoadShaderSources( -- "overlaytex_vert.glslv", "overlaytex_frag.glslf", GL_FALSE); -+ "shaders/overlaytex_vert.glslv", "shaders/overlaytex_frag.glslf", GL_FALSE); - # endif - success = prog_solids && prog_leaves - && prog_simplecol && prog_simpletex -diff -Naur nvsamples.orig/samples/opengles2/gears/gears.c nvsamples/samples/opengles2/gears/gears.c ---- nvsamples.orig/samples/opengles2/gears/gears.c 2011-05-04 13:36:27.000000000 +0200 -+++ nvsamples/samples/opengles2/gears/gears.c 2012-10-16 14:14:51.433680786 +0200 -@@ -393,7 +393,7 @@ - // Otherwise, load and compile the shader source - gearShaderProgram = - NvGl2DemoLoadShaderSources( -- "gears_vert.glslv", "gears_frag.glslf", GL_FALSE); -+ "shaders/gears_vert.glslv", "shaders/gears_frag.glslf", GL_FALSE); - # endif - - // Use the program we just loaded diff --git a/recipes-bsp/trdx-nv-binaries/files/nvsamples-oe.patch b/recipes-bsp/trdx-nv-binaries/files/nvsamples-oe.patch deleted file mode 100644 index 5b8e137..0000000 --- a/recipes-bsp/trdx-nv-binaries/files/nvsamples-oe.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -Naur nvsamples-1.0-r0.orig/nvsamples/make/nvdefs.mk nvsamples-1.0-r0/nvsamples/make/nvdefs.mk ---- nvsamples/make/nvdefs.mk.orig 2011-12-07 10:22:49.000000000 +0100 -+++ nvsamples/make/nvdefs.mk 2012-07-07 12:37:13.000000000 +0200 -@@ -1,4 +1,4 @@ --NV_TOPDIR = $(HOME)/nvsamples -+NV_TOPDIR = $(WORKDIR)/nvsamples - NV_PLATFORM_DIR = $(NV_TOPDIR) - NV_KERNDIR = $(NV_TOPDIR)/../kernel - -@@ -42,17 +42,13 @@ - NV_PLATFORM_CPPFLAGS += -DKD - endif - --NV_PLATFORM_LDFLAGS = -+NV_PLATFORM_LDFLAGS = -L/usr/X11R6.4/lib -lX11 -lICE -lSM - - NV_PLATFORM_SDK_INC_DIR = $(NV_TOPDIR)/include - NV_PLATFORM_SDK_LIB_DIR = $(NV_TOPDIR)/lib-target --ROOTFS_LIB_DIR = $(NV_TOPDIR)/../T20_LinuxImageV1.0Beta4/rootfs/usr/lib - - NV_PLATFORM_SDK_INC = -I$(NV_PLATFORM_SDK_INC_DIR) --NV_PLATFORM_SDK_LIB = -L$(NV_PLATFORM_SDK_LIB_DIR) \ -- -L$(ROOTFS_LIB_DIR) \ -- -Xlinker -rpath-link \ -- -Xlinker $(ROOTFS_LIB_DIR) -+NV_PLATFORM_SDK_LIB = -L$(NV_PLATFORM_SDK_LIB_DIR) - NV_PLATFORM_OPT = -Os -O2 - NV_PLATFORM_MATHLIB = -lm - NV_PLATFORM_THREADLIB = -lpthread -@@ -80,13 +76,13 @@ - - # compiler utilities - --CROSSBIN = $(NV_TOPDIR)/../arm-2009q3/bin/arm-none-linux-gnueabi- --CC = $(CROSSBIN)gcc --CXX = $(CROSSBIN)g++ --LD = $(CROSSBIN)gcc --AR = $(CROSSBIN)ar --RANLIB = $(CROSSBIN)ranlib --STRIP = $(CROSSBIN)strip -+CROSSBIN = arm-angstrom-linux-gnueabi- -+CC ?= $(CROSSBIN)gcc -+CXX ?= $(CROSSBIN)g++ -+LD = $(CC) -+AR ?= $(CROSSBIN)ar -+RANLIB ?= $(CROSSBIN)ranlib -+STRIP ?= $(CROSSBIN)strip - - NV_CGDIR = $(NV_TOPDIR)/utils/Cg - HEXIFY = $(NV_CGDIR)/hexify.pl diff --git a/recipes-bsp/trdx-nv-binaries/nvsamples.bb b/recipes-bsp/trdx-nv-binaries/nvsamples.bb deleted file mode 100644 index 1b309ea..0000000 --- a/recipes-bsp/trdx-nv-binaries/nvsamples.bb +++ /dev/null @@ -1,59 +0,0 @@ -SECTION = "graphical/utils" -SUMMARY = "Nvidia samples for OpenGL ES, OpenGL ES headers" -LICENSE = "CLOSED" -DEPENDS = "trdx-nv-binaries virtual/libx11 libsm libice" - -PR = "r1" - -PARALLEL_MAKE = "" - -SRC_URI = " \ - http://developer.toradex.com/files/toradex-dev/uploads/media/Colibri/Linux/Samples/nvsamples.tar.bz2 \ - file://nvsamples-oe.patch \ - file://nvsamples-no-binary-shaders.patch \ - file://nvsamples-hardfp.patch \ -" - -S = "${WORKDIR}/nvsamples" - -SRC_URI[md5sum] = "240b0beb0056dde2e6ac1538dc8b6684" -SRC_URI[sha256sum] = "2638beea80fd85fdc5f9443e6959c210e275e627f662266cd404ce7c68b0806d" - -#no gnu_hash in NVIDIA binaries, skip QA for this package -INSANE_SKIP_${PN} = "dev-so ldflags" - -FILES_${PN} += " \ - /home/root/textures/* \ - /home/root/shaders/* \ -" - -do_compile () { - cd ${S}/samples/tools/nvtexfont2 - oe_runmake clean - oe_runmake WORKDIR=${WORKDIR} - ln -sf ../samples/tools/nvtexfont2/libnvtexfont2.a ${S}/lib-target/ - - cd ${S}/samples/tools/nvgl2demo_common - oe_runmake clean - oe_runmake WORKDIR=${WORKDIR} - ln -sf ../samples/tools/nvgl2demo_common/libnvgl2demo_common.a ${S}/lib-target/ - - cd ${S}/samples/opengles2 - oe_runmake clean - oe_runmake WORKDIR=${WORKDIR} -} - -do_install () { - # install the sample code - install -d ${D}${bindir} - install -d ${D}/home/root/textures - install -d ${D}/home/root/shaders - install -m 0755 ${S}/samples/opengles2/ctree/ctree ${D}${bindir} - install -m 0644 ${S}/samples/opengles2/ctree/textures/* ${D}/home/root/textures - install -m 0644 ${S}/samples/opengles2/ctree/*.glsl? ${D}/home/root/shaders - install -m 0755 ${S}/samples/opengles2/bubble/bubble ${D}${bindir} - install -m 0644 ${S}/samples/opengles2/bubble/textures/* ${D}/home/root/textures - install -m 0644 ${S}/samples/opengles2/bubble/*.glsl? ${D}/home/root/shaders - install -m 0755 ${S}/samples/opengles2/gears/gears ${D}${bindir} - install -m 0644 ${S}/samples/opengles2/gears/*.glsl? ${D}/home/root/shaders -} diff --git a/recipes-bsp/trdx-nv-binaries/trdx-nv-binaries.bb b/recipes-bsp/trdx-nv-binaries/trdx-nv-binaries.bb deleted file mode 100644 index cd5f668..0000000 --- a/recipes-bsp/trdx-nv-binaries/trdx-nv-binaries.bb +++ /dev/null @@ -1,187 +0,0 @@ -SUMMARY = "binary files from Nvidia along with their configuration" -LICENSE = "CLOSED & SGI & Khronos" -PR = "r19" - -PACKAGE_ARCH = "${MACHINE_ARCH}" -COMPATIBLE_MACHINE = "(tegra)" - -PROVIDES += "virtual/egl virtual/libgles1 virtual/libgles2" - -# the khronos headers are taken from here: https://www.khronos.org/registry/khronos_headers.tgz -# this tarball changes from time to time breaking the receipe, thus it is provided with the recipe -SRC_COMMON = " \ - file://aplay.desktop \ - file://egl.pc \ - file://eglplatform.h \ - file://gles.pc \ - file://glesv2.pc \ - file://khronos_headers.tgz \ - file://mimeapps.list \ - file://nvgstplayer.desktop \ - https://www.khronos.org/registry/omxil/api/1.1.2/OpenMAX_IL_1_1_2_Header.zip;name=openmax-h;unpack=no \ -" - -SRC_URI_tegra2 = " \ - http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/ventana_release_armhf/Tegra20_Linux-codecs_R16.5_armhf.tbz2;name=t20codecs \ - http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/ventana_release_armhf/Tegra20_Linux_R16.5_armhf.tbz2;name=t20drivers \ - ${SRC_COMMON} \ -" - -SRC_URI_tegra3 = " \ - http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/cardhu_release_armhf/Tegra30_Linux-codecs_R16.5_armhf.tbz2;name=t30codecs \ - http://developer.download.nvidia.com/mobile/tegra/l4t/r16.5.0/cardhu_release_armhf/Tegra30_Linux_R16.5_armhf.tbz2;name=t30drivers \ - http://developer.toradex.com/files/toradex-dev/uploads/media/Colibri/Linux/Extra/libgstomx.so;name=libgstomx \ - ${SRC_COMMON} \ -" - -SRC_URI[openmax-h.md5sum] = "402a7600397c341895cfecbbe1f4e028" -SRC_URI[openmax-h.sha256sum] = "e7159c88185df60a0dbb28583815067c31285a1f1d4652f6752a7329ccb534d1" - -SRC_URI[t20codecs.md5sum] = "03da7451b755094c61dade6250f1ad0a" -SRC_URI[t20codecs.sha256sum] = "0c5fe818d5e0bdc83c24b7cb0db4f87705244258bfe1925d0a0a0698e3bf712b" -SRC_URI[t20drivers.md5sum] = "5252b747668c14376b3f82d08debad2c" -SRC_URI[t20drivers.sha256sum] = "02b7a83b29cec59cf275b98f0de0fc87a24ffa25593af6af729cd2e881c41587" - -SRC_URI[t30codecs.md5sum] = "03a0b726f18a26ed379c62b83119e497" -SRC_URI[t30codecs.sha256sum] = "640df86c47d0dd6cbfc15eff49ee146a964c2a0362fe52ee6880c84e08b7a98b" -SRC_URI[t30drivers.md5sum] = "8759be1c7b93511cf70939df28b8af51" -SRC_URI[t30drivers.sha256sum] = "2288ad9ce30239975208cbd5fd896791c9d37d87ca8d30b51f04bacc74835427" -SRC_URI[libgstomx.md5sum] = "faa6ee38fb1b7aba7c6c7f98f6b2cedd" -SRC_URI[libgstomx.sha256sum] = "844c2f3ecb8498a9b287c2b2bc6184de75c2cf7d76f64f0a7749e76e1a37a1dc" - - -# xserver-xorg driver ABI version to be used by the symlink, must match the required ABI version from the used xserver -XSERVER_DRIVER_ABI_REQUIRED = "14" - -LIC_FILES_CHKSUM = " \ - file://../khronos_headers/GLES2/gl2.h;beginline=8;endline=29;md5=c0e8cc16602f8077310fb00bbf128ef6 \ - file://${WORKDIR}/Linux_for_Tegra/nv_tegra/LICENSE;md5=d88b0db2ba7f6dfe70852c64b2fce6ce \ - file://${WORKDIR}/Tegra_Software_License_Agreement-Tegra-Linux-codecs.txt;md5=47cc79e762df48980a032c610cfc172f \ - file://${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/LICENSE.gst-openmax;md5=a7d467726825e72551082b781a94d09d \ -" - -PACKAGES = "${PN}-dbg ${PN}-restricted-codecs ${PN}-nv-gstapps ${PN} ${PN}-dev" - -FILES_${PN}-dbg += " \ - /usr/lib/gstreamer-0.10/.debug \ -" -FILES_${PN} += " \ - ${sysconfdir}/X11/def* \ - ${sysconfdir}/X11/xorg.conf.* \ - ${sysconfdir}/init/* \ - ${sysconfdir}/udev/rules.d/* \ - ${sysconfdir}/init/nv* \ - ${sysconfdir}/init/wpa* \ - /lib/firmware/* \ - /usr/lib/lib* \ - /usr/lib/xorg/* \ - /usr/lib/gstreamer*/* \ - /home/root/.local/share/applications/* \ -" -FILES_${PN}-restricted-codecs += " \ - /lib/firmware/*.axf \ -" -FILES_${PN}-nv-gstapps += " \ - /usr/bin/* \ - /usr/share/doc/nv_gstapps/* \ -" - -#no gnu_hash in NVIDIA binaries, skip QA dev-so for this package -#we have symlinks ending in .so, skip QA ldflags for this package -#inhibit warnings about files being stripped -INSANE_SKIP_${PN} = "build-deps dev-so ldflags already-stripped textrel" -INSANE_SKIP_${PN}-nv-gstapps = "build-deps dev-so ldflags already-stripped textrel file-rdeps" - -do_patch () { - mkdir -p OpenMAX/il - unzip -o -d OpenMAX/il OpenMAX_IL_1_1_2_Header.zip -} - -do_compile () { - #unpack the different packages - #nvidia drivers - mkdir nvidia_drivers - tar -C nvidia_drivers -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nvidia_drivers.tbz2 - tar -C nvidia_drivers -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/config.tbz2 - - #nvidia sample gstreamer apps - mkdir -p nvgstapps/usr/share/doc/nv_gstapps - tar -C nvgstapps -xjf ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/nvgstapps.tbz2 - cp ${WORKDIR}/Linux_for_Tegra/nv_tegra/nv_sample_apps/nv*.txt nvgstapps/usr/share/doc/nv_gstapps/ - - #restricted codecs - mkdir restricted_codecs - tar -C restricted_codecs -xjf ${WORKDIR}/restricted_codecs.tbz2 -} - -do_install () { - #nvidia_driver - install -d ${D}/usr/lib/xorg/modules/drivers ${D}/home/root/.local/share/applications/ - install -d ${D}/lib/firmware/ - install -d ${D}/${sysconfdir}/X11 ${D}/${sysconfdir}/init ${D}/${sysconfdir}/udev/rules.d - install -m 0644 nvidia_drivers/${sysconfdir}/X11/xorg.conf ${D}/${sysconfdir}/X11/xorg.conf.nvidia - install -m 0755 nvidia_drivers/${sysconfdir}/init/* ${D}/${sysconfdir}/init/ - install -m 0644 nvidia_drivers/${sysconfdir}/udev/rules.d/* ${D}/${sysconfdir}/udev/rules.d/ - install -m 0644 nvidia_drivers/${sysconfdir}/nv* ${D}/${sysconfdir}/ - install -m 0644 nvidia_drivers/${sysconfdir}/wpa_supplicant.conf ${D}/${sysconfdir}/wpa_supplicant.conf.nvidia - install -m 0644 nvidia_drivers/lib/firmware/* ${D}/lib/firmware/ - install -m 0644 nvidia_drivers/usr/lib/*.so ${D}/usr/lib/ - install -m 0644 nvidia_drivers/usr/lib/*.so.? ${D}/usr/lib/ - rm ${D}/usr/lib/libjpeg.so - install -m 0644 nvidia_drivers/usr/lib/xorg/modules/drivers/* ${D}/usr/lib/xorg/modules/drivers/ - ln -s tegra_drv.abi${XSERVER_DRIVER_ABI_REQUIRED}.so ${D}/usr/lib/xorg/modules/drivers/tegra_drv.so - # create symlink to the shared libs for development, *.so -> *.so.x - export LIBNAME=`ls ${D}/usr/lib/libGLESv2.so.?` - export LIBNAME=`basename $LIBNAME` - ln -s $LIBNAME ${D}/usr/lib/libGLESv2.so - export LIBNAME=`ls ${D}/usr/lib/libEGL.so.?` - export LIBNAME=`basename $LIBNAME` - ln -s $LIBNAME ${D}/usr/lib/libEGL.so - export LIBNAME=`ls ${D}/usr/lib/libGLESv1_CM.so.?` - export LIBNAME=`basename $LIBNAME` - ln -s $LIBNAME ${D}/usr/lib/libGLESv1_CM.so - - #nvidia sample gstreamer apps - install -d ${D}/usr/bin ${D}/usr/lib/gstreamer-0.10 ${D}/usr/share/doc/nv_gstapps - install -d ${D}/usr/lib/xorg/modules/drivers ${D}/home/root/.local/share/applications/ - install -m 0755 nvgstapps/usr/bin/* ${D}/usr/bin/ - install -m 0644 nvgstapps/usr/lib/gstreamer-0.10/*.so ${D}/usr/lib/gstreamer-0.10/ - install -m 0644 nvgstapps/usr/share/doc/nv_gstapps/* ${D}/usr/share/doc/nv_gstapps/ - install -m 0644 ${WORKDIR}/*.desktop ${D}/home/root/.local/share/applications/ - install -m 0644 ${WORKDIR}/mimeapps.list ${D}//home/root/.local/share/applications/ - ln -s libpcre.so.1 ${D}/usr/lib/libpcre.so.3 - ln -s libpcreposix.so.0 ${D}/usr/lib/libpcreposix.so.3 - - #nvidia restricted codecs - install -d ${D}/lib/firmware/ - install -m 0644 restricted_codecs/lib/firmware/* ${D}/lib/firmware/ - - #khronos headers for EGL/GLES/GLES2/OpenMax - for dir in EGL GLES GLES2 KD KHR - do - install -d ${D}${includedir}/$dir - install -m 0644 ${WORKDIR}/khronos_headers/$dir/* ${D}${includedir}/$dir - done - - #Override eglplatform.h that khronos provide. - install -m 0644 ${WORKDIR}/eglplatform.h ${D}${includedir}/EGL/ - - dir="OpenMAX/il" - install -d ${D}${includedir}/$dir - install -m 0644 ${WORKDIR}/$dir/* ${D}${includedir}/$dir - - install -d ${D}/usr/lib/pkgconfig - install -m 0644 ${WORKDIR}/*.pc ${D}/usr/lib/pkgconfig/ -} - -do_install_append_tegra3 () { - #OpenMAX-IL implementation library, evaluation version with fix to validate input frame rate - install -m 0644 ${WORKDIR}/libgstomx.so ${D}/usr/lib/gstreamer-0.10/ -} - -# Add the ABI dependency at package generation time, as otherwise bitbake will -# attempt to find a provider for it (and fail) when it does the parse. -python populate_packages_prepend() { - pn = d.getVar("PN", True) - d.appendVar("RDEPENDS_" + pn, " xorg-abi-video-${XSERVER_DRIVER_ABI_REQUIRED}") -} -- cgit v1.2.3