Lines Matching refs:sb

147 static void drm_panic_blit_pixel(struct drm_scanout_buffer *sb, struct drm_rect *clip,  in drm_panic_blit_pixel()  argument
156 sb->set_pixel(sb, clip->x1 + x, clip->y1 + y, fg_color); in drm_panic_blit_pixel()
256 static void drm_panic_blit(struct drm_scanout_buffer *sb, struct drm_rect *clip, in drm_panic_blit() argument
263 if (sb->set_pixel) in drm_panic_blit()
264 return drm_panic_blit_pixel(sb, clip, sbuf8, spitch, scale, fg_color); in drm_panic_blit()
266 if (sb->pages) in drm_panic_blit()
267 return drm_panic_blit_page(sb->pages, sb->pitch[0], sb->format->cpp[0], in drm_panic_blit()
270 map = sb->map[0]; in drm_panic_blit()
271 iosys_map_incr(&map, clip->y1 * sb->pitch[0] + clip->x1 * sb->format->cpp[0]); in drm_panic_blit()
273 switch (sb->format->cpp[0]) { in drm_panic_blit()
275 drm_draw_blit16(&map, sb->pitch[0], sbuf8, spitch, in drm_panic_blit()
279 drm_draw_blit24(&map, sb->pitch[0], sbuf8, spitch, in drm_panic_blit()
283 drm_draw_blit32(&map, sb->pitch[0], sbuf8, spitch, in drm_panic_blit()
287 WARN_ONCE(1, "Can't blit with pixel width %d\n", sb->format->cpp[0]); in drm_panic_blit()
291 static void drm_panic_fill_pixel(struct drm_scanout_buffer *sb, in drm_panic_fill_pixel() argument
299 sb->set_pixel(sb, clip->x1 + x, clip->y1 + y, color); in drm_panic_fill_pixel()
339 static void drm_panic_fill(struct drm_scanout_buffer *sb, struct drm_rect *clip, in drm_panic_fill() argument
344 if (sb->set_pixel) in drm_panic_fill()
345 return drm_panic_fill_pixel(sb, clip, color); in drm_panic_fill()
347 if (sb->pages) in drm_panic_fill()
348 return drm_panic_fill_page(sb->pages, sb->pitch[0], sb->format->cpp[0], in drm_panic_fill()
351 map = sb->map[0]; in drm_panic_fill()
352 iosys_map_incr(&map, clip->y1 * sb->pitch[0] + clip->x1 * sb->format->cpp[0]); in drm_panic_fill()
354 switch (sb->format->cpp[0]) { in drm_panic_fill()
356 drm_draw_fill16(&map, sb->pitch[0], drm_rect_height(clip), in drm_panic_fill()
360 drm_draw_fill24(&map, sb->pitch[0], drm_rect_height(clip), in drm_panic_fill()
364 drm_draw_fill32(&map, sb->pitch[0], drm_rect_height(clip), in drm_panic_fill()
368 WARN_ONCE(1, "Can't fill with pixel width %d\n", sb->format->cpp[0]); in drm_panic_fill()
385 static void draw_txt_rectangle(struct drm_scanout_buffer *sb, in draw_txt_rectangle() argument
412 drm_panic_blit(sb, &rec, src, font_pitch, 1, color); in draw_txt_rectangle()
429 static void drm_panic_logo_draw(struct drm_scanout_buffer *sb, struct drm_rect *rect, in drm_panic_logo_draw() argument
433 drm_panic_blit(sb, rect, logo_mono->data, in drm_panic_logo_draw()
436 draw_txt_rectangle(sb, font, logo_ascii, logo_ascii_lines, false, rect, in drm_panic_logo_draw()
440 static void draw_panic_static_user(struct drm_scanout_buffer *sb) in draw_panic_static_user() argument
443 sb->format->format); in draw_panic_static_user()
445 sb->format->format); in draw_panic_static_user()
446 const struct font_desc *font = get_default_font(sb->width, sb->height, NULL, NULL); in draw_panic_static_user()
453 r_screen = DRM_RECT_INIT(0, 0, sb->width, sb->height); in draw_panic_static_user()
456 msg_width = min(get_max_line_len(panic_msg, panic_msg_lines) * font->width, sb->width); in draw_panic_static_user()
457 msg_height = min(panic_msg_lines * font->height, sb->height); in draw_panic_static_user()
461 drm_rect_translate(&r_msg, (sb->width - r_msg.x2) / 2, (sb->height - r_msg.y2) / 2); in draw_panic_static_user()
464 drm_panic_fill(sb, &r_screen, bg_color); in draw_panic_static_user()
467 drm_panic_logo_draw(sb, &r_logo, font, fg_color); in draw_panic_static_user()
469 draw_txt_rectangle(sb, font, panic_msg, panic_msg_lines, true, &r_msg, fg_color); in draw_panic_static_user()
476 static int draw_line_with_wrap(struct drm_scanout_buffer *sb, const struct font_desc *font, in draw_line_with_wrap() argument
479 int chars_per_row = sb->width / font->width; in draw_line_with_wrap()
480 struct drm_rect r_txt = DRM_RECT_INIT(0, yoffset, sb->width, sb->height); in draw_line_with_wrap()
486 draw_txt_rectangle(sb, font, &line_wrap, 1, false, &r_txt, fg_color); in draw_line_with_wrap()
493 draw_txt_rectangle(sb, font, &line_wrap, 1, false, &r_txt, fg_color); in draw_line_with_wrap()
499 draw_txt_rectangle(sb, font, line, 1, false, &r_txt, fg_color); in draw_line_with_wrap()
509 static void draw_panic_static_kmsg(struct drm_scanout_buffer *sb) in draw_panic_static_kmsg() argument
512 sb->format->format); in draw_panic_static_kmsg()
514 sb->format->format); in draw_panic_static_kmsg()
515 const struct font_desc *font = get_default_font(sb->width, sb->height, NULL, NULL); in draw_panic_static_kmsg()
516 struct drm_rect r_screen = DRM_RECT_INIT(0, 0, sb->width, sb->height); in draw_panic_static_kmsg()
526 yoffset = sb->height - font->height - (sb->height % font->height) / 2; in draw_panic_static_kmsg()
529 drm_panic_fill(sb, &r_screen, bg_color); in draw_panic_static_kmsg()
546 yoffset = draw_line_with_wrap(sb, font, &line, yoffset, fg_color); in draw_panic_static_kmsg()
697 static int _draw_panic_static_qr_code(struct drm_scanout_buffer *sb) in _draw_panic_static_qr_code() argument
700 sb->format->format); in _draw_panic_static_qr_code()
702 sb->format->format); in _draw_panic_static_qr_code()
703 const struct font_desc *font = get_default_font(sb->width, sb->height, NULL, NULL); in _draw_panic_static_qr_code()
713 r_screen = DRM_RECT_INIT(0, 0, sb->width, sb->height); in _draw_panic_static_qr_code()
717 msg_width = min(get_max_line_len(panic_msg, panic_msg_lines) * font->width, sb->width); in _draw_panic_static_qr_code()
718 msg_height = min(panic_msg_lines * font->height, sb->height); in _draw_panic_static_qr_code()
721 max_qr_size = min(3 * sb->width / 4, 3 * sb->height / 4); in _draw_panic_static_qr_code()
736 v_margin = (sb->height - drm_rect_height(&r_qr_canvas) - drm_rect_height(&r_msg)) / 5; in _draw_panic_static_qr_code()
738 drm_rect_translate(&r_qr_canvas, (sb->width - r_qr_canvas.x2) / 2, 2 * v_margin); in _draw_panic_static_qr_code()
743 drm_rect_translate(&r_msg, (sb->width - r_msg.x2) / 2, in _draw_panic_static_qr_code()
747 drm_panic_fill(sb, &r_screen, bg_color); in _draw_panic_static_qr_code()
750 drm_panic_logo_draw(sb, &r_logo, font, fg_color); in _draw_panic_static_qr_code()
752 draw_txt_rectangle(sb, font, panic_msg, panic_msg_lines, true, &r_msg, fg_color); in _draw_panic_static_qr_code()
756 drm_panic_fill(sb, &r_qr_canvas, fg_color); in _draw_panic_static_qr_code()
757 drm_panic_fill(sb, &r_qr, bg_color); in _draw_panic_static_qr_code()
758 drm_panic_blit(sb, &r_qr, qr_image, qr_pitch, scale, fg_color); in _draw_panic_static_qr_code()
762 static void draw_panic_static_qr_code(struct drm_scanout_buffer *sb) in draw_panic_static_qr_code() argument
764 if (_draw_panic_static_qr_code(sb)) in draw_panic_static_qr_code()
765 draw_panic_static_user(sb); in draw_panic_static_qr_code()
768 static void draw_panic_static_qr_code(struct drm_scanout_buffer *sb) in draw_panic_static_qr_code() argument
770 draw_panic_static_user(sb); in draw_panic_static_qr_code()
791 static void draw_panic_dispatch(struct drm_scanout_buffer *sb) in draw_panic_dispatch() argument
794 draw_panic_static_kmsg(sb); in draw_panic_dispatch()
796 draw_panic_static_qr_code(sb); in draw_panic_dispatch()
798 draw_panic_static_user(sb); in draw_panic_dispatch()
828 struct drm_scanout_buffer sb = { }; in draw_panic_plane() local
835 ret = plane->helper_private->get_scanout_buffer(plane, &sb); in draw_panic_plane()
837 if (ret || !drm_panic_is_format_supported(sb.format)) in draw_panic_plane()
841 if (!sb.set_pixel && !sb.pages && iosys_map_is_null(&sb.map[0])) in draw_panic_plane()
846 draw_panic_dispatch(&sb); in draw_panic_plane()