#endif
-
-
#include "pipe/p_compiler.h"
#include "pipe/p_util.h"
#include "pipe/p_debug.h"
#include "pipe/p_format.h"
+#include "pipe/p_state.h"
+#include "pipe/p_inlines.h"
#include "util/u_string.h"
void debug_dump_image(const char *prefix,
unsigned format, unsigned cpp,
unsigned width, unsigned height,
- unsigned pitch,
+ unsigned stride,
const void *data)
{
#ifdef PIPE_SUBSYSTEM_WINDOWS_DISPLAY
for(i = 0; i < sizeof(filename); ++i)
wfilename[i] = (WCHAR)filename[i];
- pMap = (unsigned char *)EngMapFile(wfilename, sizeof(header) + cpp*width*height, &iFile);
+ pMap = (unsigned char *)EngMapFile(wfilename, sizeof(header) + height*width*cpp, &iFile);
if(!pMap)
return;
pMap += sizeof(header);
for(i = 0; i < height; ++i) {
- memcpy(pMap, (unsigned char *)data + cpp*pitch*i, cpp*width);
+ memcpy(pMap, (unsigned char *)data + stride*i, cpp*width);
pMap += cpp*width;
}
EngUnmapFile(iFile);
#endif
}
+
+void debug_dump_surface(const char *prefix,
+ struct pipe_surface *surface)
+{
+ unsigned surface_usage;
+ void *data;
+
+ if (!surface)
+ goto error1;
+
+ /* XXX: force mappable surface */
+ surface_usage = surface->usage;
+ surface->usage |= PIPE_BUFFER_USAGE_CPU_READ;
+
+ data = pipe_surface_map(surface,
+ PIPE_BUFFER_USAGE_CPU_READ);
+ if(!data)
+ goto error2;
+
+ debug_dump_image(prefix,
+ surface->format,
+ surface->block.size,
+ surface->nblocksx,
+ surface->nblocksy,
+ surface->stride,
+ data);
+
+ pipe_surface_unmap(surface);
+error2:
+ surface->usage = surface_usage;
+error1:
+ ;
+}
#endif
#ifdef DEBUG
+struct pipe_surface;
void debug_dump_image(const char *prefix,
unsigned format, unsigned cpp,
unsigned width, unsigned height,
- unsigned pitch,
+ unsigned stride,
const void *data);
+void debug_dump_surface(const char *prefix,
+ struct pipe_surface *surface);
#else
-#define debug_dump_image(prefix, format, cpp, width, height, pitch, data) ((void)0)
+#define debug_dump_image(prefix, format, cpp, width, height, stride, data) ((void)0)
+#define debug_dump_surface(prefix, surface) ((void)0)
#endif