PFA pahole output
On 01/27/2017 03:08 PM, Oleksandr Andrushchenko wrote:
From: Oleksandr Andrushchenko <oleksandr_andrushche...@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
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 */
};
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 */
};
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel