From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v2] displif: add ABI for para-virtual display Date: Fri, 27 Jan 2017 15:12:27 +0200 Message-ID: <8ef0ef9f-e140-7ec0-ec66-b452ee7d8613@gmail.com> References: <1485522532-9399-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------1D119B0ACC1D85C205506624" Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cX6KN-0008DQ-N4 for xen-devel@lists.xenproject.org; Fri, 27 Jan 2017 13:12:31 +0000 Received: by mail-wm0-f67.google.com with SMTP id r144so58243597wme.0 for ; Fri, 27 Jan 2017 05:12:29 -0800 (PST) In-Reply-To: <1485522532-9399-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: vlad.babchuk@gmail.com, Oleksandr Andrushchenko , andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------1D119B0ACC1D85C205506624 Content-Type: multipart/alternative; boundary="------------C4935D0EE3C67CCFB9A152D7" --------------C4935D0EE3C67CCFB9A152D7 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit PFA pahole output On 01/27/2017 03:08 PM, Oleksandr Andrushchenko wrote: > From: Oleksandr Andrushchenko > > 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 > --------------C4935D0EE3C67CCFB9A152D7 Content-Type: text/html; charset=windows-1252 Content-Transfer-Encoding: 7bit

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


--------------C4935D0EE3C67CCFB9A152D7-- --------------1D119B0ACC1D85C205506624 Content-Type: text/x-patch; name="displif.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="displif.diff" --------------1D119B0ACC1D85C205506624 Content-Type: text/plain; charset=UTF-8; name="displif-x32.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="displif-x32.txt" 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 */ }; --------------1D119B0ACC1D85C205506624 Content-Type: text/plain; charset=UTF-8; name="displif-x64.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="displif-x64.txt" 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 */ }; --------------1D119B0ACC1D85C205506624 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg== --------------1D119B0ACC1D85C205506624--