On Mon, Nov 4, 2013 at 6:23 PM, Keith Packard <keithp at keithp.com> 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. > > 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;
After patch 6, this will add SARGB8, right? So, maybe add this to the commit message, or separate out adding SARGB8 into a separate commit? Patches 1-6: Reviewed-by: Jordan Justen <jordan.l.justen at intel.com> -Jordan > + 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 > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel