X11 driver update for 4.14.y

Test and fix the Kernel 4.14 features

Moderators: mdrjr, odroid

X11 driver update for 4.14.y

Unread postby crashoverride » Thu Apr 19, 2018 7:45 pm

I pushed a small update to the hardware accelerated X11 driver. The primary change is that VSYNC is now enabled (and working) when a window is full screen. This is a special case of rendering where the display buffers are directly flipped (zero copy). I have tested it with some game emulators and rendering was "perfect". The VSYNC only applies to fullscreen X11 windows (not maximized).
https://github.com/OtherCrashOverride/xf86-video-armsoc/tree/xu4-4.14.y

There is also a default xorg.conf file included showing the proper settings for use:
https://github.com/OtherCrashOverride/xf86-video-armsoc/blob/xu4-4.14.y/xorg.conf

To confirm operation, running "glmark2-es2" should run very fast (no vsync, G2D blit), and running "glmark2-es2 --fullscreen" should run at 60fps (vsync, page flip).
crashoverride
 
Posts: 3998
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1

Re: X11 driver update for 4.14.y

Unread postby meveric » Thu Apr 19, 2018 10:32 pm

have you tried checking this with N64 emulation?
There's a standing bug with refresh rate.. games that run on 50 FPS run about 40 FPS if you use 60 Hz on TV, if you set the TV to 50 Hz the game suddenly runs on 32 FPS or something like that if you switch to 30 Hz is even lower...
My current workaround is to remove the read permission for the user on /dev/fb0 so that the user can't read the frequenz of the TV and with that the the emulator suddenly starts to work correctly.

Wonder if your patch can help solve this issue... gonna test that some time later I guess :)
Donate to support my work on the ODROID GameStation Turbo Image for U2/U3 XU3/XU4 X2 X C1 as well as many other releases.
Check out the Games and Emulators section to find some of my work or check the files in my repository to find the software i build for ODROIDs.
If you want to add my repository to your image read my HOWTO integrate my repo into your image.
User avatar
meveric
 
Posts: 9206
Joined: Mon Feb 25, 2013 2:41 pm
languages_spoken: german, english
ODROIDs: X2, U2, U3, XU-Lite, XU3, XU3-Lite, C1, XU4, C2, C1+, XU4Q, HC1, N1, Go

Re: X11 driver update for 4.14.y

Unread postby crashoverride » Thu Apr 19, 2018 11:04 pm

meveric wrote:have you tried checking this with N64 emulation?

I have not tested the X11 driver against a N64 emulator. However, I did start investigating N64 emulation (mupen64) a while back. What I found is that the code instructs SDL to do a mode change on the monitor. For optimal operation, the mode should be left unchanged and, instead, a render target of the requested size should be created and used. After the frame has been rendered, then the GPU should then draw a full screen quad using the render target as a texture. Since this would be a major patch, I have not pursued this (yet).
crashoverride
 
Posts: 3998
Joined: Tue Dec 30, 2014 8:42 pm
languages_spoken: english
ODROIDs: C1

Re: X11 driver update for 4.14.y

Unread postby odroid » Sat Apr 21, 2018 11:08 am

Great!
It works well in fullscreen mode.
Kodi video is also improved a lot. The tearing issue seems to be gone finally.
Chromium browser Youtube in fullscreen(kiosk) mode also works well without tearing problem once the video quality is set to 720p or 480p.

Really appreciate your hard work.

Code: Select all
odroid@odroid:~$ DISPLAY=:0.0 glmark2-es2 --fullscreen                                                                                                           
=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR:     ARM
    GL_RENDERER:   Mali-T628
    GL_VERSION:    OpenGL ES 3.1 v1.r17p0-01rel0.a881d28363cdb20f0017ed13c980967e
=======================================================
[build] use-vbo=false: FPS: 60 FrameTime: 16.667 ms
[build] use-vbo=true: FPS: 60 FrameTime: 16.667 ms
[texture] texture-filter=nearest: FPS: 60 FrameTime: 16.667 ms
[texture] texture-filter=linear: FPS: 60 FrameTime: 16.667 ms
[texture] texture-filter=mipmap: FPS: 60 FrameTime: 16.667 ms
[shading] shading=gouraud: FPS: 60 FrameTime: 16.667 ms
[shading] shading=blinn-phong-inf: FPS: 60 FrameTime: 16.667 ms
[shading] shading=phong: FPS: 60 FrameTime: 16.667 ms
[shading] shading=cel: FPS: 60 FrameTime: 16.667 ms
[bump] bump-render=high-poly: FPS: 60 FrameTime: 16.667 ms
[bump] bump-render=normals: FPS: 60 FrameTime: 16.667 ms
[bump] bump-render=height: FPS: 60 FrameTime: 16.667 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 60 FrameTime: 16.667 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 60 FrameTime: 16.667 ms
[pulsar] light=false:quads=5:texture=false: FPS: 60 FrameTime: 16.667 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 60 FrameTime: 16.667 ms
[desktop] effect=shadow:windows=4: FPS: 60 FrameTime: 16.667 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 30 FrameTime: 33.333 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 30 FrameTime: 33.333 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 30 FrameTime: 33.333 ms
[ideas] speed=duration: FPS: 60 FrameTime: 16.667 ms
[jellyfish] <default>: FPS: 60 FrameTime: 16.667 ms
[terrain] <default>: FPS: 19 FrameTime: 52.632 ms
[shadow] <default>: FPS: 60 FrameTime: 16.667 ms
[refract] <default>: FPS: 30 FrameTime: 33.333 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 59 FrameTime: 16.949 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 60 FrameTime: 16.667 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 60 FrameTime: 16.667 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 60 FrameTime: 16.667 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 60 FrameTime: 16.667 ms



We've tested it on Ubuntu 18.04 ;) I hope we can release a new OS image early May.
Code: Select all
odroid@odroid:~$ lsb_release -a
LSB Version:    core-9.20170808ubuntu1-noarch:security-9.20170808ubuntu1-noarch
Distributor ID: Ubuntu
Description:    Ubuntu Bionic Beaver (development branch)
Release:        18.04
Codename:       bionic


Image
User avatar
odroid
Site Admin
 
Posts: 28741
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English
ODROIDs: ODROID

Re: X11 driver update for 4.14.y

Unread postby stmicro » Thu Apr 26, 2018 5:33 pm

Awesome~
I hope we can enjoy Ubuntu 18.04 Bionic Beaver LTS soon.
stmicro
 
Posts: 230
Joined: Tue Apr 28, 2015 4:23 pm
Location: shenzhen china
languages_spoken: english, chinese
ODROIDs: Many Odroids and Rpis.


Return to Linux Kernel 4.14 Debugging Party

Who is online

Users browsing this forum: No registered users and 1 guest