[Mesa-dev] [PATCH 1/1] radeonsi: Use libdrm to get chipset name for radeon
Samuel Li
samuel.li at amd.com
Tue Jul 4 21:38:51 UTC 2017
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 <Samuel.Li at amd.com>
> ---
> 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 <unistd.h>
> #include <fcntl.h>
> #include <radeon_surface.h>
> +#include <radeon_asic_id.h>
>
> 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);
More information about the mesa-dev
mailing list