Lines Matching full:fb
55 void *src, struct drm_framebuffer *fb, in gud_xrgb8888_to_r124() argument
77 drm_fb_xrgb8888_to_gray8(buf, src, fb, rect); in gud_xrgb8888_to_r124()
101 void *src, struct drm_framebuffer *fb, in gud_xrgb8888_to_color() argument
117 pix32 = src + (y * fb->pitches[0]); in gud_xrgb8888_to_color()
149 static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_prep_flush() argument
153 struct dma_buf_attachment *import_attach = fb->obj[0]->import_attach; in gud_prep_flush()
166 ret = drm_gem_fb_vmap(fb, map, map_data); in gud_prep_flush()
172 ret = drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE); in gud_prep_flush()
185 if (format != fb->format) { in gud_prep_flush()
187 len = gud_xrgb8888_to_r124(buf, format, vaddr, fb, rect); in gud_prep_flush()
193 drm_fb_xrgb8888_to_rgb565(buf, vaddr, fb, rect, gud_is_big_endian()); in gud_prep_flush()
195 len = gud_xrgb8888_to_color(buf, format, vaddr, fb, rect); in gud_prep_flush()
198 drm_fb_swab(buf, vaddr, fb, rect, !import_attach); in gud_prep_flush()
199 } else if (compression && !import_attach && pitch == fb->pitches[0]) { in gud_prep_flush()
203 drm_fb_memcpy(buf, vaddr, fb, rect); in gud_prep_flush()
227 drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE); in gud_prep_flush()
229 drm_gem_fb_vunmap(fb, map); in gud_prep_flush()
273 static int gud_flush_rect(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_flush_rect() argument
280 drm_dbg(&gdrm->drm, "Flushing [FB:%d] " DRM_RECT_FMT "\n", fb->base.id, DRM_RECT_ARG(rect)); in gud_flush_rect()
282 ret = gud_prep_flush(gdrm, fb, format, rect, &req); in gud_flush_rect()
330 static void gud_retry_failed_flush(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_retry_failed_flush() argument
340 if (!gdrm->fb) { in gud_retry_failed_flush()
341 drm_framebuffer_get(fb); in gud_retry_failed_flush()
342 gdrm->fb = fb; in gud_retry_failed_flush()
357 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()
373 if (!fb) in gud_flush_work()
376 format = fb->format; in gud_flush_work()
393 ret = gud_flush_rect(gdrm, fb, format, &rect); in gud_flush_work()
399 gud_retry_failed_flush(gdrm, fb, &damage); in gud_flush_work()
401 dev_err_ratelimited(fb->dev->dev, in gud_flush_work()
410 drm_framebuffer_put(fb); in gud_flush_work()
415 static void gud_fb_queue_damage(struct gud_device *gdrm, struct drm_framebuffer *fb, in gud_fb_queue_damage() argument
422 if (fb != gdrm->fb) { in gud_fb_queue_damage()
423 old_fb = gdrm->fb; in gud_fb_queue_damage()
424 drm_framebuffer_get(fb); in gud_fb_queue_damage()
425 gdrm->fb = fb; in gud_fb_queue_damage()
446 struct drm_framebuffer *old_fb = old_plane_state->fb; in gud_pipe_check()
448 struct drm_framebuffer *fb = new_plane_state->fb; in gud_pipe_check() local
449 const struct drm_format_info *format = fb->format; in gud_pipe_check()
456 if (WARN_ON_ONCE(!fb)) in gud_pipe_check()
541 if (drm_dev_enter(fb->dev, &idx)) { in gud_pipe_check()
560 struct drm_framebuffer *fb = state->fb; in gud_pipe_update() local
568 if (gdrm->fb) { in gud_pipe_update()
569 drm_framebuffer_put(gdrm->fb); in gud_pipe_update()
570 gdrm->fb = NULL; in gud_pipe_update()
579 if (!old_state->fb) in gud_pipe_update()
582 if (fb && (crtc->state->mode_changed || crtc->state->connectors_changed)) in gud_pipe_update()
590 drm_rect_init(&damage, 0, 0, fb->width, fb->height); in gud_pipe_update()
591 gud_fb_queue_damage(gdrm, fb, &damage); in gud_pipe_update()