Igalia / cog

WPE launcher and webapp container
MIT License
230 stars 56 forks source link

Rockchip-drm unsupported format modifier #434

Open B0b0A opened 2 years ago

B0b0A commented 2 years ago

When I am trying to start cog with drm platform the browser does not render. Cog reports that the webpage has loaded successfully but the kernel reports: [61291.046925] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x810000000000001

I am using the latest rockchip VOP2 driver on the 5.18-rc4 kernel with mesa-21.3.5 panfrost.

Other people have also had this issue with other apps and the following conclusion is from their founding:

This message is correct. This corresponds to DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED and the VOP2 driver doesn't support this. The app [cog] seems to use DRM_FORMAT_XRGB8888 which ends up being PIPE_FORMAT_B8G8R8_UNORM in MESA. In panfrost_afbc_format() we have:

    /* Don't allow swizzled formats on v7 */
    switch (format) {
    case PIPE_FORMAT_B8G8R8A8_UNORM:
    case PIPE_FORMAT_B8G8R8X8_UNORM:
    case PIPE_FORMAT_A8R8G8B8_UNORM:
    case PIPE_FORMAT_X8R8G8B8_UNORM:
    case PIPE_FORMAT_X8B8G8R8_UNORM:
    case PIPE_FORMAT_A8B8G8R8_UNORM:
    case PIPE_FORMAT_B8G8R8_UNORM:
    case PIPE_FORMAT_B5G6R5_UNORM:
            if (dev->arch >= 7)
                    return PIPE_FORMAT_NONE;

            break;
    default:
            break;
    }

This means the driver won't do AFBC with that format and picks DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED instead.

When I use weston - wayland and cog with wl platform then it renders fine meaning weston is clever enough to not pass that into the VOP2 driver, but apparently cog isn't.

To fix this issue I would not like to patch the upper layers to do such translation but would like for cog to choose the correct format.

I am using cog 0.12.4 (WPE WebKit 2.34.6)

Thank you.

simonchen007 commented 10 months ago

have you resolved this issue ?

macpijan commented 1 month ago

This issue still seems to be present with 0.18.2 (WPE WebKit 2.44.0) on RK3566.

In my case I am getting in dmesg:

[ 4084.842014] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x800000000000351
[ 4084.845327] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x800000000000351
[ 4084.847856] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x800000000000351
[ 4085.731582] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x800000000000351
[ 4085.735638] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x800000000000351
[ 4085.741012] rockchip-drm display-subsystem: [drm] *ERROR* Unsupported format modifier 0x800000000000351
simonchen007 commented 1 month ago

I have made the COG works with the RK3566 without this issue, but poor performance, so , gave up COG and back to chromium. @macpijan

macpijan commented 1 month ago

Interesting @simonchen007 , can you please share some more details what you did to make it work?

simonchen007 commented 1 month ago

@macpijan it's so long, I remember I made some I use COG 0.18.0 + wpewebkit 2.38.6, and made some patchs for them.