…lines 1–62 unchanged (62 lines)
63 pub fn update(
64 &mut self,
65 common: &mut PrimTemplateCommonData,
66 frame_state: &mut FrameBuildingState,
67 ) {
68 let mut writer = frame_state.frame_gpu_data.f32.write_blocks(3 + self.brush_segments.len() * VECS_PER_SEGMENT);
69 self.write_prim_gpu_blocks(&mut writer, common.prim_rect.size());
70 self.write_segment_gpu_blocks(&mut writer);
71 common.gpu_buffer_address = writer.finish();
72 common.opacity = PrimitiveOpacity::translucent();
73 }
74
75 fn write_prim_gpu_blocks(
…lines 76–109 unchanged (34 lines)
110 border.normalize(&widths);
111
112 let mut brush_segments = Vec::new();
113 let mut border_segments = Vec::new();
114
115 create_border_segments(
116 common.prim_rect.size(),
117 &border,
118 &widths,
119 &mut border_segments,
120 &mut brush_segments,
121 );
122
…lines 123–232 unchanged (110 lines)
233 pub fn update(
234 &mut self,
235 common: &mut PrimTemplateCommonData,
236 frame_state: &mut FrameBuildingState,
237 ) {
238 let mut writer = frame_state.frame_gpu_data.f32.write_blocks(3 + self.brush_segments.len() * VECS_PER_SEGMENT);
239 self.write_prim_gpu_blocks(&mut writer, &common.prim_rect.size());
240 self.write_segment_gpu_blocks(&mut writer);
241 common.gpu_buffer_address = writer.finish();
242
243 let frame_id = frame_state.rg_builder.frame_id();
244 if self.frame_id != frame_id {
245 self.frame_id = frame_id;
…lines 246–294 unchanged (49 lines)
295pub type ImageBorderTemplate = PrimTemplate<ImageBorderData>;
296
297impl From<ImageBorderKey> for ImageBorderTemplate {
298 fn from(key: ImageBorderKey) -> Self {
299 let common = PrimTemplateCommonData::with_key_common(key.common);
300
301 let brush_segments = key.kind.nine_patch.create_brush_segments(common.prim_rect.size());
302 ImageBorderTemplate {
303 common,
304 kind: ImageBorderData {
305 request: key.kind.request,
306 brush_segments,
307 src_color: None,
…lines 308–356 unchanged (49 lines)
357 // talos stress tests. If you get a failure here on CI, there's two possibilities:
358 // (a) You made a structure smaller than it currently is. Great work! Update the
359 // test expectations and move on.
360 // (b) You made a structure larger. This is not necessarily a problem, but should only
361 // be done with care, and after checking if talos performance regresses badly.
362 assert_eq!(mem::size_of::<NormalBorderPrim>(), 84, "NormalBorderPrim size changed");
363 assert_eq!(mem::size_of::<NormalBorderTemplate>(), 216, "NormalBorderTemplate size changed");
364 assert_eq!(mem::size_of::<NormalBorderKey>(), 104, "NormalBorderKey size changed");
365 assert_eq!(mem::size_of::<ImageBorder>(), 68, "ImageBorder size changed");
366 assert_eq!(mem::size_of::<ImageBorderTemplate>(), 104, "ImageBorderTemplate size changed");
367 assert_eq!(mem::size_of::<ImageBorderKey>(), 88, "ImageBorderKey size changed");
368}
369