diff options
author | Stefan Schake <stschake@gmail.com> | 2018-04-25 00:00:58 +0200 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2018-05-17 16:04:26 +0100 |
commit | 9ed05e2520f77a11f73d21bccfe149b2b800082c (patch) | |
tree | 106193fef3a2901654b83bed76f01d7fea6b8f11 | |
parent | 4fc0ebdff55419965919e4d6bf3c7f7f2759f7aa (diff) |
broadcom/vc4: Detect syncobj support
We need to know if the kernel supports syncobj submission since otherwise
all the DRM syncobj calls fail.
v2: Use drmGetCap to detect syncobj support (Eric)
Signed-off-by: Stefan Schake <stschake@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | src/gallium/drivers/vc4/vc4_screen.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_screen.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_screen.c b/src/gallium/drivers/vc4/vc4_screen.c index 81c8049325..5476b8cf10 100644 --- a/src/gallium/drivers/vc4/vc4_screen.c +++ b/src/gallium/drivers/vc4/vc4_screen.c @@ -659,7 +659,9 @@ struct pipe_screen * vc4_screen_create(int fd, struct renderonly *ro) { struct vc4_screen *screen = rzalloc(NULL, struct vc4_screen); + uint64_t syncobj_cap = 0; struct pipe_screen *pscreen; + int err; pscreen = &screen->base; @@ -695,6 +697,10 @@ vc4_screen_create(int fd, struct renderonly *ro) screen->has_perfmon_ioctl = vc4_has_feature(screen, DRM_VC4_PARAM_SUPPORTS_PERFMON); + err = drmGetCap(fd, DRM_CAP_SYNCOBJ, &syncobj_cap); + if (err == 0 && syncobj_cap) + screen->has_syncobj = true; + if (!vc4_get_chip_info(screen)) goto fail; diff --git a/src/gallium/drivers/vc4/vc4_screen.h b/src/gallium/drivers/vc4/vc4_screen.h index 0b884423ba..438e90a1a2 100644 --- a/src/gallium/drivers/vc4/vc4_screen.h +++ b/src/gallium/drivers/vc4/vc4_screen.h @@ -98,6 +98,7 @@ struct vc4_screen { bool has_madvise; bool has_tiling_ioctl; bool has_perfmon_ioctl; + bool has_syncobj; struct vc4_simulator_file *sim_file; }; |