]> git.sesse.net Git - movit/blobdiff - effect_chain.h
Fix YCbCrInput after the ResourcePool texture changes.
[movit] / effect_chain.h
index 1078027a7bfc3b859531ddd6932ff79c96cc1795..a544e833bf4bc80029c6f61a7276203aab5c8358 100644 (file)
@@ -57,9 +57,6 @@ public:
        std::vector<Node *> incoming_links;
 
 private:
-       // Identifier used to create unique variables in GLSL.
-       std::string effect_id;
-
        // Logical size of the output of this effect, ie. the resolution
        // you would get if you sampled it as a texture. If it is undefined
        // (since the inputs differ in resolution), it will be 0x0.
@@ -93,6 +90,10 @@ struct Phase {
 
        std::vector<Node *> effects;  // In order.
        unsigned output_width, output_height, virtual_output_width, virtual_output_height;
+
+       // Identifier used to create unique variables in GLSL.
+       // Unique per-phase to increase cacheability of compiled shaders.
+       std::map<Node *, std::string> effect_ids;
 };
 
 class EffectChain {
@@ -173,6 +174,12 @@ public:
        void replace_sender(Node *new_sender, Node *receiver);
        void insert_node_between(Node *sender, Node *middle, Node *receiver);
 
+       // Get the current resource pool assigned to this EffectChain.
+       // Primarily to let effects allocate textures as needed.
+       // Any resources you get from the pool must be returned to the pool
+       // no later than in the Effect's destructor.
+       ResourcePool *get_resource_pool() { return resource_pool; }
+
 private:
        // Make sure the output rectangle is at least large enough to hold
        // the given input rectangle in both dimensions, and is of the