Jump to content

Can we make RK3399 GPU work on Linux Kernel 6.X


Hand Rawing

Recommended Posts

[   11.309397] panfrost ff9a0000.gpu: clock rate = 500000000
[   11.316882] panfrost ff9a0000.gpu: EM: OPP:200000 is inefficient
[   11.317248] panfrost ff9a0000.gpu: EM: created perf domain
[   11.320588] panfrost ff9a0000.gpu: mali-t860 id 0x860 major 0x2 minor 0x0 status 0x0
[   11.321594] panfrost ff9a0000.gpu: features: 00000000,00000407, issues: 00000000,24040400
[   11.322812] panfrost ff9a0000.gpu: Features: L2:0x07120206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xff JS:0x7
[   11.324483] panfrost ff9a0000.gpu: shader_present=0xf l2_present=0x1
[   11.357056] [drm] Initialized panfrost 1.2.0 20180908 for ff9a0000.gpu on minor 1

It seems Panfrost driver was loaded, but the GPU doesn't produce any interrupts:

 83:          0          0          0          0          0          0     GICv3  51 Level     panfrost-gpu
 84:          0          0          0          0          0          0     GICv3  53 Level     panfrost-mmu
 85:          0          0          0          0          0          0     GICv3  52 Level     panfrost-job

I tried build and install the latest version of `mesa`, which just not work. And `glxinfo -B` still shows that GPU is a virtual GPU.

display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Mesa/X.org (0xffffffff)
    Device: llvmpipe (LLVM 15.0.6, 128 bits) (0xffffffff)
    Version: 24.0.6
    Accelerated: no
    Video memory: 3792MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 4.5
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 15.0.6, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 24.0.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.5 (Compatibility Profile) Mesa 24.0.6
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 24.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

 

I am wondering if I can use the GPU on kernel 6.x, because I found that the case in this forum that can enable GPU for rk3399 all use the legacy version kernel, like 4.X. By the way, I am using the kernel from https://github.com/ophub/amlogic-s9xxx-armbian.

 

Anyone can give me some tips or interpretation? Thanks in advanced!!!!

Link to comment
Share on other sites

1 hour ago, Hand Rawing said:

By the way, I am using the kernel from https://github.com/ophub/amlogic-s9xxx-armbian.

If you are using an ophub kernel you are not using Armbian.  These forums are for Armbian  ophub is a fork of Armbian.  They use the Armbian name without permission.  They do not contribute to Armbian development nor do they participate in these forums.  You need to direct your question to their forums/support channels.

Link to comment
Share on other sites

9 hours ago, Hand Rawing said:

Can you share or tell me which image are you using?

I've started with this, but the logs provided are created with this system:

Info-Center-NanoPC-T4.png.dc2d8d2590ebeb9078bb8c673f8e5a5a.png

However, the system used is not really important, the Mali support has been very mature in mainline for a long time, so any correspondingly built system should be usable.

Link to comment
Share on other sites

25 minutes ago, usual user said:

I've started with this, but the logs provided are created with this system:

Thanks for the reply!

25 minutes ago, usual user said:

the Mali support has been very mature in mainline for a long time

I have built a unofficial version armbian myself from mainline, but the ‘glxinfo -B’ still shows llvmpipe as  GPU device.

Link to comment
Share on other sites

29 minutes ago, Hand Rawing said:

I have built a unofficial version armbian myself from mainline, but the ‘glxinfo -B’ still shows llvmpipe as  GPU device.

Have you made sure that all BuildRequires have been properly fulfilled and that the build configuration options have been selected correctly?
Especially hardware-related ones.

Link to comment
Share on other sites

8 hours ago, usual user said:

BuildRequires have been properly fulfilled

Hi, It seems that this file you mentioned is the latest version of mesa. Did you mean that I need to build the latest version of mesa from source code?

 

8 hours ago, usual user said:

build configuration options

Does this mean the configuration in kernel? GPU staffs, like panfrost, drm etc., are already enable in the kernel compile configuration.😂😂

I already tried to enable `BUILD_DESKTOP=yes`, and try to reinstall again. Thanks for your information!!!!

Link to comment
Share on other sites

I rebuilt the mesa of `24.0.7` and install it to my /usr directory, and here is the result.

1. output of clinfo:

: CommandLine Error: Option 'polly' registered more than once!
LLVM ERROR: inconsistency in registered CommandLine options
[1]    13034 abort      clinfo

2. output of glxinfo -B

name of display: :1.0
did not find extension DRI_Mesa version 1
did not find extension DRI_Mesa version 1
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  151 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  38
  Current serial number in output stream:  39

3. command used to compile the mesa

meson -Db_ndebug=true -Dopengl=true  -Dgles1=disabled -Dgles2=enabled -Degl=enabled -Dplatforms= -Dvulkan-drivers=panfrost -Dgallium-drivers=panfrost -Dgallium-opencl=icd -Dgallium-rusticl=true -Dplatforms=x11 -Dprefix=/usr builddir/

ninja -C builddir/ -j6

ninja -C builddir/ install

 

I believe that I have screwed the system. Now I need to reinstall the system.......😂

Link to comment
Share on other sites

update:

trying to adjust the config of meson to make GPU work. Here is the command I use now.

meson setup --reconfigure builddir/ \
  -Dprefix=/usr/local/mesa \
  -Dplatforms=x11 \
  -Degl-native-platform=drm \
  -Dgallium-drivers=panfrost \
  -Dvulkan-drivers= \
  -Degl=enabled \
  -Dgles1=enabled \
  -Dgles2=enabled \
  -Dopengl=true \
  -Dgbm=enabled \
  -Dshared-glapi=true \
  -Dbuildtype=debug

But, the Device becomes softpipe now......

name of display: :1.0
error: XDG_RUNTIME_DIR is invalid or not set in the environment.
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Mesa (0xffffffff)
    Device: softpipe (0xffffffff)
    Version: 24.0.7
    Accelerated: no
    Video memory: 3860MB
    Unified memory: no
    Preferred profile: core (0x1)
    Max core profile version: 3.3
    Max compat profile version: 3.3
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
Memory info (GL_ATI_meminfo):
    VBO free memory - total: 63 MB, largest block: 63 MB
    VBO free aux. memory - total: 2084 MB, largest block: 2084 MB
    Texture free memory - total: 63 MB, largest block: 63 MB
    Texture free aux. memory - total: 2084 MB, largest block: 2084 MB
    Renderbuffer free memory - total: 63 MB, largest block: 63 MB
    Renderbuffer free aux. memory - total: 2084 MB, largest block: 2084 MB
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 4293114354 MB
    Total available memory: 4293118215 MB
    Currently available dedicated video memory: 63 MB
OpenGL vendor string: Mesa
OpenGL renderer string: softpipe
OpenGL core profile version string: 3.3 (Core Profile) Mesa 24.0.7
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 3.3 (Compatibility Profile) Mesa 24.0.7
OpenGL shading language version string: 3.30
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 24.0.7
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

 

Link to comment
Share on other sites

14 hours ago, Hand Rawing said:

Did you mean that I need to build the latest version of mesa from source code?

No, it's just the spec with which my currently running mesa is built. Already the mesa version with which I started had all the necessary, essential functions. Of course, all bug fixes and improvements that have been incorporated in the meantime are not included there.

 

14 hours ago, Hand Rawing said:

Does this mean the configuration in kernel?

No, there is not much to see in terms of kernel. As long as the Panfrost driver is built and the Mali GPU is properly wired-up in DT, there is nothing to do.
It's about the user space counterpart mesa. It is the component that make use of the GPU the kernel exposes.

 

14 hours ago, Hand Rawing said:

Hi, can you share all the requirements that are required for making the GPU work?

If you want to check all dependencies, you have to look at all spec files that are pulled by Requires from the mesa package. For me, however, this is done by the package manager during installation. And to build mesa, I install all BuildRequires with:

dnf builddep mesa.spec

But building Mesa yourself has long since ceased to be necessary, as no modifications are necessary and the standard package works out-of-the-box.

8 hours ago, Hand Rawing said:

3. command used to compile the mesa

Your build configuration options are looking incomplete.

Here's an excerpt from the build.log resulting from the spec file:

/usr/bin/meson setup --buildtype=plain --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/libexec --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include --datadir=/usr/share --mandir=/usr/share/man --infodir=/usr/share/info --localedir=/usr/share/locale --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --wrap-mode=nodownload --auto-features=enabled . redhat-linux-build -Dplatforms=x11,wayland -Ddri3=enabled -Dosmesa=true -Dgallium drivers=swrast,virgl,nouveau,r300,svga,radeonsi,r600,freedreno,etnaviv,tegra,vc4,v3d,kmsro,lima,panfrost,zink -Dgallium-vdpau=enabled -Dgallium-omx=bellagio -Dgallium-va=enabled -Dgallium-xa=enabled -Dgallium-nine=true -Dteflon=true -Dgallium-opencl=icd -Dgallium-rusticl=true -Dvulkan-drivers=swrast,amd,broadcom,freedreno,panfrost,imagination-experimental,nouveau -Dvulkan-layers=device-select -Dshared-glapi=enabled -Dgles1=enabled -Dgles2=enabled -Dopengl=true -Dgbm=enabled -Dglx=dri -Degl=enabled -Dglvnd=enabled -Dintel-rt=disabled -Dmicrosoft-clc=disabled -Dllvm=enabled -Dshared-llvm=enabled -Dvalgrind=enabled -Dbuild-tests=false -Dselinux=true -Dandroid-libbacktrace=disabled

 

