diff options
author | Eric Anholt <eric@anholt.net> | 2012-01-03 13:05:57 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2012-01-04 14:49:44 -0800 |
commit | ea33a231d530540ddcb9e0bac08ef15f625f744a (patch) | |
tree | ab498df3f4b4f7814b17ead4c7415ab1dfdc72bb | |
parent | a9dd34a7ee9d03d357e15f045ab85a12f6f6e4b8 (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.h | 2 | ||||
-rw-r--r-- | intel/intel_decode.c | 14 |
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: |