Lines Matching refs:plane
77 static int virtio_gpu_plane_atomic_check(struct drm_plane *plane, in virtio_gpu_plane_atomic_check() argument
81 plane); in virtio_gpu_plane_atomic_check()
82 bool is_cursor = plane->type == DRM_PLANE_TYPE_CURSOR; in virtio_gpu_plane_atomic_check()
124 static void virtio_gpu_resource_flush(struct drm_plane *plane, in virtio_gpu_resource_flush() argument
128 struct drm_device *dev = plane->dev; in virtio_gpu_resource_flush()
133 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_resource_flush()
158 static void virtio_gpu_primary_plane_update(struct drm_plane *plane, in virtio_gpu_primary_plane_update() argument
162 plane); in virtio_gpu_primary_plane_update()
163 struct drm_device *dev = plane->dev; in virtio_gpu_primary_plane_update()
169 if (plane->state->crtc) in virtio_gpu_primary_plane_update()
170 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_primary_plane_update()
176 if (!plane->state->fb || !output->crtc.state->active) { 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()
186 if (!drm_atomic_helper_damage_merged(old_state, plane->state, &rect)) in virtio_gpu_primary_plane_update()
189 bo = gem_to_virtio_gpu_obj(plane->state->fb->obj[0]); in virtio_gpu_primary_plane_update()
191 virtio_gpu_update_dumb_bo(vgdev, plane->state, &rect); in virtio_gpu_primary_plane_update()
193 if (plane->state->fb != old_state->fb || in virtio_gpu_primary_plane_update()
194 plane->state->src_w != old_state->src_w || in virtio_gpu_primary_plane_update()
195 plane->state->src_h != old_state->src_h || in virtio_gpu_primary_plane_update()
196 plane->state->src_x != old_state->src_x || in virtio_gpu_primary_plane_update()
197 plane->state->src_y != old_state->src_y || in virtio_gpu_primary_plane_update()
202 plane->state->crtc_w, plane->state->crtc_h, in virtio_gpu_primary_plane_update()
203 plane->state->crtc_x, plane->state->crtc_y, in virtio_gpu_primary_plane_update()
204 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
205 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
206 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
207 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
212 plane->state->fb, in virtio_gpu_primary_plane_update()
213 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
214 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
215 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
216 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
220 plane->state->src_w >> 16, in virtio_gpu_primary_plane_update()
221 plane->state->src_h >> 16, in virtio_gpu_primary_plane_update()
222 plane->state->src_x >> 16, in virtio_gpu_primary_plane_update()
223 plane->state->src_y >> 16); in virtio_gpu_primary_plane_update()
227 virtio_gpu_resource_flush(plane, in virtio_gpu_primary_plane_update()
234 static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane, in virtio_gpu_plane_prepare_fb() argument
237 struct drm_device *dev = plane->dev; in virtio_gpu_plane_prepare_fb()
247 if (!bo || (plane->type == DRM_PLANE_TYPE_PRIMARY && !bo->guest_blob)) in virtio_gpu_plane_prepare_fb()
250 if (bo->dumb && (plane->state->fb != new_state->fb)) { in virtio_gpu_plane_prepare_fb()
260 static void virtio_gpu_plane_cleanup_fb(struct drm_plane *plane, in virtio_gpu_plane_cleanup_fb() argument
275 static void virtio_gpu_cursor_plane_update(struct drm_plane *plane, in virtio_gpu_cursor_plane_update() argument
279 plane); in virtio_gpu_cursor_plane_update()
280 struct drm_device *dev = plane->dev; in virtio_gpu_cursor_plane_update()
287 if (plane->state->crtc) in virtio_gpu_cursor_plane_update()
288 output = drm_crtc_to_virtio_gpu_output(plane->state->crtc); in virtio_gpu_cursor_plane_update()
294 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
295 vgfb = to_virtio_gpu_framebuffer(plane->state->fb); in virtio_gpu_cursor_plane_update()
302 if (bo && bo->dumb && (plane->state->fb != old_state->fb)) { in virtio_gpu_cursor_plane_update()
313 plane->state->crtc_w, in virtio_gpu_cursor_plane_update()
314 plane->state->crtc_h, in virtio_gpu_cursor_plane_update()
322 if (plane->state->fb != old_state->fb) { in virtio_gpu_cursor_plane_update()
324 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
325 plane->state->crtc_y, in virtio_gpu_cursor_plane_update()
326 plane->state->fb ? plane->state->fb->hot_x : 0, in virtio_gpu_cursor_plane_update()
327 plane->state->fb ? plane->state->fb->hot_y : 0); in virtio_gpu_cursor_plane_update()
331 if (plane->state->fb) { in virtio_gpu_cursor_plane_update()
333 cpu_to_le32(plane->state->fb->hot_x); in virtio_gpu_cursor_plane_update()
335 cpu_to_le32(plane->state->fb->hot_y); in virtio_gpu_cursor_plane_update()
342 plane->state->crtc_x, in virtio_gpu_cursor_plane_update()
343 plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
347 output->cursor.pos.x = cpu_to_le32(plane->state->crtc_x); in virtio_gpu_cursor_plane_update()
348 output->cursor.pos.y = cpu_to_le32(plane->state->crtc_y); in virtio_gpu_cursor_plane_update()
372 struct drm_plane *plane; in virtio_gpu_plane_init() local
386 plane = drmm_universal_plane_alloc(dev, struct drm_plane, dev, in virtio_gpu_plane_init()
389 if (IS_ERR(plane)) in virtio_gpu_plane_init()
390 return plane; in virtio_gpu_plane_init()
392 drm_plane_helper_add(plane, funcs); in virtio_gpu_plane_init()
393 return plane; in virtio_gpu_plane_init()