evas: Render_Engine_Swap_Mode is actually about output swap.

This commit is contained in:
Cedric BAIL 2017-08-25 10:49:15 -07:00
parent e31707743a
commit 3e88aa37bc
27 changed files with 55 additions and 57 deletions

View File

@ -87,7 +87,7 @@ void *evas_buffer_outbuf_buf_new_region_for_update (Outbuf *buf, int x,
void evas_buffer_outbuf_buf_free_region_for_update (Outbuf *buf, RGBA_Image *update);
void evas_buffer_outbuf_buf_push_updated_region (Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h);
void evas_buffer_outbuf_buf_switch_buffer (Outbuf *buf, Tilebuf_Rect *surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
Render_Engine_Swap_Mode evas_buffer_outbuf_buf_swap_mode_get(Outbuf *buf);
Render_Output_Swap_Mode evas_buffer_outbuf_buf_swap_mode_get(Outbuf *buf);
int evas_buffer_outbuf_buf_rot_get (Outbuf *buf);
#endif

View File

@ -478,7 +478,7 @@ evas_buffer_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot EINA_UNUSED, Ou
switch_data);
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_buffer_outbuf_buf_swap_mode_get(Outbuf *ob)
{
if (ob->func.switch_buffer) return MODE_DOUBLE;

View File

@ -75,7 +75,7 @@ Outbuf *_outbuf_setup(Evas_Engine_Info_Drm *info, int w, int h);
void _outbuf_free(Outbuf *ob);
int _outbuf_rotation_get(Outbuf *ob);
void _outbuf_reconfigure(Outbuf *ob, int w, int h, int rotation, Outbuf_Depth depth);
Render_Engine_Swap_Mode _outbuf_state_get(Outbuf *ob);
Render_Output_Swap_Mode _outbuf_state_get(Outbuf *ob);
void *_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
void _outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int y, int w, int h);
void _outbuf_update_region_free(Outbuf *ob, RGBA_Image *update);

View File

@ -241,7 +241,7 @@ _outbuf_fb_assign(Outbuf *ob)
return EINA_TRUE;
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
_outbuf_state_get(Outbuf *ob)
{
int age;

View File

@ -684,7 +684,7 @@ eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned in
Evas_Engine_Info_Eglfs *info = in;
Render_Engine *re = NULL;
Outbuf *ob = NULL;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
swap_mode = evas_render_engine_gl_swap_mode_get(info->info.swap_mode);

View File

@ -75,7 +75,7 @@ struct _Outbuf
int w, h;
unsigned int rotation, depth;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
struct
{
@ -99,13 +99,13 @@ struct _Outbuf
Eina_Bool drew : 1;
};
Outbuf *evas_outbuf_new(Evas_Engine_Info_Eglfs *info, int w, int h, Render_Engine_Swap_Mode swap_mode);
Outbuf *evas_outbuf_new(Evas_Engine_Info_Eglfs *info, int w, int h, Render_Output_Swap_Mode swap_mode);
void evas_outbuf_free(Outbuf *ob);
void evas_outbuf_use(Outbuf *ob);
void evas_outbuf_resurf(Outbuf *ob);
void evas_outbuf_unsurf(Outbuf *ob);
void evas_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth);
Render_Engine_Swap_Mode evas_outbuf_buffer_state_get(Outbuf *ob);
Render_Output_Swap_Mode evas_outbuf_buffer_state_get(Outbuf *ob);
int evas_outbuf_rot_get(Outbuf *ob);
Eina_Bool evas_outbuf_update_region_first_rect(Outbuf *ob);
void *evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);

View File

