wlroots/render
Kenny Levinsen e180bedd61 render/vulkan: Better bucket size selection
The current buffer allocator allocates a buffer that is either the
minimum stage span, the requested size times two, or the largest current
allocation times two.

Imagine needing a miniscule allocation. We currently have 1M, 8M and 16M
buffers, but the 1M buffer is full or not available. The last rule would
cause us to request a 32M buffer, rather than a more appropriate 2M
buffer to fill the bucket sequence.

Make two adjustments to this logic:

1. Round the requested size up to the nearest power of two to avoid odd
   bucket sizes.

2. Look through the available buffers and find a hole in the bucket
   sequence to fill, which is made easy by the power of two rule above
   as we can just iterate until the buffer we are looking at is more
   than 2x our current target.

The buffer we create is inserted into the middle of the list of buffers
as needed to maintain the size order.
2025-03-13 01:41:18 +01:00
..
allocator Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
gles2 matrix: move to util/ 2025-01-27 17:48:18 +01:00
pixman render/pixman: drop cast for pixman_image_set_clip_region32() 2025-01-29 23:33:50 +01:00
vulkan render/vulkan: Better bucket size selection 2025-03-13 01:41:18 +01:00
color.c render/color: Invert ownership model of color_transform types. 2024-08-24 14:33:22 -04:00
color_fallback.c render/color: add fallback stub when LCMS2 is disabled 2024-06-04 17:45:51 +00:00
color_lcms2.c render/color: Invert ownership model of color_transform types. 2024-08-24 14:33:22 -04:00
dmabuf.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
dmabuf_fallback.c render/dmabuf: add dmabuf_export_sync_file() 2022-12-06 14:54:09 +00:00
dmabuf_linux.c render/dmabuf: add dmabuf_export_sync_file() 2022-12-06 14:54:09 +00:00
drm_format_set.c render/drm_format_set: fix corruption in wlr_drm_format_set_remove() 2024-11-28 19:14:31 +00:00
drm_syncobj.c render/drm_syncobj: Remove the ready signal from timeline_waiter 2025-01-26 18:02:14 -05:00
egl.c render/egl: attribs len could be equal to size 2024-12-30 17:34:02 +08:00
meson.build build: check eglext.h header version 2024-06-27 17:54:57 +00:00
pass.c render: drop legacy render pass 2023-11-22 00:55:56 +01:00
pixel_format.c render/pixel-format: Move has_alpha into it's own array 2024-01-31 13:47:17 -05:00
swapchain.c all: use public <wlr/render/allocator.h> 2024-11-07 18:48:20 +01:00
wlr_renderer.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_texture.c wlr_texture: Introduce wlr_texture_preferred_read_format 2023-11-30 19:56:54 -05:00