Flutter Engine
 
Loading...
Searching...
No Matches
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
11G_BEGIN_DECLS
12
13G_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 */
34FlFramebuffer* 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 */
48gboolean 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 */
60FlFramebuffer* 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 */
70GLuint 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 */
80GLuint 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 */
90size_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 */
100size_t fl_framebuffer_get_height(FlFramebuffer* framebuffer);
101
102G_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
size_t fl_framebuffer_get_height(FlFramebuffer *framebuffer)
gboolean fl_framebuffer_get_shareable(FlFramebuffer *framebuffer)
size_t fl_framebuffer_get_width(FlFramebuffer *framebuffer)
GLuint fl_framebuffer_get_texture_id(FlFramebuffer *framebuffer)
G_BEGIN_DECLS FlFramebuffer * fl_framebuffer_new(GLint format, size_t width, size_t height, gboolean shareable)
GLuint fl_framebuffer_get_id(FlFramebuffer *framebuffer)
FlFramebuffer * fl_framebuffer_create_sibling(FlFramebuffer *framebuffer)
int32_t height
int32_t width