Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2202589/?format=api
{ "id": 2202589, "url": "http://patchwork.ozlabs.org/api/patches/2202589/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260227203944.746471-9-chad@jablonski.xyz/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260227203944.746471-9-chad@jablonski.xyz>", "list_archive_url": null, "date": "2026-02-27T20:39:34", "name": "[v9,08/18] ati-vga: Consolidate dirty region tracking in ati_2d_blt", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "39581e19e3b0268a9224914d9674dcbbb27d53c5", "submitter": { "id": 91805, "url": "http://patchwork.ozlabs.org/api/people/91805/?format=api", "name": "Chad Jablonski", "email": "chad@jablonski.xyz" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260227203944.746471-9-chad@jablonski.xyz/mbox/", "series": [ { "id": 493814, "url": "http://patchwork.ozlabs.org/api/series/493814/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=493814", "date": "2026-02-27T20:39:27", "name": "ati-vga: Implement HOST_DATA transfers to enable X.org text rendering", "version": 9, "mbox": "http://patchwork.ozlabs.org/series/493814/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2202589/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2202589/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=jablonski.xyz header.i=@jablonski.xyz\n header.a=rsa-sha256 header.s=fm2 header.b=Ar/gR8Lj;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=messagingengine.com header.i=@messagingengine.com\n header.a=rsa-sha256 header.s=fm3 header.b=tVNabtkY;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fN0cM4C9Xz1xxx\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Feb 2026 07:41:55 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vw4e8-0002Gf-Uw; Fri, 27 Feb 2026 15:41:14 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <chad@jablonski.xyz>)\n id 1vw4dz-0001Pm-Ne\n for qemu-devel@nongnu.org; Fri, 27 Feb 2026 15:41:05 -0500", "from fhigh-a7-smtp.messagingengine.com ([103.168.172.158])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <chad@jablonski.xyz>)\n id 1vw4dx-0007Ps-5t\n for qemu-devel@nongnu.org; Fri, 27 Feb 2026 15:41:02 -0500", "from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])\n by mailfhigh.phl.internal (Postfix) with ESMTP id 71647140017B;\n Fri, 27 Feb 2026 15:41:00 -0500 (EST)", "from phl-frontend-04 ([10.202.2.163])\n by phl-compute-04.internal (MEProxy); Fri, 27 Feb 2026 15:41:00 -0500", "by mail.messagingengine.com (Postfix) with ESMTPA; Fri,\n 27 Feb 2026 15:40:59 -0500 (EST)", "from localhost (chomposaur [local])\n by chomposaur (OpenSMTPD) with ESMTPA id d22ddc48;\n Fri, 27 Feb 2026 20:40:55 +0000 (UTC)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=jablonski.xyz;\n h=cc:cc:content-transfer-encoding:content-type:date:date:from\n :from:in-reply-to:in-reply-to:message-id:mime-version:references\n :reply-to:subject:subject:to:to; s=fm2; t=1772224860; x=\n 1772311260; bh=/8gQrPLmCC6i3JQzdW1xashObqgDvg5nx94NGxDJ1P0=; b=A\n r/gR8Lj8PrPN00T2xdEAlaSy59+oDNDlxggVgAkI7xkmRS1E8rPhhWQnb+M7Tge+\n 8ZwVcUUjAlfPhJprhd55oEwI8wzr53WuheC2fbre7Zo6S9jhIqFYZcc08z8eqPdy\n M8xMGajGRv4rRnyJCz6HqNcgutFIa0vqN4fTA1s+hHHJ2xcnTDlUURr7uL6hkxmL\n VQedMNL0eK3KdVsf+CvYbdHSINtnsazcEy1vmFTka7QfgG3kPgl9CsJiNgTtEiWU\n QNfBlj/ipK9osvlT4lfgxu5fMXo/SV6FkMvvHHURua7vgHVtyljgojZKRrOLyWf+\n DnFbo3mo7aokqzLhIHRUA==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=\n messagingengine.com; h=cc:cc:content-transfer-encoding\n :content-type:date:date:feedback-id:feedback-id:from:from\n :in-reply-to:in-reply-to:message-id:mime-version:references\n :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender\n :x-me-sender:x-sasl-enc; s=fm3; t=1772224860; x=1772311260; bh=/\n 8gQrPLmCC6i3JQzdW1xashObqgDvg5nx94NGxDJ1P0=; b=tVNabtkYqU4CoZMP9\n qu9YJLZUiFIn//NdXjRZo7FnVpJSqOnNMUCUYLpOD7QK+u55iyyFSA+nanCl7e1Z\n HRU5EFtaGMK5TlqG1fKNYf38stMZLzkvTVIOcP8iZcKGiZ9zuKPiODbFuVDVScm/\n JzBpvBj3M9VwxC2WF5N16IU2l89cusnN/PuNwMtB3J+CZBpegS/ALyX452UYQG8Q\n WLT7aVAeficmZ1xhcUbjnTnJCpWFmLuMWUs6SJc9h7fsDqwYfbSmaKk/IDe6Kmky\n NKVRbOBLkL63jFh0QxWLwj42URDQjcofDt53DqcS0JSFB4svZ1dvI/vRqAvzAeuN\n H8/TA==" ], "X-ME-Sender": "<xms:XAGiaYoYKJCL-qrDQZmai3XC4DdWNea_1ml_KNv005HLbPWQ1GHjpA>\n <xme:XAGiaaIBaVUKEOKJFZuGy58Fo1iid-FY-SB8hAC43ZgT2xZLKdnc4EH76NyjLn1W4\n ab70yfa7UyhTS3pg_pVfY1ezD03_Wa_MTtP7goiXSAJ48VXPY4CHys>", "X-ME-Received": "\n <xmr:XAGiaTpoJjjtTWrLNAjyoZohX_oUHBywuq4Knb3BQQr-zUChOHfr-EMV0y_W>", "X-ME-Proxy-Cause": "\n gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddvgeelleelucetufdoteggodetrf\n dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu\n rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnegfrh\n hlucfvnfffucdljedtmdenucfjughrpefhvfevufffkffojghfggfgsedtkeertdertddt\n necuhfhrohhmpeevhhgrugculfgrsghlohhnshhkihcuoegthhgrugesjhgrsghlohhnsh\n hkihdrgiihiieqnecuggftrfgrthhtvghrnhepgfeiteejhfelheefieetjefgleejfffh\n ueffvdduieejgfeuueeuvddvkeejhfelnecuvehluhhsthgvrhfuihiivgepudenucfrrg\n hrrghmpehmrghilhhfrhhomheptghhrggusehjrggslhhonhhskhhirdighiiipdhnsggp\n rhgtphhtthhopeehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopegsrghlrghtoh\n hnsegvihhkrdgsmhgvrdhhuhdprhgtphhtthhopegthhgrugesjhgrsghlohhnshhkihdr\n giihiidprhgtphhtthhopehmrghrtggrnhgurhgvrdhluhhrvggruhesrhgvughhrghtrd\n gtohhmpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghdprhgt\n phhtthhopehkrhgrgigvlhesrhgvughhrghtrdgtohhm", "X-ME-Proxy": "<xmx:XAGiaaw5jABQSZWqxS93EWZJNmt15pAxRTbAraFCXn2DjCH3TTeASw>\n <xmx:XAGiafNvEY4bikiPsERBhBkjDAc6Z4Fgek_5vP4q-bdYnyGS2JvwYw>\n <xmx:XAGiaX5EPmyBTZFPftt6eYJAjf-2Lp8FgNEnzy9yy0P-Fxn-ydk4Mw>\n <xmx:XAGiaQmfpWdlCyyoXr2P2BMsIfEPZv9VKEyECvpIslYsQFo2GmRVtQ>\n <xmx:XAGiae0EVin4G4GYzBsJ4T-AdAqehVhGv46-gUpL8zCoMaHgRaX-PlBW>", "Feedback-ID": "ib26944c1:Fastmail", "From": "Chad Jablonski <chad@jablonski.xyz>", "To": "qemu-devel@nongnu.org", "Cc": "BALATON Zoltan <balaton@eik.bme.hu>, Gerd Hoffmann <kraxel@redhat.com>,\n\t=?utf-8?q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Chad Jablonski <chad@jablonski.xyz>", "Subject": "[PATCH v9 08/18] ati-vga: Consolidate dirty region tracking in\n ati_2d_blt", "Date": "Fri, 27 Feb 2026 15:39:34 -0500", "Message-ID": "<20260227203944.746471-9-chad@jablonski.xyz>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260227203944.746471-1-chad@jablonski.xyz>", "References": "<20260227203944.746471-1-chad@jablonski.xyz>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=103.168.172.158;\n envelope-from=chad@jablonski.xyz;\n helo=fhigh-a7-smtp.messagingengine.com", "X-Spam_score_int": "8", "X-Spam_score": "0.8", "X-Spam_bar": "/", "X-Spam_report": "(0.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1,\n DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FROM_SUSPICIOUS_NTLD=0.5,\n PDS_OTHER_BAD_TLD=1.999, RCVD_IN_DNSWL_LOW=-0.7,\n RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.706,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.401,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001,\n UNPARSEABLE_RELAY=0.001 autolearn=no autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "Both supported ROPs follow the same memory set dirty logic.\nThis consolidates that logic to remove the duplication.\n\nSigned-off-by: Chad Jablonski <chad@jablonski.xyz>\nReviewed-by: BALATON Zoltan <balaton@eik.bme.hu>\n---\n hw/display/ati_2d.c | 42 +++++++++++++++++++++---------------------\n 1 file changed, 21 insertions(+), 21 deletions(-)", "diff": "diff --git a/hw/display/ati_2d.c b/hw/display/ati_2d.c\nindex cfc7bf9789..980cdd6ac0 100644\n--- a/hw/display/ati_2d.c\n+++ b/hw/display/ati_2d.c\n@@ -43,15 +43,28 @@ static int ati_bpp_from_datatype(ATIVGAState *s)\n }\n }\n \n+static void ati_set_dirty(ATIVGAState *s,\n+ const uint8_t *dst_bits, unsigned dst_y)\n+{\n+ VGACommonState *vga = &s->vga;\n+ DisplaySurface *ds = qemu_console_surface(vga->con);\n+\n+ DPRINTF(\"%p %u ds: %p %d %d rop: %x\\n\", vga->vram_ptr, vga->vbe_start_addr,\n+ surface_data(ds), surface_stride(ds), surface_bits_per_pixel(ds),\n+ (s->regs.dp_mix & GMC_ROP3_MASK) >> 16);\n+ if (dst_bits >= vga->vram_ptr + vga->vbe_start_addr &&\n+ dst_bits < vga->vram_ptr + vga->vbe_start_addr +\n+ vga->vbe_regs[VBE_DISPI_INDEX_YRES] * vga->vbe_line_offset) {\n+ memory_region_set_dirty(&vga->vram, vga->vbe_start_addr +\n+ s->regs.dst_offset + dst_y * surface_stride(ds),\n+ s->regs.dst_height * surface_stride(ds));\n+ }\n+}\n+\n void ati_2d_blt(ATIVGAState *s)\n {\n /* FIXME it is probably more complex than this and may need to be */\n /* rewritten but for now as a start just to get some output: */\n- DisplaySurface *ds = qemu_console_surface(s->vga.con);\n- DPRINTF(\"%p %u ds: %p %d %d rop: %x\\n\", s->vga.vram_ptr,\n- s->vga.vbe_start_addr, surface_data(ds), surface_stride(ds),\n- surface_bits_per_pixel(ds),\n- (s->regs.dp_mix & GMC_ROP3_MASK) >> 16);\n unsigned dst_x = (s->regs.dp_cntl & DST_X_LEFT_TO_RIGHT ?\n s->regs.dst_x : s->regs.dst_x + 1 - s->regs.dst_width);\n unsigned dst_y = (s->regs.dp_cntl & DST_Y_TOP_TO_BOTTOM ?\n@@ -166,14 +179,6 @@ void ati_2d_blt(ATIVGAState *s)\n memmove(&dst_bits[i], &src_bits[j], s->regs.dst_width * bypp);\n }\n }\n- if (dst_bits >= s->vga.vram_ptr + s->vga.vbe_start_addr &&\n- dst_bits < s->vga.vram_ptr + s->vga.vbe_start_addr +\n- s->vga.vbe_regs[VBE_DISPI_INDEX_YRES] * s->vga.vbe_line_offset) {\n- memory_region_set_dirty(&s->vga.vram, s->vga.vbe_start_addr +\n- s->regs.dst_offset +\n- dst_y * surface_stride(ds),\n- s->regs.dst_height * surface_stride(ds));\n- }\n break;\n }\n case ROP3_PATCOPY:\n@@ -216,18 +221,13 @@ void ati_2d_blt(ATIVGAState *s)\n }\n }\n }\n- if (dst_bits >= s->vga.vram_ptr + s->vga.vbe_start_addr &&\n- dst_bits < s->vga.vram_ptr + s->vga.vbe_start_addr +\n- s->vga.vbe_regs[VBE_DISPI_INDEX_YRES] * s->vga.vbe_line_offset) {\n- memory_region_set_dirty(&s->vga.vram, s->vga.vbe_start_addr +\n- s->regs.dst_offset +\n- dst_y * surface_stride(ds),\n- s->regs.dst_height * surface_stride(ds));\n- }\n break;\n }\n default:\n qemu_log_mask(LOG_UNIMP, \"Unimplemented ati_2d blt op %x\\n\",\n (s->regs.dp_mix & GMC_ROP3_MASK) >> 16);\n+ return;\n }\n+\n+ ati_set_dirty(s, dst_bits, dst_y);\n }\n", "prefixes": [ "v9", "08/18" ] }