Skip to content
Snippets Groups Projects

Introduce wlr_raster

Open Alexander Orzechowski requested to merge Nefsen402/wlroots:wlr_raster into master

Incorporates some ideas from: #3450

This PR is a big step forward in terms of multigpu as we are removing assumptions about what renderers might be used. For now, multigpu is handled completely by the backend in which case wlr_raster leaves that all alone. Future plans will lift responsibility away from backends for multigpu and allow for different renderers to run on different outputs so that we can stop doing the worst possible thing: Funneling everything through an arbitrary GPU for compositing then blitting every frame for other outputs.

This PR makes no breaking changes. Compositors that continue to pass a renderer into wlr_compositor can continue to use wlr_client_buffer until its removal. This PR introduces a new abstraction called wlr_raster that creates an interface wlr_raster_from_surface that can be called on a wlr_compositor without a renderer.

This replaces a hack for wlr_scene partial texture upload.

Edited by Alexander Orzechowski

Merge request reports

Members who can merge are allowed to add commits.

Pipeline #1290093 passed

Pipeline passed for dc67a853 on Nefsen402:wlr_raster

Approval is optional
Merge blocked: 2 checks failed
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Alexander Orzechowski changed the description

    changed the description

  • Alexander Orzechowski changed the description

    changed the description

  • added 20 commits

    • f2f54134...91943a68 - 5 commits from branch wlroots:master
    • e7306348 - render: replace wlr_texture_write_pixels with update_from_buffer
    • a2c13bbc - wlr_raster: Introduce new abstraction
    • e894e70e - wlr_raster: Introduce wlr_raster_from_pixels
    • a8dd6746 - renderer/pixman: Nuke wlr_pixman_texture_get_image
    • c01e99b7 - wlr_renderer: Introduce wlr_renderer_raster_upload
    • b756c375 - Nuke wlr_client_buffer
    • 3a1d38ae - wlr_renderer: Switch texture rendering functions to take wlr_raster
    • 681d2987 - wlr_linux_dmabuf: Refactor to prevent double dmabuf import
    • 07d2fd8d - wlr_texture: Drop wlr_texture_from_dmabuf
    • bd769aeb - wlr_texture: Drop wlr_texture_from_pixels
    • 9b9aec6f - wlr_texture: Drop wlr_texure_from_buffer
    • fea6b076 - wlr_texture: Update wlr_texture_update_from_buffer to use wlr_raster
    • 22694987 - cursor: Move wlr_output_cursor_set_buffer to wlr_raster
    • 6a6210d9 - wlr_scene_buffer: Rework to use wlr_raster
    • caaf5d4b - Re implement partial texture uploads for surfaces and immediate buffer unlocking

    Compare with previous version

  • Alexander Orzechowski marked the checklist item Fix all examples as completed

    marked the checklist item Fix all examples as completed

  • Alexander Orzechowski marked the checklist item Add documentation as completed

    marked the checklist item Add documentation as completed

  • added 21 commits

    • caaf5d4b...c20468cf - 2 commits from branch wlroots:master
    • 2579225d - render: replace wlr_texture_write_pixels with update_from_buffer
    • d7e473fb - wlr_raster: Introduce new abstraction
    • 5f67ce0c - wlr_raster: Introduce wlr_raster_from_pixels
    • 7265f497 - renderer/pixman: Nuke wlr_pixman_texture_get_image
    • 98a05dbd - wlr_renderer: Introduce wlr_renderer_raster_upload
    • e1c3b576 - Nuke wlr_client_buffer
    • e8eefd6f - backend/drm: Report ZERO_COPY hint when direct scanning a client dmabuf.
    • dff5b980 - wlr_renderer: Switch texture rendering functions to take wlr_raster
    • b0d2a442 - wlr_linux_dmabuf: Refactor to prevent double dmabuf import
    • 1a93f0a2 - wlr_texture: Drop wlr_texture_from_dmabuf
    • 5f31e167 - wlr_texture: Drop wlr_texture_from_pixels
    • 4a33262c - wlr_texture: Drop wlr_texure_from_buffer
    • 07c28828 - wlr_texture: Update wlr_texture_update_from_buffer to use wlr_raster
    • a7e060c4 - cursor: Move wlr_output_cursor_set_buffer to wlr_raster
    • 9000b69e - wlr_scene_buffer: Rework to use wlr_raster
    • f98ecb15 - buffer: move wlr_shm_client_buffer functions to internal header
    • 61301642 - Re implement partial texture uploads for surfaces and immediate buffer unlocking
    • 76201c4c - wlr_texture: Expose owning renderer
    • 2d9cd959 - compositor: Remove notion of primary renderer

    Compare with previous version

  • Alexander Orzechowski marked the checklist item fix DRM hint for client dmabufs (could just be a bool on a wlr_buffer to send through that info) as completed

    marked the checklist item fix DRM hint for client dmabufs (could just be a bool on a wlr_buffer to send through that info) as completed

  • Alexander Orzechowski marked this merge request as ready

    marked this merge request as ready

  • Alexander Orzechowski changed the description

    changed the description

  • mentioned in merge request !3568 (closed)

  • added 2 commits

    • d9a9ef9d - wlr_texture: Expose owning renderer
    • 8fd2289b - compositor: Remove notion of primary renderer

    Compare with previous version

  • added 6 commits

    • 09e7a983 - cursor: Move wlr_output_cursor_set_buffer to wlr_raster
    • c4a8299c - wlr_scene_buffer: Rework to use wlr_raster
    • 6327de12 - buffer: move wlr_shm_client_buffer functions to internal header
    • cd5fecbe - Re implement partial texture uploads for surfaces and immediate buffer unlocking
    • 988b1314 - wlr_texture: Expose owning renderer
    • de7d9d23 - compositor: Remove notion of primary renderer

    Compare with previous version

  • added 3 commits

    • 884c279a - Re implement partial texture uploads for surfaces and immediate buffer unlocking
    • 12f42e23 - wlr_texture: Expose owning renderer
    • c7f48131 - compositor: Remove notion of primary renderer

    Compare with previous version

  • added 18 commits

    • 81cde8b9 - wlr_raster: Introduce new abstraction
    • 972677fd - wlr_raster: Introduce wlr_raster_from_pixels
    • cd3d697b - renderer/pixman: Nuke wlr_pixman_texture_get_image
    • 42a30b5a - wlr_renderer: Introduce wlr_renderer_raster_upload
    • d537eb32 - Nuke wlr_client_buffer
    • 817e26b0 - backend/drm: Report ZERO_COPY hint when direct scanning a client dmabuf.
    • af27df7a - wlr_renderer: Switch texture rendering functions to take wlr_raster
    • afd8cb63 - wlr_linux_dmabuf: Refactor to prevent double dmabuf import
    • 69c900f5 - wlr_texture: Drop wlr_texture_from_dmabuf
    • bd75f267 - wlr_texture: Drop wlr_texture_from_pixels
    • 8a39424d - wlr_texture: Drop wlr_texure_from_buffer
    • ba3716a3 - wlr_texture: Update wlr_texture_update_from_buffer to use wlr_raster
    • 49ec16e8 - cursor: Move wlr_output_cursor_set_buffer to wlr_raster
    • bb40468b - wlr_scene_buffer: Rework to use wlr_raster
    • b370043a - buffer: move wlr_shm_client_buffer functions to internal header
    • 88e2a0da - Re implement partial texture uploads for surfaces and immediate buffer unlocking
    • 5aabe395 - wlr_texture: Expose owning renderer
    • 5892ce9e - compositor: Remove notion of primary renderer

    Compare with previous version

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading