diff options
author | Jason Ekstrand <[email protected]> | 2017-05-15 20:40:40 -0700 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2017-05-26 07:58:01 -0700 |
commit | 9d1001c8e5ff5d3706d674452df4969c086ddab1 (patch) | |
tree | aff65b99d58d91ad9baa875515235dced5d4efc7 /src/intel | |
parent | 87588e546eba232d1685bd47192a14399195f776 (diff) |
intel/decoder: Handle gen4 VF_STATISTICS and PIPELINE_SELECT
These need special handling because they have no "DWord Length"
parameter and they have an unusual bias of 1.
Reviewed-by: Jordan Justen <[email protected]>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/common/gen_decoder.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c index e1a2fcf9d11..db989595ff9 100644 --- a/src/intel/common/gen_decoder.c +++ b/src/intel/common/gen_decoder.c @@ -706,9 +706,12 @@ gen_group_get_length(struct gen_group *group, const uint32_t *p) case 3: /* Render */ { uint32_t subtype = field(h, 27, 28); uint32_t opcode = field(h, 24, 26); + uint16_t whole_opcode = field(h, 16, 31); switch (subtype) { case 0: - if (opcode < 2) + if (whole_opcode == 0x6104 /* PIPELINE_SELECT_965 */) + return 1; + else if (opcode < 2) return field(h, 0, 7) + 2; else return -1; @@ -726,7 +729,9 @@ gen_group_get_length(struct gen_group *group, const uint32_t *p) return -1; } case 3: - if (opcode < 4) + if (whole_opcode == 0x780b) + return 1; + else if (opcode < 4) return field(h, 0, 7) + 2; else return -1; |