simplify shader modules
This commit is contained in:
@@ -1,6 +1,16 @@
|
|||||||
#include "vulkan_shader_module.h"
|
#include "vulkan_shader_module.h"
|
||||||
#include "output_device/vulkan_output_devices.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) {
|
gnReturnCode gnCreateShaderModuleFn(struct gnShaderModule_t *module, struct gnOutputDevice_t *device, struct gnShaderModuleInfo_t shaderModuleInfo) {
|
||||||
module->shaderModule = malloc(sizeof(struct gnPlatformShaderModule_t));
|
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;
|
return GN_FAILED_TO_CREATE_SHADER_MODULE;
|
||||||
}
|
}
|
||||||
|
|
||||||
module->shaderModule->shaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
module->shaderModule->shaderStageInfo = (VkPipelineShaderStageCreateInfo){
|
||||||
if (shaderModuleInfo.stage == GN_VERTEX_SHADER_MODULE)
|
.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
|
||||||
module->shaderModule->shaderStageInfo.stage = VK_SHADER_STAGE_VERTEX_BIT;
|
.stage = vkGryphnShaderModuleStage(shaderModuleInfo.stage),
|
||||||
else if (shaderModuleInfo.stage == GN_FRAGMENT_SHADER_MODULE)
|
.module = module->shaderModule->shaderModule,
|
||||||
module->shaderModule->shaderStageInfo.stage = VK_SHADER_STAGE_FRAGMENT_BIT;
|
.pName = shaderModuleInfo.entryPoint.value
|
||||||
|
};
|
||||||
module->shaderModule->shaderStageInfo.module = module->shaderModule->shaderModule;
|
|
||||||
module->shaderModule->shaderStageInfo.pName = shaderModuleInfo.entryPoint.value;
|
|
||||||
|
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -6,3 +6,5 @@ typedef struct gnPlatformShaderModule_t {
|
|||||||
VkShaderModule shaderModule;
|
VkShaderModule shaderModule;
|
||||||
VkPipelineShaderStageCreateInfo shaderStageInfo;
|
VkPipelineShaderStageCreateInfo shaderStageInfo;
|
||||||
} gnPlatformShaderModule;
|
} gnPlatformShaderModule;
|
||||||
|
|
||||||
|
VkShaderStageFlagBits vkGryphnShaderModuleStage(gnShaderModuleStage stage);
|
||||||
|
@@ -5,11 +5,13 @@
|
|||||||
#include "core/gryphn_handles.h"
|
#include "core/gryphn_handles.h"
|
||||||
|
|
||||||
typedef enum gnShaderModuleStage_e {
|
typedef enum gnShaderModuleStage_e {
|
||||||
GN_VERTEX_SHADER_MODULE, GN_FRAGMENT_SHADER_MODULE
|
GN_VERTEX_SHADER_MODULE = 0x00000001,
|
||||||
|
GN_FRAGMENT_SHADER_MODULE = 0x00000002,
|
||||||
|
GN_ALL_SHADER_MODULE = 0xffffffff
|
||||||
} gnShaderModuleStage;
|
} gnShaderModuleStage;
|
||||||
|
|
||||||
typedef struct gnShaderModuleInfo_t {
|
typedef struct gnShaderModuleInfo_t {
|
||||||
enum gnShaderModuleStage_e stage;
|
gnShaderModuleStage stage;
|
||||||
uint32_t* code;
|
uint32_t* code;
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
gnString entryPoint;
|
gnString entryPoint;
|
||||||
|
Reference in New Issue
Block a user