Introduce wlr_raster
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.
Merge request reports
Activity
- Resolved by Alexander Orzechowski
@emersion What would be the best way of going about a renderer to renderer blit? Export then import a dmabuf? I guess I could copy paste whatever DRM is doing for shm buffer multigpu.
- Resolved by Alexander Orzechowski
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
Toggle commit list-
f2f54134...91943a68 - 5 commits from branch
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
Toggle commit list-
caaf5d4b...c20468cf - 2 commits from branch
mentioned in merge request !3568 (closed)
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
Toggle commit listadded 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
Toggle commit list