Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/intern/gpu_codegen.c
| Show First 20 Lines • Show All 1,221 Lines • ▼ Show 20 Lines | if (!gpu_pass_shader_validate(pass, shader)) { | ||||
| success = false; | success = false; | ||||
| if (shader != NULL) { | if (shader != NULL) { | ||||
| fprintf(stderr, "GPUShader: error: too many samplers in shader.\n"); | fprintf(stderr, "GPUShader: error: too many samplers in shader.\n"); | ||||
| GPU_shader_free(shader); | GPU_shader_free(shader); | ||||
| shader = NULL; | shader = NULL; | ||||
| } | } | ||||
| } | } | ||||
| else if (!BLI_thread_is_main() && GPU_context_local_shaders_workaround()) { | else if (!BLI_thread_is_main() && GPU_context_local_shaders_workaround()) { | ||||
| /* Store the shader in its binary form. The shader will be replaced when running in main | |||||
| * thread. We keep the shader so the caller can still use its interface. */ | |||||
| pass->binary.content = GPU_shader_get_binary( | pass->binary.content = GPU_shader_get_binary( | ||||
| shader, &pass->binary.format, &pass->binary.len); | shader, &pass->binary.format, &pass->binary.len); | ||||
| GPU_shader_free(shader); | |||||
| shader = NULL; | |||||
| } | } | ||||
| pass->shader = shader; | pass->shader = shader; | ||||
| pass->compiled = true; | pass->compiled = true; | ||||
| } | } | ||||
| else if (pass->binary.content && BLI_thread_is_main()) { | else if (pass->binary.content && BLI_thread_is_main()) { | ||||
| /* Replace the previous compiled shader and re-load the shader from its binary | |||||
| * representation. */ | |||||
| GPU_shader_free(pass->shader); | |||||
| pass->shader = GPU_shader_load_from_binary( | pass->shader = GPU_shader_load_from_binary( | ||||
| pass->binary.content, pass->binary.format, pass->binary.len, shname); | pass->binary.content, pass->binary.format, pass->binary.len, shname); | ||||
| MEM_SAFE_FREE(pass->binary.content); | MEM_SAFE_FREE(pass->binary.content); | ||||
| } | } | ||||
| return success; | return success; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 79 Lines • Show Last 20 Lines | |||||