[Mesa-dev] [PATCH 18/43] intel/decoder: Handle gen4 VF_STATISTICS and PIPELINE_SELECT
Jordan Justen
jordan.l.justen at intel.com
Fri May 26 00:44:24 UTC 2017
On 2017-05-16 15:45:12, Jason Ekstrand wrote:
> These need special handling because they have no "DWord Length"
> parameter and they have an unusual bias of 1.
> ---
> src/intel/common/gen_decoder.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/intel/common/gen_decoder.c b/src/intel/common/gen_decoder.c
> index e1a2fcf..6bb9a7a 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)
How about a comment?
if (whole_opcode == 0x6104 /* PIPELINE_SELECT_965 */)
We could also put all the special case values in a switch at the top
of the function to keep them out of the more logical decoding paths
here.
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
> + 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;
> --
> 2.5.0.400.gff86faf
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list