egl/wayland: Add FP16 format support
authorAdam Jackson <ajax@redhat.com>
Fri, 30 Aug 2019 19:35:22 +0000 (15:35 -0400)
committerAdam Jackson <ajax@nwnk.net>
Fri, 20 Sep 2019 19:10:31 +0000 (19:10 +0000)
Reviewed-by: Kevin Strasser <kevin.strasser@intel.com>
src/egl/drivers/dri2/egl_dri2.h
src/egl/drivers/dri2/platform_wayland.c
src/egl/wayland/wayland-drm/wayland-drm.xml

index 2a8307ab3217709aca29186829b82c6d92130989..146f954eacf5ecd22727d7ae1128b0184d2f2696 100644 (file)
@@ -83,7 +83,7 @@ struct zwp_linux_dmabuf_v1;
 #include "util/u_vector.h"
 #include "util/bitset.h"
 
-#define EGL_DRI2_MAX_FORMATS 8
+#define EGL_DRI2_MAX_FORMATS 10
 
 struct wl_buffer;
 
index 55f99fe662cb7bf50c7ef07f8da4c069b2bd3b92..b93d813928114c58a76463eb42a799ae82946d9f 100644 (file)
 #include "wayland-drm-client-protocol.h"
 #include "linux-dmabuf-unstable-v1-client-protocol.h"
 
+/* cheesy workaround until wayland 1.18 is released */
+#if WAYLAND_VERSION_MAJOR > 1 || \
+   (WAYLAND_VERSION_MAJOR == 1 && WAYLAND_VERSION_MINOR < 18)
+#define WL_SHM_FORMAT_ABGR16161616F 0x48344241
+#define WL_SHM_FORMAT_XBGR16161616F 0x48344258
+#endif
+
 /*
  * The index of entries in this table is used as a bitmask in
  * dri2_dpy->formats, which tracks the formats supported by our server.
@@ -72,6 +79,20 @@ static const struct dri2_wl_visual {
    int rgba_shifts[4];
    unsigned int rgba_sizes[4];
 } dri2_wl_visuals[] = {
+   {
+      "ABGR16F",
+      WL_DRM_FORMAT_ABGR16F, WL_SHM_FORMAT_ABGR16161616F,
+      __DRI_IMAGE_FORMAT_ABGR16161616F, 0, 64,
+      { 0, 16, 32, 48 },
+      { 16, 16, 16, 16 },
+   },
+   {
+      "XBGR16F",
+      WL_DRM_FORMAT_XBGR16F, WL_SHM_FORMAT_XBGR16161616F,
+      __DRI_IMAGE_FORMAT_XBGR16161616F, 0, 64,
+      { 0, 16, 32, -1 },
+      { 16, 16, 16, 0 },
+   },
    {
       "XRGB2101010",
       WL_DRM_FORMAT_XRGB2101010, WL_SHM_FORMAT_XRGB2101010,
index a1f2540e42644a9abf3940a4e58b2df046ee911f..eaf2654ab266575ca5ca03907709af6580e988c5 100644 (file)
       <entry name="yvu422" value="0x36315659"/>
       <entry name="yuv444" value="0x34325559"/>
       <entry name="yvu444" value="0x34325659"/>
+      <entry name="abgr16f" value="0x48344241"/>
+      <entry name="xbgr16f" value="0x48344258"/>
     </enum>
 
     <!-- Call this request with the magic received from drmGetMagic().