From patchwork Fri Oct 3 16:54:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 35 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510557; bh=suAbdTEqjtwsg/9ymhq1mwa8NAbg6r+QSFNTWcbvATk=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=kGbWH4kIkCkwVagH1KSOWNhFF61Pnd2dZf40a4nAqmA9qiuXm3DguHDa3l8Z/Gd0I 8gAIfPn2Gz9M5Ru36t3OnYEX/shcu5ByIdnN6tJKt0dn0hOIqHrWzI9ST9XnurTSfO bth8jEUsNdiykLP9vlLQ4WrjcKMyL9nnYHKiZcrLSYkq2nBmcIZPifLLU8NGYuodK4 CAX4tDhZCndFoyH7ncCey/vf1Q4oap0XjW8XAYeH2vBamgIHjrGvYC+QBwj0BsmCIQ quroHyuOE10zxIpM8hCc7bbjbCxM4KFrm8n/VC7Sb1Pgg208IT2BUQdBhje5SVxyGS 70pWjWpfnxWGA== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id E7EEC67EC0 for ; Fri, 3 Oct 2025 10:55:57 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id ymz7lpXYVhtR for ; Fri, 3 Oct 2025 10:55:57 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510557; bh=suAbdTEqjtwsg/9ymhq1mwa8NAbg6r+QSFNTWcbvATk=; h=From:To:Date:CC:Subject:List-Id:List-Archive:List-Help:List-Owner: List-Post:List-Subscribe:List-Unsubscribe:From; b=kGbWH4kIkCkwVagH1KSOWNhFF61Pnd2dZf40a4nAqmA9qiuXm3DguHDa3l8Z/Gd0I 8gAIfPn2Gz9M5Ru36t3OnYEX/shcu5ByIdnN6tJKt0dn0hOIqHrWzI9ST9XnurTSfO bth8jEUsNdiykLP9vlLQ4WrjcKMyL9nnYHKiZcrLSYkq2nBmcIZPifLLU8NGYuodK4 CAX4tDhZCndFoyH7ncCey/vf1Q4oap0XjW8XAYeH2vBamgIHjrGvYC+QBwj0BsmCIQ quroHyuOE10zxIpM8hCc7bbjbCxM4KFrm8n/VC7Sb1Pgg208IT2BUQdBhje5SVxyGS 70pWjWpfnxWGA== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id D4A8067E83 for ; Fri, 3 Oct 2025 10:55:57 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510553; bh=XnB1R8tlmBhVGQJhp0dDY1oOQ46CNA5iNxgnDxGV3Go=; h=From:To:Cc:Subject:Date:From; b=hXEcgWs0pcMJMynaVoQxCWx+gge1QZ4iUJ9afcif7S5a56UakJT//z/y+CWPWFzz2 twn7WJwBsYVUGYBEhKt9ycEJ53b+eemaWtF9rs/NdlmMrh5a3FaiAgUAaUyyeZ7JnM bCfxzUuPkESjE+hW4HuyADB/1qhUdrc6hVyRAjHzvuaWufPl+njplBYQhVoHzaeFmE LScK7XQVKAsA0+RpNwnT9X2LDxJcysEMjyr2g5rG+GY66tFCBkFWT3yyCE925zz1/4 XcJSIfHej0npukhJ006sfaZXTn31XUe7pVXfMyCJg9FH2rbv3nHE1wbCLYqXjsgFZT imtV739B0VWtg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 98C9767E12; Fri, 3 Oct 2025 10:55:53 -0600 (MDT) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id 6oxKPeYTSVr2; Fri, 3 Oct 2025 10:55:53 -0600 (MDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1759510547; bh=ebpzoNh9AR8k9mm2FILqhQjAb8RZ3SYhPOYiq+gl17M=; h=From:To:Cc:Subject:Date:From; b=lvGhpzd9kYlR/Ymm02UfrA7PP+aiAkDS+EUeGfr7VCysqmr2LrPNDL3kFJxbB3SEt g/+OrKorEcMG2CXpJcgv0Q+wVUPwDo/JJ/QT/MltoDvdtw641tY/O+/9BqKnJNs8G5 qvxJLTniTjVAxTkdL6lTPakPryp+4L5Uniqi0UecnEeKSS4AeE2/5VfapYyZoqR0iS E7kBcjcmFc4crQ37/Q6NziW1RhOYBJWR4kyJJYI/HlKAFVqdB6S18FvivmBq/SM0d1 +bSBqouSLFV1aaH0Sum/c46Jd0uRAt9le+kWo2fH6HfPuEBkLPVSI7/iNrjnXV+VgY DCzAVF+TXwpzw== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 6BD0067E7C; Fri, 3 Oct 2025 10:55:47 -0600 (MDT) From: Simon Glass To: U-Boot Concept Date: Fri, 3 Oct 2025 10:54:53 -0600 Message-ID: <20251003165525.440173-1-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Message-ID-Hash: AHRTFU7VP37X5HYNLFJ3SWMK2NM7NRUF X-Message-ID-Hash: AHRTFU7VP37X5HYNLFJ3SWMK2NM7NRUF X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Heinrich Schuchardt , Simon Glass X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 00/22] video: Enhancements to support a pointer List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass The video subsystem has a video_sync() function which does quite a few things and is rather hard to predict and control: - it may or may not actually sync, depending on a timer, etc - it may be called when U-Boot is idle, so any time delays can cause a sync These two problems make it hard to test. This series introduces a deterministic video_manual_sync() which does exactly what it is told, using a set of flags: VIDSYNC_FORCE - the force flag was provided (info for the driver) VIDSYNC_FLUSH - framebuffer changes should be flushed to hardware VIDSYNC_COPY - the copy framebuffer (if any) should be updated The video_sync() method is renamed to sync() and is passed the flags, so that drivers can find out what to do. This allows the sandbox-specific code in video_sync() to move to the driver. These features will (later) be used by expo to provide a better user experience, e.g. to sync only part of the display, or to sync quickly when there is mouse movement. The pointer also needs to be drawn with transparency which is not well supported by the BMP code. This series adds support for a simple transparency colour for now, although an alpha channel may be appropriate in the future. Simon Glass (22): doc: sandbox: Update command-line options documentation sandbox: Add -V flag for video test delay sandbox: Add --video_frames option to capture test frames sandbox: Add a comment for sandbox_sdl_get_mouse_event() video: Add a missing comment in struct video_uc_priv video: Add a pointer image video: Check drawing the mouse pointer video: Move setting of cte in write_pix8() to the top video: Support transparency in the inner bmp functions video: Use variables for each colour component video: Support transparency with 24bpp BMP image video: Support transparency with BMP palette video: Export a function to draw a BMP with transparency video: Add a struct video_bbox for damage tracking video: Rename video_sync() to sync() in struct video_ops video: Tidy up the comment for sync() video: Provide a way for expo to control video sync video: Add flags parameter to sync() operation video: Refactor video_sync() to use video_manual_sync() video: sandbox: Optimise drawing based on damage video: sandbox: Add sync() method for video video: sandbox: Add test for sync() damage rectangle arch/sandbox/cpu/sdl.c | 49 +++- arch/sandbox/cpu/start.c | 32 +++ arch/sandbox/include/asm/sdl.h | 16 +- arch/sandbox/include/asm/state.h | 3 + doc/arch/sandbox/sandbox.rst | 21 +- drivers/video/efi.c | 4 +- drivers/video/images/Makefile | 3 + drivers/video/images/riscos_arrow.bmp | Bin 0 -> 3798 bytes drivers/video/mcde_simple.c | 4 +- drivers/video/sandbox_sdl.c | 36 +++ drivers/video/seps525.c | 4 +- drivers/video/video-uclass.c | 110 ++++++-- drivers/video/video_bmp.c | 121 ++++++--- include/dm/test.h | 15 + include/video.h | 88 ++++-- include/video_defs.h | 37 +++ test/dm/video.c | 376 ++++++++++++++++++++++++-- 17 files changed, 802 insertions(+), 117 deletions(-) create mode 100644 drivers/video/images/riscos_arrow.bmp