Lines Matching refs:fb
52 void *src, struct drm_framebuffer *fb, in gud_xrgb8888_to_r124() argument
64 drm_WARN_ON_ONCE(fb->dev, format->char_per_block[0] != 1); in gud_xrgb8888_to_r124()
78 drm_fb_xrgb8888_to_gray8(&dst_map, NULL, &vmap, fb, rect, fmtcnv_state); 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()
141 drm_WARN_ON_ONCE(fb->dev, 1); in gud_xrgb8888_to_color()
152 static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_prep_flush() argument
180 if (format != fb->format) { in gud_prep_flush()
182 len = gud_xrgb8888_to_r124(buf, format, vaddr, fb, rect, fmtcnv_state); in gud_prep_flush()
186 drm_fb_xrgb8888_to_gray8(&dst, NULL, src, fb, rect, fmtcnv_state); in gud_prep_flush()
188 drm_fb_xrgb8888_to_rgb332(&dst, NULL, src, fb, rect, fmtcnv_state); in gud_prep_flush()
191 drm_fb_xrgb8888_to_rgb565be(&dst, NULL, src, fb, rect, in gud_prep_flush()
194 drm_fb_xrgb8888_to_rgb565(&dst, NULL, src, fb, rect, in gud_prep_flush()
198 drm_fb_xrgb8888_to_rgb888(&dst, NULL, src, fb, rect, fmtcnv_state); in gud_prep_flush()
200 len = gud_xrgb8888_to_color(buf, format, vaddr, fb, rect); in gud_prep_flush()
203 drm_fb_swab(&dst, NULL, src, fb, rect, cached_reads, fmtcnv_state); in gud_prep_flush()
204 } else if (compression && cached_reads && pitch == fb->pitches[0]) { in gud_prep_flush()
208 drm_fb_memcpy(&dst, NULL, src, fb, rect); in gud_prep_flush()
273 static int gud_flush_rect(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_flush_rect() argument
282 drm_dbg(&gdrm->drm, "Flushing [FB:%d] " DRM_RECT_FMT "\n", fb->base.id, DRM_RECT_ARG(rect)); in gud_flush_rect()
284 ret = gud_prep_flush(gdrm, fb, src, cached_reads, format, rect, &req, fmtcnv_state); in gud_flush_rect()
324 static void gud_flush_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_flush_damage() argument
334 format = fb->format; in gud_flush_damage()
351 ret = gud_flush_rect(gdrm, fb, src, cached_reads, format, &rect, &fmtcnv_state); in gud_flush_damage()
355 dev_err_ratelimited(fb->dev->dev, in gud_flush_damage()
369 struct drm_framebuffer *fb; in gud_flush_work() local
377 fb = gdrm->fb; in gud_flush_work()
378 gdrm->fb = NULL; in gud_flush_work()
384 if (!fb) in gud_flush_work()
387 gud_flush_damage(gdrm, fb, &shadow_map, true, &damage); in gud_flush_work()
389 drm_framebuffer_put(fb); in gud_flush_work()
394 static int gud_fb_queue_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_fb_queue_damage() argument
403 gdrm->shadow_buf = vcalloc(fb->pitches[0], fb->height); in gud_fb_queue_damage()
411 iosys_map_incr(&shadow_map, drm_fb_clip_offset(fb->pitches[0], fb->format, damage)); in gud_fb_queue_damage()
412 drm_fb_memcpy(&shadow_map, fb->pitches, src, fb, damage); in gud_fb_queue_damage()
414 if (fb != gdrm->fb) { in gud_fb_queue_damage()
415 old_fb = gdrm->fb; in gud_fb_queue_damage()
416 drm_framebuffer_get(fb); in gud_fb_queue_damage()
417 gdrm->fb = fb; in gud_fb_queue_damage()
435 static void gud_fb_handle_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_fb_handle_damage() argument
441 drm_rect_init(damage, 0, 0, fb->width, fb->height); in gud_fb_handle_damage()
444 ret = gud_fb_queue_damage(gdrm, fb, src, damage); in gud_fb_handle_damage()
450 gud_flush_damage(gdrm, fb, src, !fb->obj[0]->import_attach, damage); in gud_fb_handle_damage()
462 struct drm_framebuffer *old_fb = old_plane_state->fb; in gud_plane_atomic_check()
464 struct drm_framebuffer *fb = new_plane_state->fb; in gud_plane_atomic_check() local
489 format = fb->format; in gud_plane_atomic_check()
570 if (drm_dev_enter(fb->dev, &idx)) { in gud_plane_atomic_check()
591 struct drm_framebuffer *fb = new_state->fb; in gud_plane_atomic_update() local
600 if (gdrm->fb) { in gud_plane_atomic_update()
601 drm_framebuffer_put(gdrm->fb); in gud_plane_atomic_update()
602 gdrm->fb = NULL; in gud_plane_atomic_update()
613 if (!old_state->fb) in gud_plane_atomic_update()
616 if (fb && (crtc->state->mode_changed || crtc->state->connectors_changed)) in gud_plane_atomic_update()
622 if (!fb) in gud_plane_atomic_update()
625 ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); in gud_plane_atomic_update()
631 gud_fb_handle_damage(gdrm, fb, &shadow_plane_state->data[0], &damage); in gud_plane_atomic_update()
633 drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); in gud_plane_atomic_update()