get the metal backend to compile (does not load)

This commit is contained in:
Greg Wells
2025-06-25 10:46:07 -04:00
parent 4306646c6e
commit 2c9e2260f4
39 changed files with 235 additions and 117 deletions

View File

@@ -1,7 +1,12 @@
#include <core/uniforms/gryphn_uniform.h>
#include <uniforms/gryphn_uniform.h>
#include "metal_uniform.h"
void gnUpdateBufferUniformFn(gnUniform uniform, gnBufferUniformInfo* info) {
uniform->uniform->data = malloc(sizeof(gnBufferUniformInfo));
memcpy(uniform->uniform->data, info, sizeof(gnBufferUniformInfo));
for (int i = 0; i < uniform->uniform->bindingCount; i++) {
if (uniform->uniform->bindings[i].binding == info->binding) {
uniform->uniform->bindings[i].data = malloc(sizeof(gnBufferUniformInfo));
memcpy(uniform->uniform->bindings[i].data, info, sizeof(gnBufferUniformInfo));
break;
}
}
}

View File

@@ -1,8 +1,14 @@
#pragma once
#include "core/uniforms/gryphn_uniform.h"
#include <core/uniforms/gryphn_uniform_pool.h>
#include "uniforms/gryphn_uniform.h"
#include <uniforms/gryphn_uniform_pool.h>
typedef struct metalUniformBinding {
gnUniformType type;
uint32_t binding;
void* data;
} metalUniformBinding;
typedef struct gnPlatformUniform_t {
gnUniformType type;
void* data;
uint32_t bindingCount;
metalUniformBinding* bindings;
} gnPlatformUniform;

View File

@@ -1,17 +1,21 @@
#include <core/uniforms/gryphn_uniform_pool.h>
#include <core/uniforms/gryphn_uniform.h>
#include <uniforms/gryphn_uniform_pool.h>
#include <uniforms/gryphn_uniform.h>
#include "metal_uniform.h"
gnReturnCode gnCreateUniformPoolFn(gnUniformPool pool, gnDeviceHandle device) {
return GN_SUCCESS;
}
gnUniform* gnUniformPoolAllocateUniformsFn(gnUniformPool pool, const gnUniformLayout layout) {
gnUniform* uniforms = malloc(sizeof(gnUniform) * layout.uniformBindingCount);
for (int i = 0; i < layout.uniformBindingCount; i++) {
gnUniform* gnUniformPoolAllocateUniformsFn(gnUniformPool pool, const gnUniformAllocationInfo allocInfo) {
gnUniform* uniforms = malloc(sizeof(gnUniform) * allocInfo.setCount);
for (int i = 0; i < allocInfo.setCount; i++) {
uniforms[i] = malloc(sizeof(struct gnUniform_t));
uniforms[i]->uniform = malloc(sizeof(struct gnPlatformUniform_t));
uniforms[i]->uniform->type = layout.uniformBindings[i].type;
uniforms[i]->uniform = malloc(sizeof(gnPlatformUniform));
uniforms[i]->uniform->bindings = malloc(sizeof(metalUniformBinding) * allocInfo.sets[i].uniformBindingCount);
for (int c = 0; c < allocInfo.sets[i].uniformBindingCount; c++) {
uniforms[i]->uniform->bindings[c].type = allocInfo.sets[i].uniformBindings[c].type;
uniforms[i]->uniform->bindings[c].binding = allocInfo.sets[i].uniformBindings[c].binding;
}
}
return uniforms;
}

View File

@@ -1,6 +1,5 @@
#pragma once
#include <vulkan/vulkan.h>
#include <core/uniforms/gryphn_uniform_pool.h>
#include <uniforms/gryphn_uniform_pool.h>
struct gnPlatformUniformPool_t {
};
typedef struct gnPlatformUniformPool_t {} gnPlatformUniformPool;