summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2017-05-03 10:51:14 -0500
committerDerek Foreman <derekf@osg.samsung.com>2017-05-04 16:51:18 -0500
commit9f3273a33c294865a891091ce7e6e4907a390812 (patch)
tree7123ff046fe7cabbff091e7140989018a66925b1
parentf124c84b13eda2ae7dadf57ba941453fd2317cd9 (diff)
downloadefl-9f3273a33c294865a891091ce7e6e4907a390812.tar.gz
ecore_drm2: Require x and y value in plane assign
Saves us a flip test, and gaurantees that we're always testing with a reasonable x, y and not something leftover from a previous assignment.
-rw-r--r--src/lib/ecore_drm2/Ecore_Drm2.h2
-rw-r--r--src/lib/ecore_drm2/ecore_drm2_plane.c7
-rw-r--r--src/modules/evas/engines/drm/evas_outbuf.c2
-rw-r--r--src/modules/evas/engines/gl_drm/evas_outbuf.c3
4 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h
index 4fa46ce4e6..af2f396442 100644
--- a/src/lib/ecore_drm2/Ecore_Drm2.h
+++ b/src/lib/ecore_drm2/Ecore_Drm2.h
@@ -1006,7 +1006,7 @@ EAPI Ecore_Drm2_Fb *ecore_drm2_fb_dmabuf_import(int fd, int width, int height, i
* @ingroup Ecore_Drm2_Plane_Group
* @since 1.20
*/
-EAPI Ecore_Drm2_Plane *ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb);
+EAPI Ecore_Drm2_Plane *ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb, int x, int y);
/**
* Remove a hardware plane from display
diff --git a/src/lib/ecore_drm2/ecore_drm2_plane.c b/src/lib/ecore_drm2/ecore_drm2_plane.c
index 2ecf96b19f..cb765edc4b 100644
--- a/src/lib/ecore_drm2/ecore_drm2_plane.c
+++ b/src/lib/ecore_drm2/ecore_drm2_plane.c
@@ -39,7 +39,7 @@ _plane_cursor_size_get(int fd, int *width, int *height)
}
EAPI Ecore_Drm2_Plane *
-ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb)
+ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb, int x, int y)
{
Eina_List *l;
Ecore_Drm2_Plane *plane;
@@ -102,6 +102,11 @@ out:
pstate->sw.value = fb->w << 16;
pstate->sh.value = fb->h << 16;
+ pstate->cx.value = x;
+ pstate->cy.value = y;
+ pstate->cw.value = fb->w;
+ pstate->ch.value = fb->h;
+
plane->state = pstate;
plane->type = pstate->type.value;
plane->output = output;
diff --git a/src/modules/evas/engines/drm/evas_outbuf.c b/src/modules/evas/engines/drm/evas_outbuf.c
index 4331e2d158..f45e45c119 100644
--- a/src/modules/evas/engines/drm/evas_outbuf.c
+++ b/src/modules/evas/engines/drm/evas_outbuf.c
@@ -20,7 +20,7 @@ _outbuf_buffer_swap(Outbuf *ob, Eina_Rectangle *rects, unsigned int count)
ecore_drm2_fb_dirty(ofb->fb, rects, count);
if (!ob->priv.plane)
- ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, ofb->fb);
+ ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, ofb->fb, 0, 0);
else ecore_drm2_plane_fb_set(ob->priv.plane, ofb->fb);
ecore_drm2_fb_flip(ofb->fb, ob->priv.output);
diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c b/src/modules/evas/engines/gl_drm/evas_outbuf.c
index bd4648ca27..efc9977195 100644
--- a/src/modules/evas/engines/gl_drm/evas_outbuf.c
+++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c
@@ -103,8 +103,9 @@ _evas_outbuf_buffer_swap(Outbuf *ob)
if (fb)
{
if (!ob->priv.plane)
- ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, fb);
+ ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, fb, 0, 0);
else ecore_drm2_plane_fb_set(ob->priv.plane, fb);
+
ecore_drm2_fb_flip(fb, ob->priv.output);
/* Ecore_Drm2_Plane *plane; */