hardware acceleration on allwinner A10/A20 with vdpau and OpenGLES (zero-copy)
Still struggling here. Trying things on and off.
I now rebuilt all the tools from mosterta's github (libvdpau-sunxi, libcedarjpeg und also libyuv. I had to tweek something with libyuv during the compile process so that it links as a shared library, Do not quite remember how I did it.
I still get segmentation faults when I try to play a video.

something in the crashlog that may be fishy:
Code:
Thread 38 (Thread 0xb4c9c000 (LWP 7249)):
#0  0xb5df5f42 in write () from /lib/arm-linux-gnueabihf/libc.so.6
#1  0xb5dbac84 in _IO_file_write () from /lib/arm-linux-gnueabihf/libc.so.6
#2  0xb5dba4b2 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#3  0xb5dbb0d0 in _IO_file_xsputn () from /lib/arm-linux-gnueabihf/libc.so.6
#4  0xb5db3ec6 in fwrite () from /lib/arm-linux-gnueabihf/libc.so.6
#5  0xb4401ad8 in writeBuffers (dataY=0x9ae2d000, szDataY=983040, dataU=0x9adb5000, szDataU=491520, h=720, w=1280) at cedar_display.c:503
#6  0xb44014f2 in glVDPAUGetVideoFrameConfig (surface=21, config=0xbe8de42c) at cedar_display.c:290
#7  0x0141e574 in CHwLayerAdaptorVdpauAllwinner::getFrameConfig (this=0x500839c, config=...) at HwLayerAdaptorVdpau.cpp:66
#8  0x0141de92 in CHwLayerAllwinnerA10::displayFrame (this=0x4523d40, frame=..., fence=@0x9f79b808: -1, top_field=0) at HwLayerAllwinnerA
10.cpp:363
#9  0x0141a7d2 in CHwLayerManagerAllwinnerDisp::displayFrame (this=0x4544b48, type=CHwLayer<CHwLayerAdaptorVdpauAllwinner, CHwLayerConfig
Allwinner>::Video, frame=..., fence=@0x9f79b808: -1, top_field=0) at HwLayerManagerAllwinnerDisp.cpp:313
#10 0x014199ea in CHwLayerManagerAllwinner::displayFrame (this=0x4310828, type=CHwLayer<CHwLayerAdaptorVdpauAllwinner, CHwLayerConfigAllw
inner>::Video, frame=..., fence=@0x9f79b808: -1, top_field=0) at HwLayerManagerAllwinner.cpp:119
#11 0x020ea174 in CRendererVDPAUAllwinner::RenderUpdateVideoHook (this=0x5007668, clear=false, flags=0, alpha=255) at RendererVDPAUAllwin
ner.cpp:343
#12 0x020dc3f6 in CLinuxRendererGLES::RenderUpdateVideo (this=0x5007668, clear=false, flags=0, alpha=255) at LinuxRendererGLES.cpp:523
#13 0x020dc16e in CLinuxRendererGLES::RenderUpdate (this=0x5007668, clear=false, flags=0, alpha=255) at LinuxRendererGLES.cpp:445
#14 0x020d6392 in CRenderManager::PresentSingle (this=0x52601f8, clear=false, flags=0, alpha=255) at RenderManager.cpp:1036
#15 0x020d5e68 in CRenderManager::Render (this=0x52601f8, clear=false, flags=0, alpha=255, gui=false) at RenderManager.cpp:931
#16 0x0209b078 in CVideoPlayer::Render (this=0x525f6f0, clear=false, alpha=255, gui=false) at VideoPlayer.cpp:5112

I also get a "wrong handle 0" message in the console.
Furthermore, my syslog is spammed with "[DISP] not supported image0 pixel sequence:128 in img_sw_para_to_reg" messages after some messages "[DISP] not supported scaler input pixel format:0 in Scaler_sw_para_to_reg1"

I was fiddling around with the kernel config, but think I changed everything back and now have the following relevant bits in it:

Code:
# CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
# CONFIG_VIDEO_SH_MOBILE_CEU is not set
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
CONFIG_VIDEO_SUNXI_CEDAR=m
CONFIG_VIDEO_DECODER_SUNXI=m
CONFIG_VIDEO_AVS_COUNTER=m
CONFIG_VIDEO_CSI_SUN4I=y
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
# CONFIG_EXYNOS_VIDEO is not set
...
CONFIG_FB=y
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_WMT_GE_ROPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
CONFIG_FB_SUNXI=y
CONFIG_FB_SUNXI_RESERVED_MEM=y
CONFIG_FB_SUNXI_UMP=y
CONFIG_FB_SUNXI_LCD=y
CONFIG_FB_SUNXI_HDMI=y
# CONFIG_FB_ARMCLCD is not set
# CONFIG_FB_UVESA is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_TMIO is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_BROADSHEET is not set
CONFIG_FB_SM7XX=m
...
CONFIG_UMP=m
CONFIG_UMP_DEBUG=y
CONFIG_FB_SUNXI_UMP=y
...
CONFIG_DRM_MALI=m
CONFIG_MALI=m
CONFIG_MALI400=m
CONFIG_MALI400_DEBUG=y
CONFIG_MALI400_GPU_UTILIZATION=y
...

mali, ump, disp_ump, hdmi and sunxi_cedar_mod modules load without any errors
Only ump says the following:
Code:
May 13 11:25:21 cubie2 kernel: [  250.943463] UMP<2>: Inserting UMP device driver. Compiled: Apr  9 2017, time: 13:33:32
May 13 11:25:21 cubie2 kernel: [  250.961157] UMP<2>: dma_set_mask_and_coherent calling
May 13 11:25:21 cubie2 kernel: [  250.970374] UMP<2>: dma_set_mask_and_coherent result=-5
May 13 11:25:21 cubie2 kernel: [  250.981746] UMP<2>: dma_set_mask_and_coherent failed
May 13 11:25:21 cubie2 kernel: [  250.990570] UMP<2>: Using CMA memory backend, allocation limit: 134217728
May 13 11:25:21 cubie2 kernel: [  251.004592] UMP: UMP device driver  loaded

Is there any issue with the dma_set_mask_and_coherent?
Any suggestions?

One last thing where I am not sure if it has any influence. My udelay seems to be about 20% off (not 100% sure, but my suspicion is that this is because of the two cores running at different speeds). I may be wrong, but just discovered this recently when exploring some software IR protocols (I always had to fiddle a lot with lirc and now think it was because of that). This could also be the issue that the sound kept advancing over the video with at the previous version.
Reply


Messages In This Thread
RE: hardware acceleration on allwinner A10/A20 with vdpau and OpenGLES (zero-copy) - by matrzh - 2017-05-13, 17:15
Logout Mark Read Team Forum Stats Members Help
hardware acceleration on allwinner A10/A20 with vdpau and OpenGLES (zero-copy)2