intel: Add a INTEL_DEBUG=color option.
[mesa.git] / src / intel / tools / decoder.h
index bbeaa0ac831b54ed682ca84df7892a28989f1bde..4352dea9679b66f3dd20a973b99ffc83d02b6810 100644 (file)
@@ -48,16 +48,21 @@ struct gen_group *gen_spec_find_register(struct gen_spec *spec, uint32_t offset)
 int gen_group_get_length(struct gen_group *group, const uint32_t *p);
 const char *gen_group_get_name(struct gen_group *group);
 uint32_t gen_group_get_opcode(struct gen_group *group);
+struct gen_enum *gen_spec_find_enum(struct gen_spec *spec, const char *name);
 
 struct gen_field_iterator {
    struct gen_group *group;
    const char *name;
    char value[128];
+   struct gen_group *struct_desc;
    const uint32_t *p;
+   int dword; /**< current field starts at &p[dword] */
    int i;
+   bool print_colors;
 };
 
 struct gen_group {
+   struct gen_spec *spec;
    char *name;
    int nfields;
    struct gen_field **fields;
@@ -70,6 +75,17 @@ struct gen_group {
    uint32_t register_offset;
 };
 
+struct gen_value {
+   char *name;
+   uint64_t value;
+};
+
+struct gen_enum {
+   char *name;
+   int nvalues;
+   struct gen_value **values;
+};
+
 struct gen_type {
    enum {
       GEN_TYPE_UNKNOWN,
@@ -82,14 +98,19 @@ struct gen_type {
       GEN_TYPE_STRUCT,
       GEN_TYPE_UFIXED,
       GEN_TYPE_SFIXED,
-      GEN_TYPE_MBO
+      GEN_TYPE_MBO,
+      GEN_TYPE_ENUM
    } kind;
 
    /* Struct definition for  GEN_TYPE_STRUCT */
-   struct gen_group *gen_struct;
-
-   /* Integer and fractional sizes for GEN_TYPE_UFIXED and GEN_TYPE_SFIXED */
-   int i, f;
+   union {
+      struct gen_group *gen_struct;
+      struct gen_enum *gen_enum;
+      struct {
+         /* Integer and fractional sizes for GEN_TYPE_UFIXED and GEN_TYPE_SFIXED */
+         int i, f;
+      };
+   };
 };
 
 struct gen_field {
@@ -98,11 +119,20 @@ struct gen_field {
    struct gen_type type;
    bool has_default;
    uint32_t default_value;
+
+   struct gen_enum inline_enum;
 };
 
 void gen_field_iterator_init(struct gen_field_iterator *iter,
-                             struct gen_group *group, const uint32_t *p);
+                             struct gen_group *group,
+                             const uint32_t *p,
+                             bool print_colors);
 
 bool gen_field_iterator_next(struct gen_field_iterator *iter);
 
+void gen_print_group(FILE *out,
+                     struct gen_group *group,
+                     uint64_t offset, const uint32_t *p,
+                     int starting_dword, bool color);
+
 #endif /* DECODER_H */