Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name for radeon
Note, this change depends on a libdrm change, which is also under review. Sam On 2017-07-04 05:35 PM, Samuel Li wrote: > Change-Id: I98d17f4af07c30f1739b43db1a6e1616a58332ef > Signed-off-by: Samuel Li > --- > src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 17 + > 1 file changed, 17 insertions(+) > > diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > index 2a6ce2c..10d53d2 100644 > --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c > @@ -45,6 +45,7 @@ > #include > #include > #include > +#include > > static struct util_hash_table *fd_tab = NULL; > static mtx_t fd_tab_mutex = _MTX_INITIALIZER_NP; > @@ -557,6 +558,7 @@ static void radeon_winsys_destroy(struct radeon_winsys > *rws) > mtx_destroy(&ws->bo_handles_mutex); > mtx_destroy(&ws->bo_va_mutex); > mtx_destroy(&ws->bo_fence_lock); > +radeon_asic_id_deinitialize(); > > if (ws->fd >= 0) > close(ws->fd); > @@ -734,6 +736,19 @@ static int handle_compare(void *key1, void *key2) > return PTR_TO_UINT(key1) != PTR_TO_UINT(key2); > } > > +static const char* radeon_get_chip_name(struct radeon_winsys *ws) > +{ > +int r; > +drmDevicePtr dev; > +r = drmGetDevice2(((struct radeon_drm_winsys *)ws)->fd, > DRM_DEVICE_GET_PCI_REVISION, &dev); > +if (r) { > +fprintf(stderr, "radeon: drmGetDevice2 failed.\n"); > +return NULL; > +} > + > +return radeon_get_marketing_name(dev->deviceinfo.pci->device_id, > dev->deviceinfo.pci->revision_id); > +} > + > PUBLIC struct radeon_winsys * > radeon_drm_winsys_create(int fd, unsigned flags, >radeon_screen_create_t screen_create) > @@ -803,10 +818,12 @@ radeon_drm_winsys_create(int fd, unsigned flags, > ws->base.cs_request_feature = radeon_cs_request_feature; > ws->base.query_value = radeon_query_value; > ws->base.read_registers = radeon_read_registers; > +ws->base.get_chip_name = radeon_get_chip_name; > > radeon_drm_bo_init_functions(ws); > radeon_drm_cs_init_functions(ws); > radeon_surface_init_functions(ws); > +radeon_asic_id_initialize(); > > (void) mtx_init(&ws->hyperz_owner_mutex, mtx_plain); > (void) mtx_init(&ws->cmask_owner_mutex, mtx_plain); ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name for radeon
Change-Id: I98d17f4af07c30f1739b43db1a6e1616a58332ef Signed-off-by: Samuel Li --- src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 17 + 1 file changed, 17 insertions(+) diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c index 2a6ce2c..10d53d2 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c @@ -45,6 +45,7 @@ #include #include #include +#include static struct util_hash_table *fd_tab = NULL; static mtx_t fd_tab_mutex = _MTX_INITIALIZER_NP; @@ -557,6 +558,7 @@ static void radeon_winsys_destroy(struct radeon_winsys *rws) mtx_destroy(&ws->bo_handles_mutex); mtx_destroy(&ws->bo_va_mutex); mtx_destroy(&ws->bo_fence_lock); +radeon_asic_id_deinitialize(); if (ws->fd >= 0) close(ws->fd); @@ -734,6 +736,19 @@ static int handle_compare(void *key1, void *key2) return PTR_TO_UINT(key1) != PTR_TO_UINT(key2); } +static const char* radeon_get_chip_name(struct radeon_winsys *ws) +{ +int r; +drmDevicePtr dev; +r = drmGetDevice2(((struct radeon_drm_winsys *)ws)->fd, DRM_DEVICE_GET_PCI_REVISION, &dev); +if (r) { +fprintf(stderr, "radeon: drmGetDevice2 failed.\n"); +return NULL; +} + +return radeon_get_marketing_name(dev->deviceinfo.pci->device_id, dev->deviceinfo.pci->revision_id); +} + PUBLIC struct radeon_winsys * radeon_drm_winsys_create(int fd, unsigned flags, radeon_screen_create_t screen_create) @@ -803,10 +818,12 @@ radeon_drm_winsys_create(int fd, unsigned flags, ws->base.cs_request_feature = radeon_cs_request_feature; ws->base.query_value = radeon_query_value; ws->base.read_registers = radeon_read_registers; +ws->base.get_chip_name = radeon_get_chip_name; radeon_drm_bo_init_functions(ws); radeon_drm_cs_init_functions(ws); radeon_surface_init_functions(ws); +radeon_asic_id_initialize(); (void) mtx_init(&ws->hyperz_owner_mutex, mtx_plain); (void) mtx_init(&ws->cmask_owner_mutex, mtx_plain); -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name
On 04.05.2017 14:08, Emil Velikov wrote: On 4 May 2017 at 12:12, Nicolai Hähnle wrote: On 03.05.2017 18:59, Li, Samuel wrote: Thanks for the comments. I was thinking probably marketing names only make sense for amdgpu, but I am OK to add a pointer to radeon_winsys. Will send a v2 later. We won't have marketing names when using radeon. Strictly speaking one could add the API to libdrm_radeon. Just an idea, although I doubt there is much time/interest in doing so. Don't give marketing silly ideas. :P In all seriousness, if somebody did want to do this, be aware that there are plans to make the marketing names data driven. Any radeon-related efforts should wait for that. Cheers, Nicolai -Emil -- Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name
On 4 May 2017 at 12:12, Nicolai Hähnle wrote: > On 03.05.2017 18:59, Li, Samuel wrote: >> >> Thanks for the comments. I was thinking probably marketing names only make >> sense for amdgpu, but I am OK to add a pointer to radeon_winsys. Will send a >> v2 later. > > > We won't have marketing names when using radeon. Strictly speaking one could add the API to libdrm_radeon. Just an idea, although I doubt there is much time/interest in doing so. -Emil ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name
On 03.05.2017 18:59, Li, Samuel wrote: Thanks for the comments. I was thinking probably marketing names only make sense for amdgpu, but I am OK to add a pointer to radeon_winsys. Will send a v2 later. We won't have marketing names when using radeon. The point is that the code still needs to work correctly: only call amdgpu functions when amdgpu is really used. Thanks, Nicolai Sam -Original Message- From: Nicolai Hähnle [mailto:nhaeh...@gmail.com] Sent: Wednesday, May 03, 2017 12:17 PM To: Li, Samuel ; mesa-dev@lists.freedesktop.org Subject: Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name Hi Sam, Please use git send-email in the future, it doesn't mess up the formatting :) This is generally not how we do winsys things, because radeon needs to be supported in addition to amdgpu. The usual approach is to add a new callback function pointer to struct radeon_winsys, in this case get_chip_name. This pointer can be set to amdgpu_get_chip_name in the amdgpu winsys. r600_get_chip_name then calls that function, with a check to make sure that the function pointer is non-NULL (which will happen for the radeon winsys). Cheers, Nicolai On 02.05.2017 23:51, Li, Samuel wrote: From f097509a17a6ddf6a0f40fb1b73f289227a9539a Mon Sep 17 00:00:00 2001 From: Samuel Li Date: Thu, 27 Apr 2017 13:45:24 -0400 Subject: [PATCH 1/1] radeonsi: Use libdrm to get chipset name Change-Id: I614ea71424f9e5c97e4ae68654315d28c89eaa5f Signed-off-by: Samuel Li --- src/gallium/drivers/radeon/r600_pipe_common.c | 10 +- src/gallium/winsys/amdgpu/drm/amdgpu_public.h | 1 + src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 7 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index ce84139..b4f9beb 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -36,6 +36,7 @@ #include "vl/vl_decoder.h" #include "vl/vl_video_buffer.h" #include "radeon/radeon_video.h" +#include "gallium/winsys/amdgpu/drm/amdgpu_public.h" #include #include @@ -788,6 +789,13 @@ 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 = amdgpu_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"; @@ -1314,6 +1322,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), @@ -1355,7 +1364,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/winsys/amdgpu/drm/amdgpu_public.h b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h index ad133b2..8a50c4d 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_public.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h @@ -34,6 +34,7 @@ struct pipe_screen; typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *); +const char* amdgpu_get_chip_name(struct radeon_winsys *ws); struct radeon_winsys * amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create); diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index f3a0c95..0c8c329 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -532,6 +532,13 @@ static bool amdgpu_winsys_unref(struct radeon_winsys *rws) return destroy; } +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) { -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/list
Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name
Thanks for the comments. I was thinking probably marketing names only make sense for amdgpu, but I am OK to add a pointer to radeon_winsys. Will send a v2 later. Sam -Original Message- From: Nicolai Hähnle [mailto:nhaeh...@gmail.com] Sent: Wednesday, May 03, 2017 12:17 PM To: Li, Samuel ; mesa-dev@lists.freedesktop.org Subject: Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name Hi Sam, Please use git send-email in the future, it doesn't mess up the formatting :) This is generally not how we do winsys things, because radeon needs to be supported in addition to amdgpu. The usual approach is to add a new callback function pointer to struct radeon_winsys, in this case get_chip_name. This pointer can be set to amdgpu_get_chip_name in the amdgpu winsys. r600_get_chip_name then calls that function, with a check to make sure that the function pointer is non-NULL (which will happen for the radeon winsys). Cheers, Nicolai On 02.05.2017 23:51, Li, Samuel wrote: > From f097509a17a6ddf6a0f40fb1b73f289227a9539a Mon Sep 17 00:00:00 2001 > > From: Samuel Li > > Date: Thu, 27 Apr 2017 13:45:24 -0400 > > Subject: [PATCH 1/1] radeonsi: Use libdrm to get chipset name > > > > Change-Id: I614ea71424f9e5c97e4ae68654315d28c89eaa5f > > Signed-off-by: Samuel Li > > --- > > src/gallium/drivers/radeon/r600_pipe_common.c | 10 +- > > src/gallium/winsys/amdgpu/drm/amdgpu_public.h | 1 + > > src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 7 +++ > > 3 files changed, 17 insertions(+), 1 deletion(-) > > > > diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c > b/src/gallium/drivers/radeon/r600_pipe_common.c > > index ce84139..b4f9beb 100644 > > --- a/src/gallium/drivers/radeon/r600_pipe_common.c > > +++ b/src/gallium/drivers/radeon/r600_pipe_common.c > > @@ -36,6 +36,7 @@ > > #include "vl/vl_decoder.h" > > #include "vl/vl_video_buffer.h" > > #include "radeon/radeon_video.h" > > +#include "gallium/winsys/amdgpu/drm/amdgpu_public.h" > > #include > > #include > > @@ -788,6 +789,13 @@ 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 = amdgpu_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"; > > @@ -1314,6 +1322,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), > > @@ -1355,7 +1364,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/winsys/amdgpu/drm/amdgpu_public.h > b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h > > index ad133b2..8a50c4d 100644 > > --- a/src/gallium/winsys/amdgpu/drm/amdgpu_public.h > > +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h > > @@ -34,6 +34,7 @@ struct pipe_screen; > > typedef struct pipe_screen *(*radeon_screen_create_t)(struct > radeon_winsys *); > > +const char* amdgpu_get_chip_name(struct radeon_winsys *ws); > > struct radeon_winsys * > > amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create); > > diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c > b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c > > index f3a0c95..0c8c329 100644 > > --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c > > +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c > > @@ -532,6 +532,13 @@ static bool amdgpu_winsys_unref(struct > radeon_winsys *rws) > > return destroy; > > } > > +const char* amdgpu_get_chip_name(struct radeon_w
Re: [Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name
Hi Sam, Please use git send-email in the future, it doesn't mess up the formatting :) This is generally not how we do winsys things, because radeon needs to be supported in addition to amdgpu. The usual approach is to add a new callback function pointer to struct radeon_winsys, in this case get_chip_name. This pointer can be set to amdgpu_get_chip_name in the amdgpu winsys. r600_get_chip_name then calls that function, with a check to make sure that the function pointer is non-NULL (which will happen for the radeon winsys). Cheers, Nicolai On 02.05.2017 23:51, Li, Samuel wrote: From f097509a17a6ddf6a0f40fb1b73f289227a9539a Mon Sep 17 00:00:00 2001 From: Samuel Li Date: Thu, 27 Apr 2017 13:45:24 -0400 Subject: [PATCH 1/1] radeonsi: Use libdrm to get chipset name Change-Id: I614ea71424f9e5c97e4ae68654315d28c89eaa5f Signed-off-by: Samuel Li --- src/gallium/drivers/radeon/r600_pipe_common.c | 10 +- src/gallium/winsys/amdgpu/drm/amdgpu_public.h | 1 + src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 7 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index ce84139..b4f9beb 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -36,6 +36,7 @@ #include "vl/vl_decoder.h" #include "vl/vl_video_buffer.h" #include "radeon/radeon_video.h" +#include "gallium/winsys/amdgpu/drm/amdgpu_public.h" #include #include @@ -788,6 +789,13 @@ 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 = amdgpu_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"; @@ -1314,6 +1322,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), @@ -1355,7 +1364,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/winsys/amdgpu/drm/amdgpu_public.h b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h index ad133b2..8a50c4d 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_public.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h @@ -34,6 +34,7 @@ struct pipe_screen; typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *); +const char* amdgpu_get_chip_name(struct radeon_winsys *ws); struct radeon_winsys * amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create); diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index f3a0c95..0c8c329 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -532,6 +532,13 @@ static bool amdgpu_winsys_unref(struct radeon_winsys *rws) return destroy; } +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) { -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev -- Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte. ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name
>From f097509a17a6ddf6a0f40fb1b73f289227a9539a Mon Sep 17 00:00:00 2001 From: Samuel Li Date: Thu, 27 Apr 2017 13:45:24 -0400 Subject: [PATCH 1/1] radeonsi: Use libdrm to get chipset name Change-Id: I614ea71424f9e5c97e4ae68654315d28c89eaa5f Signed-off-by: Samuel Li --- src/gallium/drivers/radeon/r600_pipe_common.c | 10 +- src/gallium/winsys/amdgpu/drm/amdgpu_public.h | 1 + src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c | 7 +++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index ce84139..b4f9beb 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -36,6 +36,7 @@ #include "vl/vl_decoder.h" #include "vl/vl_video_buffer.h" #include "radeon/radeon_video.h" +#include "gallium/winsys/amdgpu/drm/amdgpu_public.h" #include #include @@ -788,6 +789,13 @@ 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 = amdgpu_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"; @@ -1314,6 +1322,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), @@ -1355,7 +1364,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/winsys/amdgpu/drm/amdgpu_public.h b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h index ad133b2..8a50c4d 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_public.h +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_public.h @@ -34,6 +34,7 @@ struct pipe_screen; typedef struct pipe_screen *(*radeon_screen_create_t)(struct radeon_winsys *); +const char* amdgpu_get_chip_name(struct radeon_winsys *ws); struct radeon_winsys * amdgpu_winsys_create(int fd, radeon_screen_create_t screen_create); diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c index f3a0c95..0c8c329 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c @@ -532,6 +532,13 @@ static bool amdgpu_winsys_unref(struct radeon_winsys *rws) return destroy; } +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) { -- 2.7.4 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev