Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/draw/CMakeLists.txt2
-rw-r--r--source/blender/draw/tests/shaders_test.cc29
-rw-r--r--source/blender/gpu/CMakeLists.txt16
-rw-r--r--source/blender/gpu/tests/gpu_testing.cc31
-rw-r--r--source/blender/gpu/tests/gpu_testing.hh27
5 files changed, 80 insertions, 25 deletions
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index b299df50852..8aea2f8e969 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -437,9 +437,9 @@ if(WITH_GTESTS)
)
set(TEST_INC
"../../../intern/ghost/"
+ "../gpu/tests/"
)
set(TEST_LIB
- bf_draw
)
include(GTestTesting)
blender_add_test_lib(bf_draw_tests "${TEST_SRC}" "${INC};${TEST_INC}" "${INC_SYS}" "${LIB};${TEST_LIB}")
diff --git a/source/blender/draw/tests/shaders_test.cc b/source/blender/draw/tests/shaders_test.cc
index 95474dad8b8..b73c94208b5 100644
--- a/source/blender/draw/tests/shaders_test.cc
+++ b/source/blender/draw/tests/shaders_test.cc
@@ -7,41 +7,22 @@
#include "GPU_context.h"
#include "GPU_init_exit.h"
#include "GPU_shader.h"
-
-#include "GHOST_C-api.h"
+#include "gpu_testing.hh"
#include "engines/eevee/eevee_private.h"
#include "engines/gpencil/gpencil_engine.h"
#include "engines/overlay/overlay_private.h"
#include "engines/workbench/workbench_private.h"
-namespace blender::draw::tests {
+namespace blender::draw {
/* Base class for draw test cases. It will setup and tear down the GPU part around each test. */
-class DrawTest : public ::testing::Test {
- private:
- GHOST_SystemHandle ghost_system;
- GHOST_ContextHandle ghost_context;
- GPUContext *context;
-
+class DrawTest : public blender::gpu::GPUTest {
void SetUp() override
{
- GHOST_GLSettings glSettings = {0};
- ghost_system = GHOST_CreateSystem();
- ghost_context = GHOST_CreateOpenGLContext(ghost_system, glSettings);
- context = GPU_context_create(NULL);
- GPU_init();
+ GPUTest::SetUp();
DRW_draw_state_init_gtests(GPU_SHADER_CFG_DEFAULT);
}
-
- void TearDown() override
- {
- GPU_exit();
- GPU_backend_exit();
- GPU_context_discard(context);
- GHOST_DisposeOpenGLContext(ghost_system, ghost_context);
- GHOST_DisposeSystem(ghost_system);
- }
};
TEST_F(DrawTest, workbench_glsl_shaders)
@@ -324,4 +305,4 @@ TEST_F(DrawTest, eevee_glsl_shaders_static)
EEVEE_shaders_free();
}
-} // namespace blender::draw::tests \ No newline at end of file
+} // namespace blender::draw \ No newline at end of file
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 0a372125391..bb50cd3744f 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -379,3 +379,19 @@ if(WITH_IMAGE_DDS)
endif()
blender_add_lib(bf_gpu "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
+
+if(WITH_GTESTS)
+ if(WITH_OPENGL_DRAW_TESTS)
+ set(TEST_SRC
+ tests/gpu_testing.cc
+ )
+ set(TEST_INC
+ "../../../intern/ghost/"
+ )
+ set(TEST_LIB
+
+ )
+ include(GTestTesting)
+ blender_add_test_lib(bf_gpu_tests "${TEST_SRC}" "${INC};${TEST_INC}" "${INC_SYS}" "${LIB};${TEST_LIB}")
+ endif()
+endif()
diff --git a/source/blender/gpu/tests/gpu_testing.cc b/source/blender/gpu/tests/gpu_testing.cc
new file mode 100644
index 00000000000..2772139b8f6
--- /dev/null
+++ b/source/blender/gpu/tests/gpu_testing.cc
@@ -0,0 +1,31 @@
+/* Apache License, Version 2.0 */
+
+#include "testing/testing.h"
+
+#include "GPU_context.h"
+#include "GPU_init_exit.h"
+#include "gpu_testing.hh"
+
+#include "GHOST_C-api.h"
+
+namespace blender::gpu {
+
+void GPUTest::SetUp()
+{
+ GHOST_GLSettings glSettings = {0};
+ ghost_system = GHOST_CreateSystem();
+ ghost_context = GHOST_CreateOpenGLContext(ghost_system, glSettings);
+ context = GPU_context_create(NULL);
+ GPU_init();
+}
+
+void GPUTest::TearDown()
+{
+ GPU_exit();
+ GPU_backend_exit();
+ GPU_context_discard(context);
+ GHOST_DisposeOpenGLContext(ghost_system, ghost_context);
+ GHOST_DisposeSystem(ghost_system);
+}
+
+} // namespace blender::gpu \ No newline at end of file
diff --git a/source/blender/gpu/tests/gpu_testing.hh b/source/blender/gpu/tests/gpu_testing.hh
new file mode 100644
index 00000000000..7e9203d2d7c
--- /dev/null
+++ b/source/blender/gpu/tests/gpu_testing.hh
@@ -0,0 +1,27 @@
+#include "testing/testing.h"
+
+#include "GHOST_C-api.h"
+
+struct GPUContext;
+
+namespace blender::gpu {
+
+/* Test class that setups a GPUContext for test cases.
+ *
+ * Usage:
+ * TEST_F(GPUTest, my_gpu_test) {
+ * ...
+ * }
+ */
+class GPUTest : public ::testing::Test {
+ private:
+ GHOST_SystemHandle ghost_system;
+ GHOST_ContextHandle ghost_context;
+ struct GPUContext *context;
+
+ protected:
+ void SetUp() override;
+ void TearDown() override;
+};
+
+} // namespace blender::gpu \ No newline at end of file