[Bf-blender-cvs] [ce13d0d3265] master: GPU: Only compile test shaders when test cases option is enabled.

Jeroen Bakker noreply at git.blender.org
Mon Jan 30 15:46:16 CET 2023


Commit: ce13d0d32650a4e7bc49e61bcb25d7aa044c41c9
Author: Jeroen Bakker
Date:   Mon Jan 30 15:43:49 2023 +0100
Branches: master
https://developer.blender.org/rBce13d0d32650a4e7bc49e61bcb25d7aa044c41c9

GPU: Only compile test shaders when test cases option is enabled.

The glsl files + create infos of shaders that are only used
during development where still being compiled into blender.

This isn't needed and shouldn't be included. This change will
only include them when WITH_GTEST and WITH_OPENGL_DRAW_TESTS are
enabled. All other cases those files will be skipped.

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

M	source/blender/gpu/CMakeLists.txt
M	source/blender/gpu/shaders/infos/gpu_shader_test_info.hh
M	source/blender/gpu/tests/gpu_shader_test.cc
A	source/blender/gpu/tests/shaders/gpu_compute_1d_test.glsl
A	source/blender/gpu/tests/shaders/gpu_compute_2d_test.glsl
A	source/blender/gpu/tests/shaders/gpu_compute_ibo_test.glsl
A	source/blender/gpu/tests/shaders/gpu_compute_vbo_test.glsl
R100	source/blender/gpu/tests/gpu_math_test.glsl	source/blender/gpu/tests/shaders/gpu_math_test.glsl

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

diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 68e77ef9a92..30a525af6cd 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -495,11 +495,18 @@ set(GLSL_SRC
   shaders/gpu_shader_cfg_world_clip_lib.glsl
   shaders/gpu_shader_colorspace_lib.glsl
 
-  tests/gpu_math_test.glsl
 
   GPU_shader_shared_utils.h
 )
 
+set(GLSL_SRC_TEST
+  tests/shaders/gpu_math_test.glsl
+  tests/shaders/gpu_compute_1d_test.glsl
+  tests/shaders/gpu_compute_2d_test.glsl
+  tests/shaders/gpu_compute_ibo_test.glsl
+  tests/shaders/gpu_compute_vbo_test.glsl
+)
+
 set(MTL_BACKEND_GLSL_SRC
   metal/kernels/compute_texture_update.msl
   metal/kernels/compute_texture_read.msl
@@ -517,6 +524,12 @@ set(MSL_SRC
   metal/mtl_shader_shared.h
 )
 
+if(WITH_GTESTS)
+  if(WITH_OPENGL_DRAW_TESTS)
+    list(APPEND GLSL_SRC ${GLSL_SRC_TEST})
+  endif()
+endif()
+
 if(WITH_METAL_BACKEND)
   list(APPEND GLSL_SRC ${MTL_BACKEND_GLSL_SRC})
 
@@ -638,16 +651,26 @@ set(SRC_SHADER_CREATE_INFOS
   shaders/infos/gpu_shader_keyframe_shape_info.hh
   shaders/infos/gpu_shader_line_dashed_uniform_color_info.hh
   shaders/infos/gpu_shader_simple_lighting_info.hh
-  shaders/infos/gpu_shader_test_info.hh
   shaders/infos/gpu_shader_text_info.hh
   shaders/infos/gpu_srgb_to_framebuffer_space_info.hh
 )
 
+set(SRC_SHADER_CREATE_INFOS_TEST
+  shaders/infos/gpu_shader_test_info.hh
+)
+
+
 set(SRC_SHADER_CREATE_INFOS_MTL
   metal/kernels/depth_2d_update_info.hh
   metal/kernels/gpu_shader_fullscreen_blit_info.hh
 )
 
+if(WITH_GTESTS)
+  if(WITH_OPENGL_DRAW_TESTS)
+    list(APPEND SRC_SHADER_CREATE_INFOS ${SRC_SHADER_CREATE_INFOS_TEST})
+  endif()
+endif()
+
 if(WITH_METAL_BACKEND)
   list(APPEND SRC_SHADER_CREATE_INFOS ${SRC_SHADER_CREATE_INFOS_MTL})
 endif()
diff --git a/source/blender/gpu/shaders/infos/gpu_shader_test_info.hh b/source/blender/gpu/shaders/infos/gpu_shader_test_info.hh
index 358b5b3c5ac..432fa56b95f 100644
--- a/source/blender/gpu/shaders/infos/gpu_shader_test_info.hh
+++ b/source/blender/gpu/shaders/infos/gpu_shader_test_info.hh
@@ -17,3 +17,27 @@ GPU_SHADER_CREATE_INFO(gpu_math_test)
     .fragment_source("gpu_math_test.glsl")
     .additional_info("gpu_shader_test")
     .do_static_compilation(true);
+
+GPU_SHADER_CREATE_INFO(gpu_compute_1d_test)
+    .local_group_size(1)
+    .image(1, GPU_RGBA32F, Qualifier::WRITE, ImageType::FLOAT_1D, "img_output")
+    .compute_source("gpu_compute_1d_test.glsl")
+    .do_static_compilation(true);
+
+GPU_SHADER_CREATE_INFO(gpu_compute_2d_test)
+    .local_group_size(1, 1)
+    .image(1, GPU_RGBA32F, Qualifier::WRITE, ImageType::FLOAT_2D, "img_output")
+    .compute_source("gpu_compute_2d_test.glsl")
+    .do_static_compilation(true);
+
+GPU_SHADER_CREATE_INFO(gpu_compute_ibo_test)
+    .local_group_size(1)
+    .storage_buf(0, Qualifier::WRITE, "uint", "out_indices[]")
+    .compute_source("gpu_compute_ibo_test.glsl")
+    .do_static_compilation(true);
+
+GPU_SHADER_CREATE_INFO(gpu_compute_vbo_test)
+    .local_group_size(1)
+    .storage_buf(0, Qualifier::WRITE, "vec4", "out_positions[]")
+    .compute_source("gpu_compute_vbo_test.glsl")
+    .do_static_compilation(true);
diff --git a/source/blender/gpu/tests/gpu_shader_test.cc b/source/blender/gpu/tests/gpu_shader_test.cc
index 6cf22dde014..8a5b70a9b1d 100644
--- a/source/blender/gpu/tests/gpu_shader_test.cc
+++ b/source/blender/gpu/tests/gpu_shader_test.cc
@@ -38,21 +38,7 @@ static void test_gpu_shader_compute_2d()
   static constexpr uint SIZE = 512;
 
   /* Build compute shader. */
-  const char *compute_glsl = R"(
-void main() {
-  vec4 pixel = vec4(1.0, 0.5, 0.2, 1.0);
-  imageStore(img_output, ivec2(gl_GlobalInvocationID.xy), pixel);
-}
-)";
-
-  ShaderCreateInfo info(__func__);
-  info.local_group_size(1, 1)
-      .image(0, GPU_RGBA32F, Qualifier::WRITE, ImageType::FLOAT_2D, "img_output")
-      /* Use actual file to not raise any asserts when checking for errors. */
-      .compute_source("gpu_shader_common_hash.glsl");
-  info.compute_source_generated = compute_glsl;
-
-  GPUShader *shader = GPU_shader_create_from_info((GPUShaderCreateInfo *)&info);
+  GPUShader *shader = GPU_shader_create_from_info_name("gpu_compute_2d_test");
   EXPECT_NE(shader, nullptr);
 
   /* Create texture to store result and attach to shader. */
@@ -98,21 +84,7 @@ static void test_gpu_shader_compute_1d()
   static constexpr uint SIZE = 10;
 
   /* Build compute shader. */
-  const char *compute_glsl = R"(
-void main() {
-  int index = int(gl_GlobalInvocationID.x);
-  vec4 pos = vec4(gl_GlobalInvocationID.x);
-  imageStore(img_output, index, pos);
-}
-)";
-
-  ShaderCreateInfo info(__func__);
-  info.local_group_size(1)
-      .image(1, GPU_RGBA32F, Qualifier::WRITE, ImageType::FLOAT_1D, "img_output")
-      /* Use actual file to not raise any asserts when checking for errors. */
-      .compute_source("gpu_shader_common_hash.glsl");
-  info.compute_source_generated = compute_glsl;
-  GPUShader *shader = GPU_shader_create_from_info((GPUShaderCreateInfo *)&info);
+  GPUShader *shader = GPU_shader_create_from_info_name("gpu_compute_1d_test");
   EXPECT_NE(shader, nullptr);
 
   /* Construct Texture. */
@@ -161,21 +133,7 @@ static void test_gpu_shader_compute_vbo()
   static constexpr uint SIZE = 128;
 
   /* Build compute shader. */
