Lines Matching full:plane

70 drm_plane_state *virtio_gpu_plane_duplicate_state(struct drm_plane *plane)  in virtio_gpu_plane_duplicate_state()  argument
74 if (WARN_ON(!plane->state)) in virtio_gpu_plane_duplicate_state()
81 __drm_atomic_helper_plane_duplicate_state(plane, &new->base); in virtio_gpu_plane_duplicate_state()
94 static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, in virtio_gpu_plane_atomic_check() argument
98 plane); in virtio_gpu_plane_atomic_check()
100 plane); in virtio_gpu_plane_atomic_check()
101 bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR; in virtio_gpu_plane_atomic_check()
109 * Ignore damage clips if the framebuffer attached to the plane's state in virtio_gpu_plane_atomic_check()
110 * has changed since the last plane update (page-flip). In this case, a in virtio_gpu_plane_atomic_check()
111 * full plane update should happen because uploads are done per-buffer. in virtio_gpu_plane_atomic_check()
151 static void virtio_gpu_resource_flush(struct drm_plane *plane, in virtio_gpu_resource_flush() argument
155 struct drm_device *dev = plane->dev; in virtio_gpu_resource_flush()
161 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_resource_flush()
162 vgplane_st = to_virtio_gpu_plane_state(plane->state); in virtio_gpu_resource_flush()
185 static void virtio_gpu_primary_plane_update(struct drm_plane *plane, in virtio_gpu_primary_plane_update() argument
189 plane); in virtio_gpu_primary_plane_update()
190 struct drm_device *dev = plane->dev; in virtio_gpu_primary_plane_update()
196 if (plane->state->crtc) in virtio_gpu_primary_plane_update()
197 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_primary_plane_update()
203 if (!plane->state->fb || !output->crtc.state->active) { in virtio_gpu_primary_plane_update()
206 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
207 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
213 if (!drm_atomic_helper_damage_merged(old_state, plane->state, &rect)) in virtio_gpu_primary_plane_update()
216 bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]); in virtio_gpu_primary_plane_update()
218 virtio_gpu_update_dumb_bo(vgdev, plane->state, &rect); in virtio_gpu_primary_plane_update()
220 if (plane->state->fb != old_state->fb || in virtio_gpu_primary_plane_update()
221 plane->state->src_w != old_state->src_w || in virtio_gpu_primary_plane_update()
222 plane->state->src_h != old_state->src_h || in virtio_gpu_primary_plane_update()
223 plane->state->src_x != old_state->src_x || in virtio_gpu_primary_plane_update()
224 plane->state->src_y != old_state->src_y || in virtio_gpu_primary_plane_update()
229 plane->state->crtc_w, plane->state->crtc_h, in virtio_gpu_primary_plane_update()
230 plane->state->crtc_x, plane->state->crtc_y, in virtio_gpu_primary_plane_update()
231 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
232 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
233 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
234 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
239 plane->state->fb, in virtio_gpu_primary_plane_update()
240 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
241 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
242 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
243 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
247 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
248 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
249 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
250 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
254 virtio_gpu_resource_flush(plane, in virtio_gpu_primary_plane_update()
261 static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane, in virtio_gpu_plane_prepare_fb() argument
264 struct drm_device *dev = plane->dev; in virtio_gpu_plane_prepare_fb()
276 if (!bo || (plane->type == DRM_PLANE_TYPE_PRIMARY && !bo->guest_blob)) in virtio_gpu_plane_prepare_fb()
290 static void virtio_gpu_plane_cleanup_fb(struct drm_plane *plane, in virtio_gpu_plane_cleanup_fb() argument
305 static void virtio_gpu_cursor_plane_update(struct drm_plane *plane, in virtio_gpu_cursor_plane_update() argument
309 plane); in virtio_gpu_cursor_plane_update()
310 struct drm_device *dev = plane->dev; in virtio_gpu_cursor_plane_update()
318 if (plane->state->crtc) in virtio_gpu_cursor_plane_update()
319 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_cursor_plane_update()
325 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
326 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_cursor_plane_update()
327 vgplane_st = to_virtio_gpu_plane_state(plane->state); in virtio_gpu_cursor_plane_update()
334 if (bo && bo->dumb && (plane->state->fb != old_state->fb)) { in virtio_gpu_cursor_plane_update()
345 plane->state->crtc_w, in virtio_gpu_cursor_plane_update()
346 plane->state->crtc_h, in virtio_gpu_cursor_plane_update()
352 if (plane->state->fb != old_state->fb) { in virtio_gpu_cursor_plane_update()
354 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
355 plane->state->crtc_y, in virtio_gpu_cursor_plane_update()
356 plane->state->fb ? plane->state->fb->hot_x : 0, in virtio_gpu_cursor_plane_update()
357 plane->state->fb ? plane->state->fb->hot_y : 0); in virtio_gpu_cursor_plane_update()
361 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
363 cpu_to_le32(plane->state->fb->hot_x); in virtio_gpu_cursor_plane_update()
365 cpu_to_le32(plane->state->fb->hot_y); in virtio_gpu_cursor_plane_update()
372 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
373 plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
377 output->cursor.pos.x = cpu_to_le32(plane->state->crtc_x); in virtio_gpu_cursor_plane_update()
378 output->cursor.pos.y = cpu_to_le32(plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
402 struct drm_plane *plane; in virtio_gpu_plane_init() local
416 plane = drmm_universal_plane_alloc(dev, struct drm_plane, dev, in virtio_gpu_plane_init()
419 if (IS_ERR(plane)) in virtio_gpu_plane_init()
420 return plane; in virtio_gpu_plane_init()
422 drm_plane_helper_add(plane, funcs); in virtio_gpu_plane_init()
425 drm_plane_enable_fb_damage_clips(plane); in virtio_gpu_plane_init()
427 return plane; in virtio_gpu_plane_init()