* [PATCH v4 0/2] drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state
@ 2023-12-08 1:03 Dmitry Baryshkov
2023-12-08 1:03 ` [PATCH v4 1/2] " Dmitry Baryshkov
2023-12-08 1:03 ` [PATCH v4 2/2] drm/vkms: move wb's atomic_check from encoder to connector Dmitry Baryshkov
0 siblings, 2 replies; 5+ messages in thread
From: Dmitry Baryshkov @ 2023-12-08 1:03 UTC (permalink / raw)
To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Rodrigo Siqueira, Melissa Wen, Maíra Canal,
Haneen Mohammed
Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm
The function drm_atomic_helper_check_wb_encoder_state() doesn't use
drm_encoder for anything sensible. Internally it checks
drm_writeback_connector's state. Thus it makes sense to let this
function accept drm_connector object and the drm_atomic_state
and rename it to drm_atomic_helper_check_wb_connector_state().
Changes since v3:
- Fix the function usage in vkms_wb_encoder_atomic_check() (Maxime)
Changes since v2:
- Make the function accept drm_connector instead of
drm_writeback_connector (Maxime)
Changes since v1:
- Make the function accept drm_writeback_connector and drm_atomic_state
(Maxime)
- Added a patch for VKMS to move atomic_check of WB path from encoder to
connector helpers.
Dmitry Baryshkov (2):
drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state
drm/vkms: move wb's atomic_check from encoder to connector
drivers/gpu/drm/drm_atomic_helper.c | 16 +++++++++-------
drivers/gpu/drm/vkms/vkms_writeback.c | 25 +++++++++++++++----------
include/drm/drm_atomic_helper.h | 5 ++---
3 files changed, 26 insertions(+), 20 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v4 1/2] drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state
2023-12-08 1:03 [PATCH v4 0/2] drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state Dmitry Baryshkov
@ 2023-12-08 1:03 ` Dmitry Baryshkov
2023-12-08 9:36 ` (subset) " Maxime Ripard
2023-12-08 1:03 ` [PATCH v4 2/2] drm/vkms: move wb's atomic_check from encoder to connector Dmitry Baryshkov
1 sibling, 1 reply; 5+ messages in thread
From: Dmitry Baryshkov @ 2023-12-08 1:03 UTC (permalink / raw)
To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Rodrigo Siqueira, Melissa Wen, Maíra Canal,
Haneen Mohammed
Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm
The drm_atomic_helper_check_wb_encoder_state() function doesn't use
encoder for anything other than getting the drm_device instance. The
function's description talks about checking the writeback connector
state, not the encoder state. Moreover, there is no such thing as an
encoder state, encoders generally do not have a state on their own.
Rename the function to drm_atomic_helper_check_wb_connector_state()
and change arguments to drm_writeback_connector and drm_atomic_state.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
drivers/gpu/drm/drm_atomic_helper.c | 16 +++++++++-------
drivers/gpu/drm/vkms/vkms_writeback.c | 3 ++-
include/drm/drm_atomic_helper.h | 5 ++---
3 files changed, 13 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index a920fbae714c..39ef0a6addeb 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -795,9 +795,9 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
EXPORT_SYMBOL(drm_atomic_helper_check_modeset);
/**
- * drm_atomic_helper_check_wb_encoder_state() - Check writeback encoder state
- * @encoder: encoder state to check
- * @conn_state: connector state to check
+ * drm_atomic_helper_check_wb_connector_state() - Check writeback connector state
+ * @connector: corresponding connector
+ * @state: the driver state object
*
* Checks if the writeback connector state is valid, and returns an error if it
* isn't.
@@ -806,9 +806,11 @@ EXPORT_SYMBOL(drm_atomic_helper_check_modeset);
* Zero for success or -errno
*/
int
-drm_atomic_helper_check_wb_encoder_state(struct drm_encoder *encoder,
- struct drm_connector_state *conn_state)
+drm_atomic_helper_check_wb_connector_state(struct drm_connector *connector,
+ struct drm_atomic_state *state)
{
+ struct drm_connector_state *conn_state =
+ drm_atomic_get_new_connector_state(state, connector);
struct drm_writeback_job *wb_job = conn_state->writeback_job;
struct drm_property_blob *pixel_format_blob;
struct drm_framebuffer *fb;
@@ -827,11 +829,11 @@ drm_atomic_helper_check_wb_encoder_state(struct drm_encoder *encoder,
if (fb->format->format == formats[i])
return 0;
- drm_dbg_kms(encoder->dev, "Invalid pixel format %p4cc\n", &fb->format->format);
+ drm_dbg_kms(connector->dev, "Invalid pixel format %p4cc\n", &fb->format->format);
return -EINVAL;
}
-EXPORT_SYMBOL(drm_atomic_helper_check_wb_encoder_state);
+EXPORT_SYMBOL(drm_atomic_helper_check_wb_connector_state);
/**
* drm_atomic_helper_check_plane_state() - Check plane state for validity
diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
index d7e63aa14663..fef7f3daf2c9 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -34,6 +34,7 @@ static int vkms_wb_encoder_atomic_check(struct drm_encoder *encoder,
struct drm_crtc_state *crtc_state,
struct drm_connector_state *conn_state)
{
+ struct drm_connector *connector = conn_state->connector;
struct drm_framebuffer *fb;
const struct drm_display_mode *mode = &crtc_state->mode;
int ret;
@@ -48,7 +49,7 @@ static int vkms_wb_encoder_atomic_check(struct drm_encoder *encoder,
return -EINVAL;
}
- ret = drm_atomic_helper_check_wb_encoder_state(encoder, conn_state);
+ ret = drm_atomic_helper_check_wb_connector_state(connector, conn_state->state);
if (ret < 0)
return ret;
diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h
index 006b5c977ad7..9aa0a05aa072 100644
--- a/include/drm/drm_atomic_helper.h
+++ b/include/drm/drm_atomic_helper.h
@@ -49,9 +49,8 @@ struct drm_private_state;
int drm_atomic_helper_check_modeset(struct drm_device *dev,
struct drm_atomic_state *state);
-int
-drm_atomic_helper_check_wb_encoder_state(struct drm_encoder *encoder,
- struct drm_connector_state *conn_state);
+int drm_atomic_helper_check_wb_connector_state(struct drm_connector *connector,
+ struct drm_atomic_state *state);
int drm_atomic_helper_check_plane_state(struct drm_plane_state *plane_state,
const struct drm_crtc_state *crtc_state,
int min_scale,
--
2.39.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v4 2/2] drm/vkms: move wb's atomic_check from encoder to connector
2023-12-08 1:03 [PATCH v4 0/2] drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state Dmitry Baryshkov
2023-12-08 1:03 ` [PATCH v4 1/2] " Dmitry Baryshkov
@ 2023-12-08 1:03 ` Dmitry Baryshkov
2023-12-08 9:36 ` (subset) " Maxime Ripard
1 sibling, 1 reply; 5+ messages in thread
From: Dmitry Baryshkov @ 2023-12-08 1:03 UTC (permalink / raw)
To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Rodrigo Siqueira, Melissa Wen, Maíra Canal,
Haneen Mohammed
Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm
As the renamed drm_atomic_helper_check_wb_connector_state() now accepts
drm_writeback_connector as the first argument (instead of drm_encoder),
move the VKMS writeback atomic_check from drm_encoder_helper_funcs to
drm_connector_helper_funcs. Also drop the vkms_wb_encoder_helper_funcs,
which have become empty now.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
---
drivers/gpu/drm/vkms/vkms_writeback.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
index fef7f3daf2c9..bc724cbd5e3a 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -30,18 +30,25 @@ static const struct drm_connector_funcs vkms_wb_connector_funcs = {
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
};
-static int vkms_wb_encoder_atomic_check(struct drm_encoder *encoder,
- struct drm_crtc_state *crtc_state,
- struct drm_connector_state *conn_state)
+static int vkms_wb_atomic_check(struct drm_connector *connector,
+ struct drm_atomic_state *state)
{
- struct drm_connector *connector = conn_state->connector;
+ struct drm_connector_state *conn_state =
+ drm_atomic_get_new_connector_state(state, connector);
+ struct drm_crtc_state *crtc_state;
struct drm_framebuffer *fb;
- const struct drm_display_mode *mode = &crtc_state->mode;
+ const struct drm_display_mode *mode;
int ret;
if (!conn_state->writeback_job || !conn_state->writeback_job->fb)
return 0;
+ if (!conn_state->crtc)
+ return 0;
+
+ crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc);
+ mode = &crtc_state->mode;
+
fb = conn_state->writeback_job->fb;
if (fb->width != mode->hdisplay || fb->height != mode->vdisplay) {
DRM_DEBUG_KMS("Invalid framebuffer size %ux%u\n",
@@ -49,17 +56,13 @@ static int vkms_wb_encoder_atomic_check(struct drm_encoder *encoder,
return -EINVAL;
}
- ret = drm_atomic_helper_check_wb_connector_state(connector, conn_state->state);
+ ret = drm_atomic_helper_check_wb_connector_state(connector, state);
if (ret < 0)
return ret;
return 0;
}
-static const struct drm_encoder_helper_funcs vkms_wb_encoder_helper_funcs = {
- .atomic_check = vkms_wb_encoder_atomic_check,
-};
-
static int vkms_wb_connector_get_modes(struct drm_connector *connector)
{
struct drm_device *dev = connector->dev;
@@ -162,6 +165,7 @@ static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = {
.prepare_writeback_job = vkms_wb_prepare_job,
.cleanup_writeback_job = vkms_wb_cleanup_job,
.atomic_commit = vkms_wb_atomic_commit,
+ .atomic_check = vkms_wb_atomic_check,
};
int vkms_enable_writeback_connector(struct vkms_device *vkmsdev)
@@ -172,7 +176,7 @@ int vkms_enable_writeback_connector(struct vkms_device *vkmsdev)
return drm_writeback_connector_init(&vkmsdev->drm, wb,
&vkms_wb_connector_funcs,
- &vkms_wb_encoder_helper_funcs,
+ NULL,
vkms_wb_formats,
ARRAY_SIZE(vkms_wb_formats),
1);
--
2.39.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: (subset) [PATCH v4 1/2] drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state
2023-12-08 1:03 ` [PATCH v4 1/2] " Dmitry Baryshkov
@ 2023-12-08 9:36 ` Maxime Ripard
0 siblings, 0 replies; 5+ messages in thread
From: Maxime Ripard @ 2023-12-08 9:36 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Daniel Vetter,
Rodrigo Siqueira, Melissa Wen, Maíra Canal, Haneen Mohammed,
Dmitry Baryshkov
Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm
On Fri, 08 Dec 2023 04:03:13 +0300, Dmitry Baryshkov wrote:
> The drm_atomic_helper_check_wb_encoder_state() function doesn't use
> encoder for anything other than getting the drm_device instance. The
> function's description talks about checking the writeback connector
> state, not the encoder state. Moreover, there is no such thing as an
> encoder state, encoders generally do not have a state on their own.
>
> Rename the function to drm_atomic_helper_check_wb_connector_state()
> and change arguments to drm_writeback_connector and drm_atomic_state.
>
> [...]
Applied to drm/drm-misc (drm-misc-next).
Thanks!
Maxime
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: (subset) [PATCH v4 2/2] drm/vkms: move wb's atomic_check from encoder to connector
2023-12-08 1:03 ` [PATCH v4 2/2] drm/vkms: move wb's atomic_check from encoder to connector Dmitry Baryshkov
@ 2023-12-08 9:36 ` Maxime Ripard
0 siblings, 0 replies; 5+ messages in thread
From: Maxime Ripard @ 2023-12-08 9:36 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Daniel Vetter,
Rodrigo Siqueira, Melissa Wen, Maíra Canal, Haneen Mohammed,
Dmitry Baryshkov
Cc: Rob Clark, Abhinav Kumar, dri-devel, freedreno, linux-arm-msm
On Fri, 08 Dec 2023 04:03:14 +0300, Dmitry Baryshkov wrote:
> As the renamed drm_atomic_helper_check_wb_connector_state() now accepts
> drm_writeback_connector as the first argument (instead of drm_encoder),
> move the VKMS writeback atomic_check from drm_encoder_helper_funcs to
> drm_connector_helper_funcs. Also drop the vkms_wb_encoder_helper_funcs,
> which have become empty now.
>
>
> [...]
Applied to drm/drm-misc (drm-misc-next).
Thanks!
Maxime
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-12-08 9:36 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-08 1:03 [PATCH v4 0/2] drm/atomic-helper: rename drm_atomic_helper_check_wb_encoder_state Dmitry Baryshkov
2023-12-08 1:03 ` [PATCH v4 1/2] " Dmitry Baryshkov
2023-12-08 9:36 ` (subset) " Maxime Ripard
2023-12-08 1:03 ` [PATCH v4 2/2] drm/vkms: move wb's atomic_check from encoder to connector Dmitry Baryshkov
2023-12-08 9:36 ` (subset) " Maxime Ripard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).