mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2025-12-20 04:40:07 +01:00
tests: Add support for Vulkan renderer
Add support for Vulkan renderer in most places where there was support for GL renderer. Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
This commit is contained in:
parent
8f56d03d4b
commit
ec52e0cdda
11 changed files with 80 additions and 12 deletions
|
|
@ -60,6 +60,11 @@ static const struct setup_args my_setup_args[] = {
|
|||
.color_management = true,
|
||||
.meta.name = "GL sRGB EOTF"
|
||||
},
|
||||
{
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.color_management = false,
|
||||
.meta.name = "Vulkan"
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -48,6 +48,13 @@
|
|||
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
|
||||
.transform_name = #t, \
|
||||
.meta.name = "GL " #s " " #t, \
|
||||
}, \
|
||||
{ \
|
||||
.renderer = WESTON_RENDERER_VULKAN, \
|
||||
.scale = s, \
|
||||
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
|
||||
.transform_name = #t, \
|
||||
.meta.name = "Vulkan " #s " " #t, \
|
||||
}
|
||||
|
||||
struct setup_args {
|
||||
|
|
|
|||
|
|
@ -107,6 +107,16 @@ static const uint32_t gl_dmabuf_format_must_pass[] = {
|
|||
DRM_FORMAT_P016,
|
||||
};
|
||||
|
||||
static const uint32_t vulkan_shm_format_must_pass[] = {
|
||||
DRM_FORMAT_ARGB8888,
|
||||
DRM_FORMAT_XRGB8888
|
||||
};
|
||||
|
||||
static const uint32_t vulkan_dmabuf_format_must_pass[] = {
|
||||
DRM_FORMAT_ARGB8888,
|
||||
DRM_FORMAT_XRGB8888
|
||||
};
|
||||
|
||||
static const struct setup_args my_setup_args[] = {
|
||||
{
|
||||
.meta.name = "GL",
|
||||
|
|
@ -124,6 +134,15 @@ static const struct setup_args my_setup_args[] = {
|
|||
.dmabuf_format_num = ARRAY_LENGTH(gl_dmabuf_format_must_pass),
|
||||
.gl_force_import_yuv_fallback = true,
|
||||
},
|
||||
{
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.logging_scopes = "log",
|
||||
.meta.name = "Vulkan",
|
||||
.shm_format_must_pass = vulkan_shm_format_must_pass,
|
||||
.shm_format_num = ARRAY_LENGTH(vulkan_shm_format_must_pass),
|
||||
.dmabuf_format_must_pass = vulkan_dmabuf_format_must_pass,
|
||||
.dmabuf_format_num = ARRAY_LENGTH(vulkan_dmabuf_format_must_pass),
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -49,6 +49,11 @@ static const struct setup_args my_setup_args[] = {
|
|||
.renderer = WESTON_RENDERER_GL,
|
||||
.expected_drm_format = DRM_FORMAT_ARGB8888,
|
||||
},
|
||||
{
|
||||
.meta.name = "Vulkan",
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.expected_drm_format = DRM_FORMAT_ARGB8888,
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -51,12 +51,12 @@
|
|||
.meta.name = "GL no-shadow " #s " " #t, \
|
||||
}, \
|
||||
{ \
|
||||
.renderer = WESTON_RENDERER_GL, \
|
||||
.renderer = WESTON_RENDERER_VULKAN, \
|
||||
.scale = s, \
|
||||
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
|
||||
.transform_name = #t, \
|
||||
.gl_shadow_fb = true, \
|
||||
.meta.name = "GL shadow " #s " " #t, \
|
||||
.gl_shadow_fb = false, \
|
||||
.meta.name = "Vulkan " #s " " #t, \
|
||||
}
|
||||
|
||||
struct setup_args {
|
||||
|
|
@ -112,9 +112,9 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg)
|
|||
* Then the test checks that only the damage area gets the new color
|
||||
* on screen.
|
||||
*
|
||||
* The following quirk forces GL-renderer to update the whole texture
|
||||
* even for partial damage. Otherwise, GL-renderer would only copy the
|
||||
* damaged area from the wl_shm buffer into a GL texture.
|
||||
* The following quirk forces GL-renderer and Vulkan-renderer to update
|
||||
* the whole texture even for partial damage. Otherwise, they would
|
||||
* only copy the damaged area from the wl_shm buffer into a texture.
|
||||
*
|
||||
* Those output_damage tests where the surface is scaled up by the
|
||||
* compositor will use bilinear texture sampling due to the policy
|
||||
|
|
@ -122,12 +122,13 @@ fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg)
|
|||
*
|
||||
* Pixman renderer never makes copies of wl_shm buffers, so bilinear
|
||||
* sampling there will always produce the expected result. However,
|
||||
* with GL-renderer if the texture is not updated beyond the strict
|
||||
* damage region, bilinear sampling will result in a blend of the old
|
||||
* and new colors at the edges of the damage rectangles. This blend
|
||||
* would be detrimental to testing the damage regions and would cause
|
||||
* test failures due to reference image mismatch. What we actually
|
||||
* want to see is the crisp outline of the damage rectangles.
|
||||
* with GL-renderer and Vulkan-renderer if the texture is not updated
|
||||
* beyond the strict damage region, bilinear sampling will result in a
|
||||
* blend of the old and new colors at the edges of the damage
|
||||
* rectangles. This blend would be detrimental to testing the damage
|
||||
* regions and would cause test failures due to reference image
|
||||
* mismatch. What we actually want to see is the crisp outline of the
|
||||
* damage rectangles.
|
||||
*/
|
||||
setup.test_quirks.force_full_upload = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,10 @@ static const struct setup_args my_setup_args[] = {
|
|||
.meta.name = "GL",
|
||||
.renderer = WESTON_RENDERER_GL,
|
||||
},
|
||||
{
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.meta.name = "Vulkan",
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -48,6 +48,13 @@
|
|||
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
|
||||
.transform_name = #t, \
|
||||
.meta.name = "GL " #s " " #t, \
|
||||
}, \
|
||||
{ \
|
||||
.renderer = WESTON_RENDERER_VULKAN, \
|
||||
.scale = s, \
|
||||
.transform = WL_OUTPUT_TRANSFORM_ ## t, \
|
||||
.transform_name = #t, \
|
||||
.meta.name = "Vulkan " #s " " #t, \
|
||||
}
|
||||
|
||||
struct setup_args {
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@ static const struct setup_args my_setup_args[] = {
|
|||
.renderer = WESTON_RENDERER_GL,
|
||||
.meta.name = "GL"
|
||||
},
|
||||
{
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.meta.name = "Vulkan"
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@ static const struct setup_args my_setup_args[] = {
|
|||
.renderer = WESTON_RENDERER_GL,
|
||||
.meta.name = "GL"
|
||||
},
|
||||
{
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.meta.name = "Vulkan"
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@ static const struct setup_args my_setup_args[] = {
|
|||
.renderer = WESTON_RENDERER_GL,
|
||||
.meta.name = "GL"
|
||||
},
|
||||
{
|
||||
.renderer = WESTON_RENDERER_VULKAN,
|
||||
.meta.name = "Vulkan"
|
||||
},
|
||||
};
|
||||
|
||||
static enum test_result_code
|
||||
|
|
|
|||
|
|
@ -227,6 +227,7 @@ renderer_to_str(enum weston_renderer_type t)
|
|||
[WESTON_RENDERER_NOOP] = "noop",
|
||||
[WESTON_RENDERER_PIXMAN] = "pixman",
|
||||
[WESTON_RENDERER_GL] = "gl",
|
||||
[WESTON_RENDERER_VULKAN] = "vulkan",
|
||||
};
|
||||
test_assert_true(t >= 0 && t <= ARRAY_LENGTH(names));
|
||||
return names[t];
|
||||
|
|
@ -414,6 +415,13 @@ execute_compositor(const struct compositor_setup *setup,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE_VULKAN
|
||||
if (setup->renderer == WESTON_RENDERER_VULKAN) {
|
||||
fprintf(stderr, "Vulkan renderer required but not built, skipping.\n");
|
||||
ret = RESULT_SKIP;
|
||||
}
|
||||
#endif
|
||||
|
||||
test_data.test_quirks = setup->test_quirks;
|
||||
test_data.test_private_data = data;
|
||||
prog_args_save(&args);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue