diff options
Diffstat (limited to 'src/gl-renderer.h')
-rw-r--r-- | src/gl-renderer.h | 130 |
1 files changed, 63 insertions, 67 deletions
diff --git a/src/gl-renderer.h b/src/gl-renderer.h index d16ade29..dcdf69d8 100644 --- a/src/gl-renderer.h +++ b/src/gl-renderer.h @@ -28,27 +28,6 @@ #include <EGL/egl.h> -extern const EGLint gl_renderer_opaque_attribs[]; -extern const EGLint gl_renderer_alpha_attribs[]; - -int -gl_renderer_create(struct weston_compositor *ec, EGLNativeDisplayType display, - const EGLint *attribs, const EGLint *visual_id); -EGLDisplay -gl_renderer_display(struct weston_compositor *ec); -int -gl_renderer_output_create(struct weston_output *output, - EGLNativeWindowType window); -void -gl_renderer_output_destroy(struct weston_output *output); -EGLSurface -gl_renderer_output_surface(struct weston_output *output); -void -gl_renderer_set_border(struct weston_compositor *ec, int32_t width, int32_t height, void *data, - int32_t *edges); - -void -gl_renderer_print_egl_error_state(void); #else typedef int EGLint; @@ -56,51 +35,68 @@ typedef void *EGLDisplay; typedef void *EGLSurface; typedef intptr_t EGLNativeDisplayType; typedef intptr_t EGLNativeWindowType; -#define EGL_DEFAULT_DISPLAY NULL - -static const EGLint gl_renderer_opaque_attribs[]; -static const EGLint gl_renderer_alpha_attribs[]; - -inline static int -gl_renderer_create(struct weston_compositor *ec, EGLNativeDisplayType display, - const EGLint *attribs, const EGLint *visual_id) -{ - return -1; -} - -inline static EGLDisplay -gl_renderer_display(struct weston_compositor *ec) -{ - return 0; -} - -inline static int -gl_renderer_output_create(struct weston_output *output, - EGLNativeWindowType window) -{ - return -1; -} - -inline static void -gl_renderer_output_destroy(struct weston_output *output) -{ -} - -inline static EGLSurface -gl_renderer_output_surface(struct weston_output *output) -{ - return 0; -} - -inline static void -gl_renderer_set_border(struct weston_compositor *ec, int32_t width, int32_t height, void *data, - int32_t *edges) -{ -} - -inline static void -gl_renderer_print_egl_error_state(void) -{ -} +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) #endif + +enum gl_renderer_border_side { + GL_RENDERER_BORDER_TOP = 0, + GL_RENDERER_BORDER_LEFT = 1, + GL_RENDERER_BORDER_RIGHT = 2, + GL_RENDERER_BORDER_BOTTOM = 3, +}; + +struct gl_renderer_interface { + const EGLint *opaque_attribs; + const EGLint *alpha_attribs; + + int (*create)(struct weston_compositor *ec, + EGLNativeDisplayType display, + const EGLint *attribs, + const EGLint *visual_id); + + EGLDisplay (*display)(struct weston_compositor *ec); + + int (*output_create)(struct weston_output *output, + EGLNativeWindowType window); + + void (*output_destroy)(struct weston_output *output); + + EGLSurface (*output_surface)(struct weston_output *output); + + /* Sets the output border. + * + * The side specifies the side for which we are setting the border. + * The width and height are the width and height of the border. + * The tex_width patemeter specifies the width of the actual + * texture; this may be larger than width if the data is not + * tightly packed. + * + * The top and bottom textures will extend over the sides to the + * full width of the bordered window while. The right and left + * edges, however, will extend only to the top and bottom of the + * compositor surface. This is demonstrated by the picture below: + * + * +-----------------------+ + * | TOP | + * +-+-------------------+-+ + * | | | | + * |L| |R| + * |E| |I| + * |F| |G| + * |T| |H| + * | | |T| + * | | | | + * +-+-------------------+-+ + * | BOTTOM | + * +-----------------------+ + */ + void (*output_set_border)(struct weston_output *output, + enum gl_renderer_border_side side, + int32_t width, int32_t height, + int32_t tex_width, unsigned char *data); + + void (*print_egl_error_state)(void); +}; + +struct gl_renderer_interface gl_renderer_interface; |