diff --git a/repos/libports/src/lib/libdrm/ioctl_iris.cc b/repos/libports/src/lib/libdrm/ioctl_iris.cc index 69f20325f8..4a496528c1 100644 --- a/repos/libports/src/lib/libdrm/ioctl_iris.cc +++ b/repos/libports/src/lib/libdrm/ioctl_iris.cc @@ -188,40 +188,6 @@ struct Gpu::Buffer Constructible buffer_attached { }; - Genode::Dataspace_capability map_cap { }; - Offset map_offset { 0 }; - - struct Tiling - { - bool _valid; - uint32_t mode; - uint32_t stride; - uint32_t swizzle; - - Tiling(uint32_t mode, uint32_t stride, uint32_t swizzle) - : - _valid { true }, - mode { mode }, - stride { stride }, - swizzle { swizzle } - { } - - Tiling() - : - _valid { false }, mode { 0 }, stride { 0 }, swizzle { 0 } - { } - - bool valid() const { return _valid; } - }; - - Tiling tiling { }; - - Gpu_virtual_address gpu_vaddr { }; - Gpu::Sequence_number seqno { }; - - bool gpu_vaddr_valid { false }; - bool busy { false }; - Buffer(Gpu::Connection &gpu, Genode::size_t size, Genode::Id_space &space) @@ -583,57 +549,6 @@ class Drm_call Genode::Id_space _sync_objects { }; - Offset _map_buffer(Buffer &b) - { - Offset offset = 0; - - if (b.map_cap.valid()) { - offset = b.map_offset; - return offset; - } - - _gpu_op([&] () { - b.map_cap = _gpu_session.map_buffer(b.id(), true, Gpu::Mapping_attributes::rw()); - }); - - // XXX attach might faile - b.map_offset = static_cast(_env.rm().attach(b.map_cap)); - offset = b.map_offset; - - _available_gtt_size -= b.size; - - return offset; - } - - Offset _map_buffer(Gpu::Buffer_id const id) - { - Offset offset = 0; - try { - _buffer_space.apply(id, [&] (Buffer &b) { - offset = _map_buffer(b); - }); - } catch (Genode::Id_space::Unknown_id) { - Genode::error(__func__, ": invalid handle ", id.value); - Genode::sleep_forever(); - } - return offset; - } - - void _unmap_buffer(Buffer &buffer) - { - if (!buffer.map_cap.valid()) - return; - - _env.rm().detach(buffer.map_offset); - buffer.map_offset = 0; - - _gpu_session.unmap_buffer(buffer.id()); - - buffer.map_cap = Genode::Dataspace_capability(); - - _available_gtt_size += buffer.size; - } - template void _alloc_buffer(uint64_t const size, FUNC const &fn) { @@ -653,9 +568,6 @@ class Drm_call try { _buffer_space.apply(id, [&] (Buffer &b) { - /* callee checks for mappings */ - _unmap_buffer(b); - _context_space.for_each([&] (Drm::Context &context) { context.free_buffer(b.id()); }); Genode::destroy(&_heap, &b); @@ -903,33 +815,15 @@ class Drm_call int _device_gem_set_tiling(void *arg) { - auto const p = reinterpret_cast(arg); - Gpu::Buffer_id const id { .value = p->handle }; - uint32_t const mode = p->tiling_mode; - uint32_t const stride = p->stride; - uint32_t const swizzle = p->swizzle_mode; + auto const p = reinterpret_cast(arg); + uint32_t const mode = p->tiling_mode; - if (verbose_ioctl) { - Genode::error(__func__, ": ", - "handle: ", id.value, " " - "mode: ", mode, " " - "stride: ", stride , " " - "swizzle: ", swizzle); + if (mode != I915_TILING_NONE) { + Genode::error(__func__, " mode != I915_TILING_NONE (", mode, ") unsupported"); + return 0; } - bool ok = false; - try { - _buffer_space.apply(id, [&] (Buffer &b) { - - b.tiling = Gpu::Buffer::Tiling(mode, stride, swizzle); - ok = true; - - }); - } catch (Genode::Id_space::Unknown_id) { - Genode::error(__func__, ": invalid handle: ", id.value); - } - - return ok ? 0 : -1; + return 0; } int _device_gem_sw_finish(void *) @@ -1007,7 +901,7 @@ class Drm_call try { _buffer_space.apply(id, [&](Buffer const &b) { - p->busy = b.busy; + p->busy = false; }); return 0; } catch (Genode::Id_space::Unknown_id) { @@ -1340,9 +1234,6 @@ class Drm_call return; } - if (b.map_cap.valid()) - _unmap_buffer(b); - b.buffer_attached.destruct(); found = true; });