mickelson / sfml-pi

SFML on Linux without X11 using DRM/KMS (or dispmanx on RPi0-3)
Other
62 stars 26 forks source link

Add KMS / DRM support for using library outside x on raspberry pi 4 ? #13

Closed joyrider3774 closed 4 years ago

joyrider3774 commented 4 years ago

Hey,

I've seen some code being posted and referenced that uses KMS / DRM to run code outside X for rapsberry pi 4 for example KMS Cube from mesa or some examples dealing with opengles2 / 3 book or this simple example . They run fine outside X on my raspberry pi4.

I think an update to SFML-PI to use KMS / DRM to use the library outside x is all thats needed to make attractmode work on the PI4, it would make a lot of people happy. I have tried mashing up some code but failed miserably as i'm no C/C++ nor a Linux dev and the code if i would get it working eventually would not be release worthy maybe someone else is up for the task ?

joyrider3774 commented 4 years ago

i've placed a bounty on this issue for 50$ on bountysource maybe others will chime in.

https://www.bountysource.com/issues/88176000-add-kms-drm-support-for-using-library-outside-x-on-raspberry-pi-4

I've never used bountysource before but i already payed the 50$ with paypal

mickelson commented 4 years ago

I have opened a pull request implementing DRM for SFML... please test it out and provide feedback.

PR is here: https://github.com/mickelson/sfml-pi/pull/14

joyrider3774 commented 4 years ago

Hi @mickelson

Not sure what i'm doing wrong but getting these results when i run attract

Attract-Mode v2.6.1 (Linux, SFML 2.4.2 +FontConfig +SWF +Curl)
avcodec 58.35.100 / avformat 58.20.100 / swscale 5.3.100 / avutil 56.22.100 / swresample 3.3.100

Config: /home/pi/addonusb/attract/attract.cfg

*** Initializing display: 'Hyperpie Setup'
 - Loaded master romlist 'Attract Mode Setup' in 0 ms (25 entries kept, 0 discarded)
 - Constructed 1 filters in 0 ms (25 comparisons)
Failed to create EGL Surface
Failed to create EGL Surface
Warning: The created OpenGL context does not fully meet the settings that were requested
Requested: version = 1.1 ; depth bits = 0 ; stencil bits = 0 ; AA level = 0 ; core = false ; debug = false ; sRGB = false
Created: version = 0.0 ; depth bits = 0 ; stencil bits = 0 ; AA level = 0 ; core = false ; debug = false ; sRGB = false
Failed to activate the window's context
Failed to activate the window's context
Failed to activate the window's context
Failed to activate the window's context
Failed to activate the window's context
sfml-graphics requires support for OpenGL 1.1 or greater
Ensure that hardware acceleration is enabled if available
Failed to create texture, its internal size is too high (1024x512, maximum is 0x0)
Failed to create texture, its internal size is too high (1x1, maximum is 0x0)
Failed to create texture, its internal size is too high (1x1, maximum is 0x0)
Failed to create texture, its internal size is too high (512x64, maximum is 0x0)
Impossible to create render texture (failed to create the target texture)
Failed to create texture, its internal size is too high (512x64, maximum is 0x0)
Impossible to create render texture (failed to create the target texture)
Failed to create texture, its internal size is too high (128x128, maximum is 0x0)
Failed to create texture, invalid size (0x0)
Failed to create texture, invalid size (0x0)
Failed to create texture, invalid size (0x0)

Then it keeps repeating the failed to create texture, invalid size

Not sure if it's related to my system on the pi4 also had to remove libsfml-dev which i had gotten from raspian repo (i was using a workaround by running attract in X at first)

Still testing i might flash the minimal raspbian version and start over

I compiled sfml-pi using cmake .. -DSFML_DRM=1 and did the other commands. I compiled attract using folllowing command make -j4 USE_MMAL=1 USE_DRM=1

I also tried compiling sfml-pi using cmake .. -DSFML_DRM=1 -DSFML_OPENGL_ES=1

I must be doing something wrong but can't figure out what

mickelson commented 4 years ago

well you are the first to test on a pi4, so I wouldn’t be surprised if there are some hiccups.

your cmake for sfml and make for attractmode look right to me.

it looks like you have the right gbm extension for EGL to work, because I do’t think you would get that far otherwise.

You could try an ldd on attract to confirm what libraries attract is linked to....

On May 30, 2020, at 2:06 PM, Willems Davy notifications@github.com wrote:

 Hi @mickelson

Not sure what i'm doing wrong but getting these results when i run attract

Attract-Mode v2.6.1 (Linux, SFML 2.4.2 +FontConfig +SWF +Curl) avcodec 58.35.100 / avformat 58.20.100 / swscale 5.3.100 / avutil 56.22.100 / swresample 3.3.100

Config: /home/pi/addonusb/attract/attract.cfg

*** Initializing display: 'Hyperpie Setup'

  • Loaded master romlist 'Attract Mode Setup' in 0 ms (25 entries kept, 0 discarded)
  • Constructed 1 filters in 0 ms (25 comparisons) Failed to create EGL Surface Failed to create EGL Surface Warning: The created OpenGL context does not fully meet the settings that were requested Requested: version = 1.1 ; depth bits = 0 ; stencil bits = 0 ; AA level = 0 ; core = false ; debug = false ; sRGB = false Created: version = 0.0 ; depth bits = 0 ; stencil bits = 0 ; AA level = 0 ; core = false ; debug = false ; sRGB = false Failed to activate the window's context Failed to activate the window's context Failed to activate the window's context Failed to activate the window's context Failed to activate the window's context sfml-graphics requires support for OpenGL 1.1 or greater Ensure that hardware acceleration is enabled if available Failed to create texture, its internal size is too high (1024x512, maximum is 0x0) Failed to create texture, its internal size is too high (1x1, maximum is 0x0) Failed to create texture, its internal size is too high (1x1, maximum is 0x0) Failed to create texture, its internal size is too high (512x64, maximum is 0x0) Impossible to create render texture (failed to create the target texture) Failed to create texture, its internal size is too high (512x64, maximum is 0x0) Impossible to create render texture (failed to create the target texture) Failed to create texture, its internal size is too high (128x128, maximum is 0x0) Failed to create texture, invalid size (0x0) Failed to create texture, invalid size (0x0) Failed to create texture, invalid size (0x0) Then it keeps repeating the failed to create texture, invalid size

Not sure if it's related to my system on the pi4 also had to remove libsfml-dev which i had gotten from raspian repo (i was using a workaround by running attract in X at first)

Still testing i might flash the minimal raspbian version and start over

I compiled sfml-pi using cmake .. -DSFML_DRM=1 and did the other commands. I compiled attract using folllowing command make -j4 USE_MMAL=1 USE_DRM=1

I also tried compiling sfml-pi using cmake .. -DSFML_DRM=1 -DSFML_OPENGL_ES=1

I must be doing something wrong but can't figure out what

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

joyrider3774 commented 4 years ago

no problem, I flashed a clean retropie 4.6 image and did the install steps again but gotten the same results. This the ldd config using that system.

I'll try some things, now that there is some code i can play a bit with it and see if i can get different output

 linux-vdso.so.1 (0xbefe2000)
        /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0xb6ed4000)
        libsfml-graphics.so.2.4 => /usr/local/lib/libsfml-graphics.so.2.4 (0xb6e7a000)
        libsfml-window.so.2.4 => /usr/local/lib/libsfml-window.so.2.4 (0xb6e55000)
        libsfml-system.so.2.4 => /usr/local/lib/libsfml-system.so.2.4 (0xb6e3c000)
        libjpeg.so.8 => /usr/lib/arm-linux-gnueabihf/libjpeg.so.8 (0xb6df9000)
        libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6dce000)
        libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6da4000)
        libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6d91000)
        libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xb6d04000)
        libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xb6c61000)
        libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0xb6c42000)
        libgbm.so.1 => /usr/lib/arm-linux-gnueabihf/libgbm.so.1 (0xb6c26000)
        libcurl.so.4 => /usr/lib/arm-linux-gnueabihf/libcurl.so.4 (0xb6ba2000)
        libavformat.so.58 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavformat.so.58 (0xb6979000)
        libavcodec.so.58 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavcodec.so.58 (0xb55fe000)
        libavutil.so.56 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavutil.so.56 (0xb5575000)
        libswscale.so.5 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswscale.so.5 (0xb54fa000)
        libopenal.so.1 => /usr/lib/arm-linux-gnueabihf/libopenal.so.1 (0xb5413000)
        libswresample.so.3 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswresample.so.3 (0xb53ed000)
        libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb52a6000)
        libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb5224000)
        libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb51f7000)
        libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb50a9000)
        librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb5092000)
        libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0xb5073000)
        libudev.so.1 => /lib/arm-linux-gnueabihf/libudev.so.1 (0xb5043000)
        /lib/ld-linux-armhf.so.3 (0xb6ee9000)
        libGLdispatch.so.0 => /usr/lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xb4fc4000)
        libGLX.so.0 => /usr/lib/arm-linux-gnueabihf/libGLX.so.0 (0xb4fa5000)
        libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0xb4f69000)
        libwayland-server.so.0 => /usr/lib/arm-linux-gnueabihf/libwayland-server.so.0 (0xb4f4c000)
        libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0xb4f0b000)
        libnghttp2.so.14 => /usr/lib/arm-linux-gnueabihf/libnghttp2.so.14 (0xb4edc000)
        libidn2.so.0 => /usr/lib/arm-linux-gnueabihf/libidn2.so.0 (0xb4eb0000)
        librtmp.so.1 => /usr/lib/arm-linux-gnueabihf/librtmp.so.1 (0xb4e87000)
        libssh2.so.1 => /usr/lib/arm-linux-gnueabihf/libssh2.so.1 (0xb4e51000)
        libpsl.so.5 => /usr/lib/arm-linux-gnueabihf/libpsl.so.5 (0xb4e31000)
        libssl.so.1.1 => /usr/lib/arm-linux-gnueabihf/libssl.so.1.1 (0xb4db2000)
        libcrypto.so.1.1 => /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1 (0xb4b99000)
        libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0xb4b4f000)
        libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0xb4a94000)
        libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0xb4a54000)
        libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0xb4a41000)
        libldap_r-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/libldap_r-2.4.so.2 (0xb49ec000)
        liblber-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/liblber-2.4.so.2 (0xb49d0000)
        libxml2.so.2 => /usr/lib/arm-linux-gnueabihf/libxml2.so.2 (0xb4853000)
        libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xb4833000)
        libgme.so.0 => /usr/lib/arm-linux-gnueabihf/libgme.so.0 (0xb47e5000)
        libopenmpt.so.0 => /usr/lib/arm-linux-gnueabihf/libopenmpt.so.0 (0xb4627000)
        libchromaprint.so.1 => /usr/lib/arm-linux-gnueabihf/libchromaprint.so.1 (0xb4606000)
        libbluray.so.2 => /usr/lib/arm-linux-gnueabihf/libbluray.so.2 (0xb45b0000)
        libgnutls.so.30 => /usr/lib/arm-linux-gnueabihf/libgnutls.so.30 (0xb440d000)
        libssh-gcrypt.so.4 => /usr/lib/arm-linux-gnueabihf/libssh-gcrypt.so.4 (0xb438e000)
        libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0xb4378000)
        libvcos.so => /opt/vc/lib/libvcos.so (0xb435f000)
        libvpx.so.5 => /usr/lib/arm-linux-gnueabihf/libvpx.so.5 (0xb425c000)
        libwebpmux.so.3 => /usr/lib/arm-linux-gnueabihf/libwebpmux.so.3 (0xb4244000)
        libwebp.so.6 => /usr/lib/arm-linux-gnueabihf/libwebp.so.6 (0xb41e0000)
        liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0xb41af000)
        libmmal_core.so => /opt/vc/lib/libmmal_core.so (0xb4191000)
        libmmal_util.so => /opt/vc/lib/libmmal_util.so (0xb4171000)
        libmmal_vc_client.so => /opt/vc/lib/libmmal_vc_client.so (0xb4156000)
        libbcm_host.so => /opt/vc/lib/libbcm_host.so (0xb412c000)
        libvcsm.so => /opt/vc/lib/libvcsm.so (0xb4112000)
        librsvg-2.so.2 => /usr/lib/arm-linux-gnueabihf/librsvg-2.so.2 (0xb3d04000)
        libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0xb3ca7000)
        libglib-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xb3b97000)
        libcairo.so.2 => /usr/lib/arm-linux-gnueabihf/libcairo.so.2 (0xb3a9e000)
        libzvbi.so.0 => /usr/lib/arm-linux-gnueabihf/libzvbi.so.0 (0xb3a1b000)
        libsnappy.so.1 => /usr/lib/arm-linux-gnueabihf/libsnappy.so.1 (0xb3a04000)
        libaom.so.0 => /usr/lib/arm-linux-gnueabihf/libaom.so.0 (0xb3708000)
        libcodec2.so.0.8.1 => /usr/lib/arm-linux-gnueabihf/libcodec2.so.0.8.1 (0xb369f000)
        libgsm.so.1 => /usr/lib/arm-linux-gnueabihf/libgsm.so.1 (0xb3684000)
        libmp3lame.so.0 => /usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 (0xb3608000)
        libopenjp2.so.7 => /usr/lib/arm-linux-gnueabihf/libopenjp2.so.7 (0xb35ad000)
        libopus.so.0 => /usr/lib/arm-linux-gnueabihf/libopus.so.0 (0xb354e000)
        libshine.so.3 => /usr/lib/arm-linux-gnueabihf/libshine.so.3 (0xb3534000)
        libspeex.so.1 => /usr/lib/arm-linux-gnueabihf/libspeex.so.1 (0xb350d000)
        libtheoraenc.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoraenc.so.1 (0xb34cc000)
        libtheoradec.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoradec.so.1 (0xb34a4000)
        libtwolame.so.0 => /usr/lib/arm-linux-gnueabihf/libtwolame.so.0 (0xb3474000)
        libvorbis.so.0 => /usr/lib/arm-linux-gnueabihf/libvorbis.so.0 (0xb343d000)
        libvorbisenc.so.2 => /usr/lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0xb33ab000)
        libwavpack.so.1 => /usr/lib/arm-linux-gnueabihf/libwavpack.so.1 (0xb3377000)
        libx264.so.155 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libx264.so.155 (0xb312b000)
        libx265.so.165 => /usr/lib/arm-linux-gnueabihf/libx265.so.165 (0xb2e71000)
        libxvidcore.so.4 => /usr/lib/arm-linux-gnueabihf/libxvidcore.so.4 (0xb2d81000)
        libva.so.2 => /usr/lib/arm-linux-gnueabihf/libva.so.2 (0xb2d50000)
        libva-drm.so.2 => /usr/lib/arm-linux-gnueabihf/libva-drm.so.2 (0xb2d3d000)
        libva-x11.so.2 => /usr/lib/arm-linux-gnueabihf/libva-x11.so.2 (0xb2d28000)
        libvdpau.so.1 => /usr/lib/arm-linux-gnueabihf/libvdpau.so.1 (0xb2d14000)
        libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0xb2bf2000)
        libsndio.so.7.0 => /usr/lib/arm-linux-gnueabihf/libsndio.so.7.0 (0xb2bd3000)
        libatomic.so.1 => /usr/lib/arm-linux-gnueabihf/libatomic.so.1 (0xb2bba000)
        libsoxr.so.0 => /usr/lib/arm-linux-gnueabihf/libsoxr.so.0 (0xb2b58000)
        libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0xb2b40000)
        libunistring.so.2 => /usr/lib/arm-linux-gnueabihf/libunistring.so.2 (0xb29c2000)
        libhogweed.so.4 => /usr/lib/arm-linux-gnueabihf/libhogweed.so.4 (0xb2983000)
        libnettle.so.6 => /usr/lib/arm-linux-gnueabihf/libnettle.so.6 (0xb293f000)
        libgmp.so.10 => /usr/lib/arm-linux-gnueabihf/libgmp.so.10 (0xb28c6000)
        libgcrypt.so.20 => /lib/arm-linux-gnueabihf/libgcrypt.so.20 (0xb27ec000)
        libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0xb27d2000)
        libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0xb27be000)
        libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xb279a000)
        libsasl2.so.2 => /usr/lib/arm-linux-gnueabihf/libsasl2.so.2 (0xb2773000)
        libicui18n.so.63 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.63 (0xb2525000)
        libicuuc.so.63 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.63 (0xb239d000)
        libicudata.so.63 => /usr/lib/arm-linux-gnueabihf/libicudata.so.63 (0xb099f000)
        libmpg123.so.0 => /usr/lib/arm-linux-gnueabihf/libmpg123.so.0 (0xb0942000)
        libvorbisfile.so.3 => /usr/lib/arm-linux-gnueabihf/libvorbisfile.so.3 (0xb092a000)
        libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0xb08e2000)
        libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0xb07dd000)
        libtasn1.so.6 => /usr/lib/arm-linux-gnueabihf/libtasn1.so.6 (0xb07bd000)
        libgdk_pixbuf-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgdk_pixbuf-2.0.so.0 (0xb078b000)
        libgio-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgio-2.0.so.0 (0xb060f000)
        libpangocairo-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangocairo-1.0.so.0 (0xb05f2000)
        libpangoft2-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangoft2-1.0.so.0 (0xb05d0000)
        libpango-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpango-1.0.so.0 (0xb0583000)
        libcroco-0.6.so.3 => /usr/lib/arm-linux-gnueabihf/libcroco-0.6.so.3 (0xb0541000)
        libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb04ca000)
        libpixman-1.so.0 => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 (0xb03ef000)
        libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0xb03dc000)
        libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xb03ad000)
        libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0xb0392000)
        libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xb0379000)
        libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0xb0358000)
        libogg.so.0 => /usr/lib/arm-linux-gnueabihf/libogg.so.0 (0xb0343000)
        libXfixes.so.3 => /usr/lib/arm-linux-gnueabihf/libXfixes.so.3 (0xb032e000)
        libasound.so.2 => /usr/lib/arm-linux-gnueabihf/libasound.so.2 (0xb024d000)
        libbsd.so.0 => /usr/lib/arm-linux-gnueabihf/libbsd.so.0 (0xb0225000)
        libgomp.so.1 => /usr/lib/arm-linux-gnueabihf/libgomp.so.1 (0xb01ed000)
        libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0xb01c3000)
        libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0xb01ac000)
        libgmodule-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgmodule-2.0.so.0 (0xb0196000)
        libmount.so.1 => /lib/arm-linux-gnueabihf/libmount.so.1 (0xb0135000)
        libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0xb0103000)
        libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0xb0005000)
        libthai.so.0 => /usr/lib/arm-linux-gnueabihf/libthai.so.0 (0xaffed000)
        libfribidi.so.0 => /usr/lib/arm-linux-gnueabihf/libfribidi.so.0 (0xaffc3000)
        libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0xaffb0000)
        libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0xaff9b000)
        libblkid.so.1 => /lib/arm-linux-gnueabihf/libblkid.so.1 (0xaff43000)
        libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0xaff10000)
        libdatrie.so.1 => /usr/lib/arm-linux-gnueabihf/libdatrie.so.1 (0xafefa000)
mickelson commented 4 years ago

you are picking up some x11 libraries in there... hmmm:

libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0xb03dc000) libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xb03ad000) libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0xb0392000) libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xb0379000)

On Sat, May 30, 2020 at 3:12 PM Willems Davy notifications@github.com wrote:

no problem, I flashed a clean retropie 4.6 image and did the install steps again but gotten the same results. This the ldd config using that system.

I'll try some things, now that there is some code i can play a bit with it and see if i can get different output

linux-vdso.so.1 (0xbefe2000) /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0xb6ed4000) libsfml-graphics.so.2.4 => /usr/local/lib/libsfml-graphics.so.2.4 (0xb6e7a000) libsfml-window.so.2.4 => /usr/local/lib/libsfml-window.so.2.4 (0xb6e55000) libsfml-system.so.2.4 => /usr/local/lib/libsfml-system.so.2.4 (0xb6e3c000) libjpeg.so.8 => /usr/lib/arm-linux-gnueabihf/libjpeg.so.8 (0xb6df9000) libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6dce000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6da4000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6d91000) libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xb6d04000) libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xb6c61000) libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0xb6c42000) libgbm.so.1 => /usr/lib/arm-linux-gnueabihf/libgbm.so.1 (0xb6c26000) libcurl.so.4 => /usr/lib/arm-linux-gnueabihf/libcurl.so.4 (0xb6ba2000) libavformat.so.58 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavformat.so.58 (0xb6979000) libavcodec.so.58 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavcodec.so.58 (0xb55fe000) libavutil.so.56 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavutil.so.56 (0xb5575000) libswscale.so.5 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswscale.so.5 (0xb54fa000) libopenal.so.1 => /usr/lib/arm-linux-gnueabihf/libopenal.so.1 (0xb5413000) libswresample.so.3 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswresample.so.3 (0xb53ed000) libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb52a6000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb5224000) libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb51f7000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb50a9000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb5092000) libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0xb5073000) libudev.so.1 => /lib/arm-linux-gnueabihf/libudev.so.1 (0xb5043000) /lib/ld-linux-armhf.so.3 (0xb6ee9000) libGLdispatch.so.0 => /usr/lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xb4fc4000) libGLX.so.0 => /usr/lib/arm-linux-gnueabihf/libGLX.so.0 (0xb4fa5000) libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0xb4f69000) libwayland-server.so.0 => /usr/lib/arm-linux-gnueabihf/libwayland-server.so.0 (0xb4f4c000) libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0xb4f0b000) libnghttp2.so.14 => /usr/lib/arm-linux-gnueabihf/libnghttp2.so.14 (0xb4edc000) libidn2.so.0 => /usr/lib/arm-linux-gnueabihf/libidn2.so.0 (0xb4eb0000) librtmp.so.1 => /usr/lib/arm-linux-gnueabihf/librtmp.so.1 (0xb4e87000) libssh2.so.1 => /usr/lib/arm-linux-gnueabihf/libssh2.so.1 (0xb4e51000) libpsl.so.5 => /usr/lib/arm-linux-gnueabihf/libpsl.so.5 (0xb4e31000) libssl.so.1.1 => /usr/lib/arm-linux-gnueabihf/libssl.so.1.1 (0xb4db2000) libcrypto.so.1.1 => /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1 (0xb4b99000) libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0xb4b4f000) libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0xb4a94000) libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0xb4a54000) libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0xb4a41000) libldap_r-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/libldap_r-2.4.so.2 (0xb49ec000) liblber-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/liblber-2.4.so.2 (0xb49d0000) libxml2.so.2 => /usr/lib/arm-linux-gnueabihf/libxml2.so.2 (0xb4853000) libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xb4833000) libgme.so.0 => /usr/lib/arm-linux-gnueabihf/libgme.so.0 (0xb47e5000) libopenmpt.so.0 => /usr/lib/arm-linux-gnueabihf/libopenmpt.so.0 (0xb4627000) libchromaprint.so.1 => /usr/lib/arm-linux-gnueabihf/libchromaprint.so.1 (0xb4606000) libbluray.so.2 => /usr/lib/arm-linux-gnueabihf/libbluray.so.2 (0xb45b0000) libgnutls.so.30 => /usr/lib/arm-linux-gnueabihf/libgnutls.so.30 (0xb440d000) libssh-gcrypt.so.4 => /usr/lib/arm-linux-gnueabihf/libssh-gcrypt.so.4 (0xb438e000) libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0xb4378000) libvcos.so => /opt/vc/lib/libvcos.so (0xb435f000) libvpx.so.5 => /usr/lib/arm-linux-gnueabihf/libvpx.so.5 (0xb425c000) libwebpmux.so.3 => /usr/lib/arm-linux-gnueabihf/libwebpmux.so.3 (0xb4244000) libwebp.so.6 => /usr/lib/arm-linux-gnueabihf/libwebp.so.6 (0xb41e0000) liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0xb41af000) libmmal_core.so => /opt/vc/lib/libmmal_core.so (0xb4191000) libmmal_util.so => /opt/vc/lib/libmmal_util.so (0xb4171000) libmmal_vc_client.so => /opt/vc/lib/libmmal_vc_client.so (0xb4156000) libbcm_host.so => /opt/vc/lib/libbcm_host.so (0xb412c000) libvcsm.so => /opt/vc/lib/libvcsm.so (0xb4112000) librsvg-2.so.2 => /usr/lib/arm-linux-gnueabihf/librsvg-2.so.2 (0xb3d04000) libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0xb3ca7000) libglib-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xb3b97000) libcairo.so.2 => /usr/lib/arm-linux-gnueabihf/libcairo.so.2 (0xb3a9e000) libzvbi.so.0 => /usr/lib/arm-linux-gnueabihf/libzvbi.so.0 (0xb3a1b000) libsnappy.so.1 => /usr/lib/arm-linux-gnueabihf/libsnappy.so.1 (0xb3a04000) libaom.so.0 => /usr/lib/arm-linux-gnueabihf/libaom.so.0 (0xb3708000) libcodec2.so.0.8.1 => /usr/lib/arm-linux-gnueabihf/libcodec2.so.0.8.1 (0xb369f000) libgsm.so.1 => /usr/lib/arm-linux-gnueabihf/libgsm.so.1 (0xb3684000) libmp3lame.so.0 => /usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 (0xb3608000) libopenjp2.so.7 => /usr/lib/arm-linux-gnueabihf/libopenjp2.so.7 (0xb35ad000) libopus.so.0 => /usr/lib/arm-linux-gnueabihf/libopus.so.0 (0xb354e000) libshine.so.3 => /usr/lib/arm-linux-gnueabihf/libshine.so.3 (0xb3534000) libspeex.so.1 => /usr/lib/arm-linux-gnueabihf/libspeex.so.1 (0xb350d000) libtheoraenc.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoraenc.so.1 (0xb34cc000) libtheoradec.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoradec.so.1 (0xb34a4000) libtwolame.so.0 => /usr/lib/arm-linux-gnueabihf/libtwolame.so.0 (0xb3474000) libvorbis.so.0 => /usr/lib/arm-linux-gnueabihf/libvorbis.so.0 (0xb343d000) libvorbisenc.so.2 => /usr/lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0xb33ab000) libwavpack.so.1 => /usr/lib/arm-linux-gnueabihf/libwavpack.so.1 (0xb3377000) libx264.so.155 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libx264.so.155 (0xb312b000) libx265.so.165 => /usr/lib/arm-linux-gnueabihf/libx265.so.165 (0xb2e71000) libxvidcore.so.4 => /usr/lib/arm-linux-gnueabihf/libxvidcore.so.4 (0xb2d81000) libva.so.2 => /usr/lib/arm-linux-gnueabihf/libva.so.2 (0xb2d50000) libva-drm.so.2 => /usr/lib/arm-linux-gnueabihf/libva-drm.so.2 (0xb2d3d000) libva-x11.so.2 => /usr/lib/arm-linux-gnueabihf/libva-x11.so.2 (0xb2d28000) libvdpau.so.1 => /usr/lib/arm-linux-gnueabihf/libvdpau.so.1 (0xb2d14000) libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0xb2bf2000) libsndio.so.7.0 => /usr/lib/arm-linux-gnueabihf/libsndio.so.7.0 (0xb2bd3000) libatomic.so.1 => /usr/lib/arm-linux-gnueabihf/libatomic.so.1 (0xb2bba000) libsoxr.so.0 => /usr/lib/arm-linux-gnueabihf/libsoxr.so.0 (0xb2b58000) libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0xb2b40000) libunistring.so.2 => /usr/lib/arm-linux-gnueabihf/libunistring.so.2 (0xb29c2000) libhogweed.so.4 => /usr/lib/arm-linux-gnueabihf/libhogweed.so.4 (0xb2983000) libnettle.so.6 => /usr/lib/arm-linux-gnueabihf/libnettle.so.6 (0xb293f000) libgmp.so.10 => /usr/lib/arm-linux-gnueabihf/libgmp.so.10 (0xb28c6000) libgcrypt.so.20 => /lib/arm-linux-gnueabihf/libgcrypt.so.20 (0xb27ec000) libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0xb27d2000) libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0xb27be000) libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xb279a000) libsasl2.so.2 => /usr/lib/arm-linux-gnueabihf/libsasl2.so.2 (0xb2773000) libicui18n.so.63 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.63 (0xb2525000) libicuuc.so.63 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.63 (0xb239d000) libicudata.so.63 => /usr/lib/arm-linux-gnueabihf/libicudata.so.63 (0xb099f000) libmpg123.so.0 => /usr/lib/arm-linux-gnueabihf/libmpg123.so.0 (0xb0942000) libvorbisfile.so.3 => /usr/lib/arm-linux-gnueabihf/libvorbisfile.so.3 (0xb092a000) libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0xb08e2000) libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0xb07dd000) libtasn1.so.6 => /usr/lib/arm-linux-gnueabihf/libtasn1.so.6 (0xb07bd000) libgdk_pixbuf-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgdk_pixbuf-2.0.so.0 (0xb078b000) libgio-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgio-2.0.so.0 (0xb060f000) libpangocairo-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangocairo-1.0.so.0 (0xb05f2000) libpangoft2-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangoft2-1.0.so.0 (0xb05d0000) libpango-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpango-1.0.so.0 (0xb0583000) libcroco-0.6.so.3 => /usr/lib/arm-linux-gnueabihf/libcroco-0.6.so.3 (0xb0541000) libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb04ca000) libpixman-1.so.0 => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 (0xb03ef000) libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0xb03dc000) libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xb03ad000) libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0xb0392000) libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xb0379000) libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0xb0358000) libogg.so.0 => /usr/lib/arm-linux-gnueabihf/libogg.so.0 (0xb0343000) libXfixes.so.3 => /usr/lib/arm-linux-gnueabihf/libXfixes.so.3 (0xb032e000) libasound.so.2 => /usr/lib/arm-linux-gnueabihf/libasound.so.2 (0xb024d000) libbsd.so.0 => /usr/lib/arm-linux-gnueabihf/libbsd.so.0 (0xb0225000) libgomp.so.1 => /usr/lib/arm-linux-gnueabihf/libgomp.so.1 (0xb01ed000) libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0xb01c3000) libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0xb01ac000) libgmodule-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgmodule-2.0.so.0 (0xb0196000) libmount.so.1 => /lib/arm-linux-gnueabihf/libmount.so.1 (0xb0135000) libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0xb0103000) libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0xb0005000) libthai.so.0 => /usr/lib/arm-linux-gnueabihf/libthai.so.0 (0xaffed000) libfribidi.so.0 => /usr/lib/arm-linux-gnueabihf/libfribidi.so.0 (0xaffc3000) libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0xaffb0000) libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0xaff9b000) libblkid.so.1 => /lib/arm-linux-gnueabihf/libblkid.so.1 (0xaff43000) libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0xaff10000) libdatrie.so.1 => /usr/lib/arm-linux-gnueabihf/libdatrie.so.1 (0xafefa000)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mickelson/sfml-pi/issues/13#issuecomment-636391697, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDN6Q2IIT26TBIUEC7DOA3RUGAERANCNFSM4KRFFGYQ .

mickelson commented 4 years ago

oh never mind, I see I have them here too on my build.

On Sat, May 30, 2020 at 3:19 PM Andrew Mickelson andrew.mickelson@gmail.com wrote:

you are picking up some x11 libraries in there... hmmm:

libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0xb03dc000) libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xb03ad000) libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0xb0392000) libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xb0379000)

On Sat, May 30, 2020 at 3:12 PM Willems Davy notifications@github.com wrote:

no problem, I flashed a clean retropie 4.6 image and did the install steps again but gotten the same results. This the ldd config using that system.

I'll try some things, now that there is some code i can play a bit with it and see if i can get different output

linux-vdso.so.1 (0xbefe2000) /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0xb6ed4000) libsfml-graphics.so.2.4 => /usr/local/lib/libsfml-graphics.so.2.4 (0xb6e7a000) libsfml-window.so.2.4 => /usr/local/lib/libsfml-window.so.2.4 (0xb6e55000) libsfml-system.so.2.4 => /usr/local/lib/libsfml-system.so.2.4 (0xb6e3c000) libjpeg.so.8 => /usr/lib/arm-linux-gnueabihf/libjpeg.so.8 (0xb6df9000) libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6dce000) libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6da4000) libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6d91000) libGL.so.1 => /usr/lib/arm-linux-gnueabihf/libGL.so.1 (0xb6d04000) libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xb6c61000) libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0xb6c42000) libgbm.so.1 => /usr/lib/arm-linux-gnueabihf/libgbm.so.1 (0xb6c26000) libcurl.so.4 => /usr/lib/arm-linux-gnueabihf/libcurl.so.4 (0xb6ba2000) libavformat.so.58 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavformat.so.58 (0xb6979000) libavcodec.so.58 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavcodec.so.58 (0xb55fe000) libavutil.so.56 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libavutil.so.56 (0xb5575000) libswscale.so.5 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswscale.so.5 (0xb54fa000) libopenal.so.1 => /usr/lib/arm-linux-gnueabihf/libopenal.so.1 (0xb5413000) libswresample.so.3 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libswresample.so.3 (0xb53ed000) libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb52a6000) libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb5224000) libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb51f7000) libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb50a9000) librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb5092000) libEGL.so.1 => /usr/lib/arm-linux-gnueabihf/libEGL.so.1 (0xb5073000) libudev.so.1 => /lib/arm-linux-gnueabihf/libudev.so.1 (0xb5043000) /lib/ld-linux-armhf.so.3 (0xb6ee9000) libGLdispatch.so.0 => /usr/lib/arm-linux-gnueabihf/libGLdispatch.so.0 (0xb4fc4000) libGLX.so.0 => /usr/lib/arm-linux-gnueabihf/libGLX.so.0 (0xb4fa5000) libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0xb4f69000) libwayland-server.so.0 => /usr/lib/arm-linux-gnueabihf/libwayland-server.so.0 (0xb4f4c000) libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0xb4f0b000) libnghttp2.so.14 => /usr/lib/arm-linux-gnueabihf/libnghttp2.so.14 (0xb4edc000) libidn2.so.0 => /usr/lib/arm-linux-gnueabihf/libidn2.so.0 (0xb4eb0000) librtmp.so.1 => /usr/lib/arm-linux-gnueabihf/librtmp.so.1 (0xb4e87000) libssh2.so.1 => /usr/lib/arm-linux-gnueabihf/libssh2.so.1 (0xb4e51000) libpsl.so.5 => /usr/lib/arm-linux-gnueabihf/libpsl.so.5 (0xb4e31000) libssl.so.1.1 => /usr/lib/arm-linux-gnueabihf/libssl.so.1.1 (0xb4db2000) libcrypto.so.1.1 => /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.1 (0xb4b99000) libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0xb4b4f000) libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0xb4a94000) libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0xb4a54000) libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0xb4a41000) libldap_r-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/libldap_r-2.4.so.2 (0xb49ec000) liblber-2.4.so.2 => /usr/lib/arm-linux-gnueabihf/liblber-2.4.so.2 (0xb49d0000) libxml2.so.2 => /usr/lib/arm-linux-gnueabihf/libxml2.so.2 (0xb4853000) libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0xb4833000) libgme.so.0 => /usr/lib/arm-linux-gnueabihf/libgme.so.0 (0xb47e5000) libopenmpt.so.0 => /usr/lib/arm-linux-gnueabihf/libopenmpt.so.0 (0xb4627000) libchromaprint.so.1 => /usr/lib/arm-linux-gnueabihf/libchromaprint.so.1 (0xb4606000) libbluray.so.2 => /usr/lib/arm-linux-gnueabihf/libbluray.so.2 (0xb45b0000) libgnutls.so.30 => /usr/lib/arm-linux-gnueabihf/libgnutls.so.30 (0xb440d000) libssh-gcrypt.so.4 => /usr/lib/arm-linux-gnueabihf/libssh-gcrypt.so.4 (0xb438e000) libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0xb4378000) libvcos.so => /opt/vc/lib/libvcos.so (0xb435f000) libvpx.so.5 => /usr/lib/arm-linux-gnueabihf/libvpx.so.5 (0xb425c000) libwebpmux.so.3 => /usr/lib/arm-linux-gnueabihf/libwebpmux.so.3 (0xb4244000) libwebp.so.6 => /usr/lib/arm-linux-gnueabihf/libwebp.so.6 (0xb41e0000) liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0xb41af000) libmmal_core.so => /opt/vc/lib/libmmal_core.so (0xb4191000) libmmal_util.so => /opt/vc/lib/libmmal_util.so (0xb4171000) libmmal_vc_client.so => /opt/vc/lib/libmmal_vc_client.so (0xb4156000) libbcm_host.so => /opt/vc/lib/libbcm_host.so (0xb412c000) libvcsm.so => /opt/vc/lib/libvcsm.so (0xb4112000) librsvg-2.so.2 => /usr/lib/arm-linux-gnueabihf/librsvg-2.so.2 (0xb3d04000) libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0xb3ca7000) libglib-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0xb3b97000) libcairo.so.2 => /usr/lib/arm-linux-gnueabihf/libcairo.so.2 (0xb3a9e000) libzvbi.so.0 => /usr/lib/arm-linux-gnueabihf/libzvbi.so.0 (0xb3a1b000) libsnappy.so.1 => /usr/lib/arm-linux-gnueabihf/libsnappy.so.1 (0xb3a04000) libaom.so.0 => /usr/lib/arm-linux-gnueabihf/libaom.so.0 (0xb3708000) libcodec2.so.0.8.1 => /usr/lib/arm-linux-gnueabihf/libcodec2.so.0.8.1 (0xb369f000) libgsm.so.1 => /usr/lib/arm-linux-gnueabihf/libgsm.so.1 (0xb3684000) libmp3lame.so.0 => /usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 (0xb3608000) libopenjp2.so.7 => /usr/lib/arm-linux-gnueabihf/libopenjp2.so.7 (0xb35ad000) libopus.so.0 => /usr/lib/arm-linux-gnueabihf/libopus.so.0 (0xb354e000) libshine.so.3 => /usr/lib/arm-linux-gnueabihf/libshine.so.3 (0xb3534000) libspeex.so.1 => /usr/lib/arm-linux-gnueabihf/libspeex.so.1 (0xb350d000) libtheoraenc.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoraenc.so.1 (0xb34cc000) libtheoradec.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoradec.so.1 (0xb34a4000) libtwolame.so.0 => /usr/lib/arm-linux-gnueabihf/libtwolame.so.0 (0xb3474000) libvorbis.so.0 => /usr/lib/arm-linux-gnueabihf/libvorbis.so.0 (0xb343d000) libvorbisenc.so.2 => /usr/lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0xb33ab000) libwavpack.so.1 => /usr/lib/arm-linux-gnueabihf/libwavpack.so.1 (0xb3377000) libx264.so.155 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libx264.so.155 (0xb312b000) libx265.so.165 => /usr/lib/arm-linux-gnueabihf/libx265.so.165 (0xb2e71000) libxvidcore.so.4 => /usr/lib/arm-linux-gnueabihf/libxvidcore.so.4 (0xb2d81000) libva.so.2 => /usr/lib/arm-linux-gnueabihf/libva.so.2 (0xb2d50000) libva-drm.so.2 => /usr/lib/arm-linux-gnueabihf/libva-drm.so.2 (0xb2d3d000) libva-x11.so.2 => /usr/lib/arm-linux-gnueabihf/libva-x11.so.2 (0xb2d28000) libvdpau.so.1 => /usr/lib/arm-linux-gnueabihf/libvdpau.so.1 (0xb2d14000) libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0xb2bf2000) libsndio.so.7.0 => /usr/lib/arm-linux-gnueabihf/libsndio.so.7.0 (0xb2bd3000) libatomic.so.1 => /usr/lib/arm-linux-gnueabihf/libatomic.so.1 (0xb2bba000) libsoxr.so.0 => /usr/lib/arm-linux-gnueabihf/libsoxr.so.0 (0xb2b58000) libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0xb2b40000) libunistring.so.2 => /usr/lib/arm-linux-gnueabihf/libunistring.so.2 (0xb29c2000) libhogweed.so.4 => /usr/lib/arm-linux-gnueabihf/libhogweed.so.4 (0xb2983000) libnettle.so.6 => /usr/lib/arm-linux-gnueabihf/libnettle.so.6 (0xb293f000) libgmp.so.10 => /usr/lib/arm-linux-gnueabihf/libgmp.so.10 (0xb28c6000) libgcrypt.so.20 => /lib/arm-linux-gnueabihf/libgcrypt.so.20 (0xb27ec000) libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0xb27d2000) libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0xb27be000) libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0xb279a000) libsasl2.so.2 => /usr/lib/arm-linux-gnueabihf/libsasl2.so.2 (0xb2773000) libicui18n.so.63 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.63 (0xb2525000) libicuuc.so.63 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.63 (0xb239d000) libicudata.so.63 => /usr/lib/arm-linux-gnueabihf/libicudata.so.63 (0xb099f000) libmpg123.so.0 => /usr/lib/arm-linux-gnueabihf/libmpg123.so.0 (0xb0942000) libvorbisfile.so.3 => /usr/lib/arm-linux-gnueabihf/libvorbisfile.so.3 (0xb092a000) libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0xb08e2000) libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0xb07dd000) libtasn1.so.6 => /usr/lib/arm-linux-gnueabihf/libtasn1.so.6 (0xb07bd000) libgdk_pixbuf-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgdk_pixbuf-2.0.so.0 (0xb078b000) libgio-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgio-2.0.so.0 (0xb060f000) libpangocairo-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangocairo-1.0.so.0 (0xb05f2000) libpangoft2-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangoft2-1.0.so.0 (0xb05d0000) libpango-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpango-1.0.so.0 (0xb0583000) libcroco-0.6.so.3 => /usr/lib/arm-linux-gnueabihf/libcroco-0.6.so.3 (0xb0541000) libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb04ca000) libpixman-1.so.0 => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 (0xb03ef000) libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0xb03dc000) libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0xb03ad000) libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0xb0392000) libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0xb0379000) libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0xb0358000) libogg.so.0 => /usr/lib/arm-linux-gnueabihf/libogg.so.0 (0xb0343000) libXfixes.so.3 => /usr/lib/arm-linux-gnueabihf/libXfixes.so.3 (0xb032e000) libasound.so.2 => /usr/lib/arm-linux-gnueabihf/libasound.so.2 (0xb024d000) libbsd.so.0 => /usr/lib/arm-linux-gnueabihf/libbsd.so.0 (0xb0225000) libgomp.so.1 => /usr/lib/arm-linux-gnueabihf/libgomp.so.1 (0xb01ed000) libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0xb01c3000) libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0xb01ac000) libgmodule-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgmodule-2.0.so.0 (0xb0196000) libmount.so.1 => /lib/arm-linux-gnueabihf/libmount.so.1 (0xb0135000) libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0xb0103000) libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0xb0005000) libthai.so.0 => /usr/lib/arm-linux-gnueabihf/libthai.so.0 (0xaffed000) libfribidi.so.0 => /usr/lib/arm-linux-gnueabihf/libfribidi.so.0 (0xaffc3000) libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0xaffb0000) libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0xaff9b000) libblkid.so.1 => /lib/arm-linux-gnueabihf/libblkid.so.1 (0xaff43000) libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0xaff10000) libdatrie.so.1 => /usr/lib/arm-linux-gnueabihf/libdatrie.so.1 (0xafefa000)

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mickelson/sfml-pi/issues/13#issuecomment-636391697, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABDN6Q2IIT26TBIUEC7DOA3RUGAERANCNFSM4KRFFGYQ .

multigamesystem commented 4 years ago

Hoping we can get a build guide (for non Linux savvy users) soon for this similar to https://github.com/mickelson/attract/wiki/Compiling-on-the-Raspberry-Pi-4-(Raspbian-Buster)

I have tried a few different things but keep ending up with Failed to open X11 display; make sure the DISPLAY environment variable is set correctly Aborted

mickelson commented 4 years ago

no problem, I flashed a clean retropie 4.6 image and did the install steps again but gotten the same results. This the ldd config using that system.

I'll try some things, now that there is some code i can play a bit with it and see if i can get different output

Could you try this edit to src/SFML/Window/Unix/DRM/DRMContext.cpp for me??: Starting on line 91, change

        if ( init_drm( &my_drm,
            NULL,     // device
            "",       // requested mode
            0 ) < 0 ) // vrefresh

to

        if ( init_drm( &my_drm,
            "/dev/dri/card1",     // device
            "",       // requested mode
            0 ) < 0 ) // vrefresh

From this topic, it looks like the code is trying to use the wrong card on the Pi4 (the drm implementation here is based on the kmscube example referenced): https://www.raspberrypi.org/forums/viewtopic.php?t=243707

joyrider3774 commented 4 years ago

@mickelson i tried that yesterday already, it was the first thing i tried but it made no difference the surface still could not be created. I'll play some more today with a clean retropie image. I don't understand all code though but i can try to compare to some other KMS apps code to see if i can spot a difference somewhere. I also tried for testing setting an explicit modestring (3rd parameter) but it made no difference either.

@tonberryhunter try from a clean retropie image, i had that same error if libsmfl-dev from the repos was installed had to sudo apt-get remove libsfml-dev first before it started using the sfml-pi ones. Make sure to supply cmake .. -DSFML_DRM=1 for building sfml-pi the build instructions for that are in the readme.md from sfml-pi repo For building attract make sure to specify make USE_DRM=1 and if you builded ffmpeg with mmal support you also need to add USE_MMAL=1 for mmal hw video decoding to working (to have that option)

joyrider3774 commented 4 years ago

@tonberryhunter these are the build instructions i use starting from clean retropie 4.6 image

sudo apt-get install cmake libflac-dev libogg-dev libvorbis-dev libopenal-dev libjpeg8-dev libfreetype6-dev libudev-dev libdrm-dev libgbm-dev libegl1-mesa-dev

mkdir ~/develop
cd ~/develop

git clone --depth 1 git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
./configure --enable-mmal --disable-debug --enable-shared
make -j4
sudo make install
sudo ldconfig

cd ~/develop
git clone --depth 1 https://github.com/mickelson/sfml-pi.git
cd sfml-pi
mkdir build
cd build
#note for open gl es version add -DSFML_OPENGL_ES=1
cmake .. -DSFML_DRM=1
sudo make -j4 install
sudo ldconfig

cd ~/develop
git clone --depth 1 https://github.com/mickelson/attract attract
cd attract
make -j4 USE_DRM=1 USE_MMAL=1
sudo make install USE_DRM=1 USE_MMAL=1

cd ~; rm -r -f ./develop
joyrider3774 commented 4 years ago

@mickelson i got it to work .... i changed 2 things

  1. added "/dev/dri/card1" as you suggested (have not tested without it)
  2. in getbestconfig changed the requested attributes to the following (note the BLUE, GREEN,RED and Alpha size) i remembered i had to provide those flags to glmark-drm in order for it to display something on the screen and i looked up what they did with in code of glmark-drm and applied to the code. And now it's displaying and running.

I do not however understand the implications of this but it might give you some idea's as to why this works ....

    // Set our video settings constraint
    const EGLint attributes[] = {
        EGL_BUFFER_SIZE, bitsPerPixel,
        EGL_DEPTH_SIZE, settings.depthBits,
        EGL_STENCIL_SIZE, settings.stencilBits,
        EGL_SAMPLE_BUFFERS, settings.antialiasingLevel,

        EGL_BLUE_SIZE, 8,
    EGL_GREEN_SIZE, 8,
        EGL_RED_SIZE, 8,
    EGL_ALPHA_SIZE, 8,

        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
#if defined(SFML_OPENGL_ES)
        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT,
#else
        EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT,
#endif
        EGL_NONE
    };

