ValveSoftware / gamescope

SteamOS session compositing window manager
Other
2.98k stars 198 forks source link

Sometimes Y for planes goes to 0 #198

Open Plagman opened 3 years ago

Plagman commented 3 years ago

Not clear when, seems maybe random. I've seen this both for main plane, where a game could appear aligned to the top of the screen instead of centered, and with notifications, when they appear in the top-right instead of bottom-right. Maybe kernel bug?

Plagman commented 3 years ago

Here's a dump of that plane in drm_info when that happens - very reproducible these days:

    ├───Plane 4
    │   ├───Object ID: 62
    │   ├───CRTCs: {0, 1, 2, 3, 4, 5, 6, 7}
    │   ├───FB ID: 115
    │   │   ├───Object ID: 115
    │   │   ├───Size: 650x200
    │   │   ├───Format: ARGB8888 (0x34325241)
    │   │   ├───Modifier: AMD(TILE_VERSION = GFX10_RBPLUS, TILE = GFX9_64K_R_X, DCC, DCC_RETILE, DCC_INDEPENDENT_64B, DCC_INDEPENDENT_128B, DCC_MAX_COMPRESSED_BLOCK = 64B, DCC_CONSTANT_ENCODE, PIPE_XOR_BITS = 2, PACKERS = 1) (0x200000008537b03)
    │   │   └───Planes:
    │   │       │   Plane 0: offset = 0, pitch = 3072
    │   │       │   Plane 1: offset = 786432, pitch = 1024
    │   │       └───Plane 2: offset = 794624, pitch = 1024
    │   ├───Formats:
    │   │   ├───XRGB8888 (0x34325258)
    │   │   ├───ARGB8888 (0x34325241)
    │   │   ├───RGBA8888 (0x34324152)
    │   │   ├───XBGR8888 (0x34324258)
    │   │   ├───ABGR8888 (0x34324241)
    │   │   └───RGB565 (0x36314752)
    │   └───Properties
    │       ├───"type" (immutable): enum {Overlay, Primary, Cursor} = Overlay
    │       ├───"FB_ID" (atomic): object framebuffer = 115
    │       │   ├───Object ID: 115
    │       │   ├───Size: 650x200
    │       │   ├───Format: ARGB8888 (0x34325241)
    │       │   ├───Modifier: AMD(TILE_VERSION = GFX10_RBPLUS, TILE = GFX9_64K_R_X, DCC, DCC_RETILE, DCC_INDEPENDENT_64B, DCC_INDEPENDENT_128B, DCC_MAX_COMPRESSED_BLOCK = 64B, DCC_CONSTANT_ENCODE, PIPE_XOR_BITS = 2, PACKERS = 1) (0x200000008537b03)
    │       │   └───Planes:
    │       │       │   Plane 0: offset = 0, pitch = 3072
    │       │       │   Plane 1: offset = 786432, pitch = 1024
    │       │       └───Plane 2: offset = 794624, pitch = 1024
    │       ├───"IN_FENCE_FD" (atomic): srange [-1, INT32_MAX] = -1
    │       ├───"CRTC_ID" (atomic): object CRTC = 70
    │       ├───"CRTC_X" (atomic): srange [INT32_MIN, INT32_MAX] = 667
    │       ├───"CRTC_Y" (atomic): srange [INT32_MIN, INT32_MAX] = 847
    │       ├───"CRTC_W" (atomic): range [0, INT32_MAX] = 133
    │       ├───"CRTC_H" (atomic): range [0, INT32_MAX] = 433
    │       ├───"SRC_X" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_Y" (atomic): range [0, UINT32_MAX] = 0
    │       ├───"SRC_W" (atomic): range [0, UINT32_MAX] = 650
    │       ├───"SRC_H" (atomic): range [0, UINT32_MAX] = 200
    │       ├───"IN_FORMATS" (immutable): blob = 63
    │       │   ├───AMD(TILE_VERSION = GFX10_RBPLUS, TILE = GFX9_64K_R_X, DCC, DCC_INDEPENDENT_64B, DCC_INDEPENDENT_128B, DCC_MAX_COMPRESSED_BLOCK = 64B, DCC_CONSTANT_ENCODE, PIPE_XOR_BITS = 2, PACKERS = 1) (0x200000008533b03)
    │       │   │   ├───XRGB8888 (0x34325258)
    │       │   │   ├───ARGB8888 (0x34325241)
    │       │   │   ├───RGBA8888 (0x34324152)
    │       │   │   ├───XBGR8888 (0x34324258)
    │       │   │   └───ABGR8888 (0x34324241)
    │       │   ├───AMD(TILE_VERSION = GFX10_RBPLUS, TILE = GFX9_64K_R_X, DCC, DCC_RETILE, DCC_INDEPENDENT_64B, DCC_INDEPENDENT_128B, DCC_MAX_COMPRESSED_BLOCK = 64B, DCC_CONSTANT_ENCODE, PIPE_XOR_BITS = 2, PACKERS = 1) (0x200000008537b03)
    │       │   │   ├───XRGB8888 (0x34325258)
    │       │   │   ├───ARGB8888 (0x34325241)
    │       │   │   ├───RGBA8888 (0x34324152)
    │       │   │   ├───XBGR8888 (0x34324258)
    │       │   │   └───ABGR8888 (0x34324241)
    │       │   ├───AMD(TILE_VERSION = GFX10_RBPLUS, TILE = GFX9_64K_R_X, PIPE_XOR_BITS = 2, PACKERS = 1) (0x200000008401b03)
    │       │   │   ├───XRGB8888 (0x34325258)
    │       │   │   ├───ARGB8888 (0x34325241)
    │       │   │   ├───RGBA8888 (0x34324152)
    │       │   │   ├───XBGR8888 (0x34324258)
    │       │   │   ├───ABGR8888 (0x34324241)
    │       │   │   └───RGB565 (0x36314752)
    │       │   ├───AMD(TILE_VERSION = GFX10_RBPLUS, TILE = GFX9_64K_S_X, PIPE_XOR_BITS = 2, PACKERS = 1) (0x200000008401903)
    │       │   │   ├───XRGB8888 (0x34325258)
    │       │   │   ├───ARGB8888 (0x34325241)
    │       │   │   ├───RGBA8888 (0x34324152)
    │       │   │   ├───XBGR8888 (0x34324258)
    │       │   │   ├───ABGR8888 (0x34324241)
    │       │   │   └───RGB565 (0x36314752)
    │       │   ├───AMD(TILE_VERSION = GFX9, TILE = GFX9_64K_D) (0x200000000000a01)
    │       │   ├───AMD(TILE_VERSION = GFX9, TILE = GFX9_64K_S) (0x200000000000901)
    │       │   │   ├───XRGB8888 (0x34325258)
    │       │   │   ├───ARGB8888 (0x34325241)
    │       │   │   ├───RGBA8888 (0x34324152)
    │       │   │   ├───XBGR8888 (0x34324258)
    │       │   │   ├───ABGR8888 (0x34324241)
    │       │   │   └───RGB565 (0x36314752)
    │       │   └───DRM_FORMAT_MOD_LINEAR (0x0)
    │       │       ├───XRGB8888 (0x34325258)
    │       │       ├───ARGB8888 (0x34325241)
    │       │       ├───RGBA8888 (0x34324152)
    │       │       ├───XBGR8888 (0x34324258)
    │       │       ├───ABGR8888 (0x34324241)
    │       │       └───RGB565 (0x36314752)
    │       ├───"alpha": range [0, UINT16_MAX] = 65535
    │       ├───"pixel blend mode": enum {None, Pre-multiplied} = Pre-multiplied
    │       └───"rotation": bitmask {rotate-0, rotate-90, rotate-180, rotate-270} = (rotate-270)

CRTC_X and CRTC_Y look correct, so the notification shouldn't happen in the top-right, which seems to confirm a kernel bug?

emersion commented 3 years ago

Indeed, the CRTC_* coords are relative to the CRTC and aren't rotated.