mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
mesa: Convert texture debug dump function to using MapTextureImage().
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
bad53f3ba5
commit
b8950c2225
2 changed files with 54 additions and 46 deletions
|
|
@ -353,11 +353,10 @@ dump_texture(struct gl_texture_object *texObj, GLuint writeImages)
|
|||
for (j = 0; j < numFaces; j++) {
|
||||
struct gl_texture_image *texImg = texObj->Image[j][i];
|
||||
if (texImg) {
|
||||
printf(" Face %u level %u: %d x %d x %d, format %s at %p\n",
|
||||
printf(" Face %u level %u: %d x %d x %d, format %s\n",
|
||||
j, i,
|
||||
texImg->Width, texImg->Height, texImg->Depth,
|
||||
_mesa_get_format_name(texImg->TexFormat),
|
||||
texImg->Data);
|
||||
_mesa_get_format_name(texImg->TexFormat));
|
||||
if (writeImages == WRITE_ALL ||
|
||||
(writeImages == WRITE_ONE && !written)) {
|
||||
write_texture_image(texObj, j, i);
|
||||
|
|
@ -566,58 +565,67 @@ _mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
|
|||
* Quick and dirty function to "print" a texture to stdout.
|
||||
*/
|
||||
void
|
||||
_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img)
|
||||
_mesa_print_texture(struct gl_context *ctx, struct gl_texture_image *img)
|
||||
{
|
||||
#if CHAN_TYPE != GL_UNSIGNED_BYTE
|
||||
_mesa_problem(NULL, "PrintTexture not supported");
|
||||
#else
|
||||
const GLint slice = 0;
|
||||
GLint srcRowStride;
|
||||
GLuint i, j, c;
|
||||
const GLubyte *data = (const GLubyte *) img->Data;
|
||||
GLubyte *data;
|
||||
|
||||
ctx->Driver.MapTextureImage(ctx, img, slice,
|
||||
0, 0, img->Width, img->Height, GL_MAP_READ_BIT,
|
||||
&data, &srcRowStride);
|
||||
|
||||
if (!data) {
|
||||
printf("No texture data\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* XXX add more formats or make into a new format utility function */
|
||||
switch (img->TexFormat) {
|
||||
case MESA_FORMAT_A8:
|
||||
case MESA_FORMAT_L8:
|
||||
case MESA_FORMAT_I8:
|
||||
case MESA_FORMAT_CI8:
|
||||
c = 1;
|
||||
break;
|
||||
case MESA_FORMAT_AL88:
|
||||
case MESA_FORMAT_AL88_REV:
|
||||
c = 2;
|
||||
break;
|
||||
case MESA_FORMAT_RGB888:
|
||||
case MESA_FORMAT_BGR888:
|
||||
c = 3;
|
||||
break;
|
||||
case MESA_FORMAT_RGBA8888:
|
||||
case MESA_FORMAT_ARGB8888:
|
||||
c = 4;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(NULL, "error in PrintTexture\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < img->Height; i++) {
|
||||
for (j = 0; j < img->Width; j++) {
|
||||
if (c==1)
|
||||
printf("%02x ", data[0]);
|
||||
else if (c==2)
|
||||
printf("%02x%02x ", data[0], data[1]);
|
||||
else if (c==3)
|
||||
printf("%02x%02x%02x ", data[0], data[1], data[2]);
|
||||
else if (c==4)
|
||||
printf("%02x%02x%02x%02x ", data[0], data[1], data[2], data[3]);
|
||||
data += (img->RowStride - img->Width) * c;
|
||||
else {
|
||||
/* XXX add more formats or make into a new format utility function */
|
||||
switch (img->TexFormat) {
|
||||
case MESA_FORMAT_A8:
|
||||
case MESA_FORMAT_L8:
|
||||
case MESA_FORMAT_I8:
|
||||
case MESA_FORMAT_CI8:
|
||||
c = 1;
|
||||
break;
|
||||
case MESA_FORMAT_AL88:
|
||||
case MESA_FORMAT_AL88_REV:
|
||||
c = 2;
|
||||
break;
|
||||
case MESA_FORMAT_RGB888:
|
||||
case MESA_FORMAT_BGR888:
|
||||
c = 3;
|
||||
break;
|
||||
case MESA_FORMAT_RGBA8888:
|
||||
case MESA_FORMAT_ARGB8888:
|
||||
c = 4;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(NULL, "error in PrintTexture\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < img->Height; i++) {
|
||||
for (j = 0; j < img->Width; j++) {
|
||||
if (c==1)
|
||||
printf("%02x ", data[0]);
|
||||
else if (c==2)
|
||||
printf("%02x%02x ", data[0], data[1]);
|
||||
else if (c==3)
|
||||
printf("%02x%02x%02x ", data[0], data[1], data[2]);
|
||||
else if (c==4)
|
||||
printf("%02x%02x%02x%02x ", data[0], data[1], data[2], data[3]);
|
||||
data += (srcRowStride - img->Width) * c;
|
||||
}
|
||||
/* XXX use img->ImageStride here */
|
||||
printf("\n");
|
||||
|
||||
}
|
||||
/* XXX use img->ImageStride here */
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
ctx->Driver.UnmapTextureImage(ctx, img, slice);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,6 +89,6 @@ _mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
|
|||
GLenum format, GLenum type);
|
||||
|
||||
extern void
|
||||
_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img);
|
||||
_mesa_print_texture(struct gl_context *ctx, struct gl_texture_image *img);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue