summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-07 17:04:56 +0100
committerskal <pascal.massimino@gmail.com>2026-02-07 17:04:56 +0100
commitbd939acdf750181ef0e1a612b445da4c15077c85 (patch)
tree028401c762b0436d9a5de1aa656ab35ba6445674 /src/tests
parentf2963ac821a3af1c54002ba13944552166956d04 (diff)
refactor: Bundle GPU context into GpuContext struct
- Created GpuContext struct {device, queue, format} - Updated Effect/PostProcessEffect to take const GpuContext& - Updated all 19 effect implementations - Updated MainSequence.init() and LoadTimeline() signatures - Updated generated timeline files - Updated all test files - Added gpu_get_context() accessor and fixture.ctx() helper Fixes test_mesh.cc compilation error from g_device/g_queue/g_format conflicts. All targets build successfully.
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/test_demo_effects.cc52
-rw-r--r--src/tests/test_effect_base.cc14
-rw-r--r--src/tests/test_sequence.cc19
-rw-r--r--src/tests/webgpu_test_fixture.h2
4 files changed, 38 insertions, 49 deletions
diff --git a/src/tests/test_demo_effects.cc b/src/tests/test_demo_effects.cc
index 3292c9c..ec1d68c 100644
--- a/src/tests/test_demo_effects.cc
+++ b/src/tests/test_demo_effects.cc
@@ -79,34 +79,28 @@ static void test_post_process_effects() {
}
MainSequence main_seq;
- main_seq.init_test(fixture.device(), fixture.queue(), fixture.format());
+ main_seq.init_test(fixture.ctx());
// Test each post-process effect
std::vector<std::pair<const char*, std::shared_ptr<Effect>>> effects = {
{"FlashEffect",
- std::make_shared<FlashEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<FlashEffect>(fixture.ctx())},
{"PassthroughEffect",
- std::make_shared<PassthroughEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<PassthroughEffect>(fixture.ctx())},
{"GaussianBlurEffect",
- std::make_shared<GaussianBlurEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<GaussianBlurEffect>(fixture.ctx())},
{"ChromaAberrationEffect",
std::make_shared<ChromaAberrationEffect>(
- fixture.device(), fixture.queue(), fixture.format())},
+ fixture.ctx())},
{"DistortEffect",
- std::make_shared<DistortEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<DistortEffect>(fixture.ctx())},
{"SolarizeEffect",
- std::make_shared<SolarizeEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<SolarizeEffect>(fixture.ctx())},
{"FadeEffect",
- std::make_shared<FadeEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<FadeEffect>(fixture.ctx())},
{"ThemeModulationEffect",
std::make_shared<ThemeModulationEffect>(
- fixture.device(), fixture.queue(), fixture.format())},
+ fixture.ctx())},
};
int passed = 0;
@@ -146,28 +140,22 @@ static void test_scene_effects() {
}
MainSequence main_seq;
- main_seq.init_test(fixture.device(), fixture.queue(), fixture.format());
+ main_seq.init_test(fixture.ctx());
// Test each scene effect
std::vector<std::pair<const char*, std::shared_ptr<Effect>>> effects = {
{"HeptagonEffect",
- std::make_shared<HeptagonEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<HeptagonEffect>(fixture.ctx())},
{"ParticlesEffect",
- std::make_shared<ParticlesEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<ParticlesEffect>(fixture.ctx())},
{"ParticleSprayEffect",
- std::make_shared<ParticleSprayEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<ParticleSprayEffect>(fixture.ctx())},
{"MovingEllipseEffect",
- std::make_shared<MovingEllipseEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<MovingEllipseEffect>(fixture.ctx())},
{"FlashCubeEffect",
- std::make_shared<FlashCubeEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<FlashCubeEffect>(fixture.ctx())},
{"Hybrid3DEffect",
- std::make_shared<Hybrid3DEffect>(fixture.device(), fixture.queue(),
- fixture.format())},
+ std::make_shared<Hybrid3DEffect>(fixture.ctx())},
};
int passed = 0;
@@ -215,20 +203,20 @@ static void test_effect_type_classification() {
// Post-process effects should return true
auto flash = std::make_shared<FlashEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(flash->is_post_process() && "FlashEffect should be post-process");
auto blur = std::make_shared<GaussianBlurEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(blur->is_post_process() && "GaussianBlurEffect should be post-process");
// Scene effects should return false
auto heptagon = std::make_shared<HeptagonEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(!heptagon->is_post_process() && "HeptagonEffect should NOT be post-process");
auto particles = std::make_shared<ParticlesEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(!particles->is_post_process() &&
"ParticlesEffect should NOT be post-process");
diff --git a/src/tests/test_effect_base.cc b/src/tests/test_effect_base.cc
index bc837be..8180535 100644
--- a/src/tests/test_effect_base.cc
+++ b/src/tests/test_effect_base.cc
@@ -73,7 +73,7 @@ static void test_effect_construction() {
// Create FlashEffect (simple post-process effect)
auto effect = std::make_shared<FlashEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(!effect->is_initialized && "Effect should not be initialized yet");
@@ -92,11 +92,11 @@ static void test_effect_initialization() {
// Create MainSequence (use init_test for test environment)
MainSequence main_seq;
- main_seq.init_test(fixture.device(), fixture.queue(), fixture.format());
+ main_seq.init_test(fixture.ctx());
// Create FlashEffect
auto effect = std::make_shared<FlashEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(!effect->is_initialized && "Effect should not be initialized yet");
@@ -123,14 +123,14 @@ static void test_sequence_add_effect() {
}
MainSequence main_seq;
- main_seq.init_test(fixture.device(), fixture.queue(), fixture.format());
+ main_seq.init_test(fixture.ctx());
// Create sequence
auto seq = std::make_shared<Sequence>();
// Create effect
auto effect = std::make_shared<FlashEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
assert(!effect->is_initialized && "Effect should not be initialized before Sequence::init()");
@@ -156,11 +156,11 @@ static void test_sequence_activation() {
}
MainSequence main_seq;
- main_seq.init_test(fixture.device(), fixture.queue(), fixture.format());
+ main_seq.init_test(fixture.ctx());
auto seq = std::make_shared<Sequence>();
auto effect = std::make_shared<FlashEffect>(
- fixture.device(), fixture.queue(), fixture.format());
+ fixture.ctx());
// Effect active from 5.0 to 10.0 seconds
seq->add_effect(effect, 5.0f, 10.0f, 0);
diff --git a/src/tests/test_sequence.cc b/src/tests/test_sequence.cc
index 788e0b1..e00e606 100644
--- a/src/tests/test_sequence.cc
+++ b/src/tests/test_sequence.cc
@@ -12,6 +12,7 @@
static WGPUDevice dummy_device = (WGPUDevice)1;
static WGPUQueue dummy_queue = (WGPUQueue)1;
static WGPUTextureFormat dummy_format = (WGPUTextureFormat)1;
+static const GpuContext dummy_ctx = {dummy_device, dummy_queue, dummy_format};
static WGPUSurface dummy_surface = (WGPUSurface)1;
static WGPUCommandEncoder dummy_encoder = (WGPUCommandEncoder)1;
static WGPURenderPassEncoder dummy_render_pass_encoder =
@@ -26,8 +27,8 @@ class DummyEffect : public Effect {
int end_calls = 0;
bool is_pp = false;
- DummyEffect(WGPUDevice device, WGPUQueue queue, bool post_process = false)
- : Effect(device, queue), is_pp(post_process) {
+ DummyEffect(const GpuContext& ctx, bool post_process = false)
+ : Effect(ctx), is_pp(post_process) {
}
void init(MainSequence* demo) override {
@@ -69,10 +70,8 @@ class DummyPostProcessEffect : public PostProcessEffect {
int render_calls = 0;
int update_bind_group_calls = 0;
- DummyPostProcessEffect(WGPUDevice device, WGPUQueue queue,
- WGPUTextureFormat format)
- : PostProcessEffect(device, queue) {
- (void)format;
+ DummyPostProcessEffect(const GpuContext& ctx)
+ : PostProcessEffect(ctx) {
}
void init(MainSequence* demo) override {
@@ -99,9 +98,9 @@ class DummyPostProcessEffect : public PostProcessEffect {
void test_effect_lifecycle() {
printf(" test_effect_lifecycle...\n");
MainSequence main_seq;
- main_seq.init_test(dummy_device, dummy_queue, dummy_format);
+ main_seq.init_test(dummy_ctx);
- auto effect1 = std::make_shared<DummyEffect>(dummy_device, dummy_queue);
+ auto effect1 = std::make_shared<DummyEffect>(dummy_ctx);
auto seq1 = std::make_shared<Sequence>();
seq1->add_effect(effect1, 1.0f, 3.0f);
main_seq.add_sequence(seq1, 0.0f, 0);
@@ -145,9 +144,9 @@ void test_simulate_until() {
#if !defined(STRIP_ALL)
printf(" test_simulate_until...\n");
MainSequence main_seq;
- main_seq.init_test(dummy_device, dummy_queue, dummy_format);
+ main_seq.init_test(dummy_ctx);
- auto effect1 = std::make_shared<DummyEffect>(dummy_device, dummy_queue);
+ auto effect1 = std::make_shared<DummyEffect>(dummy_ctx);
auto seq1 = std::make_shared<Sequence>();
seq1->add_effect(effect1, 1.0f, 3.0f);
main_seq.add_sequence(seq1, 0.0f, 0);
diff --git a/src/tests/webgpu_test_fixture.h b/src/tests/webgpu_test_fixture.h
index 2c700a4..fd08276 100644
--- a/src/tests/webgpu_test_fixture.h
+++ b/src/tests/webgpu_test_fixture.h
@@ -4,6 +4,7 @@
#pragma once
+#include "gpu/gpu.h"
#include "platform/platform.h"
// Shared test fixture for WebGPU tests
@@ -25,6 +26,7 @@ class WebGPUTestFixture {
WGPUDevice device() const { return device_; }
WGPUQueue queue() const { return queue_; }
WGPUTextureFormat format() const { return WGPUTextureFormat_BGRA8Unorm; }
+ GpuContext ctx() const { return {device_, queue_, format()}; }
// Check if fixture is ready
bool is_initialized() const { return device_ != nullptr; }