[Bf-blender-cvs] [7d7a39d00bc] temp-vulkan-shader: Make sure that shader compiler doesn't crash when using Vulkan.

Jeroen Bakker noreply at git.blender.org
Fri Nov 25 10:05:01 CET 2022


Commit: 7d7a39d00bcb207774c25a576ac863dbdf3bcb0f
Author: Jeroen Bakker
Date:   Fri Nov 25 09:24:03 2022 +0100
Branches: temp-vulkan-shader
https://developer.blender.org/rB7d7a39d00bcb207774c25a576ac863dbdf3bcb0f

Make sure that shader compiler doesn't crash when using Vulkan.

===================================================================

M	source/blender/gpu/intern/gpu_context.cc
M	source/blender/gpu/intern/gpu_init_exit.c
M	source/blender/gpu/intern/gpu_shader.cc
M	source/blender/gpu/intern/gpu_shader_builder.cc

===================================================================

diff --git a/source/blender/gpu/intern/gpu_context.cc b/source/blender/gpu/intern/gpu_context.cc
index 7e94538892a..0443417a32a 100644
--- a/source/blender/gpu/intern/gpu_context.cc
+++ b/source/blender/gpu/intern/gpu_context.cc
@@ -321,6 +321,12 @@ eGPUBackendType GPU_backend_get_type()
   }
 #endif
 
+#ifdef WITH_VULKAN_BACKEND
+  if (g_backend && dynamic_cast<VKBackend *>(g_backend) != nullptr) {
+    return GPU_BACKEND_VULKAN;
+  }
+#endif
+
   return GPU_BACKEND_NONE;
 }
 
diff --git a/source/blender/gpu/intern/gpu_init_exit.c b/source/blender/gpu/intern/gpu_init_exit.c
index 2dbb4b215bb..af906ad685f 100644
--- a/source/blender/gpu/intern/gpu_init_exit.c
+++ b/source/blender/gpu/intern/gpu_init_exit.c
@@ -34,13 +34,13 @@ void GPU_init(void)
   gpu_shader_create_info_init();
 
   gpu_codegen_init();
-
-  gpu_batch_init();
+  // TODO(jbakker): this should never land in master.
+  // gpu_batch_init();
 }
 
 void GPU_exit(void)
 {
-  gpu_batch_exit();
+  // gpu_batch_exit();
 
   gpu_codegen_exit();
 
diff --git a/source/blender/gpu/intern/gpu_shader.cc b/source/blender/gpu/intern/gpu_shader.cc
index 4d059ae495e..15d2b37e0a9 100644
--- a/source/blender/gpu/intern/gpu_shader.cc
+++ b/source/blender/gpu/intern/gpu_shader.cc
@@ -98,6 +98,9 @@ static void standard_defines(Vector<const char *> &sources)
     case GPU_BACKEND_METAL:
       sources.append("#define GPU_METAL\n");
       break;
+    case GPU_BACKEND_VULKAN:
+      sources.append("#define GPU_VULKAN\n");
+      break;
     default:
       BLI_assert(false && "Invalid GPU Backend Type");
       break;
diff --git a/source/blender/gpu/intern/gpu_shader_builder.cc b/source/blender/gpu/intern/gpu_shader_builder.cc
index 96e3eacd6f5..877cd1ee406 100644
--- a/source/blender/gpu/intern/gpu_shader_builder.cc
+++ b/source/blender/gpu/intern/gpu_shader_builder.cc
@@ -54,6 +54,12 @@ void ShaderBuilder::init()
       break;
 #endif
 
+#ifdef WITH_VULKAN_BACKEND
+    case GPU_BACKEND_VULKAN:
+      glSettings.context_type = GHOST_kDrawingContextTypeVulkan;
+      break;
+#endif
+
     default:
       BLI_assert_unreachable();
       break;
@@ -100,6 +106,9 @@ int main(int argc, const char *argv[])
   backends_to_validate.append({"OpenGL", GPU_BACKEND_OPENGL});
 #ifdef WITH_METAL_BACKEND
   backends_to_validate.append({"Metal", GPU_BACKEND_METAL});
+#endif
+#ifdef WITH_VULKAN_BACKEND
+  backends_to_validate.append({"Vulkan", GPU_BACKEND_VULKAN});
 #endif
   for (NamedBackend &backend : backends_to_validate) {
     GPU_backend_type_selection_set(backend.backend);



More information about the Bf-blender-cvs mailing list