Lines Matching full:plane

70 static void virtio_gpu_plane_destroy(struct drm_plane *plane)  in virtio_gpu_plane_destroy()  argument
72 drm_plane_cleanup(plane); in virtio_gpu_plane_destroy()
73 kfree(plane); in virtio_gpu_plane_destroy()
85 static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, in virtio_gpu_plane_atomic_check() argument
89 plane); in virtio_gpu_plane_atomic_check()
90 bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR; in virtio_gpu_plane_atomic_check()
132 static void virtio_gpu_resource_flush(struct drm_plane *plane, in virtio_gpu_resource_flush() argument
136 struct drm_device *dev = plane->dev; in virtio_gpu_resource_flush()
141 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_resource_flush()
166 static void virtio_gpu_primary_plane_update(struct drm_plane *plane, in virtio_gpu_primary_plane_update() argument
170 plane); in virtio_gpu_primary_plane_update()
171 struct drm_device *dev = plane->dev; in virtio_gpu_primary_plane_update()
177 if (plane->state->crtc) in virtio_gpu_primary_plane_update()
178 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_primary_plane_update()
184 if (!plane->state->fb || !output->crtc.state->active) { in virtio_gpu_primary_plane_update()
187 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
188 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
194 if (!drm_atomic_helper_damage_merged(old_state, plane->state, &rect)) in virtio_gpu_primary_plane_update()
197 bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]); in virtio_gpu_primary_plane_update()
199 virtio_gpu_update_dumb_bo(vgdev, plane->state, &rect); in virtio_gpu_primary_plane_update()
201 if (plane->state->fb != old_state->fb || in virtio_gpu_primary_plane_update()
202 plane->state->src_w != old_state->src_w || in virtio_gpu_primary_plane_update()
203 plane->state->src_h != old_state->src_h || in virtio_gpu_primary_plane_update()
204 plane->state->src_x != old_state->src_x || in virtio_gpu_primary_plane_update()
205 plane->state->src_y != old_state->src_y || in virtio_gpu_primary_plane_update()
210 plane->state->crtc_w, plane->state->crtc_h, in virtio_gpu_primary_plane_update()
211 plane->state->crtc_x, plane->state->crtc_y, in virtio_gpu_primary_plane_update()
212 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
213 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
214 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
215 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
220 plane->state->fb, in virtio_gpu_primary_plane_update()
221 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
222 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
223 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
224 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
228 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
229 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
230 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
231 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
235 virtio_gpu_resource_flush(plane, in virtio_gpu_primary_plane_update()
242 static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane, in virtio_gpu_plane_prepare_fb() argument
245 struct drm_device *dev = plane->dev; in virtio_gpu_plane_prepare_fb()
255 if (!bo || (plane->type == DRM_PLANE_TYPE_PRIMARY && !bo->guest_blob)) in virtio_gpu_plane_prepare_fb()
258 if (bo->dumb && (plane->state->fb != new_state->fb)) { in virtio_gpu_plane_prepare_fb()
267 static void virtio_gpu_plane_cleanup_fb(struct drm_plane *plane, in virtio_gpu_plane_cleanup_fb() argument
272 if (!plane->state->fb) in virtio_gpu_plane_cleanup_fb()
275 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_plane_cleanup_fb()
282 static void virtio_gpu_cursor_plane_update(struct drm_plane *plane, in virtio_gpu_cursor_plane_update() argument
286 plane); in virtio_gpu_cursor_plane_update()
287 struct drm_device *dev = plane->dev; in virtio_gpu_cursor_plane_update()
294 if (plane->state->crtc) in virtio_gpu_cursor_plane_update()
295 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_cursor_plane_update()
301 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
302 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_cursor_plane_update()
309 if (bo && bo->dumb && (plane->state->fb != old_state->fb)) { in virtio_gpu_cursor_plane_update()
320 plane->state->crtc_w, in virtio_gpu_cursor_plane_update()
321 plane->state->crtc_h, in virtio_gpu_cursor_plane_update()
329 if (plane->state->fb != old_state->fb) { in virtio_gpu_cursor_plane_update()
331 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
332 plane->state->crtc_y, in virtio_gpu_cursor_plane_update()
333 plane->state->fb ? plane->state->fb->hot_x : 0, in virtio_gpu_cursor_plane_update()
334 plane->state->fb ? plane->state->fb->hot_y : 0); in virtio_gpu_cursor_plane_update()
338 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
340 cpu_to_le32(plane->state->fb->hot_x); in virtio_gpu_cursor_plane_update()
342 cpu_to_le32(plane->state->fb->hot_y); in virtio_gpu_cursor_plane_update()
349 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
350 plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
354 output->cursor.pos.x = cpu_to_le32(plane->state->crtc_x); in virtio_gpu_cursor_plane_update()
355 output->cursor.pos.y = cpu_to_le32(plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
379 struct drm_plane *plane; in virtio_gpu_plane_init() local
383 plane = kzalloc(sizeof(*plane), GFP_KERNEL); in virtio_gpu_plane_init()
384 if (!plane) in virtio_gpu_plane_init()
396 ret = drm_universal_plane_init(dev, plane, 1 << index, in virtio_gpu_plane_init()
403 drm_plane_helper_add(plane, funcs); in virtio_gpu_plane_init()
404 return plane; in virtio_gpu_plane_init()
407 kfree(plane); in virtio_gpu_plane_init()