Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • W weston
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 342
    • Issues 342
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 131
    • Merge requests 131
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • waylandwayland
  • weston
  • Issues
  • #429
Closed
Open
Issue created Sep 02, 2020 by Pekka Paalanen@pqMaintainer

Prune DRM modifier list when enabling a new output

Enabling a new output with other outputs already existing can fail for the first modifier that GBM picks. An example of this is running out of available bandwidth on Intel when using a specific modifier for one output, leaving very little room to enable any other output.

Therefore, Weston should do something like this when enabling a new output:

  1. Get the primary plane IN_FORMATS as the modifier list.
  2. Create a GBM surface with the modifier list.
  3. glClear(); eglSwapBuffers();
  4. gbm_surface_lock_front_buffer() to get a buffer.
  5. Do a TEST_ONLY atomic commit with the buffer on the primary plane.
  6. gbm_surface_release_buffer();
  7. If the test commit fails, remove the modifier used by the buffer from the modifier list, destroy the GBM surface, and go to 2.

But this is not enough, if an existing output is using a modifier that consumes all available resources. Therefore if the modifier list becomes empty, we have to start pruning the modifier lists of other outputs and then repeat the above at each step.

But this leads to combinatorial explosion to test: on which existing output do you drop the current modifier first? Second? Then?

cc @danvet @emersion

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking