summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Schake <stschake@gmail.com>2018-04-25 00:00:58 +0200
committerEric Anholt <eric@anholt.net>2018-05-17 16:04:26 +0100
commit9ed05e2520f77a11f73d21bccfe149b2b800082c (patch)
tree106193fef3a2901654b83bed76f01d7fea6b8f11
parent4fc0ebdff55419965919e4d6bf3c7f7f2759f7aa (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.c6
-rw-r--r--src/gallium/drivers/vc4/vc4_screen.h1
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 81c8049325f..5476b8cf10c 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 0b884423ba5..438e90a1a2c 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;
};