On Fri, Dec 9, 2011 at 4:59 AM, Inki Dae <inki.dae at samsung.com> wrote: > +static int > +exynos_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, > + ? ? ? ? ? ? ? ? ? ?struct drm_framebuffer *fb, int crtc_x, int crtc_y, > + ? ? ? ? ? ? ? ? ? ?unsigned int crtc_w, unsigned int crtc_h, > + ? ? ? ? ? ? ? ? ? ?uint32_t src_x, uint32_t src_y, > + ? ? ? ? ? ? ? ? ? ?uint32_t src_w, uint32_t src_h) > +{ > + ? ? ? struct exynos_plane *exynos_plane = > + ? ? ? ? ? ? ? container_of(plane, struct exynos_plane, base); > + ? ? ? struct exynos_drm_overlay *overlay = &exynos_plane->overlay; > + ? ? ? struct exynos_drm_crtc_pos pos; > + ? ? ? int ret; > + > + ? ? ? DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__); > + > + ? ? ? memset(&pos, 0, sizeof(struct exynos_drm_crtc_pos)); > + ? ? ? pos.crtc_x = crtc_x; > + ? ? ? pos.crtc_y = crtc_y; > + ? ? ? pos.crtc_w = crtc_w; > + ? ? ? pos.crtc_h = crtc_h; > + > + ? ? ? pos.fb_x = src_x; > + ? ? ? pos.fb_y = src_y;
also, I think src_x/src_y should be interpreted at 16.16/Q16 fixed point. But elsewhere were I see fb_x/y used it, it doesn't appear to be interpreted this way. Also, I *think* that comment was meant to apply to src_h/src_w (Jesse?), but you seem to ignore these parameters.. BR, -R > + > + ? ? ? /* TODO: scale feature */ > + ? ? ? ret = exynos_drm_overlay_update(overlay, fb, &crtc->mode, &pos); > + ? ? ? if (ret < 0) > + ? ? ? ? ? ? ? return ret; > + > + ? ? ? exynos_drm_fn_encoder(crtc, overlay, > + ? ? ? ? ? ? ? ? ? ? ? exynos_drm_encoder_crtc_mode_set); > + ? ? ? exynos_drm_fn_encoder(crtc, &overlay->zpos, > + ? ? ? ? ? ? ? ? ? ? ? exynos_drm_encoder_crtc_plane_commit); > + > + ? ? ? exynos_plane->enabled = true; > + > + ? ? ? return 0; > +} > +