You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.8 KiB
106 lines
3.8 KiB
#ifndef VIRTIO_GOLDFISH_PIPE
|
|
#define VIRTIO_GOLDFISH_PIPE
|
|
|
|
/* An override of virtio-gpu-3d (virgl) that runs goldfish pipe. One could
|
|
* implement an actual virtio goldfish pipe, but this hijacking of virgl is
|
|
* done in order to avoid any guest kernel changes. */
|
|
|
|
#include "virglrenderer.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
struct virgl_renderer_virtio_interface*
|
|
get_goldfish_pipe_virgl_renderer_virtio_interface(void);
|
|
|
|
/* Needed for goldfish pipe */
|
|
void virgl_write_fence(void *opaque, uint32_t fence);
|
|
|
|
#ifdef _WIN32
|
|
#define VG_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define VG_EXPORT __attribute__((visibility("default")))
|
|
#endif
|
|
|
|
VG_EXPORT void virtio_goldfish_pipe_reset(void* hwpipe, void* hostpipe);
|
|
|
|
#define VIRTIO_GOLDFISH_EXPORT_API
|
|
#ifdef VIRTIO_GOLDFISH_EXPORT_API
|
|
|
|
VG_EXPORT int pipe_virgl_renderer_init(void *cookie,
|
|
int flags,
|
|
struct virgl_renderer_callbacks *cb);
|
|
VG_EXPORT void pipe_virgl_renderer_poll(void);
|
|
VG_EXPORT void* pipe_virgl_renderer_get_cursor_data(
|
|
uint32_t resource_id, uint32_t *width, uint32_t *height);
|
|
VG_EXPORT int pipe_virgl_renderer_resource_create(
|
|
struct virgl_renderer_resource_create_args *args,
|
|
struct iovec *iov, uint32_t num_iovs);
|
|
VG_EXPORT void pipe_virgl_renderer_resource_unref(uint32_t res_handle);
|
|
VG_EXPORT int pipe_virgl_renderer_context_create(
|
|
uint32_t handle, uint32_t nlen, const char *name);
|
|
VG_EXPORT void pipe_virgl_renderer_context_destroy(uint32_t handle);
|
|
VG_EXPORT int pipe_virgl_renderer_submit_cmd(void *buffer,
|
|
int ctx_id,
|
|
int bytes);
|
|
VG_EXPORT int pipe_virgl_renderer_transfer_read_iov(
|
|
uint32_t handle, uint32_t ctx_id,
|
|
uint32_t level, uint32_t stride,
|
|
uint32_t layer_stride,
|
|
struct virgl_box *box,
|
|
uint64_t offset, struct iovec *iov,
|
|
int iovec_cnt);
|
|
VG_EXPORT int pipe_virgl_renderer_transfer_write_iov(
|
|
uint32_t handle,
|
|
uint32_t ctx_id,
|
|
int level,
|
|
uint32_t stride,
|
|
uint32_t layer_stride,
|
|
struct virgl_box *box,
|
|
uint64_t offset,
|
|
struct iovec *iovec,
|
|
unsigned int iovec_cnt);
|
|
VG_EXPORT void pipe_virgl_renderer_get_cap_set(uint32_t, uint32_t*, uint32_t*);
|
|
VG_EXPORT void pipe_virgl_renderer_fill_caps(uint32_t, uint32_t, void *caps);
|
|
|
|
VG_EXPORT int pipe_virgl_renderer_resource_attach_iov(
|
|
int res_handle, struct iovec *iov,
|
|
int num_iovs);
|
|
VG_EXPORT void pipe_virgl_renderer_resource_detach_iov(
|
|
int res_handle, struct iovec **iov, int *num_iovs);
|
|
VG_EXPORT int pipe_virgl_renderer_create_fence(
|
|
int client_fence_id, uint32_t cmd_type);
|
|
VG_EXPORT void pipe_virgl_renderer_force_ctx_0(void);
|
|
VG_EXPORT void pipe_virgl_renderer_ctx_attach_resource(
|
|
int ctx_id, int res_handle);
|
|
VG_EXPORT void pipe_virgl_renderer_ctx_detach_resource(
|
|
int ctx_id, int res_handle);
|
|
VG_EXPORT int pipe_virgl_renderer_resource_get_info(
|
|
int res_handle,
|
|
struct virgl_renderer_resource_info *info);
|
|
|
|
VG_EXPORT void stream_renderer_flush_resource_and_readback(
|
|
uint32_t res_handle, uint32_t x, uint32_t y, uint32_t width, uint32_t height,
|
|
void* pixels, uint32_t max_bytes);
|
|
|
|
VG_EXPORT void stream_renderer_resource_create_v2(
|
|
uint32_t res_handle, uint64_t hvaId);
|
|
VG_EXPORT uint64_t stream_renderer_resource_get_hva(uint32_t res_handle);
|
|
VG_EXPORT uint64_t stream_renderer_resource_get_hva_size(uint32_t res_handle);
|
|
VG_EXPORT void stream_renderer_resource_set_hv_slot(uint32_t res_handle, uint32_t slot);
|
|
VG_EXPORT uint32_t stream_renderer_resource_get_hv_slot(uint32_t res_handle);
|
|
VG_EXPORT int stream_renderer_resource_map(uint32_t res_handle, void** hvaOut, uint64_t* sizeOut);
|
|
VG_EXPORT int stream_renderer_resource_unmap(uint32_t res_handle);
|
|
|
|
#else
|
|
|
|
#define VG_EXPORT
|
|
|
|
#endif // !VIRTIO_GOLDFISH_EXPORT_API
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif
|