Struct webrender::batch::ClipBatcher
source · pub struct ClipBatcher {
pub primary_clips: ClipBatchList,
pub secondary_clips: ClipBatchList,
gpu_supports_fast_clears: bool,
}
Expand description
Batcher managing draw calls into the clip mask (in the RT cache).
Fields§
§primary_clips: ClipBatchList
The first clip in each clip task. This will overwrite all pixels in the clip region, so we can skip doing a clear and write with blending disabled, which is a big performance win on Intel GPUs.
secondary_clips: ClipBatchList
Any subsequent clip masks (rare) for a clip task get drawn in a second pass with multiplicative blending enabled.
gpu_supports_fast_clears: bool
Implementations§
source§impl ClipBatcher
impl ClipBatcher
pub fn new(gpu_supports_fast_clears: bool) -> Self
pub fn add_clip_region( &mut self, local_pos: LayoutPoint, sub_rect: DeviceRect, clip_data: ClipData, task_origin: DevicePoint, screen_origin: DevicePoint, device_pixel_scale: f32, )
sourcefn add_tiled_clip_mask(
&mut self,
mask_screen_rect: DeviceRect,
local_clip_rect: LayoutRect,
clip_spatial_node_index: SpatialNodeIndex,
spatial_tree: &SpatialTree,
world_rect: &WorldRect,
global_device_pixel_scale: DevicePixelScale,
common: &ClipMaskInstanceCommon,
is_first_clip: bool,
) -> bool
fn add_tiled_clip_mask( &mut self, mask_screen_rect: DeviceRect, local_clip_rect: LayoutRect, clip_spatial_node_index: SpatialNodeIndex, spatial_tree: &SpatialTree, world_rect: &WorldRect, global_device_pixel_scale: DevicePixelScale, common: &ClipMaskInstanceCommon, is_first_clip: bool, ) -> bool
Where appropriate, draw a clip rectangle as a small series of tiles, instead of one large rectangle.
sourcefn get_batch_list(&mut self, is_first_clip: bool) -> &mut ClipBatchList
fn get_batch_list(&mut self, is_first_clip: bool) -> &mut ClipBatchList
Retrieve the correct clip batch list to append to, depending on whether this is the first clip mask for a clip task.
pub fn add( &mut self, clip_node_range: ClipNodeRange, root_spatial_node_index: SpatialNodeIndex, render_tasks: &RenderTaskGraph, gpu_cache: &GpuCache, clip_store: &ClipStore, transforms: &mut TransformPalette, actual_rect: DeviceRect, surface_device_pixel_scale: DevicePixelScale, task_origin: DevicePoint, screen_origin: DevicePoint, ctx: &RenderTargetContext<'_, '_>, ) -> bool
Trait Implementations§
source§impl Debug for ClipBatcher
impl Debug for ClipBatcher
Auto Trait Implementations§
impl Freeze for ClipBatcher
impl RefUnwindSafe for ClipBatcher
impl Send for ClipBatcher
impl Sync for ClipBatcher
impl Unpin for ClipBatcher
impl UnwindSafe for ClipBatcher
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more