[meta-freescale] [meta-fsl-demos][PATCH] fsl-gpu-sdk: Upgrade to 2.2.1 version
Neena Busireddy
neenareddy.busireddy at nxp.com
Mon Jan 4 07:58:49 PST 2016
From: Neena Busireddy <neena.busireddy at freescale.com>
This version is released with 3.14.52-1.1.0_ga release
- Supports: OpenGL ES2, OpenGL ES3, OpenVG and experimental G2D support
- Added recipe for cross-platform image library (devil) as fsl-gpu-sdk
is dependent on devil
- Do not install VPU packages on processors with no VPU(i.MX6SX)
Signed-off-by: Neena Busireddy <neena.busireddy at freescale.com>
Signed-off-by: Neena Busireddy <neenareddy.busireddy at nxp.com>
---
.../devil/devil/Fix-GCC-5.2-erros.patch | 21 ++
recipes-graphics/devil/devil/M4Patch.patch | 18 ++
recipes-graphics/devil/devil/il_manip_c.patch | 211 ++++++++++++++++++++
recipes-graphics/devil/devil/il_manip_h.patch | 220 +++++++++++++++++++++
recipes-graphics/devil/devil_1.7.8.bb | 31 +++
...001-update-gstreamer1.0-include-directory.patch | 22 +++
.../{fsl-gpu-sdk_2.1.bb => fsl-gpu-sdk_2.2.1.bb} | 21 +-
7 files changed, 538 insertions(+), 6 deletions(-)
create mode 100644 recipes-graphics/devil/devil/Fix-GCC-5.2-erros.patch
create mode 100644 recipes-graphics/devil/devil/M4Patch.patch
create mode 100644 recipes-graphics/devil/devil/il_manip_c.patch
create mode 100644 recipes-graphics/devil/devil/il_manip_h.patch
create mode 100644 recipes-graphics/devil/devil_1.7.8.bb
create mode 100644 recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk/0001-update-gstreamer1.0-include-directory.patch
rename recipes-graphics/fsl-gpu-sdk/{fsl-gpu-sdk_2.1.bb => fsl-gpu-sdk_2.2.1.bb} (66%)
diff --git a/recipes-graphics/devil/devil/Fix-GCC-5.2-erros.patch b/recipes-graphics/devil/devil/Fix-GCC-5.2-erros.patch
new file mode 100644
index 0000000..b99dfd9
--- /dev/null
+++ b/recipes-graphics/devil/devil/Fix-GCC-5.2-erros.patch
@@ -0,0 +1,21 @@
+diff -Naur devil-1.7.8_org/include/IL/il.h devil-1.7.8/include/IL/il.h
+--- devil-1.7.8_org/include/IL/il.h 2015-12-16 14:31:33.105076974 -0600
++++ devil-1.7.8/include/IL/il.h 2015-12-16 14:33:47.000000000 -0600
+@@ -63,13 +63,13 @@
+ #endif
+ #endif
+
+-#ifdef RESTRICT_KEYWORD
+-#define RESTRICT restrict
+-#define CONST_RESTRICT const restrict
++#if defined(RESTRICT_KEYWORD) && !defined(__cplusplus)
++#define RESTRICT __restrict__
++#define CONST_RESTRICT const __restrict__
+ #else
+ #define RESTRICT
+ #define CONST_RESTRICT const
+-#endif
++#endif // RESTRICT keyword and not C++
+
+ #include <stdio.h>
+
diff --git a/recipes-graphics/devil/devil/M4Patch.patch b/recipes-graphics/devil/devil/M4Patch.patch
new file mode 100644
index 0000000..ad67adf
--- /dev/null
+++ b/recipes-graphics/devil/devil/M4Patch.patch
@@ -0,0 +1,18 @@
+--- devil-1.7.8/m4/devil-definitions.m4
++++ devil-1.7.8/m4/devil-definitions.m4
+@@ -244,12 +244,12 @@
+
+ AC_DEFUN([SETTLE_PNG],
+ [DEVIL_IL_LIB([png.h],
+- [png12])
+- AS_IF([test "x$have_png12" = "xno"],
++ [png])
++ AS_IF([test "x$have_png" = "xno"],
+ [DEVIL_IL_LIB([png.h],
+ [png])
+ lib_test_result="$have_png"],
+- [lib_test_result="$have_png12"])
++ [lib_test_result="$have_png"])
+ AS_IF([test "x$lib_test_result" = "xyes"],
+ [MAYBE_OPTIONAL_DEPENDENCY([IL],
+ [libpng]) ]) ])
diff --git a/recipes-graphics/devil/devil/il_manip_c.patch b/recipes-graphics/devil/devil/il_manip_c.patch
new file mode 100644
index 0000000..7bf852c
--- /dev/null
+++ b/recipes-graphics/devil/devil/il_manip_c.patch
@@ -0,0 +1,211 @@
+--- devil-1.7.8/src-IL/src/il_manip.c 2009-03-25 13:30:42.000000000 -0600
++++ devil-1.7.8/src-IL/src/il_manip.c 2014-05-21 19:09:33.017902907 -0500
+@@ -13,6 +13,208 @@
+ #include "il_internal.h"
+ #include "il_manip.h"
+
++ILushort ILAPIENTRY ilFloatToHalf(ILuint i) {
++ //
++ // Our floating point number, f, is represented by the bit
++ // pattern in integer i. Disassemble that bit pattern into
++ // the sign, s, the exponent, e, and the significand, m.
++ // Shift s into the position where it will go in in the
++ // resulting half number.
++ // Adjust e, accounting for the different exponent bias
++ // of float and half (127 versus 15).
++ //
++
++ register int s = (i >> 16) & 0x00008000;
++ register int e = ((i >> 23) & 0x000000ff) - (127 - 15);
++ register int m = i & 0x007fffff;
++
++ //
++ // Now reassemble s, e and m into a half:
++ //
++
++ if (e <= 0)
++ {
++ if (e < -10)
++ {
++ //
++ // E is less than -10. The absolute value of f is
++ // less than HALF_MIN (f may be a small normalized
++ // float, a denormalized float or a zero).
++ //
++ // We convert f to a half zero.
++ //
++
++ return 0;
++ }
++
++ //
++ // E is between -10 and 0. F is a normalized float,
++ // whose magnitude is less than HALF_NRM_MIN.
++ //
++ // We convert f to a denormalized half.
++ //
++
++ m = (m | 0x00800000) >> (1 - e);
++
++ //
++ // Round to nearest, round "0.5" up.
++ //
++ // Rounding may cause the significand to overflow and make
++ // our number normalized. Because of the way a half's bits
++ // are laid out, we don't have to treat this case separately;
++ // the code below will handle it correctly.
++ //
++
++ if (m & 0x00001000)
++ m += 0x00002000;
++
++ //
++ // Assemble the half from s, e (zero) and m.
++ //
++
++ return s | (m >> 13);
++ }
++ else if (e == 0xff - (127 - 15))
++ {
++ if (m == 0)
++ {
++ //
++ // F is an infinity; convert f to a half
++ // infinity with the same sign as f.
++ //
++
++ return s | 0x7c00;
++ }
++ else
++ {
++ //
++ // F is a NAN; we produce a half NAN that preserves
++ // the sign bit and the 10 leftmost bits of the
++ // significand of f, with one exception: If the 10
++ // leftmost bits are all zero, the NAN would turn
++ // into an infinity, so we have to set at least one
++ // bit in the significand.
++ //
++
++ m >>= 13;
++ return s | 0x7c00 | m | (m == 0);
++ }
++ }
++ else
++ {
++ //
++ // E is greater than zero. F is a normalized float.
++ // We try to convert f to a normalized half.
++ //
++
++ //
++ // Round to nearest, round "0.5" up
++ //
++
++ if (m & 0x00001000)
++ {
++ m += 0x00002000;
++
++ if (m & 0x00800000)
++ {
++ m = 0; // overflow in significand,
++ e += 1; // adjust exponent
++ }
++ }
++
++ //
++ // Handle exponent overflow
++ //
++
++ if (e > 30)
++ {
++ ilFloatToHalfOverflow(); // Cause a hardware floating point overflow;
++ return s | 0x7c00; // if this returns, the half becomes an
++ } // infinity with the same sign as f.
++
++ //
++ // Assemble the half from s, e and m.
++ //
++
++ return s | (e << 10) | (m >> 13);
++ }
++}
++
++// Taken from OpenEXR
++ILuint ILAPIENTRY ilHalfToFloat (ILushort y) {
++
++ int s = (y >> 15) & 0x00000001;
++ int e = (y >> 10) & 0x0000001f;
++ int m = y & 0x000003ff;
++
++ if (e == 0)
++ {
++ if (m == 0)
++ {
++ //
++ // Plus or minus zero
++ //
++
++ return s << 31;
++ }
++ else
++ {
++ //
++ // Denormalized number -- renormalize it
++ //
++
++ while (!(m & 0x00000400))
++ {
++ m <<= 1;
++ e -= 1;
++ }
++
++ e += 1;
++ m &= ~0x00000400;
++ }
++ }
++ else if (e == 31)
++ {
++ if (m == 0)
++ {
++ //
++ // Positive or negative infinity
++ //
++
++ return (s << 31) | 0x7f800000;
++ }
++ else
++ {
++ //
++ // Nan -- preserve sign and significand bits
++ //
++
++ return (s << 31) | 0x7f800000 | (m << 13);
++ }
++ }
++
++ //
++ // Normalized number
++ //
++
++ e = e + (127 - 15);
++ m = m << 13;
++
++ //
++ // Assemble s, e and m.
++ //
++
++ return (s << 31) | (e << 23) | m;
++}
++
++ILfloat /*ILAPIENTRY*/ ilFloatToHalfOverflow() {
++ ILfloat f = 1e10;
++ ILint j;
++ for (j = 0; j < 10; j++)
++ f *= f; // this will overflow before
++ // the for loop terminates
++ return f;
++}
+
+ ILAPI void ILAPIENTRY iFlipBuffer(ILubyte *buff, ILuint depth, ILuint line_size, ILuint line_num)
+ {
diff --git a/recipes-graphics/devil/devil/il_manip_h.patch b/recipes-graphics/devil/devil/il_manip_h.patch
new file mode 100644
index 0000000..53ea091
--- /dev/null
+++ b/recipes-graphics/devil/devil/il_manip_h.patch
@@ -0,0 +1,220 @@
+--- devil-1.7.8/src-IL/include/il_manip.h 2009-03-25 13:30:42.000000000 -0600
++++ devil-1.7.8/src-IL/include/il_manip.h 2014-05-21 19:09:33.013902907 -0500
+@@ -31,14 +31,7 @@
+ #pragma warning(push)
+ #pragma warning(disable : 4756) // Disables 'named type definition in parentheses' warning
+ #endif
+-INLINE ILfloat /*ILAPIENTRY*/ ilFloatToHalfOverflow() {
+- ILfloat f = 1e10;
+- ILint j;
+- for (j = 0; j < 10; j++)
+- f *= f; // this will overflow before
+- // the for loop terminates
+- return f;
+-}
++ILfloat /*ILAPIENTRY*/ ilFloatToHalfOverflow();
+ #if defined(_MSC_VER)
+ #pragma warning(pop)
+ #endif
+@@ -47,199 +40,10 @@
+ // Float-to-half conversion -- general case, including
+ // zeroes, denormalized numbers and exponent overflows.
+ //-----------------------------------------------------
+-INLINE ILushort ILAPIENTRY ilFloatToHalf(ILuint i) {
+- //
+- // Our floating point number, f, is represented by the bit
+- // pattern in integer i. Disassemble that bit pattern into
+- // the sign, s, the exponent, e, and the significand, m.
+- // Shift s into the position where it will go in in the
+- // resulting half number.
+- // Adjust e, accounting for the different exponent bias
+- // of float and half (127 versus 15).
+- //
+-
+- register int s = (i >> 16) & 0x00008000;
+- register int e = ((i >> 23) & 0x000000ff) - (127 - 15);
+- register int m = i & 0x007fffff;
+-
+- //
+- // Now reassemble s, e and m into a half:
+- //
+-
+- if (e <= 0)
+- {
+- if (e < -10)
+- {
+- //
+- // E is less than -10. The absolute value of f is
+- // less than HALF_MIN (f may be a small normalized
+- // float, a denormalized float or a zero).
+- //
+- // We convert f to a half zero.
+- //
+-
+- return 0;
+- }
+-
+- //
+- // E is between -10 and 0. F is a normalized float,
+- // whose magnitude is less than HALF_NRM_MIN.
+- //
+- // We convert f to a denormalized half.
+- //
+-
+- m = (m | 0x00800000) >> (1 - e);
+-
+- //
+- // Round to nearest, round "0.5" up.
+- //
+- // Rounding may cause the significand to overflow and make
+- // our number normalized. Because of the way a half's bits
+- // are laid out, we don't have to treat this case separately;
+- // the code below will handle it correctly.
+- //
+-
+- if (m & 0x00001000)
+- m += 0x00002000;
+-
+- //
+- // Assemble the half from s, e (zero) and m.
+- //
+-
+- return s | (m >> 13);
+- }
+- else if (e == 0xff - (127 - 15))
+- {
+- if (m == 0)
+- {
+- //
+- // F is an infinity; convert f to a half
+- // infinity with the same sign as f.
+- //
+-
+- return s | 0x7c00;
+- }
+- else
+- {
+- //
+- // F is a NAN; we produce a half NAN that preserves
+- // the sign bit and the 10 leftmost bits of the
+- // significand of f, with one exception: If the 10
+- // leftmost bits are all zero, the NAN would turn
+- // into an infinity, so we have to set at least one
+- // bit in the significand.
+- //
+-
+- m >>= 13;
+- return s | 0x7c00 | m | (m == 0);
+- }
+- }
+- else
+- {
+- //
+- // E is greater than zero. F is a normalized float.
+- // We try to convert f to a normalized half.
+- //
+-
+- //
+- // Round to nearest, round "0.5" up
+- //
+-
+- if (m & 0x00001000)
+- {
+- m += 0x00002000;
+-
+- if (m & 0x00800000)
+- {
+- m = 0; // overflow in significand,
+- e += 1; // adjust exponent
+- }
+- }
+-
+- //
+- // Handle exponent overflow
+- //
+-
+- if (e > 30)
+- {
+- ilFloatToHalfOverflow(); // Cause a hardware floating point overflow;
+- return s | 0x7c00; // if this returns, the half becomes an
+- } // infinity with the same sign as f.
+-
+- //
+- // Assemble the half from s, e and m.
+- //
+-
+- return s | (e << 10) | (m >> 13);
+- }
+-}
++ILushort ILAPIENTRY ilFloatToHalf(ILuint i);
+
+ // Taken from OpenEXR
+-INLINE ILuint ILAPIENTRY ilHalfToFloat (ILushort y) {
+-
+- int s = (y >> 15) & 0x00000001;
+- int e = (y >> 10) & 0x0000001f;
+- int m = y & 0x000003ff;
+-
+- if (e == 0)
+- {
+- if (m == 0)
+- {
+- //
+- // Plus or minus zero
+- //
+-
+- return s << 31;
+- }
+- else
+- {
+- //
+- // Denormalized number -- renormalize it
+- //
+-
+- while (!(m & 0x00000400))
+- {
+- m <<= 1;
+- e -= 1;
+- }
+-
+- e += 1;
+- m &= ~0x00000400;
+- }
+- }
+- else if (e == 31)
+- {
+- if (m == 0)
+- {
+- //
+- // Positive or negative infinity
+- //
+-
+- return (s << 31) | 0x7f800000;
+- }
+- else
+- {
+- //
+- // Nan -- preserve sign and significand bits
+- //
+-
+- return (s << 31) | 0x7f800000 | (m << 13);
+- }
+- }
+-
+- //
+- // Normalized number
+- //
+-
+- e = e + (127 - 15);
+- m = m << 13;
+-
+- //
+- // Assemble s, e and m.
+- //
+-
+- return (s << 31) | (e << 23) | m;
+-}
++ILuint ILAPIENTRY ilHalfToFloat (ILushort y);
+ #endif //NOINLINE
+
+ #ifdef _cplusplus
diff --git a/recipes-graphics/devil/devil_1.7.8.bb b/recipes-graphics/devil/devil_1.7.8.bb
new file mode 100644
index 0000000..eccadb2
--- /dev/null
+++ b/recipes-graphics/devil/devil_1.7.8.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "A full featured cross-platform image library"
+SECTION = "libs"
+LICENSE = "LGPL-2.1"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/LGPL-2.1;md5=1a6d268fd218675ffea8be556788b780"
+PR = "r0"
+
+DEPENDS = "libpng jpeg"
+RDEPENDS_${PN} += "libpng "
+
+SRC_URI = "http://sourceforge.net/projects/openil/files/DevIL/1.7.8/DevIL-${PV}.zip \
+ file://il_manip_c.patch \
+ file://il_manip_h.patch \
+ file://M4Patch.patch \
+ file://Fix-GCC-5.2-erros.patch"
+SRC_URI[md5sum] = "312853ef9c85ad7b2100f9cd068b2a5b"
+SRC_URI[sha256sum] = "4368d83b3016b5eafe8984f0d7f86ccee76b8993cf900d3a8cbd4901b52f64eb"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+S = "${WORKDIR}/devil-${PV}"
+
+TARGET_CFLAGS += "-Dpng_set_gray_1_2_4_to_8=png_set_expand_gray_1_2_4_to_8"
+
+inherit autotools
+
+do_compile() {
+ oe_runmake
+}
+
+do_install() {
+ oe_runmake install DESTDIR=${D} SBINDIR=${sbindir} INCLUDEDIR=${includedir}
+}
diff --git a/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk/0001-update-gstreamer1.0-include-directory.patch b/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk/0001-update-gstreamer1.0-include-directory.patch
new file mode 100644
index 0000000..d5edaa6
--- /dev/null
+++ b/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk/0001-update-gstreamer1.0-include-directory.patch
@@ -0,0 +1,22 @@
+diff -ruN a/DemoApps/GLES2/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto b/DemoApps/GLES2/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto
+--- a/DemoApps/GLES2/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto 2015-10-24 02:49:55.000000000 +0800
++++ b/DemoApps/GLES2/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto 2015-11-09 13:26:27.369099790 +0800
+@@ -31,6 +31,7 @@
+ $(FSL_GRAPHICS_SDK)/DemoFramework/FslGraphicsGLES2/include \
+ $(PKG_CONFIG_SYSROOT_DIR)/usr/include/glib-2.0 \
+ $(PKG_CONFIG_SYSROOT_DIR)/usr/include/gstreamer-1.0 \
++ $(PKG_CONFIG_SYSROOT_DIR)/usr/lib/gstreamer-1.0/include \
+ $(PKG_CONFIG_SYSROOT_DIR)/usr/lib/glib-2.0/include
+
+ CPP_DEFINE_FLAG_NAMES=\
+diff -ruN a/DemoApps/GLES3/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto b/DemoApps/GLES3/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto
+--- a/DemoApps/GLES3/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto 2015-10-24 02:49:55.000000000 +0800
++++ b/DemoApps/GLES3/DirectMultiSamplingVideoYUV/GNUmakefile_Yocto 2015-11-09 13:26:27.393099789 +0800
+@@ -31,6 +31,7 @@
+ $(FSL_GRAPHICS_SDK)/DemoFramework/FslGraphicsGLES3/include \
+ $(PKG_CONFIG_SYSROOT_DIR)/usr/include/glib-2.0 \
+ $(PKG_CONFIG_SYSROOT_DIR)/usr/include/gstreamer-1.0 \
++ $(PKG_CONFIG_SYSROOT_DIR)/usr/lib/gstreamer-1.0/include \
+ $(PKG_CONFIG_SYSROOT_DIR)/usr/lib/glib-2.0/include
+
+ CPP_DEFINE_FLAG_NAMES=\
diff --git a/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk_2.1.bb b/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk_2.2.1.bb
similarity index 66%
rename from recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk_2.1.bb
rename to recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk_2.2.1.bb
index 01d2103..459ad34 100644
--- a/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk_2.1.bb
+++ b/recipes-graphics/fsl-gpu-sdk/fsl-gpu-sdk_2.2.1.bb
@@ -1,8 +1,8 @@
SUMMARY = "Freescale GPU SDK Samples"
DESCRIPTION = "Set of sample applications for Freescale GPU"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=01ba08a2b77c3a0a9d0ab5d4d83fed64"
-DEPENDS = "${X11_DEPENDS} ${WL_DEPENDS}"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3880bb9c943b135a30fad5e8aabd3ee9"
+DEPENDS = "${X11_DEPENDS} ${WL_DEPENDS} devil gstreamer1.0 gstreamer1.0-plugins-base"
DEPENDS_append_mx6q = " virtual/libgles2"
DEPENDS_append_mx6dl = " virtual/libgles2"
DEPENDS_append_mx6sx = " virtual/libgles2"
@@ -17,13 +17,18 @@ RPROVIDES_${PN} = "vivante-gpu-sdk"
RREPLACES_${PN} = "vivante-gpu-sdk"
RCONFLICTS_${PN} = "vivante-gpu-sdk"
-SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true"
+SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \
+ file://0001-update-gstreamer1.0-include-directory.patch"
-SRC_URI[md5sum] = "8f656b8a3a7b7390f434ec1cebf66334"
-SRC_URI[sha256sum] = "eccfd6f412c256e92e61d811cbe607e77bdfd13e268f4840b819e32dcd92921e"
+SRC_URI[md5sum] = "92575bc028cea9ac7a3c2a05f7848926"
+SRC_URI[sha256sum] = "c57103cbfaf74abec795130c7ea6ce9801f8cfd5c08832498d0a1ec21f178ebc"
BACKEND = "${@base_contains('DISTRO_FEATURES', 'x11', 'X11', \
base_contains('DISTRO_FEATURES', 'wayland', 'Wayland', 'FB', d), d)}"
+
+HAS_VPU = "1"
+HAS_VPU_mx6sx = "0"
+
do_compile () {
export FSL_GRAPHICS_SDK=${S}
export FSL_PLATFORM_NAME=Yocto
@@ -37,12 +42,16 @@ do_install () {
install -d "${D}/opt/${PN}"
./build.sh -f GNUmakefile_Yocto EGLBackend=${BACKEND} install
cp -r bin/* "${D}/opt/${PN}"
+ if [ "${HAS_VPU}" = "0" ]; then
+ rm -rf ${D}/opt/${PN}/GLES2/DirectMultiSamplingVideoYUV
+ rm -rf ${D}/opt/${PN}/GLES3/DirectMultiSamplingVideoYUV
+ fi
rm -rf ${D}/opt/${PN}/GLES2/S05_PrecompiledShader
rm -rf ${D}/opt/${PN}/GLES3/S05_PrecompiledShader
}
FILES_${PN} += "/opt/${PN}"
FILES_${PN}-dbg += "/opt/${PN}/*/*/.debug /usr/src/debug"
-INSANE_SKIP_${PN} += "rpaths"
+INSANE_SKIP_${PN} += "already-stripped rpaths"
COMPATIBLE_MACHINE = "(mx6)"
--
1.9.1
More information about the meta-freescale
mailing list