add support for sets within uniforms

This commit is contained in:
Gregory Wells
2025-06-15 07:03:34 -04:00
parent 0c3329b1df
commit 118e50223b
8 changed files with 34 additions and 57 deletions

View File

@@ -89,6 +89,7 @@ typedef struct gnGraphicsPipelineInfo_t {
uint32_t shaderModuleCount;
gnShaderModuleHandle* shaderModules;
gnShaderInputLayout shaderInputLayout;
gnUniformLayout uniformLayout;
} gnGraphicsPipelineInfo;

View File

@@ -14,7 +14,12 @@ typedef struct gnUniformBinding {
gnShaderModuleStage stage;
} gnUniformBinding;
typedef struct gnUniformLayout {
typedef struct gnUniformSet {
uint32_t uniformBindingCount;
gnUniformBinding* uniformBindings;
} gnUniformSet;
typedef struct gnUniformLayout {
uint32_t setCount;
gnUniformSet* sets;
} gnUniformLayout;

View File

@@ -13,12 +13,12 @@ gnReturnCode gnCreateUniformPool(gnUniformPool* pool, gnDeviceHandle device) {
// you own this memory now
gnUniformArrayList gnUniformPoolAllocateUniforms(gnUniformPool pool, gnUniformAllocationInfo allocInfo) {
gnUniform* uniforms = pool->device->deviceFunctions->_gnUniformPoolAllocateUniforms(pool, allocInfo);
for (int i = 0; i < allocInfo.layoutCount; i++)
for (int i = 0; i < allocInfo.setCount; i++)
uniforms[i]->pool = pool;
gnUniformArrayList list = gnUniformArrayListCreate();
gnUniformArrayListResize(&list, allocInfo.layoutCount);
for (int i = 0; i < allocInfo.layoutCount; i++) list.data[i] = uniforms[i];
gnUniformArrayListResize(&list, allocInfo.setCount);
for (int i = 0; i < allocInfo.setCount; i++) list.data[i] = uniforms[i];
return list;
}

View File

@@ -12,8 +12,8 @@ struct gnUniformPool_t {
#endif
typedef struct gnUniformAllocationInfo {
const uint32_t layoutCount;
const gnUniformLayout* layouts;
const uint32_t setCount;
const gnUniformSet* sets;
} gnUniformAllocationInfo;
gnReturnCode gnCreateUniformPool(gnUniformPool* pool, gnDeviceHandle device);