Metal fixes

This commit is contained in:
luboslenco
2025-05-01 12:32:28 +02:00
parent 1916b6ea87
commit 62cffd93ab
10 changed files with 44 additions and 21 deletions
+3 -1
View File
@@ -252,6 +252,8 @@ void iron_gpu_internal_init_window(int depth_buffer_bits, bool vsync) {
// device.makeArgumentEncoder(bufferIndex:)
argument_buffer_step = [argument_encoder encodedLength];
// int align = [argument_encoder alignment];
// argument_buffer_step += (align - (argument_buffer_step % align)) % align;
argument_buffer = [device newBufferWithLength:(argument_buffer_step * 2048) options:MTLResourceStorageModeShared];
for (int i = 0; i < 2048; ++i) {
[argument_encoder setArgumentBuffer:argument_buffer offset:argument_buffer_step * i];
@@ -520,7 +522,7 @@ void iron_gpu_command_list_set_constant_buffer(iron_gpu_command_list_t *list, ir
id<MTLBuffer> buf = (__bridge id<MTLBuffer>)buffer->impl._buffer;
int i = constant_buffer_index;
[argument_encoder setArgumentBuffer:argument_buffer offset:argument_buffer_step * i];
[argument_encoder setBuffer:buf offset:offset atIndex:0 ];
[argument_encoder setBuffer:buf offset:offset atIndex:0];
[command_encoder setVertexBuffer:argument_buffer offset:argument_buffer_step * i atIndex:1];
[command_encoder setFragmentBuffer:argument_buffer offset:argument_buffer_step * i atIndex:1];
[command_encoder useResource:buf usage:MTLResourceUsageRead];