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

Function WebGPUReloadProgram

engine/graphics/src/webgpu/graphics_webgpu.cpp:3030–3085  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3028}
3029
3030static bool WebGPUReloadProgram(HContext _context, HProgram _program, ShaderDesc* ddf)
3031{
3032 TRACE_CALL;
3033
3034 ShaderDesc::Shader* ddf_vp = 0x0;
3035 ShaderDesc::Shader* ddf_fp = 0x0;
3036 ShaderDesc::Shader* ddf_cp = 0x0;
3037
3038 if (!GetShaderProgram(_context, ddf, &ddf_vp, &ddf_fp, &ddf_cp))
3039 {
3040 return 0;
3041 }
3042
3043 WebGPUContext* context = (WebGPUContext*)_context;
3044 WebGPUProgram* program = (WebGPUProgram*)_program;
3045 WebGPUDestroyProgram(context, program);
3046
3047 if (ddf_cp)
3048 {
3049 WebGPUShaderModule* compute_module = new WebGPUShaderModule;
3050 memset(compute_module, 0, sizeof(WebGPUShaderModule));
3051
3052 if (!WebGPUCreateShaderModuleFromDDF(context, compute_module, ddf_cp))
3053 {
3054 delete compute_module;
3055 return false;
3056 }
3057
3058 CreateShaderMeta(&ddf->m_Reflection, &program->m_BaseProgram.m_ShaderMeta);
3059 WebGPUCreateComputeProgram(context, program, compute_module);
3060 }
3061 else
3062 {
3063 WebGPUShaderModule* vertex_module = new WebGPUShaderModule;
3064 memset(vertex_module, 0, sizeof(WebGPUShaderModule));
3065 if (!WebGPUCreateShaderModuleFromDDF(context, vertex_module, ddf_vp))
3066 {
3067 delete vertex_module;
3068 return false;
3069 }
3070
3071 WebGPUShaderModule* fragment_module = new WebGPUShaderModule;
3072 memset(fragment_module, 0, sizeof(WebGPUShaderModule));
3073 if (!WebGPUCreateShaderModuleFromDDF(context, fragment_module, ddf_fp))
3074 {
3075 delete vertex_module;
3076 delete fragment_module;
3077 return false;
3078 }
3079
3080 CreateShaderMeta(&ddf->m_Reflection, &program->m_BaseProgram.m_ShaderMeta);
3081 WebGPUCreateGraphicsProgram(context, program, vertex_module, fragment_module);
3082 }
3083
3084 return true;
3085}
3086
3087static uint32_t WebGPUGetAttributeCount(HProgram _program)

Callers

nothing calls this directly

Calls 6

GetShaderProgramFunction · 0.85
WebGPUDestroyProgramFunction · 0.85
CreateShaderMetaFunction · 0.85

Tested by

no test coverage detected