YaGL: Check for GPU acceleration on boot 41/81041/2 accepted/tizen/common/20160725.153648 accepted/tizen/ivi/20160725.083417 accepted/tizen/mobile/20160725.083352 accepted/tizen/tv/20160725.083354 accepted/tizen/wearable/20160725.083348 submit/tizen/20160725.073531
authorVasiliy Ulyanov <v.ulyanov@samsung.com>
Thu, 21 Jul 2016 12:58:28 +0000 (15:58 +0300)
committerVasiliy Ulyanov <v.ulyanov@samsung.com>
Thu, 21 Jul 2016 13:18:12 +0000 (16:18 +0300)
If emulator is run without host GPU acceleration, yagl will likely
terminate GL apps on initialization failure. In order to handle the
situation propely, dummy GL libs are now packed along with yagl. When
emulator boots up, a script will check if /dev/yagl is present and
setup the symlinks appropriately.

Change-Id: I6715c5798b0c2a6cdef16a24a1e3c8786f6aa36f
Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
dummy/CMakeLists.txt
packaging/emulator-yagl.spec
packaging/opengl-es-setup-yagl-env.sh

index b5630e0fb59f409202d79ef0ecc7c594eaca20c5..026f026890abf119581bd74a2b7f1ebe2764e9d3 100644 (file)
@@ -6,5 +6,5 @@ add_library(GLESv2_dummy SHARED gles2_dummy.c)
 
 install(
     TARGETS EGL_dummy GLESv1_dummy GLESv2_dummy
-    LIBRARY DESTINATION lib/dummy-gl
+    LIBRARY DESTINATION ${INSTALL_LIB_DIR}/driver
 )
index 08ba251e5f78f5f4d1564fb8e8253768b6aa1f76..9ade75127f7b2932bd6a56d8295985503e5dfd05 100644 (file)
@@ -63,7 +63,7 @@ Development files for use with Wayland protocol
 %build
 cp %{SOURCE1001} .
 %if "%{ENABLE_TIZEN_BACKEND}" == "1"
-cmake -DCMAKE_INSTALL_PREFIX=%{buildroot} -DINSTALL_LIB_DIR=%{buildroot}%{_libdir} -DPLATFORM_TIZEN=1
+cmake -DCMAKE_INSTALL_PREFIX=%{buildroot} -DINSTALL_LIB_DIR=%{buildroot}%{_libdir} -DPLATFORM_TIZEN=1 -DDUMMY_LIBS=1
 %else
 cmake -DCMAKE_INSTALL_PREFIX=%{buildroot} -DINSTALL_LIB_DIR=%{buildroot}%{_libdir} -DPLATFORM_X11=0 -DPLATFORM_GBM=0 -DPLATFORM_WAYLAND=1
 %endif
@@ -74,9 +74,12 @@ rm -fr %{buildroot}
 mkdir -p %{buildroot}
 mkdir -p %{buildroot}%{_libdir}
 mkdir -p %{buildroot}%{_libdir}/pkgconfig
+mkdir -p %{buildroot}/etc/profile.d
 
 make install
 
+cp packaging/opengl-es-setup-yagl-env.sh %{buildroot}/etc/profile.d/
+
 %if "%{ENABLE_TIZEN_BACKEND}" == "0"
 cp pkgconfig/wayland-egl.pc %{buildroot}%{_libdir}/pkgconfig/
 %post   -n libwayland-egl -p /sbin/ldconfig
@@ -95,6 +98,7 @@ ln -sf driver/libGLESv1_CM.so.1.0 %{buildroot}%{_libdir}/libGLESv1_CM.so.1.1
 %{_libdir}/driver/libEGL*
 %{_libdir}/driver/libGL*
 %{_libdir}/libGLESv1_CM.so.1.1
+%attr(770,root,root)/etc/profile.d/opengl-es-setup-yagl-env.sh
 
 %if "%{ENABLE_TIZEN_BACKEND}" == "0"
 %files -n libwayland-egl
index 38fc8c3a5d861963915ec5e463d64ce7a99b61b8..6dd6b5a98733a83ad6c2d255aef8dd3b7f53de73 100755 (executable)
@@ -1,45 +1,14 @@
- #!/bin/sh
+#!/bin/sh
 
-echo -e "[${_G} Opengl-es acceleration module setting. ${C_}]"
+echo -e "[${_G} OpenGL ES acceleration module setting. ${C_}]"
 if [ -e /dev/yagl ] ; then
