X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain_test.cpp;h=31e8a5d996bae15c65b91aa49aba1c74009fe9c2;hp=324ddaee0c46747d818c5e7b788efeaa5784cf19;hb=a48d62d61ada1226caaa9fd42846672cfe0249e8;hpb=12a1f8177c22386171ded47947b9422f27f5f1b2 diff --git a/effect_chain_test.cpp b/effect_chain_test.cpp index 324ddae..31e8a5d 100644 --- a/effect_chain_test.cpp +++ b/effect_chain_test.cpp @@ -99,7 +99,22 @@ TEST(MirrorTest, BasicTest) { expect_equal(expected_data, out_data, 3, 2); } -TEST(EffectChainTest, TopLeftOrigin) { +class WithAndWithoutComputeShaderTest : public testing::TestWithParam { +}; +INSTANTIATE_TEST_CASE_P(WithAndWithoutComputeShaderTest, + WithAndWithoutComputeShaderTest, + testing::Values("fragment", "compute")); + +// An effect that does nothing, but as a compute shader. +class IdentityComputeEffect : public Effect { +public: + IdentityComputeEffect() {} + virtual string effect_type_id() const { return "IdentityComputeEffect"; } + virtual bool is_compute_shader() const { return true; } + string output_fragment_shader() { return read_file("identity.comp"); } +}; + +TEST_P(WithAndWithoutComputeShaderTest, TopLeftOrigin) { float data[] = { 0.0f, 0.25f, 0.3f, 0.75f, 1.0f, 1.0f, @@ -113,6 +128,9 @@ TEST(EffectChainTest, TopLeftOrigin) { float out_data[6]; EffectChainTester tester(data, 3, 2, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_LINEAR); tester.get_chain()->set_output_origin(OUTPUT_ORIGIN_TOP_LEFT); + if (GetParam() == "compute") { + tester.get_chain()->add_effect(new IdentityComputeEffect()); + } tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR); expect_equal(expected_data, out_data, 3, 2); @@ -1113,21 +1131,6 @@ public: bool sets_virtual_output_size() const override { return false; } }; -class WithAndWithoutComputeShaderTest : public testing::TestWithParam { -}; -INSTANTIATE_TEST_CASE_P(WithAndWithoutComputeShaderTest, - WithAndWithoutComputeShaderTest, - testing::Values("fragment", "compute")); - -// An effect that does nothing, but as a compute shader. -class IdentityComputeEffect : public Effect { -public: - IdentityComputeEffect() {} - virtual string effect_type_id() const { return "IdentityComputeEffect"; } - virtual bool is_compute_shader() const { return true; } - string output_fragment_shader() { return read_file("identity.comp"); } -}; - // An effect that promises one-to-one sampling (unlike IdentityEffect). class OneToOneEffect : public Effect { public: