@@ -3588,24 +3588,27 @@ impl Renderer {
3588
3588
} ;
3589
3589
3590
3590
if let Some ( new_layer_kind) = new_layer_kind {
3591
- let ( rect , is_opaque) = match usage {
3591
+ let ( offset , clip_rect , is_opaque) = match usage {
3592
3592
CompositorSurfaceUsage :: Content => {
3593
- ( device_size. into ( ) , input_layers. is_empty ( ) )
3593
+ ( DeviceIntPoint :: zero ( ) , device_size. into ( ) , input_layers. is_empty ( ) )
3594
3594
}
3595
3595
CompositorSurfaceUsage :: External { .. } => {
3596
3596
let rect = composite_state. get_device_rect (
3597
3597
& tile. local_rect ,
3598
3598
tile. transform_index
3599
3599
) ;
3600
3600
3601
- ( rect. to_i32 ( ) , is_opaque)
3601
+ let clip_rect = tile. device_clip_rect . to_i32 ( ) ;
3602
+
3603
+ ( rect. min . to_i32 ( ) , clip_rect, is_opaque)
3602
3604
}
3603
3605
} ;
3604
3606
3605
3607
input_layers. push ( CompositorInputLayer {
3606
3608
usage : new_layer_kind,
3607
3609
is_opaque,
3608
- rect,
3610
+ offset,
3611
+ clip_rect,
3609
3612
} ) ;
3610
3613
3611
3614
swapchain_layers. push ( SwapChainLayer {
@@ -3635,7 +3638,8 @@ impl Renderer {
3635
3638
input_layers. push ( CompositorInputLayer {
3636
3639
usage : CompositorSurfaceUsage :: Content ,
3637
3640
is_opaque : true ,
3638
- rect : device_size. into ( ) ,
3641
+ offset : DeviceIntPoint :: zero ( ) ,
3642
+ clip_rect : device_size. into ( ) ,
3639
3643
} ) ;
3640
3644
3641
3645
swapchain_layers. push ( SwapChainLayer {
@@ -3675,7 +3679,7 @@ impl Renderer {
3675
3679
compositor. bind_layer ( layer_index) ;
3676
3680
3677
3681
DrawTarget :: NativeSurface {
3678
- offset : -layer. rect . min ,
3682
+ offset : -layer. offset ,
3679
3683
external_fbo_id : 0 ,
3680
3684
dimensions : fb_draw_target. dimensions ( ) ,
3681
3685
}
@@ -3718,7 +3722,7 @@ impl Renderer {
3718
3722
compositor. add_surface (
3719
3723
layer_index,
3720
3724
transform,
3721
- layer. rect ,
3725
+ layer. clip_rect ,
3722
3726
ImageRendering :: Auto ,
3723
3727
) ;
3724
3728
}
0 commit comments