From 13e5932890788f33f8e2169f6abb1c0a5b508b44 Mon Sep 17 00:00:00 2001 From: Gregory Wells Date: Sun, 3 Aug 2025 18:46:39 -0400 Subject: [PATCH] fix some bugs --- .../metal/src/shader_module/metal_shader_compiler.mm | 6 +++--- projects/apis/metal/src/uniforms/metal_uniform_pool.h | 2 +- projects/apis/metal/src/uniforms/metal_uniform_pool.m | 9 ++++++--- .../apis/vulkan/src/uniforms/vulkan_uniform_layout.c | 2 +- projects/apis/vulkan/src/uniforms/vulkan_uniform_pool.c | 2 +- .../src/output_device/gryphn_physical_output_device.c | 2 +- projects/utils | 2 +- 7 files changed, 14 insertions(+), 11 deletions(-) diff --git a/projects/apis/metal/src/shader_module/metal_shader_compiler.mm b/projects/apis/metal/src/shader_module/metal_shader_compiler.mm index 986fe28..63d8443 100644 --- a/projects/apis/metal/src/shader_module/metal_shader_compiler.mm +++ b/projects/apis/metal/src/shader_module/metal_shader_compiler.mm @@ -9,7 +9,7 @@ typedef struct mtlCompiler_t { } mtlInternalCompiler; void handle_resources(spirv_cross::CompilerMSL& compiler, spirv_cross::SmallVector& resources) { - for (int i = 0; i < resources.size(); i++) { + for (size_t i = 0; i < resources.size(); i++) { uint32_t set = compiler.get_decoration(resources[i].id, spv::DecorationDescriptorSet); compiler.unset_decoration(resources[i].id, spv::DecorationDescriptorSet); compiler.set_decoration(resources[i].id, spv::DecorationDescriptorSet, set + 1); @@ -38,9 +38,9 @@ GN_CPP_FUNCTION const char* mtlCompilerShader(mtlCompiler compiler, gnUniformLay if (compiler->usingArgumentBuffers) { // std::vector bindings; - for (int i = 0; i < uniformLayout->setCount; i++) { + for (uint32_t i = 0; i < uniformLayout->setCount; i++) { uint32_t currentBinding = 0; - for (int c = 0; c < uniformLayout->sets[i].uniformBindingCount; c++) { + for (size_t c = 0; c < uniformLayout->sets[i].uniformBindingCount; c++) { gnUniformBinding gryphnBinding = uniformLayout->sets[i].uniformBindings[c]; spirv_cross::MSLResourceBinding binding = { .binding = gryphnBinding.binding, diff --git a/projects/apis/metal/src/uniforms/metal_uniform_pool.h b/projects/apis/metal/src/uniforms/metal_uniform_pool.h index 16340f6..11cdc54 100644 --- a/projects/apis/metal/src/uniforms/metal_uniform_pool.h +++ b/projects/apis/metal/src/uniforms/metal_uniform_pool.h @@ -1,7 +1,7 @@ #pragma once #include -typedef struct gnPlatformUniformPool_t {} gnPlatformUniformPool; +typedef struct gnPlatformUniformPool_t { gnBool warningAvoider; } gnPlatformUniformPool; gnReturnCode createMetalUniformPool(gnUniformPool pool, gnDeviceHandle device); gnUniform* allocateMetalUniforms(gnUniformPool pool, const gnUniformAllocationInfo allocInfo); diff --git a/projects/apis/metal/src/uniforms/metal_uniform_pool.m b/projects/apis/metal/src/uniforms/metal_uniform_pool.m index ed5e035..e9dc76c 100644 --- a/projects/apis/metal/src/uniforms/metal_uniform_pool.m +++ b/projects/apis/metal/src/uniforms/metal_uniform_pool.m @@ -2,14 +2,17 @@ #include #include "metal_uniform.h" #include "devices/metal_output_devices.h" +#include "metal_uniform_pool.h" gnReturnCode createMetalUniformPool(gnUniformPool pool, gnDeviceHandle device) { + if (device == NULL) return GN_INVALID_HANDLE; + pool->uniformPool = malloc(sizeof(gnPlatformUniformPool)); return GN_SUCCESS; } gnUniform* allocateMetalUniforms(gnUniformPool pool, const gnUniformAllocationInfo allocInfo) { gnUniform* uniforms = malloc(sizeof(gnUniform) * allocInfo.setCount); - for (int i = 0; i < allocInfo.setCount; i++) { + for (uint32_t i = 0; i < allocInfo.setCount; i++) { uniforms[i] = malloc(sizeof(struct gnUniform_t)); uniforms[i]->uniform = malloc(sizeof(gnPlatformUniform)); int currentIndex = 0; @@ -17,7 +20,7 @@ gnUniform* allocateMetalUniforms(gnUniformPool pool, const gnUniformAllocationIn NSMutableArray* vertexArguments = [NSMutableArray arrayWithCapacity:allocInfo.sets[i].uniformBindingCount]; NSMutableArray* fragmentArguments = [NSMutableArray arrayWithCapacity:allocInfo.sets[i].uniformBindingCount]; - for (int c = 0; c < allocInfo.sets[i].uniformBindingCount; c++) { + for (uint32_t c = 0; c < allocInfo.sets[i].uniformBindingCount; c++) { gnUniformBinding binding = allocInfo.sets[i].uniformBindings[c]; switch (binding.type) { case GN_UNIFORM_BUFFER_DESCRIPTOR: @@ -75,7 +78,7 @@ gnUniform* allocateMetalUniforms(gnUniformPool pool, const gnUniformAllocationIn [uniforms[i]->uniform->encoders[mtlFragment] setArgumentBuffer:uniforms[i]->uniform->argumentBuffers[mtlFragment] offset:0]; } - for (int k = 0; k < totalArguments.count; k++) [[totalArguments objectAtIndex:k] release]; + for (uint32_t k = 0; k < totalArguments.count; k++) [[totalArguments objectAtIndex:k] release]; [totalArguments release]; for (int g = 0; g < MAX_METAL_BINDINGS; g++) uniforms[i]->uniform->indexMap[g] = -1; } diff --git a/projects/apis/vulkan/src/uniforms/vulkan_uniform_layout.c b/projects/apis/vulkan/src/uniforms/vulkan_uniform_layout.c index c6da021..a2a454a 100644 --- a/projects/apis/vulkan/src/uniforms/vulkan_uniform_layout.c +++ b/projects/apis/vulkan/src/uniforms/vulkan_uniform_layout.c @@ -19,7 +19,7 @@ VkDescriptorSetLayout vkGryphnCreateSetLayouts( gnUniformSet uniformSet = *set; VkDescriptorSetLayoutBinding* bindings = malloc(sizeof(VkDescriptorSetLayoutBinding) * uniformSet.uniformBindingCount); - for (int i = 0; i < uniformSet.uniformBindingCount; i++) { + for (uint32_t i = 0; i < uniformSet.uniformBindingCount; i++) { bindings[i] = (VkDescriptorSetLayoutBinding){ .binding = uniformSet.uniformBindings[i].binding, .descriptorCount = 1, diff --git a/projects/apis/vulkan/src/uniforms/vulkan_uniform_pool.c b/projects/apis/vulkan/src/uniforms/vulkan_uniform_pool.c index fc8799f..f58ff7b 100644 --- a/projects/apis/vulkan/src/uniforms/vulkan_uniform_pool.c +++ b/projects/apis/vulkan/src/uniforms/vulkan_uniform_pool.c @@ -7,7 +7,7 @@ VkGryphnUniformPool* GetLastUniformPool(VkGryphnUniformPoolArrayList list) { uint32_t count = VkGryphnUniformPoolArrayListCount(list); - return VkGryphnUniformPoolArrayListRefAt(list, count); + return VkGryphnUniformPoolArrayListRefAt(list, count - 1); } gnReturnCode createUniformPool(gnUniformPool pool, gnDeviceHandle device) { diff --git a/projects/core/src/output_device/gryphn_physical_output_device.c b/projects/core/src/output_device/gryphn_physical_output_device.c index 2780f3f..a78b928 100644 --- a/projects/core/src/output_device/gryphn_physical_output_device.c +++ b/projects/core/src/output_device/gryphn_physical_output_device.c @@ -4,7 +4,7 @@ gnPhysicalOutputDeviceHandle* gnGetPhyscialDevices(gnInstanceHandle instance, uint32_t* count) {; gnPhysicalOutputDeviceHandle* devices = instance->callingLayer->instanceFunctions._gnGetPhysicalDevices(instance, count); - for (int i = 0; i < *count; i++) + for (uint32_t i = 0; i < *count; i++) devices[i]->instance = instance; return devices; } diff --git a/projects/utils b/projects/utils index e3286f1..d7a13b1 160000 --- a/projects/utils +++ b/projects/utils @@ -1 +1 @@ -Subproject commit e3286f119d8debe0803503ffd16c6af71bf14980 +Subproject commit d7a13b16d1711940d35481fb3066fabff2e06944