[PATCH 5/8] dri/common: Add functions mapping MESA_FORMAT_* <-> __DRI_IMAGE_FORMAT_*
Kristian Høgsberg
hoegsberg at gmail.com
Tue Nov 5 14:35:47 PST 2013
On Mon, Nov 04, 2013 at 06:23:25PM -0800, Keith Packard wrote:
> The __DRI_IMAGE_FORMAT codes are used by the image extension, drivers need to
> be able to translate between them. Instead of duplicating this translation in
> each driver, create a shared version.
I'll take the bait... before the i915/i965 split, this code was only
needed in this one place. All other drivers are gallium drivers which
need to convert to galliums enum pipe_format instead of the gl_format
enum. Anyway, the code certainly looks more at home in dri_util.c.
Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>
> Signed-off-by: Keith Packard <keithp at keithp.com>
> ---
> src/mesa/drivers/dri/common/dri_util.c | 62 ++++++++++++++++++++++++++++++++++
> src/mesa/drivers/dri/common/dri_util.h | 6 ++++
> 2 files changed, 68 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
> index 95c8b41..76c8ae5 100644
> --- a/src/mesa/drivers/dri/common/dri_util.c
> +++ b/src/mesa/drivers/dri/common/dri_util.c
> @@ -792,3 +792,65 @@ driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv)
> assert(fb->Height == dPriv->h);
> }
> }
> +
> +uint32_t
> +driGLFormatToImageFormat(gl_format format)
> +{
> + switch (format) {
> + case MESA_FORMAT_RGB565:
> + return __DRI_IMAGE_FORMAT_RGB565;
> + case MESA_FORMAT_XRGB8888:
> + return __DRI_IMAGE_FORMAT_XRGB8888;
> + case MESA_FORMAT_ARGB2101010:
> + return __DRI_IMAGE_FORMAT_ARGB2101010;
> + case MESA_FORMAT_XRGB2101010_UNORM:
> + return __DRI_IMAGE_FORMAT_XRGB2101010;
> + case MESA_FORMAT_ARGB8888:
> + return __DRI_IMAGE_FORMAT_ARGB8888;
> + case MESA_FORMAT_RGBA8888_REV:
> + return __DRI_IMAGE_FORMAT_ABGR8888;
> + case MESA_FORMAT_RGBX8888_REV:
> + return __DRI_IMAGE_FORMAT_XBGR8888;
> + case MESA_FORMAT_R8:
> + return __DRI_IMAGE_FORMAT_R8;
> + case MESA_FORMAT_GR88:
> + return __DRI_IMAGE_FORMAT_GR88;
> + case MESA_FORMAT_NONE:
> + return __DRI_IMAGE_FORMAT_NONE;
> + case MESA_FORMAT_SARGB8:
> + return __DRI_IMAGE_FORMAT_SARGB8;
> + default:
> + return 0;
> + }
> +}
> +
> +gl_format
> +driImageFormatToGLFormat(uint32_t image_format)
> +{
> + switch (image_format) {
> + case __DRI_IMAGE_FORMAT_RGB565:
> + return MESA_FORMAT_RGB565;
> + case __DRI_IMAGE_FORMAT_XRGB8888:
> + return MESA_FORMAT_XRGB8888;
> + case __DRI_IMAGE_FORMAT_ARGB2101010:
> + return MESA_FORMAT_ARGB2101010;
> + case __DRI_IMAGE_FORMAT_XRGB2101010:
> + return MESA_FORMAT_XRGB2101010_UNORM;
> + case __DRI_IMAGE_FORMAT_ARGB8888:
> + return MESA_FORMAT_ARGB8888;
> + case __DRI_IMAGE_FORMAT_ABGR8888:
> + return MESA_FORMAT_RGBA8888_REV;
> + case __DRI_IMAGE_FORMAT_XBGR8888:
> + return MESA_FORMAT_RGBX8888_REV;
> + case __DRI_IMAGE_FORMAT_R8:
> + return MESA_FORMAT_R8;
> + case __DRI_IMAGE_FORMAT_GR88:
> + return MESA_FORMAT_GR88;
> + case __DRI_IMAGE_FORMAT_SARGB8:
> + return MESA_FORMAT_SARGB8;
> + case __DRI_IMAGE_FORMAT_NONE:
> + return MESA_FORMAT_NONE;
> + default:
> + return MESA_FORMAT_NONE;
> + }
> +}
> diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h
> index 5b56061..fd40769 100644
> --- a/src/mesa/drivers/dri/common/dri_util.h
> +++ b/src/mesa/drivers/dri/common/dri_util.h
> @@ -271,6 +271,12 @@ struct __DRIdrawableRec {
> } dri2;
> };
>
> +extern uint32_t
> +driGLFormatToImageFormat(gl_format format);
> +
> +extern gl_format
> +driImageFormatToGLFormat(uint32_t image_format);
> +
> extern void
> dri2InvalidateDrawable(__DRIdrawable *drawable);
>
> --
> 1.8.4.2
>
More information about the dri-devel
mailing list