finish vulkans support of return codes

This commit is contained in:
Gregory Wells
2025-07-29 11:57:05 -04:00
parent a628dc7a23
commit b5984d22f4
14 changed files with 74 additions and 113 deletions

View File

@@ -1,37 +1,33 @@
#include "vulkan_shader_module.h"
#include "output_device/vulkan_output_devices.h"
#include "stdio.h"
#include "vulkan_result_converter.h"
VkShaderStageFlagBits vkGryphnShaderModuleStage(gnShaderModuleStage stage) {
VkShaderStageFlagBits outStage = 0;
if ((stage & GN_VERTEX_SHADER_MODULE) == GN_VERTEX_SHADER_MODULE) outStage |= VK_SHADER_STAGE_VERTEX_BIT;
if ((stage & GN_FRAGMENT_SHADER_MODULE) == GN_FRAGMENT_SHADER_MODULE) outStage |= VK_SHADER_STAGE_FRAGMENT_BIT;
if ((stage & GN_ALL_SHADER_MODULE) == GN_ALL_SHADER_MODULE) return VK_SHADER_STAGE_ALL_GRAPHICS;
return outStage;
}
gnReturnCode createShaderModule(gnShaderModule module, gnDevice device, gnShaderModuleInfo shaderModuleInfo) {
module->shaderModule = malloc(sizeof(struct gnPlatformShaderModule_t));
VkShaderModuleCreateInfo createInfo = {
.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
.codeSize = shaderModuleInfo.size,
.pCode = shaderModuleInfo.code
};
VkResult result = vkCreateShaderModule(device->outputDevice->device, &createInfo, NULL, &module->shaderModule->shaderModule);
if (result == VK_SUCCESS) {
module->shaderModule->shaderStageInfo = (VkPipelineShaderStageCreateInfo){
.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
.stage = vkGryphnShaderModuleStage(shaderModuleInfo.stage),
.module = module->shaderModule->shaderModule,
.pName = gnToCString(shaderModuleInfo.entryPoint)
};
}
if (vkCreateShaderModule(device->outputDevice->device, &createInfo, NULL, &module->shaderModule->shaderModule) != VK_SUCCESS)
return GN_FAILED_TO_CREATE_SHADER_MODULE;
module->shaderModule->shaderStageInfo = (VkPipelineShaderStageCreateInfo){
.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
.stage = vkGryphnShaderModuleStage(shaderModuleInfo.stage),
.module = module->shaderModule->shaderModule,
.pName = gnToCString(shaderModuleInfo.entryPoint)
};
return GN_SUCCESS;
return VkResultToGnReturnCode(result);
}
void destroyShaderModule(gnShaderModule module) {