Rev 1892 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1892 | Rev 3959 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | /* cairo - a vector graphics library with display and print output |
1 | /* cairo - a vector graphics library with display and print output |
2 | * |
2 | * |
3 | * Copyright © 2009 Eric Anholt |
3 | * Copyright © 2009 Eric Anholt |
4 | * Copyright © 2009 Chris Wilson |
4 | * Copyright © 2009 Chris Wilson |
5 | * Copyright © 2005,2010 Red Hat, Inc |
5 | * Copyright © 2005,2010 Red Hat, Inc |
- | 6 | * Copyright © 2011 Linaro Limited |
|
6 | * |
7 | * |
7 | * This library is free software; you can redistribute it and/or |
8 | * This library is free software; you can redistribute it and/or |
8 | * modify it either under the terms of the GNU Lesser General Public |
9 | * modify it either under the terms of the GNU Lesser General Public |
9 | * License version 2.1 as published by the Free Software Foundation |
10 | * License version 2.1 as published by the Free Software Foundation |
10 | * (the "LGPL") or, at your option, under the terms of the Mozilla |
11 | * (the "LGPL") or, at your option, under the terms of the Mozilla |
Line 35... | Line 36... | ||
35 | * Benjamin Otte |
36 | * Benjamin Otte |
36 | * Carl Worth |
37 | * Carl Worth |
37 | * Chris Wilson |
38 | * Chris Wilson |
38 | * Eric Anholt |
39 | * Eric Anholt |
39 | * T. Zachary Laine |
40 | * T. Zachary Laine |
- | 41 | * Alexandros Frantzis |
|
40 | */ |
42 | */ |
Line 41... | Line 43... | ||
41 | 43 | ||
42 | #ifndef CAIRO_GL_PRIVATE_H |
44 | #ifndef CAIRO_GL_PRIVATE_H |
Line -... | Line 45... | ||
- | 45 | #define CAIRO_GL_PRIVATE_H |
|
- | 46 | ||
43 | #define CAIRO_GL_PRIVATE_H |
47 | #define GL_GLEXT_PROTOTYPES |
Line -... | Line 48... | ||
- | 48 | ||
44 | 49 | #include "cairoint.h" |
|
Line 45... | Line 50... | ||
45 | #include "cairoint.h" |
50 | |
46 | 51 | #include "cairo-gl.h" |
|
47 | #include "cairo-gl-gradient-private.h" |
52 | #include "cairo-gl-gradient-private.h" |
- | 53 | ||
- | 54 | #include "cairo-device-private.h" |
|
- | 55 | #include "cairo-error-private.h" |
|
Line 48... | Line 56... | ||
48 | 56 | #include "cairo-rtree-private.h" |
|
Line 49... | Line 57... | ||
49 | #include "cairo-device-private.h" |
57 | #include "cairo-scaled-font-private.h" |
50 | #include "cairo-error-private.h" |
- | |
51 | #include "cairo-rtree-private.h" |
- | |
52 | - | ||
53 | #include |
58 | #include "cairo-spans-compositor-private.h" |
54 | - | ||
55 | #include |
59 | #include "cairo-array-private.h" |
- | 60 | ||
- | 61 | #include |
|
- | 62 | ||
- | 63 | #if CAIRO_HAS_GL_SURFACE |
|
- | 64 | #include |
|
- | 65 | #include |
|
Line 56... | Line 66... | ||
56 | 66 | #elif CAIRO_HAS_GLESV2_SURFACE |
|
Line 57... | Line 67... | ||
57 | #include "cairo-gl.h" |
67 | #include |
58 | 68 | #include |
|
Line 71... | Line 81... | ||
71 | }) |
81 | }) |
72 | #else |
82 | #else |
73 | #define UNSUPPORTED(reason) CAIRO_INT_STATUS_UNSUPPORTED |
83 | #define UNSUPPORTED(reason) CAIRO_INT_STATUS_UNSUPPORTED |
74 | #endif |
84 | #endif |
Line -... | Line 85... | ||
- | 85 | ||
- | 86 | #define CAIRO_GL_VERSION_ENCODE(major, minor) ( \ |
|
- | 87 | ((major) * 256) \ |
|
- | 88 | + ((minor) * 1)) |
|
75 | 89 | ||
76 | /* maximal number of shaders we keep in the cache. |
90 | /* maximal number of shaders we keep in the cache. |
77 | * Random number that is hopefully big enough to not cause many cache evictions. */ |
91 | * Random number that is hopefully big enough to not cause many cache evictions. */ |
Line 78... | Line 92... | ||
78 | #define CAIRO_GL_MAX_SHADERS_PER_CONTEXT 64 |
92 | #define CAIRO_GL_MAX_SHADERS_PER_CONTEXT 64 |
- | 93 | ||
- | 94 | /* VBO size that we allocate, smaller size means we gotta flush more often, |
|
79 | 95 | * but larger means hogging more memory and can cause trouble for drivers |
|
- | 96 | * (especially on embedded devices). */ |
|
- | 97 | #define CAIRO_GL_VBO_SIZE (16*1024) |
|
- | 98 | ||
- | 99 | typedef struct _cairo_gl_surface cairo_gl_surface_t; |
|
- | 100 | ||
- | 101 | /* GL flavor */ |
|
- | 102 | typedef enum cairo_gl_flavor { |
|
- | 103 | CAIRO_GL_FLAVOR_NONE = 0, |
|
- | 104 | CAIRO_GL_FLAVOR_DESKTOP = 1, |
|
- | 105 | CAIRO_GL_FLAVOR_ES = 2 |
|
- | 106 | } cairo_gl_flavor_t; |
|
- | 107 | ||
- | 108 | /* Indices for vertex attributes used by BindAttribLocation etc */ |
|
- | 109 | enum { |
|
- | 110 | CAIRO_GL_VERTEX_ATTRIB_INDEX = 0, |
|
- | 111 | CAIRO_GL_COLOR_ATTRIB_INDEX = 1, |
|
- | 112 | CAIRO_GL_TEXCOORD0_ATTRIB_INDEX = 2, |
|
- | 113 | CAIRO_GL_TEXCOORD1_ATTRIB_INDEX = CAIRO_GL_TEXCOORD0_ATTRIB_INDEX + 1 |
|
- | 114 | }; |
|
- | 115 | ||
- | 116 | typedef enum cairo_gl_operand_type { |
|
- | 117 | CAIRO_GL_OPERAND_NONE, |
|
- | 118 | CAIRO_GL_OPERAND_CONSTANT, |
|
- | 119 | CAIRO_GL_OPERAND_TEXTURE, |
|
- | 120 | CAIRO_GL_OPERAND_LINEAR_GRADIENT, |
|
- | 121 | CAIRO_GL_OPERAND_RADIAL_GRADIENT_A0, |
|
- | 122 | CAIRO_GL_OPERAND_RADIAL_GRADIENT_NONE, |
|
- | 123 | CAIRO_GL_OPERAND_RADIAL_GRADIENT_EXT, |
|
- | 124 | ||
- | 125 | CAIRO_GL_OPERAND_COUNT |
|
- | 126 | } cairo_gl_operand_type_t; |
|
- | 127 | ||
- | 128 | /* This union structure describes a potential source or mask operand to the |
|
- | 129 | * compositing equation. |
|
- | 130 | */ |
|
- | 131 | typedef struct cairo_gl_operand { |
|
- | 132 | cairo_gl_operand_type_t type; |
|
- | 133 | union { |
|
- | 134 | struct { |
|
- | 135 | GLuint tex; |
|
- | 136 | cairo_gl_surface_t *surface; |
|
- | 137 | cairo_gl_surface_t *owns_surface; |
|
- | 138 | cairo_surface_attributes_t attributes; |
|
- | 139 | int texgen; |
|
- | 140 | } texture; |
|
- | 141 | struct { |
|
- | 142 | GLfloat color[4]; |
|
- | 143 | } constant; |
|
- | 144 | struct { |
|
- | 145 | cairo_gl_gradient_t *gradient; |
|
- | 146 | cairo_matrix_t m; |
|
- | 147 | cairo_circle_double_t circle_d; |
|
- | 148 | double radius_0, a; |
|
- | 149 | cairo_extend_t extend; |
|
- | 150 | int texgen; |
|
- | 151 | } gradient; |
|
- | 152 | }; |
|
- | 153 | unsigned int vertex_offset; |
|
- | 154 | } cairo_gl_operand_t; |
|
- | 155 | ||
- | 156 | typedef struct cairo_gl_source { |
|
- | 157 | cairo_surface_t base; |
|
Line 80... | Line 158... | ||
80 | /* VBO size that we allocate, smaller size means we gotta flush more often */ |
158 | cairo_gl_operand_t operand; |
81 | #define CAIRO_GL_VBO_SIZE 16384 |
159 | } cairo_gl_source_t; |
- | 160 | ||
Line 82... | Line 161... | ||
82 | 161 | struct _cairo_gl_surface { |
|
Line 83... | Line 162... | ||
83 | typedef struct _cairo_gl_surface { |
162 | cairo_surface_t base; |
84 | cairo_surface_t base; |
163 | cairo_gl_operand_t operand; |
85 | 164 | ||
- | 165 | int width, height; |
|
- | 166 | ||
- | 167 | GLuint tex; /* GL texture object containing our data. */ |
|
- | 168 | GLuint fb; /* GL framebuffer object wrapping our data. */ |
|
- | 169 | GLuint depth_stencil; /* GL renderbuffer object for holding stencil buffer clip. */ |
|
- | 170 | ||
- | 171 | #if CAIRO_HAS_GL_SURFACE |
|
- | 172 | GLuint msaa_rb; /* The ARB MSAA path uses a renderbuffer. */ |
|
- | 173 | GLuint msaa_fb; |
|
- | 174 | #endif |
|
- | 175 | GLuint msaa_depth_stencil; |
|
- | 176 | ||
- | 177 | cairo_bool_t stencil_and_msaa_caps_initialized; |
|
- | 178 | cairo_bool_t supports_stencil; /* Stencil support for for non-texture surfaces. */ |
|
86 | int width, height; |
179 | cairo_bool_t supports_msaa; |
87 | 180 | cairo_bool_t msaa_active; /* Whether the multisampling |
|
- | 181 | framebuffer is active or not. */ |
|
- | 182 | cairo_clip_t *clip_on_stencil_buffer; |
|
- | 183 | ||
Line 88... | Line 184... | ||
88 | GLuint tex; /* GL texture object containing our data. */ |
184 | int owns_tex; |
89 | GLuint fb; /* GL framebuffer object wrapping our data. */ |
185 | cairo_bool_t needs_update; |
90 | GLuint depth; /* GL framebuffer object holding depth */ |
186 | |
91 | int owns_tex; |
187 | cairo_region_t *clip_region; |
Line 92... | Line 188... | ||
92 | } cairo_gl_surface_t; |
188 | }; |
93 | 189 | ||
94 | typedef struct cairo_gl_glyph_cache { |
190 | typedef struct cairo_gl_glyph_cache { |
95 | cairo_rtree_t rtree; |
191 | cairo_rtree_t rtree; |
96 | cairo_surface_pattern_t pattern; |
192 | cairo_gl_surface_t *surface; |
Line 97... | Line -... | ||
97 | } cairo_gl_glyph_cache_t; |
- | |
98 | - | ||
99 | typedef enum cairo_gl_tex { |
- | |
100 | CAIRO_GL_TEX_SOURCE = 0, |
- | |
101 | CAIRO_GL_TEX_MASK = 1, |
- | |
102 | CAIRO_GL_TEX_TEMP = 2 |
- | |
103 | } cairo_gl_tex_t; |
- | |
104 | - | ||
105 | typedef enum cairo_gl_operand_type { |
- | |
106 | CAIRO_GL_OPERAND_NONE, |
- | |
107 | CAIRO_GL_OPERAND_CONSTANT, |
- | |
108 | CAIRO_GL_OPERAND_TEXTURE, |
- | |
109 | CAIRO_GL_OPERAND_LINEAR_GRADIENT, |
- | |
110 | CAIRO_GL_OPERAND_RADIAL_GRADIENT, |
193 | } cairo_gl_glyph_cache_t; |
111 | CAIRO_GL_OPERAND_SPANS, |
194 | |
112 | 195 | typedef enum cairo_gl_tex { |
|
- | 196 | CAIRO_GL_TEX_SOURCE = 0, |
|
- | 197 | CAIRO_GL_TEX_MASK = 1, |
|
- | 198 | CAIRO_GL_TEX_TEMP = 2 |
|
- | 199 | } cairo_gl_tex_t; |
|
- | 200 | ||
- | 201 | typedef struct cairo_gl_shader { |
|
- | 202 | GLuint fragment_shader; |
|
113 | CAIRO_GL_OPERAND_COUNT |
203 | GLuint program; |
Line 114... | Line 204... | ||
114 | } cairo_gl_operand_type_t; |
204 | GLint mvp_location; |
115 | 205 | GLint constant_location[2]; |
|
116 | typedef struct cairo_gl_shader_impl cairo_gl_shader_impl_t; |
206 | GLint a_location[2]; |
Line 129... | Line 219... | ||
129 | } cairo_gl_shader_in_t; |
219 | } cairo_gl_shader_in_t; |
Line 130... | Line 220... | ||
130 | 220 | ||
131 | typedef enum cairo_gl_var_type { |
221 | typedef enum cairo_gl_var_type { |
132 | CAIRO_GL_VAR_NONE, |
222 | CAIRO_GL_VAR_NONE, |
133 | CAIRO_GL_VAR_TEXCOORDS, |
223 | CAIRO_GL_VAR_TEXCOORDS, |
134 | CAIRO_GL_VAR_COVERAGE |
224 | CAIRO_GL_VAR_TEXGEN, |
Line -... | Line 225... | ||
- | 225 | } cairo_gl_var_type_t; |
|
- | 226 | ||
- | 227 | typedef enum cairo_gl_primitive_type { |
|
- | 228 | CAIRO_GL_PRIMITIVE_TYPE_TRIANGLES, |
|
- | 229 | CAIRO_GL_PRIMITIVE_TYPE_TRISTRIPS |
|
135 | } cairo_gl_var_type_t; |
230 | } cairo_gl_primitive_type_t; |
- | 231 | ||
- | 232 | typedef void (*cairo_gl_emit_rect_t) (cairo_gl_context_t *ctx, |
|
- | 233 | GLfloat x1, GLfloat y1, |
|
136 | 234 | GLfloat x2, GLfloat y2); |
|
- | 235 | ||
- | 236 | typedef void (*cairo_gl_emit_span_t) (cairo_gl_context_t *ctx, |
|
- | 237 | GLfloat x1, GLfloat y1, |
|
Line 137... | Line 238... | ||
137 | #define cairo_gl_var_type_hash(src,mask,dest) ((mask) << 2 | (src << 1) | (dest)) |
238 | GLfloat x2, GLfloat y2, |
- | 239 | uint8_t alpha); |
|
138 | #define CAIRO_GL_VAR_TYPE_MAX ((CAIRO_GL_VAR_COVERAGE << 2) | (CAIRO_GL_VAR_TEXCOORDS << 1) | CAIRO_GL_VAR_TEXCOORDS) |
240 | |
- | 241 | typedef void (*cairo_gl_emit_glyph_t) (cairo_gl_context_t *ctx, |
|
- | 242 | GLfloat x1, GLfloat y1, |
|
- | 243 | GLfloat x2, GLfloat y2, |
|
- | 244 | GLfloat glyph_x1, GLfloat glyph_y1, |
|
- | 245 | GLfloat glyph_x2, GLfloat glyph_y2); |
|
139 | 246 | ||
140 | /* This union structure describes a potential source or mask operand to the |
247 | #define cairo_gl_var_type_hash(src,mask,spans,dest) ((spans) << 5) | ((mask) << 3 | (src << 1) | (dest)) |
- | 248 | #define CAIRO_GL_VAR_TYPE_MAX (1 << 6) |
|
- | 249 | ||
141 | * compositing equation. |
250 | typedef void (*cairo_gl_generic_func_t)(void); |
142 | */ |
251 | typedef cairo_gl_generic_func_t (*cairo_gl_get_proc_addr_func_t)(const char *procname); |
- | 252 | ||
- | 253 | typedef struct _cairo_gl_dispatch { |
|
- | 254 | /* Buffers */ |
|
143 | typedef struct cairo_gl_operand { |
255 | void (*GenBuffers) (GLsizei n, GLuint *buffers); |
- | 256 | void (*BindBuffer) (GLenum target, GLuint buffer); |
|
- | 257 | void (*BufferData) (GLenum target, GLsizeiptr size, |
|
- | 258 | const GLvoid* data, GLenum usage); |
|
144 | cairo_gl_operand_type_t type; |
259 | GLvoid *(*MapBuffer) (GLenum target, GLenum access); |
145 | union { |
260 | GLboolean (*UnmapBuffer) (GLenum target); |
- | 261 | ||
146 | struct { |
262 | /* Shaders */ |
147 | GLuint tex; |
263 | GLuint (*CreateShader) (GLenum type); |
- | 264 | void (*ShaderSource) (GLuint shader, GLsizei count, |
|
- | 265 | const GLchar** string, const GLint* length); |
|
148 | cairo_gl_surface_t *surface; |
266 | void (*CompileShader) (GLuint shader); |
149 | cairo_surface_attributes_t attributes; |
267 | void (*GetShaderiv) (GLuint shader, GLenum pname, GLint *params); |
- | 268 | void (*GetShaderInfoLog) (GLuint shader, GLsizei bufSize, |
|
150 | } texture; |
269 | GLsizei *length, GLchar *infoLog); |
151 | struct { |
270 | void (*DeleteShader) (GLuint shader); |
- | 271 | ||
152 | GLfloat color[4]; |
272 | /* Programs */ |
153 | } constant; |
273 | GLuint (*CreateProgram) (void); |
154 | struct { |
274 | void (*AttachShader) (GLuint program, GLuint shader); |
- | 275 | void (*DeleteProgram) (GLuint program); |
|
- | 276 | void (*LinkProgram) (GLuint program); |
|
- | 277 | void (*UseProgram) (GLuint program); |
|
- | 278 | void (*GetProgramiv) (GLuint program, GLenum pname, GLint *params); |
|
155 | cairo_gl_gradient_t *gradient; |
279 | void (*GetProgramInfoLog) (GLuint program, GLsizei bufSize, |
- | 280 | GLsizei *length, GLchar *infoLog); |
|
156 | cairo_matrix_t m; |
281 | |
- | 282 | /* Uniforms */ |
|
- | 283 | GLint (*GetUniformLocation) (GLuint program, const GLchar* name); |
|
- | 284 | void (*Uniform1f) (GLint location, GLfloat x); |
|
157 | float segment_x; |
285 | void (*Uniform2f) (GLint location, GLfloat x, GLfloat y); |
- | 286 | void (*Uniform3f) (GLint location, GLfloat x, GLfloat y, GLfloat z); |
|
158 | float segment_y; |
287 | void (*Uniform4f) (GLint location, GLfloat x, GLfloat y, GLfloat z, |
- | 288 | GLfloat w); |
|
159 | cairo_extend_t extend; |
289 | void (*UniformMatrix3fv) (GLint location, GLsizei count, |
160 | } linear; |
290 | GLboolean transpose, const GLfloat *value); |
- | 291 | void (*UniformMatrix4fv) (GLint location, GLsizei count, |
|
161 | struct { |
292 | GLboolean transpose, const GLfloat *value); |
- | 293 | void (*Uniform1i) (GLint location, GLint x); |
|
162 | cairo_gl_gradient_t *gradient; |
294 | |
- | 295 | /* Attributes */ |
|
- | 296 | void (*BindAttribLocation) (GLuint program, GLuint index, |
|
163 | cairo_matrix_t m; |
297 | const GLchar *name); |
- | 298 | void (*VertexAttribPointer) (GLuint index, GLint size, GLenum type, |
|
- | 299 | GLboolean normalized, GLsizei stride, |
|
- | 300 | const GLvoid *pointer); |
|
164 | float circle_1_x; |
301 | void (*EnableVertexAttribArray) (GLuint index); |
- | 302 | void (*DisableVertexAttribArray) (GLuint index); |
|
- | 303 | ||
- | 304 | /* Framebuffer objects */ |
|
165 | float circle_1_y; |
305 | void (*GenFramebuffers) (GLsizei n, GLuint* framebuffers); |
166 | float radius_0; |
306 | void (*BindFramebuffer) (GLenum target, GLuint framebuffer); |
- | 307 | void (*FramebufferTexture2D) (GLenum target, GLenum attachment, |
|
- | 308 | GLenum textarget, GLuint texture, |
|
- | 309 | GLint level); |
|
- | 310 | GLenum (*CheckFramebufferStatus) (GLenum target); |
|
- | 311 | void (*DeleteFramebuffers) (GLsizei n, const GLuint* framebuffers); |
|
- | 312 | void (*GenRenderbuffers) (GLsizei n, GLuint *renderbuffers); |
|
- | 313 | void (*BindRenderbuffer) (GLenum target, GLuint renderbuffer); |
|
- | 314 | void (*RenderbufferStorage) (GLenum target, GLenum internal_format, |
|
- | 315 | GLsizei width, GLsizei height); |
|
- | 316 | void (*FramebufferRenderbuffer) (GLenum target, GLenum attachment, |
|
- | 317 | GLenum renderbuffer_ttarget, GLuint renderbuffer); |
|
- | 318 | void (*DeleteRenderbuffers) (GLsizei n, GLuint *renderbuffers); |
|
- | 319 | void (*BlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, |
|
167 | float radius_1; |
320 | GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, |
168 | cairo_extend_t extend; |
321 | GLbitfield mask, GLenum filter); |
- | 322 | void (*RenderbufferStorageMultisample) (GLenum target, GLsizei samples, |
|
- | 323 | GLenum internalformat, |
|
- | 324 | GLsizei width, GLsizei height); |
|
169 | } radial; |
325 | void (*FramebufferTexture2DMultisample) (GLenum target, GLenum attachment, |
Line 170... | Line 326... | ||
170 | }; |
326 | GLenum textarget, GLuint texture, |
171 | unsigned int vertex_offset; |
327 | GLint level, GLsizei samples); |
Line 172... | Line 328... | ||
172 | } cairo_gl_operand_t; |
328 | } cairo_gl_dispatch_t; |
- | 329 | ||
173 | 330 | struct _cairo_gl_context { |
|
174 | struct _cairo_gl_context { |
- | |
175 | cairo_device_t base; |
331 | cairo_device_t base; |
176 | 332 | ||
177 | GLuint dummy_tex; |
333 | const cairo_compositor_t *compositor; |
178 | GLuint texture_load_pbo; |
334 | |
Line -... | Line 335... | ||
- | 335 | GLuint texture_load_pbo; |
|
- | 336 | GLint max_framebuffer_size; |
|
- | 337 | GLint max_texture_size; |
|
- | 338 | GLint max_textures; |
|
179 | GLuint vbo; |
339 | GLenum tex_target; |
Line 180... | Line 340... | ||
180 | GLint max_framebuffer_size; |
340 | |
181 | GLint max_texture_size; |
341 | GLint num_samples; |
182 | GLint max_textures; |
342 | cairo_bool_t supports_msaa; |
Line 183... | Line 343... | ||
183 | GLenum tex_target; |
343 | char *vb; |
Line 197... | Line 357... | ||
197 | cairo_operator_t current_operator; |
357 | cairo_operator_t current_operator; |
198 | cairo_gl_shader_t *pre_shader; /* for component alpha */ |
358 | cairo_gl_shader_t *pre_shader; /* for component alpha */ |
199 | cairo_gl_shader_t *current_shader; |
359 | cairo_gl_shader_t *current_shader; |
Line 200... | Line 360... | ||
200 | 360 | ||
- | 361 | cairo_gl_operand_t operands[2]; |
|
Line 201... | Line -... | ||
201 | cairo_gl_operand_t operands[2]; |
- | |
202 | 362 | cairo_bool_t spans; |
|
203 | char *vb; |
363 | |
204 | unsigned int vb_offset; |
364 | unsigned int vb_offset; |
- | 365 | unsigned int vertex_size; |
|
- | 366 | cairo_region_t *clip_region; |
|
- | 367 | cairo_clip_t *clip; |
|
- | 368 | ||
- | 369 | cairo_gl_primitive_type_t primitive_type; |
|
- | 370 | cairo_array_t tristrip_indices; |
|
- | 371 | ||
- | 372 | cairo_bool_t has_mesa_pack_invert; |
|
- | 373 | cairo_gl_dispatch_t dispatch; |
|
- | 374 | GLfloat modelviewprojection_matrix[16]; |
|
- | 375 | cairo_gl_flavor_t gl_flavor; |
|
- | 376 | cairo_bool_t has_map_buffer; |
|
- | 377 | cairo_bool_t has_packed_depth_stencil; |
|
- | 378 | cairo_bool_t has_npot_repeat; |
|
- | 379 | cairo_bool_t can_read_bgra; |
|
Line 205... | Line 380... | ||
205 | unsigned int vertex_size; |
380 | |
206 | cairo_region_t *clip_region; |
381 | cairo_bool_t thread_aware; |
Line 207... | Line 382... | ||
207 | 382 | ||
Line 218... | Line 393... | ||
218 | cairo_operator_t op; |
393 | cairo_operator_t op; |
219 | cairo_region_t *clip_region; |
394 | cairo_region_t *clip_region; |
Line 220... | Line 395... | ||
220 | 395 | ||
221 | cairo_gl_operand_t src; |
396 | cairo_gl_operand_t src; |
- | 397 | cairo_gl_operand_t mask; |
|
- | 398 | cairo_bool_t spans; |
|
- | 399 | ||
- | 400 | cairo_clip_t *clip; |
|
222 | cairo_gl_operand_t mask; |
401 | cairo_bool_t multisample; |
Line -... | Line 402... | ||
- | 402 | } cairo_gl_composite_t; |
|
223 | } cairo_gl_composite_t; |
403 | |
- | 404 | typedef struct _cairo_gl_font { |
|
- | 405 | cairo_scaled_font_private_t base; |
|
- | 406 | cairo_device_t *device; |
|
Line 224... | Line 407... | ||
224 | 407 | cairo_list_t link; |
|
225 | cairo_private extern const cairo_surface_backend_t _cairo_gl_surface_backend; |
408 | } cairo_gl_font_t; |
226 | 409 | ||
227 | static cairo_always_inline GLenum |
410 | static cairo_always_inline GLenum |
Line 259... | Line 442... | ||
259 | cairo_private cairo_status_t |
442 | cairo_private cairo_status_t |
260 | _cairo_gl_surface_draw_image (cairo_gl_surface_t *dst, |
443 | _cairo_gl_surface_draw_image (cairo_gl_surface_t *dst, |
261 | cairo_image_surface_t *src, |
444 | cairo_image_surface_t *src, |
262 | int src_x, int src_y, |
445 | int src_x, int src_y, |
263 | int width, int height, |
446 | int width, int height, |
264 | int dst_x, int dst_y); |
447 | int dst_x, int dst_y, |
- | 448 | cairo_bool_t force_flush); |
|
- | 449 | ||
- | 450 | cairo_private cairo_int_status_t |
|
- | 451 | _cairo_gl_surface_resolve_multisampling (cairo_gl_surface_t *surface); |
|
Line 265... | Line 452... | ||
265 | 452 | ||
266 | static cairo_always_inline cairo_bool_t |
453 | static cairo_always_inline cairo_bool_t |
267 | _cairo_gl_device_has_glsl (cairo_device_t *device) |
454 | _cairo_gl_device_has_glsl (cairo_device_t *device) |
268 | { |
455 | { |
269 | return ((cairo_gl_context_t *) device)->shader_impl != NULL; |
456 | return ((cairo_gl_context_t *) device)->has_shader_support; |
Line 270... | Line 457... | ||
270 | } |
457 | } |
271 | 458 | ||
272 | static cairo_always_inline cairo_bool_t |
459 | static cairo_always_inline cairo_bool_t |
273 | _cairo_gl_device_requires_power_of_two_textures (cairo_device_t *device) |
460 | _cairo_gl_device_requires_power_of_two_textures (cairo_device_t *device) |
274 | { |
461 | { |
Line 275... | Line 462... | ||
275 | return ((cairo_gl_context_t *) device)->tex_target == GL_TEXTURE_RECTANGLE_EXT; |
462 | return ((cairo_gl_context_t *) device)->tex_target == GL_TEXTURE_RECTANGLE; |
276 | } |
463 | } |
277 | 464 | ||
Line 310... | Line 497... | ||
310 | 497 | ||
311 | return status; |
498 | return status; |
Line 312... | Line 499... | ||
312 | } |
499 | } |
313 | 500 | ||
- | 501 | cairo_private void |
|
- | 502 | _cairo_gl_context_set_destination (cairo_gl_context_t *ctx, |
|
- | 503 | cairo_gl_surface_t *surface, |
|
- | 504 | cairo_bool_t multisampling); |
|
- | 505 | ||
- | 506 | cairo_private void |
|
- | 507 | _cairo_gl_context_bind_framebuffer (cairo_gl_context_t *ctx, |
|
- | 508 | cairo_gl_surface_t *surface, |
|
- | 509 | cairo_bool_t multisampling); |
|
- | 510 | ||
- | 511 | cairo_private cairo_gl_emit_rect_t |
|
- | 512 | _cairo_gl_context_choose_emit_rect (cairo_gl_context_t *ctx); |
|
- | 513 | ||
- | 514 | cairo_private void |
|
- | 515 | _cairo_gl_context_emit_rect (cairo_gl_context_t *ctx, |
|
- | 516 | GLfloat x1, GLfloat y1, |
|
- | 517 | GLfloat x2, GLfloat y2); |
|
- | 518 | ||
- | 519 | cairo_private cairo_gl_emit_span_t |
|
- | 520 | _cairo_gl_context_choose_emit_span (cairo_gl_context_t *ctx); |
|
- | 521 | ||
Line 314... | Line 522... | ||
314 | cairo_private void |
522 | cairo_private cairo_gl_emit_glyph_t |
315 | _cairo_gl_context_set_destination (cairo_gl_context_t *ctx, cairo_gl_surface_t *surface); |
523 | _cairo_gl_context_choose_emit_glyph (cairo_gl_context_t *ctx); |
316 | 524 | ||
Line 317... | Line 525... | ||
317 | cairo_private void |
525 | cairo_private void |
318 | _cairo_gl_context_activate (cairo_gl_context_t *ctx, |
526 | _cairo_gl_context_activate (cairo_gl_context_t *ctx, |
Line -... | Line 527... | ||
- | 527 | cairo_gl_tex_t tex_unit); |
|
- | 528 | ||
- | 529 | cairo_private cairo_bool_t |
|
- | 530 | _cairo_gl_operator_is_supported (cairo_operator_t op); |
|
319 | cairo_gl_tex_t tex_unit); |
531 | |
320 | 532 | cairo_private cairo_bool_t |
|
321 | cairo_private cairo_bool_t |
533 | _cairo_gl_ensure_stencil (cairo_gl_context_t *ctx, |
322 | _cairo_gl_operator_is_supported (cairo_operator_t op); |
534 | cairo_gl_surface_t *surface); |
323 | 535 | ||
324 | cairo_private cairo_status_t |
- | |
Line 325... | Line 536... | ||
325 | _cairo_gl_composite_init (cairo_gl_composite_t *setup, |
536 | cairo_private cairo_status_t |
326 | cairo_operator_t op, |
537 | _cairo_gl_composite_init (cairo_gl_composite_t *setup, |
Line -... | Line 538... | ||
- | 538 | cairo_operator_t op, |
|
- | 539 | cairo_gl_surface_t *dst, |
|
- | 540 | cairo_bool_t has_component_alpha); |
|
- | 541 | ||
- | 542 | cairo_private void |
|
327 | cairo_gl_surface_t *dst, |
543 | _cairo_gl_composite_fini (cairo_gl_composite_t *setup); |
328 | cairo_bool_t has_component_alpha, |
544 | |
329 | const cairo_rectangle_int_t *rect); |
545 | cairo_private cairo_status_t |
Line -... | Line 546... | ||
- | 546 | _cairo_gl_composite_set_operator (cairo_gl_composite_t *setup, |
|
- | 547 | cairo_operator_t op, |
|
- | 548 | cairo_bool_t assume_component_alpha); |
|
- | 549 | ||
330 | 550 | cairo_private void |
|
331 | cairo_private void |
551 | _cairo_gl_composite_set_clip_region (cairo_gl_composite_t *setup, |
332 | _cairo_gl_composite_fini (cairo_gl_composite_t *setup); |
552 | cairo_region_t *clip_region); |
- | 553 | ||
333 | 554 | cairo_private void |
|
- | 555 | _cairo_gl_composite_set_clip(cairo_gl_composite_t *setup, |
|
- | 556 | cairo_clip_t *clip); |
|
- | 557 | ||
334 | cairo_private void |
558 | cairo_private cairo_int_status_t |
335 | _cairo_gl_composite_set_clip_region (cairo_gl_composite_t *setup, |
559 | _cairo_gl_composite_set_source (cairo_gl_composite_t *setup, |
- | 560 | const cairo_pattern_t *pattern, |
|
- | 561 | const cairo_rectangle_int_t *sample, |
|
- | 562 | const cairo_rectangle_int_t *extents, |
|
- | 563 | cairo_bool_t use_texgen); |
|
Line 336... | Line 564... | ||
336 | cairo_region_t *clip_region); |
564 | |
337 | 565 | cairo_private void |
|
338 | cairo_private cairo_int_status_t |
566 | _cairo_gl_composite_set_solid_source (cairo_gl_composite_t *setup, |
339 | _cairo_gl_composite_set_source (cairo_gl_composite_t *setup, |
567 | const cairo_color_t *color); |
340 | const cairo_pattern_t *pattern, |
568 | |
- | 569 | cairo_private void |
|
- | 570 | _cairo_gl_composite_set_source_operand (cairo_gl_composite_t *setup, |
|
- | 571 | const cairo_gl_operand_t *source); |
|
- | 572 | ||
341 | int src_x, int src_y, |
573 | cairo_private cairo_int_status_t |
- | 574 | _cairo_gl_composite_set_mask (cairo_gl_composite_t *setup, |
|
- | 575 | const cairo_pattern_t *pattern, |
|
- | 576 | const cairo_rectangle_int_t *sample, |
|
Line 342... | Line 577... | ||
342 | int dst_x, int dst_y, |
577 | const cairo_rectangle_int_t *extents, |
343 | int width, int height); |
578 | cairo_bool_t use_texgen); |
Line 344... | Line 579... | ||
344 | 579 | ||
345 | cairo_private cairo_int_status_t |
580 | cairo_private void |
346 | _cairo_gl_composite_set_mask (cairo_gl_composite_t *setup, |
581 | _cairo_gl_composite_set_mask_operand (cairo_gl_composite_t *setup, |
Line 347... | Line 582... | ||
347 | const cairo_pattern_t *pattern, |
582 | const cairo_gl_operand_t *mask); |
348 | int src_x, int src_y, |
583 | |
349 | int dst_x, int dst_y, |
- | |
350 | int width, int height); |
- | |
351 | - | ||
352 | cairo_private void |
- | |
353 | _cairo_gl_composite_set_mask_spans (cairo_gl_composite_t *setup); |
- | |
354 | - | ||
355 | cairo_private cairo_status_t |
- | |
356 | _cairo_gl_composite_begin (cairo_gl_composite_t *setup, |
584 | cairo_private void |
357 | cairo_gl_context_t **ctx); |
- | |
358 | - | ||
359 | cairo_private void |
- | |
360 | _cairo_gl_composite_emit_rect (cairo_gl_context_t *ctx, |
- | |
361 | GLfloat x1, |
- | |
362 | GLfloat y1, |
- | |
363 | GLfloat x2, |
- | |
364 | GLfloat y2, |
- | |
Line 365... | Line 585... | ||
365 | uint8_t alpha); |
585 | _cairo_gl_composite_set_spans (cairo_gl_composite_t *setup); |
366 | 586 | ||
Line -... | Line 587... | ||
- | 587 | cairo_private void |
|
- | 588 | _cairo_gl_composite_set_multisample (cairo_gl_composite_t *setup); |
|
- | 589 | ||
- | 590 | cairo_private cairo_status_t |
|
- | 591 | _cairo_gl_composite_begin (cairo_gl_composite_t *setup, |
|
- | 592 | cairo_gl_context_t **ctx); |
|
- | 593 | ||
- | 594 | cairo_private cairo_status_t |
|
- | 595 | _cairo_gl_set_operands_and_operator (cairo_gl_composite_t *setup, |
|
- | 596 | cairo_gl_context_t *ctx); |
|
367 | cairo_private void |
597 | |
368 | _cairo_gl_composite_emit_glyph (cairo_gl_context_t *ctx, |
598 | cairo_private void |
369 | GLfloat x1, |
599 | _cairo_gl_composite_flush (cairo_gl_context_t *ctx); |
Line 370... | Line 600... | ||
370 | GLfloat y1, |
600 | |
371 | GLfloat x2, |
601 | cairo_private cairo_int_status_t |
- | 602 | _cairo_gl_composite_emit_quad_as_tristrip (cairo_gl_context_t *ctx, |
|
372 | GLfloat y2, |
603 | cairo_gl_composite_t *setup, |
373 | GLfloat glyph_x1, |
604 | const cairo_point_t quad[4]); |
374 | GLfloat glyph_y1, |
- | |
375 | GLfloat glyph_x2, |
- | |
376 | GLfloat glyph_y2); |
- | |
377 | - | ||
378 | cairo_private void |
- | |
379 | _cairo_gl_composite_flush (cairo_gl_context_t *ctx); |
- | |
380 | 605 | ||
Line 381... | Line 606... | ||
381 | cairo_private void |
606 | cairo_private cairo_int_status_t |
382 | _cairo_gl_context_destroy_operand (cairo_gl_context_t *ctx, |
607 | _cairo_gl_composite_emit_triangle_as_tristrip (cairo_gl_context_t *ctx, |
Line 383... | Line 608... | ||
383 | cairo_gl_tex_t tex_unit); |
608 | cairo_gl_composite_t *setup, |
Line 406... | Line 631... | ||
406 | cairo_operator_t op, |
631 | cairo_operator_t op, |
407 | const cairo_pattern_t *source, |
632 | const cairo_pattern_t *source, |
408 | cairo_glyph_t *glyphs, |
633 | cairo_glyph_t *glyphs, |
409 | int num_glyphs, |
634 | int num_glyphs, |
410 | cairo_scaled_font_t *scaled_font, |
635 | cairo_scaled_font_t *scaled_font, |
411 | cairo_clip_t *clip, |
636 | const cairo_clip_t *clip, |
412 | int *remaining_glyphs); |
637 | int *remaining_glyphs); |
Line 413... | Line -... | ||
413 | - | ||
414 | static inline int |
- | |
415 | _cairo_gl_y_flip (cairo_gl_surface_t *surface, int y) |
- | |
416 | { |
- | |
417 | if (surface->fb) |
- | |
418 | return y; |
- | |
419 | else |
- | |
420 | return (surface->height - 1) - y; |
- | |
421 | } |
- | |
422 | 638 | ||
423 | cairo_private cairo_status_t |
639 | cairo_private cairo_status_t |
Line 424... | Line 640... | ||
424 | _cairo_gl_context_init_shaders (cairo_gl_context_t *ctx); |
640 | _cairo_gl_context_init_shaders (cairo_gl_context_t *ctx); |
425 | 641 | ||
Line 426... | Line 642... | ||
426 | cairo_private void |
642 | cairo_private void |
427 | _cairo_gl_context_fini_shaders (cairo_gl_context_t *ctx); |
643 | _cairo_gl_context_fini_shaders (cairo_gl_context_t *ctx); |
428 | 644 | ||
429 | static cairo_always_inline cairo_bool_t |
645 | static cairo_always_inline cairo_bool_t |
430 | _cairo_gl_context_is_flushed (cairo_gl_context_t *ctx) |
646 | _cairo_gl_context_is_flushed (cairo_gl_context_t *ctx) |
Line 431... | Line 647... | ||
431 | { |
647 | { |
432 | return ctx->vb == NULL; |
648 | return ctx->vb_offset == 0; |
433 | } |
649 | } |
434 | 650 | ||
- | 651 | cairo_private cairo_status_t |
|
435 | cairo_private cairo_status_t |
652 | _cairo_gl_get_shader_by_type (cairo_gl_context_t *ctx, |
436 | _cairo_gl_get_shader_by_type (cairo_gl_context_t *ctx, |
653 | cairo_gl_operand_t *source, |
Line 437... | Line 654... | ||
437 | cairo_gl_operand_type_t source, |
654 | cairo_gl_operand_t *mask, |
438 | cairo_gl_operand_type_t mask, |
655 | cairo_bool_t use_coverage, |
439 | cairo_gl_shader_in_t in, |
656 | cairo_gl_shader_in_t in, |
440 | cairo_gl_shader_t **shader); |
657 | cairo_gl_shader_t **shader); |
Line 441... | Line 658... | ||
441 | 658 | ||
442 | cairo_private void |
659 | cairo_private void |
443 | _cairo_gl_shader_bind_float (cairo_gl_context_t *ctx, |
660 | _cairo_gl_shader_bind_float (cairo_gl_context_t *ctx, |
444 | const char *name, |
661 | GLint location, |
Line 445... | Line 662... | ||
445 | float value); |
662 | float value); |
446 | 663 | ||
447 | cairo_private void |
664 | cairo_private void |
448 | _cairo_gl_shader_bind_vec2 (cairo_gl_context_t *ctx, |
665 | _cairo_gl_shader_bind_vec2 (cairo_gl_context_t *ctx, |
449 | const char *name, |
666 | GLint location, |
450 | float value0, float value1); |
667 | float value0, float value1); |
Line 451... | Line 668... | ||
451 | 668 | ||
452 | cairo_private void |
669 | cairo_private void |
453 | _cairo_gl_shader_bind_vec3 (cairo_gl_context_t *ctx, |
670 | _cairo_gl_shader_bind_vec3 (cairo_gl_context_t *ctx, |
454 | const char *name, |
671 | GLint location, |
455 | float value0, |
672 | float value0, |
Line 456... | Line 673... | ||
456 | float value1, |
673 | float value1, |
457 | float value2); |
674 | float value2); |
458 | 675 | ||
459 | cairo_private void |
676 | cairo_private void |
Line 460... | Line 677... | ||
460 | _cairo_gl_shader_bind_vec4 (cairo_gl_context_t *ctx, |
677 | _cairo_gl_shader_bind_vec4 (cairo_gl_context_t *ctx, |
461 | const char *name, |
678 | GLint location, |
462 | float value0, float value1, |
679 | float value0, float value1, |
463 | float value2, float value3); |
680 | float value2, float value3); |
Line 464... | Line 681... | ||
464 | 681 | ||
465 | cairo_private void |
682 | cairo_private void |
466 | _cairo_gl_shader_bind_matrix (cairo_gl_context_t *ctx, |
683 | _cairo_gl_shader_bind_matrix (cairo_gl_context_t *ctx, |
Line 467... | Line 684... | ||
467 | const char *name, |
684 | GLint location, |
468 | cairo_matrix_t* m); |
685 | const cairo_matrix_t* m); |
Line -... | Line 686... | ||
- | 686 | ||
- | 687 | cairo_private void |
|
- | 688 | _cairo_gl_shader_bind_matrix4f (cairo_gl_context_t *ctx, |
|
- | 689 | GLint location, |
|
- | 690 | GLfloat* gl_m); |
|
- | 691 | ||
- | 692 | cairo_private void |
|
- | 693 | _cairo_gl_set_shader (cairo_gl_context_t *ctx, |
|
- | 694 | cairo_gl_shader_t *shader); |
|
- | 695 | ||
- | 696 | cairo_private void |
|
- | 697 | _cairo_gl_shader_fini (cairo_gl_context_t *ctx, cairo_gl_shader_t *shader); |
|
- | 698 | ||
- | 699 | cairo_private int |
|
- | 700 | _cairo_gl_get_version (void); |
|
- | 701 | ||
- | 702 | cairo_private cairo_gl_flavor_t |
|
- | 703 | _cairo_gl_get_flavor (void); |
|
- | 704 | ||
- | 705 | cairo_private cairo_bool_t |
|
- | 706 | _cairo_gl_has_extension (const char *ext); |
|
- | 707 | ||
- | 708 | cairo_private cairo_status_t |
|
- | 709 | _cairo_gl_dispatch_init(cairo_gl_dispatch_t *dispatch, |
|
- | 710 | cairo_gl_get_proc_addr_func_t get_proc_addr); |
|
- | 711 | ||
- | 712 | cairo_private cairo_int_status_t |
|
- | 713 | _cairo_gl_operand_init (cairo_gl_operand_t *operand, |
|
- | 714 | const cairo_pattern_t *pattern, |
|
- | 715 | cairo_gl_surface_t *dst, |
|
- | 716 | const cairo_rectangle_int_t *sample, |
|
- | 717 | const cairo_rectangle_int_t *extents, |
|
- | 718 | cairo_bool_t use_texgen); |
|
- | 719 | ||
- | 720 | cairo_private void |
|
- | 721 | _cairo_gl_solid_operand_init (cairo_gl_operand_t *operand, |
|
- | 722 | const cairo_color_t *color); |
|
- | 723 | ||
- | 724 | cairo_private cairo_filter_t |
|
- | 725 | _cairo_gl_operand_get_filter (cairo_gl_operand_t *operand); |
|
- | 726 | ||
- | 727 | cairo_private GLint |
|
- | 728 | _cairo_gl_operand_get_gl_filter (cairo_gl_operand_t *operand); |
|
- | 729 | ||
- | 730 | cairo_private cairo_extend_t |
|
- | 731 | _cairo_gl_operand_get_extend (cairo_gl_operand_t *operand); |
|
- | 732 | ||
- | 733 | cairo_private unsigned int |
|
- | 734 | _cairo_gl_operand_get_vertex_size (const cairo_gl_operand_t *operand); |
|
- | 735 | ||
- | 736 | cairo_private cairo_bool_t |
|
- | 737 | _cairo_gl_operand_needs_setup (cairo_gl_operand_t *dest, |
|
- | 738 | cairo_gl_operand_t *source, |
|
- | 739 | unsigned int vertex_offset); |
|
- | 740 | ||
- | 741 | cairo_private void |
|
- | 742 | _cairo_gl_operand_bind_to_shader (cairo_gl_context_t *ctx, |
|
- | 743 | cairo_gl_operand_t *operand, |
|
- | 744 | cairo_gl_tex_t tex_unit); |
|
- | 745 | ||
- | 746 | cairo_private void |
|
- | 747 | _cairo_gl_operand_emit (cairo_gl_operand_t *operand, |
|
- | 748 | GLfloat ** vb, |
|
- | 749 | GLfloat x, |
|
- | 750 | GLfloat y); |
|
- | 751 | ||
- | 752 | cairo_private void |
|
- | 753 | _cairo_gl_operand_copy (cairo_gl_operand_t *dst, |
|
- | 754 | const cairo_gl_operand_t *src); |
|
- | 755 | ||
- | 756 | cairo_private void |
|
- | 757 | _cairo_gl_operand_translate (cairo_gl_operand_t *operand, |
|
- | 758 | double tx, double ty); |
|
- | 759 | ||
- | 760 | cairo_private void |
|
- | 761 | _cairo_gl_operand_destroy (cairo_gl_operand_t *operand); |
|
- | 762 | ||
- | 763 | cairo_private const cairo_compositor_t * |
|
- | 764 | _cairo_gl_msaa_compositor_get (void); |
|
- | 765 | ||
- | 766 | cairo_private const cairo_compositor_t * |
|
- | 767 | _cairo_gl_span_compositor_get (void); |
|
- | 768 | ||
- | 769 | cairo_private const cairo_compositor_t * |
|
- | 770 | _cairo_gl_traps_compositor_get (void); |
|
- | 771 | ||
- | 772 | cairo_private cairo_int_status_t |
|
- | 773 | _cairo_gl_check_composite_glyphs (const cairo_composite_rectangles_t *extents, |
|
- | 774 | cairo_scaled_font_t *scaled_font, |
|
- | 775 | cairo_glyph_t *glyphs, |
|
- | 776 | int *num_glyphs); |
|
- | 777 | ||
- | 778 | cairo_private cairo_int_status_t |
|
- | 779 | _cairo_gl_composite_glyphs (void *_dst, |
|
- | 780 | cairo_operator_t op, |
|
- | 781 | cairo_surface_t *_src, |
|
- | 782 | int src_x, |
|
- | 783 | int src_y, |
|
- | 784 | int dst_x, |
|
- | 785 | int dst_y, |
|
- | 786 | cairo_composite_glyphs_info_t *info); |
|
- | 787 | ||
- | 788 | cairo_private cairo_int_status_t |
|
- | 789 | _cairo_gl_composite_glyphs_with_clip (void *_dst, |
|
- | 790 | cairo_operator_t op, |
|
- | 791 | cairo_surface_t *_src, |
|
- | 792 | int src_x, |
|
- | 793 | int src_y, |
|
- | 794 | int dst_x, |
|
- | 795 | int dst_y, |
|
- | 796 | cairo_composite_glyphs_info_t *info, |
|
- | 797 | cairo_clip_t *clip); |
|
- | 798 | ||
- | 799 | cairo_private cairo_surface_t * |
|
- | 800 | _cairo_gl_surface_create_scratch (cairo_gl_context_t *ctx, |
|
- | 801 | cairo_content_t content, |
|
- | 802 | int width, |
|
- | 803 | int height); |
|
- | 804 | ||
- | 805 | cairo_private cairo_surface_t * |
|
- | 806 | _cairo_gl_surface_create_scratch_for_caching (cairo_gl_context_t *ctx, |
|
- | 807 | cairo_content_t content, |
|
- | 808 | int width, |
|
- | 809 | int height); |
|
- | 810 | ||
- | 811 | cairo_private cairo_surface_t * |
|
- | 812 | _cairo_gl_pattern_to_source (cairo_surface_t *dst, |
|
- | 813 | const cairo_pattern_t *pattern, |
|
- | 814 | cairo_bool_t is_mask, |
|
- | 815 | const cairo_rectangle_int_t *extents, |
|
- | 816 | const cairo_rectangle_int_t *sample, |
|
- | 817 | int *src_x, int *src_y); |
|
- | 818 | ||
- | 819 | cairo_private cairo_int_status_t |
|
- | 820 | _cairo_gl_msaa_compositor_draw_clip (cairo_gl_context_t *ctx, |
|
- | 821 | cairo_gl_composite_t *setup, |
|
- | 822 | cairo_clip_t *clip); |
|
- | 823 | ||
- | 824 | cairo_private cairo_surface_t * |
|
- | 825 | _cairo_gl_white_source (void); |
|
- | 826 | ||
- | 827 | cairo_private void |
|
- | 828 | _cairo_gl_scissor_to_rectangle (cairo_gl_surface_t *surface, |
|
- | 829 | const cairo_rectangle_int_t *r); |
|
- | 830 | ||
- | 831 | static inline cairo_gl_operand_t * |
|
469 | 832 | source_to_operand (cairo_surface_t *surface) |
|
470 | cairo_private void |
833 | { |
Line 471... | Line 834... | ||
471 | _cairo_gl_shader_bind_texture (cairo_gl_context_t *ctx, |
834 | cairo_gl_source_t *source = (cairo_gl_source_t *)surface; |