All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Zimmermann <tzimmermann@suse.de>
To: "José Expósito" <jose.exposito89@gmail.com>
Cc: linux-hyperv@vger.kernel.org, david@lechnology.com,
	airlied@linux.ie, dri-devel@lists.freedesktop.org,
	javierm@redhat.com, virtualization@lists.linux-foundation.org,
	drawat.floss@gmail.com, noralf@tronnes.org, kraxel@redhat.com,
	airlied@redhat.com, sam@ravnborg.org
Subject: Re: [PATCH 04/12] drm/format-helper: Rework XRGB8888-to-RGBG332 conversion
Date: Thu, 28 Jul 2022 09:27:52 +0200	[thread overview]
Message-ID: <4ba57f80-5025-c3a0-5f65-ec52643f0122@suse.de> (raw)
In-Reply-To: <20220728071353.GA56421@elementary>


[-- Attachment #1.1: Type: text/plain, Size: 7107 bytes --]

Hi

Am 28.07.22 um 09:13 schrieb José Expósito:
> Hi Thomas,
> 
> On Wed, Jul 27, 2022 at 01:33:04PM +0200, Thomas Zimmermann wrote:
>> Update XRGB8888-to-RGB332 conversion to support struct iosys_map
>> and convert all users. Although these are single-plane color formats,
>> the new interface supports multi-plane formats for consistency with
>> drm_fb_blit().
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> 
> Tested-by: José Expósito <jose.exposito89@gmail.com>
> Reviewed-by: José Expósito <jose.exposito89@gmail.com>
> 
> I just ran the tests in x86_64 and UML and they work as expected.
> I need to find some time to review all patches, but this one LGTM.

Thanks a lot.

> 
> This series will cause conflicts with [1]. Depending on which patchset
> gets merged earlier, we will have to resolve the conflicts in one
> series or the other.

I've seen this. Go ahead and commit your patches if they are ready. I 
can easily rebase on top.

Best reards
Thomas

> 
> Best wishes,
> Jose
> 
> [1] https://patchwork.kernel.org/project/dri-devel/list/?series=663266
> 
>> ---
>>   drivers/gpu/drm/drm_format_helper.c           | 25 ++++++++++++++-----
>>   drivers/gpu/drm/gud/gud_pipe.c                |  2 +-
>>   .../gpu/drm/tests/drm_format_helper_test.c    | 14 ++++++-----
>>   include/drm/drm_format_helper.h               |  5 ++--
>>   4 files changed, 31 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
>> index fa22d3cb11e8..2b5c3746ff4a 100644
>> --- a/drivers/gpu/drm/drm_format_helper.c
>> +++ b/drivers/gpu/drm/drm_format_helper.c
>> @@ -265,18 +265,31 @@ static void drm_fb_xrgb8888_to_rgb332_line(void *dbuf, const void *sbuf, unsigne
>>   
>>   /**
>>    * drm_fb_xrgb8888_to_rgb332 - Convert XRGB8888 to RGB332 clip buffer
>> - * @dst: RGB332 destination buffer
>> - * @dst_pitch: Number of bytes between two consecutive scanlines within dst
>> - * @src: XRGB8888 source buffer
>> + * @dst: Array of RGB332 destination buffers
>> + * @dst_pitch: Array of numbers of bytes between two consecutive scanlines within dst
>> + * @vmap: Array of XRGB8888 source buffers
>>    * @fb: DRM framebuffer
>>    * @clip: Clip rectangle area to copy
>>    *
>>    * Drivers can use this function for RGB332 devices that don't natively support XRGB8888.
>>    */
>> -void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *src,
>> -			       const struct drm_framebuffer *fb, const struct drm_rect *clip)
>> +void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
>> +			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>> +			       const struct drm_rect *clip)
>>   {
>> -	drm_fb_xfrm(dst, dst_pitch, 1, src, fb, clip, false, drm_fb_xrgb8888_to_rgb332_line);
>> +	static const unsigned int default_dst_pitch[DRM_FORMAT_MAX_PLANES] = {
>> +		0, 0, 0, 0
>> +	};
>> +
>> +	if (!dst_pitch)
>> +		dst_pitch = default_dst_pitch;
>> +
>> +	if (dst[0].is_iomem)
>> +		drm_fb_xfrm_toio(dst[0].vaddr_iomem, dst_pitch[0], 1, vmap[0].vaddr, fb, clip,
>> +				 false, drm_fb_xrgb8888_to_rgb332_line);
>> +	else
>> +		drm_fb_xfrm(dst[0].vaddr, dst_pitch[0], 1, vmap[0].vaddr, fb, clip,
>> +			    false, drm_fb_xrgb8888_to_rgb332_line);
>>   }
>>   EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332);
>>   
>> diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
>> index a15cda9ba058..426a3ae6cc50 100644
>> --- a/drivers/gpu/drm/gud/gud_pipe.c
>> +++ b/drivers/gpu/drm/gud/gud_pipe.c
>> @@ -196,7 +196,7 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
>>   		} else if (format->format == DRM_FORMAT_R8) {
>>   			drm_fb_xrgb8888_to_gray8(buf, 0, vaddr, fb, rect);
>>   		} else if (format->format == DRM_FORMAT_RGB332) {
>> -			drm_fb_xrgb8888_to_rgb332(buf, 0, vaddr, fb, rect);
>> +			drm_fb_xrgb8888_to_rgb332(&dst, NULL, map_data, fb, rect);
>>   		} else if (format->format == DRM_FORMAT_RGB565) {
>>   			drm_fb_xrgb8888_to_rgb565(buf, 0, vaddr, fb, rect, gud_is_big_endian());
>>   		} else if (format->format == DRM_FORMAT_RGB888) {
>> diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
>> index 98583bf56044..b74dba06f704 100644
>> --- a/drivers/gpu/drm/tests/drm_format_helper_test.c
>> +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
>> @@ -124,7 +124,8 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
>>   {
>>   	const struct xrgb8888_to_rgb332_case *params = test->param_value;
>>   	size_t dst_size;
>> -	__u8 *dst = NULL;
>> +	struct iosys_map dst, xrgb8888;
>> +	__u8 *buf = NULL;
>>   
>>   	struct drm_framebuffer fb = {
>>   		.format = drm_format_info(DRM_FORMAT_XRGB8888),
>> @@ -135,12 +136,13 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
>>   				       &params->clip);
>>   	KUNIT_ASSERT_GT(test, dst_size, 0);
>>   
>> -	dst = kunit_kzalloc(test, dst_size, GFP_KERNEL);
>> -	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst);
>> +	buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
>> +	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
>>   
>> -	drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, params->xrgb8888,
>> -				  &fb, &params->clip);
>> -	KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0);
>> +	iosys_map_set_vaddr(&dst, buf);
>> +	iosys_map_set_vaddr(&xrgb8888, (void __force *)params->xrgb8888);
>> +	drm_fb_xrgb8888_to_rgb332(&dst, &params->dst_pitch, &xrgb8888, &fb, &params->clip);
>> +	KUNIT_EXPECT_EQ(test, memcmp(buf, params->expected, dst_size), 0);
>>   }
>>   
>>   static struct kunit_case drm_format_helper_test_cases[] = {
>> diff --git a/include/drm/drm_format_helper.h b/include/drm/drm_format_helper.h
>> index 60944feaa936..3c28f099e3ed 100644
>> --- a/include/drm/drm_format_helper.h
>> +++ b/include/drm/drm_format_helper.h
>> @@ -20,8 +20,9 @@ void drm_fb_memcpy(struct iosys_map *dst, const unsigned int *dst_pitch,
>>   void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch,
>>   		 const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>>   		 const struct drm_rect *clip, bool cached);
>> -void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *vaddr,
>> -			       const struct drm_framebuffer *fb, const struct drm_rect *clip);
>> +void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
>> +			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>> +			       const struct drm_rect *clip);
>>   void drm_fb_xrgb8888_to_rgb565(void *dst, unsigned int dst_pitch, const void *vaddr,
>>   			       const struct drm_framebuffer *fb, const struct drm_rect *clip,
>>   			       bool swab);
>> -- 
>> 2.37.1
>>

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: "José Expósito" <jose.exposito89@gmail.com>
Cc: linux-hyperv@vger.kernel.org, david@lechnology.com,
	airlied@linux.ie, javierm@redhat.com,
	dri-devel@lists.freedesktop.org,
	virtualization@lists.linux-foundation.org,
	drawat.floss@gmail.com, noralf@tronnes.org, kraxel@redhat.com,
	airlied@redhat.com, sam@ravnborg.org
Subject: Re: [PATCH 04/12] drm/format-helper: Rework XRGB8888-to-RGBG332 conversion
Date: Thu, 28 Jul 2022 09:27:52 +0200	[thread overview]
Message-ID: <4ba57f80-5025-c3a0-5f65-ec52643f0122@suse.de> (raw)
In-Reply-To: <20220728071353.GA56421@elementary>


[-- Attachment #1.1: Type: text/plain, Size: 7107 bytes --]

Hi

Am 28.07.22 um 09:13 schrieb José Expósito:
> Hi Thomas,
> 
> On Wed, Jul 27, 2022 at 01:33:04PM +0200, Thomas Zimmermann wrote:
>> Update XRGB8888-to-RGB332 conversion to support struct iosys_map
>> and convert all users. Although these are single-plane color formats,
>> the new interface supports multi-plane formats for consistency with
>> drm_fb_blit().
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> 
> Tested-by: José Expósito <jose.exposito89@gmail.com>
> Reviewed-by: José Expósito <jose.exposito89@gmail.com>
> 
> I just ran the tests in x86_64 and UML and they work as expected.
> I need to find some time to review all patches, but this one LGTM.

Thanks a lot.

> 
> This series will cause conflicts with [1]. Depending on which patchset
> gets merged earlier, we will have to resolve the conflicts in one
> series or the other.

I've seen this. Go ahead and commit your patches if they are ready. I 
can easily rebase on top.

Best reards
Thomas

> 
> Best wishes,
> Jose
> 
> [1] https://patchwork.kernel.org/project/dri-devel/list/?series=663266
> 
>> ---
>>   drivers/gpu/drm/drm_format_helper.c           | 25 ++++++++++++++-----
>>   drivers/gpu/drm/gud/gud_pipe.c                |  2 +-
>>   .../gpu/drm/tests/drm_format_helper_test.c    | 14 ++++++-----
>>   include/drm/drm_format_helper.h               |  5 ++--
>>   4 files changed, 31 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
>> index fa22d3cb11e8..2b5c3746ff4a 100644
>> --- a/drivers/gpu/drm/drm_format_helper.c
>> +++ b/drivers/gpu/drm/drm_format_helper.c
>> @@ -265,18 +265,31 @@ static void drm_fb_xrgb8888_to_rgb332_line(void *dbuf, const void *sbuf, unsigne
>>   
>>   /**
>>    * drm_fb_xrgb8888_to_rgb332 - Convert XRGB8888 to RGB332 clip buffer
>> - * @dst: RGB332 destination buffer
>> - * @dst_pitch: Number of bytes between two consecutive scanlines within dst
>> - * @src: XRGB8888 source buffer
>> + * @dst: Array of RGB332 destination buffers
>> + * @dst_pitch: Array of numbers of bytes between two consecutive scanlines within dst
>> + * @vmap: Array of XRGB8888 source buffers
>>    * @fb: DRM framebuffer
>>    * @clip: Clip rectangle area to copy
>>    *
>>    * Drivers can use this function for RGB332 devices that don't natively support XRGB8888.
>>    */
>> -void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *src,
>> -			       const struct drm_framebuffer *fb, const struct drm_rect *clip)
>> +void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
>> +			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>> +			       const struct drm_rect *clip)
>>   {
>> -	drm_fb_xfrm(dst, dst_pitch, 1, src, fb, clip, false, drm_fb_xrgb8888_to_rgb332_line);
>> +	static const unsigned int default_dst_pitch[DRM_FORMAT_MAX_PLANES] = {
>> +		0, 0, 0, 0
>> +	};
>> +
>> +	if (!dst_pitch)
>> +		dst_pitch = default_dst_pitch;
>> +
>> +	if (dst[0].is_iomem)
>> +		drm_fb_xfrm_toio(dst[0].vaddr_iomem, dst_pitch[0], 1, vmap[0].vaddr, fb, clip,
>> +				 false, drm_fb_xrgb8888_to_rgb332_line);
>> +	else
>> +		drm_fb_xfrm(dst[0].vaddr, dst_pitch[0], 1, vmap[0].vaddr, fb, clip,
>> +			    false, drm_fb_xrgb8888_to_rgb332_line);
>>   }
>>   EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332);
>>   
>> diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
>> index a15cda9ba058..426a3ae6cc50 100644
>> --- a/drivers/gpu/drm/gud/gud_pipe.c
>> +++ b/drivers/gpu/drm/gud/gud_pipe.c
>> @@ -196,7 +196,7 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
>>   		} else if (format->format == DRM_FORMAT_R8) {
>>   			drm_fb_xrgb8888_to_gray8(buf, 0, vaddr, fb, rect);
>>   		} else if (format->format == DRM_FORMAT_RGB332) {
>> -			drm_fb_xrgb8888_to_rgb332(buf, 0, vaddr, fb, rect);
>> +			drm_fb_xrgb8888_to_rgb332(&dst, NULL, map_data, fb, rect);
>>   		} else if (format->format == DRM_FORMAT_RGB565) {
>>   			drm_fb_xrgb8888_to_rgb565(buf, 0, vaddr, fb, rect, gud_is_big_endian());
>>   		} else if (format->format == DRM_FORMAT_RGB888) {
>> diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
>> index 98583bf56044..b74dba06f704 100644
>> --- a/drivers/gpu/drm/tests/drm_format_helper_test.c
>> +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
>> @@ -124,7 +124,8 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
>>   {
>>   	const struct xrgb8888_to_rgb332_case *params = test->param_value;
>>   	size_t dst_size;
>> -	__u8 *dst = NULL;
>> +	struct iosys_map dst, xrgb8888;
>> +	__u8 *buf = NULL;
>>   
>>   	struct drm_framebuffer fb = {
>>   		.format = drm_format_info(DRM_FORMAT_XRGB8888),
>> @@ -135,12 +136,13 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
>>   				       &params->clip);
>>   	KUNIT_ASSERT_GT(test, dst_size, 0);
>>   
>> -	dst = kunit_kzalloc(test, dst_size, GFP_KERNEL);
>> -	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst);
>> +	buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
>> +	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
>>   
>> -	drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, params->xrgb8888,
>> -				  &fb, &params->clip);
>> -	KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0);
>> +	iosys_map_set_vaddr(&dst, buf);
>> +	iosys_map_set_vaddr(&xrgb8888, (void __force *)params->xrgb8888);
>> +	drm_fb_xrgb8888_to_rgb332(&dst, &params->dst_pitch, &xrgb8888, &fb, &params->clip);
>> +	KUNIT_EXPECT_EQ(test, memcmp(buf, params->expected, dst_size), 0);
>>   }
>>   
>>   static struct kunit_case drm_format_helper_test_cases[] = {
>> diff --git a/include/drm/drm_format_helper.h b/include/drm/drm_format_helper.h
>> index 60944feaa936..3c28f099e3ed 100644
>> --- a/include/drm/drm_format_helper.h
>> +++ b/include/drm/drm_format_helper.h
>> @@ -20,8 +20,9 @@ void drm_fb_memcpy(struct iosys_map *dst, const unsigned int *dst_pitch,
>>   void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch,
>>   		 const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>>   		 const struct drm_rect *clip, bool cached);
>> -void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *vaddr,
>> -			       const struct drm_framebuffer *fb, const struct drm_rect *clip);
>> +void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
>> +			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>> +			       const struct drm_rect *clip);
>>   void drm_fb_xrgb8888_to_rgb565(void *dst, unsigned int dst_pitch, const void *vaddr,
>>   			       const struct drm_framebuffer *fb, const struct drm_rect *clip,
>>   			       bool swab);
>> -- 
>> 2.37.1
>>

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Thomas Zimmermann <tzimmermann@suse.de>
To: "José Expósito" <jose.exposito89@gmail.com>
Cc: linux-hyperv@vger.kernel.org, david@lechnology.com,
	airlied@linux.ie, javierm@redhat.com,
	dri-devel@lists.freedesktop.org,
	virtualization@lists.linux-foundation.org,
	drawat.floss@gmail.com, noralf@tronnes.org, airlied@redhat.com,
	sam@ravnborg.org
Subject: Re: [PATCH 04/12] drm/format-helper: Rework XRGB8888-to-RGBG332 conversion
Date: Thu, 28 Jul 2022 09:27:52 +0200	[thread overview]
Message-ID: <4ba57f80-5025-c3a0-5f65-ec52643f0122@suse.de> (raw)
In-Reply-To: <20220728071353.GA56421@elementary>


[-- Attachment #1.1.1: Type: text/plain, Size: 7107 bytes --]

Hi

Am 28.07.22 um 09:13 schrieb José Expósito:
> Hi Thomas,
> 
> On Wed, Jul 27, 2022 at 01:33:04PM +0200, Thomas Zimmermann wrote:
>> Update XRGB8888-to-RGB332 conversion to support struct iosys_map
>> and convert all users. Although these are single-plane color formats,
>> the new interface supports multi-plane formats for consistency with
>> drm_fb_blit().
>>
>> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> 
> Tested-by: José Expósito <jose.exposito89@gmail.com>
> Reviewed-by: José Expósito <jose.exposito89@gmail.com>
> 
> I just ran the tests in x86_64 and UML and they work as expected.
> I need to find some time to review all patches, but this one LGTM.

Thanks a lot.

> 
> This series will cause conflicts with [1]. Depending on which patchset
> gets merged earlier, we will have to resolve the conflicts in one
> series or the other.

I've seen this. Go ahead and commit your patches if they are ready. I 
can easily rebase on top.

Best reards
Thomas

> 
> Best wishes,
> Jose
> 
> [1] https://patchwork.kernel.org/project/dri-devel/list/?series=663266
> 
>> ---
>>   drivers/gpu/drm/drm_format_helper.c           | 25 ++++++++++++++-----
>>   drivers/gpu/drm/gud/gud_pipe.c                |  2 +-
>>   .../gpu/drm/tests/drm_format_helper_test.c    | 14 ++++++-----
>>   include/drm/drm_format_helper.h               |  5 ++--
>>   4 files changed, 31 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_format_helper.c b/drivers/gpu/drm/drm_format_helper.c
>> index fa22d3cb11e8..2b5c3746ff4a 100644
>> --- a/drivers/gpu/drm/drm_format_helper.c
>> +++ b/drivers/gpu/drm/drm_format_helper.c
>> @@ -265,18 +265,31 @@ static void drm_fb_xrgb8888_to_rgb332_line(void *dbuf, const void *sbuf, unsigne
>>   
>>   /**
>>    * drm_fb_xrgb8888_to_rgb332 - Convert XRGB8888 to RGB332 clip buffer
>> - * @dst: RGB332 destination buffer
>> - * @dst_pitch: Number of bytes between two consecutive scanlines within dst
>> - * @src: XRGB8888 source buffer
>> + * @dst: Array of RGB332 destination buffers
>> + * @dst_pitch: Array of numbers of bytes between two consecutive scanlines within dst
>> + * @vmap: Array of XRGB8888 source buffers
>>    * @fb: DRM framebuffer
>>    * @clip: Clip rectangle area to copy
>>    *
>>    * Drivers can use this function for RGB332 devices that don't natively support XRGB8888.
>>    */
>> -void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *src,
>> -			       const struct drm_framebuffer *fb, const struct drm_rect *clip)
>> +void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
>> +			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>> +			       const struct drm_rect *clip)
>>   {
>> -	drm_fb_xfrm(dst, dst_pitch, 1, src, fb, clip, false, drm_fb_xrgb8888_to_rgb332_line);
>> +	static const unsigned int default_dst_pitch[DRM_FORMAT_MAX_PLANES] = {
>> +		0, 0, 0, 0
>> +	};
>> +
>> +	if (!dst_pitch)
>> +		dst_pitch = default_dst_pitch;
>> +
>> +	if (dst[0].is_iomem)
>> +		drm_fb_xfrm_toio(dst[0].vaddr_iomem, dst_pitch[0], 1, vmap[0].vaddr, fb, clip,
>> +				 false, drm_fb_xrgb8888_to_rgb332_line);
>> +	else
>> +		drm_fb_xfrm(dst[0].vaddr, dst_pitch[0], 1, vmap[0].vaddr, fb, clip,
>> +			    false, drm_fb_xrgb8888_to_rgb332_line);
>>   }
>>   EXPORT_SYMBOL(drm_fb_xrgb8888_to_rgb332);
>>   
>> diff --git a/drivers/gpu/drm/gud/gud_pipe.c b/drivers/gpu/drm/gud/gud_pipe.c
>> index a15cda9ba058..426a3ae6cc50 100644
>> --- a/drivers/gpu/drm/gud/gud_pipe.c
>> +++ b/drivers/gpu/drm/gud/gud_pipe.c
>> @@ -196,7 +196,7 @@ static int gud_prep_flush(struct gud_device *gdrm, struct drm_framebuffer *fb,
>>   		} else if (format->format == DRM_FORMAT_R8) {
>>   			drm_fb_xrgb8888_to_gray8(buf, 0, vaddr, fb, rect);
>>   		} else if (format->format == DRM_FORMAT_RGB332) {
>> -			drm_fb_xrgb8888_to_rgb332(buf, 0, vaddr, fb, rect);
>> +			drm_fb_xrgb8888_to_rgb332(&dst, NULL, map_data, fb, rect);
>>   		} else if (format->format == DRM_FORMAT_RGB565) {
>>   			drm_fb_xrgb8888_to_rgb565(buf, 0, vaddr, fb, rect, gud_is_big_endian());
>>   		} else if (format->format == DRM_FORMAT_RGB888) {
>> diff --git a/drivers/gpu/drm/tests/drm_format_helper_test.c b/drivers/gpu/drm/tests/drm_format_helper_test.c
>> index 98583bf56044..b74dba06f704 100644
>> --- a/drivers/gpu/drm/tests/drm_format_helper_test.c
>> +++ b/drivers/gpu/drm/tests/drm_format_helper_test.c
>> @@ -124,7 +124,8 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
>>   {
>>   	const struct xrgb8888_to_rgb332_case *params = test->param_value;
>>   	size_t dst_size;
>> -	__u8 *dst = NULL;
>> +	struct iosys_map dst, xrgb8888;
>> +	__u8 *buf = NULL;
>>   
>>   	struct drm_framebuffer fb = {
>>   		.format = drm_format_info(DRM_FORMAT_XRGB8888),
>> @@ -135,12 +136,13 @@ static void xrgb8888_to_rgb332_test(struct kunit *test)
>>   				       &params->clip);
>>   	KUNIT_ASSERT_GT(test, dst_size, 0);
>>   
>> -	dst = kunit_kzalloc(test, dst_size, GFP_KERNEL);
>> -	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dst);
>> +	buf = kunit_kzalloc(test, dst_size, GFP_KERNEL);
>> +	KUNIT_ASSERT_NOT_ERR_OR_NULL(test, buf);
>>   
>> -	drm_fb_xrgb8888_to_rgb332(dst, params->dst_pitch, params->xrgb8888,
>> -				  &fb, &params->clip);
>> -	KUNIT_EXPECT_EQ(test, memcmp(dst, params->expected, dst_size), 0);
>> +	iosys_map_set_vaddr(&dst, buf);
>> +	iosys_map_set_vaddr(&xrgb8888, (void __force *)params->xrgb8888);
>> +	drm_fb_xrgb8888_to_rgb332(&dst, &params->dst_pitch, &xrgb8888, &fb, &params->clip);
>> +	KUNIT_EXPECT_EQ(test, memcmp(buf, params->expected, dst_size), 0);
>>   }
>>   
>>   static struct kunit_case drm_format_helper_test_cases[] = {
>> diff --git a/include/drm/drm_format_helper.h b/include/drm/drm_format_helper.h
>> index 60944feaa936..3c28f099e3ed 100644
>> --- a/include/drm/drm_format_helper.h
>> +++ b/include/drm/drm_format_helper.h
>> @@ -20,8 +20,9 @@ void drm_fb_memcpy(struct iosys_map *dst, const unsigned int *dst_pitch,
>>   void drm_fb_swab(struct iosys_map *dst, const unsigned int *dst_pitch,
>>   		 const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>>   		 const struct drm_rect *clip, bool cached);
>> -void drm_fb_xrgb8888_to_rgb332(void *dst, unsigned int dst_pitch, const void *vaddr,
>> -			       const struct drm_framebuffer *fb, const struct drm_rect *clip);
>> +void drm_fb_xrgb8888_to_rgb332(struct iosys_map *dst, const unsigned int *dst_pitch,
>> +			       const struct iosys_map *vmap, const struct drm_framebuffer *fb,
>> +			       const struct drm_rect *clip);
>>   void drm_fb_xrgb8888_to_rgb565(void *dst, unsigned int dst_pitch, const void *vaddr,
>>   			       const struct drm_framebuffer *fb, const struct drm_rect *clip,
>>   			       bool swab);
>> -- 
>> 2.37.1
>>

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

[-- Attachment #2: Type: text/plain, Size: 183 bytes --]

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

  reply	other threads:[~2022-07-28  7:27 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-27 11:33 [PATCH 00/12] drm/format-helper: Move to struct iosys_map Thomas Zimmermann
2022-07-27 11:33 ` Thomas Zimmermann
2022-07-27 11:33 ` Thomas Zimmermann
2022-07-27 11:33 ` [PATCH 01/12] drm/format-helper: Provide drm_fb_blit() Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 17:02   ` Sam Ravnborg
2022-08-04 17:02     ` Sam Ravnborg
2022-08-04 17:02     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 02/12] drm/format-helper: Merge drm_fb_memcpy() and drm_fb_memcpy_toio() Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 19:52   ` Sam Ravnborg
2022-08-04 19:52     ` Sam Ravnborg
2022-08-04 19:52     ` Sam Ravnborg
2022-08-08 12:07     ` Thomas Zimmermann
2022-08-08 12:07       ` Thomas Zimmermann
2022-08-08 12:07       ` Thomas Zimmermann
2022-07-27 11:33 ` [PATCH 03/12] drm/format-helper: Convert drm_fb_swab() to struct iosys_map Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:08   ` Sam Ravnborg
2022-08-04 20:08     ` Sam Ravnborg
2022-08-04 20:08     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 04/12] drm/format-helper: Rework XRGB8888-to-RGBG332 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-28  7:13   ` José Expósito
2022-07-28  7:13     ` José Expósito
2022-07-28  7:27     ` Thomas Zimmermann [this message]
2022-07-28  7:27       ` Thomas Zimmermann
2022-07-28  7:27       ` Thomas Zimmermann
2022-07-28 17:47       ` José Expósito
2022-07-28 17:47         ` José Expósito
2022-08-04 20:10   ` Sam Ravnborg
2022-08-04 20:10     ` Sam Ravnborg
2022-08-04 20:10     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 05/12] drm/format-helper: Rework XRGB8888-to-RGBG565 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-30 12:27   ` José Expósito
2022-07-30 12:27     ` José Expósito
2022-08-04 20:12   ` Sam Ravnborg
2022-08-04 20:12     ` Sam Ravnborg
2022-08-04 20:12     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 06/12] drm/format-helper: Rework XRGB8888-to-RGB888 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:14   ` Sam Ravnborg
2022-08-04 20:14     ` Sam Ravnborg
2022-08-04 20:14     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 07/12] drm/format-helper: Rework RGB565-to-XRGB8888 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:15   ` Sam Ravnborg
2022-08-04 20:15     ` Sam Ravnborg
2022-08-04 20:15     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 08/12] drm/format-helper: Rework RGB888-to-XRGB8888 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:16   ` Sam Ravnborg
2022-08-04 20:16     ` Sam Ravnborg
2022-08-04 20:16     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 09/12] drm/format-helper: Rework XRGB8888-to-XRGB2101010 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:17   ` Sam Ravnborg
2022-08-04 20:17     ` Sam Ravnborg
2022-08-04 20:17     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 10/12] drm/format-helper: Rework XRGB8888-to-GRAY8 conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:19   ` Sam Ravnborg
2022-08-04 20:19     ` Sam Ravnborg
2022-08-04 20:19     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 11/12] drm/format-helper: Rework XRGB8888-to-MONO conversion Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-08-04 20:21   ` Sam Ravnborg
2022-08-04 20:21     ` Sam Ravnborg
2022-08-04 20:21     ` Sam Ravnborg
2022-07-27 11:33 ` [PATCH 12/12] drm/format-helper: Move destination-buffer handling into internal helper Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-27 11:33   ` Thomas Zimmermann
2022-07-28  7:26   ` José Expósito
2022-07-28  7:26     ` José Expósito
2022-07-28  7:45     ` Thomas Zimmermann
2022-07-28  7:45       ` Thomas Zimmermann
2022-07-28  7:45       ` Thomas Zimmermann
2022-07-28 18:23       ` José Expósito
2022-07-28 18:23         ` José Expósito
2022-08-05 17:52   ` Sam Ravnborg
2022-08-05 17:52     ` Sam Ravnborg
2022-08-05 17:52     ` Sam Ravnborg
2022-08-08 11:40     ` Thomas Zimmermann
2022-08-08 11:40       ` Thomas Zimmermann
2022-08-08 11:40       ` Thomas Zimmermann
2022-08-08 18:25       ` Sam Ravnborg
2022-08-08 18:25         ` Sam Ravnborg
2022-08-08 18:25         ` Sam Ravnborg
2022-08-05 17:59 ` [PATCH 00/12] drm/format-helper: Move to struct iosys_map Sam Ravnborg
2022-08-05 17:59   ` Sam Ravnborg
2022-08-05 17:59   ` Sam Ravnborg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ba57f80-5025-c3a0-5f65-ec52643f0122@suse.de \
    --to=tzimmermann@suse.de \
    --cc=airlied@linux.ie \
    --cc=airlied@redhat.com \
    --cc=david@lechnology.com \
    --cc=drawat.floss@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=javierm@redhat.com \
    --cc=jose.exposito89@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=noralf@tronnes.org \
    --cc=sam@ravnborg.org \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.