also noticed i had to run attract with sudo in order for emulators to be started but i remember seeing that somewhere in a commit that this might be a requirement now. It's not a big problem as i can specify the config directory of attract using -c parameter. the only thing i don't know is if the emulators themselves are also started under the root account then when starting attract using sudo attract

joyrider3774 commented 4 years ago

just tested latest commit, launching using just sudo attract without specifyng SFML_DRM_DEVICE still works. It seems the autodetection already takes /dev/dri/card1 to be sure i tested with sudo SFML_DRM_DEVICE="/dev/dri/card0" attract -c /home/pi/.attract and that failed with me. running sudo SFML_DRM_DEVICE="/dev/dri/card1" attract -c /home/pi/.attract also works but specifying it seems is not needed on my pi 4 starting from clean retropie image

Just wondering if the requestmode string shouldn't also be read from a enivironment variable its for requesting a certain resolution but i have not played with it yet.

so for me works out of the box now except the need for sudo in attract but not sure if there is actually a way around that

mickelson commented 4 years ago

ok thanks for the update. I'm going to update the documentation and I'll add the ability to request the mode as well through an environment variable.

Running AM with sudo is ugly ugly ugly but yes short of patching the kernel to allow setting and dropping DRM master without being root I can't think of another option

joyrider3774 commented 4 years ago

i queried on the forums on retropie how they do it with emulation station. Emulation station doesn't have DRM / KMS specific code but they use SDL2 and i'm guessing if it's done on raspberry pi 4 they use the KMS / DRM backend of SDL2 but i'm not sure of that. If that however is the case they also said they stopped the rendering/ disabled output among other things, i inquired for some more info, like source file to see if something similar could be applied to attract. i also noticed SDL kms /DRM backend opens the card device using the extra flag O_CLOEXEC but not sure what it means i tried adding it in but made no difference, so i'll wait on some more input on the forums on retropie

edit: btw don't forget to claim the bounty, issue needs to be closed though in order to be able to make a claim on it

and thanks for taking the time to implement it

multigamesystem commented 4 years ago

@tonberryhunter these are the build instructions i use starting from clean retropie 4.6 image

sudo apt-get install cmake libflac-dev libogg-dev libvorbis-dev libopenal-dev libjpeg8-dev libfreetype6-dev libudev-dev libdrm-dev libgbm-dev libegl1-mesa-dev

mkdir ~/develop
cd ~/develop

git clone --depth 1 git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg
./configure --enable-mmal --disable-debug --enable-shared
make -j4
sudo make install
sudo ldconfig

cd ~/develop
git clone --depth 1 https://github.com/mickelson/sfml-pi.git
cd sfml-pi
mkdir build
cd build
#note for open gl es version add -DSFML_OPENGL_ES=1
cmake .. -DSFML_DRM=1
sudo make -j4 install
sudo ldconfig

cd ~/develop
git clone --depth 1 https://github.com/mickelson/attract attract
cd attract
make -j4 USE_DRM=1 USE_MMAL=1
sudo make install USE_DRM=1 USE_MMAL=1

cd ~; rm -r -f ./develop

So followed your guide here and Attract Mode runs but the display freezes while videos continue to play audibly while the screen is frozen and I can even navigate. It sometimes unfreezes but happens again. Also noted framerate is all over the place in Emulation Station. I'm not sure if thats even related to any of this though.

joyrider3774 commented 4 years ago

@tonberryhunter do you have the fpsmonitor plugin enabled if so disable it in attract.cfg it was causing the same freezes and even segfaults with me (oomek author of fps plugin is aware of this). If videos do not play but you hear sound disable mmal (in settings although it may cause other video's to stutter because you essentially disable hw video decoding then) or make sure your videos are h264 with yuv420p pixel format as thats the only pixelformat ffmpeg with mmal supports for h264. I had to reencode the hyperpie menu art videos as well to yuv420p pixel format. Also emulation station has got nothing todo with all of this. I left attract running over night and it has not crashed so seems stable for me

PS. which layouyts are you using ?

joyrider3774 commented 4 years ago

@mickelson i got more info from the retropie guys, they do use DRM / KMS with SDL2 on raspberry pi 4 and they deinit the video and audio just before starting a game and reinniting it after launch essentially disabling opengl renderer and it seems to work for them. Relevant code part is here https://github.com/RetroPie/EmulationStation/blob/e8069e96b2e6b89322f0a553179c005bcc3e9d2f/es-app/src/FileData.cpp#L26 . I have not looked how SDL2 does the video / audio deinit with drm backend but could the same be achieved with SFML-pi and attract mode for going around requiring the root access and the need to call drmsetmaster / drmdropmaster ?

oomek commented 4 years ago

Tried the latest commits on ArchLinux. AM launches, but there is still an issue when launching emulator

*** Running: /opt/galauncher/galauncher.sh groovymame arcade shinobi -noues -noka -monitor lcd -unevenstretch
Closing Attract-Mode window
execvp(): file='/opt/galauncher/galauncher.sh', argv=[/opt/galauncher/galauncher.sh][groovymame][arcade][shinobi][-noues][-noka][-monitor][lcd][-unevenstretch]
radeon: Failed to get PCI ID, error number -13
DRM/KMS: <0> (init) [ERROR] no crtc found
Updating stats: increment play count by 1 and play time by 1 seconds.
Modifiers failed!
Modifiers failed!
Created Attract-Mode Window: 1280x1024 @ 0,0 [OpenGL surface: 1280x1024 bpp=32]
Resuming frontend after game launch
joyrider3774 commented 4 years ago

for me the workaround to having to use sudo is working on my raspberry pi 4 starting from clean retropie image

oomek commented 4 years ago

Nevermind, it was groovymame throwing that error. It needs root to work under kms and still needs x11 to switch modes. Seems it's not ready yet for DRM.

mickelson commented 4 years ago

Hi could you try updating am to the latest code and then going into the util/linux/drm of the source and doing a “sudo make install” there? This will install a small helper program called attract-drm-helper that is suid root and can be used by attractmode to set and drop the drm master. with this you shouldn’t have to use sudo

On Jun 1, 2020, at 11:26 AM, Willems Davy notifications@github.com wrote:

 for me the workaround to having to use sudo is working on my raspberry pi starting from clean retropie image

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

joyrider3774 commented 4 years ago

@mickelson already did and its working fine now without sudo for me on the rpi4 but have no tested all emulator but retroarch ones did work, and daphne so i'm guessing all is fine now when it's rpi4 concerned

oomek commented 4 years ago

Helper is running fine, no worries.

multigamesystem commented 4 years ago

@tonberryhunter do you have the fpsmonitor plugin enabled if so disable it in attract.cfg it was causing the same freezes and even segfaults with me (oomek author of fps plugin is aware of this). If videos do not play but you hear sound disable mmal (in settings although it may cause other video's to stutter because you essentially disable hw video decoding then) or make sure your videos are h264 with yuv420p pixel format as thats the only pixelformat ffmpeg with mmal supports for h264. I had to reencode the hyperpie menu art videos as well to yuv420p pixel format. Also emulation station has got nothing todo with all of this. I left attract running over night and it has not crashed so seems stable for me

PS. which layouyts are you using ?

Plugin isnt running. What happens is the whole screen freezes while everything else is still running. Like videos play and I can run through menus but nothing is updating on screen. Also Retroarch doesn't seem to launch. Im not using sudo to run Attract.

joyrider3774 commented 4 years ago

@tonberryhunter you need to update everything and also build the helper utility for drm under attract/util/linux/drm (cd to it and type sudo make install) without it won't work and you also need to update to latest attract mode from github so either pull or a do a checkout.

I can't say i have seen that problem yet can you tell me which layouts you use, what resolution etc (4k / full hd something lower). I'm wondering if i can reproduce it somehow if i would be using same layouts (theme)

oomek commented 4 years ago

@tonberryhunter I've pushed a rewrite of the FPS Monitor plugin that should work under DRM: https://github.com/mickelson/attract/pull/621

I have another commit that was proven to eliminate AM freezing on playing videos under Linux. You might want to check it out: https://github.com/mickelson/attract/pull/620

multigamesystem commented 4 years ago

@tonberryhunter you need to update everything and also build the helper utility for drm under attract/util/linux/drm (cd to it and type sudo make install) without it won't work and you also need to update to latest attract mode from github so either pull or a do a checkout.

I can't say i have seen that problem yet can you tell me which layouts you use, what resolution etc (4k / full hd something lower). I'm wondering if i can reproduce it somehow if i would be using same layouts (theme)

I'm using Robospin at 1080p. Ive been running this same build on the Pi 3 for a few years without major issues. That helper utility helped Retroarch is loading now thank you. Still getting freezes that seem to happen when I try to load the menu or pull up another display / system menu.

Here is a video of the bug Im experiencing.

https://drive.google.com/file/d/1zEMR90-MskAM1sG6X7dLQkbaGNl-GTLc/view?usp=sharing

I was running with mmal off during this video. Now I'm doing more testing with it on and I keep getting Segmentaion faults.

joyrider3774 commented 4 years ago

@tonberryhunter do you have gpu_mem set in /boot/config.Txt ? i have a rpi4 with 4gb so i had it set to 512 but might be overkill

multigamesystem commented 4 years ago

@tonberryhunter do you have gpu_mem set in /boot/config.Txt ? i have a rpi4 with 4gb so i had it set to 512 but might be overkill

I've tried several different splits with no change in the behavior. I updated my last post with a link to a video of the bug.

oomek commented 4 years ago

@tonberryhunter Could you check my dev branch and see if it helps for freezing?

change git clone https://github.com/mickelson/attract attract to this git clone -b dev https://github.com/oomek/attract attract

make clean and make as usual

multigamesystem commented 4 years ago

@tonberryhunter Could you check my dev branch and see if it helps for freezing?

change git clone https://github.com/mickelson/attract attract to this git clone -b dev https://github.com/oomek/attract attract

make clean and make as usual

Problem still persists and now I'm noticing some weird flicker/tearing while videos play.

oomek commented 4 years ago

I've also noticed this flicker tearing today. On the baseline AM and in GroovyMame, both under DRM, it must be some parallel undiscovered issue, but hard to catch as it seems very random. Does it show in the whole window area or just on the video?

joolswills commented 4 years ago

I've only just started looking at this, but I'm not sure I'm seeing the full picture so apologies if I've misunderstood.

Having a SUID binary isn't ideal but I'm unsure why there is a need for drmSetMaster/drmDropMaster ?

Is there an issue closing the egl context / reiniting after launching something? I was wondering if this was a workaround without modification of the sgml library API or something else?

Wouldn't it be enough to rejig the code, so that FeWindow can be closed/cleaned up in run_program (in attract) and then re-initialised after or so?

Sorry if I'm missing something.

joyrider3774 commented 4 years ago

@tonberryhunter have you tried disabling mmal decoder in settings to see if that makes a difference with the problem ? i have only experienced it once what you showed in the video and i had to restart attract then but haven't been able to reproduce. I'm not sure if video's have an influence but all my video's are yuv420p pixel format

multigamesystem commented 4 years ago

@tonberryhunter have you tried disabling mmal decoder in settings to see if that makes a difference with the problem ? i have only experienced it once what you showed in the video and i had to restart attract then but haven't been able to reproduce. I'm not sure if video's have an influence but all my video's are yuv420p pixel format

I have tried disabling the mmal decoder no difference. The snaps are mostly from EmuMovies. Yes they are yuv420p. Attract Mode freezes when loading up a new display or when loading up a menu with tab. I dont think the screen freezing is related to video playback. Since the videos dont freeze rather the screen renderer is freezing.

oomek commented 4 years ago

I pushed an experimental double buffering of video frames to my dev branch. If you test this again it will help determining where the problem is by exclusion.

multigamesystem commented 4 years ago

I pushed an experimental double buffering of video frames to my dev branch. If you test this again it will help determining where the problem is by exclusion.

Thanks Ill give it a try now.

oomek commented 4 years ago

Just a sanity check, make sure you checkout dev, not master.

multigamesystem commented 4 years ago

Just a sanity check, make sure you checkout dev, not master.

Same issues as before.

oomek commented 4 years ago

Ok thanks for testing. We'll keep digging.

multigamesystem commented 4 years ago

Ok thanks for testing. We'll keep digging.

update Stock config (with no snaps, themes or layouts) produces the same error. I'm not sure this bug is related to snaps at all. From the configure menu as soon as I select something and hit enter on my keyboard the screen locks up. I can hit ctrl+c to exit back to the cmdline.

Thanks for the work and I'm gonna test a basic config/layout with some snaps to see if perhaps its not a bug with my theme that didn't rear its head out til this new build was setup on the Pi4. I didn't notice any issues when running the same layout/theme with x11 on this same Pi4 though. The fact that it freezes when I hit tab leads me to believe its not related to my theme but you never know.

mickelson commented 4 years ago

Hi there Jools, yes I agree that a suid binary isn’t ideal.

I’m kinda thrashing around a bit but the problem seems to be the combo of the linux drm requirement that one process has to close the drm file descriptor before another process can start using the display, combined with sfml’s keeping of a hidden “shared context” after you first initialize open gl. once this context is created I don’t think there is any way for the library user to have it cleared/reinitialized, short of restarting the whole program.

I was hoping to not have to mess around with the inner workings of sfml too much here, but I will take a look and see if there is a straight forward way to get sfml to release its hidden context appropriately so that everything can be cleanly closed for the launch and then reinitialized, eliminating the need for the setting and dropping of drm master.

Andrew

On Jun 1, 2020, at 10:39 PM, Jools Wills notifications@github.com wrote:

 I've only just started looking at this, but I'm not sure I'm seeing the full picture so apologies if I've misunderstood.

Having a SUID binary isn't ideal but I'm unsure why there is a need for drmSetMaster/drmDropMaster ?

Is there an issue closing the egl context / reiniting after launching something? I was wondering if this was a workaround without modification of the sgml library API or something else?

Wouldn't it be enough to rejig the code, so that FeWindow can be closed/cleaned up in run_program and then re-initialised after or so?

Sorry if I'm missing something.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

joyrider3774 commented 4 years ago

@mickelson when setting a resolution using raspi-config and rebooting and then launching attract, attract is not using that resolution but instead is using either the prefered mode or the highest resolution mode (init_drm in drmcommon.c) i don't know if there is a way for initing drm with the same mode as what has been set by raspi-config. Or we really do need that prefered mode environment variable so that people with 4k tv's can at least set full hd mode as using 4k resolution with attract on the rpi4 is really way to slow for it to be useable. I can try to create PR for it if needed

oomek commented 4 years ago

Regarding freezes. There is one thing worth checking. Use a gamepad instead of a keyboard. Maybe this new keyboard handler falls into a deadlock (not sure if that double mutex is neccessary there) or an infinite while loop.

joyrider3774 commented 4 years ago

also tested, i was using joypads and had no issue, but if i run with keyboard with attract ran from terminal on the pi itselves it freezes when pressing return/enter key. If i run it from ssh terminal i don't have this problem but then you can not type the names of displays etc that only seem to work when running from terminal on pi itselve

multigamesystem commented 4 years ago

also tested, i was using joypads and had no issue, but if i run with keyboard with attract ran from terminal on the pi itselves it freezes when pressing return/enter key. If i run it from ssh terminal i don't have this problem but then you can not type the names of displays etc that only seem to work when running from terminal on pi itselve

Keyboard control is pretty important since Attract Mode does not have an auto config setup like Emulation Station. Ive always found the controller configurations in Attract Mode cumbersome and even when saving configs they dont always seem to load or the program gets confused. Keyboard is the only way to control it when first running the program.

oomek commented 4 years ago

I've identified the problem with AM freezing when using the keyboard. It's explained in the following issue: https://github.com/mickelson/sfml-pi/issues/15

multigamesystem commented 4 years ago

I've identified the problem with AM freezing when using the keyboard. It's explained in the following issue:

15

Thanks oomek

mickelson commented 4 years ago

Ok I think most of the necessary changes to sfml-pi to support DRM/KMS are now made, so I will close this issue now. please open a new issue for any confirmed bugs with the DRM/KMS implementation going forward. thanks