Message ID | 1461686062-24630-6-git-send-email-robert.foss@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 26, 2016 at 11:54:22AM -0400, robert.foss@collabora.com wrote: > From: Robert Foss <robert.foss@collabora.com> > > Added function pipe_id_to_vbl_flag() to igt_kms. > This function formats a pipe_id into the format > expected by DRM while processing DRM_IOCTL_WAIT_VBLANK. > > Signed-off-by: Robert Foss <robert.foss@collabora.com> This needs to be reorder with patch 4 since otherwise the patch to change kms_vblank won't compile. > --- > lib/igt_kms.c | 16 ++++++++++++++++ > lib/igt_kms.h | 1 + > 2 files changed, 17 insertions(+) > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c > index 99b6279..48b95e6 100644 > --- a/lib/igt_kms.c > +++ b/lib/igt_kms.c > @@ -2557,3 +2557,19 @@ void igt_reset_connectors(void) > close(fd); > } > } > + > +/** > + * pipe_id_to_vbl_flag: > + * > + * Convert a pipe if into the flag representation > + * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK. > + */ > +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id) kmstest_ prefix please. Also, maybe we should directly take a drmModeCrtc for even more convenience. Also please use this helper everywhere, a quick grep shows drm_read.c, kms_flip.c, kms_vblank.c (already in this series) and lib/igt_kms.c. -Daniel > +{ > + if (pipe_id == 0) > + return 0; > + else if (pipe_id == 1) > + return 1 | _DRM_VBLANK_SECONDARY; > + else > + return pipe_id << 1; > +} > diff --git a/lib/igt_kms.h b/lib/igt_kms.h > index d9a4e11..f74edaf 100644 > --- a/lib/igt_kms.h > +++ b/lib/igt_kms.h > @@ -400,6 +400,7 @@ void igt_wait_for_vblank(int drm_fd, enum pipe pipe); > > void igt_enable_connectors(void); > void igt_reset_connectors(void); > +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id); > > #define EDID_LENGTH 128 > const unsigned char* igt_kms_get_base_edid(void); > -- > 2.5.0 >
On Tue, Apr 26, 2016 at 11:54:22AM -0400, robert.foss@collabora.com wrote: > From: Robert Foss <robert.foss@collabora.com> > > Added function pipe_id_to_vbl_flag() to igt_kms. > This function formats a pipe_id into the format > expected by DRM while processing DRM_IOCTL_WAIT_VBLANK. > > Signed-off-by: Robert Foss <robert.foss@collabora.com> > --- > lib/igt_kms.c | 16 ++++++++++++++++ > lib/igt_kms.h | 1 + > 2 files changed, 17 insertions(+) > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c > index 99b6279..48b95e6 100644 > --- a/lib/igt_kms.c > +++ b/lib/igt_kms.c > @@ -2557,3 +2557,19 @@ void igt_reset_connectors(void) > close(fd); > } > } > + > +/** > + * pipe_id_to_vbl_flag: > + * > + * Convert a pipe if into the flag representation > + * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK. > + */ > +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id) > +{ > + if (pipe_id == 0) > + return 0; > + else if (pipe_id == 1) > + return 1 | _DRM_VBLANK_SECONDARY; The '1 |' means this will always end up as DRM_VBLANK_RELATIVE. > + else > + return pipe_id << 1; > +} > diff --git a/lib/igt_kms.h b/lib/igt_kms.h > index d9a4e11..f74edaf 100644 > --- a/lib/igt_kms.h > +++ b/lib/igt_kms.h > @@ -400,6 +400,7 @@ void igt_wait_for_vblank(int drm_fd, enum pipe pipe); > > void igt_enable_connectors(void); > void igt_reset_connectors(void); > +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id); > > #define EDID_LENGTH 128 > const unsigned char* igt_kms_get_base_edid(void); > -- > 2.5.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
On 2016-05-10 03:44 AM, Daniel Vetter wrote: > On Tue, Apr 26, 2016 at 11:54:22AM -0400, robert.foss@collabora.com wrote: >> From: Robert Foss <robert.foss@collabora.com> >> >> Added function pipe_id_to_vbl_flag() to igt_kms. >> This function formats a pipe_id into the format >> expected by DRM while processing DRM_IOCTL_WAIT_VBLANK. >> >> Signed-off-by: Robert Foss <robert.foss@collabora.com> > > This needs to be reorder with patch 4 since otherwise the patch to change > kms_vblank won't compile. Naturally, I will change that in v5. >> --- >> lib/igt_kms.c | 16 ++++++++++++++++ >> lib/igt_kms.h | 1 + >> 2 files changed, 17 insertions(+) >> >> diff --git a/lib/igt_kms.c b/lib/igt_kms.c >> index 99b6279..48b95e6 100644 >> --- a/lib/igt_kms.c >> +++ b/lib/igt_kms.c >> @@ -2557,3 +2557,19 @@ void igt_reset_connectors(void) >> close(fd); >> } >> } >> + >> +/** >> + * pipe_id_to_vbl_flag: >> + * >> + * Convert a pipe if into the flag representation >> + * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK. >> + */ >> +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id) > > kmstest_ prefix please. Also, maybe we should directly take a drmModeCrtc > for even more convenience. I'll add the prefix and look into taking an drmModeCrtc instead of a pipe id. > > Also please use this helper everywhere, a quick grep shows drm_read.c, > kms_flip.c, kms_vblank.c (already in this series) and lib/igt_kms.c. > -Daniel > Will do. I'll add additional uses of this helper function in v5. >> +{ >> + if (pipe_id == 0) >> + return 0; >> + else if (pipe_id == 1) >> + return 1 | _DRM_VBLANK_SECONDARY; >> + else >> + return pipe_id << 1; >> +} >> diff --git a/lib/igt_kms.h b/lib/igt_kms.h >> index d9a4e11..f74edaf 100644 >> --- a/lib/igt_kms.h >> +++ b/lib/igt_kms.h >> @@ -400,6 +400,7 @@ void igt_wait_for_vblank(int drm_fd, enum pipe pipe); >> >> void igt_enable_connectors(void); >> void igt_reset_connectors(void); >> +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id); >> >> #define EDID_LENGTH 128 >> const unsigned char* igt_kms_get_base_edid(void); >> -- >> 2.5.0 >> >
On 2016-05-10 01:54 PM, Ville Syrjälä wrote: > On Tue, Apr 26, 2016 at 11:54:22AM -0400, robert.foss@collabora.com wrote: >> From: Robert Foss <robert.foss@collabora.com> >> >> Added function pipe_id_to_vbl_flag() to igt_kms. >> This function formats a pipe_id into the format >> expected by DRM while processing DRM_IOCTL_WAIT_VBLANK. >> >> Signed-off-by: Robert Foss <robert.foss@collabora.com> >> --- >> lib/igt_kms.c | 16 ++++++++++++++++ >> lib/igt_kms.h | 1 + >> 2 files changed, 17 insertions(+) >> >> diff --git a/lib/igt_kms.c b/lib/igt_kms.c >> index 99b6279..48b95e6 100644 >> --- a/lib/igt_kms.c >> +++ b/lib/igt_kms.c >> @@ -2557,3 +2557,19 @@ void igt_reset_connectors(void) >> close(fd); >> } >> } >> + >> +/** >> + * pipe_id_to_vbl_flag: >> + * >> + * Convert a pipe if into the flag representation >> + * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK. >> + */ >> +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id) >> +{ >> + if (pipe_id == 0) >> + return 0; >> + else if (pipe_id == 1) >> + return 1 | _DRM_VBLANK_SECONDARY; > > The '1 |' means this will always end up as DRM_VBLANK_RELATIVE. Ah, of course. I will look into the proper formatting and submit it in v5. Thank you Ville for having a look at this. Rob. > >> + else >> + return pipe_id << 1; >> +} >> diff --git a/lib/igt_kms.h b/lib/igt_kms.h >> index d9a4e11..f74edaf 100644 >> --- a/lib/igt_kms.h >> +++ b/lib/igt_kms.h >> @@ -400,6 +400,7 @@ void igt_wait_for_vblank(int drm_fd, enum pipe pipe); >> >> void igt_enable_connectors(void); >> void igt_reset_connectors(void); >> +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id); >> >> #define EDID_LENGTH 128 >> const unsigned char* igt_kms_get_base_edid(void); >> -- >> 2.5.0 >> >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/intel-gfx >
On 2016-05-11 09:45 AM, Robert Foss wrote: > > > On 2016-05-10 03:44 AM, Daniel Vetter wrote: >> On Tue, Apr 26, 2016 at 11:54:22AM -0400, robert.foss@collabora.com >> wrote: >>> From: Robert Foss <robert.foss@collabora.com> >>> >>> Added function pipe_id_to_vbl_flag() to igt_kms. >>> This function formats a pipe_id into the format >>> expected by DRM while processing DRM_IOCTL_WAIT_VBLANK. >>> >>> Signed-off-by: Robert Foss <robert.foss@collabora.com> >> >> This needs to be reorder with patch 4 since otherwise the patch to change >> kms_vblank won't compile. > > Naturally, I will change that in v5. > >>> --- >>> lib/igt_kms.c | 16 ++++++++++++++++ >>> lib/igt_kms.h | 1 + >>> 2 files changed, 17 insertions(+) >>> >>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c >>> index 99b6279..48b95e6 100644 >>> --- a/lib/igt_kms.c >>> +++ b/lib/igt_kms.c >>> @@ -2557,3 +2557,19 @@ void igt_reset_connectors(void) >>> close(fd); >>> } >>> } >>> + >>> +/** >>> + * pipe_id_to_vbl_flag: >>> + * >>> + * Convert a pipe if into the flag representation >>> + * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK. >>> + */ >>> +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id) >> >> kmstest_ prefix please. Also, maybe we should directly take a drmModeCrtc >> for even more convenience. > > I'll add the prefix and look into taking an drmModeCrtc instead of a > pipe id. I had a look around at the other places this helper function could be used, and drmModeCrtc are not available in any of them. But pipe ids are. I don't really agree with chaning the pipe_id to drmModeCrtc. If you still feel like that is the right thing to do, I'll happily change it to drmModeCrtc anyway. Rob. > >> >> Also please use this helper everywhere, a quick grep shows drm_read.c, >> kms_flip.c, kms_vblank.c (already in this series) and lib/igt_kms.c. >> -Daniel >> > > Will do. I'll add additional uses of this helper function in v5. > >>> +{ >>> + if (pipe_id == 0) >>> + return 0; >>> + else if (pipe_id == 1) >>> + return 1 | _DRM_VBLANK_SECONDARY; >>> + else >>> + return pipe_id << 1; >>> +} >>> diff --git a/lib/igt_kms.h b/lib/igt_kms.h >>> index d9a4e11..f74edaf 100644 >>> --- a/lib/igt_kms.h >>> +++ b/lib/igt_kms.h >>> @@ -400,6 +400,7 @@ void igt_wait_for_vblank(int drm_fd, enum pipe >>> pipe); >>> >>> void igt_enable_connectors(void); >>> void igt_reset_connectors(void); >>> +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id); >>> >>> #define EDID_LENGTH 128 >>> const unsigned char* igt_kms_get_base_edid(void); >>> -- >>> 2.5.0 >>> >> > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 99b6279..48b95e6 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -2557,3 +2557,19 @@ void igt_reset_connectors(void) close(fd); } } + +/** + * pipe_id_to_vbl_flag: + * + * Convert a pipe if into the flag representation + * expected in DRM while processing DRM_IOCTL_WAIT_VBLANK. + */ +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id) +{ + if (pipe_id == 0) + return 0; + else if (pipe_id == 1) + return 1 | _DRM_VBLANK_SECONDARY; + else + return pipe_id << 1; +} diff --git a/lib/igt_kms.h b/lib/igt_kms.h index d9a4e11..f74edaf 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -400,6 +400,7 @@ void igt_wait_for_vblank(int drm_fd, enum pipe pipe); void igt_enable_connectors(void); void igt_reset_connectors(void); +uint32_t pipe_id_to_vbl_flag(uint32_t pipe_id); #define EDID_LENGTH 128 const unsigned char* igt_kms_get_base_edid(void);