diff mbox

[i-g-t,v4,5/5] lib/igt_kms: Added pipe_id_to_vbl_flag() to igt_kms.

Message ID 1461686062-24630-6-git-send-email-robert.foss@collabora.com (mailing list archive)
State New, archived
Headers show

Commit Message

Robert Foss April 26, 2016, 3:54 p.m. UTC
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(+)

Comments

Daniel Vetter May 10, 2016, 7:44 a.m. UTC | #1
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
>
Ville Syrjala May 10, 2016, 5:54 p.m. UTC | #2
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
Robert Foss May 11, 2016, 1:45 p.m. UTC | #3
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
>>
>
Robert Foss May 11, 2016, 1:49 p.m. UTC | #4
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
>
Robert Foss May 11, 2016, 3:31 p.m. UTC | #5
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 mbox

Patch

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);