mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-02-13 04:27:56 -05:00
output-layer: add cropping support
Add a src_box state field. Use the SRC_* KMS props in the DRM backend, reject the layers in the Wayland backend (for now, we can support it later via viewporter).
This commit is contained in:
parent
d795824346
commit
44069dfd5e
4 changed files with 23 additions and 4 deletions
|
|
@ -201,10 +201,18 @@ static bool set_layer_props(struct wlr_drm_backend *drm,
|
|||
uint64_t crtc_w = (uint64_t)state->dst_box.width;
|
||||
uint64_t crtc_h = (uint64_t)state->dst_box.height;
|
||||
|
||||
uint64_t src_x = to_fp16(0);
|
||||
uint64_t src_y = to_fp16(0);
|
||||
uint64_t src_w = to_fp16(width);
|
||||
uint64_t src_h = to_fp16(height);
|
||||
struct wlr_fbox src_box = state->src_box;
|
||||
if (wlr_fbox_empty(&src_box)) {
|
||||
src_box = (struct wlr_fbox){
|
||||
.width = width,
|
||||
.height = height,
|
||||
};
|
||||
}
|
||||
|
||||
uint64_t src_x = to_fp16(src_box.x);
|
||||
uint64_t src_y = to_fp16(src_box.y);
|
||||
uint64_t src_w = to_fp16(src_box.width);
|
||||
uint64_t src_h = to_fp16(src_box.height);
|
||||
|
||||
return
|
||||
liftoff_layer_set_property(layer->liftoff, "zpos", zpos) == 0 &&
|
||||
|
|
|
|||
|
|
@ -294,6 +294,13 @@ static bool output_test(struct wlr_output *wlr_output,
|
|||
height != layer_state->dst_box.height) {
|
||||
supported = false;
|
||||
}
|
||||
if (!wlr_fbox_empty(&layer_state->src_box)) {
|
||||
supported = supported &&
|
||||
layer_state->src_box.x == 0 &&
|
||||
layer_state->src_box.y == 0 &&
|
||||
layer_state->src_box.width == width &&
|
||||
layer_state->src_box.height == height;
|
||||
}
|
||||
supported = supported &&
|
||||
test_buffer(output->backend, layer_state->buffer);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue