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

Reply via email to