Lines Matching full:scanout
60 struct drm_log_scanout *scanout; member
92 static void drm_log_clear_line(struct drm_log_scanout *scanout, u32 line) in drm_log_clear_line() argument
94 struct drm_framebuffer *fb = scanout->buffer->fb; in drm_log_clear_line()
95 unsigned long height = scanout->scaled_font_h; in drm_log_clear_line()
99 if (drm_client_buffer_vmap_local(scanout->buffer, &map)) in drm_log_clear_line()
102 drm_client_buffer_vunmap_local(scanout->buffer); in drm_log_clear_line()
103 drm_client_framebuffer_flush(scanout->buffer, &r); in drm_log_clear_line()
106 static void drm_log_draw_line(struct drm_log_scanout *scanout, const char *s, in drm_log_draw_line() argument
109 struct drm_framebuffer *fb = scanout->buffer->fb; in drm_log_draw_line()
111 const struct font_desc *font = scanout->font; in drm_log_draw_line()
115 struct drm_rect r = DRM_RECT_INIT(0, scanout->line * scanout->scaled_font_h, in drm_log_draw_line()
116 fb->width, (scanout->line + 1) * scanout->scaled_font_h); in drm_log_draw_line()
119 if (drm_client_buffer_vmap_local(scanout->buffer, &map)) in drm_log_draw_line()
123 for (i = 0; i < len && i < scanout->columns; i++) { in drm_log_draw_line()
124 u32 color = (i < prefix_len) ? scanout->prefix_color : scanout->front_color; in drm_log_draw_line()
127 scanout->scaled_font_h, scanout->scaled_font_w, in drm_log_draw_line()
129 iosys_map_incr(&map, scanout->scaled_font_w * px_width); in drm_log_draw_line()
132 scanout->line++; in drm_log_draw_line()
133 if (scanout->line >= scanout->rows) in drm_log_draw_line()
134 scanout->line = 0; in drm_log_draw_line()
135 drm_client_buffer_vunmap_local(scanout->buffer); in drm_log_draw_line()
136 drm_client_framebuffer_flush(scanout->buffer, &r); in drm_log_draw_line()
139 static void drm_log_draw_new_line(struct drm_log_scanout *scanout, in drm_log_draw_new_line() argument
142 if (scanout->line == 0) { in drm_log_draw_new_line()
143 drm_log_clear_line(scanout, 0); in drm_log_draw_new_line()
144 drm_log_clear_line(scanout, 1); in drm_log_draw_new_line()
145 drm_log_clear_line(scanout, 2); in drm_log_draw_new_line()
146 } else if (scanout->line + 2 < scanout->rows) in drm_log_draw_new_line()
147 drm_log_clear_line(scanout, scanout->line + 2); in drm_log_draw_new_line()
149 drm_log_draw_line(scanout, s, len, prefix_len); in drm_log_draw_new_line()
158 static void drm_log_draw_kmsg_record(struct drm_log_scanout *scanout, in drm_log_draw_kmsg_record() argument
170 while (len > scanout->columns) { in drm_log_draw_kmsg_record()
171 drm_log_draw_new_line(scanout, s, scanout->columns, prefix_len); in drm_log_draw_kmsg_record()
172 s += scanout->columns; in drm_log_draw_kmsg_record()
173 len -= scanout->columns; in drm_log_draw_kmsg_record()
177 drm_log_draw_new_line(scanout, s, len, prefix_len); in drm_log_draw_kmsg_record()
192 struct drm_log_scanout *scanout) in drm_log_setup_modeset() argument
199 scanout->font = get_default_font(width, height, NULL, NULL); in drm_log_setup_modeset()
200 if (!scanout->font) in drm_log_setup_modeset()
207 scanout->buffer = drm_client_framebuffer_create(client, width, height, format); in drm_log_setup_modeset()
208 if (IS_ERR(scanout->buffer)) { in drm_log_setup_modeset()
213 mode_set->fb = scanout->buffer->fb; in drm_log_setup_modeset()
214 scanout->scaled_font_h = scanout->font->height * scale; in drm_log_setup_modeset()
215 scanout->scaled_font_w = scanout->font->width * scale; in drm_log_setup_modeset()
216 scanout->rows = height / scanout->scaled_font_h; in drm_log_setup_modeset()
217 scanout->columns = width / scanout->scaled_font_w; in drm_log_setup_modeset()
218 scanout->front_color = drm_draw_color_from_xrgb8888(0xffffff, format); in drm_log_setup_modeset()
219 scanout->prefix_color = drm_draw_color_from_xrgb8888(0x4e9a06, format); in drm_log_setup_modeset()
251 dlog->scanout = kcalloc(max_modeset, sizeof(*dlog->scanout), GFP_KERNEL); in drm_log_init_client()
252 if (!dlog->scanout) in drm_log_init_client()
259 if (drm_log_setup_modeset(client, mode_set, &dlog->scanout[n_modeset])) in drm_log_init_client()
275 drm_client_framebuffer_delete(dlog->scanout[i].buffer); in drm_log_init_client()
278 kfree(dlog->scanout); in drm_log_init_client()
279 dlog->scanout = NULL; in drm_log_init_client()
289 drm_client_framebuffer_delete(dlog->scanout[i].buffer); in drm_log_free_scanout()
291 kfree(dlog->scanout); in drm_log_free_scanout()
292 dlog->scanout = NULL; in drm_log_free_scanout()
361 drm_log_draw_kmsg_record(&dlog->scanout[i], wctxt->outbuf, wctxt->len); in drm_log_write_thread()