From: Nicolai Hähnle Date: Wed, 10 May 2017 18:40:14 +0000 (+0200) Subject: ac/radeonsi: add ac_compute_surface to automatically switch gfx6 vs. gfx9 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=00f466bad93e13adf3da04bdc0746d76f75b6c1b;p=mesa.git ac/radeonsi: add ac_compute_surface to automatically switch gfx6 vs. gfx9 Reviewed-by: Marek Olšák --- diff --git a/src/amd/common/ac_surface.c b/src/amd/common/ac_surface.c index 8b6d3b10a2f..b20d8189cc8 100644 --- a/src/amd/common/ac_surface.c +++ b/src/amd/common/ac_surface.c @@ -362,10 +362,10 @@ static unsigned cik_get_macro_tile_index(struct radeon_surf *surf) * The following fields of \p surf must be initialized by the caller: * blk_w, blk_h, bpe, flags. */ -int gfx6_compute_surface(ADDR_HANDLE addrlib, - const struct ac_surf_config *config, - enum radeon_surf_mode mode, - struct radeon_surf *surf) +static int gfx6_compute_surface(ADDR_HANDLE addrlib, + const struct ac_surf_config *config, + enum radeon_surf_mode mode, + struct radeon_surf *surf) { unsigned level; bool compressed; @@ -847,10 +847,10 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib, return 0; } -int gfx9_compute_surface(ADDR_HANDLE addrlib, - const struct ac_surf_config *config, - enum radeon_surf_mode mode, - struct radeon_surf *surf) +static int gfx9_compute_surface(ADDR_HANDLE addrlib, + const struct ac_surf_config *config, + enum radeon_surf_mode mode, + struct radeon_surf *surf) { bool compressed; ADDR2_COMPUTE_SURFACE_INFO_INPUT AddrSurfInfoIn = {0}; @@ -1010,3 +1010,14 @@ int gfx9_compute_surface(ADDR_HANDLE addrlib, return 0; } + +int ac_compute_surface(ADDR_HANDLE addrlib, + const struct ac_surf_config *config, + enum radeon_surf_mode mode, + struct radeon_surf *surf) +{ + if (config->chip_class >= GFX9) + return gfx9_compute_surface(addrlib, config, mode, surf); + else + return gfx6_compute_surface(addrlib, config, mode, surf); +} diff --git a/src/amd/common/ac_surface.h b/src/amd/common/ac_surface.h index 9a9697b77de..73649c76a10 100644 --- a/src/amd/common/ac_surface.h +++ b/src/amd/common/ac_surface.h @@ -204,13 +204,9 @@ struct ac_surf_config { ADDR_HANDLE amdgpu_addr_create(enum radeon_family family, const struct amdgpu_gpu_info *info); -int gfx6_compute_surface(ADDR_HANDLE addrlib, - const struct ac_surf_config *config, - enum radeon_surf_mode mode, - struct radeon_surf *surf); -int gfx9_compute_surface(ADDR_HANDLE addrlib, - const struct ac_surf_config *config, - enum radeon_surf_mode mode, - struct radeon_surf *surf); +int ac_compute_surface(ADDR_HANDLE addrlib, + const struct ac_surf_config * config, + enum radeon_surf_mode mode, + struct radeon_surf *surf); #endif /* AC_SURFACE_H */ diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c b/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c index 76596e8daf6..ca391e0c4ea 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_surface.c @@ -113,10 +113,7 @@ static int amdgpu_surface_init(struct radeon_winsys *rws, config.pipe_interleave_bytes = ws->info.pipe_interleave_bytes; config.amdinfo = &ws->amdinfo; - if (ws->info.chip_class >= GFX9) - return gfx9_compute_surface(ws->addrlib, &config, mode, surf); - else - return gfx6_compute_surface(ws->addrlib, &config, mode, surf); + return ac_compute_surface(ws->addrlib, &config, mode, surf); } void amdgpu_surface_init_functions(struct amdgpu_winsys *ws)