aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2018-10-24 14:15:51 +0200
committerMichael S. Tsirkin <mst@redhat.com>2018-11-30 15:24:37 -0500
commit31d2e3565d9cc57013af00fae986d28a001a7d87 (patch)
tree3fdb179ca1c8f71edebcd854abec658d2d7ac941
parent94384142f64f11acbbaace100b913e49e9c5e71b (diff)
downloadvirtio-spec-31d2e3565d9cc57013af00fae986d28a001a7d87.tar.gz
Add VIRTIO_GPU_F_EDID to virtio-gpu.
The feature allows the guest request an EDID blob (describing monitor capabilities) for a given scanout (aka virtual monitor connector). It brings a new command message, which has just a scanout field (beside the standard virtio-gpu header) and a response message which carries the EDID data. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Fixes: https://github.com/oasis-tcs/virtio-spec/issues/22 Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r--virtio-gpu.tex31
1 files changed, 31 insertions, 0 deletions
diff --git a/virtio-gpu.tex b/virtio-gpu.tex
index 5d4709a..0cf2209 100644
--- a/virtio-gpu.tex
+++ b/virtio-gpu.tex
@@ -34,6 +34,7 @@ control queue.
\begin{description}
\item[VIRTIO_GPU_F_VIRGL (0)] virgl 3D mode is supported.
+\item[VIRTIO_GPU_F_EDID (1)] EDID is supported.
\end{description}
\subsection{Device configuration layout}\label{sec:Device Types / GPU Device / Device configuration layout}
@@ -171,6 +172,9 @@ enum virtio_gpu_ctrl_type {
VIRTIO_GPU_CMD_TRANSFER_TO_HOST_2D,
VIRTIO_GPU_CMD_RESOURCE_ATTACH_BACKING,
VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING,
+ VIRTIO_GPU_CMD_GET_CAPSET_INFO,
+ VIRTIO_GPU_CMD_GET_CAPSET,
+ VIRTIO_GPU_CMD_GET_EDID,
/* cursor commands */
VIRTIO_GPU_CMD_UPDATE_CURSOR = 0x0300,
@@ -179,6 +183,9 @@ enum virtio_gpu_ctrl_type {
/* success responses */
VIRTIO_GPU_RESP_OK_NODATA = 0x1100,
VIRTIO_GPU_RESP_OK_DISPLAY_INFO,
+ VIRTIO_GPU_RESP_OK_CAPSET_INFO,
+ VIRTIO_GPU_RESP_OK_CAPSET,
+ VIRTIO_GPU_RESP_OK_EDID,
/* error responses */
VIRTIO_GPU_RESP_ERR_UNSPEC = 0x1200,
@@ -275,6 +282,30 @@ The \field{enabled} field is set when the user enabled the display.
It is roughly the same as the connected state of a phyiscal display
connector.
+\item[VIRTIO_GPU_CMD_GET_EDID] Retrieve the EDID data for a given
+ scanout. Request data is \field{struct virtio_gpu_get_edid}).
+ Response type is VIRTIO_GPU_RESP_OK_EDID, response data is
+ \field{struct virtio_gpu_resp_edid}. Support is optional and
+ negotiated using the VIRTIO_GPU_F_EDID feature flag.
+
+\begin{lstlisting}
+struct virtio_gpu_get_edid {
+ struct virtio_gpu_ctrl_hdr hdr;
+ le32 scanout;
+ le32 padding;
+};
+
+struct virtio_gpu_resp_edid {
+ struct virtio_gpu_ctrl_hdr hdr;
+ le32 size;
+ le32 padding;
+ u8 edid[1024];
+};
+\end{lstlisting}
+
+The response contains the EDID display data blob (as specified by
+VESA) for the scanout.
+
\item[VIRTIO_GPU_CMD_RESOURCE_CREATE_2D] Create a 2D resource on the
host. Request data is \field{struct virtio_gpu_resource_create_2d}.
Response type is VIRTIO_GPU_RESP_OK_NODATA.