mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 15:30:14 +01:00
ac/radeonsi: add ac_compute_surface to automatically switch gfx6 vs. gfx9
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
8aabed64c3
commit
00f466bad9
3 changed files with 24 additions and 20 deletions
|
|
@ -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:
|
* The following fields of \p surf must be initialized by the caller:
|
||||||
* blk_w, blk_h, bpe, flags.
|
* blk_w, blk_h, bpe, flags.
|
||||||
*/
|
*/
|
||||||
int gfx6_compute_surface(ADDR_HANDLE addrlib,
|
static int gfx6_compute_surface(ADDR_HANDLE addrlib,
|
||||||
const struct ac_surf_config *config,
|
const struct ac_surf_config *config,
|
||||||
enum radeon_surf_mode mode,
|
enum radeon_surf_mode mode,
|
||||||
struct radeon_surf *surf)
|
struct radeon_surf *surf)
|
||||||
{
|
{
|
||||||
unsigned level;
|
unsigned level;
|
||||||
bool compressed;
|
bool compressed;
|
||||||
|
|
@ -847,10 +847,10 @@ static int gfx9_compute_miptree(ADDR_HANDLE addrlib,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
static int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
||||||
const struct ac_surf_config *config,
|
const struct ac_surf_config *config,
|
||||||
enum radeon_surf_mode mode,
|
enum radeon_surf_mode mode,
|
||||||
struct radeon_surf *surf)
|
struct radeon_surf *surf)
|
||||||
{
|
{
|
||||||
bool compressed;
|
bool compressed;
|
||||||
ADDR2_COMPUTE_SURFACE_INFO_INPUT AddrSurfInfoIn = {0};
|
ADDR2_COMPUTE_SURFACE_INFO_INPUT AddrSurfInfoIn = {0};
|
||||||
|
|
@ -1010,3 +1010,14 @@ int gfx9_compute_surface(ADDR_HANDLE addrlib,
|
||||||
|
|
||||||
return 0;
|
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);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -204,13 +204,9 @@ struct ac_surf_config {
|
||||||
ADDR_HANDLE amdgpu_addr_create(enum radeon_family family,
|
ADDR_HANDLE amdgpu_addr_create(enum radeon_family family,
|
||||||
const struct amdgpu_gpu_info *info);
|
const struct amdgpu_gpu_info *info);
|
||||||
|
|
||||||
int gfx6_compute_surface(ADDR_HANDLE addrlib,
|
int ac_compute_surface(ADDR_HANDLE addrlib,
|
||||||
const struct ac_surf_config *config,
|
const struct ac_surf_config * config,
|
||||||
enum radeon_surf_mode mode,
|
enum radeon_surf_mode mode,
|
||||||
struct radeon_surf *surf);
|
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);
|
|
||||||
|
|
||||||
#endif /* AC_SURFACE_H */
|
#endif /* AC_SURFACE_H */
|
||||||
|
|
|
||||||
|
|
@ -113,10 +113,7 @@ static int amdgpu_surface_init(struct radeon_winsys *rws,
|
||||||
config.pipe_interleave_bytes = ws->info.pipe_interleave_bytes;
|
config.pipe_interleave_bytes = ws->info.pipe_interleave_bytes;
|
||||||
config.amdinfo = &ws->amdinfo;
|
config.amdinfo = &ws->amdinfo;
|
||||||
|
|
||||||
if (ws->info.chip_class >= GFX9)
|
return ac_compute_surface(ws->addrlib, &config, mode, surf);
|
||||||
return gfx9_compute_surface(ws->addrlib, &config, mode, surf);
|
|
||||||
else
|
|
||||||
return gfx6_compute_surface(ws->addrlib, &config, mode, surf);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void amdgpu_surface_init_functions(struct amdgpu_winsys *ws)
|
void amdgpu_surface_init_functions(struct amdgpu_winsys *ws)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue