All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
@ 2018-02-20 13:48 Ville Syrjala
  2018-02-20 14:25 ` Ilia Mirkin
       [not found] ` <20180220134816.15229-1-ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
  0 siblings, 2 replies; 7+ messages in thread
From: Ville Syrjala @ 2018-02-20 13:48 UTC (permalink / raw)
  To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Ben Skeggs,
	Daniel Vetter

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Replace the ad-hoc iturbt_709 property with the new standard
COLOR_ENCODING property. Compiles, but not tested.

Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: nouveau@lists.freedesktop.org
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/nouveau/dispnv04/overlay.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/dispnv04/overlay.c b/drivers/gpu/drm/nouveau/dispnv04/overlay.c
index c8c2333f24ee..df4358e31075 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/overlay.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/overlay.c
@@ -46,7 +46,6 @@ struct nouveau_plane {
 		struct drm_property *brightness;
 		struct drm_property *hue;
 		struct drm_property *saturation;
-		struct drm_property *iturbt_709;
 	} props;
 
 	int colorkey;
@@ -54,7 +53,7 @@ struct nouveau_plane {
 	int brightness;
 	int hue;
 	int saturation;
-	int iturbt_709;
+	enum drm_color_encoding color_encoding;
 
 	void (*set_params)(struct nouveau_plane *);
 };
@@ -166,7 +165,7 @@ nv10_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
 	if (fb->format->format == DRM_FORMAT_NV12 ||
 	    fb->format->format == DRM_FORMAT_NV21)
 		format |= NV_PVIDEO_FORMAT_PLANAR;
-	if (nv_plane->iturbt_709)
+	if (nv_plane->color_encoding == DRM_COLOR_YCBCR_BT709)
 		format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
 	if (nv_plane->colorkey & (1 << 24))
 		format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
@@ -229,7 +228,7 @@ nv10_set_params(struct nouveau_plane *plane)
 	nvif_wr32(dev, NV_PVIDEO_COLOR_KEY, plane->colorkey & 0xffffff);
 
 	if (plane->cur) {
-		if (plane->iturbt_709)
+		if (plane->color_encoding == DRM_COLOR_YCBCR_BT709)
 			format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
 		if (plane->colorkey & (1 << 24))
 			format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
@@ -258,8 +257,8 @@ nv_set_property(struct drm_plane *plane,
 		nv_plane->hue = value;
 	else if (property == nv_plane->props.saturation)
 		nv_plane->saturation = value;
-	else if (property == nv_plane->props.iturbt_709)
-		nv_plane->iturbt_709 = value;
+	else if (property == nv_plane->base.color_encoding_property)
+		nv_plane->color_encoding = value;
 	else
 		return -EINVAL;
 
@@ -313,14 +312,11 @@ nv10_overlay_init(struct drm_device *device)
 			device, 0, "hue", 0, 359);
 	plane->props.saturation = drm_property_create_range(
 			device, 0, "saturation", 0, 8192 - 1);
-	plane->props.iturbt_709 = drm_property_create_range(
-			device, 0, "iturbt_709", 0, 1);
 	if (!plane->props.colorkey ||
 	    !plane->props.contrast ||
 	    !plane->props.brightness ||
 	    !plane->props.hue ||
-	    !plane->props.saturation ||
-	    !plane->props.iturbt_709)
+	    !plane->props.saturation)
 		goto cleanup;
 
 	plane->colorkey = 0;
@@ -343,9 +339,13 @@ nv10_overlay_init(struct drm_device *device)
 	drm_object_attach_property(&plane->base.base,
 				   plane->props.saturation, plane->saturation);
 
-	plane->iturbt_709 = 0;
-	drm_object_attach_property(&plane->base.base,
-				   plane->props.iturbt_709, plane->iturbt_709);
+	plane->color_encoding = DRM_COLOR_YCBCR_BT601;
+	drm_plane_create_color_properties(&plane->base,
+					  BIT(DRM_COLOR_YCBCR_BT601) |
+					  BIT(DRM_COLOR_YCBCR_BT709),
+					  BIT(DRM_COLOR_YCBCR_LIMITED_RANGE),
+					  DRM_COLOR_YCBCR_BT601,
+					  DRM_COLOR_YCBCR_LIMITED_RANGE);
 
 	plane->set_params = nv10_set_params;
 	nv10_set_params(plane);
-- 
2.13.6

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
  2018-02-20 13:48 [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop Ville Syrjala
@ 2018-02-20 14:25 ` Ilia Mirkin
       [not found]   ` <CAKb7UviNiPKn=5M2WcXChKOcb9DpL2U+wEatUBqKkdU8uN9sHg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
       [not found] ` <20180220134816.15229-1-ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
  1 sibling, 1 reply; 7+ messages in thread
From: Ilia Mirkin @ 2018-02-20 14:25 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: nouveau, dri-devel, Ben Skeggs

On Tue, Feb 20, 2018 at 8:48 AM, Ville Syrjala
<ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Replace the ad-hoc iturbt_709 property with the new standard
> COLOR_ENCODING property. Compiles, but not tested.
>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: nouveau@lists.freedesktop.org
> Cc: Ben Skeggs <bskeggs@redhat.com>
> Cc: Ilia Mirkin <imirkin@alum.mit.edu>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

s/standarad/standard/ in subject

I'd like the opportunity to test this out on real hardware, but I
don't have any pre-NV41 boards plugged in right now. I should be able
to attend to it within 7 days. If you don't hear back from me by then,
I'd appreciate a ping, as I do let things (hopefully occasionally)
slip through.

> ---
>  drivers/gpu/drm/nouveau/dispnv04/overlay.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/dispnv04/overlay.c b/drivers/gpu/drm/nouveau/dispnv04/overlay.c
> index c8c2333f24ee..df4358e31075 100644
> --- a/drivers/gpu/drm/nouveau/dispnv04/overlay.c
> +++ b/drivers/gpu/drm/nouveau/dispnv04/overlay.c
> @@ -46,7 +46,6 @@ struct nouveau_plane {
>                 struct drm_property *brightness;
>                 struct drm_property *hue;
>                 struct drm_property *saturation;
> -               struct drm_property *iturbt_709;
>         } props;
>
>         int colorkey;
> @@ -54,7 +53,7 @@ struct nouveau_plane {
>         int brightness;
>         int hue;
>         int saturation;
> -       int iturbt_709;
> +       enum drm_color_encoding color_encoding;
>
>         void (*set_params)(struct nouveau_plane *);
>  };
> @@ -166,7 +165,7 @@ nv10_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
>         if (fb->format->format == DRM_FORMAT_NV12 ||
>             fb->format->format == DRM_FORMAT_NV21)
>                 format |= NV_PVIDEO_FORMAT_PLANAR;
> -       if (nv_plane->iturbt_709)
> +       if (nv_plane->color_encoding == DRM_COLOR_YCBCR_BT709)
>                 format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
>         if (nv_plane->colorkey & (1 << 24))
>                 format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
> @@ -229,7 +228,7 @@ nv10_set_params(struct nouveau_plane *plane)
>         nvif_wr32(dev, NV_PVIDEO_COLOR_KEY, plane->colorkey & 0xffffff);
>
>         if (plane->cur) {
> -               if (plane->iturbt_709)
> +               if (plane->color_encoding == DRM_COLOR_YCBCR_BT709)
>                         format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
>                 if (plane->colorkey & (1 << 24))
>                         format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
> @@ -258,8 +257,8 @@ nv_set_property(struct drm_plane *plane,
>                 nv_plane->hue = value;
>         else if (property == nv_plane->props.saturation)
>                 nv_plane->saturation = value;
> -       else if (property == nv_plane->props.iturbt_709)
> -               nv_plane->iturbt_709 = value;
> +       else if (property == nv_plane->base.color_encoding_property)
> +               nv_plane->color_encoding = value;
>         else
>                 return -EINVAL;
>
> @@ -313,14 +312,11 @@ nv10_overlay_init(struct drm_device *device)
>                         device, 0, "hue", 0, 359);
>         plane->props.saturation = drm_property_create_range(
>                         device, 0, "saturation", 0, 8192 - 1);
> -       plane->props.iturbt_709 = drm_property_create_range(
> -                       device, 0, "iturbt_709", 0, 1);
>         if (!plane->props.colorkey ||
>             !plane->props.contrast ||
>             !plane->props.brightness ||
>             !plane->props.hue ||
> -           !plane->props.saturation ||
> -           !plane->props.iturbt_709)
> +           !plane->props.saturation)
>                 goto cleanup;
>
>         plane->colorkey = 0;
> @@ -343,9 +339,13 @@ nv10_overlay_init(struct drm_device *device)
>         drm_object_attach_property(&plane->base.base,
>                                    plane->props.saturation, plane->saturation);
>
> -       plane->iturbt_709 = 0;
> -       drm_object_attach_property(&plane->base.base,
> -                                  plane->props.iturbt_709, plane->iturbt_709);
> +       plane->color_encoding = DRM_COLOR_YCBCR_BT601;
> +       drm_plane_create_color_properties(&plane->base,
> +                                         BIT(DRM_COLOR_YCBCR_BT601) |
> +                                         BIT(DRM_COLOR_YCBCR_BT709),
> +                                         BIT(DRM_COLOR_YCBCR_LIMITED_RANGE),
> +                                         DRM_COLOR_YCBCR_BT601,
> +                                         DRM_COLOR_YCBCR_LIMITED_RANGE);
>
>         plane->set_params = nv10_set_params;
>         nv10_set_params(plane);
> --
> 2.13.6
>
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
       [not found] ` <20180220134816.15229-1-ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
@ 2018-02-20 16:13   ` kbuild test robot
  2018-02-20 16:17   ` kbuild test robot
  1 sibling, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2018-02-20 16:13 UTC (permalink / raw)
  To: Ville Syrjala
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, kbuild-all-JC7UmRfGjtg,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Ben Skeggs

[-- Attachment #1: Type: text/plain, Size: 12961 bytes --]

Hi Ville,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.16-rc2 next-20180220]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ville-Syrjala/drm-nouveau-Replace-the-iturbt_709-prop-with-the-standarad-COLOR_ENCODNIG-prop/20180220-230332
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
config: i386-randconfig-a1-201807 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/nouveau/dispnv04/overlay.c:56:26: error: field 'color_encoding' has incomplete type
     enum drm_color_encoding color_encoding;
                             ^
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv10_update_plane':
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:168:34: error: 'DRM_COLOR_YCBCR_BT709' undeclared (first use in this function)
     if (nv_plane->color_encoding == DRM_COLOR_YCBCR_BT709)
                                     ^
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:168:34: note: each undeclared identifier is reported only once for each function it appears in
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv10_set_params':
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:231:32: error: 'DRM_COLOR_YCBCR_BT709' undeclared (first use in this function)
      if (plane->color_encoding == DRM_COLOR_YCBCR_BT709)
                                   ^
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv_set_property':
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:260:37: error: 'struct drm_plane' has no member named 'color_encoding_property'
     else if (property == nv_plane->base.color_encoding_property)
                                        ^
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv10_overlay_init':
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:342:26: error: 'DRM_COLOR_YCBCR_BT601' undeclared (first use in this function)
     plane->color_encoding = DRM_COLOR_YCBCR_BT601;
                             ^
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:343:2: error: implicit declaration of function 'drm_plane_create_color_properties' [-Werror=implicit-function-declaration]
     drm_plane_create_color_properties(&plane->base,
     ^
   In file included from include/linux/kernel.h:11:0,
                    from include/linux/list.h:9,
                    from include/linux/agp_backend.h:33,
                    from include/drm/drmP.h:35,
                    from drivers/gpu/drm/nouveau/dispnv04/overlay.c:26:
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:345:12: error: 'DRM_COLOR_YCBCR_BT709' undeclared (first use in this function)
           BIT(DRM_COLOR_YCBCR_BT709),
               ^
   include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    #define BIT(nr)   (1UL << (nr))
                               ^
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:346:12: error: 'DRM_COLOR_YCBCR_LIMITED_RANGE' undeclared (first use in this function)
           BIT(DRM_COLOR_YCBCR_LIMITED_RANGE),
               ^
   include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    #define BIT(nr)   (1UL << (nr))
                               ^
   cc1: some warnings being treated as errors

vim +260 drivers/gpu/drm/nouveau/dispnv04/overlay.c

   111	
   112	static int
   113	nv10_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
   114			  struct drm_framebuffer *fb, int crtc_x, int crtc_y,
   115			  unsigned int crtc_w, unsigned int crtc_h,
   116			  uint32_t src_x, uint32_t src_y,
   117			  uint32_t src_w, uint32_t src_h,
   118			  struct drm_modeset_acquire_ctx *ctx)
   119	{
   120		struct nouveau_drm *drm = nouveau_drm(plane->dev);
   121		struct nvif_object *dev = &drm->client.device.object;
   122		struct nouveau_plane *nv_plane =
   123			container_of(plane, struct nouveau_plane, base);
   124		struct nouveau_framebuffer *nv_fb = nouveau_framebuffer(fb);
   125		struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
   126		struct nouveau_bo *cur = nv_plane->cur;
   127		bool flip = nv_plane->flip;
   128		int soff = NV_PCRTC0_SIZE * nv_crtc->index;
   129		int soff2 = NV_PCRTC0_SIZE * !nv_crtc->index;
   130		unsigned shift = drm->client.device.info.chipset >= 0x30 ? 1 : 3;
   131		unsigned format = 0;
   132		int ret;
   133	
   134		/* Source parameters given in 16.16 fixed point, ignore fractional. */
   135		src_x >>= 16;
   136		src_y >>= 16;
   137		src_w >>= 16;
   138		src_h >>= 16;
   139	
   140		ret = verify_scaling(fb, shift, 0, 0, src_w, src_h, crtc_w, crtc_h);
   141		if (ret)
   142			return ret;
   143	
   144		ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM, false);
   145		if (ret)
   146			return ret;
   147	
   148		nv_plane->cur = nv_fb->nvbo;
   149	
   150		nvif_mask(dev, NV_PCRTC_ENGINE_CTRL + soff, NV_CRTC_FSEL_OVERLAY, NV_CRTC_FSEL_OVERLAY);
   151		nvif_mask(dev, NV_PCRTC_ENGINE_CTRL + soff2, NV_CRTC_FSEL_OVERLAY, 0);
   152	
   153		nvif_wr32(dev, NV_PVIDEO_BASE(flip), 0);
   154		nvif_wr32(dev, NV_PVIDEO_OFFSET_BUFF(flip), nv_fb->nvbo->bo.offset);
   155		nvif_wr32(dev, NV_PVIDEO_SIZE_IN(flip), src_h << 16 | src_w);
   156		nvif_wr32(dev, NV_PVIDEO_POINT_IN(flip), src_y << 16 | src_x);
   157		nvif_wr32(dev, NV_PVIDEO_DS_DX(flip), (src_w << 20) / crtc_w);
   158		nvif_wr32(dev, NV_PVIDEO_DT_DY(flip), (src_h << 20) / crtc_h);
   159		nvif_wr32(dev, NV_PVIDEO_POINT_OUT(flip), crtc_y << 16 | crtc_x);
   160		nvif_wr32(dev, NV_PVIDEO_SIZE_OUT(flip), crtc_h << 16 | crtc_w);
   161	
   162		if (fb->format->format == DRM_FORMAT_YUYV ||
   163		    fb->format->format == DRM_FORMAT_NV12)
   164			format |= NV_PVIDEO_FORMAT_COLOR_LE_CR8YB8CB8YA8;
   165		if (fb->format->format == DRM_FORMAT_NV12 ||
   166		    fb->format->format == DRM_FORMAT_NV21)
   167			format |= NV_PVIDEO_FORMAT_PLANAR;
 > 168		if (nv_plane->color_encoding == DRM_COLOR_YCBCR_BT709)
   169			format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
   170		if (nv_plane->colorkey & (1 << 24))
   171			format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
   172	
   173		if (format & NV_PVIDEO_FORMAT_PLANAR) {
   174			nvif_wr32(dev, NV_PVIDEO_UVPLANE_BASE(flip), 0);
   175			nvif_wr32(dev, NV_PVIDEO_UVPLANE_OFFSET_BUFF(flip),
   176				nv_fb->nvbo->bo.offset + fb->offsets[1]);
   177		}
   178		nvif_wr32(dev, NV_PVIDEO_FORMAT(flip), format | fb->pitches[0]);
   179		nvif_wr32(dev, NV_PVIDEO_STOP, 0);
   180		/* TODO: wait for vblank? */
   181		nvif_wr32(dev, NV_PVIDEO_BUFFER, flip ? 0x10 : 0x1);
   182		nv_plane->flip = !flip;
   183	
   184		if (cur)
   185			nouveau_bo_unpin(cur);
   186	
   187		return 0;
   188	}
   189	
   190	static int
   191	nv10_disable_plane(struct drm_plane *plane,
   192			   struct drm_modeset_acquire_ctx *ctx)
   193	{
   194		struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
   195		struct nouveau_plane *nv_plane =
   196			container_of(plane, struct nouveau_plane, base);
   197	
   198		nvif_wr32(dev, NV_PVIDEO_STOP, 1);
   199		if (nv_plane->cur) {
   200			nouveau_bo_unpin(nv_plane->cur);
   201			nv_plane->cur = NULL;
   202		}
   203	
   204		return 0;
   205	}
   206	
   207	static void
   208	nv_destroy_plane(struct drm_plane *plane)
   209	{
   210		drm_plane_force_disable(plane);
   211		drm_plane_cleanup(plane);
   212		kfree(plane);
   213	}
   214	
   215	static void
   216	nv10_set_params(struct nouveau_plane *plane)
   217	{
   218		struct nvif_object *dev = &nouveau_drm(plane->base.dev)->client.device.object;
   219		u32 luma = (plane->brightness - 512) << 16 | plane->contrast;
   220		u32 chroma = ((sin_mul(plane->hue, plane->saturation) & 0xffff) << 16) |
   221			(cos_mul(plane->hue, plane->saturation) & 0xffff);
   222		u32 format = 0;
   223	
   224		nvif_wr32(dev, NV_PVIDEO_LUMINANCE(0), luma);
   225		nvif_wr32(dev, NV_PVIDEO_LUMINANCE(1), luma);
   226		nvif_wr32(dev, NV_PVIDEO_CHROMINANCE(0), chroma);
   227		nvif_wr32(dev, NV_PVIDEO_CHROMINANCE(1), chroma);
   228		nvif_wr32(dev, NV_PVIDEO_COLOR_KEY, plane->colorkey & 0xffffff);
   229	
   230		if (plane->cur) {
   231			if (plane->color_encoding == DRM_COLOR_YCBCR_BT709)
   232				format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
   233			if (plane->colorkey & (1 << 24))
   234				format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
   235			nvif_mask(dev, NV_PVIDEO_FORMAT(plane->flip),
   236				NV_PVIDEO_FORMAT_MATRIX_ITURBT709 |
   237				NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY,
   238				format);
   239		}
   240	}
   241	
   242	static int
   243	nv_set_property(struct drm_plane *plane,
   244			struct drm_property *property,
   245			uint64_t value)
   246	{
   247		struct nouveau_plane *nv_plane =
   248			container_of(plane, struct nouveau_plane, base);
   249	
   250		if (property == nv_plane->props.colorkey)
   251			nv_plane->colorkey = value;
   252		else if (property == nv_plane->props.contrast)
   253			nv_plane->contrast = value;
   254		else if (property == nv_plane->props.brightness)
   255			nv_plane->brightness = value;
   256		else if (property == nv_plane->props.hue)
   257			nv_plane->hue = value;
   258		else if (property == nv_plane->props.saturation)
   259			nv_plane->saturation = value;
 > 260		else if (property == nv_plane->base.color_encoding_property)
   261			nv_plane->color_encoding = value;
   262		else
   263			return -EINVAL;
   264	
   265		if (nv_plane->set_params)
   266			nv_plane->set_params(nv_plane);
   267		return 0;
   268	}
   269	
   270	static const struct drm_plane_funcs nv10_plane_funcs = {
   271		.update_plane = nv10_update_plane,
   272		.disable_plane = nv10_disable_plane,
   273		.set_property = nv_set_property,
   274		.destroy = nv_destroy_plane,
   275	};
   276	
   277	static void
   278	nv10_overlay_init(struct drm_device *device)
   279	{
   280		struct nouveau_drm *drm = nouveau_drm(device);
   281		struct nouveau_plane *plane = kzalloc(sizeof(struct nouveau_plane), GFP_KERNEL);
   282		unsigned int num_formats = ARRAY_SIZE(formats);
   283		int ret;
   284	
   285		if (!plane)
   286			return;
   287	
   288		switch (drm->client.device.info.chipset) {
   289		case 0x10:
   290		case 0x11:
   291		case 0x15:
   292		case 0x1a:
   293		case 0x20:
   294			num_formats = 2;
   295			break;
   296		}
   297	
   298		ret = drm_plane_init(device, &plane->base, 3 /* both crtc's */,
   299				     &nv10_plane_funcs,
   300				     formats, num_formats, false);
   301		if (ret)
   302			goto err;
   303	
   304		/* Set up the plane properties */
   305		plane->props.colorkey = drm_property_create_range(
   306				device, 0, "colorkey", 0, 0x01ffffff);
   307		plane->props.contrast = drm_property_create_range(
   308				device, 0, "contrast", 0, 8192 - 1);
   309		plane->props.brightness = drm_property_create_range(
   310				device, 0, "brightness", 0, 1024);
   311		plane->props.hue = drm_property_create_range(
   312				device, 0, "hue", 0, 359);
   313		plane->props.saturation = drm_property_create_range(
   314				device, 0, "saturation", 0, 8192 - 1);
   315		if (!plane->props.colorkey ||
   316		    !plane->props.contrast ||
   317		    !plane->props.brightness ||
   318		    !plane->props.hue ||
   319		    !plane->props.saturation)
   320			goto cleanup;
   321	
   322		plane->colorkey = 0;
   323		drm_object_attach_property(&plane->base.base,
   324					   plane->props.colorkey, plane->colorkey);
   325	
   326		plane->contrast = 0x1000;
   327		drm_object_attach_property(&plane->base.base,
   328					   plane->props.contrast, plane->contrast);
   329	
   330		plane->brightness = 512;
   331		drm_object_attach_property(&plane->base.base,
   332					   plane->props.brightness, plane->brightness);
   333	
   334		plane->hue = 0;
   335		drm_object_attach_property(&plane->base.base,
   336					   plane->props.hue, plane->hue);
   337	
   338		plane->saturation = 0x1000;
   339		drm_object_attach_property(&plane->base.base,
   340					   plane->props.saturation, plane->saturation);
   341	
   342		plane->color_encoding = DRM_COLOR_YCBCR_BT601;
 > 343		drm_plane_create_color_properties(&plane->base,
   344						  BIT(DRM_COLOR_YCBCR_BT601) |
   345						  BIT(DRM_COLOR_YCBCR_BT709),
 > 346						  BIT(DRM_COLOR_YCBCR_LIMITED_RANGE),
   347						  DRM_COLOR_YCBCR_BT601,
   348						  DRM_COLOR_YCBCR_LIMITED_RANGE);
   349	
   350		plane->set_params = nv10_set_params;
   351		nv10_set_params(plane);
   352		drm_plane_force_disable(&plane->base);
   353		return;
   354	cleanup:
   355		drm_plane_cleanup(&plane->base);
   356	err:
   357		kfree(plane);
   358		NV_ERROR(drm, "Failed to create plane\n");
   359	}
   360	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27693 bytes --]

