Discussion of the VIRTIO specification
 help / color / mirror / Atom feed
* [virtio-comment] [PATCH v1] virtio-gpu: Document new fence-passing feature
@ 2024-01-28 19:12 Dmitry Osipenko
  2024-01-30  1:34 ` [virtio-comment] " Gurchetan Singh
  0 siblings, 1 reply; 12+ messages in thread
From: Dmitry Osipenko @ 2024-01-28 19:12 UTC (permalink / raw)
  To: Gerd Hoffmann, Gurchetan Singh, Rob Clark, Huang Rui,
	Sergio Lopez, Pierre-Eric Pelloux-Prayer, virtio-comment

Document new virtio-gpu protocol fence-passing feature that extends 3d
submit command with support of in-fences which are passed from guest to
host for waiting. This feature allows to offload waiting for in-fences
from guest to host, where it can be done more efficiently.

Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
---
 device-types/gpu/description.tex | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/device-types/gpu/description.tex b/device-types/gpu/description.tex
index 443524851a05..e5e23b5c9072 100644
--- a/device-types/gpu/description.tex
+++ b/device-types/gpu/description.tex
@@ -37,6 +37,8 @@ \subsection{Feature bits}\label{sec:Device Types / GPU Device / Feature bits}
   resources is supported.
 \item[VIRTIO_GPU_F_CONTEXT_INIT (4)] multiple context types and
   synchronization timelines supported.  Requires VIRTIO_GPU_F_VIRGL.
+\item[VIRTIO_GPU_F_FENCE_PASSING (5)] passing fence IDs from guest to host
+  for waiting supported.  Requires VIRTIO_GPU_F_VIRGL.
 \end{description}
 
 \subsection{Device configuration layout}\label{sec:Device Types / GPU Device / Device configuration layout}
@@ -746,7 +748,25 @@ \subsubsection{Device Operation: controlq (3d)}\label{sec:Device Types / GPU Dev
 
 \item[VIRTIO_GPU_CMD_SUBMIT_3D]
   Submit an opaque command stream.  The type of the command stream is
-  determined when creating a context.
+  determined when creating a context.  Request data is
+  \field{struct virtio_gpu_cmd_submit}.  The \field{size} field describes
+  the size of \field{cmd_data} array in bytes.  The \field{num_in_fences}
+  field is active only if VIRTIO_GPU_F_FENCE_PASSING is enabled, otherwise
+  \field{num_in_fences} is treated as zero.  The array of \field{in_fences}
+  IDs is placed in between the \field{num_in_fences} field and the
+  \field{cmd_data} array.  The \field{in_fences} array contains virtio-gpu
+  \field{fence_id}'s corresponding to the out-fence IDs of a previous
+  3d submits.
+
+\begin{lstlisting}
+struct virtio_gpu_cmd_submit {
+        struct virtio_gpu_ctrl_hdr hdr;
+        le32 size;
+        le32 num_in_fences;
+        le64 in_fences[num_in_fences];
+        u32 cmd_data[size/4];
+};
+\end{lstlisting}
 
 \item[VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB] maps a host-only
   blob resource into an offset in the host visible memory region. Request
-- 
2.43.0


This publicly archived list offers a means to provide input to the
OASIS Virtual I/O Device (VIRTIO) TC.

In order to verify user consent to the Feedback License terms and
to minimize spam in the list archive, subscription is required
before posting.

Subscribe: virtio-comment-subscribe@lists.oasis-open.org
Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org
List help: virtio-comment-help@lists.oasis-open.org
List archive: https://lists.oasis-open.org/archives/virtio-comment/
Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf
List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists
Committee: https://www.oasis-open.org/committees/virtio/
Join OASIS: https://www.oasis-open.org/join/


^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-02-13 22:37 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-28 19:12 [virtio-comment] [PATCH v1] virtio-gpu: Document new fence-passing feature Dmitry Osipenko
2024-01-30  1:34 ` [virtio-comment] " Gurchetan Singh
2024-01-30  5:21   ` Dmitry Osipenko
2024-02-01 16:59     ` Gurchetan Singh
     [not found]       ` <CAF6AEGtSGULUVVZ-45sdhUpffsqi7yM15aHSyPSt9=TMr8iEHw@mail.gmail.com>
2024-02-01 18:08         ` Gurchetan Singh
     [not found]           ` <CAF6AEGuQD-zuHjkjeBEuteyvQE33pGeF0XPDjGDZrZBrr=tNJg@mail.gmail.com>
2024-02-02 18:16             ` Gurchetan Singh
     [not found]               ` <CAF6AEGtmfFuh0iZpnzm9wbROeCcGx5hGU-BnnJKMcj0awhcZFQ@mail.gmail.com>
2024-02-07  0:09                 ` Gurchetan Singh
     [not found]                   ` <CAF6AEGu4tE5AoE9tjhbPYg94fyEyOLQAHhtsBK-DvC2ULRkgzQ@mail.gmail.com>
2024-02-09 18:02                     ` Gurchetan Singh
     [not found]                       ` <CAF6AEGsRremaP08tqKOmgfMK+yjgEkBsBpbNcgDkaZVUzE49OA@mail.gmail.com>
2024-02-13  0:19                         ` Gurchetan Singh
     [not found]                           ` <CAF6AEGv0CH6TvD1AbMQhsCa51Kr=xsx50etCjSinbqfCEbJ_wA@mail.gmail.com>
2024-02-13 22:37                             ` Gurchetan Singh
2024-02-05 14:53       ` Dmitry Osipenko
2024-02-07  0:21         ` Gurchetan Singh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox