summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2017-05-10 20:40:14 +0200
committerNicolai Hähnle <[email protected]>2017-05-18 11:48:52 +0200
commit00f466bad93e13adf3da04bdc0746d76f75b6c1b (patch)
treef79a6bee36dd3f986c2bceb4e5587aa07707c824
parent8aabed64c37c70b0914e5628f0168264ed7e21c7 (diff)
ac/radeonsi: add ac_compute_surface to automatically switch gfx6 vs. gfx9
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/amd/common/ac_surface.c27
-rw-r--r--src/amd/common/ac_surface.h12
-rw-r--r--src/gallium/winsys/amdgpu/drm/amdgpu_surface.c5
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)