From ae12b9596d8bd33b156dc921a45ac2f5d0de0e2a Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Wed, 9 Dec 2020 15:14:11 +0200 Subject: [PATCH] tests: add yuv-buffer test This adds a test to ensure that the wl_shm formats YUV420, NV12 and YUYV are decoded and converted to RGB correctly in GL-renderer. The test deliberately uses a 256 x 256 test image so that effects from width vs. pitch vs. stride cannot be observed, and row padding is zero. Also padding between planes is zero. Attempting to use a test image with less "round" dimensions lead to stride mismatch in GL-renderer, likely due to GL_UNPACK_ALIGNMENT being left at value 4. It is unclear if YUV wl_shm buffers' row stride needs to be aligned to 4 bytes or not, so I did not pursue fixing it. GL-renderer seems to be confusing width, pitch and stride even further, and not e.g. allow padding with ARGB buffers. See also: https://gitlab.freedesktop.org/wayland/weston/-/issues/354 Furthermore, the test arranges so that each 2x2 pixel block has the same color. This avoids having to consider chroma siting when sub-sampling. This way all the test cases can use the same reference image. The source image chocolate-cake.png is taken and copyright by Pekka Paalanen, hereby licensed as http://creativecommons.org/licenses/by-sa/4.0/ . Signed-off-by: Pekka Paalanen --- tests/meson.build | 7 + tests/reference/chocolate-cake.png | Bin 0 -> 110022 bytes tests/reference/yuv-buffer-00.png | Bin 0 -> 44619 bytes tests/yuv-buffer-test.c | 428 +++++++++++++++++++++++++++++ 4 files changed, 435 insertions(+) create mode 100644 tests/reference/chocolate-cake.png create mode 100644 tests/reference/yuv-buffer-00.png create mode 100644 tests/yuv-buffer-test.c diff --git a/tests/meson.build b/tests/meson.build index a3b03314..ca4313c4 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -190,6 +190,13 @@ tests = [ }, { 'name': 'viewporter', }, { 'name': 'viewporter-shot', }, + { + 'name': 'yuv-buffer', + 'dep_objs': [ + dep_libdrm_headers, + dep_libm, + ], + }, ] tests_standalone = [ diff --git a/tests/reference/chocolate-cake.png b/tests/reference/chocolate-cake.png new file mode 100644 index 0000000000000000000000000000000000000000..5059fea150c21606d34e61846483fa5ebe1e416c GIT binary patch literal 110022 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 P00000NkvXXu0mjf#Dhu< literal 0 HcmV?d00001 diff --git a/tests/reference/yuv-buffer-00.png b/tests/reference/yuv-buffer-00.png new file mode 100644 index 0000000000000000000000000000000000000000..3b73bb9dafbf3bca4c0e55949065e5bed93b6754 GIT binary patch literal 44619 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 +#include +#include +#include +#include + +#include + +#include "weston-test-client-helper.h" +#include "weston-test-fixture-compositor.h" +#include "shared/os-compatibility.h" +#include "shared/xalloc.h" + +static enum test_result_code +fixture_setup(struct weston_test_harness *harness) +{ + struct compositor_setup setup; + + compositor_setup_defaults(&setup); + setup.renderer = RENDERER_GL; + setup.width = 324; + setup.height = 264; + setup.shell = SHELL_TEST_DESKTOP; + + return weston_test_harness_execute_as_client(harness, &setup); +} +DECLARE_FIXTURE_SETUP(fixture_setup); + +struct yuv_buffer { + void *data; + size_t bytes; + struct wl_buffer *proxy; + int width; + int height; +}; + +struct yuv_case { + uint32_t drm_format; + const char *drm_format_name; + struct yuv_buffer *(*create_buffer)(struct client *client, + uint32_t drm_format, + pixman_image_t *rgb_image); +}; + +static struct yuv_buffer * +yuv_buffer_create(struct client *client, + size_t bytes, + int width, + int height, + int stride_bytes, + uint32_t drm_format) +{ + struct wl_shm_pool *pool; + struct yuv_buffer *buf; + int fd; + + buf = xzalloc(sizeof *buf); + buf->bytes = bytes; + buf->width = width; + buf->height = height; + + fd = os_create_anonymous_file(buf->bytes); + assert(fd >= 0); + + buf->data = mmap(NULL, buf->bytes, + PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (buf->data == MAP_FAILED) { + close(fd); + assert(buf->data != MAP_FAILED); + } + + pool = wl_shm_create_pool(client->wl_shm, fd, buf->bytes); + buf->proxy = wl_shm_pool_create_buffer(pool, 0, buf->width, buf->height, + stride_bytes, drm_format); + wl_shm_pool_destroy(pool); + close(fd); + + return buf; +} + +static void +yuv_buffer_destroy(struct yuv_buffer *buf) +{ + wl_buffer_destroy(buf->proxy); + assert(munmap(buf->data, buf->bytes) == 0); + free(buf); +} + +/* + * Based on Rec. ITU-R BT.601-7 + * + * This is intended to be obvious and accurate, not fast. + */ +static void +x8r8g8b8_to_ycbcr8_bt601(uint32_t xrgb, + uint8_t *y_out, uint8_t *cb_out, uint8_t *cr_out) +{ + double y, cb, cr; + double r = (xrgb >> 16) & 0xff; + double g = (xrgb >> 8) & 0xff; + double b = (xrgb >> 0) & 0xff; + + /* normalize to [0.0, 1.0] */ + r /= 255.0; + g /= 255.0; + b /= 255.0; + + /* Y normalized to [0.0, 1.0], Cb and Cr [-0.5, 0.5] */ + y = 0.299 * r + 0.587 * g + 0.114 * b; + cr = (r - y) / 1.402; + cb = (b - y) / 1.772; + + /* limited range quantization to 8 bit */ + *y_out = round(219.0 * y + 16.0); + if (cr_out) + *cr_out = round(224.0 * cr + 128.0); + if (cb_out) + *cb_out = round(224.0 * cb + 128.0); +} + +/* + * 3 plane YCbCr + * plane 0: Y plane, [7:0] Y + * plane 1: Cb plane, [7:0] Cb + * plane 2: Cr plane, [7:0] Cr + * 2x2 subsampled Cb (1) and Cr (2) planes + */ +static struct yuv_buffer * +yuv420_create_buffer(struct client *client, + uint32_t drm_format, + pixman_image_t *rgb_image) +{ + struct yuv_buffer *buf; + size_t bytes; + int width; + int height; + int x, y; + void *rgb_pixels; + int rgb_stride_bytes; + uint32_t *rgb_row; + uint8_t *y_base; + uint8_t *u_base; + uint8_t *v_base; + uint8_t *y_row; + uint8_t *u_row; + uint8_t *v_row; + uint32_t argb; + + assert(drm_format == DRM_FORMAT_YUV420); + + width = pixman_image_get_width(rgb_image); + height = pixman_image_get_height(rgb_image); + rgb_pixels = pixman_image_get_data(rgb_image); + rgb_stride_bytes = pixman_image_get_stride(rgb_image); + + /* Full size Y, quarter U and V */ + bytes = width * height + (width / 2) * (height / 2) * 2; + buf = yuv_buffer_create(client, bytes, width, height, width, drm_format); + + y_base = buf->data; + u_base = y_base + width * height; + v_base = u_base + (width / 2) * (height / 2); + + for (y = 0; y < height; y++) { + rgb_row = rgb_pixels + (y / 2 * 2) * rgb_stride_bytes; + y_row = y_base + y * width; + u_row = u_base + (y / 2) * (width / 2); + v_row = v_base + (y / 2) * (width / 2); + + for (x = 0; x < width; x++) { + /* + * Sub-sample the source image instead, so that U and V + * sub-sampling does not require proper + * filtering/averaging/siting. + */ + argb = *(rgb_row + x / 2 * 2); + + /* + * A stupid way of "sub-sampling" chroma. This does not + * do the necessary filtering/averaging/siting or + * alternate Cb/Cr rows. + */ + if ((y & 1) == 0 && (x & 1) == 0) { + x8r8g8b8_to_ycbcr8_bt601(argb, y_row + x, + u_row + x / 2, + v_row + x / 2); + } else { + x8r8g8b8_to_ycbcr8_bt601(argb, y_row + x, + NULL, NULL); + } + } + } + + return buf; +} + +/* + * 2 plane YCbCr + * plane 0 = Y plane, [7:0] Y + * plane 1 = Cr:Cb plane, [15:0] Cr:Cb little endian + * 2x2 subsampled Cr:Cb plane + */ +static struct yuv_buffer * +nv12_create_buffer(struct client *client, + uint32_t drm_format, + pixman_image_t *rgb_image) +{ + struct yuv_buffer *buf; + size_t bytes; + int width; + int height; + int x, y; + void *rgb_pixels; + int rgb_stride_bytes; + uint32_t *rgb_row; + uint8_t *y_base; + uint16_t *uv_base; + uint8_t *y_row; + uint16_t *uv_row; + uint32_t argb; + uint8_t cr; + uint8_t cb; + + assert(drm_format == DRM_FORMAT_NV12); + + width = pixman_image_get_width(rgb_image); + height = pixman_image_get_height(rgb_image); + rgb_pixels = pixman_image_get_data(rgb_image); + rgb_stride_bytes = pixman_image_get_stride(rgb_image); + + /* Full size Y, quarter UV */ + bytes = width * height + (width / 2) * (height / 2) * sizeof(uint16_t); + buf = yuv_buffer_create(client, bytes, width, height, width, drm_format); + + y_base = buf->data; + uv_base = (uint16_t *)(y_base + width * height); + + for (y = 0; y < height; y++) { + rgb_row = rgb_pixels + (y / 2 * 2) * rgb_stride_bytes; + y_row = y_base + y * width; + uv_row = uv_base + (y / 2) * (width / 2); + + for (x = 0; x < width; x++) { + /* + * Sub-sample the source image instead, so that U and V + * sub-sampling does not require proper + * filtering/averaging/siting. + */ + argb = *(rgb_row + x / 2 * 2); + + /* + * A stupid way of "sub-sampling" chroma. This does not + * do the necessary filtering/averaging/siting. + */ + if ((y & 1) == 0 && (x & 1) == 0) { + x8r8g8b8_to_ycbcr8_bt601(argb, y_row + x, + &cb, &cr); + *(uv_row + x / 2) = ((uint16_t)cr << 8) | cb; + } else { + x8r8g8b8_to_ycbcr8_bt601(argb, y_row + x, + NULL, NULL); + } + } + } + + return buf; +} + +/* + * Packed YCbCr + * + * [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian + * 2x1 subsampled Cr:Cb plane + */ +static struct yuv_buffer * +yuyv_create_buffer(struct client *client, + uint32_t drm_format, + pixman_image_t *rgb_image) +{ + struct yuv_buffer *buf; + size_t bytes; + int width; + int height; + int x, y; + void *rgb_pixels; + int rgb_stride_bytes; + uint32_t *rgb_row; + uint32_t *yuv_base; + uint32_t *yuv_row; + uint8_t cr; + uint8_t cb; + uint8_t y0; + + assert(drm_format == DRM_FORMAT_YUYV); + + width = pixman_image_get_width(rgb_image); + height = pixman_image_get_height(rgb_image); + rgb_pixels = pixman_image_get_data(rgb_image); + rgb_stride_bytes = pixman_image_get_stride(rgb_image); + + /* Full size Y, horizontally subsampled UV, 2 pixels in 32 bits */ + bytes = width / 2 * height * sizeof(uint32_t); + buf = yuv_buffer_create(client, bytes, width, height, width / 2 * sizeof(uint32_t), drm_format); + + yuv_base = buf->data; + + for (y = 0; y < height; y++) { + rgb_row = rgb_pixels + (y / 2 * 2) * rgb_stride_bytes; + yuv_row = yuv_base + y * (width / 2); + + for (x = 0; x < width; x += 2) { + /* + * Sub-sample the source image instead, so that U and V + * sub-sampling does not require proper + * filtering/averaging/siting. + */ + x8r8g8b8_to_ycbcr8_bt601(*(rgb_row + x), &y0, &cb, &cr); + *(yuv_row + x / 2) = + ((uint32_t)cr << 24) | + ((uint32_t)y0 << 16) | + ((uint32_t)cb << 8) | + ((uint32_t)y0 << 0); + } + } + + return buf; +} + +static void +show_window_with_yuv(struct client *client, struct yuv_buffer *buf) +{ + struct surface *surface = client->surface; + int done; + + weston_test_move_surface(client->test->weston_test, surface->wl_surface, + 4, 4); + wl_surface_attach(surface->wl_surface, buf->proxy, 0, 0); + wl_surface_damage(surface->wl_surface, 0, 0, buf->width, + buf->height); + frame_callback_set(surface->wl_surface, &done); + wl_surface_commit(surface->wl_surface); + frame_callback_wait(client, &done); +} + +static const struct yuv_case yuv_cases[] = { +#define FMT(x) DRM_FORMAT_ ##x, #x + { FMT(YUV420), yuv420_create_buffer }, + { FMT(NV12), nv12_create_buffer }, + { FMT(YUYV), yuyv_create_buffer }, +#undef FMT +}; + +/* + * Test that various YUV pixel formats result in correct coloring on screen. + */ +TEST_P(yuv_buffer_shm, yuv_cases) +{ + const struct yuv_case *my_case = data; + char *fname; + pixman_image_t *img; + struct client *client; + struct yuv_buffer *buf; + bool match; + + testlog("%s: format %s\n", get_test_name(), my_case->drm_format_name); + + /* + * This test image is 256 x 256 pixels. + * + * Therefore this test does NOT exercise: + * - odd image dimensions + * - non-square image + * - row padding + * - unaligned row stride + * - different alignments or padding in sub-sampled planes + * + * The reason to not test these is that GL-renderer seems to be more + * or less broken. + * + * The source image is effectively further downscaled to 128 x 128 + * before sampled and converted to 256 x 256 YUV, so that + * sub-sampling for U and V does not require proper algorithms. + * Therefore, this test also does not test: + * - chroma siting (chroma sample positioning) + */ + fname = image_filename("chocolate-cake"); + img = load_image_from_png(fname); + free(fname); + assert(img); + + client = create_client(); + client->surface = create_test_surface(client); + buf = my_case->create_buffer(client, my_case->drm_format, img); + show_window_with_yuv(client, buf); + + match = verify_screen_content(client, "yuv-buffer", 0, NULL, 0); + assert(match); + + yuv_buffer_destroy(buf); + client_destroy(client); +}