@@ -112,6 +112,10 @@ struct ggml_vk_memory {
112
112
vk::Buffer *stagingBuffer = nullptr ;
113
113
};
114
114
115
+ struct ggml_backend_kompute_buffer_context {
116
+ struct ggml_vk_memory memory;
117
+ };
118
+
115
119
#ifdef __linux__
116
120
__attribute__ ((constructor))
117
121
static void enable_sam() {
@@ -1826,15 +1830,16 @@ static const char * ggml_backend_kompute_buffer_get_name(ggml_backend_buffer_t b
1826
1830
}
1827
1831
1828
1832
static void ggml_backend_kompute_buffer_free_buffer (ggml_backend_buffer_t buffer) {
1829
- auto * memory = (ggml_vk_memory *) buffer->context ;
1833
+ auto * ctx = static_cast <ggml_backend_kompute_buffer_context *>( buffer->context ) ;
1830
1834
if (ggml_vk_has_device ()) {
1831
- ggml_vk_free_memory (* memory);
1835
+ ggml_vk_free_memory (ctx-> memory );
1832
1836
}
1833
- delete memory ;
1837
+ delete ctx ;
1834
1838
}
1835
1839
1836
1840
static void * ggml_backend_kompute_buffer_get_base (ggml_backend_buffer_t buffer) {
1837
- return ((ggml_vk_memory *)buffer->context )->data ;
1841
+ auto * ctx = static_cast <ggml_backend_kompute_buffer_context *>(buffer->context );
1842
+ return ctx->memory .data ;
1838
1843
}
1839
1844
1840
1845
static void ggml_backend_kompute_buffer_set_tensor (ggml_backend_buffer_t buffer, ggml_tensor * tensor, const void * data, size_t offset, size_t size) {
@@ -1860,11 +1865,11 @@ static void ggml_backend_kompute_buffer_get_tensor(ggml_backend_buffer_t buffer,
1860
1865
}
1861
1866
1862
1867
static void ggml_backend_kompute_buffer_clear (ggml_backend_buffer_t buffer, uint8_t value) {
1863
- auto * memory = (ggml_vk_memory *) buffer->context ;
1864
- memset (memory-> data , value, buffer-> size );
1868
+ auto * ctx = static_cast <ggml_backend_kompute_buffer_context *>( buffer->context ) ;
1869
+ memset (ctx-> memory . data , value, ctx-> memory . size );
1865
1870
1866
- if (memory-> stagingBuffer )
1867
- komputeManager ()->sequence ()->eval <kp::OpBufferSyncDevice>(memory-> primaryBuffer , memory-> stagingBuffer , memory-> size );
1871
+ if (ctx-> memory . stagingBuffer )
1872
+ komputeManager ()->sequence ()->eval <kp::OpBufferSyncDevice>(ctx-> memory . primaryBuffer , ctx-> memory . stagingBuffer , ctx-> memory . size );
1868
1873
}
1869
1874
1870
1875
static ggml_backend_buffer_i ggml_backend_kompute_buffer_i = {
@@ -1888,7 +1893,8 @@ static const char * ggml_backend_kompute_buffer_type_get_name(ggml_backend_buffe
1888
1893
1889
1894
static ggml_backend_buffer_t ggml_backend_kompute_buffer_type_alloc_buffer (ggml_backend_buffer_type_t buft, size_t size) {
1890
1895
ggml_backend_kompute_device_ref (buft);
1891
- auto * ctx = new ggml_vk_memory (ggml_vk_allocate (size));
1896
+ auto * ctx = new ggml_backend_kompute_buffer_context;
1897
+ ctx->memory = ggml_vk_allocate (size);
1892
1898
return ggml_backend_buffer_init (buft, ggml_backend_kompute_buffer_i, ctx, size);
1893
1899
}
1894
1900
0 commit comments