[PATCH i-g-t v2 17/18] tests/kms_ccs: Try to fix the xe2 blitter compression format
Juha-Pekka Heikkila
juhapekka.heikkila at gmail.com
Mon Sep 23 17:28:02 UTC 2024
Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
On 18.9.2024 15.05, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Pluck the compression format values from the LNL/BMG table.
>
> TODO: or should be we using those stateful/stateless values or
> something? no idea
> TODO: Move this into igt_fb.c
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> tests/intel/kms_ccs.c | 32 +++++++++++++++++++++-----------
> 1 file changed, 21 insertions(+), 11 deletions(-)
>
> diff --git a/tests/intel/kms_ccs.c b/tests/intel/kms_ccs.c
> index bb18784e6fac..835a3fe5aed2 100644
> --- a/tests/intel/kms_ccs.c
> +++ b/tests/intel/kms_ccs.c
> @@ -651,19 +651,29 @@ static enum blt_color_depth blt_get_bpp(const struct igt_fb *fb,
> }
>
> static uint32_t blt_compression_format(struct blt_copy_data *blt,
> - const struct igt_fb *fb)
> + const struct igt_fb *fb,
> + int color_plane)
> {
> - switch (fb->drm_format) {
> - case DRM_FORMAT_XRGB8888:
> + switch (igt_reduce_format(fb->drm_format)) {
> + case DRM_FORMAT_XRGB16161616F:
> + return 0x7; /* CMF_R16_G16_B16_A16 */
> case DRM_FORMAT_XRGB2101010:
> - case DRM_FORMAT_P010:
> - case DRM_FORMAT_P012:
> - case DRM_FORMAT_P016:
> - case DRM_FORMAT_YUYV:
> - return 8;
> + return 0x3; /* CMF_R10_G10_B10_A2 */
> + case DRM_FORMAT_XRGB8888:
> case DRM_FORMAT_XYUV8888:
> + return 0x2; /* CMF_R8_G8_B8_A8 */
> + case DRM_FORMAT_YUYV:
> + return 0x1; /* CMF_R8_G8 (treated as 16bpp format) */
> case DRM_FORMAT_NV12:
> - return 9;
> + if (color_plane)
> + return 0x1; /* CMF_R8_G8 */
> + else
> + return 0x0; /* CMF_R8 */
> + case DRM_FORMAT_P010:
> + if (color_plane)
> + return 0x6; /* CMF_R16_G16 */
> + else
> + return 0x5; /* CMF_R16 */
> default:
> igt_assert_f(0, "Unknown format\n");
> }
> @@ -712,12 +722,12 @@ static void xe2_ccs_blit(data_t *data, struct igt_fb *fb, struct igt_fb *temp_fb
> blt_set_copy_object(&blt.dst, dst);
>
> blt_set_object_ext(&ext.src,
> - blt_compression_format(&blt, src_fb),
> + blt_compression_format(&blt, src_fb, i),
> src_fb->plane_width[i], src_fb->plane_height[i],
> SURFACE_TYPE_2D);
>
> blt_set_object_ext(&ext.dst,
> - blt_compression_format(&blt, dst_fb),
> + blt_compression_format(&blt, dst_fb, i),
> dst_fb->plane_width[i], dst_fb->plane_height[i],
> SURFACE_TYPE_2D);
>
More information about the igt-dev
mailing list