From: Oleksandr Andrushchenko <andr2000@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: vlad.babchuk@gmail.com,
Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com,
joculator@gmail.com
Subject: Re: [PATCH v2] displif: add ABI for para-virtual display
Date: Fri, 27 Jan 2017 15:12:27 +0200 [thread overview]
Message-ID: <8ef0ef9f-e140-7ec0-ec66-b452ee7d8613@gmail.com> (raw)
In-Reply-To: <1485522532-9399-1-git-send-email-andr2000@gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 1263 bytes --]
PFA pahole output
On 01/27/2017 03:08 PM, Oleksandr Andrushchenko wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>
> This is the ABI for the two halves of a para-virtualized
> display driver.
>
> This protocol aims to provide a unified protocol which fits more
> sophisticated use-cases than a framebuffer device can handle. At the
> moment basic functionality is supported with the intention to extend:
> o multiple dynamically allocated/destroyed framebuffers
> o buffers of arbitrary sizes
> o better configuration options including multiple display support
>
> Note: existing fbif can be used together with displif running at the
> same time, e.g. on Linux one provides framebuffer and another DRM/KMS
>
> Future extensions to the existing protocol may include:
> o allow display/connector cloning
> o allow allocating objects other than display buffers
> o add planes/overlays support
> o support scaling
> o support rotation
>
> Oleksandr Andrushchenko (1):
> displif: add ABI for para-virtual display
>
> xen/include/public/io/displif.h | 745 ++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 745 insertions(+)
> create mode 100644 xen/include/public/io/displif.h
>
[-- Attachment #1.2: Type: text/html, Size: 1744 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: displif.diff --]
[-- Type: text/x-patch; name="displif.diff", Size: 0 bytes --]
[-- Attachment #3: displif-x32.txt --]
[-- Type: text/plain, Size: 4186 bytes --]
struct xendispl_dbuf_create_req {
uint64_t dbuf_cookie; /* 0 8 */
uint32_t width; /* 8 4 */
uint32_t height; /* 12 4 */
uint32_t bpp; /* 16 4 */
uint32_t buffer_sz; /* 20 4 */
uint32_t flags; /* 24 4 */
grant_ref_t gref_directory_start; /* 28 4 */
/* size: 32, cachelines: 1, members: 7 */
/* last cacheline: 32 bytes */
};
struct xendispl_page_directory {
grant_ref_t gref_dir_next_page; /* 0 4 */
grant_ref_t gref[1]; /* 4 4 */
/* size: 8, cachelines: 1, members: 2 */
/* last cacheline: 8 bytes */
};
struct xendispl_dbuf_destroy_req {
uint64_t dbuf_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_fb_attach_req {
uint64_t dbuf_cookie; /* 0 8 */
uint64_t fb_cookie; /* 8 8 */
uint32_t width; /* 16 4 */
uint32_t height; /* 20 4 */
uint32_t pixel_format; /* 24 4 */
/* size: 28, cachelines: 1, members: 5 */
/* last cacheline: 28 bytes */
};
struct xendispl_fb_detach_req {
uint64_t fb_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_set_config_req {
uint64_t fb_cookie; /* 0 8 */
uint32_t x; /* 8 4 */
uint32_t y; /* 12 4 */
uint32_t width; /* 16 4 */
uint32_t height; /* 20 4 */
uint32_t bpp; /* 24 4 */
/* size: 28, cachelines: 1, members: 6 */
/* last cacheline: 28 bytes */
};
struct xendispl_page_flip_req {
uint64_t fb_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_pg_flip_evt {
uint64_t fb_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_req {
uint16_t id; /* 0 2 */
uint8_t operation; /* 2 1 */
uint8_t reserved[5]; /* 3 5 */
union {
struct xendispl_dbuf_create_req dbuf_create; /* 32 */
struct xendispl_dbuf_destroy_req dbuf_destroy; /* 8 */
struct xendispl_fb_attach_req fb_attach; /* 28 */
struct xendispl_fb_detach_req fb_detach; /* 8 */
struct xendispl_set_config_req set_config; /* 28 */
struct xendispl_page_flip_req pg_flip; /* 8 */
uint8_t reserved[56]; /* 56 */
} op; /* 8 56 */
/* size: 64, cachelines: 1, members: 4 */
};
struct xendispl_resp {
uint16_t id; /* 0 2 */
uint8_t operation; /* 2 1 */
uint8_t reserved; /* 3 1 */
int32_t status; /* 4 4 */
uint8_t reserved1[56]; /* 8 56 */
/* size: 64, cachelines: 1, members: 5 */
};
struct xendispl_evt {
uint16_t id; /* 0 2 */
uint8_t type; /* 2 1 */
uint8_t reserved[5]; /* 3 5 */
union {
struct xendispl_pg_flip_evt pg_flip; /* 8 */
uint8_t reserved[56]; /* 56 */
} op; /* 8 56 */
/* size: 64, cachelines: 1, members: 4 */
};
[-- Attachment #4: displif-x64.txt --]
[-- Type: text/plain, Size: 4186 bytes --]
struct xendispl_dbuf_create_req {
uint64_t dbuf_cookie; /* 0 8 */
uint32_t width; /* 8 4 */
uint32_t height; /* 12 4 */
uint32_t bpp; /* 16 4 */
uint32_t buffer_sz; /* 20 4 */
uint32_t flags; /* 24 4 */
grant_ref_t gref_directory_start; /* 28 4 */
/* size: 32, cachelines: 1, members: 7 */
/* last cacheline: 32 bytes */
};
struct xendispl_page_directory {
grant_ref_t gref_dir_next_page; /* 0 4 */
grant_ref_t gref[1]; /* 4 4 */
/* size: 8, cachelines: 1, members: 2 */
/* last cacheline: 8 bytes */
};
struct xendispl_dbuf_destroy_req {
uint64_t dbuf_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_fb_attach_req {
uint64_t dbuf_cookie; /* 0 8 */
uint64_t fb_cookie; /* 8 8 */
uint32_t width; /* 16 4 */
uint32_t height; /* 20 4 */
uint32_t pixel_format; /* 24 4 */
/* size: 28, cachelines: 1, members: 5 */
/* last cacheline: 28 bytes */
};
struct xendispl_fb_detach_req {
uint64_t fb_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_set_config_req {
uint64_t fb_cookie; /* 0 8 */
uint32_t x; /* 8 4 */
uint32_t y; /* 12 4 */
uint32_t width; /* 16 4 */
uint32_t height; /* 20 4 */
uint32_t bpp; /* 24 4 */
/* size: 28, cachelines: 1, members: 6 */
/* last cacheline: 28 bytes */
};
struct xendispl_page_flip_req {
uint64_t fb_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_pg_flip_evt {
uint64_t fb_cookie; /* 0 8 */
/* size: 8, cachelines: 1, members: 1 */
/* last cacheline: 8 bytes */
};
struct xendispl_req {
uint16_t id; /* 0 2 */
uint8_t operation; /* 2 1 */
uint8_t reserved[5]; /* 3 5 */
union {
struct xendispl_dbuf_create_req dbuf_create; /* 32 */
struct xendispl_dbuf_destroy_req dbuf_destroy; /* 8 */
struct xendispl_fb_attach_req fb_attach; /* 28 */
struct xendispl_fb_detach_req fb_detach; /* 8 */
struct xendispl_set_config_req set_config; /* 28 */
struct xendispl_page_flip_req pg_flip; /* 8 */
uint8_t reserved[56]; /* 56 */
} op; /* 8 56 */
/* size: 64, cachelines: 1, members: 4 */
};
struct xendispl_resp {
uint16_t id; /* 0 2 */
uint8_t operation; /* 2 1 */
uint8_t reserved; /* 3 1 */
int32_t status; /* 4 4 */
uint8_t reserved1[56]; /* 8 56 */
/* size: 64, cachelines: 1, members: 5 */
};
struct xendispl_evt {
uint16_t id; /* 0 2 */
uint8_t type; /* 2 1 */
uint8_t reserved[5]; /* 3 5 */
union {
struct xendispl_pg_flip_evt pg_flip; /* 8 */
uint8_t reserved[56]; /* 56 */
} op; /* 8 56 */
/* size: 64, cachelines: 1, members: 4 */
};
[-- Attachment #5: Type: text/plain, Size: 127 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
prev parent reply other threads:[~2017-01-27 13:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-27 13:08 [PATCH v2] displif: add ABI for para-virtual display Oleksandr Andrushchenko
2017-01-27 13:08 ` Oleksandr Andrushchenko
2017-01-27 13:12 ` Oleksandr Andrushchenko [this message]
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=8ef0ef9f-e140-7ec0-ec66-b452ee7d8613@gmail.com \
--to=andr2000@gmail.com \
--cc=al1img@gmail.com \
--cc=andrii.anisov@gmail.com \
--cc=joculator@gmail.com \
--cc=oleksandr_andrushchenko@epam.com \
--cc=olekstysh@gmail.com \
--cc=vlad.babchuk@gmail.com \
--cc=xen-devel@lists.xenproject.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 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.