]> git.sesse.net Git - movit/blobdiff - compute_shader_test.cpp
Support other output formats than GL_RGBA16F; was easier than originally feared.
[movit] / compute_shader_test.cpp
index 7179f82c9cff96612bfc943d17e9ff42c9f78220..50b2694fef01a5038861150d82cdcf9e39bbd9c1 100644 (file)
@@ -21,7 +21,7 @@ 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.compute"); }
+       string output_fragment_shader() { return read_file("identity.comp"); }
 };
 
 TEST(ComputeShaderTest, Identity) {
@@ -65,4 +65,22 @@ TEST(ComputeShaderTest, LastEffectInChain) {
        expect_equal(data, out_data, 3, 2);
 }
 
+TEST(ComputeShaderTest, Render8BitTo8Bit) {
+       uint8_t data[] = {
+               14, 200, 80,
+               90, 100, 110,
+       };
+       uint8_t out_data[6];
+       EffectChainTester tester(nullptr, 3, 2, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_LINEAR, GL_RGBA8);
+       if (!movit_compute_shaders_supported) {
+               fprintf(stderr, "Skipping test; no support for compile shaders.\n");
+               return;
+       }
+       tester.add_input(data, FORMAT_GRAYSCALE, COLORSPACE_sRGB, GAMMA_LINEAR, 3, 2);
+       tester.get_chain()->add_effect(new IdentityAlphaComputeEffect());
+       tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_LINEAR);
+
+       expect_equal(data, out_data, 3, 2);
+}
+
 }  // namespace movit