mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-15 06:59:43 -05:00
Remove support for DMA-BUF flags
They are never used in practice, which makes all of our flag handling effectively dead code. Also, APIs such as KMS don't provide a good way to deal with the flags. Let's just fail the DMA-BUF import when clients provide flags.
This commit is contained in:
parent
9a4e1095ca
commit
a04cfca4da
15 changed files with 12 additions and 83 deletions
|
|
@ -77,7 +77,7 @@ static void frame_output_handle_commit(struct wl_listener *listener,
|
|||
uint32_t mod_high = attribs.modifier >> 32;
|
||||
uint32_t mod_low = attribs.modifier & 0xFFFFFFFF;
|
||||
zwlr_export_dmabuf_frame_v1_send_frame(frame->resource,
|
||||
attribs.width, attribs.height, 0, 0, attribs.flags, frame_flags,
|
||||
attribs.width, attribs.height, 0, 0, 0, frame_flags,
|
||||
attribs.format, mod_high, mod_low, attribs.n_planes);
|
||||
|
||||
for (int i = 0; i < attribs.n_planes; ++i) {
|
||||
|
|
|
|||
|
|
@ -215,10 +215,14 @@ static void params_create_common(struct wl_resource *params_resource,
|
|||
goto err_out;
|
||||
}
|
||||
|
||||
if (flags != 0) {
|
||||
wlr_log(WLR_ERROR, "dmabuf flags aren't supported");
|
||||
goto err_failed;
|
||||
}
|
||||
|
||||
attribs.width = width;
|
||||
attribs.height = height;
|
||||
attribs.format = format;
|
||||
attribs.flags = flags;
|
||||
|
||||
if (width < 1 || height < 1) {
|
||||
wl_resource_post_error(params_resource,
|
||||
|
|
|
|||
|
|
@ -254,8 +254,7 @@ error_src_tex:
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool frame_dma_copy(struct wlr_screencopy_frame_v1 *frame,
|
||||
uint32_t *flags) {
|
||||
static bool frame_dma_copy(struct wlr_screencopy_frame_v1 *frame) {
|
||||
struct wlr_dmabuf_v1_buffer *dma_buffer = frame->dma_buffer;
|
||||
struct wlr_output *output = frame->output;
|
||||
struct wlr_renderer *renderer = wlr_backend_get_renderer(output->backend);
|
||||
|
|
@ -268,11 +267,7 @@ static bool frame_dma_copy(struct wlr_screencopy_frame_v1 *frame,
|
|||
return false;
|
||||
}
|
||||
|
||||
bool ok = blit_dmabuf(renderer, dma_buffer, output->front_buffer);
|
||||
*flags = dma_buffer->attributes.flags & WLR_DMABUF_ATTRIBUTES_FLAGS_Y_INVERT ?
|
||||
ZWLR_SCREENCOPY_FRAME_V1_FLAGS_Y_INVERT : 0;
|
||||
|
||||
return ok;
|
||||
return blit_dmabuf(renderer, dma_buffer, output->front_buffer);
|
||||
}
|
||||
|
||||
static void frame_handle_output_commit(struct wl_listener *listener,
|
||||
|
|
@ -282,7 +277,6 @@ static void frame_handle_output_commit(struct wl_listener *listener,
|
|||
struct wlr_output_event_commit *event = data;
|
||||
struct wlr_output *output = frame->output;
|
||||
struct wlr_renderer *renderer = wlr_backend_get_renderer(output->backend);
|
||||
uint32_t flags;
|
||||
assert(renderer);
|
||||
|
||||
if (!(event->committed & WLR_OUTPUT_STATE_BUFFER)) {
|
||||
|
|
@ -304,8 +298,9 @@ static void frame_handle_output_commit(struct wl_listener *listener,
|
|||
wl_list_remove(&frame->output_commit.link);
|
||||
wl_list_init(&frame->output_commit.link);
|
||||
|
||||
uint32_t flags = 0;
|
||||
bool ok = frame->shm_buffer ?
|
||||
frame_shm_copy(frame, &flags) : frame_dma_copy(frame, &flags);
|
||||
frame_shm_copy(frame, &flags) : frame_dma_copy(frame);
|
||||
if (!ok) {
|
||||
zwlr_screencopy_frame_v1_send_failed(frame->resource);
|
||||
frame_destroy(frame);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue