-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Kristian Høgsberg wrote: > diff --git a/src/mesa/drivers/dri/intel/intel_screen.c > b/src/mesa/drivers/dri/intel/intel_screen.c > index f7ce87e..c2c8c6e 100644 > --- a/src/mesa/drivers/dri/intel/intel_screen.c > +++ b/src/mesa/drivers/dri/intel/intel_screen.c > @@ -41,6 +41,7 @@ > #include "intel_fbo.h" > #include "intel_screen.h" > #include "intel_tex.h" > +#include "intel_regions.h" > > #include "i915_drm.h" > > @@ -141,11 +142,84 @@ static const struct __DRI2flushExtensionRec > intelFlushExtension = { > intelDRI2FlushInvalidate, > }; > > +static __DRIimage * > +intel_create_image_internal(__DRIcontext *context, > + int width, int height, int internal_format, > + int name, int pitch, void *loaderPrivate) > +{ > + __DRIimage *image; > + struct intel_context *intel = context->driverPrivate; > + int cpp; > + > + image = CALLOC(sizeof *image); > + image->internal_format = internal_format; > + switch (internal_format) { > + case GL_RGBA: > + image->format = MESA_FORMAT_ARGB8888; > + image->data_type = GL_UNSIGNED_BYTE; > + break; > + case GL_RGB: > + image->format = MESA_FORMAT_XRGB8888; > + image->data_type = GL_UNSIGNED_BYTE; > + break; > + }
No love for 565 or 4444 pixmaps? > + image->data = loaderPrivate; > + cpp = _mesa_get_format_bytes(image->format); > + > + if (name == 0) { > + pitch = ((cpp * width + 63) & ~63) / cpp; > + image->region = intel_region_alloc(intel, I915_TILING_NONE, > + cpp, width, height, pitch, GL_TRUE); > + } else { > + image->region = intel_region_alloc_for_handle(intel, cpp, width, > height, > + pitch, name, "image"); > + > + } > + if (image->region == NULL) { > + FREE(image); > + return NULL; > + } > + > + return image; > +} > + > +static __DRIimage * > +intel_create_image(__DRIcontext *context, > + int width, int height, int format, void *private) > +{ > + return intel_create_image_internal(context, width, height, format, > + 0, 0, private); > +} > + > +static __DRIimage * > +intel_create_image_from_name(__DRIcontext *context, > + int width, int height, int format, > + int name, int pitch, void *private) > +{ > + return intel_create_image_internal(context, width, height, format, > + name, pitch, private); > +} > + > +static void > +intel_destroy_image(__DRIimage *image) > +{ > + intel_region_release(&image->region); > + FREE(image); > +} > + > +static struct __DRIimageExtensionRec intelImageExtension = { > + { __DRI_IMAGE, __DRI_IMAGE_VERSION }, > + intel_create_image, > + intel_create_image_from_name, > + intel_destroy_image, > +}; > + > static const __DRIextension *intelScreenExtensions[] = { > &driReadDrawableExtension, > &intelTexOffsetExtension.base, > &intelTexBufferExtension.base, > &intelFlushExtension.base, > + &intelImageExtension.base, > NULL > }; > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkt1+QcACgkQX1gOwKyEAw86TwCaA0ChepQbp8rofpICru3ddV+A FHEAn0VUedBg5sFzus0/S2qyEQ5gHLBD =/x8V -----END PGP SIGNATURE----- ------------------------------------------------------------------------------ SOLARIS 10 is the OS for Data Centers - provides features such as DTrace, Predictive Self Healing and Award Winning ZFS. Get Solaris 10 NOW http://p.sf.net/sfu/solaris-dev2dev _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev