summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2012-01-03 13:05:57 -0800
committerEric Anholt <eric@anholt.net>2012-01-04 14:49:44 -0800
commitea33a231d530540ddcb9e0bac08ef15f625f744a (patch)
treeab498df3f4b4f7814b17ead4c7415ab1dfdc72bb
parenta9dd34a7ee9d03d357e15f045ab85a12f6f6e4b8 (diff)
intel: Add an interface for setting the output file for decode.
Consumers often want to choose stdout vs stderr, and for testing I want to output to an open_memstream file. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--intel/intel_bufmgr.h2
-rw-r--r--intel/intel_decode.c14
2 files changed, 14 insertions, 2 deletions
diff --git a/intel/intel_bufmgr.h b/intel/intel_bufmgr.h
index 68017a54..85da8b9a 100644
--- a/intel/intel_bufmgr.h
+++ b/intel/intel_bufmgr.h
@@ -34,6 +34,7 @@
#ifndef INTEL_BUFMGR_H
#define INTEL_BUFMGR_H
+#include <stdio.h>
#include <stdint.h>
struct drm_clip_rect;
@@ -199,6 +200,7 @@ void drm_intel_decode_set_dump_past_end(struct drm_intel_decode *ctx,
int dump_past_end);
void drm_intel_decode_set_head_tail(struct drm_intel_decode *ctx,
uint32_t head, uint32_t tail);
+void drm_intel_decode_set_output_file(struct drm_intel_decode *ctx, FILE *out);
void drm_intel_decode(struct drm_intel_decode *ctx);
diff --git a/intel/intel_decode.c b/intel/intel_decode.c
index e80e8401..81ef712e 100644
--- a/intel/intel_decode.c
+++ b/intel/intel_decode.c
@@ -33,6 +33,9 @@
/* Struct for tracking drm_intel_decode state. */
struct drm_intel_decode {
+ /** stdio file where the output should land. Defaults to stdout. */
+ FILE *out;
+
/** PCI device ID. */
uint32_t devid;
@@ -3558,6 +3561,7 @@ drm_intel_decode_context_alloc(uint32_t devid)
return NULL;
ctx->devid = devid;
+ ctx->out = stdout;
return ctx;
}
@@ -3592,6 +3596,13 @@ drm_intel_decode_set_head_tail(struct drm_intel_decode *ctx,
ctx->tail = tail;
}
+void
+drm_intel_decode_set_output_file(struct drm_intel_decode *ctx,
+ FILE *out)
+{
+ ctx->out = out;
+}
+
/**
* Decodes an i830-i915 batch buffer, writing the output to stdout.
*
@@ -3618,12 +3629,11 @@ drm_intel_decode(struct drm_intel_decode *ctx)
devid = ctx->devid;
head_offset = ctx->head;
tail_offset = ctx->tail;
+ out = ctx->out;
saved_s2_set = 0;
saved_s4_set = 1;
- out = stdout;
-
while (index < count) {
switch ((data[index] & 0xe0000000) >> 29) {
case 0x0: