From: Gurchetan Singh <gurchetansingh@chromium.org> To: dri-devel@lists.freedesktop.org, virtio-dev@lists.oasis-open.org Cc: kraxel@redhat.com Subject: [PATCH v2 01/12] virtio-gpu api: multiple context types with explicit initialization Date: Thu, 16 Sep 2021 18:08:31 -0700 [thread overview] Message-ID: <20210917010842.503-2-gurchetansingh@chromium.org> (raw) In-Reply-To: <20210917010842.503-1-gurchetansingh@chromium.org> This feature allows for each virtio-gpu 3D context to be created with a "context_init" variable. This variable can specify: - the type of protocol used by the context via the capset id. This is useful for differentiating virgl, gfxstream, and venus protocols by host userspace. - other things in the future, such as the version of the context. In addition, each different context needs one or more timelines, so for example a virgl context's waiting can be independent on a gfxstream context's waiting. VIRTIO_GPU_FLAG_INFO_RING_IDX is introduced to specific to tell the host which per-context command ring (or "hardware queue", distinct from the virtio-queue) the fence should be associated with. The new capability sets (gfxstream, venus etc.) are only defined in the virtio-gpu spec and not defined in the header. Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> Acked-by: Lingfeng Yang <lfy@google.com> --- include/uapi/linux/virtio_gpu.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/include/uapi/linux/virtio_gpu.h b/include/uapi/linux/virtio_gpu.h index 97523a95781d..b0e3d91dfab7 100644 --- a/include/uapi/linux/virtio_gpu.h +++ b/include/uapi/linux/virtio_gpu.h @@ -59,6 +59,11 @@ * VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB */ #define VIRTIO_GPU_F_RESOURCE_BLOB 3 +/* + * VIRTIO_GPU_CMD_CREATE_CONTEXT with + * context_init and multiple timelines + */ +#define VIRTIO_GPU_F_CONTEXT_INIT 4 enum virtio_gpu_ctrl_type { VIRTIO_GPU_UNDEFINED = 0, @@ -122,14 +127,20 @@ enum virtio_gpu_shm_id { VIRTIO_GPU_SHM_ID_HOST_VISIBLE = 1 }; -#define VIRTIO_GPU_FLAG_FENCE (1 << 0) +#define VIRTIO_GPU_FLAG_FENCE (1 << 0) +/* + * If the following flag is set, then ring_idx contains the index + * of the command ring that needs to used when creating the fence + */ +#define VIRTIO_GPU_FLAG_INFO_RING_IDX (1 << 1) struct virtio_gpu_ctrl_hdr { __le32 type; __le32 flags; __le64 fence_id; __le32 ctx_id; - __le32 padding; + u8 ring_idx; + u8 padding[3]; }; /* data passed in the cursor vq */ @@ -269,10 +280,11 @@ struct virtio_gpu_resource_create_3d { }; /* VIRTIO_GPU_CMD_CTX_CREATE */ +#define VIRTIO_GPU_CONTEXT_INIT_CAPSET_ID_MASK 0x000000ff struct virtio_gpu_ctx_create { struct virtio_gpu_ctrl_hdr hdr; __le32 nlen; - __le32 padding; + __le32 context_init; char debug_name[64]; }; -- 2.33.0.464.g1972c5931b-goog
WARNING: multiple messages have this Message-ID (diff)
From: Gurchetan Singh <gurchetansingh@chromium.org> To: dri-devel@lists.freedesktop.org, virtio-dev@lists.oasis-open.org Cc: kraxel@redhat.com Subject: [virtio-dev] [PATCH v2 01/12] virtio-gpu api: multiple context types with explicit initialization Date: Thu, 16 Sep 2021 18:08:31 -0700 [thread overview] Message-ID: <20210917010842.503-2-gurchetansingh@chromium.org> (raw) In-Reply-To: <20210917010842.503-1-gurchetansingh@chromium.org> This feature allows for each virtio-gpu 3D context to be created with a "context_init" variable. This variable can specify: - the type of protocol used by the context via the capset id. This is useful for differentiating virgl, gfxstream, and venus protocols by host userspace. - other things in the future, such as the version of the context. In addition, each different context needs one or more timelines, so for example a virgl context's waiting can be independent on a gfxstream context's waiting. VIRTIO_GPU_FLAG_INFO_RING_IDX is introduced to specific to tell the host which per-context command ring (or "hardware queue", distinct from the virtio-queue) the fence should be associated with. The new capability sets (gfxstream, venus etc.) are only defined in the virtio-gpu spec and not defined in the header. Signed-off-by: Gurchetan Singh <gurchetansingh@chromium.org> Acked-by: Lingfeng Yang <lfy@google.com> --- include/uapi/linux/virtio_gpu.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/include/uapi/linux/virtio_gpu.h b/include/uapi/linux/virtio_gpu.h index 97523a95781d..b0e3d91dfab7 100644 --- a/include/uapi/linux/virtio_gpu.h +++ b/include/uapi/linux/virtio_gpu.h @@ -59,6 +59,11 @@ * VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB */ #define VIRTIO_GPU_F_RESOURCE_BLOB 3 +/* + * VIRTIO_GPU_CMD_CREATE_CONTEXT with + * context_init and multiple timelines + */ +#define VIRTIO_GPU_F_CONTEXT_INIT 4 enum virtio_gpu_ctrl_type { VIRTIO_GPU_UNDEFINED = 0, @@ -122,14 +127,20 @@ enum virtio_gpu_shm_id { VIRTIO_GPU_SHM_ID_HOST_VISIBLE = 1 }; -#define VIRTIO_GPU_FLAG_FENCE (1 << 0) +#define VIRTIO_GPU_FLAG_FENCE (1 << 0) +/* + * If the following flag is set, then ring_idx contains the index + * of the command ring that needs to used when creating the fence + */ +#define VIRTIO_GPU_FLAG_INFO_RING_IDX (1 << 1) struct virtio_gpu_ctrl_hdr { __le32 type; __le32 flags; __le64 fence_id; __le32 ctx_id; - __le32 padding; + u8 ring_idx; + u8 padding[3]; }; /* data passed in the cursor vq */ @@ -269,10 +280,11 @@ struct virtio_gpu_resource_create_3d { }; /* VIRTIO_GPU_CMD_CTX_CREATE */ +#define VIRTIO_GPU_CONTEXT_INIT_CAPSET_ID_MASK 0x000000ff struct virtio_gpu_ctx_create { struct virtio_gpu_ctrl_hdr hdr; __le32 nlen; - __le32 padding; + __le32 context_init; char debug_name[64]; }; -- 2.33.0.464.g1972c5931b-goog --------------------------------------------------------------------- To unsubscribe, e-mail: virtio-dev-unsubscribe@lists.oasis-open.org For additional commands, e-mail: virtio-dev-help@lists.oasis-open.org
next prev parent reply other threads:[~2021-09-17 1:08 UTC|newest] Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-17 1:08 [PATCH v2 00/12] Context types Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` Gurchetan Singh [this message] 2021-09-17 1:08 ` [virtio-dev] [PATCH v2 01/12] virtio-gpu api: multiple context types with explicit initialization Gurchetan Singh 2021-09-20 15:40 ` kernel test robot 2021-09-20 15:40 ` kernel test robot 2021-09-17 1:08 ` [PATCH v2 02/12] drm/virtgpu api: create context init feature Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 03/12] drm/virtio: implement context init: track valid capabilities in a mask Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 04/12] drm/virtio: implement context init: probe for feature Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 05/12] drm/virtio: implement context init: support init ioctl Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 06/12] drm/virtio: implement context init: track {ring_idx, emit_fence_info} in virtio_gpu_fence Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 07/12] drm/virtio: implement context init: plumb {base_fence_ctx, ring_idx} to virtio_gpu_fence_alloc Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 08/12] drm/virtio: implement context init: stop using drv->context when creating fence Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 09/12] drm/virtio: implement context init: allocate an array of fence contexts Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 10/12] drm/virtio: implement context init: handle VIRTGPU_CONTEXT_PARAM_POLL_RINGS_MASK Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 1:08 ` [PATCH v2 11/12] drm/virtio: implement context init: add virtio_gpu_fence_event Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh 2021-09-17 21:50 ` Kasireddy, Vivek 2021-09-17 1:08 ` [PATCH v2 12/12] drm/virtio: implement context init: advertise feature to userspace Gurchetan Singh 2021-09-17 1:08 ` [virtio-dev] " Gurchetan Singh
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=20210917010842.503-2-gurchetansingh@chromium.org \ --to=gurchetansingh@chromium.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=kraxel@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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.