[Mesa-dev] [PATCH 03/19] etnaviv: Put HALTI level in specs
Christian Gmeiner
christian.gmeiner at gmail.com
Sun Nov 5 11:02:27 UTC 2017
2017-10-30 17:16 GMT+01:00 Wladimir J. van der Laan <laanwj at gmail.com>:
> The HALTI level is an indication of the gross architecture of the GPU.
> It determines for significant part what feature level the GPU has, what
> state (especially frontend state) is there, and where it is located.
>
> Signed-off-by: Wladimir J. van der Laan <laanwj at gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>
> ---
> src/gallium/drivers/etnaviv/etnaviv_internal.h | 2 ++
> src/gallium/drivers/etnaviv/etnaviv_screen.c | 21 +++++++++++++++++++++
> 2 files changed, 23 insertions(+)
>
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_internal.h b/src/gallium/drivers/etnaviv/etnaviv_internal.h
> index 896bbf5..22264ec 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_internal.h
> +++ b/src/gallium/drivers/etnaviv/etnaviv_internal.h
> @@ -60,6 +60,8 @@
>
> /* GPU chip 3D specs */
> struct etna_specs {
> + /* HALTI (gross architecture) level. -1 for pre-HALTI. */
> + int halti : 8;
> /* supports SUPERTILE (64x64) tiling? */
> unsigned can_supertile : 1;
> /* needs z=(z+w)/2, for older GCxxx */
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c
> index 1fb8751..9e9c590 100644
> --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
> +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
> @@ -682,6 +682,27 @@ etna_get_specs(struct etna_screen *screen)
> }
> screen->specs.num_constants = val;
>
> + /* Figure out gross GPU architecture. See rnndb/common.xml for a specific
> + * description of the differences. */
> + if (VIV_FEATURE(screen, chipMinorFeatures5, HALTI5))
> + screen->specs.halti = 5; /* New GC7000/GC8x00 */
> + else if (VIV_FEATURE(screen, chipMinorFeatures5, HALTI4))
> + screen->specs.halti = 4; /* Old GC7000/GC7400 */
> + else if (VIV_FEATURE(screen, chipMinorFeatures5, HALTI3))
> + screen->specs.halti = 3; /* None? */
> + else if (VIV_FEATURE(screen, chipMinorFeatures4, HALTI2))
> + screen->specs.halti = 2; /* GC2500/GC3000/GC5000/GC6400 */
> + else if (VIV_FEATURE(screen, chipMinorFeatures2, HALTI1))
> + screen->specs.halti = 1; /* GC900/GC4000/GC7000UL */
> + else if (VIV_FEATURE(screen, chipMinorFeatures1, HALTI0))
> + screen->specs.halti = 0; /* GC880/GC2000/GC7000TM */
> + else
> + screen->specs.halti = -1; /* GC7000nanolite / pre-GC2000 except GC880 */
> + if (screen->specs.halti >= 0)
> + DBG("etnaviv: GPU arch: HALTI%d\n", screen->specs.halti);
> + else
> + DBG("etnaviv: GPU arch: pre-HALTI\n");
> +
> screen->specs.can_supertile =
> VIV_FEATURE(screen, chipMinorFeatures0, SUPER_TILED);
> screen->specs.bits_per_tile =
> --
> 2.7.4
>
I really like the idea!
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info
More information about the mesa-dev
mailing list