intel_gpu_dump: Add instdone register values and decoding.

This commit is contained in:
Eric Anholt 2009-06-30 17:52:43 -07:00
parent 3904b7c6a2
commit eb239afeb7

View File

@ -50,6 +50,7 @@
#include "intel_decode.h" #include "intel_decode.h"
#include "intel_chipset.h" #include "intel_chipset.h"
#include "intel_gpu_tools.h" #include "intel_gpu_tools.h"
#include "instdone.h"
#define BUFFER_FAIL(_count, _len, _name) do { \ #define BUFFER_FAIL(_count, _len, _name) do { \
fprintf(out, "Buffer size too small in %s (%d < %d)\n", \ fprintf(out, "Buffer size too small in %s (%d < %d)\n", \
@ -2038,6 +2039,8 @@ main (int argc, char *argv[])
const char *path; const char *path;
struct stat st; struct stat st;
int err; int err;
uint32_t instdone, instdone1 = 0;
int i;
if (argc > 2) { if (argc > 2) {
fprintf (stderr, fprintf (stderr,
@ -2104,12 +2107,41 @@ main (int argc, char *argv[])
parse_ringbuffer_info(filename, &ring_head, &ring_tail, &acthd); parse_ringbuffer_info(filename, &ring_head, &ring_tail, &acthd);
free (filename); free (filename);
init_instdone_definitions();
printf("ACTHD: 0x%08x\n", acthd); printf("ACTHD: 0x%08x\n", acthd);
printf("EIR: 0x%08x\n", INREG(EIR)); printf("EIR: 0x%08x\n", INREG(EIR));
printf("EMR: 0x%08x\n", INREG(EMR)); printf("EMR: 0x%08x\n", INREG(EMR));
printf("ESR: 0x%08x\n", INREG(ESR)); printf("ESR: 0x%08x\n", INREG(ESR));
printf("IPEHR: 0x%08x\n", if (IS_965(devid)) {
IS_965(devid) ? INREG(IPEHR_I965) : INREG(IPEHR)); instdone = INREG(INST_DONE_I965);
instdone1 = INREG(INST_DONE_1);
printf("IPEHR: 0x%08x\n", INREG(IPEHR_I965));
printf("INSTDONE: 0x%08x\n", instdone);
printf("INSTDONE1: 0x%08x\n", instdone1);
} else {
instdone = INREG(INST_DONE);
printf("IPEHR: 0x%08x\n", INREG(IPEHR));
printf("INSTDONE: 0x%08x\n", instdone);
}
for (i = 0; i < num_instdone_bits; i++) {
int busy = 0;
if (instdone_bits[i].reg == INST_DONE_1) {
if (!(instdone1 & instdone_bits[i].bit))
busy = 1;
} else {
if (!(instdone & instdone_bits[i].bit))
busy = 1;
}
if (busy) {
printf(" busy: %s\n", instdone_bits[i].name);
}
}
asprintf (&filename, "%s/i915_batchbuffers", path); asprintf (&filename, "%s/i915_batchbuffers", path);
head_offset = acthd; head_offset = acthd;