-    echo -e "[${_G} Emulator support gles hw acceleration. ${C_}]"
-    echo -e "[${_G} Change permission of /dev/yagl. ${C_}]"
-    chown root:video /dev/dri/card0
-    chown root:video /dev/yagl
-    chmod 660 /dev/dri/card0
-    chmod 660 /dev/yagl
-    chsmack -a "*" /dev/dri/card0
-    chsmack -a "*" /dev/yagl
-    echo -e "[${_G} Apply to use hw gles library. ${C_}]"
-    ln -s -f /usr/lib/yagl/libEGL.so.1.0 /usr/lib/libEGL.so
-    ln -s -f /usr/lib/yagl/libEGL.so.1.0 /usr/lib/libEGL.so.1
-    ln -s -f /usr/lib/yagl/libGLESv1_CM.so.1.0 /usr/lib/libGLESv1_CM.so
-    ln -s -f /usr/lib/yagl/libGLESv1_CM.so.1.0 /usr/lib/libGLESv1_CM.so.1
-    ln -s -f /usr/lib/yagl/libGLESv2.so.1.0 /usr/lib/libGLESv2.so
-    ln -s -f /usr/lib/yagl/libGLESv2.so.1.0 /usr/lib/libGLESv2.so.1
-elif grep "yagl=1" /proc/cmdline ; then
-    echo -e "[${_G} Emulator support gles hw acceleration. ${C_}]"
-    echo -e "[${_G} Change permission of /dev/yagl. ${C_}]"
-    chown root:video /dev/dri/card0
-    chown root:video /dev/yagl
-    chmod 660 /dev/dri/card0
-    chmod 660 /dev/yagl
-    chsmack -a "*" /dev/dri/card0
-    chsmack -a "*" /dev/yagl
-    echo -e "[${_G} Apply to use hw gles library. ${C_}]"
-    ln -s -f /usr/lib/yagl/libEGL.so.1.0 /usr/lib/libEGL.so
-    ln -s -f /usr/lib/yagl/libEGL.so.1.0 /usr/lib/libEGL.so.1
-    ln -s -f /usr/lib/yagl/libGLESv1_CM.so.1.0 /usr/lib/libGLESv1_CM.so
-    ln -s -f /usr/lib/yagl/libGLESv1_CM.so.1.0 /usr/lib/libGLESv1_CM.so.1
-    ln -s -f /usr/lib/yagl/libGLESv2.so.1.0 /usr/lib/libGLESv2.so
-    ln -s -f /usr/lib/yagl/libGLESv2.so.1.0 /usr/lib/libGLESv2.so.1
+    echo -e "[${_G} Emulator supports gles hw acceleration. ${C_}]"
+    ln -s -f libEGL.so.1.0 /usr/lib/driver/libEGL.so.1
+    ln -s -f libGLESv1_CM.so.1.0 /usr/lib/driver/libGLESv1_CM.so.1
+    ln -s -f libGLESv2.so.2.0 /usr/lib/driver/libGLESv2.so.2
 else
     echo -e "[${_G} Emulator does not support gles hw acceleration. ${C_}]"
-    echo -e "[${_G} Apply to use gles stub library. ${C_}]"
-    ln -s -f /usr/lib/dummy-gl/libEGL_dummy.so /usr/lib/libEGL.so
-    ln -s -f /usr/lib/dummy-gl/libEGL_dummy.so /usr/lib/libEGL.so.1
-    ln -s -f /usr/lib/dummy-gl/libGLESv1_dummy.so /usr/lib/libGLESv1_CM.so
-    ln -s -f /usr/lib/dummy-gl/libGLESv1_dummy.so /usr/lib/libGLESv1_CM.so.1
-    ln -s -f /usr/lib/dummy-gl/libGLESv2_dummy.so /usr/lib/libGLESv2.so
-    ln -s -f /usr/lib/dummy-gl/libGLESv2_dummy.so /usr/lib/libGLESv2.so.1
+    ln -s -f libEGL_dummy.so /usr/lib/driver/libEGL.so.1
+    ln -s -f libGLESv1_dummy.so /usr/lib/driver/libGLESv1_CM.so.1
+    ln -s -f libGLESv2_dummy.so /usr/lib/driver/libGLESv2.so.2
 fi