As agreed on PV call PFA pahole results

On 12/22/2016 10:12 AM, Oleksandr Andrushchenko wrote:
From: Oleksandr Andrushchenko <oleksandr_andrushche...@epam.com>

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

Oleksandr Andrushchenko (1):
   displif: add ABI for para-virtual display

  xen/include/public/io/displif.h | 730 ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 730 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 */
        int8_t                     status;               /*     3     1 */
        uint8_t                    reserved[60];         /*     4    60 */

        /* size: 64, cachelines: 1, members: 4 */
};
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 */
        int8_t                     status;               /*     3     1 */
        uint8_t                    reserved[60];         /*     4    60 */

        /* size: 64, cachelines: 1, members: 4 */
};
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

Reply via email to