mirror of
https://github.com/torvalds/linux.git
synced 2026-04-19 15:24:02 -04:00
drm/vkms: Add config for default plane pipeline
With the introduction of color pipeline in VKMS, the default device may have planes with color pipelines. To avoid breaking existing uAPI, create a kernel argument to disable them by default and a vkms_config field to configure the plane. This field is not definitive and will be replaced once the uAPI will be able to configure color pipelines. For now devices created with ConfigFS will not have any color pipeline so we can decide later how the uAPI will look like. Reviewed-by: Alex Hung <alex.hung@amd.com> Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com> Signed-off-by: Simon Ser <contact@emersion.fr> Link: https://patch.msgid.link/20251115000237.3561250-17-alex.hung@amd.com
This commit is contained in:
@@ -83,6 +83,7 @@ struct default_config_case {
|
||||
bool enable_cursor;
|
||||
bool enable_writeback;
|
||||
bool enable_overlay;
|
||||
bool enable_plane_pipeline;
|
||||
};
|
||||
|
||||
static void vkms_config_test_empty_config(struct kunit *test)
|
||||
@@ -108,14 +109,22 @@ static void vkms_config_test_empty_config(struct kunit *test)
|
||||
}
|
||||
|
||||
static struct default_config_case default_config_cases[] = {
|
||||
{ false, false, false },
|
||||
{ true, false, false },
|
||||
{ true, true, false },
|
||||
{ true, false, true },
|
||||
{ false, true, false },
|
||||
{ false, true, true },
|
||||
{ false, false, true },
|
||||
{ true, true, true },
|
||||
{ false, false, false, false },
|
||||
{ true, false, false, false },
|
||||
{ true, true, false, false },
|
||||
{ true, false, true, false },
|
||||
{ false, true, false, false },
|
||||
{ false, true, true, false },
|
||||
{ false, false, true, false },
|
||||
{ true, true, true, false },
|
||||
{ false, false, false, true },
|
||||
{ true, false, false, true },
|
||||
{ true, true, false, true },
|
||||
{ true, false, true, true },
|
||||
{ false, true, false, true },
|
||||
{ false, true, true, true },
|
||||
{ false, false, true, true },
|
||||
{ true, true, true, true },
|
||||
};
|
||||
|
||||
KUNIT_ARRAY_PARAM(default_config, default_config_cases, NULL);
|
||||
@@ -132,11 +141,15 @@ static void vkms_config_test_default_config(struct kunit *test)
|
||||
|
||||
config = vkms_config_default_create(params->enable_cursor,
|
||||
params->enable_writeback,
|
||||
params->enable_overlay);
|
||||
params->enable_overlay,
|
||||
params->enable_plane_pipeline);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
/* Planes */
|
||||
vkms_config_for_each_plane(config, plane_cfg) {
|
||||
KUNIT_EXPECT_EQ(test,
|
||||
vkms_config_plane_get_default_pipeline(plane_cfg),
|
||||
params->enable_plane_pipeline);
|
||||
switch (vkms_config_plane_get_type(plane_cfg)) {
|
||||
case DRM_PLANE_TYPE_PRIMARY:
|
||||
n_primaries++;
|
||||
@@ -368,7 +381,7 @@ static void vkms_config_test_invalid_plane_number(struct kunit *test)
|
||||
struct vkms_config_plane *plane_cfg;
|
||||
int n;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
/* Invalid: No planes */
|
||||
@@ -393,7 +406,7 @@ static void vkms_config_test_valid_plane_type(struct kunit *test)
|
||||
struct vkms_config_encoder *encoder_cfg;
|
||||
int err;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
plane_cfg = get_first_plane(config);
|
||||
@@ -474,7 +487,7 @@ static void vkms_config_test_valid_plane_possible_crtcs(struct kunit *test)
|
||||
struct vkms_config_plane *plane_cfg;
|
||||
struct vkms_config_crtc *crtc_cfg;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
plane_cfg = get_first_plane(config);
|
||||
@@ -493,7 +506,7 @@ static void vkms_config_test_invalid_crtc_number(struct kunit *test)
|
||||
struct vkms_config_crtc *crtc_cfg;
|
||||
int n;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
/* Invalid: No CRTCs */
|
||||
@@ -516,7 +529,7 @@ static void vkms_config_test_invalid_encoder_number(struct kunit *test)
|
||||
struct vkms_config_encoder *encoder_cfg;
|
||||
int n;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
/* Invalid: No encoders */
|
||||
@@ -541,7 +554,7 @@ static void vkms_config_test_valid_encoder_possible_crtcs(struct kunit *test)
|
||||
struct vkms_config_encoder *encoder_cfg;
|
||||
int err;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
crtc_cfg1 = get_first_crtc(config);
|
||||
@@ -587,7 +600,7 @@ static void vkms_config_test_invalid_connector_number(struct kunit *test)
|
||||
struct vkms_config_connector *connector_cfg;
|
||||
int n;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
/* Invalid: No connectors */
|
||||
@@ -610,7 +623,7 @@ static void vkms_config_test_valid_connector_possible_encoders(struct kunit *tes
|
||||
struct vkms_config_encoder *encoder_cfg;
|
||||
struct vkms_config_connector *connector_cfg;
|
||||
|
||||
config = vkms_config_default_create(false, false, false);
|
||||
config = vkms_config_default_create(false, false, false, false);
|
||||
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config);
|
||||
|
||||
encoder_cfg = get_first_encoder(config);
|
||||
|
||||
Reference in New Issue
Block a user