diff options
author | Samuel Li <[email protected]> | 2017-06-06 18:21:08 -0400 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-06-07 21:53:36 +0200 |
commit | c705caaff9e6cc874e90651d6f8e459741978b06 (patch) | |
tree | 4a1d9da31ed321150576505255ed00368196d5d3 /src/gallium | |
parent | 4ba4f0e97673bae2d3a8b7e5bac3210a4c2d944e (diff) |
radeonsi: Use libdrm to get chipset name
v2: Add a func pointer to radeon_winsys to support radeon later.
Change-Id: I614ea71424f9e5c97e4ae68654315d28c89eaa5f
Signed-off-by: Samuel Li <[email protected]>
Signed-off-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.c | 11 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_winsys.h | 2 | ||||
-rw-r--r-- | src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 8 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index 2c0cadb0309..48d136a032f 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -790,6 +790,15 @@ static const char* r600_get_device_vendor(struct pipe_screen* pscreen) static const char* r600_get_chip_name(struct r600_common_screen *rscreen) { + const char *mname; + + if (rscreen->ws->get_chip_name) { + mname = rscreen->ws->get_chip_name(rscreen->ws); + if (mname != NULL) + return mname; + } + + /* fall back to family names*/ switch (rscreen->info.family) { case CHIP_R600: return "AMD R600"; case CHIP_RV610: return "AMD RV610"; @@ -1321,6 +1330,7 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen, struct utsname uname_data; ws->query_info(ws, &rscreen->info); + rscreen->ws = ws; if (uname(&uname_data) == 0) snprintf(kernel_version, sizeof(kernel_version), @@ -1362,7 +1372,6 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen, r600_init_screen_texture_functions(rscreen); r600_init_screen_query_functions(rscreen); - rscreen->ws = ws; rscreen->family = rscreen->info.family; rscreen->chip_class = rscreen->info.chip_class; rscreen->debug_flags = debug_get_flags_option("R600_DEBUG", common_debug_options, 0); diff --git a/src/gallium/drivers/radeon/radeon_winsys.h b/src/gallium/drivers/radeon/radeon_winsys.h index 524bb467e1b..e19fde6e431 100644 --- a/src/gallium/drivers/radeon/radeon_winsys.h +++ b/src/gallium/drivers/radeon/radeon_winsys.h @@ -637,6 +637,8 @@ struct radeon_winsys { bool (*read_registers)(struct radeon_winsys *ws, unsigned reg_offset, unsigned num_registers, uint32_t *out); + + const char* (*get_chip_name)(struct radeon_winsys *ws); }; static inline bool radeon_emitted(struct radeon_winsys_cs *cs, unsigned num_dw) diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index 43f2ed2fbf4..2cbc39c0c70 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -221,6 +221,13 @@ static bool amdgpu_winsys_unref(struct radeon_winsys *rws) return destroy; } +static const char* amdgpu_get_chip_name(struct radeon_winsys *ws) +{ + amdgpu_device_handle dev = ((struct amdgpu_winsys *)ws)->dev; + return amdgpu_get_marketing_name(dev); +} + + PUBLIC struct radeon_winsys * amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create) { @@ -296,6 +303,7 @@ amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create) ws->base.cs_request_feature = amdgpu_cs_request_feature; ws->base.query_value = amdgpu_query_value; ws->base.read_registers = amdgpu_read_registers; + ws->base.get_chip_name = amdgpu_get_chip_name; amdgpu_bo_init_functions(ws); amdgpu_cs_init_functions(ws); |