From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1509F3D3322 for ; Wed, 8 Apr 2026 16:44:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666644; cv=none; b=IAh2IyQDaXeZm9q3EwhAzGc+6YZwjQnH6YyTOI0WPk9t3e3gGLGNCFHZNZu6Kh8Qh4Tw0HRHRxQ4B1gX8McFD5khDRGC8SZubDinlmkiYG9KsNzFseafGH7SYiXJEX+Rk9OmbvlhdXUGBhsAnGm9uGNd99Zd4pQDLvPv2hnzA50= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666644; c=relaxed/simple; bh=h6zkUnNy9vxMe4HQaXIisPCrT/T6RWLbOmeWx06O7xE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=W1mRBYAPAdgD4yMSi3lxeuHcoUIQdIcHBRB+nQHL8N0PyYCflwjp0nYFsCcDD0oQJhFTW2XOg6l1ff4lV4yeqBKcpy5SooDGJ/6u2eERan6qoPcIC9Vt1jS3DZJ9AW0Efd5NmrRFOtoStZJhc40nRZYt5LLYhbf9mUkDU7VkoN4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Jf4ec+Ru; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Jf4ec+Ru" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-488b0046078so290815e9.1 for ; Wed, 08 Apr 2026 09:44:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666641; x=1776271441; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=TlUkpJAyKFczCXz0UgMNTWfP4cWrCCuTRRWsLVFVCcg=; b=Jf4ec+Rueln1SD/5O8VCL1tAzJjlEBUJ19PE6elc8J1Uz6utpBhrrgTmug4ze88HC6 LZ2DYuFMs4ATqQtcX6Z2+hLdpAxcYPyVpkta/MQcieWU4HvHQ674yz2AsybSPdejfI0e TCqduKX1n4baOU/HnMvTgc2d0ZLSQywlkinwzvC8pJAhkLAw6SICQG7bs8fUayEVzD4+ axwxZPbmxe6Z0uKwowQgkPfmQut/7RVCsLAhUBWhoCMK6RYP8aMuQUCl+Rmicyg5OkIW fAd//0/zVIZjp8mIHZGsGuqpqYqO4yv3uFv+z6mQDaSlYiHlPTbP57KumZ5cJlA5j21F qAqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666641; x=1776271441; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TlUkpJAyKFczCXz0UgMNTWfP4cWrCCuTRRWsLVFVCcg=; b=HLjGcESbZxp1KjO3c4hthz/20FMx9UcFFOryiBSY7Lr63HgNFltVfdF18i3t9Lu06G gs8RdA9/tppNWghe+lEjV/hPrsua31pPXgq749tsBsQ0GVVCppXQvrRYKEx3NgJ2DBHY +MVGNeBj+26a58hljI1i2zSTr4seyYTCG6g1YVVv80eJnu0hF8+Q66xqApKXCx8UhMG2 EmEa+Ut1BdcTPAXQqIxPBP8pnquOhzw3L7JFot23vOjH3t4fGAiqAXVBni13QtbDe0np V2sJby3MSYWqUEtzS/TVoU5G2DCD7UHRKvKQSAlp/yt6okKLVsawhyRoaonOZPoS4xth hHKA== X-Forwarded-Encrypted: i=1; AJvYcCXL/m2vzCwtNrpaNvz9Px+fqBBRma+FCe0hMdf8g+B+PlNqOUUug+9Zdi0mbbceVnpFUbBOKH5qJRQGf/8=@vger.kernel.org X-Gm-Message-State: AOJu0YzMKx+uGqZgVxFqiJzAK/jZ3nyj7xoPuxwc+/85QTOFZffY7vZM zKQUgC+sN/VnXYxdIrN3xBSmZO1i8dMrFoAEHoa45f43hpwOZwGr9UjcQ3O8bpQpNoU= X-Gm-Gg: AeBDiesWeUtUZwiWdX9l9MqIPAT7w7QPIHwV1klcp5ivblOJ+Mq84nWnDnwzFcTn7OJ kyZdPKFvICexJgy+Wpi+OHUTPku2Uue6S0h3cVLpyYy7rTf83rhTEuRy3Hip+275e/sAfLwv34B fJz9cy894dysM4wpIJRWomrjlHgzfMdqSxAMA9IPiIKkObm/cL1Q9azMMlvWcgbQP8qZXt8qjvw 1dxj92B64fnJwF4qKTcppgxPmMnuNSbg7ai0+hQjY5X3B7iLX28q7WFhiXZYgKLRR59xSVV6cUM I7oCxC+M6UPFCyBiCuKpcDMkIYYdZgki0Afk8AEnSXnV9cHkEPsDlvSzFMdGS7F4PBWAaSG3/lh IJlfcNUOfjSEu8g5mtJbvUBP6hhSjx38jdOnUuKM5lpeaZQhgTsPO5LQ4ayQCxd2a8Tf8Rnkh74 0kDc/HcyRTOYpovTmEyc7PbOROHd6OHSSNfoJnPH8J/Fcx X-Received: by 2002:a05:600c:1e24:b0:488:c078:bfda with SMTP id 5b1f17b1804b1-488c078f73fmr89048325e9.26.1775666641310; Wed, 08 Apr 2026 09:44:01 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:01 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:43:54 +0200 Subject: [PATCH RFC 1/7] media: qcom: iris: add QC10C & P010 buffer size calculations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-1-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4641; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=h6zkUnNy9vxMe4HQaXIisPCrT/T6RWLbOmeWx06O7xE=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXM3AXdUizYKspKzvr6kAqUYfyGXqfclUBdsl4I 7Sxd+MiJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzAAKCRB33NvayMhJ0f2wEA CwJY9d9azifaSyMWc/UFRLqLI8XCkWhnVXPRhGrKwG24Y0sTBCawqQ9n5oJHYISCyWGf1UKEJeZXvh lRDVJW5P5QyJ/8zoGHyv+dqMIyBkF9ozx8ksfbGwhu+LMFql47Erl6IokR5/UZqH6t5uNNi1JHL2vG PbVAVf4ylD3jbEamIy034ZuD9zJRuTA1xa0UQwkskRDZyh+TROSikNxbKG7Llh3U+Qb7HkjGO9kZil TQkX1dbqEPss9brYZG3hr02DJ2YZBsOqJk4hJe6xU53iN/CNJFjFa8YM6ShC65Zey8fghUSZYzlGv6 EKGobo12e0KhdMLILRqJHGsK1T1+4pVkXnChD9gIsceWXeQDkgvM21lx8SK1Do0rQ6cB+SeiCgEQAf rCCVrnvp+7l/hpqj2kF7+ZxPDsB6zUfojqOGWybA/IsRMazBKrEVLponFIcs6tVPJr3EceNxO7S2wm +I/T8MoGEPPxYsLEY31w3yObwWFNbwjaHvCM3F+LbI+vF7h4NgROTQriDbGuwzG+xhedPP5unE9BNv vtB5McuRrbW1ZVbL7hwzej90Y9s/F54KbsBxISh9caPWNnroe8EFFc5U3xp82/YjP1HnTD0GXepZ5r NrBzR6JLqWvFh9w8uTtac9lpSNApeDyQxfnz+3eCvL39AeQJ0bFykgE2Y6/Q== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE The P010 (YUV format with 16-bits per pixel with interleaved UV) and QC10C (P010 compressed mode similar to QC08C) requires specific buffer calculations to allocate the right buffer size for DPB frames and frames consumed by userspace. Similar to 8bit, the 10bit DPB frames uses QC10C format. Signed-off-by: Neil Armstrong --- drivers/media/platform/qcom/iris/iris_buffer.c | 81 ++++++++++++++++++++++= +++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index 9151f43bc6b9..a0e31bff8f26 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -15,7 +15,9 @@ #define MAX_WIDTH 4096 #define MAX_HEIGHT 2304 #define Y_STRIDE_ALIGN 128 +#define Y_STRIDE_ALIGN_P010 256 #define UV_STRIDE_ALIGN 128 +#define UV_STRIDE_ALIGN_P010 256 #define Y_SCANLINE_ALIGN 32 #define UV_SCANLINE_ALIGN 16 #define UV_SCANLINE_ALIGN_QC08C 32 @@ -80,6 +82,26 @@ static u32 iris_yuv_buffer_size_nv12(struct iris_inst *i= nst) return ALIGN(y_plane + uv_plane, PIXELS_4K); } =20 +static u32 iris_yuv_buffer_size_p010(struct iris_inst *inst) +{ + u32 y_plane, uv_plane, y_stride, uv_stride, y_scanlines, uv_scanlines; + struct v4l2_format *f; + + if (inst->domain =3D=3D DECODER) + f =3D inst->fmt_dst; + else + f =3D inst->fmt_src; + + y_stride =3D ALIGN(f->fmt.pix_mp.width * 2, Y_STRIDE_ALIGN_P010); + uv_stride =3D ALIGN(f->fmt.pix_mp.width * 2, UV_STRIDE_ALIGN_P010); + y_scanlines =3D ALIGN(f->fmt.pix_mp.height, Y_SCANLINE_ALIGN); + uv_scanlines =3D ALIGN((f->fmt.pix_mp.height + 1) >> 1, UV_SCANLINE_ALIGN= ); + y_plane =3D y_stride * y_scanlines; + uv_plane =3D uv_stride * uv_scanlines; + + return ALIGN(y_plane + uv_plane, PIXELS_4K); +} + /* * QC08C: * Compressed Macro-tile format for NV12. @@ -204,6 +226,55 @@ static u32 iris_yuv_buffer_size_qc08c(struct iris_inst= *inst) return ALIGN(y_meta_plane + y_plane + uv_meta_plane + uv_plane, PIXELS_4K= ); } =20 +/* + * QC10C: + * Compressed Macro-tile format for TP10. + */ +static u32 iris_yuv_buffer_size_qc10c(struct iris_inst *inst) +{ + u32 y_stride, y_buf_height; + u32 uv_stride, uv_buf_height; + u32 y_md_stride, y_md_height; + u32 uv_md_stride, uv_md_height; + u32 y_data_size, uv_data_size; + u32 y_md_size, uv_md_size; + struct v4l2_format *f =3D NULL; + + if (inst->domain =3D=3D DECODER) + f =3D inst->fmt_dst; + else + f =3D inst->fmt_src; + + y_stride =3D ALIGN(ALIGN(f->fmt.pix_mp.width, 192) * 4 / 3, + Y_STRIDE_ALIGN_P010); + y_buf_height =3D ALIGN(f->fmt.pix_mp.height, UV_SCANLINE_ALIGN); + + y_data_size =3D ALIGN(y_stride * y_buf_height, PIXELS_4K); + + uv_stride =3D ALIGN(ALIGN(f->fmt.pix_mp.width, 192) * 4 / 3, + UV_STRIDE_ALIGN_P010); + uv_buf_height =3D ALIGN((f->fmt.pix_mp.height + 1) / 2, + UV_SCANLINE_ALIGN); + + uv_data_size =3D ALIGN(uv_stride * uv_buf_height, PIXELS_4K); + + y_md_stride =3D ALIGN(DIV_ROUND_UP(f->fmt.pix_mp.width, 48), + META_STRIDE_ALIGNED); + y_md_height =3D ALIGN(DIV_ROUND_UP(f->fmt.pix_mp.height, 4), + META_SCANLINE_ALIGNED); + + y_md_size =3D ALIGN(y_md_stride * y_md_height, PIXELS_4K); + + uv_md_stride =3D ALIGN(DIV_ROUND_UP((f->fmt.pix_mp.width + 1) / 2, 24), + META_STRIDE_ALIGNED); + uv_md_height =3D ALIGN(DIV_ROUND_UP((f->fmt.pix_mp.height + 1) / 2, 4), + META_SCANLINE_ALIGNED); + + uv_md_size =3D ALIGN(uv_md_stride * uv_md_height, PIXELS_4K); + + return y_data_size + uv_data_size + y_md_size + uv_md_size; +} + static u32 iris_dec_bitstream_buffer_size(struct iris_inst *inst) { struct platform_inst_caps *caps =3D inst->core->iris_platform_data->inst_= caps; @@ -268,10 +339,18 @@ int iris_get_buffer_size(struct iris_inst *inst, case BUF_OUTPUT: if (inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C) return iris_yuv_buffer_size_qc08c(inst); + else if (inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC10= C) + return iris_yuv_buffer_size_qc10c(inst); + else if (inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_P010) + return iris_yuv_buffer_size_p010(inst); else return iris_yuv_buffer_size_nv12(inst); case BUF_DPB: - return iris_yuv_buffer_size_qc08c(inst); + if (inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC10C || + inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_P010) + return iris_yuv_buffer_size_qc10c(inst); + else + return iris_yuv_buffer_size_qc08c(inst); default: return 0; } --=20 2.34.1 From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD5343D301B for ; Wed, 8 Apr 2026 16:44:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666646; cv=none; b=FnhjPslIG/HJhUd3A69ExyHZnpnqTxzzNo9CYPHcOzShSjT9vkEelex1s3Wn02b00X3upp0oYd+DNLj0jpQhmi8MQXcgKG53b2uqRF+C1Mvj42oKG3h4AR9uorqheiGdiHFJSdH1rY55UdvxPtLuCe64xu6WnnYkwRsJ79hXWYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666646; c=relaxed/simple; bh=c5lPlNh0EIIjXAYuZG/IE0taKr3/cGQrgHpPBW+1/eg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h7HB98+0a22/gVcz1fMdUob+U1MEESz3Lu4mdi/5i+Twz5jRIpqmMhI2g1qiFUkFZLmauDcopcV+6gUHbwB/WdgumEew7ynRzCMMTzbwrmIbcBmBs6Dj9sTF1XqeJ63Eq4bJ3zIEoMDTaUhcdQJPFkVL1BCChMJlGebD5WtSImI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=fSxqyoC9; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fSxqyoC9" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488a9033b2cso190455e9.2 for ; Wed, 08 Apr 2026 09:44:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666642; x=1776271442; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1wNBkrMYpeliqbYGaP3l0VZbhejzwqIXrq3NicZEUc0=; b=fSxqyoC9ZgYQGKjQyvJQEJZ6Vjh5pudkWLXLiIYWcxhzgm4af3BdRoHEQAW/WmKysj UtvWPizBJe2qANLuPdCrfPDnjCFmrYLa0O4AIs4KPpNc8/h5yNgal+povbwTEiJiVjn0 s3PlvU7hzcgQar+uWhvBib5AZULf3sW9d4/UUjMm1h+PvHl9jxjhrSCyoTNcrjBn3jF8 DYNIHlPO9PZkBqJZLmgewc2AhZhQjG9svINWPKqZrsXjYOGdRwGqDeSQdQAy2qVkxDPH MlHgpFcLQLsXbcsm1e34O1aYizNEnu8Cbps/7xKU9uORbILKWcdQBH1L8mrpYF62F8ek 5Vww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666642; x=1776271442; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=1wNBkrMYpeliqbYGaP3l0VZbhejzwqIXrq3NicZEUc0=; b=nExlZ+B/ute4+VOmRLVcwlo9MeeCl/0qjEdjkQ1NpPuimrcw2POCGsH+oW2mmgsTDQ 2at9JhuHOsnkzj+3t6G110ZTAmvYqtpajCJKA/rp5KTnWOBnQRvdbSNZc66ls39HW1BA JDqra+KmzBSS7bK38NRRw3UMXmqE0hN4iM38354s2iUzESAIfhEccGtfae/fL49izrFa X92xHgQntOkVIn0PDJDI3ByguZzEEr78HRJsJ8fdPxq5RXkJh6IlNgU/YBntWL6063gH Y1AGaIBaMxF5HsC3Qs+orA+moAzvD9uhq3sENsOqdTlPfoW2YhkTZCUEBhvIt1ij14lz 1Uew== X-Forwarded-Encrypted: i=1; AJvYcCUnaPZsb3U+VUQNADZ3zWqs2Tu3C/Fqb7EsS6XpS7bpi9Gf5JIz5zEgWYmonMFDP6fuDFiUaUeDeRtm0LY=@vger.kernel.org X-Gm-Message-State: AOJu0YwtrV9+8pDN9Qde01JQW8txEGL6WPkqT7w7w/gLE9qo/Gzr29Qf x3zuaOmkpkvYPKfsbIDUYNFt6B0BJnGRT835BVFSVp0W/rYtmXIdpVI1rmVknQj9Bs8= X-Gm-Gg: AeBDiesTOxGfX8vW3ByN8MY7VZAvXaNq5CvsyV1cKLKaA235Wy6o0B+V3dzOiozcxFX KMDxsZfmJiOme3oXc2z+GUrhKLdGCA/RVfZ557z7N9pLDwKDJQp/h7WbKN/MzNzeZRCKr9g1Ton OaRWWs7SAq8JEdDsjs3IKQ3lt6jOUyD/nG/TZrui55fB2G5Y7MNqtvmlOqThh7xkoioDD4zx5xZ 9yCqFP/n+rt4lJZjirZx5C05r0BoDL7LM3XK1Amq9PgVGkpjvlNNQQ4Tv32zJGAnM0/0Rm/dNUe CSrEiJ5aEljCWWGCrsa1aVtPb1ewUFhmXH1isK4QzVi4xsZhlnGK2SwyM2gvas/MOgjgHB+UJ6r R0+iIey4Xxx3ZqqWDY7Y5mTlu0ve3/s65Rt/a3uPKQS4qTDNw1f9nr6cjCxPG0ECbqQxQML+gUW qzrMeLLHTQJUqIaRfMPgpPBv0et2bB0Wh+113pGQucyBiH X-Received: by 2002:a05:600c:4e86:b0:480:4a8f:2d5c with SMTP id 5b1f17b1804b1-488997c9b69mr290314325e9.29.1775666642079; Wed, 08 Apr 2026 09:44:02 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:01 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:43:55 +0200 Subject: [PATCH RFC 2/7] media: qcom: iris: gen2: add support for 10bit decoding Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-2-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=6275; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=c5lPlNh0EIIjXAYuZG/IE0taKr3/cGQrgHpPBW+1/eg=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXM4v2u7WSEOrvO6Ai6v6Laxvmc1CiZVsj0+rq1 8ktP496JAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzAAKCRB33NvayMhJ0QlXD/ 91FiLAjcUjCPZnD5YHGbGjqKonIrG7+GFMAXEJaURCZI7xrew0uCkVv/jD+gnl275gJUNxVOKXlnCq ZV5oyNWKsua93VGk0T0L/LunOoQ1NDNq6Wp9YRX33OsdqApS0WlWRJ/XlTEGl94ESL+3IL/BjxXng3 zfZv2Eed9Y2TVx7ccHUMM4BDN9a5aqpLRU8DCBOUbIYZHa/G9aHvVrVIG6JFpNC6THyaApiGaMaqwr 98eC1QKSG0lxiDJWwNmdLLWIIjG39Jty6fnD4rfBnT0WcC8unTmBdBv5YuvBkIr6FkZ0kPpEIvBYTI rUYmVBEHsEAS6gE+KuZouBMrcsvDPe327b2fhMCq6HZaCSk+mokFy3tCrmrSXlJ9gAcfoInUj5pNZ8 pnpcI1ixxs6Zspz+gx3JkNJDSDQfhMOr9Zf8NopVAs5Qgk48qskzYMBskUp8HqrR/AdG1UjuOffCt4 2rK8Olz3yoTv/1bKO6PjkXCvwi9Ko0ZRau2hpVnqtI0AwqRIdw30cI2uFjDQRcuzX9z6euCc34Kdl0 PLfqkRd0MpGvidwd4uw0ZV35XxqRA8TV+5fBOpLkuJnHoPa3ymCno8mpmNT2CfmmEM/w4uSH9MDFYS US4JgHKlOMDiOu8S5daaXVmODG84bBw6FlN0uMXsZKrDs4Ch9hoPs9z1UJNA== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE Add the necessary plumbing into the HFi Gen2 to signal the decoder the right 10bit pixel format and stride when in compressed mode. Signed-off-by: Neil Armstrong --- .../platform/qcom/iris/iris_hfi_gen2_command.c | 71 ++++++++++++++++++= +++- .../platform/qcom/iris/iris_hfi_gen2_defines.h | 1 + drivers/media/platform/qcom/iris/iris_utils.c | 4 +- 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 30bfd90d423b..8e547e390fa3 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -481,8 +481,20 @@ static int iris_hfi_gen2_set_colorformat(struct iris_i= nst *inst, u32 plane) =20 if (inst->domain =3D=3D DECODER) { pixelformat =3D inst->fmt_dst->fmt.pix_mp.pixelformat; - hfi_colorformat =3D pixelformat =3D=3D V4L2_PIX_FMT_NV12 ? - HFI_COLOR_FMT_NV12 : HFI_COLOR_FMT_NV12_UBWC; + switch (pixelformat) { + case V4L2_PIX_FMT_NV12: + hfi_colorformat =3D HFI_COLOR_FMT_NV12; + break; + case V4L2_PIX_FMT_QC08C: + hfi_colorformat =3D HFI_COLOR_FMT_NV12_UBWC; + break; + case V4L2_PIX_FMT_P010: + hfi_colorformat =3D HFI_COLOR_FMT_P010; + break; + case V4L2_PIX_FMT_QC10C: + hfi_colorformat =3D HFI_COLOR_FMT_TP10_UBWC; + break; + }; } else { pixelformat =3D inst->fmt_src->fmt.pix_mp.pixelformat; hfi_colorformat =3D pixelformat =3D=3D V4L2_PIX_FMT_NV12 ? @@ -517,7 +529,8 @@ static int iris_hfi_gen2_set_linear_stride_scanline(str= uct iris_inst *inst, u32 stride_uv =3D stride_y; scanline_uv =3D scanline_y / 2; =20 - if (pixelformat !=3D V4L2_PIX_FMT_NV12) + if (pixelformat !=3D V4L2_PIX_FMT_NV12 && + pixelformat !=3D V4L2_PIX_FMT_P010) return 0; =20 payload[0] =3D stride_y << 16 | scanline_y; @@ -532,6 +545,57 @@ static int iris_hfi_gen2_set_linear_stride_scanline(st= ruct iris_inst *inst, u32 sizeof(u64)); } =20 +static int iris_hfi_gen2_set_ubwc_stride_scanline(struct iris_inst *inst, = u32 plane) +{ + u32 meta_stride_y, meta_scanline_y, meta_stride_uv, meta_scanline_uv; + u32 stride_y, scanline_y, stride_uv, scanline_uv; + u32 port =3D iris_hfi_gen2_get_port(inst, plane); + u32 pixelformat, width, height; + u32 payload[4]; + + pixelformat =3D inst->fmt_dst->fmt.pix_mp.pixelformat; + width =3D inst->fmt_dst->fmt.pix_mp.width; + height =3D inst->fmt_dst->fmt.pix_mp.height; + + switch (pixelformat) { + case V4L2_PIX_FMT_QC08C: + stride_y =3D ALIGN(width, 128); + scanline_y =3D ALIGN(height, 32); + stride_uv =3D ALIGN(width, 128); + scanline_uv =3D ALIGN((height + 1) >> 1, 32); + meta_stride_y =3D ALIGN(DIV_ROUND_UP(width, 32), 64); + meta_scanline_y =3D ALIGN(DIV_ROUND_UP(height, 8), 16); + meta_stride_uv =3D ALIGN(DIV_ROUND_UP((width + 1) >> 1, 16), 64); + meta_scanline_uv =3D ALIGN(DIV_ROUND_UP((height + 1) >> 1, 8), 16); + break; + case V4L2_PIX_FMT_QC10C: + stride_y =3D ALIGN(ALIGN(width, 192) * 4 / 3, 256); + scanline_y =3D ALIGN(height, 16); + stride_uv =3D ALIGN(ALIGN(width, 192) * 4 / 3, 256); + scanline_uv =3D ALIGN((height + 1) >> 1, 16); + meta_stride_y =3D ALIGN(DIV_ROUND_UP(width, 48), 64); + meta_scanline_y =3D ALIGN(DIV_ROUND_UP(height, 4), 16); + meta_stride_uv =3D ALIGN(DIV_ROUND_UP((width + 1) >> 1, 24), 64); + meta_scanline_uv =3D ALIGN(DIV_ROUND_UP((height + 1) >> 1, 4), 16); + break; + default: + return 0; + } + + payload[0] =3D stride_y << 16 | scanline_y; + payload[1] =3D stride_uv << 16 | scanline_uv; + payload[2] =3D meta_stride_y << 16 | meta_scanline_y; + payload[3] =3D meta_stride_uv << 16 | meta_scanline_uv; + + return iris_hfi_gen2_session_set_property(inst, + HFI_PROP_UBWC_STRIDE_SCANLINE, + HFI_HOST_FLAGS_NONE, + port, + HFI_PAYLOAD_U32_ARRAY, + &payload[0], + sizeof(u32) * 4); +} + static int iris_hfi_gen2_set_tier(struct iris_inst *inst, u32 plane) { u32 port =3D iris_hfi_gen2_get_port(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLA= NE); @@ -620,6 +684,7 @@ static int iris_hfi_gen2_session_set_config_params(stru= ct iris_inst *inst, u32 p {HFI_PROP_OPB_ENABLE, iris_hfi_gen2_set_opb_enable = }, {HFI_PROP_COLOR_FORMAT, iris_hfi_gen2_set_colorformat = }, {HFI_PROP_LINEAR_STRIDE_SCANLINE, iris_hfi_gen2_set_linear_stride_sc= anline }, + {HFI_PROP_UBWC_STRIDE_SCANLINE, iris_hfi_gen2_set_ubwc_stride_scan= line }, {HFI_PROP_TIER, iris_hfi_gen2_set_tier = }, {HFI_PROP_FRAME_RATE, iris_hfi_gen2_set_frame_rate = }, {HFI_PROP_AV1_FILM_GRAIN_PRESENT, iris_hfi_gen2_set_film_grain = }, diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_defines.h index cecf771c55dd..68f849232906 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_defines.h @@ -118,6 +118,7 @@ enum hfi_flip { #define HFI_PROP_OPB_ENABLE 0x03000184 #define HFI_PROP_AV1_TILE_ROWS_COLUMNS 0x03000187 #define HFI_PROP_AV1_DRAP_CONFIG 0x03000189 +#define HFI_PROP_UBWC_STRIDE_SCANLINE 0x03000190 #define HFI_PROP_COMV_BUFFER_COUNT 0x03000193 #define HFI_PROP_AV1_UNIFORM_TILE_SPACING 0x03000197 #define HFI_PROP_END 0x03FFFFFF diff --git a/drivers/media/platform/qcom/iris/iris_utils.c b/drivers/media/= platform/qcom/iris/iris_utils.c index cfc5b576ec56..26f51a0ccd04 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.c +++ b/drivers/media/platform/qcom/iris/iris_utils.c @@ -35,7 +35,9 @@ int iris_get_mbpf(struct iris_inst *inst) bool iris_split_mode_enabled(struct iris_inst *inst) { return inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_NV12 || - inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C; + inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC08C || + inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_P010 || + inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC10C; } =20 void iris_helper_buffers_done(struct iris_inst *inst, unsigned int type, --=20 2.34.1 From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 703F93D2FF5 for ; Wed, 8 Apr 2026 16:44:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666646; cv=none; b=QCyVMBnlTsJwAdR9t+kdhTStnitZwMOepjZctfd3Gj5XF9vJ6tuhpNewJw5BCzgF+sXheNv9ZJMqZ5KRTa1EyNEJ4TBeUfbbM+YWj+/gsYSqCHLVAOYbU6FLTF+Xpy5T7JqYdzJIe94dMfeJw30bDYdjGhcPvl+ATw4WeDFcP1U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666646; c=relaxed/simple; bh=iKi7TWSPAcDpk+ligDyHGES5lhOh+3q0bJO5uJcl3nI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=obEvqyofcM0bpUkWFPxXRtPvIHFnjy8TPJT/l7NTlC/nqhaZyDgvYV+fD5kz9UCXw7CynXLAvLySTpD0dAaAJY9Io+CEeN2IkpmTVoVK7Fr9f9V9aW68Bz29sSCoxN19FcfUEVv+PiYqsjT3QqKTcNZvUiHiuj97SyeMJSVjX5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=DdPzXxwi; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="DdPzXxwi" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-488a29e6110so189225e9.3 for ; Wed, 08 Apr 2026 09:44:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666643; x=1776271443; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Rg9pB3aOuDW8Qzx1oWzCiWsvOqiQ1Ol75UriDwggpec=; b=DdPzXxwiQ9Uvr8ruAnTsxiDeoUA/EiVcd+4yAaZM2Yiwo1RzHphVftuvCZT6nZfW8n EmoZeuu80Hhl3/GtVTSI77QyP2p2eyHT4fk1sAk/i4Sa6qLscM+3OJ2gYb8ibkZVN8Jt 5fH0wGKxVu+nBhH+U8jcckEAOG4gT321sTVFPXCLwrusBuXqYgCwIpzVC3FY5FvLVSIA lAIESetyGZe2jTguyCSc0jrRYTdSqT60V8DMgwel7ikSeoI61uNSYciNS3uxstXT2MW+ 0GWCyIOs7pcotp6O1xlRPK2LxjorPBLpr2yHLSpFcdGTkgzIX9ZK7KSvOAbtH2UBNDAs wj9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666643; x=1776271443; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Rg9pB3aOuDW8Qzx1oWzCiWsvOqiQ1Ol75UriDwggpec=; b=BIe1TfUymb5BSyZOTIN1qEXKGrQwTyrBkthR1ru9ZeVxr0DQWWdswSkpL+uSanw+2z Q0CE3XBGIQkpv96C4NMl7+bpyOZeJ84tlTG35q/mCYuCmi21Xs9gf4MmIbUMBkp94zET ksWqXYGnXFFt8oZbX21j2MCUe0lauRXbZBdOvdmeV5urv725C49cum6BM2D5NHEAW6Jx dTQK9iSOjKBPLwktLRNv8bEYWxZHghJePHomVgjPXRnONaPnGsd2v1NJilBfcG668lvq b/snGbHI05vmqONnqen52h9O2YwYBXlyajhs+SX2m2wNpD5WUFrGE4Ov3/xZLA4Aq6Y5 vQyA== X-Forwarded-Encrypted: i=1; AJvYcCVs02xfaBqcrfOFzdUAX3rj5PPdMDmIs6fYF0CNnNNAbGk6DrNQH0U6WzzdOlvJM/nWFgSc5LdbEKEIrmU=@vger.kernel.org X-Gm-Message-State: AOJu0YwhoKJW8eCvmTvR7VT2prz3KJo8E6P9G+5xbI+sMapMxfwg1VY9 aXW/5AMuOAOPfY0FQz/W0YNwqrMHIw9w/RJT7ylJar1nhrAdfJN6xOiy4EZXexWavqk= X-Gm-Gg: AeBDies/GSDuILMKCE+OvL5/GrwG/EwZVGWHg+friU42XQ/dD+NkqlDiMhE2skF2DHM uDKvMlKXL6KOJvMX59UFUrNUJcEy8pjG2nuX+u3K/g/TpL3mFHw8dZCBk+VsYyi1NDopfXCRYOP jubr9kwiZxtA5kkcByKjFyxKpwZ2DOWKMOlF7YkxvfEh32jaGqn0zYUAC9evQIWgZhMe6nCZdnA 8htGUoAl2xle/f+VVLYs6b1Jc1/OV/dL59LeW/Jz3ds9J/fFcPw+IWSkCJKgw0lEXKPLLLQilQe dbJ7V82ndnqEiwPotLfS7QTyLBPbZ7WmIQAtS8YI+IlBtpLOff+Le7Lr/paA5yPGdaIw/951qqQ jM56XaKSyJuIzpD2oKGOXpG0qLsKbJCA9Z26Ak2lsuUFrIlwZ73JucE3Q7z5eKifRGsbGlh7paX dhrClHhD9y+6+Lnek1WKRSAwQC20Hr5bisiWTrmJVyy9CH X-Received: by 2002:a05:600c:5292:b0:486:fe39:28b7 with SMTP id 5b1f17b1804b1-488996f08f5mr335335745e9.9.1775666642816; Wed, 08 Apr 2026 09:44:02 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:02 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:43:56 +0200 Subject: [PATCH RFC 3/7] media: qcom: iris: add helpers for 8bit and 10bit formats Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-3-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1884; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=iKi7TWSPAcDpk+ligDyHGES5lhOh+3q0bJO5uJcl3nI=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXNQ4DoU/f9cTIzw3Zjk9DmLesZVkIfgyWgWDAE +72+T9yJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzQAKCRB33NvayMhJ0fZZD/ 99o19TbE4D/gFQ/FM6ntLAihUWjAw4DA8q5FwvJkL6T8pbMB/UpqGQDFg1pfhksqCqpyb2STYyd9yl DMKGMb5Tb+1lbitkP1GSpscdOeUXg5oEW+eVR33aL75iw9dr39CDBAfTPYHVX/hx9OSVkSULgPTTiR o2B3oDlleXDdATt4GKIdXsHa9Ho7Uhmdr4DOGaGaoT2SKgHHNN6dHVQjq7sk3R+THRfMe4mfkXUhNx O4SMZ6K9VLSsERFd8VzTIl4EELDxVb0h5VRsI2Y9bB0iKHJltQCNuYSC/ObcxvpGH/A3K92c1lGp8m RRJp09fma8Q8D9EeWWEse3Ih8Lo0AndafKqy4KXe8tghxCqzb+GFqBIfq+tD5ZEANtvS9E6NN6GQkW 1RPA9nTG1L5BMaoEfzKUUnj7ZGgKRzBfbQTawCqiGlpCF3KKtlqPA4fyV7Jx5QkwQ14Gr0W3nF8k28 qAQs70Io536hQOlbh5OWw7qW7oa3ejTl81XB1V2xLNe1foEp8L9pQnHVduKp9JMhbqTAlhS7pk9Hu+ KD5u+xvM4zrmwgoKaWwlgqC1nfTwIVqAIKJqEkUGvPi82cN+rCmJ1vX74ol/ohRBk306DReqkEr6zG Efj9V/sMPl70FvLKoFSTywiXTh5PwuI/eqAyVji61pal1VHMnWUSACIdQE4A== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE To simplify code checking for pixel formats, add helpers to check for 8bit and 10bit formats. Signed-off-by: Neil Armstrong --- drivers/media/platform/qcom/iris/iris_utils.c | 12 ++++++++++++ drivers/media/platform/qcom/iris/iris_utils.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/drivers/media/platform/qcom/iris/iris_utils.c b/drivers/media/= platform/qcom/iris/iris_utils.c index 26f51a0ccd04..c75dcb8e671e 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.c +++ b/drivers/media/platform/qcom/iris/iris_utils.c @@ -40,6 +40,18 @@ bool iris_split_mode_enabled(struct iris_inst *inst) inst->fmt_dst->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC10C; } =20 +bool iris_fmt_is_8bit(__u32 pixelformat) +{ + return pixelformat =3D=3D V4L2_PIX_FMT_NV12 || + pixelformat =3D=3D V4L2_PIX_FMT_QC08C; +} + +bool iris_fmt_is_10bit(__u32 pixelformat) +{ + return pixelformat =3D=3D V4L2_PIX_FMT_P010 || + pixelformat =3D=3D V4L2_PIX_FMT_QC10C; +} + void iris_helper_buffers_done(struct iris_inst *inst, unsigned int type, enum vb2_buffer_state state) { diff --git a/drivers/media/platform/qcom/iris/iris_utils.h b/drivers/media/= platform/qcom/iris/iris_utils.h index b5705d156431..35337c5da005 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.h +++ b/drivers/media/platform/qcom/iris/iris_utils.h @@ -45,6 +45,8 @@ bool iris_res_is_less_than(u32 width, u32 height, u32 ref_width, u32 ref_height); int iris_get_mbpf(struct iris_inst *inst); bool iris_split_mode_enabled(struct iris_inst *inst); +bool iris_fmt_is_8bit(__u32 pixelformat); +bool iris_fmt_is_10bit(__u32 pixelformat); struct iris_inst *iris_get_instance(struct iris_core *core, u32 session_id= ); void iris_helper_buffers_done(struct iris_inst *inst, unsigned int type, enum vb2_buffer_state state); --=20 2.34.1 From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E6003D413F for ; Wed, 8 Apr 2026 16:44:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666648; cv=none; b=Bu7h6VwddIyUCVTwpaOHk8OYUZuknlDa1bfn8biXKcbsBWski9X7DqxTiLPp7GDNniM+xEaJpYAtFqEEaCfg5plrC2eEKKnlphyZLeMGbdkdyofU3g678qacjnj0QUl86DD40O2kJCZnO0QF6Vov+5VdQQXIxdHwtx2xvw03PR8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666648; c=relaxed/simple; bh=tKZadNj62OmxNTSuUaJwBgBko5grNq0eWhaWbj/Mau4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aCbkvIf6nx3lVZs7a9fWe367GjD7SBUUJZPYm/00Ea2/b2Ydw0eX3RLK6taCjL+E3k4dp3t5aFvCvZLD+62lDKwyAqDP2QbSf4+xlaKWwYDHeeeQWzE32gmpldC1qQplDJVt0I3JC1bxnXEQDYNW6kvLD/baXgnddwBE8+rejGQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Pk99o4D+; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Pk99o4D+" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488a041eae5so210515e9.1 for ; Wed, 08 Apr 2026 09:44:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666644; x=1776271444; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=8GSrZhGrMMS7PLI4vCkRGCJCpMffY00f+pIcf7FWs54=; b=Pk99o4D+2NQKZKVzL5vAwp/nQ5WPMkeqvDsfI01dx1Qexug5LJtU3MRx7vCD1O9Myo QOqZa9o58vd1qSRJUolaKzSswpTuKIcg8Wsba1dN2MFrawGfNdI6q+LX2IkumlrXjjPk dIfKlfYfrvOVL5DWKbksr1+oVEd5W/da6sOjiYn79Gvw1cZoa9bymDEi5ukPgOGuWtnI bOMOetwNlvOJRazPQONBUJAcMkGUqHwXkJdFW8/MIHZ7jHCy59DhE3V6NjLY/ij6T/tW oy8EpjGcvS5fyM2fZHot4tKbRpDYMwwLFKlwFXQkhIoZ5OSnGhlCNFPCMCwW2fbmtum9 cMEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666644; x=1776271444; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8GSrZhGrMMS7PLI4vCkRGCJCpMffY00f+pIcf7FWs54=; b=VzT9/ipxq98RU7hcgv3Ec4AWFtb95kDhSHbF3w9k5haiB8eQ0TeE9g1TaPIgeIR8kc Np+/NBIjZkIUG9H/yxgtx++95JfabXFQbY4/xAoci24dcDbNwNFe3Ff+t/LOj0UrLF0B zUJAtT2CS1DDeCHdWLVYVBgMIqfThbQmjqNbScj0drLWUulZqz/uniJqRHptpQj4MaCw 6Jf5tw3qc4W/9SQ3aY/mWW6DaAgjCFs3/v7qUIeEHFZnCPY1b1lhGAmnHCKBLP13HEJR 683cTyZT4tly4qSsvUFm/VRpH2XJCQGtpvmI0ae5jAV5XzX9+rkCYCnSr8iYHXoHeGtl LyCA== X-Forwarded-Encrypted: i=1; AJvYcCXyw7T1PdDqv1MlaipKLy0cL+4YrAJ3496mUxB7A1Y24gfO+MMJExDVr3o3KwNUFp8aMAqFul8MFI2SeLA=@vger.kernel.org X-Gm-Message-State: AOJu0YwBON6zjFMAChmC7en9dnymZMjDJs2PEiOqbbcpxALIn/nzHFPV SBHIyMNDFEARP7lmsrs3shQBRnhp44kczd7K2PjBKuKOERiQdL+ig+Bm9H7wcfvfuas= X-Gm-Gg: AeBDiesxvksr8dJ5ADpgAUPMc3MY19QSkTx3UuSVdSGnMsky99i++8YmrBMLdHbYmfD E2YdOBkwSs44EY1+qlhxKiWVcW6udJZhoRR+lRpynObFlqQ7ENj9F2u55tV7oVUoGE4nK2UlOpM 2CVfsXvddx0g+W4nL7dO5vbmYD4j3DCJ026SNGi2N/k8sK2GDinaDJnifGncN9SJUG+DCh7WGDE f+SASAHgm9WCaAxC+ft/hgaoGvXEkqDloRSTJe3inWfQgBcTofUIcauDKNA6zORRZqJIVzPiY48 mG6bIHoX/+dsrAR+G/ItsMzXFnJVzhGNYyTHx6tnyHoAdZ0Rj/yYe8xyXfHfKt+UAJk43qNL2mN tqTCtfxEh9SCUIIM1rV0vU5nmFZOJbb484UbLi4tJvIsTYeIVIdV80kpxaFMA0LVF1TjPSj4bgZ yLGlr2VWHIZzEGr8mJ50To6KtYfCaFl1AzV00ELymHEfd3 X-Received: by 2002:a05:600c:3042:b0:488:a25e:14b2 with SMTP id 5b1f17b1804b1-488a25e153amr166289505e9.9.1775666643572; Wed, 08 Apr 2026 09:44:03 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:03 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:43:57 +0200 Subject: [PATCH RFC 4/7] media: qcom: iris: vdec: update size and stride calculations for 10bit formats Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-4-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3483; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=tKZadNj62OmxNTSuUaJwBgBko5grNq0eWhaWbj/Mau4=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXNMb8pKfGauCuFVZFlR4JhylXbwSLWdV8fANt2 6pdcNw2JAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzQAKCRB33NvayMhJ0SmHD/ 9uE0edCR7hU2yqbFPp85j+X6H76dYWMU2eX0QXvDY9OVIVrO0RRQ/WKxchHnm5wSrYg+6ltQAGiTbI NCF0HcLBM46zsGT9P7CDHgzfuLZ0Sn9Dq31wNDSiBVRUitTpX3RX9AGnuN4Y4sFsQP6Ic4rvrpV7pf v21P4THh/VnODzwnBooxLVaRQk+90Q0OAyb6wbRr0484TIsNPcGmIbvFL3Si1Qeg7DrotMa0kDLDwK ttS8Ae+9Gl0JoJKIRxx/8ug3tR/eiZCVFIdBW8kIRUAwWMopfbBSRw+GU8FCnkAcCGJFHVT1gcdQ6B NQp8M1CcreBonDy/rj6zsc7z+LIacLYYcQwbFegRz77caeg1p+BHMa2sfFi4U6nDy59akozxuMdy3G OxUu4BdL7ZCg4q4/76f3xlszpsJ2LzvQFctwptY875oXTSmz1uq44DXsXZOwSugLLgsw7L6ky8Mk0W RqpdG3TlqzvRV+gh0aCuecyhiSPk3kDyH02R7/akE9wlTf08x0IkkyfWHWAmXEv/DWRb142Ju5timh Ua2CGHRx9Bgki8tQwiTxxrYcczAwSkRctVxobYu2zUnD4BK2n5YtB1yj1zw7zFPKLXAfAqOtjjKt1o PL46vun6V7vCy5tHplafxKnfGj6lB0wQBsZ/Z6bEj0+24OhyjJXWpjPA/8yw== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE Update the gen2 response and vdec s_fmt code to take in account the P010 and QC010 when calculating the width, height and stride. Signed-off-by: Neil Armstrong --- .../platform/qcom/iris/iris_hfi_gen2_response.c | 19 ++++++++++++++++-= -- drivers/media/platform/qcom/iris/iris_vdec.c | 21 +++++++++++++++++= +--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index 8e19f61bbbf9..d268149191ea 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -542,9 +542,22 @@ static void iris_hfi_gen2_read_input_subcr_params(stru= ct iris_inst *inst) pixmp_ip->width =3D width; pixmp_ip->height =3D height; =20 - pixmp_op->width =3D ALIGN(width, 128); - pixmp_op->height =3D ALIGN(height, 32); - pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(width, 128); + pixmp_op->width =3D pixmp_op->pixelformat =3D=3D V4L2_PIX_FMT_QC10C ? + ALIGN(width, 192) : ALIGN(width, 128); + pixmp_op->height =3D pixmp_op->pixelformat =3D=3D V4L2_PIX_FMT_QC10C ? + ALIGN(height, 16) : ALIGN(height, 32); + switch (pixmp_op->pixelformat) { + case V4L2_PIX_FMT_P010: + pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(width * 2, 256); + break; + case V4L2_PIX_FMT_QC10C: + pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(ALIGN(width, 192) * 4 / 3,= 256); + break; + case V4L2_PIX_FMT_NV12: + case V4L2_PIX_FMT_QC08C: + pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(width, 128); + break; + } pixmp_op->plane_fmt[0].sizeimage =3D iris_get_buffer_size(inst, BUF_OUTPU= T); =20 matrix_coeff =3D subsc_params.color_info & 0xFF; diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index 719217399a30..ca0518c27834 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -272,10 +272,25 @@ int iris_vdec_s_fmt(struct iris_inst *inst, struct v4= l2_format *f) fmt =3D inst->fmt_dst; fmt->type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE; fmt->fmt.pix_mp.pixelformat =3D f->fmt.pix_mp.pixelformat; - fmt->fmt.pix_mp.width =3D ALIGN(f->fmt.pix_mp.width, 128); - fmt->fmt.pix_mp.height =3D ALIGN(f->fmt.pix_mp.height, 32); + codec_align =3D f->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC10C ? 19= 2 : 128; + fmt->fmt.pix_mp.width =3D ALIGN(f->fmt.pix_mp.width, codec_align); + codec_align =3D f->fmt.pix_mp.pixelformat =3D=3D V4L2_PIX_FMT_QC10C ? 16= : 32; + fmt->fmt.pix_mp.height =3D ALIGN(f->fmt.pix_mp.height, codec_align); fmt->fmt.pix_mp.num_planes =3D 1; - fmt->fmt.pix_mp.plane_fmt[0].bytesperline =3D ALIGN(f->fmt.pix_mp.width,= 128); + switch (f->fmt.pix_mp.pixelformat) { + case V4L2_PIX_FMT_P010: + fmt->fmt.pix_mp.plane_fmt[0].bytesperline =3D + ALIGN(f->fmt.pix_mp.width * 2, 256); + break; + case V4L2_PIX_FMT_QC10C: + fmt->fmt.pix_mp.plane_fmt[0].bytesperline =3D + ALIGN(f->fmt.pix_mp.width * 4 / 3, 256); + break; + case V4L2_PIX_FMT_NV12: + case V4L2_PIX_FMT_QC08C: + fmt->fmt.pix_mp.plane_fmt[0].bytesperline =3D f->fmt.pix_mp.width; + break; + } fmt->fmt.pix_mp.plane_fmt[0].sizeimage =3D iris_get_buffer_size(inst, BU= F_OUTPUT); inst->buffers[BUF_OUTPUT].min_count =3D iris_vpu_buf_count(inst, BUF_OUT= PUT); inst->buffers[BUF_OUTPUT].size =3D fmt->fmt.pix_mp.plane_fmt[0].sizeimag= e; --=20 2.34.1 From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEE3A3D525E for ; Wed, 8 Apr 2026 16:44:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666647; cv=none; b=anOxn6AUUiou+gwyZr7KnC1b+NJD6V3g6cUJSTN5MsRJrDxjQFqSGt9Q19DphW04FMIbQP8slFqCkw+zALpOz9QNVe3FRqndyEh/xXWfes74ztZHp15jf4dKLqlsoTS6uxflHDTssB4wyRtMfREbXkj1U3Kb+NlQdoGKjz01tbA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666647; c=relaxed/simple; bh=xazSD4Yv245KY37BgsFnQAh7f/tkJkVNCQUA5pHRtr0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YgoQouDMawTJBcWpVoQ2lKpaMP+J5UhkLT9cihMZn2mxoTPHU65KeY4HGiaRnOtx5EbdK2UyN+WqJKOcTG2z3wAvApsXwiY6GH5Ig/9eb1j+939xTs4UqypyWqnFOwnZW9QqWokJ33elG9AvIP8zwum0GHRGSQ2ALQJ42bYTKCY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=MW51CFWV; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="MW51CFWV" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488b3f8fa2bso14581445e9.1 for ; Wed, 08 Apr 2026 09:44:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666644; x=1776271444; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Tt80I13WEAfrEdUiW4NBG/10KMkr7uGie5ExwRhd8cQ=; b=MW51CFWVjnoVg77gqmcE1ZBb9UsBRRnbFHaqvZlbuCu+fMPwxEkn3u/Hh8jrxyYFad RbQqSUlTwC6e92r1OVbCLNQ+ir6lm1unD3MxAIDxk7gkx0BsQd0LIYbdnGozt2PdqBgc 9+NF8J3cX5bDCXZTDGvgwhDp0ST/6cnmnJC9OpEU8kDuG8VkFXCKm5jY8BD0sXQzw6s4 dPjDB1wMHSwcFOKQ8iHZF/ZBE3I+zzWxpZBRFvTf9HVgCVQi95yksN0bXqrAjHEpYRsg iTC3ZkGAkcPH07qItobIGYzBYCAA/z24K1CpToHKn+u+9LwSAllbJ2p+XhnIpM1sdk4K 2A8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666644; x=1776271444; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Tt80I13WEAfrEdUiW4NBG/10KMkr7uGie5ExwRhd8cQ=; b=AcmoKe2RqnMvJ8od0CWXJTXdhfCungm9uv5vi+4UTQWpVW/SLEyrdT50v4DsG5tS9I zkslaN2sKLp4FwtHOG2QmBNeNvGjgKEnWjHb992BsPP/fOhk3xGMJ36LK7nTVscb+T6g /oXRFhTqVGo1yO4ZRy1Ar4jVWjcb22Cfv48IhgL3lCiEL8zvxJumqLa9lnLHBcegbZd1 FXfrUjCJEz7JfuqrTotUUNfh8iWqYRgS89lCp3pKKzZ9ft0Fo7XGcS3US1bWZFg8jqIY SCvGcCZ1u+8hW4+HKB8Cda+Md9+MWkt9qARFS1+gXOgtguTyKZcl7JGjeVEDpkFyEaOE 2Y+A== X-Forwarded-Encrypted: i=1; AJvYcCV/as3Rv4kirlZHW3uwtT7Fp6XeBH2VoisbZibP1c1Oc4zXhBaEl23nRs3frJHWxZI3xbaBggqagw5mzKk=@vger.kernel.org X-Gm-Message-State: AOJu0YwWMV3krj4qREZbR5zl0o3HFOUXOpkY8FD0bpCWzya0ra9MvM6E 2xL1iMrbOxtuag6y/jWLgpiMgaOWZxCROowflzmI1i9V5hQsmNPU7e+CcMtO5bDI48g= X-Gm-Gg: AeBDieviDltdzlVF709jEb6kCmIVLKKZ3w7/LIbKEIzSCl5ovhx+w5luyekzK9s3QcG Yb7p5/zKevj+N9PHtdXvdS7IaBjRqsIF/jYeJQZ74fm/50THRfcsXbchyg4YKL++z0Z66Xy9Z+B 0C+lJv133fRBKxkmXiVWl0bULGGQm0zJLOBN9C+6NyBf8B/fJwHI1ULHUWSucm9wfdNO3EUPfRv h+2Vl6rCgbX/UKvDJKwnEqKIRdWNxbLDieCtZyc7CR0VmAg5aL5QzYQvHObZDnyoUyt40ZmV30B 9wdb4oVlkbTfQGad/dSysbwqkLcK/MVbbfNrpDq521wxP+hkeEd+hScK8EylN6F680pqAysChii sy8hJpLowOECX3jr7LTn7ORlHl3NPXPFpeF2As5Z5lePolgAYw7p/i0BIuZA7VfsBJESB+VWSyx GOG1FOZ2didOpwDwvgrHk6wLZVvE7QvoD10ybq6YkF/4A6QkBvrKF0tLk= X-Received: by 2002:a05:600c:3f1b:b0:486:f893:56c6 with SMTP id 5b1f17b1804b1-488cd55c1a2mr2530945e9.10.1775666644286; Wed, 08 Apr 2026 09:44:04 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:04 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:43:58 +0200 Subject: [PATCH RFC 5/7] media: qcom: iris: vdec: forbid g_fmt while waiting for first source change Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-5-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2608; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=xazSD4Yv245KY37BgsFnQAh7f/tkJkVNCQUA5pHRtr0=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXOe6GwBBtHt9CGgF65M9VjaQ1YjU6ALN9SLCST PIXxzyCJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzgAKCRB33NvayMhJ0YsdD/ 9kdRLESFBv4hAsKR/DqBDpEyMqzVHCOKboz8zLA1yDEW0HwOigNOBy8SNAH/z0ttuj6+FwPjzaHMWf s1lOF6GUZB3Gbr7aJ7Uenc9YcYlYmviQpKzlYU8QJxvFh2yj8r4qPDfYPs5jCXwpp+eDhw2cwsickZ YvH0EwwS314VT+a2KVnybIEPoBxNN0VyWhhCM8EhsY4REvl6/2Yso9P44Dcs7GSVusMX1Uyh3pv+lJ 1Z1i4q5KC2oZqNzY/Zjq1t2j0JTE7hN+jwSvtyW34hdhA7jGHWtVX83O/sgCZ5wodKPtE5K2UIlfE7 JLROVsYLt4mq8YQ25nR5Rhu2GyWYnh8HliN47lbv0LnKNXLox8Di2XkQpLmP+fF+lbrX9Auvjztx8q ZuKzZB++GrBH61ENmlFauOJBy9b9YgMckMSTGYTJCduGm0ZikhEkQnlDZ7b7ViwzbOpviI5zibalgJ WodHTkGMwSlS6awOTmtTtWYK2q5PorJHNlKoSRnOwJwbPY+V1nyrq0ae5erHRhBeehL+9haqwLdXLX DCtzCI/NGkeEuCnvwbT3dhXulSRq2N/qVBXc6r1d/1ccwFIq2EPLubDUfMfGd3pVudTz1RBy0YqHL4 oGHLfynvhSnIHPzEroZKrdQziyv9e/wfyfz04qP6GbI8OHj17mOGmfnx70DQ== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE When decoding is started with only the OUTPUT queue, we're waiting for a source change event from the decoder. During this period, the CAPTURE pixel format is not yet known so return -EINVAL. Signed-off-by: Neil Armstrong --- drivers/media/platform/qcom/iris/iris_state.c | 6 ++++++ drivers/media/platform/qcom/iris/iris_state.h | 1 + drivers/media/platform/qcom/iris/iris_vidc.c | 14 +++++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_state.c b/drivers/media/= platform/qcom/iris/iris_state.c index d14472414750..08e51eecf1b3 100644 --- a/drivers/media/platform/qcom/iris/iris_state.c +++ b/drivers/media/platform/qcom/iris/iris_state.c @@ -258,6 +258,12 @@ bool iris_drain_pending(struct iris_inst *inst) inst->sub_state & IRIS_INST_SUB_DRAIN_LAST; } =20 +bool iris_ipsc_pending(struct iris_inst *inst) +{ + return inst->state =3D=3D IRIS_INST_INPUT_STREAMING && + (inst->sub_state & IRIS_INST_SUB_FIRST_IPSC) =3D=3D 0; +} + bool iris_allow_cmd(struct iris_inst *inst, u32 cmd) { struct vb2_queue *src_q =3D v4l2_m2m_get_src_vq(inst->m2m_ctx); diff --git a/drivers/media/platform/qcom/iris/iris_state.h b/drivers/media/= platform/qcom/iris/iris_state.h index b09fa54cf17e..761e6c4dc36b 100644 --- a/drivers/media/platform/qcom/iris/iris_state.h +++ b/drivers/media/platform/qcom/iris/iris_state.h @@ -142,5 +142,6 @@ int iris_inst_sub_state_change_pause(struct iris_inst *= inst, u32 plane); bool iris_allow_cmd(struct iris_inst *inst, u32 cmd); bool iris_drc_pending(struct iris_inst *inst); bool iris_drain_pending(struct iris_inst *inst); +bool iris_ipsc_pending(struct iris_inst *inst); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index bd38d84c9cc7..b741cf15beda 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -361,11 +361,19 @@ static int iris_g_fmt_vid_mplane(struct file *filp, v= oid *fh, struct v4l2_format int ret =3D 0; =20 mutex_lock(&inst->lock); + if (V4L2_TYPE_IS_OUTPUT(f->type)) *f =3D *inst->fmt_src; - else if (V4L2_TYPE_IS_CAPTURE(f->type)) - *f =3D *inst->fmt_dst; - else + else if (V4L2_TYPE_IS_CAPTURE(f->type)) { + /* + * Do not return any format when waiting for the firmware + * to send an initial source change + */ + if (iris_ipsc_pending(inst)) + ret =3D -EINVAL; + else + *f =3D *inst->fmt_dst; + } else ret =3D -EINVAL; =20 mutex_unlock(&inst->lock); --=20 2.34.1 From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CCB4B3D6CB4 for ; Wed, 8 Apr 2026 16:44:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666649; cv=none; b=MWTpnQzCOURxYSFEKaVSkEFJrrPQgvPAS7Km08TGgdFkb3KlJZHMC7MzhpevXUEXgmV277PAnNjtMlPZRrGi0pOmkXcDbPaSmRHnTBt4xKA5TVjrdTJHuikrwiYCeLXqOZFp8AbzmaxZee64YgqSqqtpWFj6S0MDzGkPqdlHwic= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666649; c=relaxed/simple; bh=jw5HajDz3YEg2SFQeuiFYM+sWNKJy4d/wOy+1zDgBrg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tTxPdWkC/G1CNBdu1BDaIQzv6VaWXFVGzOfSY2rPcBjyWtkdRg6i+QsfvtNBWrFdHTBfUpVjNJ+J1qp8Q/S8qhqdX8XDsh/JCP3FWMXn7mrN9Pf4zSMWCU37RXpbbdoWcMffc8wAibple6xBbgJ00+Oi1CbCt5Ze0fgr87L3Jp8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=M4ZhVRee; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="M4ZhVRee" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488a14c31eeso316255e9.0 for ; Wed, 08 Apr 2026 09:44:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666645; x=1776271445; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=OxT3LZZl8z0JUtBRxRhLlC7OhmjiZSeL9O80F6EgJiY=; b=M4ZhVReepXnZxHQJkCWMZKedUhQgUvpvLEi5X3uLfCSWbEu92dU5Bn7RxUresWY3VP Cktgze/yUcd/beDQCDX7Pzk/telle9j37H1R3gIMI9NZuijQIzj/yQCfU3mQ+VMQTg5/ Eg/ufBfrNNIs4OV+Rjyeg8lDLRY81aG18/EMchXxu6tlDFv+8mpkl1Wsk9y9oEGE8OkJ mcNrVeyRhrMP5HecxPlFcCrj6dbQ6EU+3a9rwBIGIthXGN3wh4aDnIuGSr4hIYMt+O4k YamaSLz9gtpKKCFpR8wBKajoVNcGReQSG1WPM9koxJVMMDwSZJ2J00LsxBPz/gnwW+// y6+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666645; x=1776271445; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=OxT3LZZl8z0JUtBRxRhLlC7OhmjiZSeL9O80F6EgJiY=; b=g/qf6npvnVZtvRCnXefbY5nj6FvczgDHlZlt65M1WXRq7UsxuMmgUmsgmxBbVTao8+ EWRImRdljV99Zvqo8CxKCBjuYfy3NB/3i7ov0p3rhGbLMRD68FrHloNn0EqVEnmtXw3C LP9Hmvktcuq/J1WEoqD62qzgDrXUdx+9r7E4i1X+zuTu2C7XSQT0TQX7FN11HVQ0X6Yh ssBl+mKK/3FNQrD9baiuhGCGDNTvUbRl+Y0/i/Fv2VU02Ko0tiYZ07H2OOm5Fn/K9NcB WjBy2geWffcHzqd5HdxCAxgLPSeV2+JQguD7mXpNWqkyljTniO2Bfo5sOScaWCLhKm5X 2GPg== X-Forwarded-Encrypted: i=1; AJvYcCXokBW34gJUeVfoTRWiqEy6htcHSI9pKPZyPyvPTOE8yvGh8pfvuL8KGMOlGDBQ1ek5xp+ZETaycrExHZk=@vger.kernel.org X-Gm-Message-State: AOJu0YwOFC1vxuiEIwP2J2k8QOeP39vozDCDOmbAblF0Gk+pbLGdTBH1 hnhXplXlHcCmAHQr1uU2x41KR5DdzuDsPsb5NlMr6oEggJ94f18Q94Bwzv0Oj7y8k0o= X-Gm-Gg: AeBDies4TPo+EwCmpGo/dIHtwj6t74xLoq/qW4qg1nqlro/gGdFOCglDALXqZcDG7HN whG9aP0USmTFPDXgbDZEpyKPvDnSzcAsx/MYbVohYY73ZFfH2M3EywSe0IhPteYBUxGSQfdNxME 7+0HpBOeo6BBODouZjvOdiLrl8TmkTw4jOdF9/ur/Smr1ofUep9rYAqlUvJLd1paTB7f9VrAb3i lDA1teJUZpzBHGb/ONXrAQDp2cFPQVe7fAy/C7bw5tygWrS+VJPVFsNyid2RygpiQMzhV6AAhBD ILmWkNvOREKJFH3QOg3QajcdJdaSlUeuvo2OISduEvbGQpEyQyrJ08zrCq8yroACd7At009LSSX 7KcGLjrtS4W+zj+Kr9cdIvs/HfI78StRy3AOGpf6x/zhKU+wNULn0hpyaX1tEbw4Ly2HL1jbhR0 qI/Mylba+5CZ6sQBRP05QaZ8X3FHbMBRYFULCOMrBsx429rDJ7lyfNd4I= X-Received: by 2002:a05:600c:1396:b0:486:fb0b:ad79 with SMTP id 5b1f17b1804b1-488997d10ffmr303650735e9.20.1775666645049; Wed, 08 Apr 2026 09:44:05 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:04 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:43:59 +0200 Subject: [PATCH RFC 6/7] media: qcom: iris: vdec: update find_format to handle 8bit and 10bit formats Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-6-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2960; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=jw5HajDz3YEg2SFQeuiFYM+sWNKJy4d/wOy+1zDgBrg=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXOX5pyFezRGumt1OnDVkkSs1lT7WJ6xd9W/pc4 KtrqGtCJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzgAKCRB33NvayMhJ0XHCD/ 0W9vutsMJDgW5v0Ig6IfkKEsVPR4PKPYTAdyJz8QVApIp1Rdj7ObtJkTBAYZwa6ZA4Zmssu+mtofEH d9M8ByzeZ5cevGQ4zAaZArvi47DbJJJTT3rBgOgu9EB+wwx4AhNPrZpu6nGgZEnau/XpInqf7uXRn+ DlIusxEx0HwoYeNRJ8QEvR4L96WeuRDBu3yxO8z7iWDTQJMNW38GfL1SjL6TFcdzR3YpGUddXd0P/V xdXKbXokp7ABNKfeai0P0ITyd8ouopaxKiUhyxcKzQDg6SU1dhA5BkcEMFBH5w/w7SlA9sD3D5Dblt hj8se28fKEoFI9Ki6ync1QbC9kdjzyTh1cMs/JgvOAv0pjfnt5oMwNH3tH2kIr+zcq9OBVrTdUJGeN l4OwMuvrPQunfFo8IgkDTqSOEDVMH8DBbiN6coY1FHCIUbEjvN4vB7ROKHr1gr0TdiAmsDomQTuRpA 2AoQDZRa9Ns9JWORMY0VI18B1cujAGnVtc8E7p50qWYqtDNHCngjFYHHuzOnhv+i6nMOG1S/kRJrJM SOF6xJual1MS36kNKyI9lj42LGCue14ITAqOteQ3ujMLOqMjgi6LwN5zftnRRVI64BR6VZFXzVfzbC TAUcU0+6X8/OHwv32/LpF4nDCLcAXrjrIabbaRSzqjqhvPpilj+Y1BHPgs6w== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE The 10bit pixel format can be only used when the decoder identifies the stream as decoding into 10bit pixel format buffers, so update the find_format helpers to filter the formats. Signed-off-by: Neil Armstrong --- .../platform/qcom/iris/iris_platform_common.h | 1 + drivers/media/platform/qcom/iris/iris_vdec.c | 41 ++++++++++++++++++= ++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 5a489917580e..cd3509da4b75 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -18,6 +18,7 @@ struct iris_inst; =20 #define REGISTER_BIT_DEPTH(luma, chroma) ((luma) << 16 | (chroma)) #define BIT_DEPTH_8 REGISTER_BIT_DEPTH(8, 8) +#define BIT_DEPTH_10 REGISTER_BIT_DEPTH(10, 10) #define CODED_FRAMES_PROGRESSIVE 0x0 #define DEFAULT_MAX_HOST_BUF_COUNT 64 #define DEFAULT_MAX_HOST_BURST_BUF_COUNT 256 diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index ca0518c27834..bfc13c1044c7 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -105,6 +105,16 @@ find_format(struct iris_inst *inst, u32 pixfmt, u32 ty= pe) if (i =3D=3D size || fmt[i].type !=3D type) return NULL; =20 + if (type =3D=3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE) { + if (iris_fmt_is_8bit(fmt[i].pixfmt) && + inst->fw_caps[BIT_DEPTH].value =3D=3D BIT_DEPTH_8) + return NULL; + + if (iris_fmt_is_10bit(fmt[i].pixfmt) && + inst->fw_caps[BIT_DEPTH].value !=3D BIT_DEPTH_10) + return NULL; + } + return &fmt[i]; } =20 @@ -113,6 +123,7 @@ find_format_by_index(struct iris_inst *inst, u32 index,= u32 type) { const struct iris_fmt *fmt =3D NULL; unsigned int size =3D 0; + unsigned int i, k =3D 0; =20 switch (type) { case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: @@ -127,10 +138,36 @@ find_format_by_index(struct iris_inst *inst, u32 inde= x, u32 type) return NULL; } =20 - if (index >=3D size || fmt[index].type !=3D type) + if (index >=3D size) return NULL; =20 - return &fmt[index]; + if (type =3D=3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE) { + if (fmt[index].type !=3D type) + return NULL; + + return &fmt[index]; + } + + /* Loop over the valid capture formats and return the index */ + for (i =3D 0; i < size; i++) { + if (fmt[i].type !=3D type) + continue; + + if (iris_fmt_is_8bit(fmt[i].pixfmt) && + inst->fw_caps[BIT_DEPTH].value =3D=3D BIT_DEPTH_10) + continue; + + if (iris_fmt_is_10bit(fmt[i].pixfmt) && + inst->fw_caps[BIT_DEPTH].value !=3D BIT_DEPTH_10) + continue; + + if (k =3D=3D index) + return &fmt[i]; + + k++; + } + + return NULL; } =20 int iris_vdec_enum_fmt(struct iris_inst *inst, struct v4l2_fmtdesc *f) --=20 2.34.1 From nobody Mon Jun 15 06:29:31 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A95E33D75CB for ; Wed, 8 Apr 2026 16:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666651; cv=none; b=BgX6BnpXj9C8Smeyxe2GJ5ZJD2CEQzu7CJ2LH7blfgiIi07lXfVGMG1kN31SwNeEpdFePZEldbs6doiE+t7WAKZgIyrFONVljNa0CKPRwQfMGlwWFCHB5HhFefBB/SjezId5eU9CDtGmtJR+CERJ4G7nHORDw0EL7m2hFV61kSQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775666651; c=relaxed/simple; bh=Pv3WXhLZRgadgKs/D3CNpusvBmf28aSbGVznXVjNR9M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RPWagODDEB9DPhtpFjJHA03MuSU2oWqTeN/izz9xq1pMrvhIYodp2ydb0xdFL90uMLxKKKkUi0J5o8Ei6LMoeHMb2BvobozohxAuxn60rnEp6u0v7qfksYpssXPsdt0Jhx23SGSyn5xxhN5BPNT9PiLG2zbBYmAuhBSXvnTFztE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=DZnsHbnW; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="DZnsHbnW" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488af96f6b2so513585e9.0 for ; Wed, 08 Apr 2026 09:44:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775666646; x=1776271446; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=nptkqOjFeBpyXOQIP1dOHpLSAoF5pyC2QiOjnimNHQM=; b=DZnsHbnWyR4gzzdJuyUJQMkHMBpJMxd3tfMu3GwvbBEA2ujrdqCa4MFuC9MWZrBmVU 8Vlbxye2FlACd2xT+n7gkBt2Qb7MbOAJmlZSVsuROR7u5/ucTM6u6OyQno+cmnkn5t2m jaNrphzhirwos8shwciDrDJvq1bUe0CjdqXL6H5i+Mfxh9MItCXvuVf5cpMiR0y8ucqk g0HuLJ4vz4M1cSp7p/HxT11FjjB2QcVoDl/ZjMzAlLQNz0rglXDm3s1TK9JAacbGc27J HPf7h/B+3kPyMb032+NxQK9S3DpWh1KVppsOGwFgAsqj677wI6WE4CwuwFSFb0P7aJJy zyzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775666646; x=1776271446; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nptkqOjFeBpyXOQIP1dOHpLSAoF5pyC2QiOjnimNHQM=; b=s7sG0IRH6Ui72SMd9sO+PQQfX+UBVvlgyXHkX781LNmpwCeVBD8QVQBpN4lBlM998C AZpsdoEZOXnK99bbGEA8Qf6xHyEu3oJNKco1ShbQPrQkCSCw1b8axHKsfmmGFlowiAlw gw+IJZN2t8pcU/4m7g1seMTOWbFfAn63sOcao360bptMItbZJ5A0GsUp8DzgUdkgS7b/ Y+M+sXvWeVI3mp/rwLuaGfjQrZN+5Xy7YhWVgdIKGwtVeQeC5sGuuhNyHwJnMuSoqyp1 kmtyiJezBxR7iF7nj6Uj3ci+tJNq8RXIRfNnLS5DR26bseKqy0yzKYWh0KwZNrbvdaCe SPrQ== X-Forwarded-Encrypted: i=1; AJvYcCV4XN5eTyRRHp2vOVUzjqXTC7dIufpDdz6TB1+TMrWfdWoq+zOyQE4Z0N8gQ5uObXP2TgwP0iXzyCgvSdY=@vger.kernel.org X-Gm-Message-State: AOJu0YyjZ92diFzlrfoMoywGyC6IKdzJ8MF5bImyGWLT/oKA1c40tFz/ wws/rYhWzzxLrrk7U6Z186QiRYg2O19PKTl2aobdgFvOEkok/CGAxPiXJGx499OO/YE= X-Gm-Gg: AeBDieuKNUN4Mw+6UmYhpRFHapqwVTieerdFir5NnDpBVAsCnpjhCNKKpDpDTcvPL5K hkHzsfi8nUe+3xRgsKp+xn04ERqMaOUv9oRh3SGi1OblztiRwG661XjY8bkteqNyacsq2BOU+TY EAw0sU25Y1J0JNq3PlQxI8aSN7UyVp3MJ+438YpQkd/YJr1RqBpWyvfG30p2u94p+Tndt+TfxEs r2oA2uUrO9UTTSzyQvuRhS3TRB7sla9yyCXUv4hOdd42QecUVXmQGiVU/S49zjB84nKAEOyyjC6 AUHAaOgDaeo8yTI+H9JAHTD5qDyZWzU5AjVhk1CCgAspOkHsQRNPshJF+r/0SHaKPrck5yr6+7c jvCO4yJFZJWWvfhAwUyOduFs8U8RRvFG6fB++7WIfcbFidba4Jf9GzWoZPSIZKN20pQaCaFWUh2 heAL0bDIAT4jORnElPGentnVjvxACHHXmYx35y+bCUJq7U X-Received: by 2002:a05:600c:3b87:b0:486:fe23:1707 with SMTP id 5b1f17b1804b1-488997ac1bdmr319585835e9.20.1775666645921; Wed, 08 Apr 2026 09:44:05 -0700 (PDT) Received: from arrakeen.starnux.net ([2a01:e0a:106d:1080:52eb:f6ff:feb3:451a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488cd17be0csm1388065e9.18.2026.04.08.09.44.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 09:44:05 -0700 (PDT) From: Neil Armstrong Date: Wed, 08 Apr 2026 18:44:00 +0200 Subject: [PATCH RFC 7/7] media: qcom: iris: vdec: allow decoding into 10bit format Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260408-topic-sm8x50-iris-10bit-decoding-v1-7-428c1ec2e3f3@linaro.org> References: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> In-Reply-To: <20260408-topic-sm8x50-iris-10bit-decoding-v1-0-428c1ec2e3f3@linaro.org> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Neil Armstrong X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4890; i=neil.armstrong@linaro.org; h=from:subject:message-id; bh=Pv3WXhLZRgadgKs/D3CNpusvBmf28aSbGVznXVjNR9M=; b=owEBbQKS/ZANAwAKAXfc29rIyEnRAcsmYgBp1oXPMupLaMQ0y60sJPtaWa6ocyRH8oEBIEgtvT0y Sxq9QHKJAjMEAAEKAB0WIQQ9U8YmyFYF/h30LIt33NvayMhJ0QUCadaFzwAKCRB33NvayMhJ0RQ0D/ 9ozatqbV4b3dVutFLNwp5ap6i8HzCOFDdhEZTDd4yMQTvJuSNSFy4mQIN0sJmw0GNhOWJ+kkoK+dAC d3IfzIJNLRiyQpIDJgGwJ6UlAtpfrmdrYYkQ/JgBTwGPHj8/0wvtd1O5J//yZ3SrZIUjxDqn7KLWkV ZF9cvoQKZioUZ4SwHh3qRy9NO+O3zYItjMSw6/xf6Sy5DpqompQVvvskX5mBoTtT3iWsc8jvOkPJ78 IXqsrfoJa59uv/yXKHHSywFGW0kkH5x2qdhnjWKQ+Y4jriHNFypv9VpZt1dg5RAnCQ/3ltrYC3rl3i xBH80Px6fYiFcVVgpi721Y8CzprKsnmsZOCUL2F4iQ3g4Rxpa0gNxjCpD+pw18vSfCqSZzbT/22c21 8fIXLd/0J9wpg5TIv+YAVV5KFEw0mZeP0JHDgSC6YqXQh7IZ51x5XTtDfKvSym0dH9rM1Ecr30ahOe X5SBl7cRh2mdhSBdv0UKFgWynVVCiIkxBFxG0pnQ3u3gS/rL3h8mRjjYocKdrCfv2QmJ1KiqW5eh4z vdBbg41/ee+5vpklZggWke8cvIla/uPlU3EScrxW9vp3e+iUTShJN93fmIDvzGb5B/PiguqFNFD915 CvCdN90UK/ms+/XG7jEbVlDGFAi+kNefbrFNktQA3x+GW7H2s9bGtO1iCQYw== X-Developer-Key: i=neil.armstrong@linaro.org; a=openpgp; fpr=89EC3D058446217450F22848169AB7B1A4CFF8AE Add the necessary bits into the gen2 platforms tables and handlers to allow decoding streams into 10bit pixel formats. Signed-off-by: Neil Armstrong --- .../platform/qcom/iris/iris_hfi_gen2_response.c | 20 ++++++++++++++++= +--- drivers/media/platform/qcom/iris/iris_instance.h | 2 ++ .../media/platform/qcom/iris/iris_platform_gen2.c | 3 ++- drivers/media/platform/qcom/iris/iris_vdec.c | 8 ++++++++ 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index d268149191ea..85ad43628ff9 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -542,6 +542,15 @@ static void iris_hfi_gen2_read_input_subcr_params(stru= ct iris_inst *inst) pixmp_ip->width =3D width; pixmp_ip->height =3D height; =20 + if (subsc_params.bit_depth =3D=3D BIT_DEPTH_8 && + pixmp_op->pixelformat !=3D V4L2_PIX_FMT_NV12 && + pixmp_op->pixelformat !=3D V4L2_PIX_FMT_QC08C) + pixmp_op->pixelformat =3D V4L2_PIX_FMT_NV12; + else if (subsc_params.bit_depth =3D=3D BIT_DEPTH_10 && + pixmp_op->pixelformat !=3D V4L2_PIX_FMT_P010 && + pixmp_op->pixelformat !=3D V4L2_PIX_FMT_QC10C) + pixmp_op->pixelformat =3D V4L2_PIX_FMT_P010; + pixmp_op->width =3D pixmp_op->pixelformat =3D=3D V4L2_PIX_FMT_QC10C ? ALIGN(width, 192) : ALIGN(width, 128); pixmp_op->height =3D pixmp_op->pixelformat =3D=3D V4L2_PIX_FMT_QC10C ? @@ -551,11 +560,11 @@ static void iris_hfi_gen2_read_input_subcr_params(str= uct iris_inst *inst) pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(width * 2, 256); break; case V4L2_PIX_FMT_QC10C: - pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(ALIGN(width, 192) * 4 / 3,= 256); + pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(pixmp_op->width * 4 / 3, 2= 56); break; case V4L2_PIX_FMT_NV12: case V4L2_PIX_FMT_QC08C: - pixmp_op->plane_fmt[0].bytesperline =3D ALIGN(width, 128); + pixmp_op->plane_fmt[0].bytesperline =3D pixmp_op->width; break; } pixmp_op->plane_fmt[0].sizeimage =3D iris_get_buffer_size(inst, BUF_OUTPU= T); @@ -623,7 +632,12 @@ static void iris_hfi_gen2_read_input_subcr_params(stru= ct iris_inst *inst) inst->fw_caps[POC].value =3D subsc_params.pic_order_cnt; inst->fw_caps[TIER].value =3D subsc_params.tier; =20 - if (subsc_params.bit_depth !=3D BIT_DEPTH_8 || + if (subsc_params.bit_depth =3D=3D BIT_DEPTH_8) + inst->fw_caps[BIT_DEPTH].value =3D BIT_DEPTH_8; + else + inst->fw_caps[BIT_DEPTH].value =3D BIT_DEPTH_10; + + if ((subsc_params.bit_depth !=3D BIT_DEPTH_8 && subsc_params.bit_depth != =3D BIT_DEPTH_10) || !(subsc_params.coded_frames & HFI_BITMASK_FRAME_MBS_ONLY_FLAG)) { dev_err(core->dev, "unsupported content, bit depth: %x, pic_struct =3D %= x\n", subsc_params.bit_depth, subsc_params.coded_frames); diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index 16965150f427..16424d1e94a6 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -25,6 +25,8 @@ enum iris_fmt_type_out { enum iris_fmt_type_cap { IRIS_FMT_NV12, IRIS_FMT_QC08C, + IRIS_FMT_TP10, + IRIS_FMT_QC10C, }; =20 struct iris_fmt { diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 5da90d47f9c6..1a80e98fd55c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -287,7 +287,7 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm= 8550_dec[] =3D { { .cap_id =3D BIT_DEPTH, .min =3D BIT_DEPTH_8, - .max =3D BIT_DEPTH_8, + .max =3D BIT_DEPTH_10, .step_or_mask =3D 1, .value =3D BIT_DEPTH_8, .hfi_id =3D HFI_PROP_LUMA_CHROMA_BIT_DEPTH, @@ -866,6 +866,7 @@ static const u32 sm8550_vdec_output_config_params[] =3D= { HFI_PROP_OPB_ENABLE, HFI_PROP_COLOR_FORMAT, HFI_PROP_LINEAR_STRIDE_SCANLINE, + HFI_PROP_UBWC_STRIDE_SCANLINE, }; =20 static const u32 sm8550_venc_output_config_params[] =3D { diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index bfc13c1044c7..776504d02aa8 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -76,6 +76,14 @@ static const struct iris_fmt iris_vdec_formats_cap[] =3D= { .pixfmt =3D V4L2_PIX_FMT_QC08C, .type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, }, + [IRIS_FMT_TP10] =3D { + .pixfmt =3D V4L2_PIX_FMT_P010, + .type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, + }, + [IRIS_FMT_QC10C] =3D { + .pixfmt =3D V4L2_PIX_FMT_QC10C, + .type =3D V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, + }, }; =20 static const struct iris_fmt * --=20 2.34.1