mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-03-25 09:07:38 -04:00
render/vulkan: introduce buffer_import_sync_file()
Will be used in two spots in a following commit.
This commit is contained in:
parent
7be5e3689c
commit
a6e5807e86
1 changed files with 18 additions and 10 deletions
|
|
@ -1013,6 +1013,23 @@ bool vulkan_sync_foreign_texture(struct wlr_vk_texture *texture,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool buffer_import_sync_file(struct wlr_buffer *buffer, uint32_t flags, int sync_file_fd) {
|
||||||
|
struct wlr_dmabuf_attributes dmabuf = {0};
|
||||||
|
if (!wlr_buffer_get_dmabuf(buffer, &dmabuf)) {
|
||||||
|
wlr_log(WLR_ERROR, "wlr_buffer_get_dmabuf() failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < dmabuf.n_planes; i++) {
|
||||||
|
if (!dmabuf_import_sync_file(dmabuf.fd[i], flags,
|
||||||
|
sync_file_fd)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool vulkan_sync_render_buffer(struct wlr_vk_renderer *renderer,
|
bool vulkan_sync_render_buffer(struct wlr_vk_renderer *renderer,
|
||||||
struct wlr_vk_render_buffer *render_buffer, struct wlr_vk_command_buffer *cb,
|
struct wlr_vk_render_buffer *render_buffer, struct wlr_vk_command_buffer *cb,
|
||||||
struct wlr_drm_syncobj_timeline *signal_timeline, uint64_t signal_point) {
|
struct wlr_drm_syncobj_timeline *signal_timeline, uint64_t signal_point) {
|
||||||
|
|
@ -1046,18 +1063,9 @@ bool vulkan_sync_render_buffer(struct wlr_vk_renderer *renderer,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
struct wlr_dmabuf_attributes dmabuf = {0};
|
if (!buffer_import_sync_file(render_buffer->wlr_buffer, DMA_BUF_SYNC_WRITE, sync_file_fd)) {
|
||||||
if (!wlr_buffer_get_dmabuf(render_buffer->wlr_buffer, &dmabuf)) {
|
|
||||||
wlr_log(WLR_ERROR, "wlr_buffer_get_dmabuf failed");
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < dmabuf.n_planes; i++) {
|
|
||||||
if (!dmabuf_import_sync_file(dmabuf.fd[i], DMA_BUF_SYNC_WRITE,
|
|
||||||
sync_file_fd)) {
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ok = true;
|
ok = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue