[Mesa-dev] [PATCH 095/140] winsys/amdgpu: update amdgpu_addr_create for GFX9
Nicolai Hähnle
nhaehnle at gmail.com
Tue Mar 21 09:11:11 UTC 2017
On 20.03.2017 23:48, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
> src/gallium/winsys/amdgpu/drm/amdgpu_surface.c | 47 ++++++++++++++++----------
> 1 file changed, 30 insertions(+), 17 deletions(-)
>
> diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c b/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c
> index ede8ba6..c64865f 100644
> --- a/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c
> +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c
> @@ -36,6 +36,9 @@
> #define CIASICIDGFXENGINE_SOUTHERNISLAND 0x0000000A
> #endif
>
> +#ifndef CIASICIDGFXENGINE_ARCTICISLAND
> +#define CIASICIDGFXENGINE_ARCTICISLAND 0x0000000D
> +#endif
>
> static int amdgpu_surface_sanity(const struct pipe_resource *tex)
> {
> @@ -107,32 +110,42 @@ ADDR_HANDLE amdgpu_addr_create(struct amdgpu_winsys *ws)
> addrCreateInput.size = sizeof(ADDR_CREATE_INPUT);
> addrCreateOutput.size = sizeof(ADDR_CREATE_OUTPUT);
>
> - regValue.noOfBanks = ws->amdinfo.mc_arb_ramcfg & 0x3;
> regValue.gbAddrConfig = ws->amdinfo.gb_addr_cfg;
> - regValue.noOfRanks = (ws->amdinfo.mc_arb_ramcfg & 0x4) >> 2;
> -
> - regValue.backendDisables = ws->amdinfo.enabled_rb_pipes_mask;
> - regValue.pTileConfig = ws->amdinfo.gb_tile_mode;
> - regValue.noOfEntries = ARRAY_SIZE(ws->amdinfo.gb_tile_mode);
> - if (ws->info.chip_class == SI) {
> - regValue.pMacroTileConfig = NULL;
> - regValue.noOfMacroEntries = 0;
> + createFlags.value = 0;
> +
> + if (ws->info.chip_class >= GFX9) {
> + addrCreateInput.chipEngine = CIASICIDGFXENGINE_ARCTICISLAND;
> + regValue.blockVarSizeLog2 = 0;
> } else {
> - regValue.pMacroTileConfig = ws->amdinfo.gb_macro_tile_mode;
> - regValue.noOfMacroEntries = ARRAY_SIZE(ws->amdinfo.gb_macro_tile_mode);
> - }
> + regValue.backendDisables = ws->amdinfo.backend_disable[0];
This looks like it might be a change in behavior. But I guess the change
is small enough to still be bisectable, so okay.
Nicolai
> + regValue.noOfBanks = ws->amdinfo.mc_arb_ramcfg & 0x3;
> + regValue.noOfRanks = (ws->amdinfo.mc_arb_ramcfg & 0x4) >> 2;
>
> - createFlags.value = 0;
> - createFlags.useTileIndex = 1;
> - createFlags.useHtileSliceAlign = 1;
> + regValue.backendDisables = ws->amdinfo.enabled_rb_pipes_mask;
> + regValue.pTileConfig = ws->amdinfo.gb_tile_mode;
> + regValue.noOfEntries = ARRAY_SIZE(ws->amdinfo.gb_tile_mode);
> + if (ws->info.chip_class == SI) {
> + regValue.pMacroTileConfig = NULL;
> + regValue.noOfMacroEntries = 0;
> + } else {
> + regValue.pMacroTileConfig = ws->amdinfo.gb_macro_tile_mode;
> + regValue.noOfMacroEntries = ARRAY_SIZE(ws->amdinfo.gb_macro_tile_mode);
> + }
> +
> + createFlags.useTileIndex = 1;
> + createFlags.useHtileSliceAlign = 1;
> +
> + addrCreateInput.chipEngine = CIASICIDGFXENGINE_SOUTHERNISLAND;
> + addrCreateInput.chipFamily = ws->family;
> + addrCreateInput.chipRevision = ws->rev_id;
> + }
>
> - addrCreateInput.chipEngine = CIASICIDGFXENGINE_SOUTHERNISLAND;
> addrCreateInput.chipFamily = ws->family;
> addrCreateInput.chipRevision = ws->rev_id;
> - addrCreateInput.createFlags = createFlags;
> addrCreateInput.callbacks.allocSysMem = allocSysMem;
> addrCreateInput.callbacks.freeSysMem = freeSysMem;
> addrCreateInput.callbacks.debugPrint = 0;
> + addrCreateInput.createFlags = createFlags;
> addrCreateInput.regValue = regValue;
>
> addrRet = AddrCreate(&addrCreateInput, &addrCreateOutput);
>
More information about the mesa-dev
mailing list