support dynamic uniform buffers on metal
This commit is contained in:
@@ -8,6 +8,8 @@ typedef struct metalUniformBinding {
|
||||
gnUniformType type;
|
||||
uint32_t binding;
|
||||
void* data;
|
||||
|
||||
gnBool isDynamic;
|
||||
} metalUniformBinding;
|
||||
|
||||
typedef id<MTLResource> mtlResource;
|
||||
@@ -17,13 +19,21 @@ typedef struct gnPlatformUniform_t {
|
||||
gnShaderModuleStage stageUsed[MAX_METAL_BINDINGS];
|
||||
id<MTLArgumentEncoder> encoders[mtlMaxStage];
|
||||
id<MTLBuffer> argumentBuffers[mtlMaxStage];
|
||||
|
||||
|
||||
mtlResource usedResources[MAX_METAL_BINDINGS];
|
||||
int indexMap[MAX_METAL_BINDINGS];
|
||||
uint32_t usedResourceCount;
|
||||
|
||||
gnBool isDynamic[MAX_METAL_BINDINGS];
|
||||
} gnPlatformUniform;
|
||||
|
||||
void updateMetalBufferUniform(gnUniform uniform, gnBufferUniformInfo* info);
|
||||
void updateMetalStorageUniform(gnUniform uniform, gnStorageUniformInfo* info);
|
||||
void updateMetalImageUniform(gnUniform uniform, gnImageUniformInfo* info);
|
||||
|
||||
|
||||
typedef struct mtlBufferUniformInfo {
|
||||
gnBufferUniformInfo* baseInfo;
|
||||
id<MTLBuffer> buffer;
|
||||
} mtlBufferUniformInfo;
|
||||
|
||||
void mtlUpdateMetalBufferUniform(gnUniformHandle uniform, mtlBufferUniformInfo* info);
|
||||
|
||||
Reference in New Issue
Block a user