RE: [v3 4/6] drm/vs: Add KMS crtc&plane

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

 

> -----Original Message-----

> From: Maxime Ripard <mripard@xxxxxxxxxx>

> Sent: 2024131 21:24

> To: Keith Zhao <keith.zhao@xxxxxxxxxxxxxxxx>

> Cc: devicetree@xxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx;

> linux-kernel@xxxxxxxxxxxxxxx; linux-riscv@xxxxxxxxxxxxxxxxxxx;

> tzimmermann@xxxxxxx; airlied@xxxxxxxxx; krzysztof.kozlowski+dt@xxxxxxxxxx;

> William Qiu <william.qiu@xxxxxxxxxxxxxxxx>; Xingyu Wu

> <xingyu.wu@xxxxxxxxxxxxxxxx>; paul.walmsley@xxxxxxxxxx;

> aou@xxxxxxxxxxxxxxxxx; palmer@xxxxxxxxxxx; p.zabel@xxxxxxxxxxxxxx;

> Shengyang Chen <shengyang.chen@xxxxxxxxxxxxxxxx>; Jack Zhu

> <jack.zhu@xxxxxxxxxxxxxxxx>; Changhuang Liang

> <changhuang.liang@xxxxxxxxxxxxxxxx>; maarten.lankhorst@xxxxxxxxxxxxxxx

> Subject: Re: [v3 4/6] drm/vs: Add KMS crtc&plane

>

> On Wed, Jan 31, 2024 at 09:33:06AM +0000, Keith Zhao wrote:

> >

> >

> > > -----邮件原件-----

> > > 发件人: Maxime Ripard <mripard@xxxxxxxxxx>

> > > 发送时间: 2023126 16:56

> > > 收件人: Keith Zhao <keith.zhao@xxxxxxxxxxxxxxxx>

> > > 抄送: devicetree@xxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx;

> > > linux-kernel@xxxxxxxxxxxxxxx; linux-riscv@xxxxxxxxxxxxxxxxxxx;

> > > tzimmermann@xxxxxxx; airlied@xxxxxxxxx;

> > > krzysztof.kozlowski+dt@xxxxxxxxxx;

> > > William Qiu <william.qiu@xxxxxxxxxxxxxxxx>; Xingyu Wu

> > > <xingyu.wu@xxxxxxxxxxxxxxxx>; paul.walmsley@xxxxxxxxxx;

> > > aou@xxxxxxxxxxxxxxxxx; palmer@xxxxxxxxxxx; p.zabel@xxxxxxxxxxxxxx;

> > > Shengyang Chen <shengyang.chen@xxxxxxxxxxxxxxxx>; Jack Zhu

> > > <jack.zhu@xxxxxxxxxxxxxxxx>; Changhuang Liang

> > > <changhuang.liang@xxxxxxxxxxxxxxxx>;

> > > maarten.lankhorst@xxxxxxxxxxxxxxx;

> > > suijingfeng@xxxxxxxxxxx

> > > 主题: Re: [v3 4/6] drm/vs: Add KMS crtc&plane

> > >

> > > On Mon, Dec 04, 2023 at 08:33:13PM +0800, Keith Zhao wrote:

> > > > +static const struct vs_plane_info dc_hw_planes_rev0[PLANE_NUM] = {

> > > > +   {

> > > > +            .name                         = "Primary",

> > > > +            .id                       = PRIMARY_PLANE_0,

> > > > +            .type                            = DRM_PLANE_TYPE_PRIMARY,

> > > > +            .num_formats           = ARRAY_SIZE(primary_overlay_format0),

> > > > +            .formats            = primary_overlay_format0,

> > > > +            .num_modifiers                 = ARRAY_SIZE(format_modifier0),

> > > > +            .modifiers                   = format_modifier0,

> > > > +            .min_width                = 0,

> > > > +            .min_height               = 0,

> > > > +            .max_width               = 4096,

> > > > +            .max_height              = 4096,

> > > > +            .rotation           = DRM_MODE_ROTATE_0 |

> > > > +                                          DRM_MODE_ROTATE_90 |

> > > > +                                          DRM_MODE_ROTATE_180 |

> > > > +                                          DRM_MODE_ROTATE_270 |

> > > > +                                          DRM_MODE_REFLECT_X |

> > > > +                                          DRM_MODE_REFLECT_Y,

> > > > +            .blend_mode             = BIT(DRM_MODE_BLEND_PIXEL_NONE) |

> > > > +                                          BIT(DRM_MODE_BLEND_PREMULTI) |

> > > > +                                          BIT(DRM_MODE_BLEND_COVERAGE),

> > > > +            .color_encoding                 = BIT(DRM_COLOR_YCBCR_BT709) |

> > > > +                                          BIT(DRM_COLOR_YCBCR_BT2020),

> > > > +            .degamma_size                  = DEGAMMA_SIZE,

> > > > +            .min_scale                 = FRAC_16_16(1, 3),

> > > > +            .max_scale                = FRAC_16_16(10, 1),

> > > > +            .zpos                            = 0,

> > > > +            .watermark               = true,

> > > > +            .color_mgmt             = true,

> > > > +            .roi                      = true,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Overlay",

> > > > +            .id                       = OVERLAY_PLANE_0,

> > > > +            .type                            = DRM_PLANE_TYPE_OVERLAY,

> > > > +            .num_formats           = ARRAY_SIZE(primary_overlay_format0),

> > > > +            .formats            = primary_overlay_format0,

> > > > +            .num_modifiers                 = ARRAY_SIZE(format_modifier0),

> > > > +            .modifiers                   = format_modifier0,

> > > > +            .min_width                = 0,

> > > > +            .min_height               = 0,

> > > > +            .max_width               = 4096,

> > > > +            .max_height              = 4096,

> > > > +            .rotation           = DRM_MODE_ROTATE_0 |

> > > > +                                          DRM_MODE_ROTATE_90 |

> > > > +                                          DRM_MODE_ROTATE_180 |

> > > > +                                          DRM_MODE_ROTATE_270 |

> > > > +                                          DRM_MODE_REFLECT_X |

> > > > +                                          DRM_MODE_REFLECT_Y,

> > > > +            .blend_mode             = BIT(DRM_MODE_BLEND_PIXEL_NONE) |

> > > > +                                          BIT(DRM_MODE_BLEND_PREMULTI) |

> > > > +                                          BIT(DRM_MODE_BLEND_COVERAGE),

> > > > +            .color_encoding                 = BIT(DRM_COLOR_YCBCR_BT709) |

> > > > +                                          BIT(DRM_COLOR_YCBCR_BT2020),

> > > > +            .degamma_size                  = DEGAMMA_SIZE,

> > > > +            .min_scale                 = FRAC_16_16(1, 3),

> > > > +            .max_scale                = FRAC_16_16(10, 1),

> > > > +            .zpos                            = 1,

> > > > +            .watermark               = true,

> > > > +            .color_mgmt             = true,

> > > > +            .roi                      = true,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Overlay_1",

> > > > +            .id                       = OVERLAY_PLANE_1,

> > > > +            .type                            = DRM_PLANE_TYPE_OVERLAY,

> > > > +            .num_formats           = ARRAY_SIZE(primary_overlay_format0),

> > > > +            .formats            = primary_overlay_format0,

> > > > +            .num_modifiers                 =

> ARRAY_SIZE(secondary_format_modifiers),

> > > > +            .modifiers                   = secondary_format_modifiers,

> > > > +            .min_width                = 0,

> > > > +            .min_height               = 0,

> > > > +            .max_width               = 4096,

> > > > +            .max_height              = 4096,

> > > > +            .rotation           = 0,

> > > > +            .blend_mode             = BIT(DRM_MODE_BLEND_PIXEL_NONE) |

> > > > +                                          BIT(DRM_MODE_BLEND_PREMULTI) |

> > > > +                                          BIT(DRM_MODE_BLEND_COVERAGE),

> > > > +            .color_encoding                 = BIT(DRM_COLOR_YCBCR_BT709) |

> > > > +                                          BIT(DRM_COLOR_YCBCR_BT2020),

> > > > +            .degamma_size                  = DEGAMMA_SIZE,

> > > > +            .min_scale                 = DRM_PLANE_NO_SCALING,

> > > > +            .max_scale                = DRM_PLANE_NO_SCALING,

> > > > +            .zpos                            = 2,

> > > > +            .watermark               = true,

> > > > +            .color_mgmt             = true,

> > > > +            .roi                      = true,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Primary_1",

> > > > +            .id                       = PRIMARY_PLANE_1,

> > > > +            .type                            = DRM_PLANE_TYPE_PRIMARY,

> > > > +            .num_formats           = ARRAY_SIZE(primary_overlay_format0),

> > > > +            .formats            = primary_overlay_format0,

> > > > +            .num_modifiers                 = ARRAY_SIZE(format_modifier0),

> > > > +            .modifiers                   = format_modifier0,

> > > > +            .min_width                = 0,

> > > > +            .min_height               = 0,

> > > > +            .max_width               = 4096,

> > > > +            .max_height              = 4096,

> > > > +            .rotation           = DRM_MODE_ROTATE_0 |

> > > > +                                          DRM_MODE_ROTATE_90 |

> > > > +                                          DRM_MODE_ROTATE_180 |

> > > > +                                          DRM_MODE_ROTATE_270 |

> > > > +                                          DRM_MODE_REFLECT_X |

> > > > +                                          DRM_MODE_REFLECT_Y,

> > > > +            .blend_mode             = BIT(DRM_MODE_BLEND_PIXEL_NONE) |

> > > > +                                          BIT(DRM_MODE_BLEND_PREMULTI) |

> > > > +                                          BIT(DRM_MODE_BLEND_COVERAGE),

> > > > +            .color_encoding                 = BIT(DRM_COLOR_YCBCR_BT709) |

> > > > +                                          BIT(DRM_COLOR_YCBCR_BT2020),

> > > > +            .degamma_size                  = DEGAMMA_SIZE,

> > > > +            .min_scale                 = FRAC_16_16(1, 3),

> > > > +            .max_scale                = FRAC_16_16(10, 1),

> > > > +            .zpos                            = 3,

> > > > +            .watermark               = true,

> > > > +            .color_mgmt             = true,

> > > > +            .roi                      = true,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Overlay_2",

> > > > +            .id                       = OVERLAY_PLANE_2,

> > > > +            .type                            = DRM_PLANE_TYPE_OVERLAY,

> > > > +            .num_formats           = ARRAY_SIZE(primary_overlay_format0),

> > > > +            .formats            = primary_overlay_format0,

> > > > +            .num_modifiers                 = ARRAY_SIZE(format_modifier0),

> > > > +            .modifiers                   = format_modifier0,

> > > > +            .min_width                = 0,

> > > > +            .min_height               = 0,

> > > > +            .max_width               = 4096,

> > > > +            .max_height              = 4096,

> > > > +            .rotation           = DRM_MODE_ROTATE_0 |

> > > > +                                          DRM_MODE_ROTATE_90 |

> > > > +                                          DRM_MODE_ROTATE_180 |

> > > > +                                          DRM_MODE_ROTATE_270 |

> > > > +                                          DRM_MODE_REFLECT_X |

> > > > +                                          DRM_MODE_REFLECT_Y,

> > > > +            .blend_mode             = BIT(DRM_MODE_BLEND_PIXEL_NONE) |

> > > > +                                          BIT(DRM_MODE_BLEND_PREMULTI) |

> > > > +                                          BIT(DRM_MODE_BLEND_COVERAGE),

> > > > +            .color_encoding                 = BIT(DRM_COLOR_YCBCR_BT709) |

> > > > +                                          BIT(DRM_COLOR_YCBCR_BT2020),

> > > > +            .degamma_size                  = DEGAMMA_SIZE,

> > > > +            .min_scale                 = FRAC_16_16(1, 3),

> > > > +            .max_scale                = FRAC_16_16(10, 1),

> > > > +            .zpos                            = 4,

> > > > +            .watermark               = true,

> > > > +            .color_mgmt             = true,

> > > > +            .roi                      = true,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Overlay_3",

> > > > +            .id                       = OVERLAY_PLANE_3,

> > > > +            .type                            = DRM_PLANE_TYPE_OVERLAY,

> > > > +            .num_formats           = ARRAY_SIZE(primary_overlay_format0),

> > > > +            .formats            = primary_overlay_format0,

> > > > +            .num_modifiers                 =

> ARRAY_SIZE(secondary_format_modifiers),

> > > > +            .modifiers                   = secondary_format_modifiers,

> > > > +            .min_width                = 0,

> > > > +            .min_height               = 0,

> > > > +            .max_width               = 4096,

> > > > +            .max_height              = 4096,

> > > > +            .rotation           = 0,

> > > > +            .blend_mode             = BIT(DRM_MODE_BLEND_PIXEL_NONE) |

> > > > +                                          BIT(DRM_MODE_BLEND_PREMULTI) |

> > > > +                                          BIT(DRM_MODE_BLEND_COVERAGE),

> > > > +            .color_encoding                 = BIT(DRM_COLOR_YCBCR_BT709) |

> > > > +                                          BIT(DRM_COLOR_YCBCR_BT2020),

> > > > +            .degamma_size                  = DEGAMMA_SIZE,

> > > > +            .min_scale                 = DRM_PLANE_NO_SCALING,

> > > > +            .max_scale                = DRM_PLANE_NO_SCALING,

> > > > +            .zpos                            = 5,

> > > > +            .watermark               = true,

> > > > +            .color_mgmt             = true,

> > > > +            .roi                      = true,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Cursor",

> > > > +            .id                       = CURSOR_PLANE_0,

> > > > +            .type                            = DRM_PLANE_TYPE_CURSOR,

> > > > +            .num_formats           = ARRAY_SIZE(cursor_formats),

> > > > +            .formats            = cursor_formats,

> > > > +            .num_modifiers                 = 0,

> > > > +            .modifiers                   = NULL,

> > > > +            .min_width                = 32,

> > > > +            .min_height               = 32,

> > > > +            .max_width               = 64,

> > > > +            .max_height              = 64,

> > > > +            .rotation           = 0,

> > > > +            .degamma_size                  = 0,

> > > > +            .min_scale                 = DRM_PLANE_NO_SCALING,

> > > > +            .max_scale                = DRM_PLANE_NO_SCALING,

> > > > +            .zpos                            = 255,

> > > > +            .watermark               = false,

> > > > +            .color_mgmt             = false,

> > > > +            .roi                      = false,

> > > > +   },

> > > > +   {

> > > > +            .name                         = "Cursor_1",

> > > > +            .id                       = CURSOR_PLANE_1,

> > > > +            .type                            = DRM_PLANE_TYPE_CURSOR,

> > > > +            .num_formats           = ARRAY_SIZE(cursor_formats),

> > > > +            .formats            = cursor_formats,

> > > > +            .num_modifiers                 = 0,

> > > > +            .modifiers                   = NULL,

> > > > +            .min_width                = 32,

> > > > +            .min_height               = 32,

> > > > +            .max_width               = 64,

> > > > +            .max_height              = 64,

> > > > +            .rotation           = 0,

> > > > +            .degamma_size                  = 0,

> > > > +            .min_scale                 = DRM_PLANE_NO_SCALING,

> > > > +            .max_scale                = DRM_PLANE_NO_SCALING,

> > > > +            .zpos                            = 255,

> > > > +            .watermark               = false,

> > > > +            .color_mgmt             = false,

> > > > +            .roi                      = false,

> > > > +   },

> > > > +};

