| 2877 | } |
| 2878 | |
| 2879 | static void WebGPUCreateGraphicsProgram(WebGPUContext* context, WebGPUProgram* program, WebGPUShaderModule* vertex_module, WebGPUShaderModule* fragment_module) |
| 2880 | { |
| 2881 | TRACE_CALL; |
| 2882 | program->m_VertexModule = vertex_module; |
| 2883 | program->m_FragmentModule = fragment_module; |
| 2884 | { |
| 2885 | HashState64 program_hash; |
| 2886 | dmHashInit64(&program_hash, false); |
| 2887 | |
| 2888 | for (uint32_t i=0; i < program->m_BaseProgram.m_ShaderMeta.m_Inputs.Size(); i++) |
| 2889 | { |
| 2890 | if (program->m_BaseProgram.m_ShaderMeta.m_Inputs[i].m_StageFlags & SHADER_STAGE_FLAG_VERTEX) |
| 2891 | { |
| 2892 | dmHashUpdateBuffer64(&program_hash, &program->m_BaseProgram.m_ShaderMeta.m_Inputs[i].m_Binding, sizeof(program->m_BaseProgram.m_ShaderMeta.m_Inputs[i].m_Binding)); |
| 2893 | } |
| 2894 | } |
| 2895 | |
| 2896 | dmHashUpdateBuffer64(&program_hash, &vertex_module->m_Hash, sizeof(vertex_module->m_Hash)); |
| 2897 | dmHashUpdateBuffer64(&program_hash, &fragment_module->m_Hash, sizeof(fragment_module->m_Hash)); |
| 2898 | program->m_Hash = dmHashFinal64(&program_hash); |
| 2899 | } |
| 2900 | WebGPUUpdateProgramLayouts(context, program); |
| 2901 | } |
| 2902 | |
| 2903 | static HProgram WebGPUNewProgram(HContext _context, ShaderDesc* ddf, char* error_buffer, uint32_t error_buffer_size) |
| 2904 | { |
no test coverage detected