]> git.sesse.net Git - casparcg/blobdiff - core/mixer/gpu/ogl_device.h
2.0. Fixed rendering stalls caused by ogl frame allocation delays.
[casparcg] / core / mixer / gpu / ogl_device.h
index 6c44257609e2bb6f48294229a1055ea05d27fe19..872046c0b3b46072f26ef5cd782750622af8c3f2 100644 (file)
@@ -45,14 +45,12 @@ class shader;
 template<typename T>\r
 struct buffer_pool\r
 {\r
-       tbb::atomic<int> total_count;\r
        tbb::atomic<int> usage_count;\r
        tbb::atomic<int> flush_count;\r
        tbb::concurrent_bounded_queue<std::shared_ptr<T>> items;\r
 \r
        buffer_pool()\r
        {\r
-               total_count = 0;\r
                usage_count = 0;\r
                flush_count = 0;\r
        }\r
@@ -67,6 +65,7 @@ class ogl_device : boost::noncopyable
        GLint                                                    attached_texture_;\r
        GLint                                                    active_shader_;\r
        std::array<GLint, 16>                    binded_textures_;\r
+       std::array<GLint, 4>                     blend_func_;\r
 \r
        std::unique_ptr<sf::Context> context_;\r
        \r
@@ -93,6 +92,9 @@ public:
 \r
        void begin_read(host_buffer& dest, device_buffer& source);\r
        void begin_read(device_buffer& dest, host_buffer& source);\r
+\r
+       void blend_func(int c1, int c2, int a1, int a2);\r
+       void blend_func(int c1, int c2);\r
        \r
        void use(shader& shader);\r
 \r
@@ -113,10 +115,15 @@ public:
                \r
        safe_ptr<device_buffer> create_device_buffer(size_t width, size_t height, size_t stride);\r
        safe_ptr<host_buffer> create_host_buffer(size_t size, host_buffer::usage_t usage);\r
+       \r
        void yield();\r
        boost::unique_future<void> gc();\r
 \r
        static std::wstring get_version();\r
+\r
+private:\r
+       safe_ptr<device_buffer> allocate_device_buffer(size_t width, size_t height, size_t stride);\r
+       safe_ptr<host_buffer> allocate_host_buffer(size_t size, host_buffer::usage_t usage);\r
 };\r
 \r
 }}
\ No newline at end of file