Link to comment
Share on other sites

11 hours ago, usual user said:

No, there is not much to see in terms of kernel. As long as the Panfrost driver is built and the Mali GPU is properly wired-up in DT, there is nothing to do.
It's about the user space counterpart mesa. It is the component that make use of the GPU the kernel exposes.

Bro, I want to give up now. I have checked in the documentation of Debian. All the requirements that GPU works normally have been fulfilled, I have no idea why GPU still does not work.

1. Panfrost

[ 4390.653912] panfrost ff9a0000.gpu: clock rate = 500000000
[ 4390.657185] panfrost ff9a0000.gpu: mali-t860 id 0x860 major 0x2 minor 0x0 status 0x0
[ 4390.657223] panfrost ff9a0000.gpu: features: 00000000,00000407, issues: 00000000,24040400
[ 4390.657240] panfrost ff9a0000.gpu: Features: L2:0x07120206 Shader:0x00000000 Tiler:0x00000809 Mem:0x1 MMU:0x00002830 AS:0xff JS:0x7
[ 4390.657260] panfrost ff9a0000.gpu: shader_present=0xf l2_present=0x1
[ 4390.660559] [drm] Initialized panfrost 1.2.0 20180908 for ff9a0000.gpu on minor 1

2. Mesa

name of display: :1.0
display: :1  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Mesa/X.org (0xffffffff)
    Device: llvmpipe (LLVM 15.0.6, 128 bits) (0xffffffff)
    Version: 22.3.6
    Accelerated: no
    Video memory: 3860MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.5
    Max compat profile version: 4.5
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Mesa/X.org
OpenGL renderer string: llvmpipe (LLVM 15.0.6, 128 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 22.3.6
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.5 (Compatibility Profile) Mesa 22.3.6
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

3. Device Tree

&gpu {
	status = "okay";
	mali-supply = <&vdd_gpu>;
};

 

Link to comment
Share on other sites

11 hours ago, usual user said:

If you want to check all dependencies, you have to look at all spec files that are pulled by Requires from the mesa package. For me, however, this is done by the package manager during installation. And to build mesa, I install all BuildRequires with:

I am using Armbian, so I install all the dependencies manually, and the compilation process all runs ok. However, GPU still does not work.

Link to comment
Share on other sites

On 5/14/2024 at 9:35 AM, Hand Rawing said:

By the way, I am using the kernel from https://github.com/ophub/amlogic-s9xxx-armbian.

Based on this, you are not using Armbian.  You are using a fork of Armbian.  The maintainers of this fork use the Armbian name without permission.  They do not participate in Armbian development, nor do they participate in these forums.  Either use Armbian (Armbian com), or get support for what you are using from where you downloaded it from.

Link to comment
Share on other sites

@usual userHi, I solved this problem. As you said before, the GPU is out of box for using. But I just test `glxinfo -B` using `Xvfb`, which is a virtual desktop, so it always shows `llvmpipe`. Now I try to use xrdp after searching in our forum. Thanks for your help!!!!!!!!!!!!!!

name of display: :11.0
display: :11  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Panfrost (0xffffffff)
    Device: Mali-T860 (Panfrost) (0xffffffff)
    Version: 22.3.6 (just using the preinstalled by armbian)
    Accelerated: yes
    Video memory: 3860MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 3.1
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Panfrost
OpenGL renderer string: Mali-T860 (Panfrost)
OpenGL core profile version string: 3.1 Mesa 22.3.6
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)

OpenGL version string: 3.1 Mesa 22.3.6
OpenGL shading language version string: 1.40
OpenGL context flags: (none)

OpenGL ES profile version string: OpenGL ES 3.1 Mesa 22.3.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

 

Link to comment
Share on other sites

4 minutes ago, Hand Rawing said:

Hi, I don't know that at first

Lots of people don't realize they are using a rip-off, this is why we mention this on occurrence ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines