mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-19 06:47:02 -04:00
Merge branch 'vk-shared-blend' into 'master'
Draft: render/vulkan: Cache blending buffer on swapchain See merge request wlroots/wlroots!4740
This commit is contained in:
commit
2ba9e6424a
5 changed files with 252 additions and 83 deletions
|
|
@ -197,6 +197,15 @@ struct wlr_vk_render_format_setup {
|
|||
struct wl_list pipelines; // struct wlr_vk_pipeline.link
|
||||
};
|
||||
|
||||
// Internal blending buffer shraed between render buffers
|
||||
struct wlr_vk_blend_buffer {
|
||||
struct wlr_vk_renderer *renderer;
|
||||
VkImageView blend_image_view;
|
||||
VkImage blend_image;
|
||||
VkDeviceMemory blend_memory;
|
||||
int refcnt;
|
||||
};
|
||||
|
||||
// Renderer-internal represenation of an wlr_buffer imported for rendering.
|
||||
struct wlr_vk_render_buffer {
|
||||
struct wlr_buffer *wlr_buffer;
|
||||
|
|
@ -228,9 +237,8 @@ struct wlr_vk_render_buffer {
|
|||
VkFramebuffer framebuffer;
|
||||
bool transitioned;
|
||||
|
||||
VkImage blend_image;
|
||||
VkImageView blend_image_view;
|
||||
VkDeviceMemory blend_memory;
|
||||
struct wlr_vk_blend_buffer *blend_buffer;
|
||||
|
||||
VkDescriptorSet blend_descriptor_set;
|
||||
struct wlr_vk_descriptor_pool *blend_attachment_pool;
|
||||
bool blend_transitioned;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <stdbool.h>
|
||||
#include <wayland-server-core.h>
|
||||
#include <wlr/render/drm_format_set.h>
|
||||
#include <wlr/util/addon.h>
|
||||
|
||||
#define WLR_SWAPCHAIN_CAP 4
|
||||
|
||||
|
|
@ -23,6 +24,8 @@ struct wlr_swapchain {
|
|||
struct wlr_swapchain_slot slots[WLR_SWAPCHAIN_CAP];
|
||||
|
||||
struct wl_listener allocator_destroy;
|
||||
|
||||
struct wlr_addon_set addons;
|
||||
};
|
||||
|
||||
struct wlr_swapchain *wlr_swapchain_create(
|
||||
|
|
@ -43,4 +46,7 @@ struct wlr_buffer *wlr_swapchain_acquire(struct wlr_swapchain *swapchain);
|
|||
bool wlr_swapchain_has_buffer(struct wlr_swapchain *swapchain,
|
||||
struct wlr_buffer *buffer);
|
||||
|
||||
struct wlr_swapchain *wlr_swapchain_try_from_wlr_buffer(
|
||||
struct wlr_buffer *buffer);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue