Skip to content

Commit

Permalink
Change SetSrc and SetCrtc to accept all values.
Browse files Browse the repository at this point in the history
  • Loading branch information
rellla committed Jan 19, 2021
1 parent 2a9cb04 commit a363191
Showing 1 changed file with 19 additions and 19 deletions.
38 changes: 19 additions & 19 deletions video_drm.c
Expand Up @@ -196,30 +196,30 @@ void ChangePlanes(VideoRender * render, int back)
drmModeAtomicFree(ModeReq);
}

void SetCrtc(VideoRender * render, drmModeAtomicReqPtr ModeReq,
uint32_t plane_id, int x, int width)
void SetPlaneCrtc(VideoRender * render, drmModeAtomicReqPtr ModeReq, uint32_t plane_id,
uint64_t crtc_x, uint64_t crtc_y, uint64_t crtc_w, uint64_t crtc_h)
{
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "CRTC_X", x);
DRM_MODE_OBJECT_PLANE, "CRTC_X", crtc_x);
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "CRTC_Y", 0);
DRM_MODE_OBJECT_PLANE, "CRTC_Y", crtc_y);
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "CRTC_W", width);
DRM_MODE_OBJECT_PLANE, "CRTC_W", crtc_w);
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "CRTC_H", render->mode.vdisplay);
DRM_MODE_OBJECT_PLANE, "CRTC_H", crtc_h);
}

void SetSrc(VideoRender * render, drmModeAtomicReqPtr ModeReq,
uint32_t plane_id, struct drm_buf *buf)
void SetPlaneSrc(VideoRender * render, drmModeAtomicReqPtr ModeReq, uint32_t plane_id,
uint64_t src_x, uint64_t src_y, uint64_t src_w, uint64_t src_h)
{
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "SRC_X", 0);
DRM_MODE_OBJECT_PLANE, "SRC_X", src_x);
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "SRC_Y", 0);
DRM_MODE_OBJECT_PLANE, "SRC_Y", src_y);
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "SRC_W", buf->width << 16);
DRM_MODE_OBJECT_PLANE, "SRC_W", src_w << 16);
SetPropertyRequest(ModeReq, render->fd_drm, plane_id,
DRM_MODE_OBJECT_PLANE, "SRC_H", buf->height << 16);
DRM_MODE_OBJECT_PLANE, "SRC_H", src_h << 16);
}

size_t ReadLineFromFile(char *buf, size_t size, char * file)
Expand Down Expand Up @@ -831,12 +831,12 @@ static void Frame2Display(VideoRender * render)

if (buf->width != (GetPropertyValue(render->fd_drm, render->video_plane,
DRM_MODE_OBJECT_PLANE, "SRC_W") >> 16))
SetSrc(render, ModeReq, render->video_plane, buf);
SetPlaneSrc(render, ModeReq, render->video_plane, 0, 0, buf->width, buf->height);

if (PicWidth != GetPropertyValue(render->fd_drm, render->video_plane,
DRM_MODE_OBJECT_PLANE, "CRTC_W"))
SetCrtc(render, ModeReq, render->video_plane,
(render->mode.hdisplay - PicWidth) / 2, PicWidth);
SetPlaneCrtc(render, ModeReq, render->video_plane,
(render->mode.hdisplay - PicWidth) / 2, 0, PicWidth, render->mode.vdisplay);

SetPropertyRequest(ModeReq, render->fd_drm, render->video_plane,
DRM_MODE_OBJECT_PLANE, "FB_ID", buf->fb_id);
Expand Down Expand Up @@ -1731,18 +1731,18 @@ void VideoInit(VideoRender * render)
DRM_MODE_OBJECT_CONNECTOR, "CRTC_ID", render->crtc_id);
SetPropertyRequest(ModeReq, render->fd_drm, render->crtc_id,
DRM_MODE_OBJECT_CRTC, "ACTIVE", 1);
SetCrtc(render, ModeReq, prime_plane, 0, render->mode.hdisplay);
SetPlaneCrtc(render, ModeReq, prime_plane, 0, 0, render->mode.hdisplay, render->mode.vdisplay);

if (render->use_zpos) {
// Primary plane
SetSrc(render, ModeReq, prime_plane, &render->buf_osd);
SetPlaneSrc(render, ModeReq, prime_plane, 0, 0, render->buf_osd.width, render->buf_osd.height);
SetPropertyRequest(ModeReq, render->fd_drm, prime_plane,
DRM_MODE_OBJECT_PLANE, "FB_ID", render->buf_osd.fb_id);
// Black Buffer
SetCrtc(render, ModeReq, overlay_plane, 0, render->mode.hdisplay);
SetPlaneCrtc(render, ModeReq, overlay_plane, 0, 0, render->mode.hdisplay, render->mode.vdisplay);
SetPropertyRequest(ModeReq, render->fd_drm, overlay_plane,
DRM_MODE_OBJECT_PLANE, "CRTC_ID", render->crtc_id);
SetSrc(render, ModeReq, overlay_plane, &render->buf_black);
SetPlaneSrc(render, ModeReq, overlay_plane, 0, 0, render->buf_black.width, render->buf_black.height);
SetPropertyRequest(ModeReq, render->fd_drm, overlay_plane,
DRM_MODE_OBJECT_PLANE, "FB_ID", render->buf_black.fb_id);
}
Expand Down

0 comments on commit a363191

Please sign in to comment.