Skip to content

drm: support tiled displays as a single logical output - #2344

Open
arnoutzw wants to merge 1 commit into
ValveSoftware:masterfrom
arnoutzw:imac5k-polaris
Open

drm: support tiled displays as a single logical output#2344
arnoutzw wants to merge 1 commit into
ValveSoftware:masterfrom
arnoutzw:imac5k-polaris

Conversation

@arnoutzw

Copy link
Copy Markdown

Summary

Add DRM TILE support to the embedded backend so a tiled monitor is driven as one logical output instead of selecting only one connector.

This change:

  • parses immutable connector TILE blobs and normalizes selection to tile (0,0)
  • validates that the complete tile group is connected
  • assigns a distinct CRTC and primary plane to every tile
  • exposes the combined logical resolution and physical dimensions
  • forces full composition for tiled groups, then crops one logical framebuffer across the tile primary planes in a single atomic commit
  • modesets every connector/CRTC in the group together
  • keeps single-connector behavior unchanged
  • disables VRR and the existing single-CRTC color-management path for tiled groups

Problem

The 5K panel in the iMac18,3 is exposed by DRM as a 2x1 tile group:

  • eDP-1: tile (0,0), 2560x2880
  • DP-1: tile (1,0), 2560x2880

Gamescope previously selected only one connector. In an embedded Steam/Game Mode session this left the physical 5120x2880 display black or only partially driven, even though desktop compositors with tiled-output support could use the panel.

Testing

Hardware-tested on an Apple iMac18,3 with an AMD Radeon Pro 580X (Polaris10), amdgpu, and a 5120x2880@60 panel exposed as the two connectors above.

Observed with the patched embedded session:

Using DRM TILE group 1 as logical 5120x2880 output (2x1 tiles)
  tile 0,0: eDP-1 -> CRTC 64, primary plane 59
  tile 1,0: DP-1 -> CRTC 67, primary plane 56
Updating mode for xwayland server #0: 5120x2880@60

The Steam Game Mode UI was visible and usable across the complete panel. DRM diagnostics also showed both tile planes scanning out cropped halves of the same 5120x2880 framebuffer.

The hardware run used the 3.16.25-based version of this patch. This branch has subsequently been rebased onto current master, adapted to the current FrameInfo_t::LayerStack_t API, and compile-checked with:

meson setup build --reconfigure
ninja -C build src/gamescope

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

Successfully merging this pull request may close these issues.

1 participant