diff options
author | Jeroen Bakker <jeroen@blender.org> | 2022-10-19 15:37:43 +0300 |
---|---|---|
committer | Jeroen Bakker <jeroen@blender.org> | 2022-10-19 15:37:43 +0300 |
commit | dce3327404111316d368e4d55aaa4add55026375 (patch) | |
tree | 4d1afb4a5925424937cd4cdc2185d3780071dc8f /source/blender | |
parent | 3ee90b6c01783e36a17a077489f2fd1150c7d19d (diff) |
Add supported backend check to shader builder.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/gpu/intern/gpu_shader_builder.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/source/blender/gpu/intern/gpu_shader_builder.cc b/source/blender/gpu/intern/gpu_shader_builder.cc index 9f28126da75..9a67ddde5e6 100644 --- a/source/blender/gpu/intern/gpu_shader_builder.cc +++ b/source/blender/gpu/intern/gpu_shader_builder.cc @@ -91,16 +91,27 @@ int main(int argc, const char *argv[]) int exit_code = 0; - blender::Vector<eGPUBackendType> backends_to_validate; - backends_to_validate.append(GPU_BACKEND_OPENGL); + struct NamedBackend { + std::string name; + eGPUBackendType backend; + }; + + blender::Vector<NamedBackend> backends_to_validate; + backends_to_validate.append({"OpenGL", GPU_BACKEND_OPENGL}); #ifdef WITH_METAL_BACKEND - backends_to_validate.append(GPU_BACKEND_METAL); + backends_to_validate.append({"Metal", GPU_BACKEND_METAL}); #endif - for (eGPUBackendType backend : backends_to_validate) { - GPU_backend_type_selection_set(backend); + for (NamedBackend &backend : backends_to_validate) { + GPU_backend_type_selection_set(backend.backend); + if (!GPU_backend_supported()) { + printf("%s isn't supported on this platform. Shader compilation is skipped\n", + backend.name.c_str()); + continue; + } blender::gpu::shader_builder::ShaderBuilder builder; builder.init(); if (!builder.bake_create_infos()) { + printf("Shader compilation failed for %s backend\n", backend.name.c_str()); exit_code = 1; } builder.exit(); |