sync with tizen_2.2
[sdk/emulator/qemu.git] / hw / yagl_apis / gles / yagl_gles_framebuffer.h
1 #ifndef _QEMU_YAGL_GLES_FRAMEBUFFER_H
2 #define _QEMU_YAGL_GLES_FRAMEBUFFER_H
3
4 #include "yagl_gles_types.h"
5 #include "yagl_object.h"
6
7 #define YAGL_NS_FRAMEBUFFER 2
8
9 struct yagl_gles_driver_ps;
10 struct yagl_gles_texture;
11 struct yagl_gles_renderbuffer;
12
13 struct yagl_gles_framebuffer_attachment_state
14 {
15     GLenum type;
16
17     yagl_object_name local_name;
18 };
19
20 struct yagl_gles_framebuffer
21 {
22     struct yagl_object base;
23
24     struct yagl_gles_driver_ps *driver_ps;
25
26     yagl_object_name global_name;
27
28     QemuMutex mutex;
29
30     struct yagl_gles_framebuffer_attachment_state attachment_states[YAGL_NUM_GLES_FRAMEBUFFER_ATTACHMENTS];
31
32     bool was_bound;
33 };
34
35 struct yagl_gles_framebuffer
36     *yagl_gles_framebuffer_create(struct yagl_gles_driver_ps *driver_ps);
37
38 /*
39  * Passing NULL won't hurt, this is for convenience.
40  */
41 void yagl_gles_framebuffer_acquire(struct yagl_gles_framebuffer *fb);
42
43 /*
44  * Passing NULL won't hurt, this is for convenience.
45  */
46 void yagl_gles_framebuffer_release(struct yagl_gles_framebuffer *fb);
47
48 bool yagl_gles_framebuffer_renderbuffer(struct yagl_gles_framebuffer *fb,
49                                         GLenum target,
50                                         GLenum attachment,
51                                         GLenum renderbuffer_target,
52                                         struct yagl_gles_renderbuffer *rb,
53                                         yagl_object_name rb_local_name);
54
55 bool yagl_gles_framebuffer_texture2d(struct yagl_gles_framebuffer *fb,
56                                      GLenum target,
57                                      GLenum attachment,
58                                      GLenum textarget,
59                                      GLint level,
60                                      struct yagl_gles_texture *texture,
61                                      yagl_object_name texture_local_name);
62
63 bool yagl_gles_framebuffer_get_attachment_parameter(struct yagl_gles_framebuffer *fb,
64                                                     GLenum attachment,
65                                                     GLenum pname,
66                                                     GLint *value);
67
68 void yagl_gles_framebuffer_set_bound(struct yagl_gles_framebuffer *fb);
69
70 bool yagl_gles_framebuffer_was_bound(struct yagl_gles_framebuffer *fb);
71
72 #endif