* extensions.
*/
#define __DRI_IMAGE "DRI_IMAGE"
-#define __DRI_IMAGE_VERSION 19
+#define __DRI_IMAGE_VERSION 20
/**
* These formats correspond to the similarly named MESA_FORMAT_*
#define __BLIT_FLAG_FINISH 0x0002
/**
- * Flags for createImageFromDmaBufs3
+ * Flags for createImageFromDmaBufs3 and createImageFromFds2
*/
#define __DRI_IMAGE_PROTECTED_CONTENT_FLAG 0x00000001
const unsigned int modifier_count,
unsigned int use,
void *loaderPrivate);
+
+ /**
+ * Like createImageFromFds, but with an added flag parameter.
+ *
+ * See __DRI_IMAGE_*_FLAG for valid definitions of flags.
+ *
+ * \since 20
+ */
+ __DRIimage *(*createImageFromFds2)(__DRIscreen *screen,
+ int width, int height, int fourcc,
+ int *fds, int num_fds,
+ uint32_t flags,
+ int *strides, int *offsets,
+ void *loaderPrivate);
};
strides, offsets, 0, NULL, loaderPrivate);
}
+static __DRIimage *
+dri2_from_fds2(__DRIscreen *screen, int width, int height, int fourcc,
+ int *fds, int num_fds, uint32_t flags, int *strides,
+ int *offsets, void *loaderPrivate)
+{
+ unsigned bind = 0;
+ if (flags & __DRI_IMAGE_PROTECTED_CONTENT_FLAG)
+ bind |= PIPE_BIND_PROTECTED;
+
+ return dri2_create_image_from_fd(screen, width, height, fourcc,
+ DRM_FORMAT_MOD_INVALID, fds, num_fds,
+ strides, offsets, bind, NULL, loaderPrivate);
+}
+
static boolean
dri2_query_dma_buf_modifiers(__DRIscreen *_screen, int fourcc, int max,
uint64_t *modifiers, unsigned int *external_only,
/* The extension is modified during runtime if DRI_PRIME is detected */
static const __DRIimageExtension dri2ImageExtensionTempl = {
- .base = { __DRI_IMAGE, 19 },
+ .base = { __DRI_IMAGE, 20 },
.createImageFromName = dri2_create_image_from_name,
.createImageFromRenderbuffer = dri2_create_image_from_renderbuffer,
.fromPlanar = dri2_from_planar,
.createImageFromTexture = dri2_create_from_texture,
.createImageFromFds = NULL,
+ .createImageFromFds2 = NULL,
.createImageFromDmaBufs = NULL,
.blitImage = dri2_blit_image,
.getCapabilities = dri2_get_capabilities,
if (drmGetCap(screen->sPriv->fd, DRM_CAP_PRIME, &cap) == 0 &&
(cap & DRM_PRIME_CAP_IMPORT)) {
screen->image_extension.createImageFromFds = dri2_from_fds;
+ screen->image_extension.createImageFromFds2 = dri2_from_fds2;
screen->image_extension.createImageFromDmaBufs = dri2_from_dma_bufs;
screen->image_extension.createImageFromDmaBufs2 = dri2_from_dma_bufs2;
screen->image_extension.createImageFromDmaBufs3 = dri2_from_dma_bufs3;