From ea1f76f9809974f20c0451d4625040e97566796a Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Mon, 20 Nov 2017 16:53:31 -0600 Subject: [PATCH] drm ee: Allow more than 4 buffers Multi-head is hitting corner cases where there are lots of locked buffers and it looks like right now 5 is the magic number that makes the problem go away. Make it possible to set 5 or more (via env var) for testing, make a macro for MAX_BUFFERS instead of just a number. --- src/modules/evas/engines/drm/evas_engine.h | 4 +++- src/modules/evas/engines/drm/evas_outbuf.c | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/evas/engines/drm/evas_engine.h b/src/modules/evas/engines/drm/evas_engine.h index c19ac4c369..af9cc4da3d 100644 --- a/src/modules/evas/engines/drm/evas_engine.h +++ b/src/modules/evas/engines/drm/evas_engine.h @@ -41,6 +41,8 @@ extern int _evas_engine_drm_log_dom; # endif # define CRI(...) EINA_LOG_DOM_CRIT(_evas_engine_drm_log_dom, __VA_ARGS__) +#define MAX_BUFFERS 10 + typedef struct _Outbuf_Fb { int age; @@ -61,7 +63,7 @@ struct _Outbuf struct { int num; - Outbuf_Fb ofb[4], *draw; + Outbuf_Fb ofb[MAX_BUFFERS], *draw; Ecore_Drm2_Output *output; Ecore_Drm2_Plane *plane; Eina_List *pending; diff --git a/src/modules/evas/engines/drm/evas_outbuf.c b/src/modules/evas/engines/drm/evas_outbuf.c index 5e76d26424..0e525d566b 100644 --- a/src/modules/evas/engines/drm/evas_outbuf.c +++ b/src/modules/evas/engines/drm/evas_outbuf.c @@ -87,7 +87,7 @@ _outbuf_setup(Evas_Engine_Info_Drm *info, int w, int h) { ob->priv.num = atoi(num); if (ob->priv.num <= 0) ob->priv.num = 3; - else if (ob->priv.num > 4) ob->priv.num = 4; + else if (ob->priv.num > MAX_BUFFERS) ob->priv.num = MAX_BUFFERS; } if ((ob->rotation == 0) || (ob->rotation == 180))