From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99DB7C433ED for ; Wed, 14 Apr 2021 23:32:03 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 5384161131 for ; Wed, 14 Apr 2021 23:32:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5384161131 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 074E96E0AD; Wed, 14 Apr 2021 23:32:02 +0000 (UTC) Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3F3556E0AD for ; Wed, 14 Apr 2021 23:32:01 +0000 (UTC) Received: by mail-lf1-x12d.google.com with SMTP id i10so122967lfe.11 for ; Wed, 14 Apr 2021 16:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Y6SXXgC1JcZLJOEZQFvljxfI1U6Rzpl+osgbAlOdSjQ=; b=ZXfSdsz8DAT2/9r2mEM9bbdUHcHXO0DUvD96w1N4FoUvKA+uAYHAWkczFCEL0CuEMW CrYDP0RHVGX3z+q0dVMLtIccubVZGVCmxz+sAmwmTaaULFQM/ftlJXrdKdt3EN07SxcY XbWrWl6XzjkLAmNKpGNfQSqc7CV8ed7HquXck= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Y6SXXgC1JcZLJOEZQFvljxfI1U6Rzpl+osgbAlOdSjQ=; b=ucsPP33xMLx+wp16Gx1rAKgEz4A0g0FQgVpCHBBtg0WV8CJEklJCOKWi3oMuwU5ifZ mEH8SEV2u1NdVd/BeECuQX1V4lna70BEOFjsCG2+nFR817aMGv9eEJrCxmZwRpA99i0J juLXj36MMQkmIBmWsXM5mP2lu7M54SZSoIJAcjnA996U7ji7p9O7v0ClWqk3aYX5dqH5 EC2nKAv5Tubda6wXAJBsoek4luUCytiuIsxj83NpY7z4UDwWzCo8XLrusJ8o+NHyhZ3c g9gL0z5wdwvkHdh4h3SlwF/b9sO8HOIpTdI3gjaeHzljtJ4UzPsXx7aMuLbzS4dZGZWP 2l6Q== X-Gm-Message-State: AOAM532MQ/GsmMSosDoYfbUYLmjBTu0pqNBEZYcdrcjHGBPXoTCm5BH1 zGBXerhYd5DM8SUwH9esTDLZ42Y9HJYFXQ== X-Google-Smtp-Source: ABdhPJxR/RGoMU14K5vY+V5Qfv16wE/DT0X7kLtkjXKnCnmMIcH/IkNZqXW4RmTO2p5ijZ6jb2Al1w== X-Received: by 2002:a19:257:: with SMTP id 84mr392738lfc.575.1618443119477; Wed, 14 Apr 2021 16:31:59 -0700 (PDT) Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com. [209.85.208.178]) by smtp.gmail.com with ESMTPSA id a4sm344207lfs.130.2021.04.14.16.31.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 14 Apr 2021 16:31:59 -0700 (PDT) Received: by mail-lj1-f178.google.com with SMTP id a36so14233549ljq.8 for ; Wed, 14 Apr 2021 16:31:59 -0700 (PDT) X-Received: by 2002:a2e:819a:: with SMTP id e26mr218683ljg.222.1618443118753; Wed, 14 Apr 2021 16:31:58 -0700 (PDT) MIME-Version: 1.0 References: <20210413052614.2486768-1-vivek.kasireddy@intel.com> In-Reply-To: <20210413052614.2486768-1-vivek.kasireddy@intel.com> From: Gurchetan Singh Date: Wed, 14 Apr 2021 16:31:45 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] drm/virtio: Create Dumb BOs as guest Blobs (v3) To: Vivek Kasireddy X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann , ML dri-devel Content-Type: multipart/mixed; boundary="===============1620727332==" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" --===============1620727332== Content-Type: multipart/alternative; boundary="0000000000002f239e05bff72705" --0000000000002f239e05bff72705 Content-Type: text/plain; charset="UTF-8" On Mon, Apr 12, 2021 at 10:36 PM Vivek Kasireddy wrote: > If support for Blob resources is available, then dumb BOs created > by the driver can be considered as guest Blobs. > > v2: Don't skip transfer and flush commands as part of plane update > as the device may have created a shared mapping. (Gerd) > > v3: Don't create dumb BOs as Guest blobs if Virgl is enabled. (Gurchetan) > I think it is a good start and advances QEMU blobs. Improvements are always possible, but may be made at a future time. Acked-by: Gurchetan Singh > > Cc: Gerd Hoffmann > Signed-off-by: Vivek Kasireddy > --- > drivers/gpu/drm/virtio/virtgpu_gem.c | 8 ++++++++ > drivers/gpu/drm/virtio/virtgpu_object.c | 3 +++ > 2 files changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c > b/drivers/gpu/drm/virtio/virtgpu_gem.c > index 8502400b2f9c..2de61b63ef91 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_gem.c > +++ b/drivers/gpu/drm/virtio/virtgpu_gem.c > @@ -64,6 +64,7 @@ int virtio_gpu_mode_dumb_create(struct drm_file > *file_priv, > { > struct drm_gem_object *gobj; > struct virtio_gpu_object_params params = { 0 }; > + struct virtio_gpu_device *vgdev = dev->dev_private; > int ret; > uint32_t pitch; > > @@ -79,6 +80,13 @@ int virtio_gpu_mode_dumb_create(struct drm_file > *file_priv, > params.height = args->height; > params.size = args->size; > params.dumb = true; > + > + if (vgdev->has_resource_blob && !vgdev->has_virgl_3d) { > + params.blob_mem = VIRTGPU_BLOB_MEM_GUEST; > + params.blob_flags = VIRTGPU_BLOB_FLAG_USE_SHAREABLE; > + params.blob = true; > + } > + > ret = virtio_gpu_gem_create(file_priv, dev, ¶ms, &gobj, > &args->handle); > if (ret) > diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c > b/drivers/gpu/drm/virtio/virtgpu_object.c > index 4ff1ec28e630..f648b0e24447 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_object.c > +++ b/drivers/gpu/drm/virtio/virtgpu_object.c > @@ -254,6 +254,9 @@ int virtio_gpu_object_create(struct virtio_gpu_device > *vgdev, > } > > if (params->blob) { > + if (params->blob_mem == VIRTGPU_BLOB_MEM_GUEST) > + bo->guest_blob = true; > + > virtio_gpu_cmd_resource_create_blob(vgdev, bo, params, > ents, nents); > } else if (params->virgl) { > -- > 2.26.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel > --0000000000002f239e05bff72705 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


