intel: Add support for parsing 965 3d packets using helper functions.
authorEric Anholt <eric@anholt.net>
Wed, 4 Jan 2012 20:06:44 +0000 (12:06 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 27 Jan 2012 21:21:19 +0000 (13:21 -0800)
I want to add packets, without contributing to the switch statement of
doom.

intel/intel_decode.c

index 864d802..1f01b11 100644 (file)
@@ -2719,6 +2719,7 @@ decode_3d_965(struct drm_intel_decode *ctx)
                int unsigned max_len;
                const char *name;
                int gen;
+               int (*func)(struct drm_intel_decode *ctx);
        } opcodes_3d[] = {
                { 0x6000, 3, 3, "URB_FENCE" },
                { 0x6001, 2, 2, "CS_URB_STATE" },
@@ -3341,7 +3342,12 @@ decode_3d_965(struct drm_intel_decode *ctx)
                if (opcode_3d->gen && opcode_3d->gen != ctx->gen)
                        continue;
 
-               if ((data[0] & 0xffff0000) >> 16 == opcode_3d->opcode) {
+               if ((data[0] & 0xffff0000) >> 16 != opcode_3d->opcode)
+                       continue;
+
+               if (opcode_3d->func) {
+                       return opcode_3d->func(ctx);
+               } else {
                        unsigned int i;
                        len = 1;