From 8f9edbad6f972792a51234715aad83c406e1845d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 19 Sep 2011 15:06:13 +0100 Subject: mesa: add packing for int/uint This just adds a simple packing for GL_UNSIGNED_INT/GL_INT destination formats. This is enough for at least the gallium drivers to pack both unsigned and signed types for read pixels. Signed-off-by: Dave Airlie --- src/mesa/main/pack.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/mesa/main/pack.h | 5 +++++ 2 files changed, 68 insertions(+) (limited to 'src') diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index 62e352f3fc9..092e541c5db 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -467,6 +467,69 @@ get_type_min_max(GLenum type, GLfloat *min, GLfloat *max) } } +/* + * integer packing , no transfer operations only packs + * to dst of GL_UNSIGNED_INT or GL_INT + */ +void +_mesa_pack_rgba_span_int(struct gl_context *ctx, GLuint n, GLuint rgba[][4], + GLenum dstFormat, GLenum dstType, + GLvoid *dstAddr) +{ + int i; + + switch(dstType) { + case GL_UNSIGNED_INT: { + GLuint *dst = (GLuint *) dstAddr; + switch (dstFormat) { + case GL_RED_INTEGER_EXT: + case GL_GREEN_INTEGER_EXT: + case GL_BLUE_INTEGER_EXT: + case GL_ALPHA_INTEGER_EXT: + case GL_RGB_INTEGER_EXT: + case GL_RGBA_INTEGER_EXT: + case GL_BGR_INTEGER_EXT: + case GL_BGRA_INTEGER_EXT: + case GL_LUMINANCE_INTEGER_EXT: + case GL_LUMINANCE_ALPHA_INTEGER_EXT: + for (i=0;i