=
On Mon, Apr 12, 2021 at 10:36 PM Vive= k Kasireddy <vivek.kasiredd= y@intel.com> wrote:
If support for Blob resources is available, then dumb BOs create= d
by the driver can be considered as guest Blobs.

v2: Don't skip transfer and flush commands as part of plane update
as the device may have created a shared mapping. (Gerd)

v3: Don't create dumb BOs as Guest blobs if Virgl is enabled. (Gurcheta= n)

I think it is a good start and advan= ces QEMU blobs.=C2=A0 Improvements are always possible, but may be made at = a future time.

Acked-by: Gurchetan Singh <gurchetansingh@chromium.org&g= t;
=C2=A0

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
---
=C2=A0drivers/gpu/drm/virtio/virtgpu_gem.c=C2=A0 =C2=A0 | 8 ++++++++
=C2=A0drivers/gpu/drm/virtio/virtgpu_object.c | 3 +++
=C2=A02 files changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/virtio/virtgpu_gem.c b/drivers/gpu/drm/virtio/= virtgpu_gem.c
index 8502400b2f9c..2de61b63ef91 100644
--- a/drivers/gpu/drm/virtio/virtgpu_gem.c
+++ b/drivers/gpu/drm/virtio/virtgpu_gem.c
@@ -64,6 +64,7 @@ int virtio_gpu_mode_dumb_create(struct drm_file *file_pri= v,
=C2=A0{
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct drm_gem_object *gobj;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 struct virtio_gpu_object_params params =3D { 0 = };
+=C2=A0 =C2=A0 =C2=A0 =C2=A0struct virtio_gpu_device *vgdev =3D dev->dev= _private;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 int ret;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 uint32_t pitch;

@@ -79,6 +80,13 @@ int virtio_gpu_mode_dumb_create(struct drm_file *file_pr= iv,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 params.height =3D args->height;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 params.size =3D args->size;
=C2=A0 =C2=A0 =C2=A0 =C2=A0 params.dumb =3D true;
+
+=C2=A0 =C2=A0 =C2=A0 =C2=A0if (vgdev->has_resource_blob && !vgd= ev->has_virgl_3d) {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0params.blob_mem =3D= VIRTGPU_BLOB_MEM_GUEST;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0params.blob_flags = =3D VIRTGPU_BLOB_FLAG_USE_SHAREABLE;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0params.blob =3D tru= e;
+=C2=A0 =C2=A0 =C2=A0 =C2=A0}
+
=C2=A0 =C2=A0 =C2=A0 =C2=A0 ret =3D virtio_gpu_gem_create(file_priv, dev, &= amp;params, &gobj,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &args->handle);=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ret)
diff --git a/drivers/gpu/drm/virtio/virtgpu_object.c b/drivers/gpu/drm/virt= io/virtgpu_object.c
index 4ff1ec28e630..f648b0e24447 100644
--- a/drivers/gpu/drm/virtio/virtgpu_object.c
+++ b/drivers/gpu/drm/virtio/virtgpu_object.c
@@ -254,6 +254,9 @@ int virtio_gpu_object_create(struct virtio_gpu_device *= vgdev,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 }

=C2=A0 =C2=A0 =C2=A0 =C2=A0 if (params->blob) {
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (params->blob= _mem =3D=3D VIRTGPU_BLOB_MEM_GUEST)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0bo->guest_blob =3D true;
+
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 virtio_gpu_cmd_reso= urce_create_blob(vgdev, bo, params,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ents, nents);
=C2=A0 =C2=A0 =C2=A0 =C2=A0 } else if (params->virgl) {
--
2.26.2

_______________________________________________
dri-devel mailing list
dri-de= vel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listin= fo/dri-devel
--0000000000002f239e05bff72705-- --===============1620727332== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel --===============1620727332==--