[-- Attachment #3: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
       [not found] ` <20180220134816.15229-1-ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
  2018-02-20 16:13   ` kbuild test robot
@ 2018-02-20 16:17   ` kbuild test robot
  1 sibling, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2018-02-20 16:17 UTC (permalink / raw)
  To: Ville Syrjala
  Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, kbuild-all-JC7UmRfGjtg,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Ben Skeggs

[-- Attachment #1: Type: text/plain, Size: 11761 bytes --]

Hi Ville,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm/drm-next]
[also build test ERROR on v4.16-rc2 next-20180220]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ville-Syrjala/drm-nouveau-Replace-the-iturbt_709-prop-with-the-standarad-COLOR_ENCODNIG-prop/20180220-230332
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
config: x86_64-allyesdebian (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:56:26: error: field 'color_encoding' has incomplete type
     enum drm_color_encoding color_encoding;
                             ^~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv10_update_plane':
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:168:34: error: 'DRM_COLOR_YCBCR_BT709' undeclared (first use in this function)
     if (nv_plane->color_encoding == DRM_COLOR_YCBCR_BT709)
                                     ^~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:168:34: note: each undeclared identifier is reported only once for each function it appears in
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv10_set_params':
   drivers/gpu/drm/nouveau/dispnv04/overlay.c:231:32: error: 'DRM_COLOR_YCBCR_BT709' undeclared (first use in this function)
      if (plane->color_encoding == DRM_COLOR_YCBCR_BT709)
                                   ^~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv_set_property':
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:260:38: error: 'struct drm_plane' has no member named 'color_encoding_property'; did you mean 'rotation_property'?
     else if (property == nv_plane->base.color_encoding_property)
                                         ^~~~~~~~~~~~~~~~~~~~~~~
                                         rotation_property
   drivers/gpu/drm/nouveau/dispnv04/overlay.c: In function 'nv10_overlay_init':
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:342:26: error: 'DRM_COLOR_YCBCR_BT601' undeclared (first use in this function)
     plane->color_encoding = DRM_COLOR_YCBCR_BT601;
                             ^~~~~~~~~~~~~~~~~~~~~
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:343:2: error: implicit declaration of function 'drm_plane_create_color_properties'; did you mean 'drm_plane_create_zpos_property'? [-Werror=implicit-function-declaration]
     drm_plane_create_color_properties(&plane->base,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     drm_plane_create_zpos_property
   In file included from include/linux/kernel.h:11:0,
                    from include/linux/list.h:9,
                    from include/linux/agp_backend.h:33,
                    from include/drm/drmP.h:35,
                    from drivers/gpu/drm/nouveau/dispnv04/overlay.c:26:
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:345:12: error: 'DRM_COLOR_YCBCR_BT709' undeclared (first use in this function); did you mean 'DRM_COLOR_YCBCR_BT601'?
           BIT(DRM_COLOR_YCBCR_BT709),
               ^
   include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    #define BIT(nr)   (1UL << (nr))
                               ^~
>> drivers/gpu/drm/nouveau/dispnv04/overlay.c:346:12: error: 'DRM_COLOR_YCBCR_LIMITED_RANGE' undeclared (first use in this function); did you mean 'DRM_COLOR_YCBCR_BT709'?
           BIT(DRM_COLOR_YCBCR_LIMITED_RANGE),
               ^
   include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    #define BIT(nr)   (1UL << (nr))
                               ^~
   cc1: some warnings being treated as errors

vim +/color_encoding +56 drivers/gpu/drm/nouveau/dispnv04/overlay.c

  > 26	#include <drm/drmP.h>
    27	#include <drm/drm_crtc.h>
    28	#include <drm/drm_fourcc.h>
    29	
    30	#include "nouveau_drv.h"
    31	
    32	#include "nouveau_bo.h"
    33	#include "nouveau_connector.h"
    34	#include "nouveau_display.h"
    35	#include "nvreg.h"
    36	#include "disp.h"
    37	
    38	struct nouveau_plane {
    39		struct drm_plane base;
    40		bool flip;
    41		struct nouveau_bo *cur;
    42	
    43		struct {
    44			struct drm_property *colorkey;
    45			struct drm_property *contrast;
    46			struct drm_property *brightness;
    47			struct drm_property *hue;
    48			struct drm_property *saturation;
    49		} props;
    50	
    51		int colorkey;
    52		int contrast;
    53		int brightness;
    54		int hue;
    55		int saturation;
  > 56		enum drm_color_encoding color_encoding;
    57	
    58		void (*set_params)(struct nouveau_plane *);
    59	};
    60	
    61	static uint32_t formats[] = {
    62		DRM_FORMAT_YUYV,
    63		DRM_FORMAT_UYVY,
    64		DRM_FORMAT_NV12,
    65		DRM_FORMAT_NV21,
    66	};
    67	
    68	/* Sine can be approximated with
    69	 * http://en.wikipedia.org/wiki/Bhaskara_I's_sine_approximation_formula
    70	 * sin(x degrees) ~= 4 x (180 - x) / (40500 - x (180 - x) )
    71	 * Note that this only works for the range [0, 180].
    72	 * Also note that sin(x) == -sin(x - 180)
    73	 */
    74	static inline int
    75	sin_mul(int degrees, int factor)
    76	{
    77		if (degrees > 180) {
    78			degrees -= 180;
    79			factor *= -1;
    80		}
    81		return factor * 4 * degrees * (180 - degrees) /
    82			(40500 - degrees * (180 - degrees));
    83	}
    84	
    85	/* cos(x) = sin(x + 90) */
    86	static inline int
    87	cos_mul(int degrees, int factor)
    88	{
    89		return sin_mul((degrees + 90) % 360, factor);
    90	}
    91	
    92	static int
    93	verify_scaling(const struct drm_framebuffer *fb, uint8_t shift,
    94	               uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h,
    95	               uint32_t crtc_w, uint32_t crtc_h)
    96	{
    97		if (crtc_w < (src_w >> shift) || crtc_h < (src_h >> shift)) {
    98			DRM_DEBUG_KMS("Unsuitable framebuffer scaling: %dx%d -> %dx%d\n",
    99				      src_w, src_h, crtc_w, crtc_h);
   100			return -ERANGE;
   101		}
   102	
   103		if (src_x != 0 || src_y != 0) {
   104			DRM_DEBUG_KMS("Unsuitable framebuffer offset: %d,%d\n",
   105	                              src_x, src_y);
   106			return -ERANGE;
   107		}
   108	
   109		return 0;
   110	}
   111	
   112	static int
   113	nv10_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
   114			  struct drm_framebuffer *fb, int crtc_x, int crtc_y,
   115			  unsigned int crtc_w, unsigned int crtc_h,
   116			  uint32_t src_x, uint32_t src_y,
   117			  uint32_t src_w, uint32_t src_h,
   118			  struct drm_modeset_acquire_ctx *ctx)
   119	{
   120		struct nouveau_drm *drm = nouveau_drm(plane->dev);
   121		struct nvif_object *dev = &drm->client.device.object;
   122		struct nouveau_plane *nv_plane =
   123			container_of(plane, struct nouveau_plane, base);
   124		struct nouveau_framebuffer *nv_fb = nouveau_framebuffer(fb);
   125		struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
   126		struct nouveau_bo *cur = nv_plane->cur;
   127		bool flip = nv_plane->flip;
   128		int soff = NV_PCRTC0_SIZE * nv_crtc->index;
   129		int soff2 = NV_PCRTC0_SIZE * !nv_crtc->index;
   130		unsigned shift = drm->client.device.info.chipset >= 0x30 ? 1 : 3;
   131		unsigned format = 0;
   132		int ret;
   133	
   134		/* Source parameters given in 16.16 fixed point, ignore fractional. */
   135		src_x >>= 16;
   136		src_y >>= 16;
   137		src_w >>= 16;
   138		src_h >>= 16;
   139	
   140		ret = verify_scaling(fb, shift, 0, 0, src_w, src_h, crtc_w, crtc_h);
   141		if (ret)
   142			return ret;
   143	
   144		ret = nouveau_bo_pin(nv_fb->nvbo, TTM_PL_FLAG_VRAM, false);
   145		if (ret)
   146			return ret;
   147	
   148		nv_plane->cur = nv_fb->nvbo;
   149	
   150		nvif_mask(dev, NV_PCRTC_ENGINE_CTRL + soff, NV_CRTC_FSEL_OVERLAY, NV_CRTC_FSEL_OVERLAY);
   151		nvif_mask(dev, NV_PCRTC_ENGINE_CTRL + soff2, NV_CRTC_FSEL_OVERLAY, 0);
   152	
   153		nvif_wr32(dev, NV_PVIDEO_BASE(flip), 0);
   154		nvif_wr32(dev, NV_PVIDEO_OFFSET_BUFF(flip), nv_fb->nvbo->bo.offset);
   155		nvif_wr32(dev, NV_PVIDEO_SIZE_IN(flip), src_h << 16 | src_w);
   156		nvif_wr32(dev, NV_PVIDEO_POINT_IN(flip), src_y << 16 | src_x);
   157		nvif_wr32(dev, NV_PVIDEO_DS_DX(flip), (src_w << 20) / crtc_w);
   158		nvif_wr32(dev, NV_PVIDEO_DT_DY(flip), (src_h << 20) / crtc_h);
   159		nvif_wr32(dev, NV_PVIDEO_POINT_OUT(flip), crtc_y << 16 | crtc_x);
   160		nvif_wr32(dev, NV_PVIDEO_SIZE_OUT(flip), crtc_h << 16 | crtc_w);
   161	
   162		if (fb->format->format == DRM_FORMAT_YUYV ||
   163		    fb->format->format == DRM_FORMAT_NV12)
   164			format |= NV_PVIDEO_FORMAT_COLOR_LE_CR8YB8CB8YA8;
   165		if (fb->format->format == DRM_FORMAT_NV12 ||
   166		    fb->format->format == DRM_FORMAT_NV21)
   167			format |= NV_PVIDEO_FORMAT_PLANAR;
 > 168		if (nv_plane->color_encoding == DRM_COLOR_YCBCR_BT709)
   169			format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
   170		if (nv_plane->colorkey & (1 << 24))
   171			format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
   172	
   173		if (format & NV_PVIDEO_FORMAT_PLANAR) {
   174			nvif_wr32(dev, NV_PVIDEO_UVPLANE_BASE(flip), 0);
   175			nvif_wr32(dev, NV_PVIDEO_UVPLANE_OFFSET_BUFF(flip),
   176				nv_fb->nvbo->bo.offset + fb->offsets[1]);
   177		}
   178		nvif_wr32(dev, NV_PVIDEO_FORMAT(flip), format | fb->pitches[0]);
   179		nvif_wr32(dev, NV_PVIDEO_STOP, 0);
   180		/* TODO: wait for vblank? */
   181		nvif_wr32(dev, NV_PVIDEO_BUFFER, flip ? 0x10 : 0x1);
   182		nv_plane->flip = !flip;
   183	
   184		if (cur)
   185			nouveau_bo_unpin(cur);
   186	
   187		return 0;
   188	}
   189	
   190	static int
   191	nv10_disable_plane(struct drm_plane *plane,
   192			   struct drm_modeset_acquire_ctx *ctx)
   193	{
   194		struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
   195		struct nouveau_plane *nv_plane =
   196			container_of(plane, struct nouveau_plane, base);
   197	
   198		nvif_wr32(dev, NV_PVIDEO_STOP, 1);
   199		if (nv_plane->cur) {
   200			nouveau_bo_unpin(nv_plane->cur);
   201			nv_plane->cur = NULL;
   202		}
   203	
   204		return 0;
   205	}
   206	
   207	static void
   208	nv_destroy_plane(struct drm_plane *plane)
   209	{
   210		drm_plane_force_disable(plane);
   211		drm_plane_cleanup(plane);
   212		kfree(plane);
   213	}
   214	
   215	static void
   216	nv10_set_params(struct nouveau_plane *plane)
   217	{
   218		struct nvif_object *dev = &nouveau_drm(plane->base.dev)->client.device.object;
   219		u32 luma = (plane->brightness - 512) << 16 | plane->contrast;
   220		u32 chroma = ((sin_mul(plane->hue, plane->saturation) & 0xffff) << 16) |
   221			(cos_mul(plane->hue, plane->saturation) & 0xffff);
   222		u32 format = 0;
   223	
   224		nvif_wr32(dev, NV_PVIDEO_LUMINANCE(0), luma);
   225		nvif_wr32(dev, NV_PVIDEO_LUMINANCE(1), luma);
   226		nvif_wr32(dev, NV_PVIDEO_CHROMINANCE(0), chroma);
   227		nvif_wr32(dev, NV_PVIDEO_CHROMINANCE(1), chroma);
   228		nvif_wr32(dev, NV_PVIDEO_COLOR_KEY, plane->colorkey & 0xffffff);
   229	
   230		if (plane->cur) {
 > 231			if (plane->color_encoding == DRM_COLOR_YCBCR_BT709)
   232				format |= NV_PVIDEO_FORMAT_MATRIX_ITURBT709;
   233			if (plane->colorkey & (1 << 24))
   234				format |= NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY;
   235			nvif_mask(dev, NV_PVIDEO_FORMAT(plane->flip),
   236				NV_PVIDEO_FORMAT_MATRIX_ITURBT709 |
   237				NV_PVIDEO_FORMAT_DISPLAY_COLOR_KEY,
   238				format);
   239		}
   240	}
   241	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 39912 bytes --]

[-- Attachment #3: Type: text/plain, Size: 154 bytes --]

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
       [not found]   ` <CAKb7UviNiPKn=5M2WcXChKOcb9DpL2U+wEatUBqKkdU8uN9sHg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-02-27  5:54     ` Ilia Mirkin
       [not found]       ` <CAKb7Uvgv1G71QwiPpgLXmx9qbbxrZU1icjwpKO45=uA53z9xRA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Ilia Mirkin @ 2018-02-27  5:54 UTC (permalink / raw)
  To: Ville Syrjala; +Cc: nouveau, Daniel Vetter, dri-devel, Ben Skeggs

On Tue, Feb 20, 2018 at 9:25 AM, Ilia Mirkin <imirkin@alum.mit.edu> wrote:
> On Tue, Feb 20, 2018 at 8:48 AM, Ville Syrjala
> <ville.syrjala@linux.intel.com> wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> Replace the ad-hoc iturbt_709 property with the new standard
>> COLOR_ENCODING property. Compiles, but not tested.
>>
>> Cc: Daniel Vetter <daniel@ffwll.ch>
>> Cc: nouveau@lists.freedesktop.org
>> Cc: Ben Skeggs <bskeggs@redhat.com>
>> Cc: Ilia Mirkin <imirkin@alum.mit.edu>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> s/standarad/standard/ in subject
>
> I'd like the opportunity to test this out on real hardware, but I
> don't have any pre-NV41 boards plugged in right now. I should be able
> to attend to it within 7 days. If you don't hear back from me by then,
> I'd appreciate a ping, as I do let things (hopefully occasionally)
> slip through.

Tested this out on a NV34. Seems to work - at least the green SMPTE
bar looks different in the two different modes (had to hack modetest
to use the SMPTE pattern on planes).

I do wonder about the new color range property... that's more of a
connector thing than a plane thing no? Presumably over S-Video it's a
partial range, and over VGA it's full? I'd flip it to always full here
tbh. (Or just not provide it at all.)

Anyways, with the subject typo(s! noticed ENCODNIG -> ENCODING just
now) fixed, this is

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
       [not found]       ` <CAKb7Uvgv1G71QwiPpgLXmx9qbbxrZU1icjwpKO45=uA53z9xRA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2018-02-27  8:49         ` Ville Syrjälä
       [not found]           ` <20180227084939.GY5453-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Ville Syrjälä @ 2018-02-27  8:49 UTC (permalink / raw)
  To: Ilia Mirkin; +Cc: nouveau, Daniel Vetter, dri-devel, Ben Skeggs

On Tue, Feb 27, 2018 at 12:54:47AM -0500, Ilia Mirkin wrote:
> On Tue, Feb 20, 2018 at 9:25 AM, Ilia Mirkin <imirkin@alum.mit.edu> wrote:
> > On Tue, Feb 20, 2018 at 8:48 AM, Ville Syrjala
> > <ville.syrjala@linux.intel.com> wrote:
> >> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>
> >> Replace the ad-hoc iturbt_709 property with the new standard
> >> COLOR_ENCODING property. Compiles, but not tested.
> >>
> >> Cc: Daniel Vetter <daniel@ffwll.ch>
> >> Cc: nouveau@lists.freedesktop.org
> >> Cc: Ben Skeggs <bskeggs@redhat.com>
> >> Cc: Ilia Mirkin <imirkin@alum.mit.edu>
> >> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > s/standarad/standard/ in subject
> >
> > I'd like the opportunity to test this out on real hardware, but I
> > don't have any pre-NV41 boards plugged in right now. I should be able
> > to attend to it within 7 days. If you don't hear back from me by then,
> > I'd appreciate a ping, as I do let things (hopefully occasionally)
> > slip through.
> 
> Tested this out on a NV34. Seems to work - at least the green SMPTE
> bar looks different in the two different modes (had to hack modetest
> to use the SMPTE pattern on planes).
> 
> I do wonder about the new color range property... that's more of a
> connector thing than a plane thing no? Presumably over S-Video it's a
> partial range, and over VGA it's full? I'd flip it to always full here
> tbh. (Or just not provide it at all.)

No, this property is just about the range of the input data. Full range
YCbCr isn't exaclty common so you'd rarely need this. JPEG uses full
range I believe.

> 
> Anyways, with the subject typo(s! noticed ENCODNIG -> ENCODING just
> now) fixed, this is
> 
> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>

Cool. Thanks.

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop
       [not found]           ` <20180227084939.GY5453-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
@ 2018-03-08 16:28             ` Ville Syrjälä
  0 siblings, 0 replies; 7+ messages in thread
From: Ville Syrjälä @ 2018-03-08 16:28 UTC (permalink / raw)
  To: Ilia Mirkin; +Cc: nouveau, Ben Skeggs, dri-devel

On Tue, Feb 27, 2018 at 10:49:39AM +0200, Ville Syrjälä wrote:
> On Tue, Feb 27, 2018 at 12:54:47AM -0500, Ilia Mirkin wrote:
> > On Tue, Feb 20, 2018 at 9:25 AM, Ilia Mirkin <imirkin@alum.mit.edu> wrote:
> > > On Tue, Feb 20, 2018 at 8:48 AM, Ville Syrjala
> > > <ville.syrjala@linux.intel.com> wrote:
> > >> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >>
> > >> Replace the ad-hoc iturbt_709 property with the new standard
> > >> COLOR_ENCODING property. Compiles, but not tested.
> > >>
> > >> Cc: Daniel Vetter <daniel@ffwll.ch>
> > >> Cc: nouveau@lists.freedesktop.org
> > >> Cc: Ben Skeggs <bskeggs@redhat.com>
> > >> Cc: Ilia Mirkin <imirkin@alum.mit.edu>
> > >> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > s/standarad/standard/ in subject
> > >
> > > I'd like the opportunity to test this out on real hardware, but I
> > > don't have any pre-NV41 boards plugged in right now. I should be able
> > > to attend to it within 7 days. If you don't hear back from me by then,
> > > I'd appreciate a ping, as I do let things (hopefully occasionally)
> > > slip through.
> > 
> > Tested this out on a NV34. Seems to work - at least the green SMPTE
> > bar looks different in the two different modes (had to hack modetest
> > to use the SMPTE pattern on planes).
> > 
> > I do wonder about the new color range property... that's more of a
> > connector thing than a plane thing no? Presumably over S-Video it's a
> > partial range, and over VGA it's full? I'd flip it to always full here
> > tbh. (Or just not provide it at all.)
> 
> No, this property is just about the range of the input data. Full range
> YCbCr isn't exaclty common so you'd rarely need this. JPEG uses full
> range I believe.
> 
> > 
> > Anyways, with the subject typo(s! noticed ENCODNIG -> ENCODING just
> > now) fixed, this is
> > 
> > Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
> 
> Cool. Thanks.

Pushed to drm-misc-next with Ben's ack.

17:27 <imirkin_> <imirkin_> friendly reminder about https://patchwork.freedesktop.org/patch/205620/ -- ville was 
                 wondering whether you'd take it, or if he should push via drm-misc.
17:27 <imirkin_> <skeggsb> ack, i'd say ville should take it in drm-misc for now

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-03-08 16:28 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-20 13:48 [PATCH] drm/nouveau: Replace the iturbt_709 prop with the standarad COLOR_ENCODNIG prop Ville Syrjala
2018-02-20 14:25 ` Ilia Mirkin
     [not found]   ` <CAKb7UviNiPKn=5M2WcXChKOcb9DpL2U+wEatUBqKkdU8uN9sHg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-02-27  5:54     ` Ilia Mirkin
     [not found]       ` <CAKb7Uvgv1G71QwiPpgLXmx9qbbxrZU1icjwpKO45=uA53z9xRA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-02-27  8:49         ` Ville Syrjälä
     [not found]           ` <20180227084939.GY5453-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-03-08 16:28             ` Ville Syrjälä
     [not found] ` <20180220134816.15229-1-ville.syrjala-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2018-02-20 16:13   ` kbuild test robot
2018-02-20 16:17   ` kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.