1#pragma once
 2
 3#include "ggml-backend-impl.h"
 4#include "ggml-backend.h"
 5#include "ggml-impl.h"
 6#include "shared/api_remoting.h"
 7
 8#include <cstdarg>
 9#include <cstdio>
10#include <cstdlib>
11
12extern ggml_backend_reg_t reg;
13extern ggml_backend_dev_t dev;
14extern ggml_backend_t     bck;
15
16struct virgl_apir_callbacks {
17    const char * (*get_config)(uint32_t virgl_ctx_id, const char * key);
18    void * (*get_shmem_ptr)(uint32_t virgl_ctx_id, uint32_t res_id);
19};
20
21extern "C" {
22ApirLoadLibraryReturnCode apir_backend_initialize(uint32_t virgl_ctx_id, struct virgl_apir_callbacks *virgl_cbs);
23void                      apir_backend_deinit(uint32_t virgl_ctx_id);
24uint32_t                  apir_backend_dispatcher(uint32_t               virgl_ctx_id,
25                                                  virgl_apir_callbacks * virgl_cbs,
26                                                  uint32_t               cmd_type,
27                                                  char *                 dec_cur,
28                                                  const char *           dec_end,
29                                                  char *                 enc_cur,
30                                                  const char *           enc_end,
31                                                  char **                enc_cur_after);
32}