| 3028 | } |
| 3029 | |
| 3030 | static 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 | |
| 3087 | static uint32_t WebGPUGetAttributeCount(HProgram _program) |
nothing calls this directly
no test coverage detected