summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/trace/tr_winsys.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/trace/tr_winsys.c')
-rw-r--r--src/gallium/drivers/trace/tr_winsys.c68
1 files changed, 31 insertions, 37 deletions
diff --git a/src/gallium/drivers/trace/tr_winsys.c b/src/gallium/drivers/trace/tr_winsys.c
index 964da5677b..eec84a1981 100644
--- a/src/gallium/drivers/trace/tr_winsys.c
+++ b/src/gallium/drivers/trace/tr_winsys.c
@@ -26,6 +26,7 @@
**************************************************************************/
#include "pipe/p_util.h"
+#include "pipe/p_state.h"
#include "util/u_hash_table.h"
#include "tr_stream.h"
@@ -178,7 +179,7 @@ trace_winsys_buffer_create(struct pipe_winsys *_winsys,
struct trace_winsys *tr_ws = trace_winsys(_winsys);
struct trace_stream *stream = tr_ws->stream;
struct pipe_winsys *winsys = tr_ws->winsys;
- struct pipe_buffer *result;
+ struct pipe_buffer *buffer;
trace_dump_call_begin(stream, "pipe_winsys", "buffer_create");
@@ -187,13 +188,23 @@ trace_winsys_buffer_create(struct pipe_winsys *_winsys,
trace_dump_arg(stream, uint, usage);
trace_dump_arg(stream, uint, size);
- result = winsys->buffer_create(winsys, alignment, usage, size);
+ buffer = winsys->buffer_create(winsys, alignment, usage, size);
- trace_dump_ret(stream, ptr, result);
+ trace_dump_ret(stream, ptr, buffer);
trace_dump_call_end(stream);
+
+ /* Zero the buffer to avoid dumping uninitialized memory */
+ if(buffer->usage & PIPE_BUFFER_USAGE_CPU_WRITE) {
+ void *map;
+ map = winsys->buffer_map(winsys, buffer, PIPE_BUFFER_USAGE_CPU_WRITE);
+ if(map) {
+ memset(map, 0, buffer->size);
+ winsys->buffer_unmap(winsys, buffer);
+ }
+ }
- return result;
+ return buffer;
}
@@ -229,30 +240,18 @@ trace_winsys_buffer_map(struct pipe_winsys *_winsys,
unsigned usage)
{
struct trace_winsys *tr_ws = trace_winsys(_winsys);
- struct trace_stream *stream = tr_ws->stream;
struct pipe_winsys *winsys = tr_ws->winsys;
- void *result;
-
- trace_dump_call_begin(stream, "pipe_winsys", "buffer_map");
+ void *map;
- trace_dump_arg(stream, ptr, winsys);
- trace_dump_arg(stream, ptr, buffer);
- trace_dump_arg(stream, uint, usage);
-
- result = winsys->buffer_map(winsys, buffer, usage);
-
- trace_dump_ret(stream, ptr, result);
-
- trace_dump_call_end(stream);
-
- if(result) {
+ map = winsys->buffer_map(winsys, buffer, usage);
+ if(map) {
if(usage & PIPE_BUFFER_USAGE_CPU_WRITE) {
assert(!hash_table_get(tr_ws->buffer_maps, buffer));
- hash_table_set(tr_ws->buffer_maps, buffer, result);
+ hash_table_set(tr_ws->buffer_maps, buffer, map);
}
}
- return result;
+ return map;
}
@@ -267,13 +266,13 @@ trace_winsys_buffer_unmap(struct pipe_winsys *_winsys,
map = hash_table_get(tr_ws->buffer_maps, buffer);
if(map) {
- trace_dump_call_begin(stream, "", "memcpy");
+ trace_dump_call_begin(stream, "pipe_winsys", "buffer_write");
- trace_dump_arg_begin(stream, "dst");
- trace_dump_ptr(stream, map);
- trace_dump_arg_end(stream);
+ trace_dump_arg(stream, ptr, winsys);
- trace_dump_arg_begin(stream, "src");
+ trace_dump_arg(stream, ptr, buffer);
+
+ trace_dump_arg_begin(stream, "data");
trace_dump_bytes(stream, map, buffer->size);
trace_dump_arg_end(stream);
@@ -283,19 +282,10 @@ trace_winsys_buffer_unmap(struct pipe_winsys *_winsys,
trace_dump_call_end(stream);
- winsys->buffer_unmap(winsys, buffer);
-
hash_table_remove(tr_ws->buffer_maps, buffer);
}
- trace_dump_call_begin(stream, "pipe_winsys", "buffer_unmap");
-
- trace_dump_arg(stream, ptr, winsys);
- trace_dump_arg(stream, ptr, buffer);
-
winsys->buffer_unmap(winsys, buffer);
-
- trace_dump_call_end(stream);
}
@@ -420,6 +410,7 @@ trace_winsys_destroy(struct pipe_winsys *_winsys)
struct pipe_winsys *
trace_winsys_create(struct pipe_winsys *winsys)
{
+ struct trace_stream *stream;
struct trace_winsys *tr_ws;
if(!debug_get_bool_option("GALLIUM_TRACE", FALSE))
@@ -446,7 +437,7 @@ trace_winsys_create(struct pipe_winsys *winsys)
tr_ws->winsys = winsys;
- tr_ws->stream = trace_stream_create("gallium", "trace");
+ tr_ws->stream = stream = trace_stream_create("gallium", "trace");
if(!tr_ws->stream)
return NULL;
@@ -455,8 +446,11 @@ trace_winsys_create(struct pipe_winsys *winsys)
if(!tr_ws->buffer_maps)
return NULL;
-
trace_dump_trace_begin(tr_ws->stream, 0);
+ trace_dump_call_begin(stream, "", "pipe_winsys_create");
+ trace_dump_ret(stream, ptr, winsys);
+ trace_dump_call_end(stream);
+
return &tr_ws->base;
}