From: Keiichi Watanabe <keiichiw@chromium.org>
To: virtio-dev@lists.oasis-open.org
Cc: linux-media@vger.kernel.org, acourbot@chromium.org,
alexlau@chromium.org, daniel@ffwll.ch, dgreid@chromium.org,
dstaessens@chromium.org, dmitry.sepp@opensynergy.com,
egranata@google.com, fziglio@redhat.com, hverkuil@xs4all.nl,
keiichiw@chromium.org, kraxel@redhat.com, marcheu@chromium.org,
posciak@chromium.org, spice-devel@lists.freedesktop.org,
stevensd@chromium.org, tfiga@chromium.org, uril@redhat.com,
samiullah.khawaja@opensynergy.com, kiran.pawar@opensynergy.com
Subject: [PATCH v3 2/2] virtio-video: Define a feature for exported objects from different virtio devices
Date: Thu, 6 Feb 2020 19:20:58 +0900 [thread overview]
Message-ID: <20200206102058.247258-3-keiichiw@chromium.org> (raw)
In-Reply-To: <20200206102058.247258-1-keiichiw@chromium.org>
Define a new feature in the virtio-video protocol to use objects
exported from different virtio devices as video buffers.
Signed-off-by: Keiichi Watanabe <keiichiw@chromium.org>
---
virtio-video.tex | 58 +++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 50 insertions(+), 8 deletions(-)
diff --git a/virtio-video.tex b/virtio-video.tex
index 2eeee53..5d7451f 100644
--- a/virtio-video.tex
+++ b/virtio-video.tex
@@ -30,12 +30,16 @@ \subsection{Feature bits}
non-contiguous memories for video buffers. Without this flag, the
driver and device MUST use video buffers that are contiguous in the
device-side.
+\item[VIRTIO_VIDEO_F_RESOURCE_VIRTIO_OBJECT (2)] Object exported by
+ another virtio device can be used for video buffers.
\end{description}
\devicenormative{\subsubsection}{Feature bits}{Device Types / Video
Device / Feature bits}
-The device MUST offer VIRTIO_VIDEO_F_RESOURCE_GUEST_PAGES.
+The device MUST offer at least either
+VIRTIO_VIDEO_F_RESOURCE_GUEST_PAGES or
+VIRTIO_VIDEO_F_RESOURCE_VIRTIO_OBJECT.
\subsection{Device configuration layout}
\label{sec:Device Types / Video Device / Device configuration layout}
@@ -182,8 +186,9 @@ \subsubsection{Command Virtqueue}
The device MUST return its capability with \field{
virtio_video_capability_resp} that includes the following fields:
\begin{description}
-\item[\field{num_descs}] is a number of \field{virtio_video_format_desc}
- that follow. The value MUST not exceed 64.
+\item[\field{num_descs}] is a number of
+ \field{virtio_video_format_desc} that follow. The value MUST not
+ exceed 64.
\end{description}
The format description \field{virtio_video_format_desc} is defined as
@@ -299,6 +304,7 @@ \subsubsection{Command Virtqueue}
\begin{lstlisting}
enum virtio_video_mem_type {
VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES,
+ VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT,
};
struct virtio_video_stream_create {
@@ -310,13 +316,19 @@ \subsubsection{Command Virtqueue}
u8 tag[64];
};
\end{lstlisting}
+
\begin{description}
\item[\field{in_mem_type, out_mem_type}] is a type of buffer
- management for input /output buffers. The driver MUST set a value in
+ management for input/output buffers. The driver MUST set a value in
\field{enum virtio_video_mem_type} that the device reported a
corresponding feature bit.
\begin{description}
-\item[\field{VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES}] Use guest pages.
+\item[\field{VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES}] Use guest pages. The
+ driver MUST not set this value if a feature bit
+ VIRTIO_VIDEO_F_RESOURCE_GUEST_PAGES is not set.
+\item[\field{VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT}] Use object exported
+ by another virtio device. The driver MUST not set this value if a
+ feature bit VIRTIO_VIDEO_F_RESOURCE_VIRTIO_OBJECT is not set.
\end{description}
\item[\field{coded_format}] is the encoded format that will be
processed.
@@ -365,7 +377,13 @@ \subsubsection{Command Virtqueue}
le32 num_planes;
le32 plane_offsets[VIRTIO_VIDEO_MAX_PLANES];
le32 num_entries[VIRTIO_VIDEO_MAX_PLANES];
- /* Followed by struct virtio_video_mem_entry entries[] */
+ /*
+ * Followed by either
+ * - struct virtio_video_mem_entry entries[]
+ * for VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES
+ * - struct virtio_video_object_entry entries[]
+ * for VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT
+ */
};
\end{lstlisting}
\begin{description}
@@ -387,8 +405,13 @@ \subsubsection{Command Virtqueue}
used.
\end{description}
-The \field{virtio_video_resource_create} is followed by an array of
-\field{virtio_video_mem_entry} defined as follows:
+The data following \field{virtio_video_resource_create} depend on a
+type of \field{virtio_video_mem_type} specified in
+\field{virtio_video_stream_create}.
+\begin{itemize*}
+\item When \field{VIRTIO_VIDEO_MEM_TYPE_GUEST_PAGES} was specified,
+ \field{virtio_video_resource_create} is followed by an array of
+ \field{virtio_video_mem_entry} defined as follows:
\begin{lstlisting}
struct virtio_video_mem_entry {
le64 addr;
@@ -403,6 +426,25 @@ \subsubsection{Command Virtqueue}
The number of \field{virtio_video_mem_entry} MUST be equal to the sum
of integers in the array \field{num_entries}.
+\item When \field{VIRTIO_VIDEO_MEM_TYPE_VIRTIO_OBJECT} was specified,
+ \field{virtio_video_resource_create} is followed by an array of
+ \field{virtio_video_object_entry} defined as follows:
+
+\begin{lstlisting}
+struct virtio_video_object_entry {
+ le64 uuid_low;
+ le64 uuid_high;
+};
+\end{lstlisting}
+\begin{description}
+\item[\field{uuid_low, uuid_high}] is a UUID of the resource.
+\end{description}
+If \field{planes_layout} is VIRTIO_VIDEO_PLANES_LAYOUT_SINGLE_BUFFER,
+the number of \field{virtio_video_object_entry} MUST be one. If it is
+VIRTIO_VIDEO_PLANES_LAYOUT_PER_PLANE, the number MUST be equal to
+\field{num_planes}.
+\end{itemize*}
+
\item[VIRTIO_VIDEO_CMD_RESOURCE_DESTROY_ALL] Invalidate all the
resource descriptor created so far.
\begin{lstlisting}
--
2.25.0.341.g760bfbb309-goog
next prev parent reply other threads:[~2020-02-06 10:21 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-06 10:20 [PATCH v3 0/2] Virtio video device specification Keiichi Watanabe
2020-02-06 10:20 ` [PATCH v3 1/2] virtio-video: Add virtio " Keiichi Watanabe
2020-02-25 9:59 ` Gerd Hoffmann
2020-02-27 7:24 ` Keiichi Watanabe
2020-02-27 9:28 ` Gerd Hoffmann
2020-03-04 4:31 ` Alexandre Courbot
2020-03-04 6:42 ` Gerd Hoffmann
2020-03-04 10:07 ` Alexandre Courbot
2020-03-23 12:07 ` Keiichi Watanabe
2020-03-23 13:28 ` Dmitry Sepp
2020-03-23 15:48 ` Keiichi Watanabe
2020-03-25 9:47 ` Dmitry Sepp
2020-03-27 3:35 ` Keiichi Watanabe
2020-03-30 9:53 ` Dmitry Sepp
2020-04-06 9:32 ` Alexandre Courbot
2020-04-06 11:46 ` Keiichi Watanabe
2020-04-07 9:21 ` Dmitry Sepp
2020-04-09 10:46 ` Keiichi Watanabe
2020-04-17 8:08 ` Dmitry Sepp
2020-04-20 9:57 ` Keiichi Watanabe
2020-04-21 8:38 ` Dmitry Sepp
2020-04-24 11:42 ` Keiichi Watanabe
2020-04-27 14:28 ` Dmitry Sepp
2020-04-07 14:49 ` Dmitry Sepp
2020-04-09 10:46 ` Keiichi Watanabe
2020-04-09 13:13 ` Dmitry Sepp
2020-04-24 11:45 ` Keiichi Watanabe
2020-04-27 9:33 ` Dmitry Sepp
2020-05-18 5:17 ` Keiichi Watanabe
2020-05-27 12:12 ` Dmitry Sepp
2020-05-29 14:21 ` Keiichi Watanabe
2020-06-01 7:19 ` Alexandre Courbot
2020-02-06 10:20 ` Keiichi Watanabe [this message]
2020-02-25 10:01 ` [PATCH v3 2/2] virtio-video: Define a feature for exported objects from different virtio devices Gerd Hoffmann
2020-02-27 7:24 ` Keiichi Watanabe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200206102058.247258-3-keiichiw@chromium.org \
--to=keiichiw@chromium.org \
--cc=acourbot@chromium.org \
--cc=alexlau@chromium.org \
--cc=daniel@ffwll.ch \
--cc=dgreid@chromium.org \
--cc=dmitry.sepp@opensynergy.com \
--cc=dstaessens@chromium.org \
--cc=egranata@google.com \
--cc=fziglio@redhat.com \
--cc=hverkuil@xs4all.nl \
--cc=kiran.pawar@opensynergy.com \
--cc=kraxel@redhat.com \
--cc=linux-media@vger.kernel.org \
--cc=marcheu@chromium.org \
--cc=posciak@chromium.org \
--cc=samiullah.khawaja@opensynergy.com \
--cc=spice-devel@lists.freedesktop.org \
--cc=stevensd@chromium.org \
--cc=tfiga@chromium.org \
--cc=uril@redhat.com \
--cc=virtio-dev@lists.oasis-open.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).