aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main/debug.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-02-08 16:41:27 +0100
committermarha <marha@users.sourceforge.net>2012-02-08 16:41:27 +0100
commit03346747e21e4cd1db30c6a5d8af6705575e3755 (patch)
tree120604af21bdac64007a0a3005dcce420cb76714 /mesalib/src/mesa/main/debug.c
parentada3d2c30b5a7a1a79e128b7326d50c3bab77a8a (diff)
downloadvcxsrv-03346747e21e4cd1db30c6a5d8af6705575e3755.tar.gz
vcxsrv-03346747e21e4cd1db30c6a5d8af6705575e3755.tar.bz2
vcxsrv-03346747e21e4cd1db30c6a5d8af6705575e3755.zip
mesa git update 8 feb 2012
Diffstat (limited to 'mesalib/src/mesa/main/debug.c')
-rw-r--r--mesalib/src/mesa/main/debug.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/mesalib/src/mesa/main/debug.c b/mesalib/src/mesa/main/debug.c
index 72aa8cb4f..71d7f1ac6 100644
--- a/mesalib/src/mesa/main/debug.c
+++ b/mesalib/src/mesa/main/debug.c
@@ -554,8 +554,35 @@ _mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
else if (format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE) {
write_ppm(filename, image, w, h, 2, 1, 0, 0, invert);
}
+ else if (format == GL_RED && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 1, 0, 0, 0, invert);
+ }
+ else if (format == GL_RGBA && type == GL_FLOAT) {
+ /* convert floats to ubyte */
+ GLubyte *buf = (GLubyte *) malloc(w * h * 4 * sizeof(GLubyte));
+ const GLfloat *f = (const GLfloat *) image;
+ GLuint i;
+ for (i = 0; i < w * h * 4; i++) {
+ UNCLAMPED_FLOAT_TO_UBYTE(buf[i], f[i]);
+ }
+ write_ppm(filename, buf, w, h, 4, 0, 1, 2, invert);
+ free(buf);
+ }
+ else if (format == GL_RED && type == GL_FLOAT) {
+ /* convert floats to ubyte */
+ GLubyte *buf = (GLubyte *) malloc(w * h * sizeof(GLubyte));
+ const GLfloat *f = (const GLfloat *) image;
+ GLuint i;
+ for (i = 0; i < w * h; i++) {
+ UNCLAMPED_FLOAT_TO_UBYTE(buf[i], f[i]);
+ }
+ write_ppm(filename, buf, w, h, 1, 0, 0, 0, invert);
+ free(buf);
+ }
else {
- _mesa_problem(NULL, "Unsupported format/type in _mesa_dump_image()");
+ _mesa_problem(NULL,
+ "Unsupported format 0x%x / type 0x%x in _mesa_dump_image()",
+ format, type);
}
}