Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Help with cog in DRM mode on Orange Pi5+ #610

Open
derickh-bd opened this issue Oct 16, 2023 · 3 comments
Open

Help with cog in DRM mode on Orange Pi5+ #610

derickh-bd opened this issue Oct 16, 2023 · 3 comments

Comments

@derickh-bd
Copy link

Hi,
I've been trying to get cog to run in DRM mode on an orange pi5+ board without any luck.

Nothing is rendered inside cog window using DRM platform (or x11 for that matter):

Environment:

HW: Orange Pi 5+

#cat /etc/os-release PRETTY_NAME="Orange Pi 1.0.6 Bullseye" NAME="Debian GNU/Linux" VERSION_ID="11" VERSION="11 (bullseye)" VERSION_CODENAME=bullseye

./kmscube
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
Using display 0x55aa155f20 with EGL version 1.4

EGL information:
version: "1.4 Valhall-"g6p0-01eac0""
vendor: "ARM"
client extensions: "EGL_EXT_client_extensions EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_KHR_platform_gbm"
display extensions: "EGL_NV_context_priority_realtime EGL_KHR_partial_update EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_KHR_no_config_context EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_yuv_surface EGL_EXT_pixel_format_float EGL_ARM_pixmap_multisample_discard EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_image_gl_colorspace EGL_EXT_create_context_robustness"

OpenGL ES 2.x information:
version: "OpenGL ES 3.2 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1"
shading language version: "OpenGL ES GLSL ES 3.20"
vendor: "ARM"
renderer: "Mali-LODX"
extensions: "GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_EXT_texture_compression_astc_decode_mode GL_EXT_texture_compression_astc_decode_mode_rgb9e5 GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisampled_render_to_texture GL_EXT_multisampled_render_to_texture2 GL_OES_surfaceless_context GL_OES_texture_stencil8 GL_EXT_shader_pixel_local_storage GL_ARM_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_ARM_mali_program_binary GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_texture_sRGB_decode GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_RG8 GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_texture_storage_multisample_2d_array GL_OES_shader_image_atomic GL_EXT_robustness GL_EXT_draw_buffers_indexed GL_OES_draw_buffers_indexed GL_EXT_texture_border_clamp GL_OES_texture_border_clamp GL_EXT_texture_cube_map_array GL_OES_texture_cube_map_array GL_OES_sample_variables GL_OES_sample_shading GL_OES_shader_multisample_interpolation GL_EXT_shader_io_blocks GL_OES_shader_io_blocks GL_EXT_tessellation_shader GL_OES_tessellation_shader GL_EXT_primitive_bounding_box GL_OES_primitive_bounding_box GL_EXT_geometry_shader GL_OES_geometry_shader GL_ANDROID_extension_pack_es31a GL_EXT_gpu_shader5 GL_OES_gpu_shader5 GL_EXT_texture_buffer GL_OES_texture_buffer GL_EXT_copy_image GL_OES_copy_image GL_EXT_shader_non_constant_global_initializers GL_EXT_color_buffer_half_float GL_EXT_unpack_subimage GL_EXT_color_buffer_float GL_EXT_float_blend GL_EXT_YUV_target GL_OVR_multiview GL_OVR_multiview2 GL_OVR_multiview_multisampled_render_to_texture GL_KHR_robustness GL_KHR_robust_buffer_access_behavior GL_EXT_draw_elements_base_vertex GL_OES_draw_elements_base_vertex GL_EXT_buffer_storage GL_EXT_texture_filter_anisotropic GL_OES_texture_float_linear GL_ARM_texture_unnormalized_coordinates GL_EXT_shader_framebuffer_fetch "`

Built from source:

  • Libwpe-1.14.1
  • wpebackend-fdo-1.14.2
  • wpewebkit-2.40.5
  • Cog (git master or 0.18)

Launch command:
COG_MODULEDIR=$PWD/platform ./launcher/cog --platform drm --platform-params="renderer=gles" https://www.google.com

Observation:
Nothing shown. (For x11 plugin window is shown but not updated)

Debug trace:

Cog-DRM-Message: 10:34:16.458: cog_drm_platform_setup
Cog-DRM-Message: 10:34:16.776: -----COG cog_drm_gles_renderer_new

(cog:6837): Cog-DRM-WARNING **: 10:34:16.778: cog_drm_gles_renderer_new: Using plane #54, crtc #82, connector #197 (atomic).
Cog-DRM-Message: 10:34:16.778: -----COG cog_drm_gles_renderer_set_rotation
Cog-DRM-Message: 10:34:16.778: -----COG cog_drm_gles_renderer_set_rotation
Cog-DRM-Message: 10:34:17.035: -----COG cog_drm_gles_renderer_initialize
WPE-FDO-Message: 10:34:17.063: wpe_fdo_initialize_for_egl_display
WPE-FDO-Message: 10:34:17.063: ImplEGL::ImplEGL
WPE-FDO-Message: 10:34:17.064: Instance::Instance
WPE-FDO-Message: 10:34:17.064: ImplEGL::initialize

Cog-DRM-Message: 10:34:17.065: cog_drm_platform_get_view_backend
Cog-DRM-Message: 10:34:17.065: -----COG cog_drm_gles_renderer_create_exportable
Cog-DRM-Message: 10:34:17.065: -----COG cog_drm_gles_renderer_transformed_logical_size
WPE-FDO-Message: 10:34:17.065: wpe_view_backend_exportable_fdo_egl_create
WPE-FDO-Message: 10:34:17.065: ClientBundleEGL::ClientBundleEGL
Cog-DRM-Message: 10:34:17.065: -----COG cog_drm_gles_renderer_create_exportable: exportable = 1
WPE-FDO-Message: 10:34:17.077: ViewBackend::initialize()
Cog-DRM-Message: 10:34:17.077: cog_drm_platform_init_web_view
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
_wpe_loader_interface: _wpe_renderer_host_interface
WPE-FDO-Message: 10:34:17.086: Instance::createClient
_wpe_loader_interface: _wpe_renderer_backend_egl_interface
WPE-FDO-Message: 10:34:17.155: wpe_renderer_backend_egl_interface::create
WPE-FDO-Message: 10:34:17.155: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 1
WPE-FDO-Message: 10:34:17.155: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 2
WPE-FDO-Message: 10:34:17.155: initialize =0
WPE-FDO-Message: 10:34:17.155: wpe_renderer_backend_egl_interface::get_native_display
WPE-FDO-Message: 10:34:17.156: BackendWayland::nativeDisplay
WPE-FDO-Message: 10:34:17.156: wpe_renderer_backend_egl_interface::get_platform
WPE-FDO-Message: 10:34:17.156: BackendWayland::platform
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
_wpe_loader_interface: _wpe_renderer_backend_egl_target_interface
WPE-FDO-Message: 10:34:17.167: Target::Target
WPE-FDO-Message: 10:34:17.167: Target::initialize: backend type: 2
WPE-FDO-Message: 10:34:17.167: BaseTarget::initialize 2 1/3
WPE-FDO-Message: 10:34:17.168: BaseTarget::initialize 2/3
WPE-FDO-Message: 10:34:17.168: BaseTarget::initialize 3/3
WPE-FDO-Message: 10:34:17.168: wl_compositor_interface: wl_global_create.wl_global_bind_func_t 1
WPE-FDO-Message: 10:34:17.168: wl_compositor_interface: wl_global_create.wl_global_bind_func_t 2
WPE-FDO-Message: 10:34:17.168: wl_compositor_interface: wl_global_createw.wl_global_bind_func_t 3
WPE-FDO-Message: 10:34:17.168: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 1
WPE-FDO-Message: 10:34:17.168: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 2
WPE-FDO-Message: 10:34:17.168: wpe_dmabuf_pool_manager_interface:wl_global_createwl_global_bind_func_t 1
WPE-FDO-Message: 10:34:17.168: wpe_dmabuf_pool_manager_interface:wl_global_createwl_global_bind_func_t 2
WPE-FDO-Message: 10:34:17.168: wl_compositor_interface create surface 1/3 operator()
WPE-FDO-Message: 10:34:17.168: wl_compositor_interface xreate surface 2/3 operator()
WPE-FDO-Message: 10:34:17.168: Surface::Surface
WPE-FDO-Message: 10:34:17.168: connect bridge 1/2
WPE-FDO-Message: 10:34:17.168: connect bridge 2/2
WPE-FDO-Message: 10:34:17.168: Instance::registerSurface
WPE-FDO-Message: 10:34:17.169: TargetWayland::TargetWayland
WPE-FDO-Message: 10:34:17.169: ViewBackend::didReceiveMessage()
WPE-FDO-Message: 10:34:17.169: wpe_renderer_backend_egl_target_interface.get_native_window
WPE-FDO-Message: 10:34:17.169: ViewBackend::registerSurface()
WPE-FDO-Message: 10:34:17.169: TargetWayland::nativeWindow: 805329904
WPE-FDO-Message: 10:34:17.169: Instance::registerViewBackend
WPE-FDO-Message: 10:34:17.236: wpe_renderer_backend_egl_target_interface.resize
WPE-FDO-Message: 10:34:17.236: TargetWayland::resize 3840, 2160
WPE-FDO-Message: 10:34:17.237: wpe_renderer_backend_egl_target_interface.frame_will_render
WPE-FDO-Message: 10:34:17.237: TargetWayland::frameWillRender
WPE-FDO-Message: 10:34:17.237: BaseTarget::requestFrame
WPE-FDO-Message: 10:34:17.299: wpe_renderer_backend_egl_target_interface.frame_rendered
WPE-FDO-Message: 10:34:17.299: TargetWayland::frameRendered
WPE-FDO-Message: 10:34:17.299: wl_surface_interface.frame 1/4
WPE-FDO-Message: 10:34:17.299: wl_surface_interface.frame 2/4
WPE-FDO-Message: 10:34:17.299: wl_surface_interface.frame 3/4
WPE-FDO-Message: 10:34:17.299: wl_surface_interface.frame 4/4
WPE-FDO-Message: 10:34:17.299: Surface::addFrameCallback
Cog-Core-Message: 10:34:17.300: http://www.google.com/ Load started.
Cog-Core-Message: 10:34:17.334: https://www.google.com/ Redirected.
Cog-Core-Message: 10:34:17.823: https://www.google.com/ Loading...
Cog-Core-Message: 10:34:21.161: https://www.google.com/ Loaded successfully.

WPE-FDO-Message: 10:34:23.082: ViewBackend::unregisterSurface()
WPE-FDO-Message: 10:34:23.083: Instance::unregisterViewBackend
Cog-DRM-Message: 10:34:23.083: -----COG cog_drm_gles_renderer_destroy
cog: ../src/dispatch_common.c:858: epoxy_get_proc_address: Assertion `0 && "Couldn't find current GLX or EGL context.\n"' failed.
Aborted

Again, but with wayland debugging enabled:
`
rangepi@orangepi5plus:~/repos/cog/build$ ./run_cog.sh
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
WPE-FDO-Message: 10:28:24.108: wpe_fdo_initialize_for_egl_display
WPE-FDO-Message: 10:28:24.108: ImplEGL::ImplEGL
WPE-FDO-Message: 10:28:24.108: Instance::Instance
WPE-FDO-Message: 10:28:24.108: ImplEGL::initialize

(cog:6629): WPE-FDO-WARNING **: 10:28:24.108: ImplEGL::initialize 3. initialize

(cog:6629): WPE-FDO-WARNING **: 10:28:24.108: 4. initialize

(cog:6629): WPE-FDO-WARNING **: 10:28:24.108: ImplEGL::initialize 5. initialize

(cog:6629): WPE-FDO-WARNING **: 10:28:24.108: ImplEGL::initialize 5. initialize
WPE-FDO-Message: 10:28:24.109: wpe_view_backend_exportable_fdo_egl_create
WPE-FDO-Message: 10:28:24.109: ClientBundleEGL::ClientBundleEGL
WPE-FDO-Message: 10:28:24.120: ViewBackend::initialize()
_wpe_loader_interface: _wpe_renderer_host_interface
WPE-FDO-Message: 10:28:24.129: Instance::createClient
_wpe_loader_interface: _wpe_renderer_backend_egl_interface
WPE-FDO-Message: 10:28:24.211: wpe_renderer_backend_egl_interface::create
[689224.978] -> wl_display@1.get_registry(new id wl_registry@2)
[689225.014] -> wl_display@1.sync(new id wl_callback@3)
[689225.217] wl_display@1.get_registry(new id wl_registry@2)
[689225.312] -> wl_registry@2.global(1, "wl_compositor", 3)
[689225.366] -> wl_registry@2.global(2, "wpe_bridge", 1)
[689225.415] -> wl_registry@2.global(3, "wpe_dmabuf_pool_manager", 1)
[689225.463] -> wl_registry@2.global(4, "wl_shm", 1)
[689225.491] -> wl_registry@2.global(5, "zwp_linux_dmabuf_v1", 3)
[689225.520] wl_display@1.sync(new id wl_callback@3)
[689225.560] -> wl_callback@3.done(0)
[689225.603] -> wl_display@1.delete_id(3)
[689225.710] wl_display@1.delete_id(3)
[689225.740] wl_registry@2.global(1, "wl_compositor", 3)
[689225.770] wl_registry@2.global(2, "wpe_bridge", 1)
[689225.796] -> wl_registry@2.bind(2, "wpe_bridge", 1, new id [unknown]@4)
[689225.824] wl_registry@2.global(3, "wpe_dmabuf_pool_manager", 1)
[689225.847] wl_registry@2.global(4, "wl_shm", 1)
[689225.866] wl_registry@2.global(5, "zwp_linux_dmabuf_v1", 3)
[689225.883] wl_callback@3.done(0)
[689225.904] -> wpe_bridge@4.initialize()
[689225.914] -> wl_display@1.sync(new id wl_callback@3)
[689225.974] wl_registry@2.bind(2, "wpe_bridge", 1, new id [unknown]@4)
WPE-FDO-Message: 10:28:24.212: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 1
WPE-FDO-Message: 10:28:24.212: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 2
[689226.238] wpe_bridge@4.initialize()
WPE-FDO-Message: 10:28:24.213: initialize =0
[689226.327] -> wpe_bridge@4.implementation_info(0)
[689226.359] wl_display@1.sync(new id wl_callback@3)
[689226.400] -> wl_callback@3.done(0)
[689226.436] -> wl_display@1.delete_id(3)
[689226.500] wl_display@1.delete_id(3)
[689226.512] wpe_bridge@4.implementation_info(0)
[689226.525] wl_callback@3.done(0)
WPE-FDO-Message: 10:28:24.213: wpe_renderer_backend_egl_interface::get_native_display
WPE-FDO-Message: 10:28:24.213: BackendWayland::nativeDisplay
WPE-FDO-Message: 10:28:24.213: wpe_renderer_backend_egl_interface::get_platform
WPE-FDO-Message: 10:28:24.213: BackendWayland::platform
arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '5'.
_wpe_loader_interface: _wpe_renderer_backend_egl_target_interface
WPE-FDO-Message: 10:28:24.227: Target::Target
WPE-FDO-Message: 10:28:24.227: Target::initialize: backend type: 2
WPE-FDO-Message: 10:28:24.227: BaseTarget::initialize 2 1/3
[689241.169] -> wl_display@1.get_registry(new id wl_registry@3)
[689241.195] -> wl_display@1.sync(new id wl_callback@5)
[689241.279] wl_display@1.get_registry(new id wl_registry@3)
[689241.339] -> wl_registry@3.global(1, "wl_compositor", 3)
[689241.409] -> wl_registry@3.global(2, "wpe_bridge", 1)
[689241.459] -> wl_registry@3.global(3, "wpe_dmabuf_pool_manager", 1)
[689241.519] -> wl_registry@3.global(4, "wl_shm", 1)
[689241.572] -> wl_registry@3.global(5, "zwp_linux_dmabuf_v1", 3)
[689241.620] wl_display@1.sync(new id wl_callback@5)
[689241.662] -> wl_callback@5.done(0)
[689241.695] -> wl_display@1.delete_id(5)
[689241.777] wl_display@1.delete_id(5)
[689241.814] wl_registry@3.global(1, "wl_compositor", 3)
[689241.857] -> wl_registry@3.bind(1, "wl_compositor", 1, new id [unknown]@6)
[689241.929] wl_registry@3.global(2, "wpe_bridge", 1)
[689241.977] -> wl_registry@3.bind(2, "wpe_bridge", 1, new id [unknown]@7)
[689242.033] wl_registry@3.global(3, "wpe_dmabuf_pool_manager", 1)
[689242.086] -> wl_registry@3.bind(3, "wpe_dmabuf_pool_manager", 1, new id [unknown]@8)
[689242.148] wl_registry@3.global(4, "wl_shm", 1)
[689242.194] wl_registry@3.global(5, "zwp_linux_dmabuf_v1", 3)
[689242.237] wl_callback@5.done(0)
WPE-FDO-Message: 10:28:24.229: BaseTarget::initialize 2/3
WPE-FDO-Message: 10:28:24.229: BaseTarget::initialize 3/3
[689242.374] -> wl_compositor@6.create_surface(new id wl_surface@5)
[689242.409] -> wpe_dmabuf_pool_manager@8.create_pool(new id wpe_dmabuf_pool@9, wl_surface@5)
[689242.500] -> wpe_bridge@7.connect(wl_surface@5)
[689242.529] -> wl_display@1.sync(new id wl_callback@10)
[689242.612] wl_registry@3.bind(1, "wl_compositor", 1, new id [unknown]@6)
WPE-FDO-Message: 10:28:24.229: wl_compositor_interface: wl_global_create.wl_global_bind_func_t 1
WPE-FDO-Message: 10:28:24.229: wl_compositor_interface: wl_global_create.wl_global_bind_func_t 2
WPE-FDO-Message: 10:28:24.229: wl_compositor_interface: wl_global_createw.wl_global_bind_func_t 3
[689242.847] wl_registry@3.bind(2, "wpe_bridge", 1, new id [unknown]@7)
WPE-FDO-Message: 10:28:24.229: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 1
WPE-FDO-Message: 10:28:24.229: wpe_bridge_interface: wl_global_create.wl_global_bind_func_t 2
[689242.999] wl_registry@3.bind(3, "wpe_dmabuf_pool_manager", 1, new id [unknown]@8)
WPE-FDO-Message: 10:28:24.229: wpe_dmabuf_pool_manager_interface:wl_global_createwl_global_bind_func_t 1
WPE-FDO-Message: 10:28:24.229: wpe_dmabuf_pool_manager_interface:wl_global_createwl_global_bind_func_t 2
[689243.151] wl_compositor@6.create_surface(new id wl_surface@5)
WPE-FDO-Message: 10:28:24.229: wl_compositor_interface create surface 1/3 operator()
WPE-FDO-Message: 10:28:24.230: wl_compositor_interface xreate surface 2/3 operator()
WPE-FDO-Message: 10:28:24.230: Surface::Surface
[689243.391] wpe_dmabuf_pool_manager@8.create_pool(new id wpe_dmabuf_pool@9, wl_surface@5)
[689243.453] wpe_bridge@7.connect(wl_surface@5)
WPE-FDO-Message: 10:28:24.230: connect breidge operator() 1
WPE-FDO-Message: 10:28:24.230: connect breidge operator() 2
[689243.621] -> wpe_bridge@7.connected(1)
WPE-FDO-Message: 10:28:24.230: Instance::registerSurface
[689243.836] wl_display@1.sync(new id wl_callback@10)
[689243.875] -> wl_callback@10.done(0)
[689243.901] -> wl_display@1.delete_id(10)
[689244.026] wl_display@1.delete_id(10)
[689244.061] wpe_bridge@7.connected(1)
[689244.118] wl_callback@10.done(0)
WPE-FDO-Message: 10:28:24.230: TargetWayland::TargetWayland
WPE-FDO-Message: 10:28:24.230: ViewBackend::didReceiveMessage()
WPE-FDO-Message: 10:28:24.230: ViewBackend::registerSurface()
WPE-FDO-Message: 10:28:24.230: wpe_renderer_backend_egl_target_interface.get_native_window
WPE-FDO-Message: 10:28:24.231: TargetWayland::nativeWindow: 1342201216
WPE-FDO-Message: 10:28:24.231: Instance::registerViewBackend
WPE-FDO-Message: 10:28:24.302: wpe_renderer_backend_egl_target_interface.resize
WPE-FDO-Message: 10:28:24.302: TargetWayland::resize 1024, 768
WPE-FDO-Message: 10:28:24.302: wpe_renderer_backend_egl_target_interface.frame_will_render
WPE-FDO-Message: 10:28:24.302: TargetWayland::frameWillRender
WPE-FDO-Message: 10:28:24.302: BaseTarget::requestFrame
[689315.523] -> wl_surface@5.frame(new id wl_callback@10)
WPE-FDO-Message: 10:28:24.317: wpe_renderer_backend_egl_target_interface.frame_rendered
WPE-FDO-Message: 10:28:24.317: TargetWayland::frameRendered
[689331.155] wl_surface@5.frame(new id wl_callback@10)
WPE-FDO-Message: 10:28:24.317: wl_surface_interface.frame 1/4
WPE-FDO-Message: 10:28:24.318: wl_surface_interface.frame 2/4
WPE-FDO-Message: 10:28:24.318: wl_surface_interface.frame 3/4
WPE-FDO-Message: 10:28:24.318: wl_surface_interface.frame 4/4
WPE-FDO-Message: 10:28:24.318: Surface::addFrameCallback
Cog-Core-Message: 10:28:24.318: file:/// Load started.
Cog-Core-Message: 10:28:24.349: file:/// Loading...
Cog-Core-Message: 10:28:24.378: file:/// Loaded successfully.
WPE-FDO-Message: 10:28:29.533: ViewBackend::unregisterSurface()
WPE-FDO-Message: 10:28:29.533: Instance::unregisterViewBackend
`

More Observation(s):

The .export_fdo_egl_image callback for DRM gles platform is not being called at any point.

static const struct wpe_view_backend_exportable_fdo_egl_client client = {
.export_fdo_egl_image = cog_drm_gles_renderer_handle_egl_image,
};

I’ve found this structure below in the code that seems relevent.
From the source file /home/orangepi/repos/wpebackend-fdo-1.14.2/src/ws.cpp

static const struct wl_surface_interface s_surfaceInterface = {
// destroy
[](struct wl_client*, struct wl_resource*) { },
// attach
// !!!! Not being called !!!!
[](struct wl_client*, struct wl_resource* surfaceResource, struct wl_resource* bufferResource, int32_t, int32_t)
{

   g_message("wl_surface_interface.attach ");
   auto& surface = *static_cast<Surface*>(wl_resource_get_user_data(surfaceResource));
   Instance::singleton().impl().surfaceAttach(surface, bufferResource);

},
// !!!! damage !!!
[](struct wl_client*, struct wl_resource*, int32_t, int32_t, int32_t, int32_t) { g_message("wl_surface_interface.damage ");},
// frame
// Called
[](struct wl_client* client, struct wl_resource* surfaceResource, uint32_t callback)
{
g_message("wl_surface_interface.frame 1/4");
auto& surface = static_cast<Surface>(wl_resource_get_user_data(surfaceResource));
if (!surface.apiClient)
return;

   g_message("wl_surface_interface.frame 2/4");
   struct wl_resource* callbackResource = wl_resource_create(client, &wl_callback_interface, 1, callback);
   if (!callbackResource) {
       wl_resource_post_no_memory(surfaceResource);
       return;
   }


   g_message("wl_surface_interface.frame 3/4");
   wl_resource_set_implementation(callbackResource, nullptr, nullptr,
       [](struct wl_resource* resource) {
           wl_list_remove(wl_resource_get_link(resource));
       });
   g_message("wl_surface_interface.frame 4/4");
   surface.addFrameCallback(callbackResource);

},
// set_opaque_region
[](struct wl_client*, struct wl_resource*, struct wl_resource*) { g_message("wl_surface_interface.set_opaque_region ");},
// set_input_region
[](struct wl_client*, struct wl_resource*, struct wl_resource*) {g_message("wl_surface_interface.set_input_region ");},
// commit
// !!! not being called !!!
[](struct wl_client*, struct wl_resource* surfaceResource)
{

   g_message("wl_surface_interface.commit ");       
   auto& surface = *static_cast<Surface*>(wl_resource_get_user_data(surfaceResource));
   surface.commit();
   WS::Instance::singleton().impl().surfaceCommit(surface);

},
// set_buffer_transform
[](struct wl_client*, struct wl_resource*, int32_t) { },
// set_buffer_scale
[](struct wl_client*, struct wl_resource*, int32_t) { },
#if (WAYLAND_VERSION_MAJOR > 1) || (WAYLAND_VERSION_MAJOR == 1 && WAYLAND_VERSION_MINOR >= 10)
// damage_buffer
// not being called
[](struct wl_client*, struct wl_resource*, int32_t, int32_t, int32_t, int32_t) { g_message("wl_surface_interface.damage_buffer");},
#endif
};

I have commented above where the functions are not being called. It seems they should ?!?
I’m not able to find where or what they should be invoked by.

It just seems like something very simple is wrong/missing.

@woutervanh
Copy link

Go for mainline/mesa/panfrost instead. I also failed to get it working on libmali, but worked like a charm on panfrost

@derickh-bd
Copy link
Author

@woutervanh
Thanks,
What distro did you use and did you have to build it from scratch ?

@woutervanh
Copy link

I'm using yocto, just master branch

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants