diff options
author | Nicolai Hähnle <[email protected]> | 2017-05-10 20:40:14 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2017-05-18 11:48:52 +0200 |
commit | 00f466bad93e13adf3da04bdc0746d76f75b6c1b (patch) | |
tree | f79a6bee36dd3f986c2bceb4e5587aa07707c824 /src | |
parent | 8aabed64c37c70b0914e5628f0168264ed7e21c7 (diff) |
ac/radeonsi: add ac_compute_surface to automatically switch gfx6 vs. gfx9
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/amd/common/ac_surface.c | 27 | ||||
-rw-r--r-- | src/amd/common/ac_surface.h | 12 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_surface.c | 5 |
3 files changed, 24 insertions, 20 deletions
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) |