> > > > +

> > > > +static const struct vs_dc_info dc8200_info = {

> > > > +   .name                         = "DC8200",

> > > > +   .panel_num               = 2,

> > > > +   .plane_num               = 8,

> > > > +   .planes                        = dc_hw_planes_rev0,

> > > > +   .layer_num                = 6,

> > > > +   .max_bpc          = 10,

> > > > +   .color_formats          = DRM_COLOR_FORMAT_RGB444 |

> > > > +                                 DRM_COLOR_FORMAT_YCBCR444 |

> > > > +                                 DRM_COLOR_FORMAT_YCBCR422 |

> > > > +                                 DRM_COLOR_FORMAT_YCBCR420,

> > > > +   .gamma_size             = GAMMA_EX_SIZE,

> > > > +   .gamma_bits             = 12,

> > > > +   .pitch_alignment     = 128,

> > > > +   .pipe_sync                  = false,

> > > > +   .background              = true,

> > > > +   .panel_sync               = true,

> > > > +   .cap_dec           = true,

> > > > +};

> > >

> > > I really think that entire thing is to workaround a suboptimal device tree

> binding.

> > > You should have two CRTCs in the device tree, you'll probe twice,

> > > and you won't get to do that whole dance.

> > >

>

> > I tried to modify it according to this idea Found it too difficult In

> > terms of hardware, the two crtc designs are too close to separate, and

> > they are even designed into the same reg with different bits

> > representing crtc0 and crtc1. It seems not easy to described the 2

> > ctrc hardware by 2 device nodes

>

> What are these bits doing?

 

For example:

like this , bit0 and bit1 match ctrc0 and crtc1 , it is used to start crtc

A similar situation exists for other register definitions.

 

Another case is that ctrc0 and crtc1 have the same function and their offset is continuous,

instead of crtc0 being a continuous area, crtc1 being a continuous area

reg:

crtc0 X

crtc1 X+4

crtc0 X+8

crtc1 X+12

if to make it two separate devices, the device node dts reg attribute would be complex

 

>

> > The idea is to avoid a whole dance I don't know if I understand

> > correctly about whole dance. Is it means I create 2 ctrc and 8 plane

> > in the dc_bind?

>

> Yeah, you should strive to make it two separate devices.

>

> Maxime


[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux