Skip to content
Qiang Yu edited this page May 13, 2018 · 35 revisions

Status

Be able to run the following OGL application:

Tested on

  • Mali400
    • Allwinner A20/H3
    • Rockchip RK3188
    • Exynos 4412
  • Mali450
    • Allwinner H5
    • Rockchip RK3328
    • Amlogic S905X

Build and install

common process

  1. build Linux kernel with lima driver from: https://github.com/yuq/linux-lima
  2. build mesa with lima driver by:
./configure --with-gallium-drivers=exynos,sun4i,meson,rockchip,lima --with-dri-drivers= \
  --with-platforms=drm,x11 --disable-xvmc --disable-vdpau --enable-debug

buildroot

For those who want to use buildroot: https://github.com/enunes/buildroot-external-lima

OpenEmbedded

meson metadata with lima driver and test apps: https://github.com/superna9999/meta-meson/tree/topic/mesa-lima

Tool

TODO

mesa

  • Newly refined GP compiler needs optimization, code size can be ~40% smaller compared to close source driver output, main problem should be creating too many moves but too few reg load/store
  • PP compiler optimization, add post scheduler instruction combination which combine multi instructions into one instruction
  • both GP and PP compiler need control flow and other un-implemented instruction support
  • texture mipmap support
  • Build a piglit test result list so that we can start clear them one by one.
  • New mesa NIR changes will always lower io/alu to scalar which is not expected by PP, need merge scalar back to vector or create a PIPE_CAP to disable it, see
  • Tiled texture format support
  • optimization
    • thread rendering that has dedicated render thread to submit command

kernel

  • Power management
  • TTM buffer eviction/swap support, need to investigate if GP/PP support MMU fault recovery
  • Dump buffer support

Done

mesa

  • GP compiler needs re-fine so that we can guarantee the vertex shader compilation succeed, Connor Abbott think out a new algorithm which should work
  • Mesa renderonly lib support
  • multi varying support, current implementation assumes we only have a single varying (gl_Position), command stream setup need be implemented for multi varying support
  • command stream setup for multi draw, flush at once
  • Mali450 initial support
  • PP uniform support, command stream need be setup for PP uniform
  • fix render fail when buffer is 800x600, maybe due to buffer alignment or command stream setup
  • break the ABI come from libdrm_lima which is integrated into mesa for more efficiency especially the command submit interface
  • texture support, both PP compiler and command stream need be changed
  • command stream setup refine for multi FBO and dynamic buffer size
  • Mali450 fully support
  • EGL_ANDROID_native_fence_sync support

kernel

  • PRIME export support
  • Mali450 initial support
  • New task scheduler which can create a per OGL context fence context. We can use the new drm_sched which is from amdgpu and will be adopted by etnaviv too. drm_sched should be in Linux kernel 4.16.
  • New memory management for non-continuous buffer object
  • Different GPU mCLK frequency setup, current GPU mCLK frequency is the default frequency when system boot, but GPU should be able to run on a higher frequency.
  • Mali450 fully support, include multi group GP/PP, DLBU
  • submit support syn fd dep
  • use TTM as MM

Reference

Donation

https://paypal.me/yuq825

Clone this wiki locally