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.
This commit is contained in:
Derek Foreman 2017-11-20 16:53:31 -06:00
parent f0f02d3386
commit ea1f76f980
2 changed files with 4 additions and 2 deletions

View File

@ -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;

View File

@ -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))