#include "backend-dispatched.h" #include "backend-virgl-apir.h" #include "ggml-backend-impl.h" #include "ggml-backend.h" #include "ggml-impl.h" #include uint32_t backend_buffer_type_get_name(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx) { GGML_UNUSED(ctx); ggml_backend_buffer_type_t buft; buft = apir_decode_ggml_buffer_type(dec); const char * string = buft->iface.get_name(buft); const size_t string_size = strlen(string) + 1; apir_encode_array_size(enc, string_size); apir_encode_char_array(enc, string, string_size); return 0; } uint32_t backend_buffer_type_get_alignment(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx) { GGML_UNUSED(ctx); ggml_backend_buffer_type_t buft; buft = apir_decode_ggml_buffer_type(dec); size_t value = buft->iface.get_alignment(buft); apir_encode_size_t(enc, &value); return 0; } uint32_t backend_buffer_type_get_max_size(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx) { GGML_UNUSED(ctx); ggml_backend_buffer_type_t buft; buft = apir_decode_ggml_buffer_type(dec); size_t value = SIZE_MAX; if (buft->iface.get_max_size) { value = buft->iface.get_max_size(buft); } apir_encode_size_t(enc, &value); return 0; } /* APIR_COMMAND_TYPE_BUFFER_TYPE_IS_HOST is deprecated. Keeping the handler for backward compatibility. */ uint32_t backend_buffer_type_is_host(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx) { GGML_UNUSED(ctx); GGML_UNUSED(dec); const bool is_host = false; apir_encode_bool_t(enc, &is_host); return 0; } uint32_t backend_buffer_type_alloc_buffer(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx) { GGML_UNUSED(ctx); ggml_backend_buffer_type_t buft; buft = apir_decode_ggml_buffer_type(dec); size_t size; apir_decode_size_t(dec, &size); ggml_backend_buffer_t buffer; buffer = buft->iface.alloc_buffer(buft, size); apir_encode_ggml_buffer(enc, buffer); if (buffer) { apir_track_backend_buffer(buffer); } return 0; } uint32_t backend_buffer_type_get_alloc_size(apir_encoder * enc, apir_decoder * dec, virgl_apir_context * ctx) { GGML_UNUSED(ctx); ggml_backend_buffer_type_t buft; buft = apir_decode_ggml_buffer_type(dec); const ggml_tensor * op = apir_decode_ggml_tensor_inplace(dec); size_t value = buft->iface.get_alloc_size(buft, op); apir_encode_size_t(enc, &value); return 0; }