diff --git a/repos/libports/lib/mk/spec/arm_v8/libdrm.mk b/repos/libports/lib/mk/spec/arm_v8/libdrm.mk index 0278876f51..ebc65c86eb 100644 --- a/repos/libports/lib/mk/spec/arm_v8/libdrm.mk +++ b/repos/libports/lib/mk/spec/arm_v8/libdrm.mk @@ -1,5 +1,7 @@ include $(REP_DIR)/lib/mk/libdrm.inc +LIBS += vfs_gpu + include $(call select_from_repositories,lib/import/import-libdrm.mk) SRC_CC := ioctl_etnaviv.cc diff --git a/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc b/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc index 8663f29536..0a15bc2749 100644 --- a/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc +++ b/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc @@ -21,6 +21,8 @@ #include #include +#include + extern "C" { #include #include @@ -320,14 +322,14 @@ class Gpu::Call Call(Call const &) = delete; Call &operator=(Call const &) = delete; - Genode::Env &_env; + Genode::Env &_env { *vfs_gpu_env() }; Genode::Heap _heap { _env.ram(), _env.rm() }; /***************** ** Gpu session ** *****************/ - Gpu::Connection _gpu_session; + Gpu::Connection _gpu_session { _env }; Gpu::Info_etnaviv const &_gpu_info { *_gpu_session.attached_info() }; @@ -629,10 +631,7 @@ class Gpu::Call public: - Call(Env &env) - : - _env { env }, - _gpu_session { _env } + Call() { try { _exec_buffer.construct(_gpu_session, @@ -677,9 +676,16 @@ class Gpu::Call static Genode::Constructible _drm; -void drm_init(Genode::Env &env) +void drm_init() { - _drm.construct(env); + struct ::stat buf; + if (stat("/dev/gpu", &buf) < 0) { + Genode::error("'/dev/gpu' not accessible: ", + "try configure '' in 'dev' directory of VFS'"); + return; + } + + _drm.construct(); } diff --git a/repos/libports/src/lib/mesa/etnaviv/drm_init.cc b/repos/libports/src/lib/mesa/etnaviv/drm_init.cc index a49db15b3a..027c8459a5 100644 --- a/repos/libports/src/lib/mesa/etnaviv/drm_init.cc +++ b/repos/libports/src/lib/mesa/etnaviv/drm_init.cc @@ -19,9 +19,9 @@ extern "C" { #include } -extern void drm_init(Genode::Env &env); +extern void drm_init(); void genode_drm_init() { - drm_init(*genode_env); + drm_init(); }