diff options
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/draw/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/draw/tests/shaders_test.cc | 29 | ||||
-rw-r--r-- | source/blender/gpu/CMakeLists.txt | 16 | ||||
-rw-r--r-- | source/blender/gpu/tests/gpu_testing.cc | 31 | ||||
-rw-r--r-- | source/blender/gpu/tests/gpu_testing.hh | 27 |
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 |