Hi all,
I tried to get COG browser running on amm335x based board similiar to am335x-evm
Therefore I builded the TI SDK with the following commands:
$ git clone git.ti.com/.../oe-layersetup.git tisdk
$ cd tisdk
$ ./oe-layertool-setup.sh -f configs/processor-sdk/processor-sdk-09.01.00-config.txt
$ cd build
$ . conf/setenv
$ MACHINE=am335x-evm bitbake -k tisdk-default-image
And added our own DTS to the kernel build. Linux boots fine and I see
on start the DEMO application running, so all fine!
Booting with rootfs mounted as a NFS.
Running modetest is also fine. But starting kmscube fails with error
"""
cbc-linux: ~> kmscube
MESA: info: Loaded libpvr_dri_support.so
Using display 0x1a2018 with EGL version 1.4
===================================
EGL information:
version: "1.4"
vendor: "Mesa Project"
client extensions: "EGL_EXT_client_extensions EGL_EXT_device_base EGL_EXT_device_enumeration
EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug
EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_EXT_platform_x11
EGL_KHR_platform_x11 EGL_EXT_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm
EGL_MESA_platform_surfaceless"
display extensions: "EGL_EXT_buffer_age EGL_EXT_create_context_robustness
EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_yuv_surface
EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses
EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image
EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context
EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync
EGL_MESA_configless_context EGL_MESA_drm_image EGL_WL_bind_wayland_display EGL_IMG_cl_image "
===================================
OpenGL ES 2.x information:
version: "OpenGL ES 2.0 build 1.17@4948957"
shading language version: "OpenGL ES GLSL ES 1.00 build 1.17@4948957"
vendor: "Imagination Technologies"
renderer: "PowerVR SGX 530"
extensions: "GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth_texture
GL_OES_egl_sync GL_OES_element_index_uint GL_OES_EGL_image GL_OES_EGL_image_external
GL_OES_fbo_render_mipmap GL_OES_fragment_precision_high GL_OES_get_program_binary GL_OES_mapbuffer
GL_OES_packed_depth_stencil GL_OES_required_internalformat GL_OES_rgb8_rgba8
GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_float
GL_OES_texture_half_float GL_OES_vertex_array_object GL_OES_vertex_half_float GL_EXT_blend_minmax
GL_EXT_discard_framebuffer GL_EXT_multi_draw_arrays GL_EXT_multisampled_render_to_texture
GL_EXT_shader_texture_lod GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg
GL_IMG_multisampled_render_to_texture GL_IMG_program_binary GL_IMG_read_format GL_IMG_shader_binary
GL_IMG_texture_compression_pvrtc GL_IMG_texture_format_BGRA8888 GL_IMG_texture_npot
GL_IMG_uniform_buffer_object GL_KHR_debug GL_EXT_texture_storage"
===================================
Using modifier ffffffffffffff
failed to set mode: Invalid argument
cbc-linux: ~>
"""
DTS regarding panel setup is the same as in am335x-evm.dts, no difference
regarding panel, lcd, backlight nodes...
just other setup in driver from drivers/gpu/drm/panel/panel-simple.c
is used...
Than adding layer
https://github.com/Igalia/meta-webkit
commit c3305f69a42081153a02c5263aff3859009361bf (HEAD -> main, origin/master, origin/main,
origin/HEAD)
Author: Pablo Saavedra <psaavedra@igalia.com>
Date: Thu Jan 25 16:11:32 2024 +0100
ci: update the test job definitions
and adding to auto.conf
IMAGE_INSTALL:append = " wpewebkit cog "
PREFERRED_PROVIDER_virtual/wpebackend = "wpebackend-fdo"
PACKAGECONFIG:remove:pn-wpewebkit = " jit"
So I have cog binary in rootfs. Starting cog drops the following
error messages:
"""
cbc-linux: ~> cog -P wl google.de
MESA: info: Loaded libpvr_dri_support.so
PVR:(Error): PVRDRICreateScreenImpl: Failed to create display device (err=19) [0, ]
MESA: info: Unloaded libpvr_dri_support.so
libEGL warning: egl: failed to create dri2 screen
MESA: info: Loaded libpvr_dri_support.so
PVR:(Error): PVRDRICreateScreenImpl: Failed to create display device (err=19) [0, ]
MESA: info: Unloaded libpvr_dri_support.so
libEGL warning: egl: failed to create dri2 screen
"""
Okay -19 -> ENODEV ??
/dev/dri/card0 is there! modetest detects the correct settings...
Also we see the opened webpage! But cog runs with 100% cpu time
if any mouse action is done on the webpage and I suspect it runs
without GPU support.
Is there any chance to see, that GPU drivers are used?
My assumption is, that the GPU driver cannot open the display,
and so it falls back to software rendering ...
How can I debug this? How can I find out, how to solve:
PVR:(Error): PVRDRICreateScreenImpl: Failed to create display device (err=19) [0, ]
Any hints/ideas?
thanks in advance
Sidenote: I have also a 5.10 based kernel running with mainline
yocto layers and ti-sgx* recipes from meta-ti
kmscube runs there fine with 60fps and shows on start that
GPU drivers are used.