Re: [PATCH] drm/vblank: Simplify drm_dev_has_vblank()

2023-04-05 Thread Daniel Vetter
On Wed, Apr 05, 2023 at 12:00:23AM +0300, Ville Syrjälä wrote:
> On Tue, Apr 04, 2023 at 10:46:00PM +0200, Daniel Vetter wrote:
> > On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote:
> > > From: Rob Clark 
> > > 
> > > What does vblank have to do with num_crtcs?  Well, this was technically
> > > correct, but you'd have to go look at where num_crtcs is initialized to
> > > understand why.  Lets just replace it with the simpler and more obvious
> > > check.
> > 
> > If you want to fix this, then I think the right fix is to rename num_crtcs
> > to be something like num_vblank_crtcs. It's a historical accident back
> > when vblanks without kms was a thing.
> > 
> > Plan B is someone gets really busy and fixes up the entire vblank mess and
> > moves it into drm_crtc struct. Now that the dri1 drivers are gone we could
> > indeed do that.
> 
> And easy first step could to simply wrap all the naked
> &dev->vblank[drm_crtc_index()] things into a function
> call with some cocci/etc. That way most of the vblank
> code doesn't need to care where that thing actually lives.

Yeah I think that might work out. Roughly:
- Wrap all the drm_vblank_crtc lookups
- Emebed it into drm_crtc, delete the drm_device->vblank array
- rename drm_device->num_crtc to something more meaningful maybe and move
  into drm_modeset_config

The big holdup always was step 2 because we still had to care about legacy
drivers without drm_crtc, which meant you'd have to have two paths, which
was kinda really annoying.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


Re: [PATCH] drm/vblank: Simplify drm_dev_has_vblank()

2023-04-04 Thread Ville Syrjälä
On Tue, Apr 04, 2023 at 10:46:00PM +0200, Daniel Vetter wrote:
> On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote:
> > From: Rob Clark 
> > 
> > What does vblank have to do with num_crtcs?  Well, this was technically
> > correct, but you'd have to go look at where num_crtcs is initialized to
> > understand why.  Lets just replace it with the simpler and more obvious
> > check.
> 
> If you want to fix this, then I think the right fix is to rename num_crtcs
> to be something like num_vblank_crtcs. It's a historical accident back
> when vblanks without kms was a thing.
> 
> Plan B is someone gets really busy and fixes up the entire vblank mess and
> moves it into drm_crtc struct. Now that the dri1 drivers are gone we could
> indeed do that.

And easy first step could to simply wrap all the naked
&dev->vblank[drm_crtc_index()] things into a function
call with some cocci/etc. That way most of the vblank
code doesn't need to care where that thing actually lives.

-- 
Ville Syrjälä
Intel


Re: [PATCH] drm/vblank: Simplify drm_dev_has_vblank()

2023-04-04 Thread Daniel Vetter
On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote:
> From: Rob Clark 
> 
> What does vblank have to do with num_crtcs?  Well, this was technically
> correct, but you'd have to go look at where num_crtcs is initialized to
> understand why.  Lets just replace it with the simpler and more obvious
> check.

If you want to fix this, then I think the right fix is to rename num_crtcs
to be something like num_vblank_crtcs. It's a historical accident back
when vblanks without kms was a thing.

Plan B is someone gets really busy and fixes up the entire vblank mess and
moves it into drm_crtc struct. Now that the dri1 drivers are gone we could
indeed do that.

Or maybe instead a patch to improve the kerneldoc for drm_dev->num_crtc?
-Daniel

> Signed-off-by: Rob Clark 
> ---
>  drivers/gpu/drm/drm_vblank.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 877e2067534f..ad34c235d853 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init);
>   */
>  bool drm_dev_has_vblank(const struct drm_device *dev)
>  {
> - return dev->num_crtcs != 0;
> + return !!dev->vblank;
>  }
>  EXPORT_SYMBOL(drm_dev_has_vblank);
>  
> -- 
> 2.39.2
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


Re: [PATCH] drm/vblank: Simplify drm_dev_has_vblank()

2023-04-03 Thread Randy Dunlap



On 4/3/23 09:23, Ville Syrjälä wrote:
> On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote:
>> From: Rob Clark 
>>
>> What does vblank have to do with num_crtcs?  Well, this was technically
>> correct, but you'd have to go look at where num_crtcs is initialized to
>> understand why.  Lets just replace it with the simpler and more obvious
>> check.
>>
>> Signed-off-by: Rob Clark 
>> ---
>>  drivers/gpu/drm/drm_vblank.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
>> index 877e2067534f..ad34c235d853 100644
>> --- a/drivers/gpu/drm/drm_vblank.c
>> +++ b/drivers/gpu/drm/drm_vblank.c
>> @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init);
>>   */
>>  bool drm_dev_has_vblank(const struct drm_device *dev)
>>  {
>> -return dev->num_crtcs != 0;
>> +return !!dev->vblank;
> 
> The compiler knows how to turn things into a boolean.
>> Or I guess if we want to be a bit more explicit we could
> write this as
>  return dev->vblank != NULL;
> but IIRC that will make checkpatch complain because of
> someone's personal taste.

checkpatch isn't an absolute thing. :)

-- 
~Randy


Re: [PATCH] drm/vblank: Simplify drm_dev_has_vblank()

2023-04-03 Thread Ville Syrjälä
On Mon, Apr 03, 2023 at 09:07:35AM -0700, Rob Clark wrote:
> From: Rob Clark 
> 
> What does vblank have to do with num_crtcs?  Well, this was technically
> correct, but you'd have to go look at where num_crtcs is initialized to
> understand why.  Lets just replace it with the simpler and more obvious
> check.
> 
> Signed-off-by: Rob Clark 
> ---
>  drivers/gpu/drm/drm_vblank.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
> index 877e2067534f..ad34c235d853 100644
> --- a/drivers/gpu/drm/drm_vblank.c
> +++ b/drivers/gpu/drm/drm_vblank.c
> @@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init);
>   */
>  bool drm_dev_has_vblank(const struct drm_device *dev)
>  {
> - return dev->num_crtcs != 0;
> + return !!dev->vblank;

The compiler knows how to turn things into a boolean.

Or I guess if we want to be a bit more explicit we could
write this as
 return dev->vblank != NULL;
but IIRC that will make checkpatch complain because of
someone's personal taste.

>  }
>  EXPORT_SYMBOL(drm_dev_has_vblank);
>  
> -- 
> 2.39.2

-- 
Ville Syrjälä
Intel


[PATCH] drm/vblank: Simplify drm_dev_has_vblank()

2023-04-03 Thread Rob Clark
From: Rob Clark 

What does vblank have to do with num_crtcs?  Well, this was technically
correct, but you'd have to go look at where num_crtcs is initialized to
understand why.  Lets just replace it with the simpler and more obvious
check.

Signed-off-by: Rob Clark 
---
 drivers/gpu/drm/drm_vblank.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 877e2067534f..ad34c235d853 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -575,7 +575,7 @@ EXPORT_SYMBOL(drm_vblank_init);
  */
 bool drm_dev_has_vblank(const struct drm_device *dev)
 {
-   return dev->num_crtcs != 0;
+   return !!dev->vblank;
 }
 EXPORT_SYMBOL(drm_dev_has_vblank);
 
-- 
2.39.2