mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-23 15:32:25 +00:00
b6cfb5a8fe
Using the 'query_buffer_ppgtt()' function allows for retrieving the virtual address of the buffer in the PPGTT. This is for components that manage the GPU virtual addresses rather than the client as is the case with the lima driver. Issue #4559.
87 lines
2.5 KiB
C++
87 lines
2.5 KiB
C++
/*
|
|
* \brief Client-side Gpu session interface
|
|
* \author Josef Soentgen
|
|
* \date 2017-04-28
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2017-2021 Genode Labs GmbH
|
|
*
|
|
* This file is part of the Genode OS framework, which is distributed
|
|
* under the terms of the GNU Affero General Public License version 3.
|
|
*/
|
|
|
|
#ifndef _INCLUDE__GPU_SESSION__CLIENT_H_
|
|
#define _INCLUDE__GPU_SESSION__CLIENT_H_
|
|
|
|
/* Genode includes */
|
|
#include <base/rpc_client.h>
|
|
#include <gpu_session/capability.h>
|
|
|
|
namespace Gpu { class Session_client; }
|
|
|
|
|
|
class Gpu::Session_client : public Genode::Rpc_client<Session>
|
|
{
|
|
public:
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* \param session session capability
|
|
*/
|
|
Session_client(Session_capability session)
|
|
: Genode::Rpc_client<Session>(session) { }
|
|
|
|
/***********************
|
|
** Session interface **
|
|
***********************/
|
|
|
|
Genode::Dataspace_capability info_dataspace() const override {
|
|
return call<Rpc_info_dataspace>(); }
|
|
|
|
Gpu::Sequence_number exec_buffer(Buffer_id id,
|
|
Genode::size_t size) override {
|
|
return call<Rpc_exec_buffer>(id, size); }
|
|
|
|
bool complete(Sequence_number seqno) override {
|
|
return call<Rpc_complete>(seqno); }
|
|
|
|
void completion_sigh(Genode::Signal_context_capability sigh) override {
|
|
call<Rpc_completion_sigh>(sigh); }
|
|
|
|
Genode::Dataspace_capability alloc_buffer(Buffer_id id, Genode::size_t size) override {
|
|
return call<Rpc_alloc_buffer>(id, size); }
|
|
|
|
void free_buffer(Gpu::Buffer_id id) override {
|
|
call<Rpc_free_buffer>(id); }
|
|
|
|
Gpu::Buffer_capability export_buffer(Buffer_id id) override {
|
|
return call<Rpc_export_buffer>(id); }
|
|
|
|
void import_buffer(Buffer_capability cap, Buffer_id id) override {
|
|
call<Rpc_import_buffer>(cap, id); }
|
|
|
|
Genode::Dataspace_capability map_buffer(Buffer_id id,
|
|
bool aperture,
|
|
Mapping_attributes attrs) override {
|
|
return call<Rpc_map_buffer>(id, aperture, attrs); }
|
|
|
|
void unmap_buffer(Buffer_id id) override {
|
|
call<Rpc_unmap_buffer>(id); }
|
|
|
|
bool map_buffer_ppgtt(Buffer_id id, Gpu::addr_t va) override {
|
|
return call<Rpc_map_buffer_ppgtt>(id, va); }
|
|
|
|
void unmap_buffer_ppgtt(Buffer_id id, Gpu::addr_t va) override {
|
|
call<Rpc_unmap_buffer_ppgtt>(id, va); }
|
|
|
|
Gpu::addr_t query_buffer_ppgtt(Gpu::Buffer_id id) override {
|
|
return call<Rpc_query_buffer_ppgtt>(id); }
|
|
|
|
bool set_tiling(Buffer_id id, unsigned mode) override {
|
|
return call<Rpc_set_tiling>(id, mode); }
|
|
};
|
|
|
|
#endif /* _INCLUDE__GPU_SESSION__CLIENT_H_ */
|