-  const char *compute_glsl = R"(
-void main() {
-  uint index = gl_GlobalInvocationID.x;
-  vec4 pos = vec4(gl_GlobalInvocationID.x);
-  out_positions[index] = pos;
-}
-)";
-
-  ShaderCreateInfo info(__func__);
-  info.local_group_size(1)
-      .storage_buf(0, Qualifier::WRITE, "vec4", "out_positions[]")
-      /* Use actual file to not raise any asserts when checking for errors. */
-      .compute_source("gpu_shader_common_hash.glsl");
-  info.compute_source_generated = compute_glsl;
-  GPUShader *shader = GPU_shader_create_from_info((GPUShaderCreateInfo *)&info);
+  GPUShader *shader = GPU_shader_create_from_info_name("gpu_compute_vbo_test");
   EXPECT_NE(shader, nullptr);
   GPU_shader_bind(shader);
 
@@ -222,20 +180,7 @@ static void test_gpu_shader_compute_ibo()
   static constexpr uint SIZE = 128;
 
   /* Build compute shader. */
-  const char *compute_glsl = R"(
-void main() {
-  uint store_index = int(gl_GlobalInvocationID.x);
-  out_indices[store_index] = store_index;
-}
-)";
-
-  ShaderCreateInfo info(__func__);
-  info.local_group_size(1)
-      .storage_buf(0, Qualifier::WRITE, "uint", "out_indices[]")
-      /* Use actual file to not raise any asserts when checking for errors. */
-      .compute_source("gpu_shader_common_hash.glsl");
-  info.compute_source_generated = compute_glsl;
-  GPUShader *shader = GPU_shader_create_from_info((GPUShaderCreateInfo *)&info);
+  GPUShader *shader = GPU_shader_create_from_info_name("gpu_compute_ibo_test");
   EXPECT_NE(shader, nullptr);
   GPU_shader_bind(shader);
 
diff --git a/source/blender/gpu/tests/shaders/gpu_compute_1d_test.glsl b/source/blender/gpu/tests/shaders/gpu_compute_1d_test.glsl
new file mode 100644
index 00000000000..43832b9f16d
--- /dev/null
+++ b/source/blender/gpu/tests/shaders/gpu_compute_1d_test.glsl
@@ -0,0 +1,5 @@
+void main() {
+  int index = int(gl_GlobalInvocationID.x);
+  vec4 pos = vec4(gl_GlobalInvocationID.x);
+  imageStore(img_output, index, pos);
+}
\ No newline at end of file
diff --git a/source/blender/gpu/tests/shaders/gpu_compute_2d_test.glsl b/source/blender/gpu/tests/shaders/gpu_compute_2d_test.glsl
new file mode 100644
index 00000000000..a43933151d8
--- /dev/null
+++ b/source/blender/gpu/tests/shaders/gpu_compute_2d_test.glsl
@@ -0,0 +1,4 @@
+void main() {
+  vec4 pixel = vec4(1.0, 0.5, 0.2, 1.0);
+  imageStore(img_output, ivec2(gl_GlobalInvocationID.xy), pixel);
+}
\ No newline at end of file
diff --git a/source/blender/gpu/tests/shaders/gpu_compute_ibo_test.glsl b/source/blender/gpu/tests/shaders/gpu_compute_ibo_test.glsl
new file mode 100644
index 00000000000..965d59c7490
--- /dev/null
+++ b/source/blender/gpu/tests/shaders/gpu_compute_ibo_test.glsl
@@ -0,0 +1,4 @@
+void main() {
+  uint store_index = int(gl_GlobalInvocationID.x);
+  out_indices[store_index] = store_index;
+}
\ No newline at end of file
diff --git a/source/blender/gpu/tests/shaders/gpu_compute_vbo_test.glsl b/source/blender/gpu/tests/shaders/gpu_compute_vbo_test.glsl
new file mode 100644
index 00000000000..147ef09d004
--- /dev/null
+++ b/source/blender/gpu/tests/shaders/gpu_compute_vbo_test.glsl
@@ -0,0 +1,5 @@
+void main() {
+  uint index = gl_GlobalInvocationID.x;
+  vec4 pos = vec4(gl_GlobalInvocationID.x);
+  out_positions[index] = pos;
+}
\ No newline at end of file
diff --git a/source/blender/gpu/tests/gpu_math_test.glsl b/source/blender/gpu/tests/shaders/gpu_math_test.glsl
similarity index 100%
rename from source/blender/gpu/tests/gpu_math_test.glsl
rename to source/blender/gpu/tests/shaders/gpu_math_test.glsl



More information about the Bf-blender-cvs mailing list