Lines Matching refs:fb
53 void *src, struct drm_framebuffer *fb, in gud_xrgb8888_to_r124() argument
78 drm_fb_xrgb8888_to_gray8(&dst_map, NULL, &vmap, fb, rect); in gud_xrgb8888_to_r124()
102 void *src, struct drm_framebuffer *fb, in gud_xrgb8888_to_color() argument
119 sbuf32 = src + (y * fb->pitches[0]); in gud_xrgb8888_to_color()
152 static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_prep_flush() argument
179 if (format != fb->format) { in gud_prep_flush()
181 len = gud_xrgb8888_to_r124(buf, format, vaddr, fb, rect); in gud_prep_flush()
185 drm_fb_xrgb8888_to_gray8(&dst, NULL, src, fb, rect); in gud_prep_flush()
187 drm_fb_xrgb8888_to_rgb332(&dst, NULL, src, fb, rect); in gud_prep_flush()
189 drm_fb_xrgb8888_to_rgb565(&dst, NULL, src, fb, rect, in gud_prep_flush()
192 drm_fb_xrgb8888_to_rgb888(&dst, NULL, src, fb, rect); in gud_prep_flush()
194 len = gud_xrgb8888_to_color(buf, format, vaddr, fb, rect); in gud_prep_flush()
197 drm_fb_swab(&dst, NULL, src, fb, rect, cached_reads); in gud_prep_flush()
198 } else if (compression && cached_reads && pitch == fb->pitches[0]) { in gud_prep_flush()
202 drm_fb_memcpy(&dst, NULL, src, fb, rect); in gud_prep_flush()
267 static int gud_flush_rect(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_flush_rect() argument
275 drm_dbg(&gdrm->drm, "Flushing [FB:%d] " DRM_RECT_FMT "\n", fb->base.id, DRM_RECT_ARG(rect)); in gud_flush_rect()
277 ret = gud_prep_flush(gdrm, fb, src, cached_reads, format, rect, &req); in gud_flush_rect()
317 static void gud_flush_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_flush_damage() argument
326 format = fb->format; in gud_flush_damage()
343 ret = gud_flush_rect(gdrm, fb, src, cached_reads, format, &rect); in gud_flush_damage()
347 dev_err_ratelimited(fb->dev->dev, in gud_flush_damage()
359 struct drm_framebuffer *fb; in gud_flush_work() local
367 fb = gdrm->fb; in gud_flush_work()
368 gdrm->fb = NULL; in gud_flush_work()
374 if (!fb) in gud_flush_work()
377 gud_flush_damage(gdrm, fb, &shadow_map, true, &damage); in gud_flush_work()
379 drm_framebuffer_put(fb); in gud_flush_work()
384 static int gud_fb_queue_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_fb_queue_damage() argument
393 gdrm->shadow_buf = vcalloc(fb->pitches[0], fb->height); in gud_fb_queue_damage()
401 iosys_map_incr(&shadow_map, drm_fb_clip_offset(fb->pitches[0], fb->format, damage)); in gud_fb_queue_damage()
402 drm_fb_memcpy(&shadow_map, fb->pitches, src, fb, damage); in gud_fb_queue_damage()
404 if (fb != gdrm->fb) { in gud_fb_queue_damage()
405 old_fb = gdrm->fb; in gud_fb_queue_damage()
406 drm_framebuffer_get(fb); in gud_fb_queue_damage()
407 gdrm->fb = fb; in gud_fb_queue_damage()
425 static void gud_fb_handle_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_fb_handle_damage() argument
431 drm_rect_init(damage, 0, 0, fb->width, fb->height); in gud_fb_handle_damage()
434 ret = gud_fb_queue_damage(gdrm, fb, src, damage); in gud_fb_handle_damage()
440 gud_flush_damage(gdrm, fb, src, !fb->obj[0]->import_attach, damage); in gud_fb_handle_damage()
451 struct drm_framebuffer *old_fb = old_plane_state->fb; in gud_pipe_check()
453 struct drm_framebuffer *fb = new_plane_state->fb; in gud_pipe_check() local
454 const struct drm_format_info *format = fb->format; in gud_pipe_check()
461 if (WARN_ON_ONCE(!fb)) in gud_pipe_check()
546 if (drm_dev_enter(fb->dev, &idx)) { in gud_pipe_check()
566 struct drm_framebuffer *fb = state->fb; in gud_pipe_update() local
574 if (gdrm->fb) { in gud_pipe_update()
575 drm_framebuffer_put(gdrm->fb); in gud_pipe_update()
576 gdrm->fb = NULL; in gud_pipe_update()
587 if (!old_state->fb) in gud_pipe_update()
590 if (fb && (crtc->state->mode_changed || crtc->state->connectors_changed)) in gud_pipe_update()
596 if (!fb) in gud_pipe_update()
599 ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); in gud_pipe_update()
604 gud_fb_handle_damage(gdrm, fb, &shadow_plane_state->data[0], &damage); in gud_pipe_update()
606 drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); in gud_pipe_update()