ODROID XU Projects Status DASHBOARD

Moderators: mdrjr, odroid

ODROID XU Projects Status DASHBOARD

Unread postby memeka » Sat Sep 14, 2013 12:12 pm

Last Updated: 30/08/2013 - wayland and other updates
11/11/2013 - xbmc 13 gotham
14/09/2013 - (temporary) sound fix

A DASHBOARD thread for the XU with experiences and fixes.

OS: Ubuntu 14.04 Dev Center viewtopic.php?f=61&t=4073 | Debian jessie (testing)
Currently need to choose between running EGL-accelerated libhybris with Android hwcomposer, or X11 non-accelerated with Linux hwcomposer.

Kernels:

PowerVR acceleration:
  • no linux kernel drivers, none will be developed
  • current solution involves the use of Android drivers + libhybris

XBMC 13 gotham:

Sound:

Wayland:

This is Linux Desktop:
xu.png


This is EGL accelerated Wayland:
Last edited by memeka on Sat Aug 30, 2014 9:54 am, edited 13 times in total.
User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART

Re: ODROID XU Projects Status DASHBOARD

Unread postby memeka » Sat Sep 14, 2013 12:26 pm

Sound fix for the XU linux images:

0) running pulseaudio as root
====================
in /etc/inittab add:
Code: Select all
pa:345:respawn:/usr/bin/sudo /usr/bin/pulseaudio --disallow-exit --disallow-module-loading=1 --log-target=syslog --high-priority


1) ALSA
====================
you can try using one of following /etc/asound.conf files:

Code: Select all
pcm.!default {
   type rate
   slave {
      pcm "plughw:0,0"
      rate 44100
   }
}


Code: Select all
pcm.!default {
   type plug
   slave.pcm "dmixer"
}

pcm.dmixer  {
    type dmix
    ipc_key 1024
    slave {
      pcm "hw:0,0"
      period_time 0
      period_size 1024
      buffer_size 4096
      channels 2
      rate 44100
   }
   bindings {
      0 0
      1 1
   }
}

ctl.dmixer {
   type hw
   card 0
}


Code: Select all
pcm.!default {
        type hw
        card 0
}

ctl.!default {
        type hw
        card 0
}


Code: Select all
pcm.pulse {
    type pulse
}

ctl.pulse {
    type pulse
}

pcm.!default {
    type pulse
}

ctl.!default {
    type pulse
}


I can confirm the first fix works.

2) PULSE
====================
Because of the different driver code being used, pulse audio fails with the following error:
Code: Select all
[   17.854442] dma-pl330 dma-pl330.0: pl330_submit_req:1677 Trying increasing mcbufsz
[   17.860599] dma-pl330 dma-pl330.0: fill_queue:2383 Bad Desc(3)


This is just a temporary fix, since performance is not as good with this. Edit /etc/pulse/default.pa and add tsched=0 to the udev module:
Code: Select all
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect tsched=0
.else
### Use the static hardware detection module (for systems that lack udev support)
load-module module-detect
.endif


Now pulse audio should work as well

3) Permissions errors on boot with pulseaudio installed
====================
Code: Select all
[....] Setting up ALSA...[    9.178303]         [MAX98090] max98090_set_playback_speaker_headset(112)
[    9.183207]  max98090_set_record_path [706] param 0
[    9.189197]  [MAX98090] max98090_set_record_main_mic(151)
[    9.216630]  [MAX98090] max98090_set_playback_speaker_headset(112)
[    9.221621]  max98090_set_record_path [706] param 0
[    9.227525]  [MAX98090] max98090_set_record_main_mic(151)
warning: 'alsactl restore' failed with error message 'Home directory not accessible: Permission denied'...Home directory no[    9.259913]  max98090_get_playback_path [689] current playback path 2
[    9.266119]  max98090_get_record_path [732] current record path 0
t accessible: Permission denied
Home directory no[    9.294837]  max98090_get_playback_path [689] current playback path 2
[    9.301135]  max98090_get_record_path [732] current record path 0
t accessible: Permission denied


This happens because ALSA is trying to restore sound levels, but it should be pulseaudio that does that.
The fix is to edit /etc/init.d/alsa-utils and modify restore_levels() function to return 0:

Code: Select all
restore_levels()
{
        # we are using pulseaudio, and do not restore levels here, so we return 0
        return 0

        [ -f /var/lib/alsa/asound.state ] || return 1
        CARD="$1"
...
Last edited by memeka on Sat Aug 30, 2014 9:58 am, edited 4 times in total.
User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART

Re: ODROID XU Projects Status DASHBOARD

Unread postby hdonk » Wed Sep 18, 2013 11:59 pm

For anyone that's interested, on my XU:

time make -j8 zImage modules
...
...
real 12m4.929s
user 40m31.660s
sys 3m29.745s
hdonk
 
Posts: 32
Joined: Tue Sep 17, 2013 3:17 pm
languages_spoken: english,french
ODROIDs: ODROID-XU

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Tue Sep 24, 2013 7:25 pm

Excellent tutorial on sound. I have sound working now and that is a real bonus!

The kernel sources contain a new uboot.bin but there is no info in the commit about what has changed nor how to update uboot on the XU.
A little help with that would be much appreciated. Also we might benefit form adding all the know-how from this forum to the wiki for the XU.
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Wed Sep 25, 2013 3:19 am

janrinze wrote:Excellent tutorial on sound. I have sound working now and that is a real bonus!

The kernel sources contain a new uboot.bin but there is no info in the commit about what has changed nor how to update uboot on the XU.
A little help with that would be much appreciated. Also we might benefit form adding all the know-how from this forum to the wiki for the XU.


New u-boot as just a small modification to increase the buffer size of the u-boot variables..
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby memeka » Sun Nov 10, 2013 5:53 am

How to install hardware accelerated XBMC.
Code on http://github.com/mihailescu2m/xbmc branch Gotham-mfc-XU (Gotham 13.2 final).

0) compiled kernel with Android logs and binder support

1) copied the /system folder from existing images; link /vendor to /system/vendor (available as a separate download in the forums)
current version is for Android 4.2.2; ongoing work for Android 4.4.4
copy Android 4.4.2 headers from download/file.php?id=1227 to /usr/local/include

2) cloned libhybris repository. compiled the stuff in the "hybris" folder: (add --enable-wayland --enable-mesa for wayland)
Code: Select all
# ./autogen.sh --enable-arch=arm --with-default-hybris-ld-library-path=/system/lib:/vendor/lib --with-android-headers=/usr/local/include/android

------------------------------------------------------------------------
libhybris 0.1.0
------------------------------------------------------------------------
Configuration Options:
  debug build.............: no
  trace...................: no
  prefix..................: /usr/local
  arch  ..................: arm
  headers path ...........:
  default egl platform ...: null
  default ld_library_path.: /system/lib:/vendor/lib

Now type 'make' to compile and 'make install' to install this package.


2a) run ldconfig to update library path to use hybris instead of mesa

3) compile xbmc gotham. repository at http://github.com/mihailescu2m/xbmc branch Gotham-mfc-XU. xbmc configure flags are:
Code: Select all
./configure --enable-codec=mfc --enable-libcec --disable-x11 --enable-alsa --disable-pulse --enable-neon --disable-debug --enable-optimizations --enable-ccache --enable-gles --enable-non-free --disable-gl --disable-vdpau --disable-vaapi --disable-crystalhd --disable-openmax --disable-joystick --disable-rsxs --disable-projectm --disable-fishbmc -enable-texturepacker --with-platform=hybris --with-cpu=cortex-a15 FFMPEG_CFLAGS="-mfloat-abi=hard -mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad -ffast-math -mcpu=cortex-a15 -mtune=cortex-a15 -O3 -pipe -fstack-protector" CFLAGS="-mfloat-abi=hard -mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad -ffast-math -mcpu=cortex-a15 -mtune=cortex-a15 -O3 -pipe -fstack-protector -DTARGET_HYBRIS=1 -I/usr/local/include/hybris" CXXFLAGS="-mfloat-abi=hard -mfpu=neon -ftree-vectorize -mvectorize-with-neon-quad -ffast-math -mcpu=cortex-a15 -mtune=cortex-a15 -O3 -pipe -fstack-protector -DTARGET_HYBRIS=1 -I/usr/local/include/hybris"

make and install

4) add the following startup script (/etc/rc.local for example):

Code: Select all
rm -rf /dev/log
rm -rf /dev/graphics
mkdir /dev/log
mkdir /dev/graphics
ln -s /dev/log_events /dev/log/events
ln -s /dev/log_main /dev/log/main
ln -s /dev/log_system /dev/log/system
ln -s /dev/log_radio /dev/log/radio
ln -s /dev/fb0 /dev/graphics/fb0

/vendor/bin/pvrsrvctl --start --no-module || true

/system/bin/servicemanager &
/system/bin/mediaserver &


5) disable (linux) exynos5-hwcomposer from starting at boot.

Some notes:

* 60fps GUI in 1080p resolution with Ace skin ... that's double the fps from the U2/3...
* X and XBMC do not work at the same time... X needs exynos5-hwcomposer, which breaks xbmc... so if you want to switch between them you need to start/stop exynos5-hwcomposer manually...
* same source can be used with --enable-wayland; no more platform=hybris needed
Last edited by memeka on Sat Aug 30, 2014 12:08 pm, edited 3 times in total.
User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Mon Nov 11, 2013 2:48 am

I have been looking through ARM documentation but it seems that the rev 2 p3 of the XU does not have the specific errata selected in the kernel build.
I tested some kernels with the errata turned off for the loop buffer and it runs fine. (the Chromebook won't be able to compile kernels and have many weird errors with loop buffer enabled.)
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Mon Nov 11, 2013 4:05 am

janrinze wrote:I have been looking through ARM documentation but it seems that the rev 2 p3 of the XU does not have the specific errata selected in the kernel build.
I tested some kernels with the errata turned off for the loop buffer and it runs fine. (the Chromebook won't be able to compile kernels and have many weird errors with loop buffer enabled.)


Can you detail more? I'm able to compile kernels with several gcc versions without issues on XU
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Tue Nov 12, 2013 3:08 am

Did you check the kernel config?
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Tue Nov 12, 2013 3:34 am

janrinze wrote:Did you check the kernel config?


Yep.. but I'm still wait for more details.. such as what to check.. how to test...
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby SevenW » Tue Nov 12, 2013 4:31 am

Would this approach to xbmc then work with different linux distributions?
Will it also work with the 3.4.67 kernel? Or is there an incompatibility with the hwcomposer in /system folder?
SevenW
 
Posts: 36
Joined: Sat Oct 26, 2013 4:50 am
languages_spoken: english
ODROIDs: XU

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Tue Nov 12, 2013 4:46 am

SevenW wrote:Would this approach to xbmc then work with different linux distributions?
Will it also work with the 3.4.67 kernel? Or is there an incompatibility with the hwcomposer in /system folder?


It will work, all you need to add is some Android bits that are disabled.
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Tue Nov 12, 2013 9:43 pm

mdrjr: ERRATA 773022 and 774769.
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Wed Nov 13, 2013 4:01 am

janrinze wrote:mdrjr: ERRATA 773022 and 774769.


I'm aware of those ERRATA's what I don't get is that if we are affected or not.. As far as I know we aren't affected by that.. Samsung should had it fixed in silicon..
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Wed Nov 13, 2013 4:23 am

It should be fixed.. so why are they selected in the kernel?
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Wed Nov 13, 2013 4:27 am

janrinze wrote:It should be fixed.. so why are they selected in the kernel?


Don't know.. test without.. if no issues, submit a PR :)
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Wed Nov 13, 2013 5:23 am

It looks like the code checks for the version of the chip. if it is not the affected one it skips the errata. Still makes me wonder why it looks like the loop buffer is disabled.
With loop buffer enabled the chromebook has double bogomips value. The bogomips value on the XU is seems to indicate loop buffer is disabled. Could this have been disabled in the bootloader?
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby mdrjr » Wed Nov 13, 2013 5:35 am

keep in mind that when XU boots it boots with the A7's cores. Not the A15's. So initial bogomips might be slightly low..
mdrjr
Site Admin
 
Posts: 11619
Joined: Fri Feb 22, 2013 11:34 pm
Location: Brazil
languages_spoken: english, portuguese
ODROIDs: -

Re: ODROID XU Projects Status DASHBOARD

Unread postby janrinze » Wed Nov 13, 2013 6:06 pm

The kernel states revisions up to r0p4 but ARM has no r0p4 but it does have r4p0 so it seems all revisions have this bug?
Odroid XU has r2p3. It gets me confused. Do you know which errata do apply to our chip revision?
janrinze
 
Posts: 76
Joined: Thu Sep 19, 2013 4:31 am
languages_spoken: english
ODROIDs: ODROID-XU-E

Re: ODROID XU Projects Status DASHBOARD

Unread postby gripped » Sat Nov 23, 2013 4:57 am

Just an informational post

If compiling xbmc with libhybris decoding instead of mfc you need this file in /etc
media_codecs.xml
(4.59 KiB) Downloaded 238 times


Or the decoder won't start and xbmc falls back to software decoding
gripped
 
Posts: 691
Joined: Tue May 21, 2013 11:34 pm
languages_spoken: english
ODROIDs: U2 XU U3 XU3

Re: ODROID XU Projects Status DASHBOARD

Unread postby memeka » Sat Aug 30, 2014 9:54 am

MastaG wrote:Well I've built everything with: --prefix=/usr/local and PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig set.
Also I have a file /etc/ld.so.conf.d/hybris.conf with: /usr/local/lib
That way configure scripts will look in /usr/local first and the linker will always search in /usr/local/lib first.

Btw if you have any mesa-*-dev packages installed then remove those first.
Hybris provides the required headers with: --enable-mesa.

Wayland:
- libinput git- no patching
- libunwind git - no patching
- wayland - no patching

Hybris git (no patching):
Code: Select all
./configure --prefix=/usr/local --enable-debug --enable-trace \
   --enable-wayland --enable-mesa --enable-arch=arm \
   --with-default-hybris-ld-library-path=/system/lib:/vendor/lib \
   --with-android-headers=/usr/local/include/android
------------------------------------------------------------------------
libhybris 0.1.0
------------------------------------------------------------------------
Configuration Options:
  debug build.............: yes
  trace...................: yes
  prefix..................: /usr/local
  arch  ..................: arm
  headers path ...........:
  default egl platform ...: null
  default ld_library_path.: /system/lib:/vendor/lib
------------------------------------------------------------------------


Weston:
pixman git - no patching
ciaro git - no patching
Weston is configured with:
Code: Select all
WESTON_NATIVE_BACKEND="wayland-backend.so" ./configure --prefix=/usr/local --enable-demo-clients-install \
   --enable-weston-launch --enable-clients \
   --enable-screen-sharing --enable-rdp-compositor \
   --enable-fbdev-compositor --disable-rpi-compositor \
   --enable-wayland-compositor --enable-headless-compositor \
   --enable-xwayland --enable-xwayland-test \
   --with-xserver-path=/usr/bin/Xwayland --enable-setuid-install

Native Backend         wayland-backend.so
   setuid Install         yes

   Cairo Renderer         image
   EGL            yes
   libxkbcommon         yes
   xcb_xkb            yes
   XWayland         yes
   dbus            yes

   Build wcap utility      yes
   Build Fullscreen Shell      yes

   weston-launch utility      yes
   systemd-login support      yes

   DRM Compositor         yes
   X11 Compositor         yes
   Wayland Compositor      yes
   Headless Compositor      yes
   RPI Compositor         no
   FBDEV Compositor      yes
   RDP Compositor         yes
   Screen Sharing         yes

   libinput Backend      yes

   Raspberry Pi BCM headers   no

   Build Clients         yes
   Build EGL Clients      no
   Build Simple Clients      yes
   Build Simple EGL Clients   yes

   Install Demo Clients      yes

   Colord Support         yes
   GLU Support         no
   LCMS2 Support         yes
   libwebp Support         yes
   libunwind Support      yes
   VA H.264 encoding Support   yes


QtWayland:
qtbase-opensource-src-5.2.1 - no patching
qtdeclarative-opensource-src-5.2.1 - no patching
qtwayland git - Removed the Q_DECL_OVERRIDE from hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
Code: Select all
[odroid@localhost qtwayland]$ qmake
Info: creating cache file /home/odroid/src/qtwayland/.qmake.cache
Checking for wayland... yes
Checking for xkbcommon... yes
Checking for wayland_cursor... yes
Checking for wayland_scanner... yes
Checking for wayland_egl... yes
Checking for egl... yes
Checking for brcm_egl... no
Checking for glx... no
Checking for xcomposite... yes
Checking for drm_egl_server... yes
Checking for libhybris_egl_server... yes

qt5-qpa-hwcomposer-plugin - no patching

- For XBMC
libcec - the one for Odroid (i believe from vimea's github)
libid3tag-0.15.1b
libmad-0.15.1b
libmpeg2-0.5.1
lame-3.99.5
libnfs
libshairport
For XBMC I altered the configure.in script slightly, I can post it if you like.


So when I run it:
Code: Select all
[root@localhost /]# /vendor/bin/pvrsrvctl --start --no-module
[root@localhost /]# /system/bin/servicemanager &
[1] 795
[root@localhost /]# /system/bin/mediaserver &
[2] 796
[root@localhost /]# cd /usr/local/examples/qtwayland/qml-compositor/
[root@localhost qml-compositor]# EGL_PLATFORM=hwcomposer ./qml-compositor -platform hwcomposer -plugin EvdevKeyboard -plugin EvdevMouse &
[3] 810
[root@localhost qml-compositor]# EGLFS: Screen Info
 - Physical size: QSizeF(0, 0)
 - Screen size: QSize(1280, 720)
 - Screen depth: 32
== hwcomposer module ==
 * Address: 0xb36fa004
 * Module API Version: 1
 * HAL API Version: 100
 * Identifier: hwcomposer
 * Name: Samsung exynos5 hwcomposer module
 * Author: Samsung LSI
== hwcomposer module ==
== hwcomposer device ==
 * Version: 1010001 (interpreted as 1010001)
 * Module: 0xb36fa004
== hwcomposer device ==
QEglScreen 0x2e690

"Qt Warning - invalid keysym: dead_actute"
EGL Wayland extension successfully initialized.

QEglWindow 0xb8990: 0xbec462e4 0x0

WARNING: virtual int HWComposerNativeWindow::setBufferCount(int): allocated only 0 buffers out of 2



[root@localhost include]# EGL_PLATFORM=wayland weston -Swayland-1 --fullscreen --width=1280 --height=720 --display=wayland-0
Date: 2014-08-23 CEST
[17:05:54.214] weston 1.5.90
               http://wayland.freedesktop.org/
               Bug reports to: https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=weston&version=1.5.90
               Build: 1.4.93-105-g461e93c build: cliptest uses also vertex-clipping.h (2014-08-20 11:58:47 +0300)
[17:05:54.216] OS: Linux, 3.4.98-odroidxu, #6 SMP PREEMPT Thu Aug 21 18:13:52 CEST 2014, armv7l
[17:05:54.217] Starting with no config file.
[17:05:54.217] Loading module '/usr/local/lib/weston/wayland-backend.so'
[17:05:54.238] launching '/usr/local/libexec/weston-keyboard'
[17:05:54.266] Loading module '/usr/local/lib/weston/gl-renderer.so'
[17:05:54.293] warning: EGL_EXT_buffer_age not supported. Performance could be affected.
[17:05:54.294] Creating 1280x720 wayland output at (0, 0)
[17:05:54.324] EGL version: 1.4 Android META-EGL
[17:05:54.325] EGL vendor: Android
[17:05:54.326] EGL client APIs: OpenGL_ES
[17:05:54.326] EGL extensions: EGL_KHR_image EGL_KHR_image_base
               EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image
               EGL_KHR_gl_renderbuffer_image EGL_KHR_fence_sync
               EGL_ANDROID_image_native_buffer EGL_HYBRIS_native_buffer
               EGL_WL_bind_wayland_display EGL_EXT_swap_buffers_with_damage
[17:05:54.329] GL version: OpenGL ES 2.0 build 1.10@2209507
[17:05:54.329] GLSL version: OpenGL ES GLSL ES 1.00 build 1.10@2209507
[17:05:54.329] GL vendor: Imagination Technologies
[17:05:54.330] GL renderer: PowerVR SGX 544MP
[17:05:54.330] GL extensions: GL_EXT_debug_marker GL_OES_rgb8_rgba8
               GL_OES_depth24 GL_OES_vertex_half_float GL_OES_texture_float
               GL_OES_texture_half_float GL_OES_element_index_uint
               GL_OES_mapbuffer GL_OES_fragment_precision_high
               GL_OES_compressed_ETC1_RGB8_texture GL_OES_EGL_image
               GL_OES_EGL_image_external GL_OES_required_internalformat
               GL_OES_depth_texture GL_OES_get_program_binary
               GL_OES_packed_depth_stencil GL_OES_standard_derivatives
               GL_OES_vertex_array_object GL_OES_egl_sync GL_OES_texture_npot
               GL_EXT_discard_framebuffer GL_EXT_blend_minmax
               GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture
               GL_EXT_shader_texture_lod GL_EXT_texture_format_BGRA8888
               GL_EXT_texture_rg GL_IMG_shader_binary
               GL_IMG_texture_compression_pvrtc
               GL_IMG_texture_compression_pvrtc2 GL_IMG_texture_npot
               GL_IMG_texture_format_BGRA8888 GL_IMG_read_format
               GL_IMG_program_binary GL_IMG_uniform_buffer_object
               GL_IMG_multisampled_render_to_texture
[17:05:54.336] GL ES 2 renderer features:
               read-back format: RGBA
               wl_shm sub-image to texture: no
               EGL Wayland extension: yes
[17:05:54.336] Chosen EGL config details:
               RGBA bits: 8 8 8 8
               swap interval range: 0 - 5
[17:05:54.337] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
[17:05:54.337] Loading module '/usr/local/lib/weston/desktop-shell.so'
[17:05:54.356] launching '/usr/local/libexec/weston-desktop-shell'


Then from Weston, I just run /usr/local/lib/xbmc/xbmc.bin and it works.
It's butterly smooth and doesn't flicker.
Only bug in XBMC is that it freezes when I try to close it, but that happens on the hwcomposer build as well :(

I guess if anyone can fix the XBMC closing issue, we can build the Hawaii or Enlightment desktop with Chromium browser.
Then we'll have an accelerated desktop with a browser and media player :D
Or you can upgrade to the latest Ubuntu beta and give the Mir display server a try, it features a hwcomposer backend so you don't need run Qtwayland for it :)
Unfortunately gnome-shell still requires a drm/kms driver for output so that won't work for now.

EDIT: I've attached the headers for libhybris.
I think you need to rebuild the qt5-qpa-hwcomposer, libhybris and weston using these.


+ Original discussion postings: starting from viewtopic.php?f=60&t=4475&start=220#p49594

+ Fully compiled image by @MastaG with Fedora21: viewtopic.php?f=62&t=6221#p49795 (direct link: https://mega.co.nz/#!S5FUhKrQ!4IUUupIK9 ... jMxjK2Gu-M)

+ Android headers link: download/file.php?id=1227

+ my weston config options:
Code: Select all
WESTON_NATIVE_BACKEND="wayland-backend.so" ./configure --prefix=/usr/local --enable-demo-clients-install --enable-weston-launch --enable-clients --disable-rpi-compositor --enable-wayland-compositor --enable-headless-compositor --enable-setuid-install --enable-xwayland --enable-xwayland-test --enable-fbdev-compositor --enable-screen-sharing


+ QTWayland full diff (requires more changes than above):
Code: Select all
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
index 298dd7d..dc15245 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
@@ -70,7 +70,7 @@ public:
 
     void bindContentFBO();
 
-    void invalidateSurface() Q_DECL_OVERRIDE;
+    void invalidateSurface();
 
 private:
     QWaylandEglClientBufferIntegration *m_clientBufferIntegration;
diff --git a/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.h b/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.h
index 35a3e80..07d7801 100644
--- a/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.h
+++ b/src/hardwareintegration/compositor/libhybris-egl-server/libhybriseglserverbufferintegration.h
@@ -64,8 +64,8 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGL
 
 #ifndef EGL_HYBRIS_native_buffer
 typedef EGLBoolean (EGLAPIENTRYP PFNEGLHYBRISCREATENATIVEBUFFERPROC)(EGLint width, EGLint height, EGLint usage, EGLint format, EGLint *stride, EGLClientBuffer *buffer);
-typedef void (EGLAPIENTRYP PFNEGLHYBRISGETNATIVEBUFFERINFOPROC)(EGLClientBuffer buffer, int *num_ints, int *num_fds);
-typedef void (EGLAPIENTRYP PFNEGLHYBRISSERIALIZENATIVEBUFFERPROC)(EGLClientBuffer buffer, int *ints, int *fds);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLHYBRISGETNATIVEBUFFERINFOPROC)(EGLClientBuffer buffer, int *num_ints, int *num_fds);
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLHYBRISSERIALIZENATIVEBUFFERPROC)(EGLClientBuffer buffer, int *ints, int *fds);
 #endif
 
 #ifndef GL_OES_EGL_image


+ QT5-hwcomposer plugin fix for QT5.3.1: https://github.com/aosp-hybris/qt5-qpa- ... 95bf5c9ff0

+ how to run stuff:
Code: Select all
cd /usr/local/Qt-5.2.1/examples/qtwayland/qml-compositor
EGL_PLATFORM=hwcomposer ./qml-compositor -platform hwcomposer -plugin EvdevMouse -plugin EvdevKeyboard &

# weston:
EGL_PLATFORM=wayland weston -Swayland-1 --fullscreen --width=1920 --height=1080 --display=wayland-0

# xbmc - you can start from weston normally, or directly on qml-compositor with:
EGL_PLATFORM=wayland WAYLAND_DISPLAY=wayland-1 /usr/local/lib/xbmc/xbmc.bin —fs -n

#qml code (e.g. minima demo)
EGL_PLATFORM=wayland WAYLAND_DISPLAY=wayland-1 /usr/local/lib/xbmc/xbmc.bin —fs -n


User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART

Re: ODROID XU Projects Status DASHBOARD

Unread postby memeka » Mon Feb 16, 2015 2:59 pm

Qt 5.4.1
Wayland 1.7
Weston 1.7

weston now works correctly and reliably.

EDIT: and maynard too

User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART

Re: ODROID XU Projects Status DASHBOARD

Unread postby memeka » Fri Feb 27, 2015 7:33 pm

Most of the gnome (3.14) apps work, things will be looking even better with gnome 3.16 apps.
In this new screenshot you can see running: gnome file manager, evince pdf reader, gnome-calculator, gedit, gnome photos, and a video playing.
I also got retroarch working ... and a few cores, although it was pretty unreliable because it was transparent and did not work fullscreen.

IMG_1880.JPG
IMG_1880.JPG (166.48 KiB) Viewed 11324 times
User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART

Re: ODROID XU Projects Status DASHBOARD

Unread postby fleixi » Sat Feb 28, 2015 3:42 am

amaising, some month ago i wasnt able to compile the qpa-hwcomposer plugin on qt5.4. is this fixed now and with repo are you using for this?

chould you update the steps to compile wayland and co or must i try it on my own?

i will try my luck this weekend
fleixi
 
Posts: 126
Joined: Sun Apr 27, 2014 3:48 am
languages_spoken: english, german
ODROIDs: XU

Re: ODROID XU Projects Status DASHBOARD

Unread postby memeka » Sat Feb 28, 2015 12:22 pm

you need to get qt5.4 and revert this patch: https://qt.gitorious.org/qt/qtbase/comm ... d420f58502
then you can build qtwayland, and qpa-hwcomposer.
User avatar
memeka
 
Posts: 3529
Joined: Mon May 20, 2013 10:22 am
languages_spoken: english
ODROIDs: XU rev2 + eMMC + UART
U3 + eMMC + IO Shield + UART


Return to Other OS

Who is online

Users browsing this forum: No registered users and 1 guest