simplify shader modules

This commit is contained in:
Greg Wells
2025-06-07 14:46:26 -04:00
parent 5108342e5b
commit 77002cd26a
3 changed files with 22 additions and 10 deletions

View File

@@ -1,6 +1,16 @@
#include "vulkan_shader_module.h"
#include "output_device/vulkan_output_devices.h"
VkShaderStageFlagBits vkGryphnShaderModuleStage(gnShaderModuleStage stage) {
VkShaderStageFlagBits outStage = 0;
switch(stage) {
case GN_VERTEX_SHADER_MODULE: outStage |= VK_SHADER_STAGE_VERTEX_BIT; break;
case GN_FRAGMENT_SHADER_MODULE: outStage |= VK_SHADER_STAGE_FRAGMENT_BIT; break;
case GN_ALL_SHADER_MODULE: return VK_SHADER_STAGE_ALL_GRAPHICS;
}
return outStage;
}
gnReturnCode gnCreateShaderModuleFn(struct gnShaderModule_t *module, struct gnOutputDevice_t *device, struct gnShaderModuleInfo_t shaderModuleInfo) {
module->shaderModule = malloc(sizeof(struct gnPlatformShaderModule_t));
@@ -13,14 +23,12 @@ gnReturnCode gnCreateShaderModuleFn(struct gnShaderModule_t *module, struct gnOu
return GN_FAILED_TO_CREATE_SHADER_MODULE;
}
module->shaderModule->shaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
if (shaderModuleInfo.stage == GN_VERTEX_SHADER_MODULE)
module->shaderModule->shaderStageInfo.stage = VK_SHADER_STAGE_VERTEX_BIT;
else if (shaderModuleInfo.stage == GN_FRAGMENT_SHADER_MODULE)
module->shaderModule->shaderStageInfo.stage = VK_SHADER_STAGE_FRAGMENT_BIT;
module->shaderModule->shaderStageInfo.module = module->shaderModule->shaderModule;
module->shaderModule->shaderStageInfo.pName = shaderModuleInfo.entryPoint.value;
module->shaderModule->shaderStageInfo = (VkPipelineShaderStageCreateInfo){
.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
.stage = vkGryphnShaderModuleStage(shaderModuleInfo.stage),
.module = module->shaderModule->shaderModule,
.pName = shaderModuleInfo.entryPoint.value
};
return GN_SUCCESS;
}

View File

@@ -6,3 +6,5 @@ typedef struct gnPlatformShaderModule_t {
VkShaderModule shaderModule;
VkPipelineShaderStageCreateInfo shaderStageInfo;
} gnPlatformShaderModule;
VkShaderStageFlagBits vkGryphnShaderModuleStage(gnShaderModuleStage stage);