#include "util/list.h"
#include "util/macros.h"
+#include "util/timespec.h"
#include "util/u_atomic.h"
#include "util/u_debug.h"
+#include "util/vma.h"
#include "etnaviv_drmif.h"
#include "drm-uapi/etnaviv_drm.h"
struct etna_bo_cache bo_cache;
+ int use_softpin;
+ struct util_vma_heap address_space;
+
int closefd; /* call close(fd) upon destruction */
};
uint32_t flags;
uint32_t name; /* flink global handle (DRI2 name) */
uint64_t offset; /* offset to mmap() */
+ uint32_t va; /* GPU virtual address */
int refcnt;
/*
static inline void get_abs_timeout(struct drm_etnaviv_timespec *tv, uint64_t ns)
{
struct timespec t;
- uint32_t s = ns / 1000000000;
clock_gettime(CLOCK_MONOTONIC, &t);
- tv->tv_sec = t.tv_sec + s;
- tv->tv_nsec = t.tv_nsec + ns - (s * 1000000000);
+ tv->tv_sec = t.tv_sec + ns / NSEC_PER_SEC;
+ tv->tv_nsec = t.tv_nsec + ns % NSEC_PER_SEC;
+ if (tv->tv_nsec >= NSEC_PER_SEC) {
+ tv->tv_nsec -= NSEC_PER_SEC;
+ tv->tv_sec++;
+ }
}
#if HAVE_VALGRIND