X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=blobdiff_plain;f=src%2Fetnaviv%2Fdrm%2Fetnaviv_device.c;h=7dffb1cb3ab2120347cb70f68a31c7a659ffa0cc;hp=921ff4d37f744f37aa5cea8ab83f3d6a88e2e8be;hb=c93007a6186fdcda68ac0738afe989e24936a496;hpb=92fc14321fd87483f787e0c4854cd6f9ea0625ed diff --git a/src/etnaviv/drm/etnaviv_device.c b/src/etnaviv/drm/etnaviv_device.c index 921ff4d37f7..7dffb1cb3ab 100644 --- a/src/etnaviv/drm/etnaviv_device.c +++ b/src/etnaviv/drm/etnaviv_device.c @@ -24,22 +24,25 @@ * Christian Gmeiner */ -#include -#include -#include -#include -#include -#include -#include -#include - -#include +#include "util/hash_table.h" #include "etnaviv_priv.h" #include "etnaviv_drmif.h" static pthread_mutex_t table_lock = PTHREAD_MUTEX_INITIALIZER; +static uint32_t +u32_hash(const void *key) +{ + return _mesa_hash_data(key, sizeof(uint32_t)); +} + +static bool +u32_equals(const void *key1, const void *key2) +{ + return *(const uint32_t *)key1 == *(const uint32_t *)key2; +} + struct etna_device *etna_device_new(int fd) { struct etna_device *dev = calloc(sizeof(*dev), 1); @@ -49,8 +52,8 @@ struct etna_device *etna_device_new(int fd) p_atomic_set(&dev->refcnt, 1); dev->fd = fd; - dev->handle_table = drmHashCreate(); - dev->name_table = drmHashCreate(); + dev->handle_table = _mesa_hash_table_create(NULL, u32_hash, u32_equals); + dev->name_table = _mesa_hash_table_create(NULL, u32_hash, u32_equals); etna_bo_cache_init(&dev->bo_cache); return dev; @@ -81,8 +84,8 @@ struct etna_device *etna_device_ref(struct etna_device *dev) static void etna_device_del_impl(struct etna_device *dev) { etna_bo_cache_cleanup(&dev->bo_cache, 0); - drmHashDestroy(dev->handle_table); - drmHashDestroy(dev->name_table); + _mesa_hash_table_destroy(dev->handle_table, NULL); + _mesa_hash_table_destroy(dev->name_table, NULL); if (dev->closefd) close(dev->fd);