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
88 bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR; in virtio_gpu_plane_atomic_check()
129 static void virtio_gpu_primary_plane_update(struct drm_plane *plane, in virtio_gpu_primary_plane_update() argument
132 struct drm_device *dev = plane->dev; in virtio_gpu_primary_plane_update()
138 if (plane->state->crtc) in virtio_gpu_primary_plane_update()
139 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_primary_plane_update()
145 if (!plane->state->fb || !output->crtc.state->active) { in virtio_gpu_primary_plane_update()
148 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
149 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
155 if (!drm_atomic_helper_damage_merged(old_state, plane->state, &rect)) in virtio_gpu_primary_plane_update()
158 bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]); in virtio_gpu_primary_plane_update()
160 virtio_gpu_update_dumb_bo(vgdev, plane->state, &rect); in virtio_gpu_primary_plane_update()
162 if (plane->state->fb != old_state->fb || in virtio_gpu_primary_plane_update()
163 plane->state->src_w != old_state->src_w || in virtio_gpu_primary_plane_update()
164 plane->state->src_h != old_state->src_h || in virtio_gpu_primary_plane_update()
165 plane->state->src_x != old_state->src_x || in virtio_gpu_primary_plane_update()
166 plane->state->src_y != old_state->src_y || in virtio_gpu_primary_plane_update()
171 plane->state->crtc_w, plane->state->crtc_h, in virtio_gpu_primary_plane_update()
172 plane->state->crtc_x, plane->state->crtc_y, in virtio_gpu_primary_plane_update()
173 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
174 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
175 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
176 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
179 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
180 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
181 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
182 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
193 static int virtio_gpu_cursor_prepare_fb(struct drm_plane *plane, in virtio_gpu_cursor_prepare_fb() argument
196 struct drm_device *dev = plane->dev; in virtio_gpu_cursor_prepare_fb()
206 if (bo && bo->dumb && (plane->state->fb != new_state->fb)) { in virtio_gpu_cursor_prepare_fb()
215 static void virtio_gpu_cursor_cleanup_fb(struct drm_plane *plane, in virtio_gpu_cursor_cleanup_fb() argument
220 if (!plane->state->fb) in virtio_gpu_cursor_cleanup_fb()
223 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_cursor_cleanup_fb()
230 static void virtio_gpu_cursor_plane_update(struct drm_plane *plane, in virtio_gpu_cursor_plane_update() argument
233 struct drm_device *dev = plane->dev; in virtio_gpu_cursor_plane_update()
240 if (plane->state->crtc) in virtio_gpu_cursor_plane_update()
241 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_cursor_plane_update()
247 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
248 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_cursor_plane_update()
255 if (bo && bo->dumb && (plane->state->fb != old_state->fb)) { in virtio_gpu_cursor_plane_update()
266 plane->state->crtc_w, in virtio_gpu_cursor_plane_update()
267 plane->state->crtc_h, in virtio_gpu_cursor_plane_update()
275 if (plane->state->fb != old_state->fb) { in virtio_gpu_cursor_plane_update()
277 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
278 plane->state->crtc_y, in virtio_gpu_cursor_plane_update()
279 plane->state->fb ? plane->state->fb->hot_x : 0, in virtio_gpu_cursor_plane_update()
280 plane->state->fb ? plane->state->fb->hot_y : 0); in virtio_gpu_cursor_plane_update()
284 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
286 cpu_to_le32(plane->state->fb->hot_x); in virtio_gpu_cursor_plane_update()
288 cpu_to_le32(plane->state->fb->hot_y); in virtio_gpu_cursor_plane_update()
295 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
296 plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
300 output->cursor.pos.x = cpu_to_le32(plane->state->crtc_x); in virtio_gpu_cursor_plane_update()
301 output->cursor.pos.y = cpu_to_le32(plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
323 struct drm_plane *plane; in virtio_gpu_plane_init() local
327 plane = kzalloc(sizeof(*plane), GFP_KERNEL); in virtio_gpu_plane_init()
328 if (!plane) in virtio_gpu_plane_init()
340 ret = drm_universal_plane_init(dev, plane, 1 << index, in virtio_gpu_plane_init()
347 drm_plane_helper_add(plane, funcs); in virtio_gpu_plane_init()
348 return plane; in virtio_gpu_plane_init()
351 kfree(plane); in virtio_gpu_plane_init()