On Fri, Apr 15, 2016 at 12:09 PM, Nicolas Dufresne <nicolas@xxxxxxxxxxxx> wrote: > Le vendredi 15 avril 2016 à 11:58 -0400, Rob Clark a écrit : >> The issue is probably the YUV format, which we cannot really deal >> with >> properly in gallium.. it's a similar issue to multi-planer even if >> it >> is in a single buffer. >> >> The best way to handle this would be to import the same dmabuf fd >> twice, with appropriate offsets, to create one GL_RED eglimage for Y >> and one GL_RG eglimage for UV, and then combine them in shader in a >> similar way to how you'd handle separate Y and UV planes.. > > That's the strategy we use in GStreamer, as very few GL stack support > implicit color conversions. For that to work you need to implement the > "offset" field in winsys_handle, that was added recently, and make sure > you have R8 and RG88 support (usually this is just mapping). oh, heh, looks like nobody bothered to add this yet: --------- diff --git a/src/gallium/drivers/freedreno/freedreno_resource.c b/src/gallium/drivers/freedreno/freedreno_resource.c index 9aded3b..fab78ab 100644 --- a/src/gallium/drivers/freedreno/freedreno_resource.c +++ b/src/gallium/drivers/freedreno/freedreno_resource.c @@ -669,6 +669,7 @@ fd_resource_from_handle(struct pipe_screen *pscreen, rsc->base.vtbl = &fd_resource_vtbl; rsc->cpp = util_format_get_blocksize(tmpl->format); slice->pitch /= rsc->cpp; + slice->offset = handle->offset; assert(rsc->cpp); --------- > cheers, > Nicolas -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html