diff for duplicates of <20240228-nifty-flashy-shrew-905edc@houat> diff --git a/a/1.1.hdr b/N1/1.1.hdr index 5a32186..368ea2d 100644 --- a/a/1.1.hdr +++ b/N1/1.1.hdr @@ -1,3 +1,3 @@ -Content-Type: text/plain; charset=us-ascii +Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable diff --git a/a/1.1.txt b/N1/1.1.txt index 8e9309b..80ad36c 100644 --- a/a/1.1.txt +++ b/N1/1.1.txt @@ -1,93 +1,40 @@ -Hi, - -On Mon, Feb 26, 2024 at 08:44:45PM -0800, Anatoliy Klymenko wrote: -> Add select_output_bus_format to CRTC atomic helpers callbacks. This -> callback Will allow CRTC to participate in media bus format negotiation -> over connected DRM bridge chain and impose CRTC-specific restrictions. -> A good example is CRTC implemented as FPGA soft IP. This kind of CRTC will -> most certainly support a single output media bus format, as supporting -> multiple runtime options consumes extra FPGA resources. A variety of -> options for FPGA are usually achieved by synthesizing IP with different -> parameters. -> -> Incorporate select_output_bus_format callback into the format negotiation -> stage to fix the input bus format of the first DRM bridge in the chain. +On Tue, Feb 27, 2024 at 07:45:01PM -0300, Maíra Canal wrote: +> Hi Maxime, > -> Signed-off-by: Anatoliy Klymenko <anatoliy.klymenko@amd.com> -> --- -> drivers/gpu/drm/drm_bridge.c | 19 +++++++++++++++++-- -> include/drm/drm_modeset_helper_vtables.h | 31 +++++++++++++++++++++++++++++++ -> 2 files changed, 48 insertions(+), 2 deletions(-) +> On 2/27/24 10:02, Maxime Ripard wrote: +> > Hi Maíra, +> > +> > Thanks for you reviews! +> > +> > On Mon, Feb 26, 2024 at 09:29:32AM -0300, Maíra Canal wrote: +> > > On 2/22/24 15:14, Maxime Ripard wrote: +> > > > The vc4_dummy_plane structure is an exact equivalent to vc4_plane, so we +> > > +> > > Maybe I understood incorrectly, but isn't the vc4_dummy_plane structure +> > > equivalent to drm_plane? +> > +> > Both statements are true :) +> > +> > vc4 itself uses vc4_plane to holds its plane-related content, but it +> > turns out that there's nothing in that structure anymore and vc4_plane +> > == drm_plane. +> > +> > In our mock driver, we have another structure meant to store the +> > mock-plane-related content which doesn't have anything in it anymore, +> > and is thus equivalent to vc4_plane. +> > +> > So, basically, vc4_dummy_plane == vc4_plane == drm_plane. +> > +> > This patch is only about getting rid of vc4_dummy_plane though. +> > +> > Is it clearer? +> > > -> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c -> index 521a71c61b16..453ae3d174b4 100644 -> --- a/drivers/gpu/drm/drm_bridge.c -> +++ b/drivers/gpu/drm/drm_bridge.c -> @@ -32,6 +32,7 @@ -> #include <drm/drm_edid.h> -> #include <drm/drm_encoder.h> -> #include <drm/drm_file.h> -> +#include <drm/drm_modeset_helper_vtables.h> -> #include <drm/drm_of.h> -> #include <drm/drm_print.h> -> -> @@ -879,7 +880,8 @@ static int select_bus_fmt_recursive(struct drm_bridge *first_bridge, -> unsigned int i, num_in_bus_fmts = 0; -> struct drm_bridge_state *cur_state; -> struct drm_bridge *prev_bridge; -> - u32 *in_bus_fmts; -> + struct drm_crtc *crtc = crtc_state->crtc; -> + u32 *in_bus_fmts, in_fmt; -> int ret; -> -> prev_bridge = drm_bridge_get_prev_bridge(cur_bridge); -> @@ -933,7 +935,20 @@ static int select_bus_fmt_recursive(struct drm_bridge *first_bridge, -> return -ENOMEM; -> -> if (first_bridge == cur_bridge) { -> - cur_state->input_bus_cfg.format = in_bus_fmts[0]; -> + in_fmt = in_bus_fmts[0]; -> + if (crtc->helper_private && -> + crtc->helper_private->select_output_bus_format) { -> + in_fmt = crtc->helper_private->select_output_bus_format( -> + crtc, -> + crtc->state, -> + in_bus_fmts, -> + num_in_bus_fmts); -> + if (!in_fmt) { -> + kfree(in_bus_fmts); -> + return -ENOTSUPP; -> + } -> + } -> + cur_state->input_bus_cfg.format = in_fmt; - -I don't think we should start poking at the CRTC internals, but we -should rather provide a helper here. - -> cur_state->output_bus_cfg.format = out_bus_fmt; -> kfree(in_bus_fmts); -> return 0; -> diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h -> index 881b03e4dc28..7c21ae1fe3ad 100644 -> --- a/include/drm/drm_modeset_helper_vtables.h -> +++ b/include/drm/drm_modeset_helper_vtables.h -> @@ -489,6 +489,37 @@ struct drm_crtc_helper_funcs { -> bool in_vblank_irq, int *vpos, int *hpos, -> ktime_t *stime, ktime_t *etime, -> const struct drm_display_mode *mode); -> + -> + /** -> + * @select_output_bus_format -> + * -> + * Called by the first connected DRM bridge to negotiate input media -> + * bus format. CRTC is expected to pick preferable media formats from -> + * the list supported by the DRM bridge chain. +> Yeah, with that pointed out, you can add my: -There's nothing restricting it to bridges here. Please rephrase this to -remove the bridge mention. The user is typically going to be the -encoder, and bridges are just an automagic implementation of an encoder. +I'll rephrase for the next version then -And generally speaking, I'd really like to have an implementation -available before merging this. +> Reviewed-by: Maíra Canal <mcanal@igalia.com> +Thanks! Maxime diff --git a/a/1.2.bin b/N1/1.2.bin index 2a95035..340531c 100644 --- a/a/1.2.bin +++ b/N1/1.2.bin @@ -1,7 +1,7 @@ -----BEGIN PGP SIGNATURE----- -iHUEABYKAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCZd9RXQAKCRDj7w1vZxhR -xabiAPwMUBllLVjJ2R8GSARBjyjpbidi/etMNmmjB31GnUsLCQD9GXcs+YhUV+XC -WZuXsHmZaEgjQI0Yn+ELSS5uW/RRqgg= -=PnFN +iHUEABYKAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCZd9ccAAKCRDj7w1vZxhR +xQ/aAQDzU4vVfau883o71TzEeE+lysJ38XPUbtp9Q818fxbvSAD/TfNo9QsQjVLO +TjOhPuL8arGdUmexXtTS6jTunClBzAA= +=6H0O -----END PGP SIGNATURE----- diff --git a/a/content_digest b/N1/content_digest index cf96148..f0204fd 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,127 +1,83 @@ - "ref\020240226-dp-live-fmt-v1-0-b78c3f69c9d8@amd.com\0" - "ref\020240226-dp-live-fmt-v1-4-b78c3f69c9d8@amd.com\0" + "ref\020240222-kms-hdmi-connector-state-v7-0-8f4af575fce2@kernel.org\0" + "ref\020240222-kms-hdmi-connector-state-v7-29-8f4af575fce2@kernel.org\0" + "ref\0244fe6b9-f295-4c85-908a-014ada0033fa@igalia.com\0" + "ref\0y7mxj2i56h7bcnonywjdf2eirdqil66k32drw3wb3z7juqr3ph@4u24mlrvxslc\0" + "ref\02693770c-0d27-4186-87e1-e55a0a5f17a5@igalia.com\0" "From\0Maxime Ripard <mripard@kernel.org>\0" - "Subject\0Re: [PATCH 4/4] drm/atomic-helper: Add select_output_bus_format callback\0" - "Date\0Wed, 28 Feb 2024 16:29:33 +0100\0" - "To\0Anatoliy Klymenko <anatoliy.klymenko@amd.com>\0" - "Cc\0Laurent Pinchart <laurent.pinchart@ideasonboard.com>" - Maarten Lankhorst <maarten.lankhorst@linux.intel.com> + "Subject\0Re: [PATCH v7 29/36] drm/vc4: tests: Remove vc4_dummy_plane structure\0" + "Date\0Wed, 28 Feb 2024 17:16:48 +0100\0" + "To\0Ma\303\255ra Canal <mcanal@igalia.com>\0" + "Cc\0Maarten Lankhorst <maarten.lankhorst@linux.intel.com>" Thomas Zimmermann <tzimmermann@suse.de> David Airlie <airlied@gmail.com> Daniel Vetter <daniel@ffwll.ch> - Michal Simek <michal.simek@amd.com> - Andrzej Hajda <andrzej.hajda@intel.com> - Neil Armstrong <neil.armstrong@linaro.org> - Robert Foss <rfoss@kernel.org> - Jonas Karlman <jonas@kwiboo.se> + Jonathan Corbet <corbet@lwn.net> + Sandy Huang <hjc@rock-chips.com> + " Heiko St\303\274bner <heiko@sntech.de>" + Chen-Yu Tsai <wens@csie.org> Jernej Skrabec <jernej.skrabec@gmail.com> + Samuel Holland <samuel@sholland.org> + Hans Verkuil <hverkuil@xs4all.nl> + Sebastian Wick <sebastian.wick@redhat.com> + " Ville Syrj\303\244l\303\244 <ville.syrjala@linux.intel.com>" dri-devel@lists.freedesktop.org linux-arm-kernel@lists.infradead.org - " linux-kernel@vger.kernel.org\0" + linux-doc@vger.kernel.org + linux-kernel@vger.kernel.org + linux-media@vger.kernel.org + linux-rockchip@lists.infradead.org + " linux-sunxi@lists.linux.dev\0" "\02:1.1\0" "b\0" - "Hi,\n" - "\n" - "On Mon, Feb 26, 2024 at 08:44:45PM -0800, Anatoliy Klymenko wrote:\n" - "> Add select_output_bus_format to CRTC atomic helpers callbacks. This\n" - "> callback Will allow CRTC to participate in media bus format negotiation\n" - "> over connected DRM bridge chain and impose CRTC-specific restrictions.\n" - "> A good example is CRTC implemented as FPGA soft IP. This kind of CRTC will\n" - "> most certainly support a single output media bus format, as supporting\n" - "> multiple runtime options consumes extra FPGA resources. A variety of\n" - "> options for FPGA are usually achieved by synthesizing IP with different\n" - "> parameters.\n" - "> \n" - "> Incorporate select_output_bus_format callback into the format negotiation\n" - "> stage to fix the input bus format of the first DRM bridge in the chain.\n" + "On Tue, Feb 27, 2024 at 07:45:01PM -0300, Ma\303\255ra Canal wrote:\n" + "> Hi Maxime,\n" "> \n" - "> Signed-off-by: Anatoliy Klymenko <anatoliy.klymenko@amd.com>\n" - "> ---\n" - "> drivers/gpu/drm/drm_bridge.c | 19 +++++++++++++++++--\n" - "> include/drm/drm_modeset_helper_vtables.h | 31 +++++++++++++++++++++++++++++++\n" - "> 2 files changed, 48 insertions(+), 2 deletions(-)\n" + "> On 2/27/24 10:02, Maxime Ripard wrote:\n" + "> > Hi Ma\303\255ra,\n" + "> > \n" + "> > Thanks for you reviews!\n" + "> > \n" + "> > On Mon, Feb 26, 2024 at 09:29:32AM -0300, Ma\303\255ra Canal wrote:\n" + "> > > On 2/22/24 15:14, Maxime Ripard wrote:\n" + "> > > > The vc4_dummy_plane structure is an exact equivalent to vc4_plane, so we\n" + "> > > \n" + "> > > Maybe I understood incorrectly, but isn't the vc4_dummy_plane structure\n" + "> > > equivalent to drm_plane?\n" + "> > \n" + "> > Both statements are true :)\n" + "> > \n" + "> > vc4 itself uses vc4_plane to holds its plane-related content, but it\n" + "> > turns out that there's nothing in that structure anymore and vc4_plane\n" + "> > == drm_plane.\n" + "> > \n" + "> > In our mock driver, we have another structure meant to store the\n" + "> > mock-plane-related content which doesn't have anything in it anymore,\n" + "> > and is thus equivalent to vc4_plane.\n" + "> > \n" + "> > So, basically, vc4_dummy_plane == vc4_plane == drm_plane.\n" + "> > \n" + "> > This patch is only about getting rid of vc4_dummy_plane though.\n" + "> > \n" + "> > Is it clearer?\n" + "> > \n" "> \n" - "> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c\n" - "> index 521a71c61b16..453ae3d174b4 100644\n" - "> --- a/drivers/gpu/drm/drm_bridge.c\n" - "> +++ b/drivers/gpu/drm/drm_bridge.c\n" - "> @@ -32,6 +32,7 @@\n" - "> #include <drm/drm_edid.h>\n" - "> #include <drm/drm_encoder.h>\n" - "> #include <drm/drm_file.h>\n" - "> +#include <drm/drm_modeset_helper_vtables.h>\n" - "> #include <drm/drm_of.h>\n" - "> #include <drm/drm_print.h>\n" - "> \n" - "> @@ -879,7 +880,8 @@ static int select_bus_fmt_recursive(struct drm_bridge *first_bridge,\n" - "> \tunsigned int i, num_in_bus_fmts = 0;\n" - "> \tstruct drm_bridge_state *cur_state;\n" - "> \tstruct drm_bridge *prev_bridge;\n" - "> -\tu32 *in_bus_fmts;\n" - "> +\tstruct drm_crtc *crtc = crtc_state->crtc;\n" - "> +\tu32 *in_bus_fmts, in_fmt;\n" - "> \tint ret;\n" - "> \n" - "> \tprev_bridge = drm_bridge_get_prev_bridge(cur_bridge);\n" - "> @@ -933,7 +935,20 @@ static int select_bus_fmt_recursive(struct drm_bridge *first_bridge,\n" - "> \t\treturn -ENOMEM;\n" - "> \n" - "> \tif (first_bridge == cur_bridge) {\n" - "> -\t\tcur_state->input_bus_cfg.format = in_bus_fmts[0];\n" - "> +\t\tin_fmt = in_bus_fmts[0];\n" - "> +\t\tif (crtc->helper_private &&\n" - "> +\t\t crtc->helper_private->select_output_bus_format) {\n" - "> +\t\t\tin_fmt = crtc->helper_private->select_output_bus_format(\n" - "> +\t\t\t\t\t\t\tcrtc,\n" - "> +\t\t\t\t\t\t\tcrtc->state,\n" - "> +\t\t\t\t\t\t\tin_bus_fmts,\n" - "> +\t\t\t\t\t\t\tnum_in_bus_fmts);\n" - "> +\t\t\tif (!in_fmt) {\n" - "> +\t\t\t\tkfree(in_bus_fmts);\n" - "> +\t\t\t\treturn -ENOTSUPP;\n" - "> +\t\t\t}\n" - "> +\t\t}\n" - "> +\t\tcur_state->input_bus_cfg.format = in_fmt;\n" - "\n" - "I don't think we should start poking at the CRTC internals, but we\n" - "should rather provide a helper here.\n" - "\n" - "> \t\tcur_state->output_bus_cfg.format = out_bus_fmt;\n" - "> \t\tkfree(in_bus_fmts);\n" - "> \t\treturn 0;\n" - "> diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h\n" - "> index 881b03e4dc28..7c21ae1fe3ad 100644\n" - "> --- a/include/drm/drm_modeset_helper_vtables.h\n" - "> +++ b/include/drm/drm_modeset_helper_vtables.h\n" - "> @@ -489,6 +489,37 @@ struct drm_crtc_helper_funcs {\n" - "> \t\t\t\t bool in_vblank_irq, int *vpos, int *hpos,\n" - "> \t\t\t\t ktime_t *stime, ktime_t *etime,\n" - "> \t\t\t\t const struct drm_display_mode *mode);\n" - "> +\n" - "> +\t/**\n" - "> +\t * @select_output_bus_format\n" - "> +\t *\n" - "> +\t * Called by the first connected DRM bridge to negotiate input media\n" - "> +\t * bus format. CRTC is expected to pick preferable media formats from\n" - "> +\t * the list supported by the DRM bridge chain.\n" + "> Yeah, with that pointed out, you can add my:\n" "\n" - "There's nothing restricting it to bridges here. Please rephrase this to\n" - "remove the bridge mention. The user is typically going to be the\n" - "encoder, and bridges are just an automagic implementation of an encoder.\n" + "I'll rephrase for the next version then\n" "\n" - "And generally speaking, I'd really like to have an implementation\n" - "available before merging this.\n" + "> Reviewed-by: Ma\303\255ra Canal <mcanal@igalia.com>\n" "\n" + "Thanks!\n" Maxime "\02:1.2\0" "fn\0signature.asc\0" "b\0" "-----BEGIN PGP SIGNATURE-----\n" "\n" - "iHUEABYKAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCZd9RXQAKCRDj7w1vZxhR\n" - "xabiAPwMUBllLVjJ2R8GSARBjyjpbidi/etMNmmjB31GnUsLCQD9GXcs+YhUV+XC\n" - "WZuXsHmZaEgjQI0Yn+ELSS5uW/RRqgg=\n" - "=PnFN\n" + "iHUEABYKAB0WIQRcEzekXsqa64kGDp7j7w1vZxhRxQUCZd9ccAAKCRDj7w1vZxhR\n" + "xQ/aAQDzU4vVfau883o71TzEeE+lysJ38XPUbtp9Q818fxbvSAD/TfNo9QsQjVLO\n" + "TjOhPuL8arGdUmexXtTS6jTunClBzAA=\n" + "=6H0O\n" "-----END PGP SIGNATURE-----\n" "\01:2\0" "b\0" @@ -130,4 +86,4 @@ "linux-arm-kernel@lists.infradead.org\n" http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -d2fb510527df71ebbf7fbe184a6af56001978b4a12f299afe306788988a82863 +45fc2ebf33b978581af7b1ce253b30206fc5c0be00a5cd4787a64080c79e2677
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox