From nobody Thu Nov 13 12:01:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1579796685; cv=none; d=zohomail.com; s=zohoarc; b=FXpC9YQR/411e8UKljQ7NIaQ1UHZwjF11H8vRrA4Vk46f6faa+xurcccIagYYyHVsU6K01wI4v2h+bofbjz1y/ynAg0EMtOglMvSd4kL6wkYBhinHRSCvY/d5lWK8xiT3RFuXZcMgoE5koTSeII6gqVNFh+ZKip8L71wtIpCZYw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1579796685; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=uWPWSWfYKvtz3ECYoPIg8PimFhSZqtJF8y3utyXfJ80=; b=jo+aCuYsNPUmTOFk2lgFkCGjf/Yu5xkjSj0HV3QXEfQ4tPLtfdSPz1u05keFL2LM0zLKjehG6ws3T3QVhrCl4z7wVHxb7lOZv7IiKrgMQfhY9daUeiJYZukk1RIkw1FVGm2KQxuQpTgBx1sZIcafStuZgbfy++KkRe19hacEPBc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1579796685040683.3191630390246; Thu, 23 Jan 2020 08:24:45 -0800 (PST) Received: from localhost ([::1]:60336 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iufHf-0000cD-Al for importer@patchew.org; Thu, 23 Jan 2020 11:24:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:59809) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iudNs-00074l-38 for qemu-devel@nongnu.org; Thu, 23 Jan 2020 09:23:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iudNq-0004eh-Sd for qemu-devel@nongnu.org; Thu, 23 Jan 2020 09:22:59 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:57788 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iudNq-0004dY-Op for qemu-devel@nongnu.org; Thu, 23 Jan 2020 09:22:58 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-387-sev2OAqlNIOOVoMOIDcMCQ-1; Thu, 23 Jan 2020 09:21:26 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D4D9F8017CC; Thu, 23 Jan 2020 14:21:25 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-106.ams2.redhat.com [10.36.116.106]) by smtp.corp.redhat.com (Postfix) with ESMTP id 39A7A80896; Thu, 23 Jan 2020 14:21:23 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 779A49C7F; Thu, 23 Jan 2020 15:21:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1579789378; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uWPWSWfYKvtz3ECYoPIg8PimFhSZqtJF8y3utyXfJ80=; b=OEGv9WpvYGSqfQ+awiG6sH5eP9IO0c85lM0xt+n0ew0FVcoFHExqGxa7fS5vmxzgI5I08v upE3+eLHfEoAO+dwD2Sbk1HyQpR4ydu/i/1orVzkW0PhaaQO0NZbk/XxqnYfOhzGod/B/Z mHpPm5ObVrTqFR5zYPffqkTiXzf4nqY= From: Gerd Hoffmann To: qemu-devel@nongnu.org Subject: [PULL 2/3] vnc: prioritize ZRLE compression over ZLIB Date: Thu, 23 Jan 2020 15:21:21 +0100 Message-Id: <20200123142122.13839-3-kraxel@redhat.com> In-Reply-To: <20200123142122.13839-1-kraxel@redhat.com> References: <20200123142122.13839-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-MC-Unique: sev2OAqlNIOOVoMOIDcMCQ-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 207.211.31.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann , Cameron Esfahani Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Cameron Esfahani In my investigation, ZRLE always compresses better than ZLIB so prioritize ZRLE over ZLIB, even if the client hints that ZLIB is preferred. zlib buffer is always reset in zrle_compress_data(), so using offset to calculate next_out and avail_out is useless. Signed-off-by: Cameron Esfahani Message-Id: Signed-off-by: Gerd Hoffmann --- ui/vnc-enc-zrle.c | 4 ++-- ui/vnc.c | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ui/vnc-enc-zrle.c b/ui/vnc-enc-zrle.c index 17fd28a2e2b0..b4f71e32cfe8 100644 --- a/ui/vnc-enc-zrle.c +++ b/ui/vnc-enc-zrle.c @@ -98,8 +98,8 @@ static int zrle_compress_data(VncState *vs, int level) /* set pointers */ zstream->next_in =3D vs->zrle->zrle.buffer; zstream->avail_in =3D vs->zrle->zrle.offset; - zstream->next_out =3D vs->zrle->zlib.buffer + vs->zrle->zlib.offset; - zstream->avail_out =3D vs->zrle->zlib.capacity - vs->zrle->zlib.offset; + zstream->next_out =3D vs->zrle->zlib.buffer; + zstream->avail_out =3D vs->zrle->zlib.capacity; zstream->data_type =3D Z_BINARY; =20 /* start encoding */ diff --git a/ui/vnc.c b/ui/vnc.c index 3e8d1f120710..1d7138a3a073 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -2071,8 +2071,15 @@ static void set_encodings(VncState *vs, int32_t *enc= odings, size_t n_encodings) break; #endif case VNC_ENCODING_ZLIB: - vs->features |=3D VNC_FEATURE_ZLIB_MASK; - vs->vnc_encoding =3D enc; + /* + * VNC_ENCODING_ZRLE compresses better than VNC_ENCODING_ZLIB. + * So prioritize ZRLE, even if the client hints that it prefers + * ZLIB. + */ + if ((vs->features & VNC_FEATURE_ZRLE_MASK) =3D=3D 0) { + vs->features |=3D VNC_FEATURE_ZLIB_MASK; + vs->vnc_encoding =3D enc; + } break; case VNC_ENCODING_ZRLE: vs->features |=3D VNC_FEATURE_ZRLE_MASK; --=20 2.18.1