Panfrost is live


Recommended Posts

Armbian is a community driven open source project. Do you like to contribute your code?

Armbian_20.02.0-rc1.030_Arm-64_bionic_current_5.5.0-rc6_desktop_20200129

 

amirul@rk3399:~$ cat /etc/X11/xorg.conf.d/01-armbian-defaults.conf

...

    Option      "AccelMethod"    "glamor"     ### "glamor" to enable 3D acceleration, "none" to disable.
...

 

amirul@rk3399:~$ glxinfo |grep OpenGL
OpenGL vendor string: panfrost
OpenGL renderer string: panfrost
OpenGL version string: 2.1 Mesa 19.2.1
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 19.2.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
 

Seems usable, lets see what happens...

... online video in chromium slightly jerky with some weird clicking noise

Link to post
Share on other sites
7 hours ago, amirul said:

Seems usable, lets see what happens...

... online video in chromium slightly jerky with some weird clicking noise

 

Video decoding uses a different part of the chip which is not related to panfrost (and much less to Mesa), does it? Also Chromium is blacklisted by Mesa for 3D (or at least it was a few ago when I checked).

Link to post
Share on other sites
1 hour ago, jcaron said:

 

Video decoding uses a different part of the chip which is not related to panfrost (and much less to Mesa), does it? Also Chromium is blacklisted by Mesa for 3D (or at least it was a few ago when I checked).

That may be true, I'm only reporting my experience with it. The clicks could be some hardware interference?

Link to post
Share on other sites
5 hours ago, amirul said:

That may be true, I'm only reporting my experience with it. The clicks could be some hardware interference?

 

You should probably start by checking what chrome://gpu says to see exactly what is used or not.

Link to post
Share on other sites
1 hour ago, jcaron said:

 

You should probably start by checking what chrome://gpu says to see exactly what is used or not.

Output of chrome://gpu. There are some error messages at the end

Spoiler

Graphics Feature Status

Canvas: Hardware accelerated

Flash: Hardware accelerated

Flash Stage3D: Hardware accelerated

Flash Stage3D Baseline profile: Hardware accelerated

Compositing: Hardware accelerated

Multiple Raster Threads: Force enabled

Out-of-process Rasterization: Disabled

Hardware Protected Video Decode: Unavailable

Rasterization: Software only. Hardware acceleration disabled

Skia Renderer: Disabled

Video Decode: Unavailable

Viz Display Compositor: Enabled

Viz Hit-test Surface Layer: Enabled

Vulkan: Disabled

WebGL: Hardware accelerated

WebGL2: Hardware accelerated

Driver Bug Workarounds

clear_uniforms_before_first_program_use

count_all_in_varyings_packing

decode_encode_srgb_for_generatemipmap

disable_post_sub_buffers_for_onscreen_surfaces

exit_on_context_lost

scalarize_vec_and_mat_constructor_args

disabled_extension_GL_KHR_blend_equation_advanced

disabled_extension_GL_KHR_blend_equation_advanced_coherent

disabled_extension_GL_MESA_framebuffer_flip_y

Problems Detected

Accelerated video decode is unavailable on Linux: 137247
Disabled Features: accelerated_video_decode

Protected video decoding with swap chain is for Windows and Intel only
Disabled Features: protected_video_decode

Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use

Mesa drivers in Linux handle varyings without static use incorrectly: 333885
Applied Workarounds: count_all_in_varyings_packing

Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args

Disable partial swaps on Mesa drivers (detected with GL_VERSION): 339493
Applied Workarounds: disable_post_sub_buffers_for_onscreen_surfaces

Decode and encode before generateMipmap for srgb format textures on os except macosx: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap

Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Applied Workarounds: disable(GL_KHR_blend_equation_advanced), disable(GL_KHR_blend_equation_advanced_coherent)

Some drivers can't recover after OUT_OF_MEM and context lost: 893177
Applied Workarounds: exit_on_context_lost

Disable GL_MESA_framebuffer_flip_y for desktop GL: 964010
Applied Workarounds: disable(GL_MESA_framebuffer_flip_y)

Version Information

Data exported2020-01-31T01:42:20.245Z

Chrome versionChrome/79.0.3945.79

Operating systemLinux 5.5.0-rc6-arm-64

Software rendering list URLhttps://chromium.googlesource.com/chromium/src/+/29f75ce3f42b007bd80361b0dfcfee3a13ff90b8/gpu/config/software_rendering_list.json

Driver bug list URLhttps://chromium.googlesource.com/chromium/src/+/29f75ce3f42b007bd80361b0dfcfee3a13ff90b8/gpu/config/gpu_driver_bug_list.json

ANGLE commit idunknown hash

2D graphics backendSkia/79 64f0af0f6548f7b8c45e7e3b2630e34deb04c1aa

Command Line/usr/lib/chromium-browser/chromium-browser --disable-smooth-scrolling --disable-low-res-tiling --enable-low-end-device-mode --num-raster-threads=6 --profiler-timing=0 --disable-composited-antialiasing --disk-cache-dir=/tmp/amirul-cache --disk-cache-size=439856333 --no-sandbox --test-type --enable-pinch --flag-switches-begin --flag-switches-end --disable-webrtc-apm-in-audio-service

Driver Information

Initialization time681

In-process GPUfalse

Passthrough Command Decoderfalse

Sandboxedfalse

GPU0VENDOR= 0x0000 [panfrost], DEVICE=0x0000 [panfrost] *ACTIVE*

Optimusfalse

AMD switchablefalse

Driver vendorMesa

Driver version19.2.1

GPU CUDA compute capability major version0

Pixel shader version1.20

Vertex shader version1.20

Max. MSAA samples0

Machine model name

Machine model version

GL_VENDORpanfrost

GL_RENDERERpanfrost

GL_VERSION2.1 Mesa 19.2.1

GL_EXTENSIONSGL_ARB_multisample GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_copy_texture GL_EXT_subtexture GL_EXT_texture_object GL_EXT_vertex_array GL_EXT_compiled_vertex_array GL_EXT_texture GL_EXT_texture3D GL_IBM_rasterpos_clip GL_ARB_point_parameters GL_EXT_draw_range_elements GL_EXT_packed_pixels GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_separate_specular_color GL_EXT_texture_edge_clamp GL_SGIS_generate_mipmap GL_SGIS_texture_border_clamp GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_ARB_framebuffer_sRGB GL_ARB_multitexture GL_EXT_framebuffer_sRGB GL_IBM_multimode_draw_arrays GL_IBM_texture_mirrored_repeat GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_transpose_matrix GL_EXT_blend_func_separate GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_secondary_color GL_EXT_texture_env_add GL_EXT_texture_lod_bias GL_INGR_blend_func_separate GL_NV_blend_square GL_NV_light_max_exponent GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_SUN_multi_draw_arrays GL_ARB_texture_border_clamp GL_ARB_texture_compression GL_EXT_framebuffer_object GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_MESA_window_pos GL_NV_packed_depth_stencil GL_NV_texture_rectangle GL_ARB_depth_texture GL_ARB_occlusion_query GL_ARB_shadow GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_window_pos GL_ATI_fragment_shader GL_EXT_stencil_two_side GL_EXT_texture_cube_map GL_NV_fog_distance GL_APPLE_packed_pixels GL_ARB_draw_buffers GL_ARB_fragment_program GL_ARB_fragment_shader GL_ARB_shader_objects GL_ARB_vertex_program GL_ARB_vertex_shader GL_ATI_draw_buffers GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_MESA_pack_invert GL_ARB_fragment_program_shadow GL_ARB_half_float_pixel GL_ARB_occlusion_query2 GL_ARB_point_sprite GL_ARB_shading_language_100 GL_ARB_sync GL_ARB_texture_non_power_of_two GL_ARB_vertex_buffer_object GL_ATI_blend_equation_separate GL_EXT_blend_equation_separate GL_OES_read_format GL_ARB_pixel_buffer_object GL_ARB_texture_float GL_ARB_texture_rectangle GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_texture_mirror_clamp GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_shared_exponent GL_ARB_framebuffer_object GL_EXT_framebuffer_blit GL_EXT_packed_depth_stencil GL_ARB_vertex_array_object GL_ATI_separate_stencil GL_ATI_texture_mirror_once GL_EXT_draw_buffers2 GL_EXT_gpu_program_parameters GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_half_float_vertex GL_ARB_map_buffer_range GL_ARB_texture_buffer_object GL_ARB_texture_rg GL_ARB_texture_swizzle GL_ARB_vertex_array_bgra GL_EXT_texture_swizzle GL_EXT_vertex_array_bgra GL_AMD_draw_buffers_blend GL_AMD_seamless_cubemap_per_texture GL_ARB_ES2_compatibility GL_ARB_debug_output GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_explicit_attrib_location GL_ARB_fragment_coord_conventions GL_ARB_provoking_vertex GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_shader_texture_lod GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_rgb10_a2ui GL_ARB_uniform_buffer_object GL_ARB_vertex_type_2_10_10_10_rev GL_EXT_provoking_vertex GL_EXT_texture_snorm GL_MESA_texture_signed_rgba GL_ARB_get_program_binary GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_transform_feedback3 GL_ARB_compressed_texture_pixel_storage GL_ARB_internalformat_query GL_ARB_map_buffer_alignment GL_ARB_texture_storage GL_AMD_shader_trinary_minmax GL_ARB_clear_buffer_object GL_ARB_copy_image GL_ARB_explicit_uniform_location GL_ARB_invalidate_subdata GL_ARB_program_interface_query GL_ARB_shader_storage_buffer_object GL_ARB_stencil_texturing GL_ARB_texture_buffer_range GL_ARB_texture_view GL_ARB_vertex_attrib_binding GL_KHR_debug GL_KHR_texture_compression_astc_ldr GL_ARB_internalformat_query2 GL_ARB_multi_bind GL_ARB_seamless_cubemap_per_texture GL_ARB_texture_stencil8 GL_ARB_vertex_type_10f_11f_11f_rev GL_EXT_shader_integer_mix GL_ARB_get_texture_sub_image GL_KHR_context_flush_control GL_ARB_parallel_shader_compile GL_KHR_no_error GL_KHR_texture_compression_astc_sliced_3d GL_KHR_parallel_shader_compile GL_EXT_texture_sRGB_R8

Disabled ExtensionsGL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_MESA_framebuffer_flip_y

Disabled WebGL Extensions

Window system binding vendorSGI

Window system binding version1.4

Window system binding extensionsGLX_ARB_create_context GLX_ARB_create_context_profile GLX_ARB_fbconfig_float GLX_ARB_framebuffer_sRGB GLX_ARB_multisample GLX_EXT_create_context_es_profile GLX_EXT_create_context_es2_profile GLX_EXT_fbconfig_packed_float GLX_EXT_framebuffer_sRGB GLX_EXT_import_context GLX_EXT_libglvnd GLX_EXT_texture_from_pixmap GLX_EXT_visual_info GLX_EXT_visual_rating GLX_MESA_copy_sub_buffer GLX_OML_swap_method GLX_SGI_make_current_read GLX_SGI_swap_control GLX_SGIS_multisample GLX_SGIX_fbconfig GLX_SGIX_pbuffer GLX_SGIX_visual_select_group GLX_INTEL_swap_event

Window managerXfwm4

XDG_CURRENT_DESKTOPXFCE

GDMSESSIONxfce

Compositing managerYes

Direct rendering versionDRI3

Reset notification strategy0x8261

GPU process crash count0

System visual ID33

RGBA visual ID507

gfx::BufferFormats supported for allocation and texturingR_8: not supported, R_16: not supported, RG_88: not supported, BGR_565: not supported, RGBA_4444: not supported, RGBX_8888: not supported, RGBA_8888: not supported, BGRX_8888: not supported, BGRX_1010102: not supported, RGBX_1010102: not supported, BGRA_8888: not supported, RGBA_F16: not supported, YVU_420: not supported, YUV_420_BIPLANAR: not supported, P010: not supported

Compositor Information

Tile Update ModeOne-copy

Partial RasterEnabled

GpuMemoryBuffers Status

R_8Software only

R_16Software only

RG_88Software only

BGR_565Software only

RGBA_4444Software only

RGBX_8888Software only

RGBA_8888Software only

BGRX_8888Software only

BGRX_1010102Software only

RGBX_1010102Software only

BGRA_8888Software only

RGBA_F16Software only

YVU_420Software only

YUV_420_BIPLANARSoftware only

P010Software only

Display(s) Information

InfoDisplay[9646436443340609] bounds=[0,0 1920x1080], workarea=[0,31 1920x1049], scale=1, external.

Color space information{primaries:INVALID, transfer:INVALID, matrix:INVALID, range:INVALID}

SDR white level in nits80

Bits per color component8

Bits per pixel24

Refresh Rate in Hz60

Video Acceleration Information

Log Messages

[25824:25824:0131/013857.915407:ERROR:gl_surface_presentation_helper.cc(259)] : GetVSyncParametersIfAvailable() failed for 1 times!

[25824:25824:0131/013857.923100:ERROR:gl_surface_presentation_helper.cc(259)] : GetVSyncParametersIfAvailable() failed for 2 times!

[25824:25824:0131/014159.226331:ERROR:gl_surface_presentation_helper.cc(259)] : GetVSyncParametersIfAvailable() failed for 3 times!

[25824:25824:0131/014220.192722:WARNING:x11_util.cc(1417)] : X error received: serial 12321, error_code 10 (BadAccess (attempt to access private resource denied)), request_code 130, minor_code 1 (X_ShmAttach)

[25824:25824:0131/014220.193436:WARNING:x11_util.cc(1417)] : X error received: serial 12322, error_code 10 (BadAccess (attempt to access private resource denied)), request_code 130, minor_code 1 (X_ShmAttach)

[25824:25824:0131/014220.193772:WARNING:x11_util.cc(1417)] : X error received: serial 12323, error_code 9 (BadDrawable (invalid Pixmap or Window parameter)), request_code 130, minor_code 3 (X_ShmPutImage)

[25824:25824:0131/014220.194259:WARNING:x11_util.cc(1417)] : X error received: serial 12325, error_code 128 (BadShmSeg (invalid shared segment parameter)), request_code 130, minor_code 2 (X_ShmDetach)

[25824:25824:0131/014220.194555:WARNING:x11_util.cc(1417)] : X error received: serial 12326, error_code 128 (BadShmSeg (invalid shared segment parameter)), request_code 130, minor_code 2 (X_ShmDetach)

 

Link to post
Share on other sites

For anyone who is interested, here are glmark2 results

Spoiler

amirul@rk3399:~$ glmark2 
=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR:     panfrost
    GL_RENDERER:   panfrost
    GL_VERSION:    2.1 Mesa 19.2.1
=======================================================
[build] use-vbo=false: FPS: 99 FrameTime: 10.101 ms
[build] use-vbo=true: FPS: 194 FrameTime: 5.155 ms
[texture] texture-filter=nearest: FPS: 233 FrameTime: 4.292 ms
[texture] texture-filter=linear: FPS: 231 FrameTime: 4.329 ms
[texture] texture-filter=mipmap: FPS: 221 FrameTime: 4.525 ms
[shading] shading=gouraud: FPS: 157 FrameTime: 6.369 ms
[shading] shading=blinn-phong-inf: FPS: 166 FrameTime: 6.024 ms
[shading] shading=phong: FPS: 162 FrameTime: 6.173 ms
[shading] shading=cel: FPS: 141 FrameTime: 7.092 ms
[bump] bump-render=high-poly: FPS: 152 FrameTime: 6.579 ms
[bump] bump-render=normals: FPS: 221 FrameTime: 4.525 ms
[bump] bump-render=height: FPS: 194 FrameTime: 5.155 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 183 FrameTime: 5.464 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 170 FrameTime: 5.882 ms
[pulsar] light=false:quads=5:texture=false: FPS: 197 FrameTime: 5.076 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 73 FrameTime: 13.699 ms
[desktop] effect=shadow:windows=4: FPS: 100 FrameTime: 10.000 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 88 FrameTime: 11.364 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 87 FrameTime: 11.494 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 91 FrameTime: 10.989 ms
[ideas] speed=duration: FPS: 91 FrameTime: 10.989 ms
[jellyfish] <default>: FPS: 77 FrameTime: 12.987 ms
[terrain] <default>: FPS: 20 FrameTime: 50.000 ms
[shadow] <default>: FPS: 70 FrameTime: 14.286 ms
[refract] <default>: FPS: 49 FrameTime: 20.408 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 242 FrameTime: 4.132 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 230 FrameTime: 4.348 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 226 FrameTime: 4.425 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 222 FrameTime: 4.505 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 193 FrameTime: 5.181 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 200 FrameTime: 5.000 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 206 FrameTime: 4.854 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 190 FrameTime: 5.263 ms
=======================================================
                                  glmark2 Score: 156 
=======================================================
 

 

Link to post
Share on other sites
3 hours ago, amirul said:

For anyone who is interested, here are glmark2 results

That's weird, because I did the same test yesterday evening, and I have lots of crashes and validation failures. Same 5.5.0-rc6, mesa out of git master. What hardware are you running on? I'm on an Orange Pi 3 (H6, T720MP2).

 

Also, did you remove the blacklisting of chrome/chromium in the panfrost mesa driver? Chrome shouldn't see panfrost.

 

Can you share your X11 config related to panfrost, if any? I may be missing something...

Link to post
Share on other sites
1 hour ago, jcaron said:

That's weird, because I did the same test yesterday evening, and I have lots of crashes and validation failures. Same 5.5.0-rc6, mesa out of git master. What hardware are you running on? I'm on an Orange Pi 3 (H6, T720MP2).

 

Also, did you remove the blacklisting of chrome/chromium in the panfrost mesa driver? Chrome shouldn't see panfrost.

 

Can you share your X11 config related to panfrost, if any? I may be missing something...

I have Magicsee N6 Max rk3399. My config is stock Armbian_20.02.0-rc1.030_Arm-64_bionic_current_5.5.0-rc6_desktop_20200129 with a tweaked rk3399-rock-pi-4.dtb, with only change in /etc/X11/xorg.conf.d/01-armbian-defaults.conf  Option      "AccelMethod"    "none"  to "glamor"

Did not touch chromium settings. Where is chromium blacklisted in the mesa driver?

Link to post
Share on other sites
2 minutes ago, amirul said:

Did not touch chromium settings. Where is chromium blacklisted in the mesa driver?

 

In src/gallium/drivers/panfrost/pan_screen.c, function panfrost_create_screen, blacklist array (line 719 in the version I have).

 

Also note that your chrome://gpu output says "Video Decode: Unavailable". This is (as far as I understand it) completely separate from panfrost/mesa etc. The video decode engine is a separate component in the SoC. There was a long discussion somewhere else in the forum about how to configure/install/compile things for that, though it is probably very SoC-dependent, I have no idea if there's support for the relevant component of the RK3399.

Link to post
Share on other sites
18 minutes ago, jcaron said:

The video decode engine is a separate component in the SoC.

Yes, and you can use JMCC media script to install most of the stuff for that. I don't know the current situation with mainline and rk3399, but you can have a look at this (also availalbe for other socs):

 

Link to post
Share on other sites

Where is everyone finding these release candidate builds? 

 

Admittedly I'm a little new here, but I arrived at this thread and realized it's probably exactly what I need for my application. Just having some trouble finding these RCs to tryout Panfrost. Happy to report issues back to the thread.

Link to post
Share on other sites
  • Werner locked this topic
Guest
This topic is now closed to further replies.