Help with cog in DRM mode on Orange Pi5+
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] -> [email protected]_registry(new id wl_registry@2) [689225.014] -> [email protected](new id wl_callback@3) [689225.217] [email protected]_registry(new id wl_registry@2) [689225.312] -> [email protected](1, "wl_compositor", 3) [689225.366] -> [email protected](2, "wpe_bridge", 1) [689225.415] -> [email protected](3, "wpe_dmabuf_pool_manager", 1) [689225.463] -> [email protected](4, "wl_shm", 1) [689225.491] -> [email protected](5, "zwp_linux_dmabuf_v1", 3) [689225.520] [email protected](new id wl_callback@3) [689225.560] -> [email protected](0) [689225.603] -> [email protected]_id(3) [689225.710] [email protected]_id(3) [689225.740] [email protected](1, "wl_compositor", 3) [689225.770] [email protected](2, "wpe_bridge", 1) [689225.796] -> [email protected](2, "wpe_bridge", 1, new id [unknown]@4) [689225.824] [email protected](3, "wpe_dmabuf_pool_manager", 1) [689225.847] [email protected](4, "wl_shm", 1) [689225.866] [email protected](5, "zwp_linux_dmabuf_v1", 3) [689225.883] [email protected](0) [689225.904] -> [email protected]() [689225.914] -> [email protected](new id wl_callback@3) [689225.974] [email protected](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] [email protected]() WPE-FDO-Message: 10:28:24.213: initialize =0 [689226.327] -> [email protected]_info(0) [689226.359] [email protected](new id wl_callback@3) [689226.400] -> [email protected](0) [689226.436] -> [email protected]_id(3) [689226.500] [email protected]_id(3) [689226.512] [email protected]_info(0) [689226.525] [email protected](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] -> [email protected]_registry(new id wl_registry@3) [689241.195] -> [email protected](new id wl_callback@5) [689241.279] [email protected]_registry(new id wl_registry@3) [689241.339] -> [email protected](1, "wl_compositor", 3) [689241.409] -> [email protected](2, "wpe_bridge", 1) [689241.459] -> [email protected](3, "wpe_dmabuf_pool_manager", 1) [689241.519] -> [email protected](4, "wl_shm", 1) [689241.572] -> [email protected](5, "zwp_linux_dmabuf_v1", 3) [689241.620] [email protected](new id wl_callback@5) [689241.662] -> [email protected](0) [689241.695] -> [email protected]_id(5) [689241.777] [email protected]_id(5) [689241.814] [email protected](1, "wl_compositor", 3) [689241.857] -> [email protected](1, "wl_compositor", 1, new id [unknown]@6) [689241.929] [email protected](2, "wpe_bridge", 1) [689241.977] -> [email protected](2, "wpe_bridge", 1, new id [unknown]@7) [689242.033] [email protected](3, "wpe_dmabuf_pool_manager", 1) [689242.086] -> [email protected](3, "wpe_dmabuf_pool_manager", 1, new id [unknown]@8) [689242.148] [email protected](4, "wl_shm", 1) [689242.194] [email protected](5, "zwp_linux_dmabuf_v1", 3) [689242.237] [email protected](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] -> [email protected]_surface(new id wl_surface@5) [689242.409] -> [email protected]_pool(new id wpe_dmabuf_pool@9, wl_surface@5) [689242.500] -> [email protected](wl_surface@5) [689242.529] -> [email protected](new id wl_callback@10) [689242.612] [email protected](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] [email protected](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] [email protected](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] [email protected]_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] [email protected]_pool(new id wpe_dmabuf_pool@9, wl_surface@5) [689243.453] [email protected](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] -> [email protected](1) WPE-FDO-Message: 10:28:24.230: Instance::registerSurface [689243.836] [email protected](new id wl_callback@10) [689243.875] -> [email protected](0) [689243.901] -> [email protected]_id(10) [689244.026] [email protected]_id(10) [689244.061] [email protected](1) [689244.118] [email protected](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] -> [email protected](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] [email protected](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.
Go for mainline/mesa/panfrost instead. I also failed to get it working on libmali, but worked like a charm on panfrost
@woutervanh Thanks, What distro did you use and did you have to build it from scratch ?
I'm using yocto, just master branch