mesa/libdrm: remove signal EP

This is a left over from Mesa-11 and we exchanged it with a
'wait_and_dispatch_one_io_signal' for synchronous signal waits.

issue 
This commit is contained in:
Sebastian Sumpf 2021-09-22 16:04:37 +02:00 committed by Norman Feske
parent 3daa94ff2e
commit 07881f90a9
3 changed files with 14 additions and 22 deletions
repos/libports/src
lib
test/mesa_demo/eglut

@ -160,8 +160,8 @@ class Drm_call
Genode::Heap _heap { _env.ram(), _env.rm() };
Gpu::Connection _gpu_session { _env };
Gpu::Info _gpu_info { _gpu_session.info() };
Genode::Blockade _completion_lock { };
size_t _available_gtt_size { _gpu_info.aperture_size };
bool _complete { false };
using Offset = unsigned long;
@ -391,7 +391,7 @@ class Drm_call
void _handle_completion()
{
/* wake up possible waiters */
_completion_lock.wakeup();
_complete = true;
}
Genode::Io_signal_handler<Drm_call> _completion_sigh {
@ -1052,9 +1052,8 @@ class Drm_call
public:
Drm_call(Genode::Env &env, Genode::Entrypoint &signal_ep)
: _env(env),
_completion_sigh(signal_ep, *this, &Drm_call::_handle_completion)
Drm_call(Genode::Env &env)
: _env(env)
{
/* make handle id 0 unavailable, handled as invalid by iris */
drm_syncobj_create reserve_id_0 { };
@ -1141,8 +1140,12 @@ class Drm_call
: _generic_ioctl(command_number(request), arg);
}
void wait_for_completion() {
_completion_lock.block();
void wait_for_completion()
{
_complete = false;
while (_complete == false)
_env.ep().wait_and_dispatch_one_io_signal();
/* make done buffer objects */
Gpu::Info gpu_info { _gpu_session.info() };
@ -1166,9 +1169,9 @@ class Drm_call
static Genode::Constructible<Drm_call> _call;
void drm_init(Genode::Env &env, Genode::Entrypoint &signal_ep)
void drm_init(Genode::Env &env)
{
_call.construct(env, signal_ep);
_call.construct(env);
}

@ -18,10 +18,9 @@ extern "C" {
#include <platform.h>
}
extern Genode::Entrypoint &genode_entrypoint();
extern void drm_init(Genode::Env &env, Genode::Entrypoint &ep);
extern void drm_init(Genode::Env &env);
void genode_drm_init()
{
drm_init(*genode_env, genode_entrypoint());
drm_init(*genode_env);
}

@ -41,14 +41,6 @@ extern "C" {
Genode::Env *genode_env;
static Genode::Constructible<Genode::Entrypoint> signal_ep;
Genode::Entrypoint &genode_entrypoint()
{
return *signal_ep;
}
struct Window : Genode_egl_window
{
using View_handle = Gui::Session::View_handle;
@ -183,7 +175,5 @@ static void construct_component(Libc::Env &env)
void Libc::Component::construct(Libc::Env &env)
{
genode_env = &env;
signal_ep.construct(env, 1024*sizeof(long), "eglut_signal_ep",
Genode::Affinity::Location());
Libc::with_libc([&] () { construct_component(env); });
}