summaryrefslogtreecommitdiffstats
path: root/src/amd/common
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 /src/amd/common
parent8aabed64c37c70b0914e5628f0168264ed7e21c7 (diff)
ac/radeonsi: add ac_compute_surface to automatically switch gfx6 vs. gfx9
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/amd/common')
-rw-r--r--src/amd/common/ac_surface.c27
-rw-r--r--src/amd/common/ac_surface.h12
2 files changed, 23 insertions, 16 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 */