MCPcopy Create free account
hub / github.com/defold/defold / CreateShaderModule

Function CreateShaderModule

engine/graphics/src/vulkan/graphics_vulkan_device.cpp:679–710  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

677 }
678
679 VkResult CreateShaderModule(VkDevice vk_device, const void* source, uint32_t sourceSize, VkShaderStageFlagBits stage_flag, ShaderModule* shaderModuleOut)
680 {
681 assert(shaderModuleOut);
682
683 VkShaderModuleCreateInfo vk_create_info_shader;
684 memset(&vk_create_info_shader, 0, sizeof(vk_create_info_shader));
685
686 vk_create_info_shader.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
687 vk_create_info_shader.codeSize = sourceSize;
688 vk_create_info_shader.pCode = (unsigned int*) source;
689
690 HashState64 shader_hash_state;
691 dmHashInit64(&shader_hash_state, false);
692 dmHashUpdateBuffer64(&shader_hash_state, source, (uint32_t) sourceSize);
693 shaderModuleOut->m_Hash = dmHashFinal64(&shader_hash_state);
694
695 VkResult res = vkCreateShaderModule( vk_device, &vk_create_info_shader, 0, &shaderModuleOut->m_Module);
696 if (res != VK_SUCCESS)
697 {
698 return res;
699 }
700
701 VkPipelineShaderStageCreateInfo shader_create_info = {};
702 shader_create_info.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
703 shader_create_info.stage = stage_flag;
704 shader_create_info.module = shaderModuleOut->m_Module;
705 shader_create_info.pName = "main";
706
707 shaderModuleOut->m_PipelineStageInfo = shader_create_info;
708
709 return VK_SUCCESS;
710 }
711
712 VkResult CreateDeviceBuffer(VkPhysicalDevice vk_physical_device, VkDevice vk_device,
713 VkDeviceSize vk_size, VkMemoryPropertyFlags vk_memory_flags, DeviceBuffer* bufferOut)

Callers 2

ReloadShaderFunction · 0.70
NewShaderModuleFunction · 0.70

Calls 4

dmHashInit64Function · 0.85
dmHashUpdateBuffer64Function · 0.85
dmHashFinal64Function · 0.85
assertFunction · 0.50

Tested by

no test coverage detected