Загрузка данных


        {
                DRM_FORMAT(RGBX4444),
                BITS_RGBA_FIXED(4, 4, 4, 0),
                .bpp = 16,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_SHORT_4_4_4_4),
#endif
        },
        {
                DRM_FORMAT(RGBA4444),
                BITS_RGBA_FIXED(4, 4, 4, 4),
                .bpp = 16,
                .opaque_substitute = DRM_FORMAT_RGBX4444,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_SHORT_4_4_4_4),
#endif
        },
        {
                DRM_FORMAT(BGRX4444),
                BITS_RGBA_FIXED(4, 4, 4, 0),
                .bpp = 16,
        },
        {
                DRM_FORMAT(BGRA4444),
                BITS_RGBA_FIXED(4, 4, 4, 4),
                .bpp = 16,
                .opaque_substitute = DRM_FORMAT_BGRX4444,
        },
        {
                DRM_FORMAT(XRGB1555),
                BITS_RGBA_FIXED(5, 5, 5, 0),
                .addfb_legacy_depth = 15,
                .bpp = 16,
        },
        {
                DRM_FORMAT(ARGB1555),
                BITS_RGBA_FIXED(5, 5, 5, 1),
                .bpp = 16,
                .opaque_substitute = DRM_FORMAT_XRGB1555,
        },
        {
                DRM_FORMAT(XBGR1555),
                BITS_RGBA_FIXED(5, 5, 5, 0),
                .bpp = 16,
        },
        {
                DRM_FORMAT(ABGR1555),
                BITS_RGBA_FIXED(5, 5, 5, 1),
                .bpp = 16,
                .opaque_substitute = DRM_FORMAT_XBGR1555,
        },
        {
                DRM_FORMAT(RGBX5551),
                BITS_RGBA_FIXED(5, 5, 5, 0),
                .bpp = 16,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_SHORT_5_5_5_1),
#endif
        },
        {
                DRM_FORMAT(RGBA5551),
                BITS_RGBA_FIXED(5, 5, 5, 1),
                .bpp = 16,
                .opaque_substitute = DRM_FORMAT_RGBX5551,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_SHORT_5_5_5_1),
#endif
        },
        {
                DRM_FORMAT(BGRX5551),
                BITS_RGBA_FIXED(5, 5, 5, 0),
                .bpp = 16,
        },
        {
                DRM_FORMAT(BGRA5551),
                BITS_RGBA_FIXED(5, 5, 5, 1),
                .bpp = 16,
                .opaque_substitute = DRM_FORMAT_BGRX5551,
        },
        {
                DRM_FORMAT(RGB565),
                BITS_RGBA_FIXED(5, 6, 5, 0),
                .addfb_legacy_depth = 16,
                .bpp = 16,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGB),
                GL_TYPE(GL_UNSIGNED_SHORT_5_6_5),
                PIXMAN_FMT(r5g6b5),
#endif
        },
        {
                DRM_FORMAT(BGR565),
                BITS_RGBA_FIXED(5, 6, 5, 0),
                .bpp = 16,
        },
        {
                DRM_FORMAT(RGB888),
                BITS_RGBA_FIXED(8, 8, 8, 0),
                .bpp = 24,
                GL_FORMAT(GL_RGB),
                GL_TYPE(GL_UNSIGNED_BYTE),
                GL_CHANNEL_ORDER(BGRA),
        },
        {
                DRM_FORMAT(BGR888),
                BITS_RGBA_FIXED(8, 8, 8, 0),
                .bpp = 24,
                GL_FORMAT(GL_RGB),
                GL_TYPE(GL_UNSIGNED_BYTE),
        },
        {
                DRM_FORMAT(XRGB8888),
                BITS_RGBA_FIXED(8, 8, 8, 0),
                .addfb_legacy_depth = 24,
                .bpp = 32,
                GL_INTERNALFORMAT(GL_RGB8),
                GL_FORMAT(GL_BGRA_EXT),
                GL_TYPE(GL_UNSIGNED_BYTE),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(x8r8g8b8),
#else
                PIXMAN_FMT(b8g8r8x8),
#endif
        },
        {
                DRM_FORMAT(ARGB8888),
                BITS_RGBA_FIXED(8, 8, 8, 8),
                .opaque_substitute = DRM_FORMAT_XRGB8888,
                .addfb_legacy_depth = 32,
                .bpp = 32,
                GL_INTERNALFORMAT(GL_RGBA8),
                GL_FORMAT(GL_BGRA_EXT),
                GL_TYPE(GL_UNSIGNED_BYTE),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(a8r8g8b8),
#else
                PIXMAN_FMT(b8g8r8a8),
#endif
        },
        {
                DRM_FORMAT(XBGR8888),
                BITS_RGBA_FIXED(8, 8, 8, 0),
                .bpp = 32,
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_BYTE),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(x8b8g8r8),
#else
                PIXMAN_FMT(r8g8b8x8),
#endif
        },
        {
                DRM_FORMAT(ABGR8888),
                BITS_RGBA_FIXED(8, 8, 8, 8),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_XBGR8888,
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_BYTE),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(a8b8g8r8),
#else
                PIXMAN_FMT(r8g8b8a8),
#endif
        },
        {
                DRM_FORMAT(RGBX8888),
                BITS_RGBA_FIXED(8, 8, 8, 0),
                .bpp = 32,
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_BYTE),
                GL_CHANNEL_ORDER(ABGR),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(r8g8b8x8),
#else
                PIXMAN_FMT(x8b8g8r8),
#endif
        },
        {
                DRM_FORMAT(RGBA8888),
                BITS_RGBA_FIXED(8, 8, 8, 8),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_RGBX8888,
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_BYTE),
                GL_CHANNEL_ORDER(ABGR),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(r8g8b8a8),
#else
                PIXMAN_FMT(a8b8g8r8),
#endif
        },
        {
                DRM_FORMAT(BGRX8888),
                BITS_RGBA_FIXED(8, 8, 8, 0),
                .bpp = 32,
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_BYTE),
                GL_CHANNEL_ORDER(ARGB),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(b8g8r8x8),
#else
                PIXMAN_FMT(x8r8g8b8),
#endif
        },
        {
                DRM_FORMAT(BGRA8888),
                BITS_RGBA_FIXED(8, 8, 8, 8),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_BGRX8888,
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_BYTE),
                GL_CHANNEL_ORDER(ARGB),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(b8g8r8a8),
#else
                PIXMAN_FMT(a8r8g8b8),
#endif
        },
        {
                DRM_FORMAT(XRGB2101010),
                BITS_RGBA_FIXED(10, 10, 10, 0),
                .addfb_legacy_depth = 30,
                .bpp = 32,
                GL_INTERNALFORMAT(GL_RGB10_A2),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(x2r10g10b10),
#endif
        },
        {
                DRM_FORMAT(ARGB2101010),
                BITS_RGBA_FIXED(10, 10, 10, 2),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_XRGB2101010,
                GL_INTERNALFORMAT(GL_RGB10_A2),
#if __BYTE_ORDER == __LITTLE_ENDIAN
                PIXMAN_FMT(a2r10g10b10),
#endif
        },
        {
                DRM_FORMAT(XBGR2101010),
                BITS_RGBA_FIXED(10, 10, 10, 0),
                .bpp = 32,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_INT_2_10_10_10_REV_EXT),
                PIXMAN_FMT(x2b10g10r10),
#endif
        },
        {
                DRM_FORMAT(ABGR2101010),
                BITS_RGBA_FIXED(10, 10, 10, 2),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_XBGR2101010,
# if __BYTE_ORDER == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA),
                GL_TYPE(GL_UNSIGNED_INT_2_10_10_10_REV_EXT),
                PIXMAN_FMT(a2b10g10r10),
#endif
        },
        {
                DRM_FORMAT(RGBX1010102),
                BITS_RGBA_FIXED(10, 10, 10, 0),
                .bpp = 32,
        },
        {
                DRM_FORMAT(RGBA1010102),
                BITS_RGBA_FIXED(10, 10, 10, 2),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_RGBX1010102,
        },
        {
                DRM_FORMAT(BGRX1010102),
                BITS_RGBA_FIXED(10, 10, 10, 0),
                .bpp = 32,
        },
        {
                DRM_FORMAT(BGRA1010102),
                BITS_RGBA_FIXED(10, 10, 10, 2),
                .bpp = 32,
                .opaque_substitute = DRM_FORMAT_BGRX1010102,
        },
        {
                DRM_FORMAT(XBGR16161616),
                BITS_RGBA_FIXED(16, 16, 16, 0),
                .bpp = 64,
#if __BYTE_ORDER__ == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA16_EXT),
                GL_TYPE(GL_UNSIGNED_SHORT),
#endif
        },
        {
                DRM_FORMAT(ABGR16161616),
                BITS_RGBA_FIXED(16, 16, 16, 16),
                .bpp = 64,
                .opaque_substitute = DRM_FORMAT_XBGR16161616,
#if __BYTE_ORDER__ == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA16_EXT),
                GL_TYPE(GL_UNSIGNED_SHORT),
#endif
        },
        {
                DRM_FORMAT(XBGR16161616F),
                BITS_RGBA_FLOAT(16, 16, 16, 0),
                .bpp = 64,
#if __BYTE_ORDER__ == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA16F),
                GL_TYPE(GL_HALF_FLOAT),
#endif
        },
        {
                DRM_FORMAT(ABGR16161616F),
                BITS_RGBA_FLOAT(16, 16, 16, 16),
                .bpp = 64,
                .opaque_substitute = DRM_FORMAT_XBGR16161616F,
#if __BYTE_ORDER__ == __LITTLE_ENDIAN
                GL_FORMAT(GL_RGBA16F),
                GL_TYPE(GL_HALF_FLOAT),
#endif
        },
        {
                DRM_FORMAT(XRGB16161616F),
                BITS_RGBA_FLOAT(16, 16, 16, 0),
                .bpp = 64,
        },
        {
                DRM_FORMAT(ARGB16161616F),
                BITS_RGBA_FLOAT(16, 16, 16, 16),
                .bpp = 64,
                .opaque_substitute = DRM_FORMAT_XRGB16161616F,
        },
        {
                DRM_FORMAT(YUYV),
                SAMPLER_TYPE(EGL_TEXTURE_Y_XUXV_WL),
                .num_planes = 1,
                .hsub = 2,
        },
        {
                DRM_FORMAT(YVYU),
                SAMPLER_TYPE(EGL_TEXTURE_Y_XUXV_WL),
                .num_planes = 1,
                .chroma_order = ORDER_VU,
                .hsub = 2,
        },
        {
                DRM_FORMAT(UYVY),
                SAMPLER_TYPE(EGL_TEXTURE_Y_XUXV_WL),
                .num_planes = 1,
                .luma_chroma_order = ORDER_CHROMA_LUMA,
                .hsub = 2,
        },
        {
                DRM_FORMAT(VYUY),
                SAMPLER_TYPE(EGL_TEXTURE_Y_XUXV_WL),
                .num_planes = 1,
                .luma_chroma_order = ORDER_CHROMA_LUMA,
                .chroma_order = ORDER_VU,
                .hsub = 2,
        },
        {
                DRM_FORMAT(NV12),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .hsub = 2,
                .vsub = 2,
        },
        {
#if USE_DRM_FORMAT_NV15
                DRM_FORMAT(NV15),
#else
                DRM_FORMAT(NV12_10LE40),
#endif
                .num_planes = 2,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(NV21),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .chroma_order = ORDER_VU,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(NV16),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .hsub = 2,
                .vsub = 1,
        },
        {
                DRM_FORMAT(NV61),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .chroma_order = ORDER_VU,
                .hsub = 2,
                .vsub = 1,
        },
        {
                DRM_FORMAT(NV24),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
        },
        {
                DRM_FORMAT(NV42),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .chroma_order = ORDER_VU,
        },
        {
                DRM_FORMAT(P010),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(P012),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(P016),
                SAMPLER_TYPE(EGL_TEXTURE_Y_UV_WL),
                .num_planes = 2,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(YUV410),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .hsub = 4,
                .vsub = 4,
        },
        {
                DRM_FORMAT(YVU410),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .chroma_order = ORDER_VU,
                .hsub = 4,
                .vsub = 4,
        },
        {
                DRM_FORMAT(YUV411),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .hsub = 4,
                .vsub = 1,
        },
        {
                DRM_FORMAT(YVU411),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .chroma_order = ORDER_VU,
                .hsub = 4,
                .vsub = 1,
        },
        {
                DRM_FORMAT(YUV420),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(YVU420),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .chroma_order = ORDER_VU,
                .hsub = 2,
                .vsub = 2,
        },
        {
                DRM_FORMAT(YUV422),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .hsub = 2,
                .vsub = 1,
        },
        {
                DRM_FORMAT(YVU422),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .chroma_order = ORDER_VU,
                .hsub = 2,
                .vsub = 1,
        },
        {
                DRM_FORMAT(YUV444),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
        },
        {
                DRM_FORMAT(YVU444),
                SAMPLER_TYPE(EGL_TEXTURE_Y_U_V_WL),
                .num_planes = 3,
                .chroma_order = ORDER_VU,
        },
        {
                DRM_FORMAT(VUY888),
                COLOR_MODEL(YUV),
                .bpp = 24,
                /* VUY888 memory layout (LE): byte0=V, byte1=U, byte2=Y.
                 * GL uploads as RGB: R=V, G=U, B=Y.
                 * Swizzle BGR1 reorders to: R=Y, G=U, B=V so the XYUV
                 * shader receives yuva.xyz = (Y, U, V) correctly.
                 * Use GL_RGB (not GL_RGB8) for GLES2 compatibility. */
                GL_FORMAT_INFO(GL_RGB, GL_RGB, GL_UNSIGNED_BYTE, BGR1),
        },
        {
                DRM_FORMAT(XYUV8888),
                .bpp = 32,
        },
};