The GPU is able to sample from YUYV/UYVY textures directly. Passes following piglits: - ext_image_dma_buf_import-sample_yuv -fmt=YUYV - ext_image_dma_buf_import-sample_yuv -fmt=UYVY
Signed-off-by: Christian Gmeiner <christian.gmei...@gmail.com> --- src/gallium/drivers/etnaviv/etnaviv_format.c | 2 +- src/gallium/drivers/etnaviv/etnaviv_resource.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/etnaviv/etnaviv_format.c b/src/gallium/drivers/etnaviv/etnaviv_format.c index 29e81c4a8b0..7633274e3c2 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_format.c +++ b/src/gallium/drivers/etnaviv/etnaviv_format.c @@ -283,7 +283,7 @@ static struct etna_format formats[PIPE_FORMAT_COUNT] = { /* YUV */ _T(YUYV, YUY2, SWIZ(X, Y, Z, W), YUY2, NONE), - _T(UYVY, UYVY, SWIZ(X, Y, Z, W), NONE, NONE), + _T(UYVY, UYVY, SWIZ(X, Y, Z, W), YUY2, NONE), }; uint32_t diff --git a/src/gallium/drivers/etnaviv/etnaviv_resource.c b/src/gallium/drivers/etnaviv/etnaviv_resource.c index 650c8e7eb7f..c6d3ab6e79d 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_resource.c +++ b/src/gallium/drivers/etnaviv/etnaviv_resource.c @@ -560,6 +560,15 @@ etna_resource_from_handle(struct pipe_screen *pscreen, level->padded_height); level->size = level->layer_stride; + rsc->pending_ctx = _mesa_set_create(NULL, _mesa_hash_pointer, + _mesa_key_pointer_equal); + if (!rsc->pending_ctx) + goto fail; + + /* The constraint checks below are invalid for YUV formats. */ + if (util_format_is_yuv(tmpl->format)) + return prsc; + /* The DDX must give us a BO which conforms to our padding size. * The stride of the BO must be greater or equal to our padded * stride. The size of the BO must accomodate the padded height. */ @@ -576,11 +585,6 @@ etna_resource_from_handle(struct pipe_screen *pscreen, goto fail; } - rsc->pending_ctx = _mesa_set_create(NULL, _mesa_hash_pointer, - _mesa_key_pointer_equal); - if (!rsc->pending_ctx) - goto fail; - if (rsc->layout == ETNA_LAYOUT_LINEAR) { /* * Both sampler and pixel pipes can't handle linear, create a compatible -- 2.20.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev