Flutter Linux Embedder
fl_framebuffer.h
Go to the documentation of this file.
1 // Copyright 2013 The Flutter Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_FRAMEBUFFER_H_
6 #define FLUTTER_SHELL_PLATFORM_LINUX_FL_FRAMEBUFFER_H_
7 
8 #include <epoxy/gl.h>
9 #include <glib-object.h>
10 
11 G_BEGIN_DECLS
12 
13 G_DECLARE_FINAL_TYPE(FlFramebuffer, fl_framebuffer, FL, FRAMEBUFFER, GObject)
14 
15 /**
16  * FlFramebuffer:
17  *
18  * #FlFramebuffer creates framebuffers and their backing textures
19  * for use by the Flutter compositor.
20  */
21 
22 /**
23  * fl_framebuffer_new:
24  * @format: format, e.g. GL_RGB, GL_BGR
25  * @width: width of texture.
26  * @height: height of texture.
27  * @shareable: %TRUE if this framebuffer can be shared between contexts
28  * (requires EGL).
29  *
30  * Creates a new frame buffer. Requires a valid OpenGL context to create.
31  *
32  * Returns: a new #FlFramebuffer.
33  */
34 FlFramebuffer* fl_framebuffer_new(GLint format,
35  size_t width,
36  size_t height,
37  gboolean shareable);
38 
39 /**
40  * fl_framebuffer_get_shareable:
41  * @framebuffer: an #FlFramebuffer.
42  *
43  * Checks if this framebuffer can be shared between contexts (using
44  * fl_framebuffer_create_sibling).
45  *
46  * Returns: %TRUE if this framebuffer can be shared.
47  */
48 gboolean fl_framebuffer_get_shareable(FlFramebuffer* framebuffer);
49 
50 /**
51  * fl_framebuffer_create_sibling:
52  * @framebuffer: an #FlFramebuffer.
53  *
54  * Creates a new framebuffer with the same backing texture as the original. This
55  * uses EGLImage to share the texture and allows a framebuffer created in one
56  * OpenGL context to be used in another.
57  *
58  * Returns: a new #FlFramebuffer.
59  */
60 FlFramebuffer* fl_framebuffer_create_sibling(FlFramebuffer* framebuffer);
61 
62 /**
63  * fl_framebuffer_get_id:
64  * @framebuffer: an #FlFramebuffer.
65  *
66  * Gets the ID for this framebuffer.
67  *
68  * Returns: OpenGL framebuffer id or 0 if creation failed.
69  */
70 GLuint fl_framebuffer_get_id(FlFramebuffer* framebuffer);
71 
72 /**
73  * fl_framebuffer_get_texture_id:
74  * @framebuffer: an #FlFramebuffer.
75  *
76  * Gets the ID of the texture associated with this framebuffer.
77  *
78  * Returns: OpenGL texture id or 0 if creation failed.
79  */
80 GLuint fl_framebuffer_get_texture_id(FlFramebuffer* framebuffer);
81 
82 /**
83  * fl_framebuffer_get_width:
84  * @framebuffer: an #FlFramebuffer.
85  *
86  * Gets the width of the framebuffer in pixels.
87  *
88  * Returns: width in pixels.
89  */
90 size_t fl_framebuffer_get_width(FlFramebuffer* framebuffer);
91 
92 /**
93  * fl_framebuffer_get_height:
94  * @framebuffer: an #FlFramebuffer.
95  *
96  * Gets the height of the framebuffer in pixels.
97  *
98  * Returns: height in pixels.
99  */
100 size_t fl_framebuffer_get_height(FlFramebuffer* framebuffer);
101 
102 G_END_DECLS
103 
104 #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_FRAMEBUFFER_H_
G_BEGIN_DECLS G_DECLARE_FINAL_TYPE(FlAccessibleTextField, fl_accessible_text_field, FL, ACCESSIBLE_TEXT_FIELD, FlAccessibleNode)
G_BEGIN_DECLS FlOpenGLManager gboolean shareable
self height
self width
size_t fl_framebuffer_get_height(FlFramebuffer *framebuffer)
FlFramebuffer * fl_framebuffer_create_sibling(FlFramebuffer *framebuffer)
G_BEGIN_DECLS FlFramebuffer * fl_framebuffer_new(GLint format, size_t width, size_t height, gboolean shareable)
gboolean fl_framebuffer_get_shareable(FlFramebuffer *framebuffer)
size_t fl_framebuffer_get_width(FlFramebuffer *framebuffer)
GLuint fl_framebuffer_get_texture_id(FlFramebuffer *framebuffer)
GLuint fl_framebuffer_get_id(FlFramebuffer *framebuffer)
uint32_t uint32_t * format