@ -377,7 +377,7 @@ _evas_outbuf_egl_setup(Outbuf *ob)
}
Outbuf *
evas_outbuf_new(Evas_Engine_Info_Eglfs *info, int w, int h, Render_Engine_Swap_Mode swap_mode)
evas_outbuf_new(Evas_Engine_Info_Eglfs *info, int w, int h, Render_Output_Swap_Mode swap_mode)
{
Outbuf *ob;
char *num;
@ -551,7 +551,7 @@ evas_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth)
glsym_evas_gl_common_context_resize(ob->gl_context, w, h, rot);
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_outbuf_buffer_state_get(Outbuf *ob)
{
return MODE_FULL;

View File

@ -65,7 +65,7 @@ struct _Outbuf
int w;
int h;
int rot;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
Eina_Bool drew;
};
@ -92,7 +92,7 @@ Outbuf *evas_outbuf_new(Evas_Engine_Info_GL_Cocoa *info, int w, int h);
void evas_outbuf_free(Outbuf *ob);
void evas_outbuf_use(Outbuf *ob);
int evas_outbuf_rot_get(Outbuf *ob);
Render_Engine_Swap_Mode evas_outbuf_buffer_state_get(Outbuf *ob);
Render_Output_Swap_Mode evas_outbuf_buffer_state_get(Outbuf *ob);
void evas_outbuf_gl_context_use(Context_3D *ctx);
Eina_Bool evas_outbuf_update_region_first_rect(Outbuf *ob);
void *evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);

View File

@ -199,7 +199,7 @@ evas_outbuf_rot_get(Outbuf *ob)
return ob->rot;
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_outbuf_buffer_state_get(Outbuf *ob)
{
return ob->swap_mode;

View File

@ -905,7 +905,7 @@ eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned in
Evas_Engine_Info_GL_Drm *info = in;
Render_Engine *re = NULL;
Outbuf *ob;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
swap_mode = evas_render_engine_gl_swap_mode_get(info->info.swap_mode);
@ -987,7 +987,7 @@ eng_output_update(void *engine EINA_UNUSED, void *data, void *in, unsigned int w
(info->info.destination_alpha != eng_get_ob(re)->destination_alpha))
{
Outbuf *ob, *ob_old;
Render_Engine_Swap_Mode swap_mode = MODE_AUTO;
Render_Output_Swap_Mode swap_mode = MODE_AUTO;
ob_old = re->generic.software.ob;
re->generic.software.ob = NULL;

View File

@ -90,7 +90,7 @@ struct _Outbuf
int w, h, bpp;
unsigned int rotation, depth, format;
int prev_age;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
struct gbm_surface *surface;
@ -118,13 +118,13 @@ struct _Outbuf
Eina_Bool eng_gbm_init(Evas_Engine_Info_GL_Drm *info);
Eina_Bool eng_gbm_shutdown(Evas_Engine_Info_GL_Drm *info);
Outbuf *evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int h, Render_Engine_Swap_Mode swap_mode);
Outbuf *evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int h, Render_Output_Swap_Mode swap_mode);
void evas_outbuf_free(Outbuf *ob);
void evas_outbuf_use(Outbuf *ob);
void evas_outbuf_resurf(Outbuf *ob);
void evas_outbuf_unsurf(Outbuf *ob);
void evas_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth);
Render_Engine_Swap_Mode evas_outbuf_buffer_state_get(Outbuf *ob);
Render_Output_Swap_Mode evas_outbuf_buffer_state_get(Outbuf *ob);
int evas_outbuf_rot_get(Outbuf *ob);
Eina_Bool evas_outbuf_update_region_first_rect(Outbuf *ob);
void *evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);

View File

@ -358,7 +358,7 @@ err:
}
Outbuf *
evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int h, Render_Engine_Swap_Mode swap_mode)
evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int h, Render_Output_Swap_Mode swap_mode)
{
Outbuf *ob;
@ -541,7 +541,7 @@ evas_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth)
glsym_evas_gl_common_context_resize(ob->gl_context, w, h, rot);
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_outbuf_buffer_state_get(Outbuf *ob)
{
/* check for valid output buffer */
@ -551,7 +551,7 @@ evas_outbuf_buffer_state_get(Outbuf *ob)
if (ob->swap_mode == MODE_AUTO && _extn_have_buffer_age)
{
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
EGLint age = 0;
eina_evlog("+gl_query_surf_swap_mode", ob, 0.0, NULL);

View File

@ -13,10 +13,10 @@ typedef enum _Evas_Engine_Info_Gl_Swap_Mode
EVAS_ENGINE_GL_SWAP_MODE_QUADRUPLE = 5
} Evas_Engine_Info_Gl_Swap_Mode;
static inline Render_Engine_Swap_Mode
static inline Render_Output_Swap_Mode
evas_render_engine_gl_swap_mode_get(Evas_Engine_Info_Gl_Swap_Mode info_swap_mode)
{
Render_Engine_Swap_Mode swap_mode = MODE_FULL;
Render_Output_Swap_Mode swap_mode = MODE_FULL;
const char *s;
s = getenv("EVAS_GL_SWAP_MODE");

View File

@ -1581,7 +1581,7 @@ eng_output_setup(void *engine EINA_UNUSED, void *in, unsigned int w, unsigned in
Evas_Engine_Info_GL_X11 *info = in;
Render_Engine *re = NULL;
Outbuf *ob = NULL;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
swap_mode = evas_render_engine_gl_swap_mode_get(info->swap_mode);
@ -1691,7 +1691,7 @@ eng_output_update(void *engine EINA_UNUSED, void *data, void *in, unsigned int w
{
Evas_Engine_Info_GL_X11 *info = in;
Render_Engine *re = data;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
swap_mode = evas_render_engine_gl_swap_mode_get(info->swap_mode);

View File

@ -90,7 +90,7 @@ struct _Outbuf
Evas_Engine_GL_Context *gl_context;
Evas_Engine_Info_GL_X11 *info;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
Colormap colormap;
Window win;
unsigned int w, h;
@ -169,7 +169,7 @@ Outbuf *eng_window_new(Evas_Engine_Info_GL_X11 *info,
Visual *vis, Colormap cmap,
int depth, unsigned int w, unsigned int h, int indirect,
int alpha, int rot,
Render_Engine_Swap_Mode swap_mode,
Render_Output_Swap_Mode swap_mode,
int depth_bits, int stencil_bits, int msaa_bits);
void eng_window_free(Outbuf *gw);
void eng_window_use(Outbuf *gw);
@ -186,7 +186,7 @@ void eng_gl_context_use(Context_3D *context);
void eng_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth);
int eng_outbuf_get_rot(Outbuf *ob);
Render_Engine_Swap_Mode eng_outbuf_swap_mode(Outbuf *ob);
Render_Output_Swap_Mode eng_outbuf_swap_mode(Outbuf *ob);
#ifdef GL_GLES
void eng_outbuf_damage_region_set(Outbuf *ob, Tilebuf_Rect *damage);
#endif

View File

@ -184,7 +184,7 @@ eng_window_new(Evas_Engine_Info_GL_X11 *info,
int indirect EINA_UNUSED,
int alpha,
int rot,
Render_Engine_Swap_Mode swap_mode,
Render_Output_Swap_Mode swap_mode,
int depth_bits,
int stencil_bits,
int msaa_bits)
@ -1381,12 +1381,12 @@ eng_outbuf_get_rot(Outbuf *ob)
return ob->rot;
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
eng_outbuf_swap_mode(Outbuf *ob)
{
if (ob->swap_mode == MODE_AUTO && extn_have_buffer_age)
{
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
eina_evlog("+gl_query_surf_swap_mode", ob, 0.0, NULL);
#ifdef GL_GLES
EGLint age = 0;

View File

@ -35,7 +35,7 @@ typedef enum
typedef struct _Render_Output_Software_Generic Render_Output_Software_Generic;
typedef struct _Outbuf Outbuf;
typedef Render_Engine_Swap_Mode (*Outbuf_Swap_Mode_Get)(Outbuf *ob);
typedef Render_Output_Swap_Mode (*Outbuf_Swap_Mode_Get)(Outbuf *ob);
typedef void (*Outbuf_Reconfigure)(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth);
typedef Eina_Bool (*Outbuf_Region_First_Rect)(Outbuf *ob);
typedef void (*Outbuf_Damage_Region_Set)(Outbuf *ob, Tilebuf_Rect *rects);
@ -71,7 +71,7 @@ struct _Render_Output_Software_Generic
unsigned int w, h;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
Render_Output_Merge_Mode merge_mode;
unsigned char end : 1;

View File

@ -9,7 +9,7 @@ typedef enum
MODE_TRIPLE,
MODE_QUADRUPLE,
MODE_AUTO
} Render_Engine_Swap_Mode;
} Render_Output_Swap_Mode;
#endif

View File

@ -602,12 +602,10 @@ evas_software_xlib_swapbuf_alpha_get(Outbuf *buf)
return buf->priv.destination_alpha;
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_software_xlib_swapbuf_buffer_state_get(Outbuf *buf)
{
Render_Engine_Swap_Mode mode;
if (!buf->priv.swapper) return MODE_FULL;
mode = evas_xlib_swapper_buffer_state_get(buf->priv.swapper);
return mode;
return evas_xlib_swapper_buffer_state_get(buf->priv.swapper);
}

View File

@ -49,5 +49,5 @@ int evas_software_xlib_swapbuf_get_rot(Outbuf *buf);
void evas_software_xlib_swapbuf_rotation_set(Outbuf *buf,
int rot);
Eina_Bool evas_software_xlib_swapbuf_alpha_get(Outbuf *buf);
Render_Engine_Swap_Mode evas_software_xlib_swapbuf_buffer_state_get(Outbuf *buf);
Render_Output_Swap_Mode evas_software_xlib_swapbuf_buffer_state_get(Outbuf *buf);
#endif

View File

@ -253,7 +253,7 @@ evas_xlib_swapper_swap(X_Swapper *swp, Eina_Rectangle *rects, int nrects)
swp->buf_cur = (swp->buf_cur + 1) % swp->buf_num;
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_xlib_swapper_buffer_state_get(X_Swapper *swp)
{
int i, n, count = 0;
@ -853,7 +853,7 @@ evas_xlib_swapper_swap(X_Swapper *swp, Eina_Rectangle *rects, int nrects)
sym_XFixesDestroyRegion(swp->disp, region);
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_xlib_swapper_buffer_state_get(X_Swapper *swp)
{
DRI2BufferFlags *flags;
@ -931,7 +931,7 @@ evas_xlib_swapper_swap(X_Swapper *swp EINA_UNUSED, Eina_Rectangle *rects EINA_UN
{
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
evas_xlib_swapper_buffer_state_get(X_Swapper *swp EINA_UNUSED)
{
return MODE_FULL;

View File

@ -8,8 +8,8 @@ void evas_xlib_swapper_free(X_Swapper *swp);
void *evas_xlib_swapper_buffer_map(X_Swapper *swp, int *bpl, int *w, int *h);
void evas_xlib_swapper_buffer_unmap(X_Swapper *swp);
void evas_xlib_swapper_swap(X_Swapper *swp, Eina_Rectangle *rects, int nrects);
Render_Engine_Swap_Mode evas_xlib_swapper_buffer_state_get(X_Swapper *swp);
Render_Output_Swap_Mode evas_xlib_swapper_buffer_state_get(X_Swapper *swp);
int evas_xlib_swapper_depth_get(X_Swapper *swp);
int evas_xlib_swapper_byte_order_get(X_Swapper *swp);
int evas_xlib_swapper_bit_order_get(X_Swapper *swp);

View File

@ -510,10 +510,10 @@ eng_output_info_setup(void *info)
info->render_mode = EVAS_RENDER_MODE_BLOCKING;
}
static Render_Engine_Swap_Mode
static Render_Output_Swap_Mode
_eng_swap_mode_get(void)
{
Render_Engine_Swap_Mode swap_mode = MODE_FULL;
Render_Output_Swap_Mode swap_mode = MODE_FULL;
const char *s;
if ((s = getenv("EVAS_GL_SWAP_MODE")))
@ -551,7 +551,7 @@ eng_output_setup(void *engine EINA_UNUSED, void *info, unsigned int w, unsigned
Evas_Engine_Info_Wayland *inf = info;
Render_Engine *re;
Outbuf *ob;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
swap_mode = _eng_swap_mode_get();
@ -631,7 +631,7 @@ eng_output_update(void *engine EINA_UNUSED, void *data, void *info, unsigned int
ob = eng_get_ob(re);
if (!ob)
{
Render_Engine_Swap_Mode swap_mode = MODE_AUTO;
Render_Output_Swap_Mode swap_mode = MODE_AUTO;
swap_mode = _eng_swap_mode_get();
ob = eng_window_new(inf, w, h, swap_mode);
@ -669,7 +669,7 @@ eng_output_update(void *engine EINA_UNUSED, void *data, void *info, unsigned int
(ob->info->info.depth != ob->depth) ||
(ob->info->info.destination_alpha != ob->alpha))
{
Render_Engine_Swap_Mode swap_mode = MODE_AUTO;
Render_Output_Swap_Mode swap_mode = MODE_AUTO;
gl_wins--;
if (!ob->info->info.wl_display)

View File

@ -65,7 +65,7 @@ struct _Outbuf
Evas_Engine_GL_Context *gl_context;
int prev_age;
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
int vsync;
int frame_cnt;
@ -107,7 +107,7 @@ extern Evas_GL_Preload_Render_Call glsym_evas_gl_preload_render_unlock;
extern unsigned int (*glsym_eglSwapBuffersWithDamage) (EGLDisplay a, void *b, const EGLint *d, EGLint c);
extern unsigned int (*glsym_eglSetDamageRegionKHR) (EGLDisplay a, EGLSurface b, EGLint *c, EGLint d);
Outbuf *eng_window_new(Evas_Engine_Info_Wayland *einfo, int w, int h, Render_Engine_Swap_Mode swap_mode);
Outbuf *eng_window_new(Evas_Engine_Info_Wayland *einfo, int w, int h, Render_Output_Swap_Mode swap_mode);
void eng_window_free(Outbuf *gw);
void eng_window_use(Outbuf *gw);
void eng_window_unsurf(Outbuf *gw);
@ -115,7 +115,7 @@ void eng_window_resurf(Outbuf *gw);
void eng_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth);
int eng_outbuf_rotation_get(Outbuf *ob);
Render_Engine_Swap_Mode eng_outbuf_swap_mode_get(Outbuf *ob);
Render_Output_Swap_Mode eng_outbuf_swap_mode_get(Outbuf *ob);
Eina_Bool eng_outbuf_region_first_rect(Outbuf *ob);
void eng_outbuf_damage_region_set(Outbuf *ob, Tilebuf_Rect *damage);
void *eng_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);

View File

@ -9,7 +9,7 @@ static struct wl_display *display = NULL;
static int win_count = 0;
Outbuf *
eng_window_new(Evas_Engine_Info_Wayland *einfo, int w, int h, Render_Engine_Swap_Mode swap_mode)
eng_window_new(Evas_Engine_Info_Wayland *einfo, int w, int h, Render_Output_Swap_Mode swap_mode)
{
Outbuf *gw;
int context_attrs[3];
@ -361,12 +361,12 @@ eng_outbuf_rotation_get(Outbuf *ob)
return ob->rot;
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
eng_outbuf_swap_mode_get(Outbuf *ob)
{
if ((ob->swap_mode == MODE_AUTO) && (extn_have_buffer_age))
{
Render_Engine_Swap_Mode swap_mode;
Render_Output_Swap_Mode swap_mode;
EGLint age = 0;
eina_evlog("+gl_query_surf_swap_mode", ob, 0.0, NULL);

View File

@ -147,7 +147,7 @@ void _evas_outbuf_free(Outbuf *ob);
void _evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage, Tilebuf_Rect *buffer_damage, Evas_Render_Mode render_mode);
void _evas_outbuf_idle_flush(Outbuf *ob);
Render_Engine_Swap_Mode _evas_outbuf_swap_mode_get(Outbuf *ob);
Render_Output_Swap_Mode _evas_outbuf_swap_mode_get(Outbuf *ob);
int _evas_outbuf_rotation_get(Outbuf *ob);
void _evas_outbuf_reconfigure(Outbuf *ob, int w, int h, int rot, Outbuf_Depth depth, Eina_Bool alpha, Eina_Bool resize, Eina_Bool hidden);
void *_evas_outbuf_update_region_new(Outbuf *ob, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);

View File

@ -316,7 +316,7 @@ _evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *surface_damage EINA_UNUSED, Tilebuf
}
}
Render_Engine_Swap_Mode
Render_Output_Swap_Mode
_evas_outbuf_swap_mode_get(Outbuf *ob)
{
int age;