From 972dcfcdbfe75dcfeb777150c136576cf1a71e99 Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Fri, 9 Oct 2015 22:59:03 +0200 Subject: initial commit for Enea Linux 5.0 arm Signed-off-by: Tudor Florea --- meta/recipes-graphics/mesa/libglu_9.0.0.bb | 27 + .../0001-mesa-demos-Add-missing-data-files.patch | 624 +++++++++++++++++++++ ...mplement-with-AC_WITH-glut-so-that-withou.patch | 54 ++ ...llow-to-disable-demos-which-require-GLEW-.patch | 424 ++++++++++++++ ...4-Use-DEMOS_DATA_DIR-to-locate-data-files.patch | 234 ++++++++ ...hen-EGL_MESA_screen_surface-extension-isn.patch | 267 +++++++++ ...ay-for-EGL_MESA_screen_surface-extension-.patch | 41 ++ .../0007-Install-few-more-test-programs.patch | 74 +++ ...dd-few-missing-.glsl-.vert-.frag-files-to.patch | 101 ++++ ...glsl-perf-Install-.glsl-.vert-.frag-files.patch | 73 +++ meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb | 53 ++ meta/recipes-graphics/mesa/mesa-gl_10.1.3.bb | 11 + meta/recipes-graphics/mesa/mesa.inc | 189 +++++++ ..._sw-include-xlib_sw_winsys.h-only-when-HA.patch | 52 ++ ...ate-NativeDisplayType-depending-on-config.patch | 362 ++++++++++++ .../mesa/mesa/0006-fix-out-of-tree-egl.patch | 48 ++ meta/recipes-graphics/mesa/mesa_10.1.3.bb | 19 + meta/recipes-graphics/mesa/mesa_git.bb | 23 + 18 files changed, 2676 insertions(+) create mode 100644 meta/recipes-graphics/mesa/libglu_9.0.0.bb create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0001-mesa-demos-Add-missing-data-files.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch create mode 100644 meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb create mode 100644 meta/recipes-graphics/mesa/mesa-gl_10.1.3.bb create mode 100644 meta/recipes-graphics/mesa/mesa.inc create mode 100644 meta/recipes-graphics/mesa/mesa/0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch create mode 100644 meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch create mode 100644 meta/recipes-graphics/mesa/mesa/0006-fix-out-of-tree-egl.patch create mode 100644 meta/recipes-graphics/mesa/mesa_10.1.3.bb create mode 100644 meta/recipes-graphics/mesa/mesa_git.bb (limited to 'meta/recipes-graphics/mesa') diff --git a/meta/recipes-graphics/mesa/libglu_9.0.0.bb b/meta/recipes-graphics/mesa/libglu_9.0.0.bb new file mode 100644 index 0000000000..06d30f9bfa --- /dev/null +++ b/meta/recipes-graphics/mesa/libglu_9.0.0.bb @@ -0,0 +1,27 @@ +SUMMARY = "The OpenGL utility toolkit" +DESCRIPTION = "GLU is a utility toolkit used with OpenGL implementations" + +HOMEPAGE = "http://mesa3d.org" +BUGTRACKER = "https://bugs.freedesktop.org" +SECTION = "x11" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://include/GL/glu.h;endline=29;md5=6b79c570f644363b356456e7d44471d9 \ + file://src/libtess/tess.c;endline=29;md5=6b79c570f644363b356456e7d44471d9" + +# Epoch as this used to be part of mesa +PE = "2" +PR = "0" + +SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/glu/glu-${PV}.tar.bz2" + +SRC_URI[md5sum] = "be9249132ff49275461cf92039083030" +SRC_URI[sha256sum] = "1f7ad0d379a722fcbd303aa5650c6d7d5544fde83196b42a73d1193568a4df12" + +S = "${WORKDIR}/glu-${PV}" + +DEPENDS = "virtual/libgl" + +inherit autotools pkgconfig + +# Remove the mesa-glu dependency in mesa-glu-dev, as mesa-glu is empty +RDEPENDS_${PN}-dev = "" diff --git a/meta/recipes-graphics/mesa/mesa-demos/0001-mesa-demos-Add-missing-data-files.patch b/meta/recipes-graphics/mesa/mesa-demos/0001-mesa-demos-Add-missing-data-files.patch new file mode 100644 index 0000000000..93ee9c286d --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0001-mesa-demos-Add-missing-data-files.patch @@ -0,0 +1,624 @@ +From b695c3a3fa3f4cd48c13aa26542110de27075518 Mon Sep 17 00:00:00 2001 +From: Drew Moseley +Date: Mon, 12 May 2014 15:22:32 -0400 +Subject: [PATCH 1/9] mesa-demos: Add missing data files. + +Add some data files that are present in the git repository: + http://cgit.freedesktop.org/mesa/demos/tree/?id=mesa-demos-8.1.0 +but not in the release tarball + ftp://ftp.freedesktop.org/pub/mesa/demos/8.1.0/mesa-demos-8.1.0.tar.bz2 + +Upstream-Status: Backport +Signed-off-by: Drew Moseley +Signed-off-by: Martin Jansa +--- + src/fpglsl/depth-read.glsl | 4 + + src/fpglsl/infinite-loop.glsl | 7 + + src/glsl/CH11-bumpmaptex.frag | 47 +++++++ + src/glsl/blinking-teapot.frag | 31 +++++ + src/glsl/blinking-teapot.vert | 16 +++ + src/glsl/convolution.frag | 21 +++ + src/glsl/simplex-noise.glsl | 279 ++++++++++++++++++++++++++++++++++++++++ + src/glsl/skinning.vert | 24 ++++ + src/perf/glslstateschange1.frag | 19 +++ + src/perf/glslstateschange1.vert | 14 ++ + src/perf/glslstateschange2.frag | 17 +++ + src/perf/glslstateschange2.vert | 14 ++ + src/vpglsl/infinite-loop.glsl | 8 ++ + 13 files changed, 501 insertions(+) + create mode 100644 src/fpglsl/depth-read.glsl + create mode 100644 src/fpglsl/infinite-loop.glsl + create mode 100644 src/glsl/CH11-bumpmaptex.frag + create mode 100644 src/glsl/blinking-teapot.frag + create mode 100644 src/glsl/blinking-teapot.vert + create mode 100644 src/glsl/convolution.frag + create mode 100644 src/glsl/simplex-noise.glsl + create mode 100644 src/glsl/skinning.vert + create mode 100644 src/perf/glslstateschange1.frag + create mode 100644 src/perf/glslstateschange1.vert + create mode 100644 src/perf/glslstateschange2.frag + create mode 100644 src/perf/glslstateschange2.vert + create mode 100644 src/vpglsl/infinite-loop.glsl + +diff --git a/src/fpglsl/depth-read.glsl b/src/fpglsl/depth-read.glsl +new file mode 100644 +index 0000000..86d298e +--- /dev/null ++++ b/src/fpglsl/depth-read.glsl +@@ -0,0 +1,4 @@ ++void main() ++{ ++ gl_FragColor = gl_FragCoord.zzzz; ++} +diff --git a/src/fpglsl/infinite-loop.glsl b/src/fpglsl/infinite-loop.glsl +new file mode 100644 +index 0000000..c6dc6ee +--- /dev/null ++++ b/src/fpglsl/infinite-loop.glsl +@@ -0,0 +1,7 @@ ++void main() { ++ vec4 sum = vec4(0); ++ for (int i = 1; i != 2; i += 2) { ++ sum += vec4(0.1, 0.1, 0.1, 0.1); ++ } ++ gl_FragColor = sum; ++} +diff --git a/src/glsl/CH11-bumpmaptex.frag b/src/glsl/CH11-bumpmaptex.frag +new file mode 100644 +index 0000000..b5dabb4 +--- /dev/null ++++ b/src/glsl/CH11-bumpmaptex.frag +@@ -0,0 +1,47 @@ ++// ++// Fragment shader for procedural bumps ++// ++// Authors: John Kessenich, Randi Rost ++// ++// Copyright (c) 2002-2006 3Dlabs Inc. Ltd. ++// ++// See 3Dlabs-License.txt for license information ++// ++// Texture mapping/modulation added by Brian Paul ++// ++ ++varying vec3 LightDir; ++varying vec3 EyeDir; ++ ++uniform float BumpDensity; // = 16.0 ++uniform float BumpSize; // = 0.15 ++uniform float SpecularFactor; // = 0.5 ++ ++uniform sampler2D Tex; ++ ++void main() ++{ ++ vec3 ambient = vec3(0.25); ++ vec3 litColor; ++ vec2 c = BumpDensity * gl_TexCoord[0].st; ++ vec2 p = fract(c) - vec2(0.5); ++ ++ float d, f; ++ d = p.x * p.x + p.y * p.y; ++ f = inversesqrt(d + 1.0); ++ ++ if (d >= BumpSize) ++ { p = vec2(0.0); f = 1.0; } ++ ++ vec3 SurfaceColor = texture2D(Tex, gl_TexCoord[0].st).xyz; ++ ++ vec3 normDelta = vec3(p.x, p.y, 1.0) * f; ++ litColor = SurfaceColor * (ambient + max(dot(normDelta, LightDir), 0.0)); ++ vec3 reflectDir = reflect(LightDir, normDelta); ++ ++ float spec = max(dot(EyeDir, reflectDir), 0.0); ++ spec *= SpecularFactor; ++ litColor = min(litColor + spec, vec3(1.0)); ++ ++ gl_FragColor = vec4(litColor, 1.0); ++} +diff --git a/src/glsl/blinking-teapot.frag b/src/glsl/blinking-teapot.frag +new file mode 100644 +index 0000000..0db060b +--- /dev/null ++++ b/src/glsl/blinking-teapot.frag +@@ -0,0 +1,31 @@ ++#extension GL_ARB_uniform_buffer_object : enable ++ ++layout(std140) uniform colors0 ++{ ++ float DiffuseCool; ++ float DiffuseWarm; ++ vec3 SurfaceColor; ++ vec3 WarmColor; ++ vec3 CoolColor; ++ vec4 some[8]; ++}; ++ ++varying float NdotL; ++varying vec3 ReflectVec; ++varying vec3 ViewVec; ++ ++void main (void) ++{ ++ ++ vec3 kcool = min(CoolColor + DiffuseCool * SurfaceColor, 1.0); ++ vec3 kwarm = min(WarmColor + DiffuseWarm * SurfaceColor, 1.0); ++ vec3 kfinal = mix(kcool, kwarm, NdotL); ++ ++ vec3 nreflect = normalize(ReflectVec); ++ vec3 nview = normalize(ViewVec); ++ ++ float spec = max(dot(nreflect, nview), 0.0); ++ spec = pow(spec, 32.0); ++ ++ gl_FragColor = vec4 (min(kfinal + spec, 1.0), 1.0); ++} +diff --git a/src/glsl/blinking-teapot.vert b/src/glsl/blinking-teapot.vert +new file mode 100644 +index 0000000..397d733 +--- /dev/null ++++ b/src/glsl/blinking-teapot.vert +@@ -0,0 +1,16 @@ ++vec3 LightPosition = vec3(0.0, 10.0, 4.0); ++ ++varying float NdotL; ++varying vec3 ReflectVec; ++varying vec3 ViewVec; ++ ++void main(void) ++{ ++ vec3 ecPos = vec3 (gl_ModelViewMatrix * gl_Vertex); ++ vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal); ++ vec3 lightVec = normalize(LightPosition - ecPos); ++ ReflectVec = normalize(reflect(-lightVec, tnorm)); ++ ViewVec = normalize(-ecPos); ++ NdotL = (dot(lightVec, tnorm) + 1.0) * 0.5; ++ gl_Position = ftransform(); ++} +diff --git a/src/glsl/convolution.frag b/src/glsl/convolution.frag +new file mode 100644 +index 0000000..e49b8ac +--- /dev/null ++++ b/src/glsl/convolution.frag +@@ -0,0 +1,21 @@ ++ ++const int KernelSize = 9; ++ ++//texture offsets ++uniform vec2 Offset[KernelSize]; ++//convolution kernel ++uniform vec4 KernelValue[KernelSize]; ++uniform sampler2D srcTex; ++uniform vec4 ScaleFactor; ++uniform vec4 BaseColor; ++ ++void main(void) ++{ ++ int i; ++ vec4 sum = vec4(0.0); ++ for (i = 0; i < KernelSize; ++i) { ++ vec4 tmp = texture2D(srcTex, gl_TexCoord[0].st + Offset[i]); ++ sum += tmp * KernelValue[i]; ++ } ++ gl_FragColor = sum * ScaleFactor + BaseColor; ++} +diff --git a/src/glsl/simplex-noise.glsl b/src/glsl/simplex-noise.glsl +new file mode 100644 +index 0000000..b6833cb +--- /dev/null ++++ b/src/glsl/simplex-noise.glsl +@@ -0,0 +1,279 @@ ++// ++// Description : Array and textureless GLSL 2D/3D/4D simplex ++// noise functions. ++// Author : Ian McEwan, Ashima Arts. ++// Maintainer : ijm ++// Lastmod : 20110223 ++// License : Copyright (C) 2011 Ashima Arts. All rights reserved. ++// Distributed under the Artistic License 2.0; See LICENCE file. ++// ++ ++#define NORMALIZE_GRADIENTS ++#undef USE_CIRCLE ++#define COLLAPSE_SORTNET ++ ++float permute(float x0,vec3 p) { ++ float x1 = mod(x0 * p.y, p.x); ++ return floor( mod( (x1 + p.z) *x0, p.x )); ++ } ++vec2 permute(vec2 x0,vec3 p) { ++ vec2 x1 = mod(x0 * p.y, p.x); ++ return floor( mod( (x1 + p.z) *x0, p.x )); ++ } ++vec3 permute(vec3 x0,vec3 p) { ++ vec3 x1 = mod(x0 * p.y, p.x); ++ return floor( mod( (x1 + p.z) *x0, p.x )); ++ } ++vec4 permute(vec4 x0,vec3 p) { ++ vec4 x1 = mod(x0 * p.y, p.x); ++ return floor( mod( (x1 + p.z) *x0, p.x )); ++ } ++ ++uniform vec4 pParam; ++// Example ++// const vec4 pParam = vec4( 17.* 17., 34., 1., 7.); ++ ++float taylorInvSqrt(float r) ++ { ++ return ( 0.83666002653408 + 0.7*0.85373472095314 - 0.85373472095314 * r ); ++ } ++ ++float simplexNoise2(vec2 v) ++ { ++ const vec2 C = vec2(0.211324865405187134, // (3.0-sqrt(3.0))/6.; ++ 0.366025403784438597); // 0.5*(sqrt(3.0)-1.); ++ const vec3 D = vec3( 0., 0.5, 2.0) * 3.14159265358979312; ++// First corner ++ vec2 i = floor(v + dot(v, C.yy) ); ++ vec2 x0 = v - i + dot(i, C.xx); ++ ++// Other corners ++ vec2 i1 = (x0.x > x0.y) ? vec2(1.,0.) : vec2(0.,1.) ; ++ ++ // x0 = x0 - 0. + 0. * C ++ vec2 x1 = x0 - i1 + 1. * C.xx ; ++ vec2 x2 = x0 - 1. + 2. * C.xx ; ++ ++// Permutations ++ i = mod(i, pParam.x); ++ vec3 p = permute( permute( ++ i.y + vec3(0., i1.y, 1. ), pParam.xyz) ++ + i.x + vec3(0., i1.x, 1. ), pParam.xyz); ++ ++#ifndef USE_CIRCLE ++// ( N points uniformly over a line, mapped onto a diamond.) ++ vec3 x = fract(p / pParam.w) ; ++ vec3 h = 0.5 - abs(x) ; ++ ++ vec3 sx = vec3(lessThan(x,D.xxx)) *2. -1.; ++ vec3 sh = vec3(lessThan(h,D.xxx)); ++ ++ vec3 a0 = x + sx*sh; ++ vec2 p0 = vec2(a0.x,h.x); ++ vec2 p1 = vec2(a0.y,h.y); ++ vec2 p2 = vec2(a0.z,h.z); ++ ++#ifdef NORMALISE_GRADIENTS ++ p0 *= taylorInvSqrt(dot(p0,p0)); ++ p1 *= taylorInvSqrt(dot(p1,p1)); ++ p2 *= taylorInvSqrt(dot(p2,p2)); ++#endif ++ ++ vec3 g = 2.0 * vec3( dot(p0, x0), dot(p1, x1), dot(p2, x2) ); ++#else ++// N points around a unit circle. ++ vec3 phi = D.z * mod(p,pParam.w) /pParam.w ; ++ vec4 a0 = sin(phi.xxyy+D.xyxy); ++ vec2 a1 = sin(phi.zz +D.xy); ++ vec3 g = vec3( dot(a0.xy, x0), dot(a0.zw, x1), dot(a1.xy, x2) ); ++#endif ++// mix ++ vec3 m = max(0.5 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.); ++ m = m*m ; ++ return 1.66666* 70.*dot(m*m, g); ++ } ++ ++float simplexNoise3(vec3 v) ++ { ++ const vec2 C = vec2(1./6. , 1./3. ) ; ++ const vec4 D = vec4(0., 0.5, 1.0, 2.0); ++ ++// First corner ++ vec3 i = floor(v + dot(v, C.yyy) ); ++ vec3 x0 = v - i + dot(i, C.xxx) ; ++ ++// Other corners ++#ifdef COLLAPSE_SORTNET ++ vec3 g = vec3( greaterThan( x0.xyz, x0.yzx) ); ++ vec3 l = vec3( lessThanEqual( x0.xyz, x0.yzx) ); ++ ++ vec3 i1 = g.xyz * l.zxy; ++ vec3 i2 = max( g.xyz, l.zxy); ++#else ++// Keeping this clean - let the compiler optimize. ++ vec3 q1; ++ q1.x = max(x0.x, x0.y); ++ q1.y = min(x0.x, x0.y); ++ q1.z = x0.z; ++ ++ vec3 q2; ++ q2.x = max(q1.x,q1.z); ++ q2.z = min(q1.x,q1.z); ++ q2.y = q1.y; ++ ++ vec3 q3; ++ q3.y = max(q2.y, q2.z); ++ q3.z = min(q2.y, q2.z); ++ q3.x = q2.x; ++ ++ vec3 i1 = vec3(equal(q3.xxx, x0)); ++ vec3 i2 = i1 + vec3(equal(q3.yyy, x0)); ++#endif ++ ++ // x0 = x0 - 0. + 0. * C ++ vec3 x1 = x0 - i1 + 1. * C.xxx; ++ vec3 x2 = x0 - i2 + 2. * C.xxx; ++ vec3 x3 = x0 - 1. + 3. * C.xxx; ++ ++// Permutations ++ i = mod(i, pParam.x ); ++ vec4 p = permute( permute( permute( ++ i.z + vec4(0., i1.z, i2.z, 1. ), pParam.xyz) ++ + i.y + vec4(0., i1.y, i2.y, 1. ), pParam.xyz) ++ + i.x + vec4(0., i1.x, i2.x, 1. ), pParam.xyz); ++ ++// Gradients ++// ( N*N points uniformly over a square, mapped onto a octohedron.) ++ float n_ = 1.0/pParam.w ; ++ vec3 ns = n_ * D.wyz - D.xzx ; ++ ++ vec4 j = p - pParam.w*pParam.w*floor(p * ns.z *ns.z); // mod(p,N*N) ++ ++ vec4 x_ = floor(j * ns.z) ; ++ vec4 y_ = floor(j - pParam.w * x_ ) ; // mod(j,N) ++ ++ vec4 x = x_ *ns.x + ns.yyyy; ++ vec4 y = y_ *ns.x + ns.yyyy; ++ vec4 h = 1. - abs(x) - abs(y); ++ ++ vec4 b0 = vec4( x.xy, y.xy ); ++ vec4 b1 = vec4( x.zw, y.zw ); ++ ++ vec4 s0 = vec4(lessThan(b0,D.xxxx)) *2. -1.; ++ vec4 s1 = vec4(lessThan(b1,D.xxxx)) *2. -1.; ++ vec4 sh = vec4(lessThan(h, D.xxxx)); ++ ++ vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; ++ vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; ++ ++ vec3 p0 = vec3(a0.xy,h.x); ++ vec3 p1 = vec3(a0.zw,h.y); ++ vec3 p2 = vec3(a1.xy,h.z); ++ vec3 p3 = vec3(a1.zw,h.w); ++ ++#ifdef NORMALISE_GRADIENTS ++ p0 *= taylorInvSqrt(dot(p0,p0)); ++ p1 *= taylorInvSqrt(dot(p1,p1)); ++ p2 *= taylorInvSqrt(dot(p2,p2)); ++ p3 *= taylorInvSqrt(dot(p3,p3)); ++#endif ++ ++// Mix ++ vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.); ++ m = m * m; ++//used to be 64. ++ return 48.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), ++ dot(p2,x2), dot(p3,x3) ) ); ++ } ++ ++vec4 grad4(float j, vec4 ip) ++ { ++ const vec4 ones = vec4(1.,1.,1.,-1.); ++ vec4 p,s; ++ ++ p.xyz = floor( fract (vec3(j) * ip.xyz) *pParam.w) * ip.z -1.0; ++ p.w = 1.5 - dot(abs(p.xyz), ones.xyz); ++ s = vec4(lessThan(p,vec4(0.))); ++ p.xyz = p.xyz + (s.xyz*2.-1.) * s.www; ++ ++ return p; ++ } ++ ++float simplexNoise4(vec4 v) ++ { ++ const vec2 C = vec2( 0.138196601125010504, // (5 - sqrt(5))/20 G4 ++ 0.309016994374947451); // (sqrt(5) - 1)/4 F4 ++// First corner ++ vec4 i = floor(v + dot(v, C.yyyy) ); ++ vec4 x0 = v - i + dot(i, C.xxxx); ++ ++// Other corners ++ ++// Force existance of strict total ordering in sort. ++ vec4 q0 = floor(x0 * 1024.0) + vec4( 0., 1./4., 2./4. , 3./4.); ++ vec4 q1; ++ q1.xy = max(q0.xy,q0.zw); // x:z y:w ++ q1.zw = min(q0.xy,q0.zw); ++ ++ vec4 q2; ++ q2.xz = max(q1.xz,q1.yw); // x:y z:w ++ q2.yw = min(q1.xz,q1.yw); ++ ++ vec4 q3; ++ q3.y = max(q2.y,q2.z); // y:z ++ q3.z = min(q2.y,q2.z); ++ q3.xw = q2.xw; ++ ++ vec4 i1 = vec4(lessThanEqual(q3.xxxx, q0)); ++ vec4 i2 = vec4(lessThanEqual(q3.yyyy, q0)); ++ vec4 i3 = vec4(lessThanEqual(q3.zzzz, q0)); ++ ++ // x0 = x0 - 0. + 0. * C ++ vec4 x1 = x0 - i1 + 1. * C.xxxx; ++ vec4 x2 = x0 - i2 + 2. * C.xxxx; ++ vec4 x3 = x0 - i3 + 3. * C.xxxx; ++ vec4 x4 = x0 - 1. + 4. * C.xxxx; ++ ++// Permutations ++ i = mod(i, pParam.x ); ++ float j0 = permute( permute( permute( permute ( ++ i.w, pParam.xyz) + i.z, pParam.xyz) ++ + i.y, pParam.xyz) + i.x, pParam.xyz); ++ vec4 j1 = permute( permute( permute( permute ( ++ i.w + vec4(i1.w, i2.w, i3.w, 1. ), pParam.xyz) ++ + i.z + vec4(i1.z, i2.z, i3.z, 1. ), pParam.xyz) ++ + i.y + vec4(i1.y, i2.y, i3.y, 1. ), pParam.xyz) ++ + i.x + vec4(i1.x, i2.x, i3.x, 1. ), pParam.xyz); ++// Gradients ++// ( N*N*N points uniformly over a cube, mapped onto a 4-octohedron.) ++ vec4 ip = pParam ; ++ ip.xy *= pParam.w ; ++ ip.x *= pParam.w ; ++ ip = vec4(1.,1.,1.,2.) / ip ; ++ ++ vec4 p0 = grad4(j0, ip); ++ vec4 p1 = grad4(j1.x, ip); ++ vec4 p2 = grad4(j1.y, ip); ++ vec4 p3 = grad4(j1.z, ip); ++ vec4 p4 = grad4(j1.w, ip); ++ ++#ifdef NORMALISE_GRADIENTS ++ p0 *= taylorInvSqrt(dot(p0,p0)); ++ p1 *= taylorInvSqrt(dot(p1,p1)); ++ p2 *= taylorInvSqrt(dot(p2,p2)); ++ p3 *= taylorInvSqrt(dot(p3,p3)); ++ p4 *= taylorInvSqrt(dot(p4,p4)); ++#endif ++ ++// Mix ++ vec3 m0 = max(0.6 - vec3(dot(x0,x0), dot(x1,x1), dot(x2,x2)), 0.); ++ vec2 m1 = max(0.6 - vec2(dot(x3,x3), dot(x4,x4) ), 0.); ++ m0 = m0 * m0; ++ m1 = m1 * m1; ++ return 32. * ( dot(m0*m0, vec3( dot( p0, x0 ), dot( p1, x1 ), dot( p2, x2 ))) ++ + dot(m1*m1, vec2( dot( p3, x3 ), dot( p4, x4 ) ) ) ) ; ++ ++ } ++ ++ ++ +diff --git a/src/glsl/skinning.vert b/src/glsl/skinning.vert +new file mode 100644 +index 0000000..28970ee +--- /dev/null ++++ b/src/glsl/skinning.vert +@@ -0,0 +1,24 @@ ++// Vertex weighting/blendin shader ++// Brian Paul ++// 4 Nov 2008 ++ ++uniform mat4 mat0, mat1; ++attribute float weight; ++ ++void main() ++{ ++ // simple diffuse shading ++ // Note that we should really transform the normal vector along with ++ // the postion below... someday. ++ vec3 lightVec = vec3(0, 0, 1); ++ vec3 norm = gl_NormalMatrix * gl_Normal; ++ float dot = 0.2 + max(0.0, dot(norm, lightVec)); ++ gl_FrontColor = vec4(dot); ++ ++ // compute sum of weighted transformations ++ vec4 pos0 = mat0 * gl_Vertex; ++ vec4 pos1 = mat1 * gl_Vertex; ++ vec4 pos = mix(pos0, pos1, weight); ++ ++ gl_Position = gl_ModelViewProjectionMatrix * pos; ++} +diff --git a/src/perf/glslstateschange1.frag b/src/perf/glslstateschange1.frag +new file mode 100644 +index 0000000..0839436 +--- /dev/null ++++ b/src/perf/glslstateschange1.frag +@@ -0,0 +1,19 @@ ++// Multi-texture fragment shader ++// Brian Paul ++ ++// Composite second texture over first. ++// We're assuming the 2nd texture has a meaningful alpha channel. ++ ++uniform sampler2D tex1; ++uniform sampler2D tex2; ++uniform vec4 UniV1; ++uniform vec4 UniV2; ++ ++void main() ++{ ++ vec4 t3; ++ vec4 t1 = texture2D(tex1, gl_TexCoord[0].xy); ++ vec4 t2 = texture2D(tex2, gl_TexCoord[1].xy); ++ t3 = mix(t1, t2, t2.w); ++ gl_FragColor = t3 + UniV1 + UniV2; ++} +diff --git a/src/perf/glslstateschange1.vert b/src/perf/glslstateschange1.vert +new file mode 100644 +index 0000000..cef50db +--- /dev/null ++++ b/src/perf/glslstateschange1.vert +@@ -0,0 +1,14 @@ ++// Multi-texture vertex shader ++// Brian Paul ++ ++ ++attribute vec4 TexCoord0, TexCoord1; ++attribute vec4 VertCoord; ++ ++void main() ++{ ++ gl_TexCoord[0] = TexCoord0; ++ gl_TexCoord[1] = TexCoord1; ++ // note: may use gl_Vertex or VertCoord here for testing: ++ gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; ++} +diff --git a/src/perf/glslstateschange2.frag b/src/perf/glslstateschange2.frag +new file mode 100644 +index 0000000..0df0319 +--- /dev/null ++++ b/src/perf/glslstateschange2.frag +@@ -0,0 +1,17 @@ ++// Multi-texture fragment shader ++// Brian Paul ++ ++// Composite second texture over first. ++// We're assuming the 2nd texture has a meaningful alpha channel. ++ ++uniform sampler2D tex1; ++uniform sampler2D tex2; ++uniform vec4 UniV1; ++uniform vec4 UniV2; ++ ++void main() ++{ ++ vec4 t1 = texture2D(tex1, gl_TexCoord[0].xy); ++ vec4 t2 = texture2D(tex2, gl_TexCoord[1].xy); ++ gl_FragColor = t1 + t2 + UniV1 + UniV2; ++} +diff --git a/src/perf/glslstateschange2.vert b/src/perf/glslstateschange2.vert +new file mode 100644 +index 0000000..cef50db +--- /dev/null ++++ b/src/perf/glslstateschange2.vert +@@ -0,0 +1,14 @@ ++// Multi-texture vertex shader ++// Brian Paul ++ ++ ++attribute vec4 TexCoord0, TexCoord1; ++attribute vec4 VertCoord; ++ ++void main() ++{ ++ gl_TexCoord[0] = TexCoord0; ++ gl_TexCoord[1] = TexCoord1; ++ // note: may use gl_Vertex or VertCoord here for testing: ++ gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; ++} +diff --git a/src/vpglsl/infinite-loop.glsl b/src/vpglsl/infinite-loop.glsl +new file mode 100644 +index 0000000..bc7ae4b +--- /dev/null ++++ b/src/vpglsl/infinite-loop.glsl +@@ -0,0 +1,8 @@ ++void main() { ++ gl_Position = gl_Vertex; ++ vec4 sum = vec4(0); ++ for (int i = 1; i != 2; i += 2) { ++ sum += vec4(0.1, 0.1, 0.1, 0.1); ++ } ++ gl_FrontColor = sum; ++} +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch b/meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch new file mode 100644 index 0000000000..c96af12acf --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch @@ -0,0 +1,54 @@ +From 36829a8d7ad2888515fbee95c2a70b3d636d7538 Mon Sep 17 00:00:00 2001 +From: Ross Burton +Date: Wed, 9 Jul 2014 14:30:33 +0200 +Subject: [PATCH 2/9] Correctly implement with AC_WITH(glut) so that + --without-glut works. + +--- + configure.ac | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c4ee12b..9445424 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -67,21 +67,25 @@ DEMO_CFLAGS="$DEMO_CFLAGS $GL_CFLAGS" + DEMO_LIBS="$DEMO_LIBS $GL_LIBS" + + dnl Check for GLUT +-GLUT_CFLAGS="" +-GLUT_LIBS=-lglut +-glut_enabled=yes ++glut_enabled=no + AC_ARG_WITH([glut], + [AS_HELP_STRING([--with-glut=DIR], + [glut install directory])], + [GLUT_CFLAGS="-I$withval/include" +- GLUT_LIBS="-L$withval/lib -lglut"]) +-AC_CHECK_HEADER([GL/glut.h], +- [], +- [glut_enabled=no]) +-AC_CHECK_LIB([glut], +- [glutInit], +- [], +- [glut_enabled=no]) ++ GLUT_LIBS="-L$withval/lib -lglut"], ++ [GLUT_CFLAGS="" ++ GLUT_LIBS="-lglut"] ++ ) ++AS_IF([test "x$with_glut" != xno], ++ [AC_CHECK_HEADER([GL/glut.h], ++ [], ++ [glut_enabled=no]) ++ AC_CHECK_LIB([glut], ++ [glutInit], ++ [], ++ [glut_enabled=no]) ++ glut_enabled=yes ++]) + + dnl Check for FreeGLUT 2.6 or later + AC_EGREP_HEADER([glutInitContextProfile], +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch b/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch new file mode 100644 index 0000000000..4b07193a7f --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch @@ -0,0 +1,424 @@ +From b25e9c675cf560b8b037dc855c6b3b1d09957867 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Wed, 9 Jul 2014 14:23:41 +0200 +Subject: [PATCH 3/9] configure: Allow to disable demos which require GLEW or + GLU + +* in some systems without X11 support we don't have GLEW, but + mesa-demos are still useful + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa +--- + configure.ac | 49 ++++++++++++++++++++--------- + src/Makefile.am | 14 ++++++--- + src/demos/Makefile.am | 73 ++++++++++++++++++++++++------------------- + src/egl/Makefile.am | 8 +++-- + src/egl/opengles1/Makefile.am | 44 +++++++++++++++----------- + src/egl/opengles2/Makefile.am | 33 ++++++++++--------- + 6 files changed, 135 insertions(+), 86 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 9445424..bc4c8d1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -93,25 +93,44 @@ AC_EGREP_HEADER([glutInitContextProfile], + [AC_DEFINE(HAVE_FREEGLUT)], + []) + +-dnl Check for GLEW +-PKG_CHECK_MODULES(GLEW, [glew >= 1.5.4]) +-DEMO_CFLAGS="$DEMO_CFLAGS $GLEW_CFLAGS" +-DEMO_LIBS="$DEMO_LIBS $GLEW_LIBS" ++AC_ARG_ENABLE([glew], ++ [AS_HELP_STRING([--enable-glew], ++ [build demos which require glew @<:@default=yes@:>@])], ++ [enable_glew="$enableval"], ++ [enable_glew=yes] ++) ++ ++if test "x$enable_glew" = xyes; then ++ dnl Check for GLEW ++ PKG_CHECK_MODULES(GLEW, [glew >= 1.5.4], [glew_enabled=yes], [glew_enabled=no]) ++ DEMO_CFLAGS="$DEMO_CFLAGS $GLEW_CFLAGS" ++ DEMO_LIBS="$DEMO_LIBS $GLEW_LIBS" ++fi + + # LIBS was set by AC_CHECK_LIB above + LIBS="" + +-PKG_CHECK_MODULES(GLU, [glu], [], +- [AC_CHECK_HEADER([GL/glu.h], +- [], +- AC_MSG_ERROR([GLU not found])) +- AC_CHECK_LIB([GLU], +- [gluBeginCurve], +- [GLU_LIBS=-lGLU], +- AC_MSG_ERROR([GLU required])) ]) ++AC_ARG_ENABLE([glu], ++ [AS_HELP_STRING([--enable-glu], ++ [build demos which require glu @<:@default=yes@:>@])], ++ [enable_glu="$enableval"], ++ [enable_glu=yes] ++) + +-DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" +-DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" ++if test "x$enable_glu" = xyes; then ++ PKG_CHECK_MODULES(GLU, [glu], [], ++ [AC_CHECK_HEADER([GL/glu.h], ++ [], ++ AC_MSG_ERROR([GLU not found])) ++ AC_CHECK_LIB([GLU], ++ [gluBeginCurve], ++ [GLU_LIBS=-lGLU ++ glu_enabled=yes], ++ AC_MSG_ERROR([GLU required])) ]) ++ ++ DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" ++ DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" ++fi + + AC_ARG_ENABLE([egl], + [AS_HELP_STRING([--enable-egl], +@@ -304,6 +323,8 @@ AC_SUBST([WAYLAND_CFLAGS]) + AC_SUBST([WAYLAND_LIBS]) + + ++AM_CONDITIONAL(HAVE_GLU, test "x$glu_enabled" = "xyes") ++AM_CONDITIONAL(HAVE_GLEW, test "x$glew_enabled" = "xyes") + AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") + AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") + AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") +diff --git a/src/Makefile.am b/src/Makefile.am +index 1647d64..754c47c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -23,14 +23,18 @@ + # Eric Anholt + ++if HAVE_GLEW ++UTIL = util ++endif ++ + SUBDIRS = \ +- util \ ++ $(UTIL) \ + data \ + demos \ + egl \ + fp \ + fpglsl \ + glsl \ +- gs \ ++ gs \ + objviewer \ + osdemos \ + perf \ +@@ -40,8 +39,12 @@ SUBDIRS = \ + slang \ + tests \ + tools \ +- trivial \ +- vp \ +- vpglsl \ + wgl \ + xdemos ++ ++if HAVE_GLEW ++SUBDIRS += \ ++ vp \ ++ vpglsl \ ++ trivial ++endif +diff --git a/src/demos/Makefile.am b/src/demos/Makefile.am +index 41603fa..ab1e3ab 100644 +--- a/src/demos/Makefile.am ++++ b/src/demos/Makefile.am +@@ -30,91 +30,100 @@ AM_LDFLAGS = \ + $(DEMO_LIBS) \ + $(GLUT_LIBS) + ++bin_PROGRAMS = ++ + if HAVE_GLUT +-bin_PROGRAMS = \ ++if HAVE_GLEW ++bin_PROGRAMS += \ + arbfplight \ + arbfslight \ + arbocclude \ + arbocclude2 \ +- bounce \ +- clearspd \ + copypix \ + cubemap \ + cuberender \ + dinoshade \ +- dissolve \ +- drawpix \ + engine \ + fbo_firecube \ + fbotexture \ +- fire \ + fogcoord \ + fplight \ + fslight \ ++ gloss \ ++ isosurf \ ++ multiarb \ ++ paltex \ ++ pointblast \ ++ projtex \ ++ shadowtex \ ++ spriteblast \ ++ stex3d \ ++ textures \ ++ vao_demo \ ++ winpos ++ ++copypix_LDADD = ../util/libutil.la ++cubemap_LDADD = ../util/libutil.la ++cuberender_LDADD = ../util/libutil.la ++engine_LDADD = ../util/libutil.la ++fbo_firecube_LDADD = ../util/libutil.la ++gloss_LDADD = ../util/libutil.la ++isosurf_LDADD = ../util/libutil.la ++multiarb_LDADD = ../util/libutil.la ++projtex_LDADD = ../util/libutil.la ++textures_LDADD = ../util/libutil.la ++winpos_LDADD = ../util/libutil.la ++endif ++ ++if HAVE_GLU ++bin_PROGRAMS += \ ++ bounce \ ++ clearspd \ ++ dissolve \ ++ drawpix \ ++ fire \ + gamma \ + gearbox \ + gears \ + geartrain \ + glinfo \ +- gloss \ + gltestperf \ + ipers \ +- isosurf \ + lodbias \ + morph3d \ +- multiarb \ +- paltex \ + pixeltest \ +- pointblast \ +- projtex \ + ray \ + readpix \ + reflect \ + renormal \ +- shadowtex \ + singlebuffer \ + spectex \ +- spriteblast \ +- stex3d \ + teapot \ + terrain \ + tessdemo \ + texcyl \ + texenv \ +- textures \ + trispd \ + tunnel2 \ +- tunnel \ +- vao_demo \ +- winpos +-endif ++ tunnel + + tunnel_SOURCES = \ + tunnel.c \ + tunneldat.h + +-copypix_LDADD = ../util/libutil.la +-cubemap_LDADD = ../util/libutil.la +-cuberender_LDADD = ../util/libutil.la +-drawpix_LDADD = ../util/libutil.la + dissolve_LDADD = ../util/libutil.la +-engine_LDADD = ../util/libutil.la +-fbo_firecube_LDADD = ../util/libutil.la ++drawpix_LDADD = ../util/libutil.la + fire_LDADD = ../util/libutil.la +-gloss_LDADD = ../util/libutil.la + ipers_LDADD = ../util/libutil.la +-isosurf_LDADD = ../util/libutil.la + lodbias_LDADD = ../util/libutil.la +-multiarb_LDADD = ../util/libutil.la +-projtex_LDADD = ../util/libutil.la + readpix_LDADD = ../util/libutil.la + reflect_LDADD = ../util/libutil.la + teapot_LDADD = ../util/libutil.la + texcyl_LDADD = ../util/libutil.la +-textures_LDADD = ../util/libutil.la + tunnel_LDADD = ../util/libutil.la + tunnel2_LDADD = ../util/libutil.la +-winpos_LDADD = ../util/libutil.la ++endif ++endif + + EXTRA_DIST = \ + README +diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am +index d64a49e..4fe1ca8 100644 +--- a/src/egl/Makefile.am ++++ b/src/egl/Makefile.am +@@ -24,8 +24,12 @@ + + SUBDIRS = \ + eglut \ +- opengl \ +- openvg \ + opengles1 \ + opengles2 \ + oes_vg ++ ++if HAVE_GLU ++SUBDIRS += \ ++ opengl \ ++ openvg ++endif +diff --git a/src/egl/opengles1/Makefile.am b/src/egl/opengles1/Makefile.am +index 7a9828d..3455e75 100644 +--- a/src/egl/opengles1/Makefile.am ++++ b/src/egl/opengles1/Makefile.am +@@ -36,28 +36,43 @@ AM_LDFLAGS = \ + $(EGL_LIBS) \ + -lm + ++noinst_PROGRAMS = ++ + if HAVE_EGL + if HAVE_GLESV1 +-noinst_PROGRAMS = \ +- bindtex \ +- clear \ ++noinst_PROGRAMS += \ + drawtex_screen \ ++ gears_screen \ ++ torus_screen \ ++ tri_screen ++ ++drawtex_screen_SOURCES = drawtex.c ++gears_screen_SOURCES = gears.c ++torus_screen_SOURCES = torus.c ++tri_screen_SOURCES = tri.c ++ ++drawtex_screen_LDADD = ../eglut/libeglut_screen.la ++gears_screen_LDADD = ../eglut/libeglut_screen.la ++torus_screen_LDADD = ../eglut/libeglut_screen.la ++tri_screen_LDADD = ../eglut/libeglut_screen.la ++ ++if HAVE_X11 ++noinst_PROGRAMS += \ ++ clear ++ ++bin_PROGRAMS = \ ++ bindtex \ + drawtex_x11 \ + eglfbdev \ + es1_info \ +- gears_screen \ + gears_x11 \ + msaa \ + pbuffer\ + render_tex \ + texture_from_pixmap \ +- torus_screen \ + torus_x11 \ +- tri_screen \ + tri_x11 \ + two_win +-endif +-endif + + bindtex_LDADD = $(X11_LIBS) + es1_info_LDADD = $(X11_LIBS) +@@ -71,22 +86,15 @@ two_win_LDADD = $(X11_LIBS) + clear_LDADD = ../eglut/libeglut_x11.la $(EGL_LIBS) $(X11_LIBS) + clear_LDFLAGS = + +-drawtex_screen_SOURCES = drawtex.c +-gears_screen_SOURCES = gears.c +-torus_screen_SOURCES = torus.c +-tri_screen_SOURCES = tri.c +- + drawtex_x11_SOURCES = drawtex.c + gears_x11_SOURCES = gears.c + torus_x11_SOURCES = torus.c + tri_x11_SOURCES = tri.c + +-drawtex_screen_LDADD = ../eglut/libeglut_screen.la +-gears_screen_LDADD = ../eglut/libeglut_screen.la +-torus_screen_LDADD = ../eglut/libeglut_screen.la +-tri_screen_LDADD = ../eglut/libeglut_screen.la +- + drawtex_x11_LDADD = ../eglut/libeglut_x11.la + gears_x11_LDADD = ../eglut/libeglut_x11.la + torus_x11_LDADD = ../eglut/libeglut_x11.la + tri_x11_LDADD = ../eglut/libeglut_x11.la ++endif ++endif ++endif +diff --git a/src/egl/opengles2/Makefile.am b/src/egl/opengles2/Makefile.am +index 41c1b80..74af460 100644 +--- a/src/egl/opengles2/Makefile.am ++++ b/src/egl/opengles2/Makefile.am +@@ -36,26 +36,29 @@ AM_LDFLAGS = \ + if HAVE_EGL + if HAVE_GLESV2 + bin_PROGRAMS = \ +- es2_info \ +- es2gears_screen \ +- es2gears_x11 \ +- es2tri ++ es2gears_screen ++ ++es2gears_screen_SOURCES = es2gears.c ++es2gears_screen_LDADD = ../eglut/libeglut_screen.la ++ + if HAVE_WAYLAND + bin_PROGRAMS += es2gears_wayland +-endif +-endif +-endif + +-es2_info_LDADD = $(X11_LIBS) +-es2tri_LDADD = $(X11_LIBS) ++es2gears_wayland_SOURCES = es2gears.c ++es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la ++endif + +-es2gears_screen_SOURCES = es2gears.c ++if HAVE_X11 ++bin_PROGRAMS += \ ++ es2tri \ ++ es2_info \ ++ es2gears_x11 + ++es2_info_LDADD = $(X11_LIBS) + es2gears_x11_SOURCES = es2gears.c +- +-es2gears_screen_LDADD = ../eglut/libeglut_screen.la +- + es2gears_x11_LDADD = ../eglut/libeglut_x11.la ++es2tri_LDADD = $(X11_LIBS) ++endif ++endif ++endif + +-es2gears_wayland_SOURCES = es2gears.c +-es2gears_wayland_LDADD = ../eglut/libeglut_wayland.la +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch b/meta/recipes-graphics/mesa/mesa-demos/0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch new file mode 100644 index 0000000000..f77b97f3e5 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch @@ -0,0 +1,234 @@ +From 5e10108d76a59abac21c7e540bcfd2ddaccca2cb Mon Sep 17 00:00:00 2001 +From: Drew Moseley +Date: Fri, 9 May 2014 11:50:24 -0400 +Subject: [PATCH 4/9] Use DEMOS_DATA_DIR to locate data files + +Upstream-Status: Submitted [https://bugs.freedesktop.org/show_bug.cgi?id=78496] +Signed-off-by: Drew Moseley +--- + src/glsl/bezier.c | 2 +- + src/glsl/blinking-teapot.c | 4 ++-- + src/glsl/brick.c | 4 ++-- + src/glsl/bump.c | 6 +++--- + src/glsl/convolutions.c | 2 +- + src/glsl/mandelbrot.c | 4 ++-- + src/glsl/multitex.c | 4 ++-- + src/glsl/simplex-noise.c | 2 +- + src/glsl/skinning.c | 4 ++-- + src/glsl/texdemo1.c | 8 ++++---- + src/glsl/toyball.c | 4 ++-- + src/objviewer/objview.c | 12 ++++++------ + src/perf/glslstateschange.c | 8 ++++---- + 13 files changed, 32 insertions(+), 32 deletions(-) + +diff --git a/src/glsl/bezier.c b/src/glsl/bezier.c +index 0b56bc1..e01603d 100644 +--- a/src/glsl/bezier.c ++++ b/src/glsl/bezier.c +@@ -13,7 +13,7 @@ + #include "glut_wrap.h" + #include "shaderutil.h" + +-static const char *filename = "bezier.geom"; ++static const char *filename = DEMOS_DATA_DIR "bezier.geom"; + + static GLuint fragShader; + static GLuint vertShader; +diff --git a/src/glsl/blinking-teapot.c b/src/glsl/blinking-teapot.c +index e3bf24d..7662b1f 100644 +--- a/src/glsl/blinking-teapot.c ++++ b/src/glsl/blinking-teapot.c +@@ -63,8 +63,8 @@ init_opengl (void) + exit(1); + } + +- vshad_id = CompileShaderFile (GL_VERTEX_SHADER, "blinking-teapot.vert"); +- fshad_id = CompileShaderFile (GL_FRAGMENT_SHADER, "blinking-teapot.frag"); ++ vshad_id = CompileShaderFile (GL_VERTEX_SHADER, DEMOS_DATA_DIR "blinking-teapot.vert"); ++ fshad_id = CompileShaderFile (GL_FRAGMENT_SHADER, DEMOS_DATA_DIR "blinking-teapot.frag"); + prog_id = LinkShaders (vshad_id, fshad_id); + + UseProgram (prog_id); +diff --git a/src/glsl/brick.c b/src/glsl/brick.c +index 3021856..fe5f190 100644 +--- a/src/glsl/brick.c ++++ b/src/glsl/brick.c +@@ -14,8 +14,8 @@ + #include "shaderutil.h" + + +-static char *FragProgFile = "CH06-brick.frag"; +-static char *VertProgFile = "CH06-brick.vert"; ++static char *FragProgFile = DEMOS_DATA_DIR "CH06-brick.frag"; ++static char *VertProgFile = DEMOS_DATA_DIR "CH06-brick.vert"; + + /* program/shader objects */ + static GLuint fragShader; +diff --git a/src/glsl/bump.c b/src/glsl/bump.c +index 59f62cd..3a1b20a 100644 +--- a/src/glsl/bump.c ++++ b/src/glsl/bump.c +@@ -15,9 +15,9 @@ + #include "readtex.h" + + +-static char *FragProgFile = "CH11-bumpmap.frag"; +-static char *FragTexProgFile = "CH11-bumpmaptex.frag"; +-static char *VertProgFile = "CH11-bumpmap.vert"; ++static char *FragProgFile = DEMOS_DATA_DIR "CH11-bumpmap.frag"; ++static char *FragTexProgFile = DEMOS_DATA_DIR "CH11-bumpmaptex.frag"; ++static char *VertProgFile = DEMOS_DATA_DIR "CH11-bumpmap.vert"; + static char *TextureFile = DEMOS_DATA_DIR "tile.rgb"; + + /* program/shader objects */ +diff --git a/src/glsl/convolutions.c b/src/glsl/convolutions.c +index a120cfe..9312f00 100644 +--- a/src/glsl/convolutions.c ++++ b/src/glsl/convolutions.c +@@ -340,7 +340,7 @@ static void init(void) + + menuInit(); + readTexture(textureLocation); +- createProgram("convolution.vert", "convolution.frag"); ++ createProgram(DEMOS_DATA_DIR "convolution.vert", DEMOS_DATA_DIR "convolution.frag"); + + glEnable(GL_TEXTURE_2D); + glClearColor(1.0, 1.0, 1.0, 1.0); +diff --git a/src/glsl/mandelbrot.c b/src/glsl/mandelbrot.c +index 31ede1d..ab34a0f 100644 +--- a/src/glsl/mandelbrot.c ++++ b/src/glsl/mandelbrot.c +@@ -14,8 +14,8 @@ + #include "shaderutil.h" + + +-static char *FragProgFile = "CH18-mandel.frag"; +-static char *VertProgFile = "CH18-mandel.vert"; ++static char *FragProgFile = DEMOS_DATA_DIR "CH18-mandel.frag"; ++static char *VertProgFile = DEMOS_DATA_DIR "CH18-mandel.vert"; + + /* program/shader objects */ + static GLuint fragShader; +diff --git a/src/glsl/multitex.c b/src/glsl/multitex.c +index 262ea50..546bd27 100644 +--- a/src/glsl/multitex.c ++++ b/src/glsl/multitex.c +@@ -35,8 +35,8 @@ + + static const char *Demo = "multitex"; + +-static const char *VertFile = "multitex.vert"; +-static const char *FragFile = "multitex.frag"; ++static const char *VertFile = DEMOS_DATA_DIR "multitex.vert"; ++static const char *FragFile = DEMOS_DATA_DIR "multitex.frag"; + + static const char *TexFiles[2] = + { +diff --git a/src/glsl/simplex-noise.c b/src/glsl/simplex-noise.c +index 13fdd5d..885f01e 100644 +--- a/src/glsl/simplex-noise.c ++++ b/src/glsl/simplex-noise.c +@@ -169,7 +169,7 @@ SpecialKey(int key, int x, int y) + static void + Init(void) + { +- const char *filename = "simplex-noise.glsl"; ++ const char *filename = DEMOS_DATA_DIR "simplex-noise.glsl"; + char noiseText[10000]; + FILE *f; + int len; +diff --git a/src/glsl/skinning.c b/src/glsl/skinning.c +index bf38d77..536d475 100644 +--- a/src/glsl/skinning.c ++++ b/src/glsl/skinning.c +@@ -20,8 +20,8 @@ + #define M_PI 3.1415926535 + #endif + +-static char *FragProgFile = "skinning.frag"; +-static char *VertProgFile = "skinning.vert"; ++static char *FragProgFile = DEMOS_DATA_DIR "skinning.frag"; ++static char *VertProgFile = DEMOS_DATA_DIR "skinning.vert"; + + /* program/shader objects */ + static GLuint fragShader; +diff --git a/src/glsl/texdemo1.c b/src/glsl/texdemo1.c +index 6cde239..a082342 100644 +--- a/src/glsl/texdemo1.c ++++ b/src/glsl/texdemo1.c +@@ -35,11 +35,11 @@ + + static const char *Demo = "texdemo1"; + +-static const char *ReflectVertFile = "reflect.vert"; +-static const char *CubeFragFile = "cubemap.frag"; ++static const char *ReflectVertFile = DEMOS_DATA_DIR "reflect.vert"; ++static const char *CubeFragFile = DEMOS_DATA_DIR "cubemap.frag"; + +-static const char *SimpleVertFile = "simple.vert"; +-static const char *SimpleTexFragFile = "shadowtex.frag"; ++static const char *SimpleVertFile = DEMOS_DATA_DIR "simple.vert"; ++static const char *SimpleTexFragFile = DEMOS_DATA_DIR "shadowtex.frag"; + + static const char *GroundImage = DEMOS_DATA_DIR "tile.rgb"; + +diff --git a/src/glsl/toyball.c b/src/glsl/toyball.c +index 5f27951..4e7e832 100644 +--- a/src/glsl/toyball.c ++++ b/src/glsl/toyball.c +@@ -14,8 +14,8 @@ + #include "shaderutil.h" + + +-static char *FragProgFile = "CH11-toyball.frag"; +-static char *VertProgFile = "CH11-toyball.vert"; ++static char *FragProgFile = DEMOS_DATA_DIR "CH11-toyball.frag"; ++static char *VertProgFile = DEMOS_DATA_DIR "CH11-toyball.vert"; + + /* program/shader objects */ + static GLuint fragShader; +diff --git a/src/objviewer/objview.c b/src/objviewer/objview.c +index 6def726..78a6acf 100644 +--- a/src/objviewer/objview.c ++++ b/src/objviewer/objview.c +@@ -162,12 +162,12 @@ init_model(void) + static void + init_skybox(void) + { +- SkyboxTex = LoadSkyBoxCubeTexture("alpine_east.rgb", +- "alpine_west.rgb", +- "alpine_up.rgb", +- "alpine_down.rgb", +- "alpine_south.rgb", +- "alpine_north.rgb"); ++ SkyboxTex = LoadSkyBoxCubeTexture(DEMOS_DATA_DIR "alpine_east.rgb", ++ DEMOS_DATA_DIR "alpine_west.rgb", ++ DEMOS_DATA_DIR "alpine_up.rgb", ++ DEMOS_DATA_DIR "alpine_down.rgb", ++ DEMOS_DATA_DIR "alpine_south.rgb", ++ DEMOS_DATA_DIR "alpine_north.rgb"); + glmSpecularTexture(Model, SkyboxTex); + } + +diff --git a/src/perf/glslstateschange.c b/src/perf/glslstateschange.c +index 7422b78..dbf8332 100644 +--- a/src/perf/glslstateschange.c ++++ b/src/perf/glslstateschange.c +@@ -33,10 +33,10 @@ + #include "glmain.h" + #include "common.h" + +-static const char *VertFile1 = "glslstateschange1.vert"; +-static const char *FragFile1 = "glslstateschange1.frag"; +-static const char *VertFile2 = "glslstateschange2.vert"; +-static const char *FragFile2 = "glslstateschange2.frag"; ++static const char *VertFile1 = DEMOS_DATA_DIR "glslstateschange1.vert"; ++static const char *FragFile1 = DEMOS_DATA_DIR "glslstateschange1.frag"; ++static const char *VertFile2 = DEMOS_DATA_DIR "glslstateschange2.vert"; ++static const char *FragFile2 = DEMOS_DATA_DIR "glslstateschange2.frag"; + static struct uniform_info Uniforms1[] = { + { "tex1", 1, GL_SAMPLER_2D, { 0, 0, 0, 0 }, -1 }, + { "tex2", 1, GL_SAMPLER_2D, { 1, 0, 0, 0 }, -1 }, +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch b/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch new file mode 100644 index 0000000000..aac2a37294 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch @@ -0,0 +1,267 @@ +From 453353a221de9c64479f4372565d2cd8591b36cc Mon Sep 17 00:00:00 2001 +From: Frank Binns +Date: Fri, 29 Jun 2012 11:26:04 +0100 +Subject: [PATCH 5/9] Fix build when EGL_MESA_screen_surface extension isn't + present + +The EGL demos won't build against EGL implementations that don't support +the EGL_MESA_screen_surface extension. Fix this, in most cases, by +wrapping relevant bits of code in #ifdef EGL_MESA_screen_surface. + +Signed-off-by: Frank Binns + +Applied and fixed up in Yocto by... + +Integrated-by: Tom Zanussi + +Upstream-Status: Pending +--- + src/egl/eglut/eglut.c | 9 +++++++-- + src/egl/eglut/eglut_screen.c | 14 ++++++++++++++ + src/egl/opengl/demo1.c | 2 ++ + src/egl/opengl/demo2.c | 7 ++++++- + src/egl/opengl/demo3.c | 7 ++++++- + 5 files changed, 35 insertions(+), 4 deletions(-) + +diff --git a/src/egl/eglut/eglut.c b/src/egl/eglut/eglut.c +index 2ee6f15..f6a2ad4 100644 +--- a/src/egl/eglut/eglut.c ++++ b/src/egl/eglut/eglut.c +@@ -76,8 +76,9 @@ _eglutNow(void) + static void + _eglutDestroyWindow(struct eglut_window *win) + { +- if (_eglut->surface_type != EGL_PBUFFER_BIT && +- _eglut->surface_type != EGL_SCREEN_BIT_MESA) ++ ++ if (_eglut->surface_type == EGL_WINDOW_BIT || ++ _eglut->surface_type == EGL_PIXMAP_BIT) + eglDestroySurface(_eglut->dpy, win->surface); + + _eglutNativeFiniWindow(win); +@@ -175,7 +176,9 @@ _eglutCreateWindow(const char *title, int x, int y, int w, int h) + win->config, win->native.u.pixmap, NULL); + break; + case EGL_PBUFFER_BIT: ++#ifdef EGL_MESA_screen_surface + case EGL_SCREEN_BIT_MESA: ++#endif + win->surface = win->native.u.surface; + break; + default: +@@ -289,8 +292,10 @@ eglutDestroyWindow(int win) + if (window->index != win) + return; + ++#ifdef EGL_MESA_screen_surface + /* XXX it causes some bug in st/egl KMS backend */ + if ( _eglut->surface_type != EGL_SCREEN_BIT_MESA) ++#endif + eglMakeCurrent(_eglut->dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + + _eglutDestroyWindow(_eglut->current); +diff --git a/src/egl/eglut/eglut_screen.c b/src/egl/eglut/eglut_screen.c +index 021a8f1..094a4e2 100644 +--- a/src/egl/eglut/eglut_screen.c ++++ b/src/egl/eglut/eglut_screen.c +@@ -35,26 +35,33 @@ + + #define MAX_MODES 100 + ++#ifdef EGL_MESA_screen_surface + static EGLScreenMESA kms_screen; + static EGLModeMESA kms_mode; + static EGLint kms_width, kms_height; ++#endif + + void + _eglutNativeInitDisplay(void) + { ++#ifdef EGL_MESA_screen_surface + _eglut->native_dpy = EGL_DEFAULT_DISPLAY; + _eglut->surface_type = EGL_SCREEN_BIT_MESA; ++#endif + } + + void + _eglutNativeFiniDisplay(void) + { ++#ifdef EGL_MESA_screen_surface + kms_screen = 0; + kms_mode = 0; + kms_width = 0; + kms_height = 0; ++#endif + } + ++#ifdef EGL_MESA_screen_surface + static void + init_kms(void) + { +@@ -94,19 +101,23 @@ init_kms(void) + kms_width = width; + kms_height = height; + } ++#endif + + void + _eglutNativeInitWindow(struct eglut_window *win, const char *title, + int x, int y, int w, int h) + { ++#ifdef EGL_MESA_screen_surface + EGLint surf_attribs[16]; + EGLint i; ++#endif + const char *exts; + + exts = eglQueryString(_eglut->dpy, EGL_EXTENSIONS); + if (!exts || !strstr(exts, "EGL_MESA_screen_surface")) + _eglutFatal("EGL_MESA_screen_surface is not supported\n"); + ++#ifdef EGL_MESA_screen_surface + init_kms(); + + i = 0; +@@ -128,14 +139,17 @@ _eglutNativeInitWindow(struct eglut_window *win, const char *title, + + win->native.width = kms_width; + win->native.height = kms_height; ++#endif + } + + void + _eglutNativeFiniWindow(struct eglut_window *win) + { ++#ifdef EGL_MESA_screen_surface + eglShowScreenSurfaceMESA(_eglut->dpy, + kms_screen, EGL_NO_SURFACE, 0); + eglDestroySurface(_eglut->dpy, win->native.u.surface); ++#endif + } + + void +diff --git a/src/egl/opengl/demo1.c b/src/egl/opengl/demo1.c +index d892734..3a3564c 100644 +--- a/src/egl/opengl/demo1.c ++++ b/src/egl/opengl/demo1.c +@@ -18,6 +18,7 @@ + static void + TestScreens(EGLDisplay dpy) + { ++#ifdef EGL_MESA_screen_surface + #define MAX 8 + EGLScreenMESA screens[MAX]; + EGLint numScreens; +@@ -28,6 +29,7 @@ TestScreens(EGLDisplay dpy) + for (i = 0; i < numScreens; i++) { + printf(" Screen %d handle: %d\n", i, (int) screens[i]); + } ++#endif + } + + /** +diff --git a/src/egl/opengl/demo2.c b/src/egl/opengl/demo2.c +index 505b474..bfef59e 100644 +--- a/src/egl/opengl/demo2.c ++++ b/src/egl/opengl/demo2.c +@@ -16,6 +16,7 @@ + + /*#define FRONTBUFFER*/ + ++#ifdef EGL_MESA_screen_surface + static void _subset_Rectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2, + GLfloat r, GLfloat g, GLfloat b) + { +@@ -95,12 +96,13 @@ TestScreens(EGLDisplay dpy) + printf(" Screen %d handle: %d\n", i, (int) screens[i]); + } + } +- ++#endif + + int + main(int argc, char *argv[]) + { + int maj, min; ++#ifdef EGL_MESA_screen_surface + EGLContext ctx; + EGLSurface pbuffer, screen_surf; + EGLConfig configs[10]; +@@ -115,6 +117,7 @@ main(int argc, char *argv[]) + EGLModeMESA mode; + EGLScreenMESA screen; + EGLint count; ++#endif + + EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); + assert(d); +@@ -132,6 +135,7 @@ main(int argc, char *argv[]) + exit(1); + } + ++#ifdef EGL_MESA_screen_surface + eglGetConfigs(d, configs, 10, &numConfigs); + printf("Got %d EGL configs:\n", numConfigs); + for (i = 0; i < numConfigs; i++) { +@@ -211,6 +215,7 @@ main(int argc, char *argv[]) + eglDestroySurface(d, pbuffer); + eglDestroyContext(d, ctx); + eglTerminate(d); ++#endif + + return 0; + } +diff --git a/src/egl/opengl/demo3.c b/src/egl/opengl/demo3.c +index f84ca23..31b5d8b 100644 +--- a/src/egl/opengl/demo3.c ++++ b/src/egl/opengl/demo3.c +@@ -46,7 +46,7 @@ GLubyte OpenGL_bits[] = { + 0x3e, 0x00, 0x00, 0xf8, 0x0c, 0x00, + }; + +- ++#ifdef EGL_MESA_screen_surface + static void Init(void) + { + +@@ -551,11 +551,13 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height) + fclose(f); + } + } ++#endif + + int + main(int argc, char *argv[]) + { + int maj, min; ++#ifdef EGL_MESA_screen_surface + EGLContext ctx; + EGLSurface screen_surf; + EGLConfig configs[10]; +@@ -566,6 +568,7 @@ main(int argc, char *argv[]) + const GLubyte *bitmap; + EGLint screenAttribs[32]; + EGLint i; ++#endif + + EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY); + assert(d); +@@ -583,6 +586,7 @@ main(int argc, char *argv[]) + exit(1); + } + ++#ifdef EGL_MESA_screen_surface + eglGetConfigs(d, configs, 10, &numConfigs); + eglGetScreensMESA(d, &screen, 1, &count); + eglGetModesMESA(d, screen, &mode, 1, &count); +@@ -642,6 +646,7 @@ main(int argc, char *argv[]) + eglDestroySurface(d, screen_surf); + eglDestroyContext(d, ctx); + eglTerminate(d); ++#endif + + return 0; + } +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch b/meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch new file mode 100644 index 0000000000..12e0805f15 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch @@ -0,0 +1,41 @@ +From 6a19dba1d275579c73e7763b0554410ff4e1e650 Mon Sep 17 00:00:00 2001 +From: Frank Binns +Date: Fri, 29 Jun 2012 12:00:26 +0100 +Subject: [PATCH 6/9] Query display for EGL_MESA_screen_surface extension + before using it + +This code makes heavy use of the EGL_MESA_screen_surface extension so +check the display to determine if it's supported by the underlying EGL +implementation. If it doesn't then bail. + +Signed-off-by: Frank Binns + +Applied and fixed up in Yocto by... + +Integrated-by: Tom Zanussi + +Upstream-Status: Pending +--- + src/egl/opengl/demo1.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/egl/opengl/demo1.c b/src/egl/opengl/demo1.c +index 3a3564c..06e2138 100644 +--- a/src/egl/opengl/demo1.c ++++ b/src/egl/opengl/demo1.c +@@ -110,6 +110,12 @@ main(int argc, char *argv[]) + printf("EGL version = %d.%d\n", maj, min); + printf("EGL_VENDOR = %s\n", eglQueryString(d, EGL_VENDOR)); + ++ if (!strstr(eglQueryString(d, EGL_EXTENSIONS), ++ "EGL_MESA_screen_surface")) { ++ printf("EGL_MESA_screen_surface is not supported\n"); ++ exit(1); ++ } ++ + eglGetConfigs(d, NULL, 0, &numConfigs); + configs = malloc(sizeof(*configs) *numConfigs); + eglGetConfigs(d, configs, numConfigs, &numConfigs); +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch b/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch new file mode 100644 index 0000000000..89d2fac4fd --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0007-Install-few-more-test-programs.patch @@ -0,0 +1,74 @@ +From d930b2da57f7c9efb80c8cef8f8adad15bbbc0d3 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Thu, 10 Jul 2014 14:30:52 +0200 +Subject: [PATCH 7/9] Install few more test programs + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa +--- + src/egl/opengl/Makefile.am | 2 +- + src/egl/opengles1/Makefile.am | 10 ++++------ + src/egl/openvg/Makefile.am | 2 +- + 3 files changed, 6 insertions(+), 8 deletions(-) + +diff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am +index 0c7228f..87b2f1a 100644 +--- a/src/egl/opengl/Makefile.am ++++ b/src/egl/opengl/Makefile.am +@@ -50,7 +50,7 @@ endif + endif + + if HAVE_EGL +-noinst_PROGRAMS = \ ++bin_PROGRAMS = \ + demo1 \ + demo2 \ + demo3 \ +diff --git a/src/egl/opengles1/Makefile.am b/src/egl/opengles1/Makefile.am +index 3455e75..516e516 100644 +--- a/src/egl/opengles1/Makefile.am ++++ b/src/egl/opengles1/Makefile.am +@@ -36,11 +36,11 @@ AM_LDFLAGS = \ + $(EGL_LIBS) \ + -lm + +-noinst_PROGRAMS = ++bin_PROGRAMS = + + if HAVE_EGL + if HAVE_GLESV1 +-noinst_PROGRAMS += \ ++bin_PROGRAMS += \ + drawtex_screen \ + gears_screen \ + torus_screen \ +@@ -57,10 +57,8 @@ torus_screen_LDADD = ../eglut/libeglut_screen.la + tri_screen_LDADD = ../eglut/libeglut_screen.la + + if HAVE_X11 +-noinst_PROGRAMS += \ +- clear +- +-bin_PROGRAMS = \ ++bin_PROGRAMS += \ ++ clear \ + bindtex \ + drawtex_x11 \ + eglfbdev \ +diff --git a/src/egl/openvg/Makefile.am b/src/egl/openvg/Makefile.am +index 7318a43..b545225 100644 +--- a/src/egl/openvg/Makefile.am ++++ b/src/egl/openvg/Makefile.am +@@ -49,7 +49,7 @@ endif + + if HAVE_EGL + if HAVE_VG +-noinst_PROGRAMS = \ ++bin_PROGRAMS = \ + lion_screen \ + sp_screen \ + $(EGL_X11_DEMOS) +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch b/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch new file mode 100644 index 0000000000..a6085754d2 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch @@ -0,0 +1,101 @@ +From 0b6f95f9b8ece22e9856c150e4be29fd86eaf546 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Thu, 10 Jul 2014 14:29:27 +0200 +Subject: [PATCH 8/9] glsl, perf: Add few missing .glsl, .vert, .frag files to + EXTRA_DATA + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa +--- + src/fpglsl/Makefile.am | 2 ++ + src/glsl/Makefile.am | 10 ++++++++-- + src/perf/Makefile.am | 6 ++++++ + src/vpglsl/Makefile.am | 1 + + 4 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/src/fpglsl/Makefile.am b/src/fpglsl/Makefile.am +index 47c1039..fd43c91 100644 +--- a/src/fpglsl/Makefile.am ++++ b/src/fpglsl/Makefile.am +@@ -39,10 +39,12 @@ noinst_PROGRAMS = \ + endif + + EXTRA_DIST = \ ++ depth-read.glsl \ + dowhile2.glsl \ + dowhile.glsl \ + forbreak.glsl \ + for.glsl \ ++ infinite-loop.glsl \ + mov.glsl \ + mov-imm.glsl \ + simpleif.glsl \ +diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am +index 4faa8db..079a29d 100644 +--- a/src/glsl/Makefile.am ++++ b/src/glsl/Makefile.am +@@ -37,7 +37,7 @@ AM_LDFLAGS = \ + if HAVE_GLUT + bin_PROGRAMS = \ + array \ +- bezier \ ++ bezier \ + bitmap \ + brick \ + bump \ +@@ -123,12 +123,16 @@ EXTRA_DIST = \ + CH06-brick.vert \ + CH11-bumpmap.frag \ + CH11-bumpmap.vert \ ++ CH11-bumpmaptex.frag \ + CH11-toyball.frag \ + CH11-toyball.vert \ + CH18-mandel.frag \ + CH18-mandel.vert \ +- bezier.geom \ ++ bezier.geom \ + brick.shtest \ ++ blinking-teapot.frag \ ++ blinking-teapot.vert \ ++ convolution.frag \ + convolution.vert \ + cubemap.frag \ + mandelbrot.shtest \ +@@ -138,5 +142,7 @@ EXTRA_DIST = \ + reflect.vert \ + shadowtex.frag \ + simple.vert \ ++ simplex-noise.glsl \ + skinning.frag \ ++ skinning.vert \ + toyball.shtest +diff --git a/src/perf/Makefile.am b/src/perf/Makefile.am +index 5363c58..c5cca8d 100644 +--- a/src/perf/Makefile.am ++++ b/src/perf/Makefile.am +@@ -57,3 +57,9 @@ bin_PROGRAMS = \ + endif + + glslstateschange_LDADD = libperf.la ../util/libutil.la ++ ++EXTRA_DIST = \ ++ glslstateschange1.frag \ ++ glslstateschange1.vert \ ++ glslstateschange2.frag \ ++ glslstateschange2.vert +diff --git a/src/vpglsl/Makefile.am b/src/vpglsl/Makefile.am +index 4a85ed4..48b08f4 100644 +--- a/src/vpglsl/Makefile.am ++++ b/src/vpglsl/Makefile.am +@@ -44,6 +44,7 @@ EXTRA_DIST = \ + func2.glsl \ + ifelse.glsl \ + if.glsl \ ++ infinite-loop.glsl \ + mov.glsl \ + nestedifs.glsl \ + nestedswizzle.glsl \ +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch b/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch new file mode 100644 index 0000000000..1262dee237 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos/0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch @@ -0,0 +1,73 @@ +From c8c3de5417d6b6c7d7579c528c0cab718f4bfdb6 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Thu, 10 Jul 2014 14:48:12 +0200 +Subject: [PATCH 9/9] glsl, perf: Install .glsl, .vert, .frag files + +Upstream-Status: Pending +Signed-off-by: Martin Jansa +--- + src/fpglsl/Makefile.am | 3 ++- + src/glsl/Makefile.am | 3 ++- + src/perf/Makefile.am | 3 ++- + src/vpglsl/Makefile.am | 3 ++- + 4 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/src/fpglsl/Makefile.am b/src/fpglsl/Makefile.am +index fd43c91..2bf51de 100644 +--- a/src/fpglsl/Makefile.am ++++ b/src/fpglsl/Makefile.am +@@ -38,7 +38,8 @@ noinst_PROGRAMS = \ + fp-tri + endif + +-EXTRA_DIST = \ ++demosdatadir=$(datadir)/$(PACKAGE)/ ++dist_demosdata_DATA= \ + depth-read.glsl \ + dowhile2.glsl \ + dowhile.glsl \ +diff --git a/src/glsl/Makefile.am b/src/glsl/Makefile.am +index 079a29d..f66ec29 100644 +--- a/src/glsl/Makefile.am ++++ b/src/glsl/Makefile.am +@@ -118,7 +118,8 @@ vert_or_frag_only_LDADD = ../util/libutil.la + vert_tex_LDADD = ../util/libutil.la + vsraytrace_LDADD = ../util/libutil.la + +-EXTRA_DIST = \ ++demosdatadir=$(datadir)/$(PACKAGE)/ ++dist_demosdata_DATA= \ + CH06-brick.frag \ + CH06-brick.vert \ + CH11-bumpmap.frag \ +diff --git a/src/perf/Makefile.am b/src/perf/Makefile.am +index c5cca8d..140256d 100644 +--- a/src/perf/Makefile.am ++++ b/src/perf/Makefile.am +@@ -58,7 +58,8 @@ endif + + glslstateschange_LDADD = libperf.la ../util/libutil.la + +-EXTRA_DIST = \ ++demosdatadir=$(datadir)/$(PACKAGE)/ ++dist_demosdata_DATA= \ + glslstateschange1.frag \ + glslstateschange1.vert \ + glslstateschange2.frag \ +diff --git a/src/vpglsl/Makefile.am b/src/vpglsl/Makefile.am +index 48b08f4..5526867 100644 +--- a/src/vpglsl/Makefile.am ++++ b/src/vpglsl/Makefile.am +@@ -38,7 +38,8 @@ noinst_PROGRAMS = \ + vp-tris + endif + +-EXTRA_DIST = \ ++demosdatadir=$(datadir)/$(PACKAGE)/ ++dist_demosdata_DATA= \ + for.glsl \ + func.glsl \ + func2.glsl \ +-- +2.0.0 + diff --git a/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb b/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb new file mode 100644 index 0000000000..1caa50bc1b --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-demos_8.2.0.bb @@ -0,0 +1,53 @@ +SUMMARY = "Mesa demo applications" +DESCRIPTION = "This package includes the demonstration application, such as glxgears. \ +These applications can be used for Mesa validation and benchmarking." +HOMEPAGE = "http://mesa3d.org" +BUGTRACKER = "https://bugs.freedesktop.org" +SECTION = "x11" + +LICENSE = "MIT & PD" +LIC_FILES_CHKSUM = "file://src/xdemos/glxgears.c;beginline=1;endline=20;md5=914225785450eff644a86c871d3ae00e \ + file://src/xdemos/glxdemo.c;beginline=1;endline=8;md5=b01d5ab1aee94d35b7efaa2ef48e1a06" + +SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/demos/${PV}/${BPN}-${PV}.tar.bz2 \ + file://0001-mesa-demos-Add-missing-data-files.patch \ + file://0002-Correctly-implement-with-AC_WITH-glut-so-that-withou.patch \ + file://0003-configure-Allow-to-disable-demos-which-require-GLEW-.patch \ + file://0004-Use-DEMOS_DATA_DIR-to-locate-data-files.patch \ + file://0005-Fix-build-when-EGL_MESA_screen_surface-extension-isn.patch \ + file://0006-Query-display-for-EGL_MESA_screen_surface-extension-.patch \ + file://0007-Install-few-more-test-programs.patch \ + file://0008-glsl-perf-Add-few-missing-.glsl-.vert-.frag-files-to.patch \ + file://0009-glsl-perf-Install-.glsl-.vert-.frag-files.patch \ +" +SRC_URI[md5sum] = "72613a2c8c013716db02e3ff59d29061" +SRC_URI[sha256sum] = "e4bfecb5816ddd4b7b37c1bc876b63f1f7f06fda5879221a9774d0952f90ba92" + +inherit autotools pkgconfig + +PACKAGECONFIG ?= "drm osmesa freetype2 gbm egl gles1 gles2 glu \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 glew', '', d)}" + +# The Wayland code doesn't work with Wayland 1.0, so disable it for now +#${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}" + +EXTRA_OECONF = "--with-system-data-files" + +PACKAGECONFIG[drm] = "--enable-libdrm,--disable-libdrm,libdrm" +PACKAGECONFIG[egl] = "--enable-egl,--disable-egl,virtual/egl" +PACKAGECONFIG[freetype2] = "--enable-freetype2,--disable-freetype2,freetype" +PACKAGECONFIG[gbm] = "--enable-gbm,--disable-gbm,virtual/libgl" +PACKAGECONFIG[gles1] = "--enable-gles1,--disable-gles1,virtual/libgles1" +PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,virtual/libgles2" +PACKAGECONFIG[glut] = "--with-glut=${STAGING_EXECPREFIXDIR},--without-glut," +PACKAGECONFIG[osmesa] = "--enable-osmesa,--disable-osmesa," +PACKAGECONFIG[vg] = "--enable-vg,--disable-vg,virtual/libvg" +PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,virtual/libgl wayland" +PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11" +PACKAGECONFIG[glew] = "--enable-glew,--disable-glew,glew" +PACKAGECONFIG[glu] = "--enable-glu,--disable-glu,virtual/libgl" + +do_install_append() { + # it can be completely empty when all PACKAGECONFIG options are disabled + rmdir --ignore-fail-on-non-empty ${D}${bindir} +} diff --git a/meta/recipes-graphics/mesa/mesa-gl_10.1.3.bb b/meta/recipes-graphics/mesa/mesa-gl_10.1.3.bb new file mode 100644 index 0000000000..2acc21dce5 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa-gl_10.1.3.bb @@ -0,0 +1,11 @@ +require mesa_${PV}.bb + +SUMMARY += " (OpenGL only, no EGL/GLES)" + +FILESEXTRAPATHS =. "${FILE_DIRNAME}/mesa:" + +PROVIDES = "virtual/libgl virtual/mesa" + +PACKAGECONFIG ??= "dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" + +EXCLUDE_FROM_WORLD = "1" diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc new file mode 100644 index 0000000000..1857f3c220 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa.inc @@ -0,0 +1,189 @@ +SUMMARY = "A free implementation of the OpenGL API" +DESCRIPTION = "Mesa is an open-source implementation of the OpenGL specification - \ +a system for rendering interactive 3D graphics. \ +A variety of device drivers allows Mesa to be used in many different environments \ +ranging from software emulation to complete hardware acceleration for modern GPUs. \ +Mesa is used as part of the overall Direct Rendering Infrastructure and X.org \ +environment." + +HOMEPAGE = "http://mesa3d.org" +BUGTRACKER = "https://bugs.freedesktop.org" +SECTION = "x11" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://docs/license.html;md5=6a23445982a7a972ac198e93cc1cb3de" + +PE = "2" + +DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native udev" + +PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl virtual/mesa" + +inherit autotools pkgconfig pythonnative gettext distro_features_check + +REQUIRED_DISTRO_FEATURES = "opengl" + +EXTRA_OECONF = "--enable-shared-glapi" + +PACKAGECONFIG ??= "egl gles dri \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}\ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}\ + " + +X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes" +PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}" +PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc" +PACKAGECONFIG[wayland] = ",,wayland" + +DRIDRIVERS = "swrast" +DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915" +DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915" +PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm" +PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence" + +EXTRA_OECONF += "--enable-gbm" + +PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2" + +EGL_PLATFORMS = "drm" +EGL_PLATFORMS .="${@bb.utils.contains('PACKAGECONFIG', 'x11', ',x11', '', d)}" +EGL_PLATFORMS .="${@bb.utils.contains('PACKAGECONFIG', 'wayland', ',wayland', '', d)}" +PACKAGECONFIG[egl] = "--enable-egl --with-egl-platforms=${EGL_PLATFORMS}, --disable-egl" + +PACKAGECONFIG[openvg] = "--enable-openvg, --disable-openvg" + +GALLIUMDRIVERS = "swrast" +GALLIUMDRIVERS_LLVM33 = "${@bb.utils.contains('PACKAGECONFIG', 'r600', 'radeonsi,r600', '', d)}" +GALLIUMDRIVERS_LLVM33_ENABLED = "${@base_version_less_or_equal('MESA_LLVM_RELEASE', '3.2', False, len('${GALLIUMDRIVERS_LLVM33}') > 0, d)}" +GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}" +GALLIUMDRIVERS_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" +GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}" +# keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers +PACKAGECONFIG[gallium] = "--with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers" +PACKAGECONFIG[gallium-egl] = "--enable-gallium-egl, --disable-gallium-egl" +PACKAGECONFIG[gallium-gbm] = "--enable-gallium-gbm, --disable-gallium-gbm" +MESA_LLVM_RELEASE ?= "3.3" +PACKAGECONFIG[gallium-llvm] = "--enable-gallium-llvm --with-llvm-shared-libs, --disable-gallium-llvm, llvm${MESA_LLVM_RELEASE} \ + ${@'elfutils' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}" +export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}" + +# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2) +FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer" + +# Multiple virtual/gl providers being built breaks staging +EXCLUDE_FROM_WORLD = "1" + +# Remove the mesa dependency on mesa-dev, as mesa is empty +RDEPENDS_${PN}-dev = "" + +PACKAGES =+ "libegl-mesa libegl-mesa-dev \ + libosmesa libosmesa-dev \ + libgl-mesa libgl-mesa-dev \ + libglapi libglapi-dev \ + libgbm libgbm-dev \ + libgles1-mesa libgles1-mesa-dev \ + libgles2-mesa libgles2-mesa-dev \ + libgles3-mesa libgles3-mesa-dev \ + libwayland-egl libwayland-egl-dev \ + libegl-gallium libgbm-gallium \ + libopenvg libopenvg-dev \ + libxvmcsoftpipe libxvmcsoftpipe-dev \ + mesa-megadriver \ + " + +do_install_append () { + # Drivers never need libtool .la files + rm -f ${D}${libdir}/dri/*.la + rm -f ${D}${libdir}/egl/*.la + rm -f ${D}${libdir}/gallium-pipe/*.la + rm -f ${D}${libdir}/gbm/*.la + + # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used + rm -f ${D}${sysconfdir}/drirc +} + +# For the packages that make up the OpenGL interfaces, inject variables so that +# they don't get Debian-renamed (which would remove the -mesa suffix), and +# RPROVIDEs/RCONFLICTs on the generic libgl name. +python __anonymous() { + pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split() + for p in (("egl", "libegl", "libegl1"), + ("dri", "libgl", "libgl1"), + ("gles", "libgles1", "libglesv1-cm1"), + ("gles", "libgles2", "libglesv2-2"), + ("gles", "libgles3",)): + if not p[0] in pkgconfig: + continue + fullp = p[1] + "-mesa" + pkgs = " ".join(p[1:]) + d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") + d.appendVar("RREPLACES_" + fullp, pkgs) + d.appendVar("RPROVIDES_" + fullp, pkgs) + d.appendVar("RCONFLICTS_" + fullp, pkgs) + + # For -dev, the first element is both the Debian and original name + fullp += "-dev" + pkgs = p[1] + "-dev" + d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") + d.appendVar("RREPLACES_" + fullp, pkgs) + d.appendVar("RPROVIDES_" + fullp, pkgs) + d.appendVar("RCONFLICTS_" + fullp, pkgs) +} + +python mesa_populate_packages() { + pkgs = ['mesa', 'mesa-dev', 'mesa-dbg'] + for pkg in pkgs: + d.setVar("RPROVIDES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RCONFLICTS_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + d.setVar("RREPLACES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1)) + + import re + dri_drivers_root = os.path.join(d.getVar('libdir', True), "dri") + dri_pkgs = os.listdir(d.getVar('PKGD', True) + dri_drivers_root) + lib_name = d.expand("${MLPREFIX}mesa-megadriver") + for p in dri_pkgs: + m = re.match('^(.*)_dri\.so$', p) + if m: + pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1)) + d.appendVar("RPROVIDES_%s" % lib_name, pkg_name) + d.appendVar("RCONFLICTS_%s" % lib_name, pkg_name) + d.appendVar("RREPLACES_%s" % lib_name, pkg_name) + + pipe_drivers_root = os.path.join(d.getVar('libdir', True), "gallium-pipe") + do_split_packages(d, pipe_drivers_root, '^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='') +} + +PACKAGESPLITFUNCS_prepend = "mesa_populate_packages " + +PACKAGES_DYNAMIC += "^mesa-driver-.*" + +FILES_${PN}-dbg += "${libdir}/dri/.debug/*" +FILES_${PN} += "${sysconfdir}/drirc" +FILES_mesa-megadriver = "${libdir}/dri/*" +FILES_libegl-mesa = "${libdir}/libEGL.so.*" +FILES_libgbm = "${libdir}/libgbm.so.*" +FILES_libgles1-mesa = "${libdir}/libGLESv1*.so.*" +FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*" +FILES_libgl-mesa = "${libdir}/libGL.so.*" +FILES_libglapi = "${libdir}/libglapi.so.*" +FILES_libosmesa = "${libdir}/libOSMesa.so.*" +FILES_libwayland-egl = "${libdir}/libwayland-egl.so.*" +FILES_libegl-gallium = "${libdir}/egl/egl_gallium.so*" +FILES_libgbm-gallium = "${libdir}/gbm/gbm_gallium_drm.so*" +FILES_libopenvg = "${libdir}/libOpenVG.so.*" +FILES_libxvmcsoftpipe = "${libdir}/libXvMCsoftpipe.so.*" + +FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc" +FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" +FILES_libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h" +FILES_libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc" +FILES_libglapi-dev = "${libdir}/libglapi.*" +FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc" +FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc" +FILES_libgles3-mesa-dev = "${includedir}/GLES3" +FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/osmesa.h ${libdir}/pkgconfig/osmesa.pc" +FILES_libwayland-egl-dev = "${libdir}/pkgconfig/wayland-egl.pc ${libdir}/libwayland-egl.*" +FILES_libopenvg-dev = "${libdir}/libOpenVG.so ${libdir}/libOpenVG.la* \ + ${includedir}/VG ${libdir}/pkgconfig/vg.pc" +FILES_libxvmcsoftpipe-dev = "${libdir}/libXvMCsoftpipe.so ${libdir}/libXvMCsoftpipe.la" + +FILES_${PN}-dbg += "${libdir}/dri/.debug/* ${libdir}/egl/.debug/* ${libdir}/gbm/.debug/* ${libdir}/gallium-pipe/.debug" diff --git a/meta/recipes-graphics/mesa/mesa/0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch b/meta/recipes-graphics/mesa/mesa/0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch new file mode 100644 index 0000000000..2df5e61d21 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa/0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch @@ -0,0 +1,52 @@ +From debac5531f7107d239530ff6e29eeda72b9ec1e9 Mon Sep 17 00:00:00 2001 +From: Martin Jansa +Date: Sat, 29 Jun 2013 11:20:51 +0200 +Subject: [PATCH 2/4] pipe_loader_sw: include xlib_sw_winsys.h only when + HAVE_PIPE_LOADER_XLIB + +* HAVE_WINSYS_XLIB was removed in + commit b3f1f665b0fef178ae193e6b111f14c9a5ad3b25 + Author: Matt Turner + Date: Sun Jan 20 15:32:08 2013 -0800 + build: Get rid of GALLIUM_WINSYS_DIRS + +* HAVE_PIPE_LOADER_XLIB is set correctly: + if test "x$NEED_WINSYS_XLIB" = xyes; then + GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB" + GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(top_builddir)/src/gallium/winsys/sw/xlib/libws_xlib.la" + fi + +* fixes build of pipe_loader_sw without libx11 headers available + +Upstream-Status: Submitted https://bugs.freedesktop.org/show_bug.cgi?id=66357 +Signed-off-by: Martin Jansa +--- + src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +index c2b78c6..0da3f4d 100644 +--- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c ++++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +@@ -31,7 +31,9 @@ + #include "util/u_dl.h" + #include "sw/null/null_sw_winsys.h" + #include "target-helpers/inline_sw_helper.h" ++#ifdef HAVE_PIPE_LOADER_XLIB + #include "state_tracker/xlib_sw_winsys.h" ++#endif + + struct pipe_loader_sw_device { + struct pipe_loader_device base; +@@ -44,7 +46,7 @@ struct pipe_loader_sw_device { + static struct pipe_loader_ops pipe_loader_sw_ops; + + static struct sw_winsys *(*backends[])() = { +-#ifdef HAVE_WINSYS_XLIB ++#ifdef HAVE_PIPE_LOADER_XLIB + x11_sw_create, + #endif + null_sw_create +-- +1.8.2.1 + diff --git a/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch b/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch new file mode 100644 index 0000000000..30a3d98758 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa/0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch @@ -0,0 +1,362 @@ +From 06c1ba29de8a26fffb73ee99f0fc54c704e9fee4 Mon Sep 17 00:00:00 2001 +From: Daniel Stone +Date: Fri, 24 May 2013 17:20:27 +0100 +Subject: [PATCH 3/5] EGL: Mutate NativeDisplayType depending on config + +If we go through ./configure without enabling X11 anywhere, then set the +fallback types for EGL NativeDisplay and friends, rather than assuming +X11/Xlib. + +Upstream-Status: Backport (slightly different solution was applied in master +https://bugs.freedesktop.org/show_bug.cgi?id=64959) + +Signed-off-by: Daniel Stone +Signed-off-by: Martin Jansa +--- + configure.ac | 9 +++ + include/EGL/eglplatform.h | 146 ------------------------------------------- + include/EGL/eglplatform.h.in | 146 +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 155 insertions(+), 146 deletions(-) + delete mode 100644 include/EGL/eglplatform.h + create mode 100644 include/EGL/eglplatform.h.in + +diff --git a/configure.ac b/configure.ac +index 2b4a374..d4c7a95 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1565,12 +1565,20 @@ fi + + EGL_PLATFORMS="$egl_platforms" + ++if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then ++ MESA_EGL_NO_X11_HEADERS=0 ++else ++ MESA_EGL_NO_X11_HEADERS=1 ++fi ++ + AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1) + AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1) + ++AC_SUBST([MESA_EGL_NO_X11_HEADERS]) ++ + AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x") + AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x") + +@@ -2042,6 +2050,7 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" + + dnl Substitute the config + AC_CONFIG_FILES([Makefile ++ include/EGL/eglplatform.h + src/Makefile + src/egl/Makefile + src/egl/drivers/Makefile +diff --git a/include/EGL/eglplatform.h b/include/EGL/eglplatform.h +deleted file mode 100644 +index 17fdc61..0000000 +--- a/include/EGL/eglplatform.h ++++ /dev/null +@@ -1,146 +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__) +- +-#ifdef MESA_EGL_NO_X11_HEADERS +- +-typedef void *EGLNativeDisplayType; +-typedef khronos_uint32_t EGLNativePixmapType; +-typedef khronos_uint32_t 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/include/EGL/eglplatform.h.in b/include/EGL/eglplatform.h.in +new file mode 100644 +index 0000000..5126c92 +--- /dev/null ++++ b/include/EGL/eglplatform.h.in +@@ -0,0 +1,146 @@ ++#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__) ++ ++#if @MESA_EGL_NO_X11_HEADERS@ ++ ++typedef void *EGLNativeDisplayType; ++typedef khronos_uint32_t EGLNativePixmapType; ++typedef khronos_uint32_t 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 */ +-- +1.8.2.1 + diff --git a/meta/recipes-graphics/mesa/mesa/0006-fix-out-of-tree-egl.patch b/meta/recipes-graphics/mesa/mesa/0006-fix-out-of-tree-egl.patch new file mode 100644 index 0000000000..88a4fb0636 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa/0006-fix-out-of-tree-egl.patch @@ -0,0 +1,48 @@ +Fix out of tree compilation failure due to +0003-EGL-Mutate-NativeDisplayType-depending-on-config.patch. + +Upstream-Status: Inappropriate (upstream has different solution to root problem) +Signed-off-by: Ross Burton + +diff --git a/src/egl/drivers/dri2/Makefile.am b/src/egl/drivers/dri2/Makefile.am +index 45f7dfa..ed0e777 100644 +--- a/src/egl/drivers/dri2/Makefile.am ++++ b/src/egl/drivers/dri2/Makefile.am +@@ -21,6 +21,7 @@ + + AM_CFLAGS = \ + -I$(top_srcdir)/include \ ++ -I$(top_builddir)/include \ + -I$(top_srcdir)/src/egl/main \ + -I$(top_srcdir)/src/gbm/main \ + -I$(top_srcdir)/src/gbm/backends/dri \ +diff --git a/src/egl/drivers/glx/Makefile.am b/src/egl/drivers/glx/Makefile.am +index 6bf67ea..7b87047 100644 +--- a/src/egl/drivers/glx/Makefile.am ++++ b/src/egl/drivers/glx/Makefile.am +@@ -21,6 +21,7 @@ + + AM_CFLAGS = \ + -I$(top_srcdir)/include \ ++ -I$(top_builddir)/include \ + -I$(top_srcdir)/src/egl/main \ + $(X11_CFLAGS) \ + $(DEFINES) +diff --git a/src/egl/main/Makefile.am b/src/egl/main/Makefile.am +index ca5257a..13a5734 100644 +--- a/src/egl/main/Makefile.am ++++ b/src/egl/main/Makefile.am +@@ -27,6 +27,7 @@ endif + + AM_CFLAGS = \ + -I$(top_srcdir)/include \ ++ -I$(top_builddir)/include \ + -I$(top_srcdir)/src/gbm/main \ + $(DEFINES) \ + $(EGL_CFLAGS) \ +@@ -135,4 +136,4 @@ egl_HEADERS = \ + $(top_srcdir)/include/EGL/eglext.h \ + $(top_srcdir)/include/EGL/egl.h \ + $(top_srcdir)/include/EGL/eglmesaext.h \ +- $(top_srcdir)/include/EGL/eglplatform.h ++ $(top_builddir)/include/EGL/eglplatform.h diff --git a/meta/recipes-graphics/mesa/mesa_10.1.3.bb b/meta/recipes-graphics/mesa/mesa_10.1.3.bb new file mode 100644 index 0000000000..abc450a9c5 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa_10.1.3.bb @@ -0,0 +1,19 @@ +require ${BPN}.inc + +SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \ + file://0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch \ + file://0006-fix-out-of-tree-egl.patch \ + " + +SRC_URI[md5sum] = "ba6dbe2b9cab0b4de840c996b9b6a3ad" +SRC_URI[sha256sum] = "b2615e236ef25d0fb94b8420bdd2e2a520b7dd5ca2d4b93306154f7fd4adecc3" + +S = "${WORKDIR}/Mesa-${PV}" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install_append() { + if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then + sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi +} diff --git a/meta/recipes-graphics/mesa/mesa_git.bb b/meta/recipes-graphics/mesa/mesa_git.bb new file mode 100644 index 0000000000..cda310a525 --- /dev/null +++ b/meta/recipes-graphics/mesa/mesa_git.bb @@ -0,0 +1,23 @@ +require ${BPN}.inc + +DEFAULT_PREFERENCE = "-1" + +LIC_FILES_CHKSUM = "file://docs/license.html;md5=6a23445982a7a972ac198e93cc1cb3de" + +SRCREV = "0028eb1083e6adc110a23a5f02c993cda217067a" +PV = "10.1.3+git${SRCPV}" + +SRC_URI = "git://anongit.freedesktop.org/git/mesa/mesa;branch=10.1 \ + file://0002-pipe_loader_sw-include-xlib_sw_winsys.h-only-when-HA.patch \ + file://0006-fix-out-of-tree-egl.patch \ + " + +S = "${WORKDIR}/git" + +#because we cannot rely on the fact that all apps will use pkgconfig, +#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER +do_install_append() { + if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then + sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h + fi +} -- cgit v1.2.3-54-g00ecf