All of lore.kernel.org
 help / color / mirror / Atom feed
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

      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.