Am Freitag, den 19.05.2017, 10:37 +0100 schrieb Daniel Stone: > From: Varad Gautam <varad.gau...@collabora.com> > > ask the driver for supported modifiers for a given format. > bump __DRIimageExtension to 16. > > v2: move to __DRIimageExtension v16. > v3: fail if the supplied format is not supported by driver. > v4: purge PIPE_CAP_QUERY_DMABUF_ATTRIBS. > > Signed-off-by: Varad Gautam <varad.gau...@collabora.com> > Signed-off-by: Daniel Stone <dani...@collabora.com>
Reviewed-by: Lucas Stach <l.st...@pengutronix.de> > --- > src/gallium/state_trackers/dri/dri2.c | 24 +++++++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/state_trackers/dri/dri2.c > b/src/gallium/state_trackers/dri/dri2.c > index 814a08e3cb..36cd235b3c 100644 > --- a/src/gallium/state_trackers/dri/dri2.c > +++ b/src/gallium/state_trackers/dri/dri2.c > @@ -1431,6 +1431,24 @@ dri2_query_dma_buf_formats(__DRIscreen *_screen, int > max, int *formats, > return true; > } > > +static boolean > +dri2_query_dma_buf_modifiers(__DRIscreen *_screen, int fourcc, int max, > + uint64_t *modifiers, int *count) > +{ > + struct dri_screen *screen = dri_screen(_screen); > + struct pipe_screen *pscreen = screen->base.screen; > + enum pipe_format format = fourcc_to_pipe_format(fourcc); > + const unsigned usage = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW; > + > + if (pscreen->query_dmabuf_modifiers != NULL && > + pscreen->is_format_supported(pscreen, format, screen->target, 0, > usage)) { > + pscreen->query_dmabuf_modifiers(pscreen, format, max, modifiers, > + count); > + return true; > + } > + return false; > +} > + > static __DRIimage * > dri2_from_dma_bufs(__DRIscreen *screen, > int width, int height, int fourcc, > @@ -1597,7 +1615,7 @@ dri2_get_capabilities(__DRIscreen *_screen) > > /* The extension is modified during runtime if DRI_PRIME is detected */ > static __DRIimageExtension dri2ImageExtension = { > - .base = { __DRI_IMAGE, 15 }, > + .base = { __DRI_IMAGE, 16 }, > > .createImageFromName = dri2_create_image_from_name, > .createImageFromRenderbuffer = dri2_create_image_from_renderbuffer, > @@ -1618,6 +1636,7 @@ static __DRIimageExtension dri2ImageExtension = { > .createImageWithModifiers = NULL, > .createImageFromDmaBufs2 = NULL, > .queryDmaBufFormats = NULL, > + .queryDmaBufModifiers = NULL, > }; > > > @@ -2165,6 +2184,8 @@ dri2_init_screen(__DRIscreen * sPriv) > dri2ImageExtension.createImageFromDmaBufs = dri2_from_dma_bufs; > dri2ImageExtension.createImageFromDmaBufs2 = dri2_from_dma_bufs2; > dri2ImageExtension.queryDmaBufFormats = dri2_query_dma_buf_formats; > + dri2ImageExtension.queryDmaBufModifiers = > + dri2_query_dma_buf_modifiers; > } > } > > @@ -2243,6 +2264,7 @@ dri_kms_init_screen(__DRIscreen * sPriv) > dri2ImageExtension.createImageFromDmaBufs = dri2_from_dma_bufs; > dri2ImageExtension.createImageFromDmaBufs2 = dri2_from_dma_bufs2; > dri2ImageExtension.queryDmaBufFormats = dri2_query_dma_buf_formats; > + dri2ImageExtension.queryDmaBufModifiers = dri2_query_dma_buf_modifiers; > } > > sPriv->extensions = dri_screen_extensions; _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev