st/dri: add handling of R8 and GR88 DRI fourcc formats

This helps to import dmabuf buffers from DRM_FORMAT_R8 and
DRM_FORMAT_GR88 used for example by GStreamer for YUV to RGB
conversion using shaders.

Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
Stanimir Varbanov 2016-05-27 01:10:35 +03:00 committed by Emil Velikov
parent e9d3246a7a
commit 9d852a1f75
1 changed files with 20 additions and 0 deletions

View File

@ -75,6 +75,14 @@ static int convert_fourcc(int format, int *dri_components_p)
format = __DRI_IMAGE_FORMAT_XBGR8888;
dri_components = __DRI_IMAGE_COMPONENTS_RGB;
break;
case __DRI_IMAGE_FOURCC_R8:
format = __DRI_IMAGE_FORMAT_R8;
dri_components = __DRI_IMAGE_COMPONENTS_R;
break;
case __DRI_IMAGE_FOURCC_GR88:
format = __DRI_IMAGE_FORMAT_GR88;
dri_components = __DRI_IMAGE_COMPONENTS_RG;
break;
default:
return -1;
}
@ -100,6 +108,12 @@ static int convert_to_fourcc(int format)
case __DRI_IMAGE_FORMAT_XBGR8888:
format = __DRI_IMAGE_FOURCC_XBGR8888;
break;
case __DRI_IMAGE_FORMAT_R8:
format = __DRI_IMAGE_FOURCC_R8;
break;
case __DRI_IMAGE_FORMAT_GR88:
format = __DRI_IMAGE_FOURCC_GR88;
break;
default:
return -1;
}
@ -123,6 +137,12 @@ static enum pipe_format dri2_format_to_pipe_format (int format)
case __DRI_IMAGE_FORMAT_ABGR8888:
pf = PIPE_FORMAT_RGBA8888_UNORM;
break;
case __DRI_IMAGE_FORMAT_R8:
pf = PIPE_FORMAT_R8_UNORM;
break;
case __DRI_IMAGE_FORMAT_GR88:
pf = PIPE_FORMAT_RG88_UNORM;
break;
default:
pf = PIPE_FORMAT_NONE;
break;