Yuyeon Oh [Thu, 2 Jul 2015 09:47:27 +0000 (18:47 +0900)]
render: fix pixman repaint()
- Add NULL check
- Indent
Change-Id: Ieb4006cd804fc64a9d961e64e91776a1d676cfd2
Junghoon [Tue, 7 Jul 2015 07:19:58 +0000 (16:19 +0900)]
drm: bugfix: find crtc for output
Change-Id: I65ecb0ab0ce4b2b8b3110091c46b45903c7b1895
Junghoon [Tue, 7 Jul 2015 07:15:38 +0000 (16:15 +0900)]
render: do GL extension setup once
Change-Id: I28d8a19b26b545504cde7a585f232b9be952dfa8
Jaehoon Jeong [Fri, 3 Jul 2015 07:51:32 +0000 (16:51 +0900)]
x11: bug fix
Change-Id: Ice9f5e34e250d7e4ef2e7535cc9ea6574d1ebf9e
Jaehoon Jeong [Thu, 2 Jul 2015 07:08:14 +0000 (16:08 +0900)]
desktop-shell: Add dummy xdg-shell and update .gitignore
- add xdg-shell.c
- update Makefile.am
- update .gitignore for protocol related files
Change-Id: Iaa485170cf6f3c55542082d8981ffd6f7a026bd6
Jaehoon Jeong [Thu, 2 Jul 2015 06:51:33 +0000 (15:51 +0900)]
desktop-shell: Add desktop_shell_t and shell_client_t
Change-Id: I48cbb13a3c9995d2a084017a07e3754fbe47a0d0
Junghoon [Thu, 2 Jul 2015 09:58:51 +0000 (18:58 +0900)]
render: bugfix: set context in pepper_gl_renderer_create_target()
- prevent (context == EGL_NO_CONTEXT) when calling eglMakeCurrent()
Change-Id: If81126e0bd4aa053f8305dd1c15b64d17b7b1843
Yuyeon Oh [Tue, 23 Jun 2015 13:49:29 +0000 (22:49 +0900)]
render: initial impl. of pixman repaint()
Change-Id: I407c35b7df9448885eae25511737edb74b290510
Taekyun Kim [Thu, 2 Jul 2015 09:24:57 +0000 (18:24 +0900)]
pepper: Update view size when updating view geometry.
Change-Id: I2dff6069f6d6e921d12f25793fcd585ed337a72d
Taekyun Kim [Thu, 2 Jul 2015 08:41:28 +0000 (17:41 +0900)]
pepper: Attach surface to outputs on surface.commit().
Attaching a surface is a process of notifying output backends so that they can
prepare for reading it and allocate resources for it.
For some types of buffers like EGL, the size is not known until it is queried
to the native library. although we can get the size of a shm buffer using
wl_shm, we basically assume that the buffer size should be queried to output
backends. If the backend uses pepper_render, then it can simply redirect the
request to the renderer.
Change-Id: Ie145f9029447605116a81984431cdc5235dc1eca
Taekyun Kim [Thu, 2 Jul 2015 08:12:09 +0000 (17:12 +0900)]
pepper: view: Correctly access pepper_view_state_t in view_list.
Change-Id: If49a857ccc543c2d0cac176bd5c68bec130ee426
Taekyun Kim [Wed, 1 Jul 2015 07:20:50 +0000 (16:20 +0900)]
pepper: Remove useless code.
Change-Id: Ie341dfdbf42b5330410b8859f6fd000562a88c80
Junghoon [Wed, 1 Jul 2015 06:12:13 +0000 (15:12 +0900)]
fbdev: bugfix: create render target using shadow image
Change-Id: I387ce73a92d4fdc24133d0e2981d635ef822b6f0
Taekyun Kim [Wed, 1 Jul 2015 05:06:02 +0000 (14:06 +0900)]
render: pixman: Create a render target directly from a pixman image.
Change-Id: Ida36d7e065949935093e80aee08051824e26c096
Taekyun Kim [Tue, 30 Jun 2015 08:58:42 +0000 (17:58 +0900)]
pepper: Pass rendering related view states directly through the view list.
Change-Id: I954084ab5bf809317e8bb21b3fbb1454e045ed49
Taekyun Kim [Tue, 30 Jun 2015 05:37:32 +0000 (14:37 +0900)]
pepper: View bounding, opaque and surface damage region processing.
Change-Id: Ic033ae5babe85f92b8b33649baa63173c6b61d62
Taekyun Kim [Tue, 30 Jun 2015 04:31:16 +0000 (13:31 +0900)]
pepper: utils: GLSL-like geometric primitives.
Geometric primitives are renamed similar with that of GLSL and some more
functions are added.
Change-Id: If107b46b60fee528031a4fe55e7b337ab42ec95c
Taekyun Kim [Mon, 29 Jun 2015 09:47:12 +0000 (18:47 +0900)]
pepper: View size should be integer values.
Change-Id: I2a106aac9f4b9d4e59591c7247235743645e1c7c
Taekyun Kim [Mon, 29 Jun 2015 07:31:22 +0000 (16:31 +0900)]
pepper: View API refactoring to separate z-order from parent-child relation.
Sometimes we want parent-child relationship to affect only transform of the
child not z-order. By separating z-order contraint from parent-child
relationship, we can do much more things with the APIs. For the previous style
stacked views, APIs that are changing z-order now take subtree argument
indicating whether entire subtree movement or just the individual view.
Change-Id: I7c50fae2b8dcabb336571f7dc2b93ca5d161e66c
Junghoon [Thu, 25 Jun 2015 07:05:11 +0000 (16:05 +0900)]
samples: add signal handling codes for SIGSEGV, SIGABRT
- and some change for cleanup
Change-Id: Ic52d7088b197027a443e231fe406acc0730573ea
Junghoon [Thu, 25 Jun 2015 05:36:20 +0000 (14:36 +0900)]
drm: add renderer parameter to pepper_drm_create()
Change-Id: I91d307a8648a93cebf378d76dc0f6fc44fd6f73a
Yuyeon Oh [Wed, 24 Jun 2015 08:02:31 +0000 (17:02 +0900)]
pepper: add pepper_view_get_visible_region()
Change-Id: I627eb9328f8886d077174015255a12cd54048982
Junghoon [Wed, 24 Jun 2015 08:13:39 +0000 (17:13 +0900)]
fbdev: bugfix: correct size parameter of munmap
Change-Id: I8b4a0b4daaff5c559a3eb6b1bb46af5292c4ec0e
Junghoon [Wed, 24 Jun 2015 07:25:26 +0000 (16:25 +0900)]
fbdev: rendering to shadow image
Change-Id: Ief61664faead1304fda0db79c5d204e59c073710
Junghoon [Wed, 24 Jun 2015 07:23:54 +0000 (16:23 +0900)]
pepper: move get_pixman_format() to pepper-utils
Change-Id: I760a6540827361435c810921b1dab39ee98f049c
Junghoon [Tue, 23 Jun 2015 12:12:59 +0000 (21:12 +0900)]
pepper: implement virtual terminal setup/restore
Change-Id: I7c84d04d8f2ba708fa47ae79a4a5515c042de9a3
Junghoon [Tue, 23 Jun 2015 12:04:32 +0000 (21:04 +0900)]
render: fix SIGSEGV at gl_render_target_destroy()
Change-Id: I534727a23911c1a3b50eb84efb54e36b8a50c8ca
Taekyun Kim [Tue, 23 Jun 2015 08:57:41 +0000 (17:57 +0900)]
etc: Added fbdev-backend binary file to gitignore
Change-Id: I565b4e53576cd4d3556e209c994c6f2bd6c5d226
Taekyun Kim [Tue, 23 Jun 2015 06:20:37 +0000 (15:20 +0900)]
pepper: Now view list and damage is passed to the repaint function.
Damage region and view list is required to do repaint. Now they are passed as
arguments in the repaint interface function.
Change-Id: Ib69a6322ad0e21bc273aa3f16eefee15ecb0720b
Taekyun Kim [Tue, 23 Jun 2015 05:35:58 +0000 (14:35 +0900)]
pepper: Accumulate output damage and automatically schedule repaint.
Damage is maintained per output and is passed to the repaint function.
Damage region is in output local coordinate space so an output backend should
be careful not to translate it to global compositor space.
No damage, we have nothing to repaint. So, we can safely schedule repaint
whenever damage is generated. Essentially, we don't have to expose repaint
scheduling APIs.
Change-Id: Iebff5fec5f93d764a8ea8894b7f84c8ded9c59c3
Jaehoon Jeong [Fri, 19 Jun 2015 04:14:08 +0000 (13:14 +0900)]
samples:x11: add desktop_shell_init()
Change-Id: I6ef909e34d6ac4f6740c267e315240a6271df8ff
Jaehoon Jeong [Fri, 19 Jun 2015 03:51:31 +0000 (12:51 +0900)]
desktop-shell: implement shell_surface's ping-pong
- TODO: display/undisplay the \'wait cursor\'
Change-Id: I8f725f534784fea48b000fbd26b484e1c31727e9
Junghoon [Fri, 19 Jun 2015 01:39:32 +0000 (10:39 +0900)]
drm: apply dynamic render target setup
- create gl & pixman renderers
- set render target
- minor bug fixes
Change-Id: I7f02e538b99869e22832b775478b0662f188100c
Junghoon [Fri, 19 Jun 2015 01:19:05 +0000 (10:19 +0900)]
fbdev: minor bugfix
- fix size parameter in mmap()
Change-Id: Id970f24e13ff3d455959fe4f4f0e7173263ce4b6
Taekyun Kim [Thu, 18 Jun 2015 08:29:55 +0000 (17:29 +0900)]
x11: Fixed incorrect height value on shm put image.
Typo error.
Change-Id: Iadf379715b927aaa2979b785c92417f6a8066a79
Taekyun Kim [Thu, 18 Jun 2015 08:27:17 +0000 (17:27 +0900)]
x11: Don't check success of gl renderer creation as it is optional.
Fall back to pixman renderer when gl renderer creation fails.
Change-Id: I530ae4f2e1425c13902d2b9c0e57f586513919c0
Jaehoon Jeong [Thu, 18 Jun 2015 07:45:50 +0000 (16:45 +0900)]
desktop-shell: implement wl_shell::get_shell_surface, wl_shell_surface::set_toplevel
- a little implementation
Change-Id: I72ea10abcdc781ba1c3e0141d6203cbb894aea77
Yuyeon Oh [Wed, 17 Jun 2015 07:01:17 +0000 (16:01 +0900)]
render: add dummy output_damage parameter
Change-Id: If9c18f10a85a4d1200ffe3ed1fa2a8b30fafcde0
Taekyun Kim [Wed, 17 Jun 2015 09:30:15 +0000 (18:30 +0900)]
render: Refactored to support dynamic render target setup.
Now, we can switch the render target of a renderer dynamically. With this, we
can create one EGLContext for multiple native windows so that we can save OpenGL
resources and texture download cost.
Additionally, some renderer APIs are added for surface attach and damage flush.
Modules that were using old APIs are modified to use new APIs. Essentially, the
root object (i.e. pepper_drm_t) creates renderers, and each output chooses its
desired renderer and points to the renderer. pepper_render_target_t is created
for an output and it is set as a render target of the renderer when repaint.
Some messy codes are cleaned up while rewriting for the new APIs. But still got
a lot more, especially, codes taken from weston.
Change-Id: I5c9796c44f74efa3aa735396f58c6499a817937b
Jaehoon Jeong [Wed, 17 Jun 2015 06:32:26 +0000 (15:32 +0900)]
desktop-shell: Add xdg-shell.xml and generate .c/.h from xml
Change-Id: Ida4655ac98cf0fdbfe82d4a3419f4d0733310064
Junghoon [Tue, 16 Jun 2015 07:29:32 +0000 (16:29 +0900)]
fbdev
- add renderer parameter to pepper_fbdev_create()
Change-Id: I4c153f95b502d03564f551a6257827aae2209797
Junghoon [Tue, 16 Jun 2015 07:21:59 +0000 (16:21 +0900)]
bugfix
Change-Id: Ic64fd9bfe42867ea896c46a2ada41cbf966514de
Taekyun Kim [Tue, 16 Jun 2015 04:37:56 +0000 (13:37 +0900)]
pepper: Introducing generic pepper_object_t.
Pepper objects have several similar functions, so abstracting such functions
into a generic object would be more convenient.
* List of pepper_object_t
- pepper_compositor_t
- pepper_output_t
- pepper_surface_t
- pepper_buffer_t
- pepper_view_t
- pepper_seat_t
- pepper_pointer_t
- pepper_keyboard_t
- pepper_touch_t
Change-Id: I6812a596fe2363a1261ebcd8d9fd715d29f4fda3
Taekyun Kim [Mon, 15 Jun 2015 08:31:07 +0000 (17:31 +0900)]
pepper: Commit only newly attached buffer.
As a client can attach a NULL buffer, it is impossible to know that the buffer
is newly attached or not by doing NULL check.
Change-Id: Ieeecc8530b8afa5c5058ad0cc8354265a782495a
Junghoon [Mon, 15 Jun 2015 07:49:57 +0000 (16:49 +0900)]
Remove useless "return;" statements
Change-Id: Ie0492ace4e059b4ef283bbf00ca5c8945267ca17
Junghoon [Fri, 12 Jun 2015 08:12:46 +0000 (17:12 +0900)]
fbdev: initial implementation
- use libinput & pixman renderer
- just clear screen once
Change-Id: I1b2470734d220c51a7b816a6d38a0d3bdbc9f996
Yuyeon Oh [Fri, 12 Jun 2015 07:38:49 +0000 (16:38 +0900)]
pepper: fix variable name
Change-Id: I0a4841201a9a3a26a43b936c9f0d0e67a77e5e9b
Taekyun Kim [Fri, 12 Jun 2015 04:19:45 +0000 (13:19 +0900)]
pepper: Basic matrix APIs
Matrix initialization, multiplication and some utility functions.
Change-Id: I3e40cc503d6d7109547e05739321ea64d393117b
Yuyeon Oh [Thu, 11 Jun 2015 12:36:53 +0000 (21:36 +0900)]
pepper: add initial log system
Default output file is stdout.
log example is below.
"Date: 2015-06-11 KST
"[21:36:35.164] DOCTOR: start doctor server 0
"[21:36:35.164] PEPPER: compositor.c:pepper_compositor_create: Failed to add socket display = 0xe60a20 socket_name = wayland-0
(" is added to avoid git commit ID recognition)
Change-Id: I32cf1d5fed59e5dbcef1f3ba49540df476246de6
jh01.j [Thu, 11 Jun 2015 06:17:40 +0000 (15:17 +0900)]
review: pepper: surface: add some codes
- Add pepper_surface_schedule_repaint() function
- Add wl_list_remove() for remove surface from compositor->surfaces list in destroy
Change-Id: I5ac6a701028db75c1fcd7c7c046c2329181b22dc
jh01.j [Thu, 11 Jun 2015 05:46:23 +0000 (14:46 +0900)]
x11: bug fix
- input: bug fix
- output: add pepper_pixman_renderer_set_target() function
Change-Id: I919db33f5ade8134545c1e0d9792a93b8b52c278
jh01.j [Thu, 11 Jun 2015 05:35:10 +0000 (14:35 +0900)]
pepper: input
- Add wl_seat_send_capabilities() in bind_seat()
- Add tiny pointer_motion and pointer_button event handler
Change-Id: I8d2dfd537535cda6e7b8f29896e65e86fca12f0a
Taekyun Kim [Thu, 11 Jun 2015 02:19:30 +0000 (11:19 +0900)]
pepper: View damage processing
Damage processing algorithm.
1. inflict damage for current visible area of a view when geometry or z-order
change. Mark those views as "need_damage" so that damages for updated
visible regions are getting inflicted.
2. Build a list of views sorted in z-order.
3. Do following things while traversing the view list from front to back
a. update view geometry
b. calculate visible region of the view : visible = bounding - opaque
c. inflict damage for visible region of the view if marked as "need_damage"
d. inflict damage for surface damage set by the client
e. accumulate view's opaque region on the global opaque region
Now we have total damage region in compositor->damage_region.
Change-Id: I06c7098bb7edc954172177ee36442800d2b3ce26
Taekyun Kim [Wed, 10 Jun 2015 09:43:12 +0000 (18:43 +0900)]
pepper: Fixed a bug in pepper_map_get().
Change-Id: Iecc5dccb455379637b86b365d769dd90b8c7f2ce
Taekyun Kim [Tue, 9 Jun 2015 07:07:29 +0000 (16:07 +0900)]
pepper: Merged pepper-utils package into pepper.
Change-Id: I00c82ea2e0e8745ee83a74647cfa7a35e732ec07
Taekyun Kim [Tue, 9 Jun 2015 06:38:51 +0000 (15:38 +0900)]
pepper: APIs for accessing root views of a compositor
These APIs are required for users to be able to traverse the view tree.
Change-Id: Icbd188a37ec5dca28a15a9d90182386163b27762
jh01.j [Tue, 9 Jun 2015 06:16:01 +0000 (15:16 +0900)]
x11: fix some logics
- implement destroy functions
- input: add capabilities
- output: move wl_event_source_timer_update() function to generate frame_callback in
gl-rendering case
Change-Id: Ia31e988092bb62f44febfcaf9355e94187d210e3
jh13.son [Mon, 8 Jun 2015 10:34:54 +0000 (19:34 +0900)]
drm: output - handle drm output device add/remove
Change-Id: I7e7c8dac815f9b804341033d26a138b3c85845dc
Taekyun Kim [Thu, 4 Jun 2015 09:40:02 +0000 (18:40 +0900)]
pepper: View API Refactoring
Change-Id: Ide15b28522cac54ab67ce820b3b62ae4f62258b3
Taekyun Kim [Thu, 4 Jun 2015 09:09:47 +0000 (18:09 +0900)]
Correctly specified pkgconfig Requires.private field
Change-Id: Iace43a6546fbbbe497084250fb70eba4b3bbe491
Taekyun Kim [Thu, 4 Jun 2015 08:16:02 +0000 (17:16 +0900)]
Replace wl_container_of with pepper_container_of
wl_container_of requires a variable to be declared to get the pointer to the
container. We can avoid this by using pepper_container_of by giving a type name
instead of the variable name.
Change-Id: I9afbe84f3177e41e577f0c9d6cad628e9216ceb3
Taekyun Kim [Wed, 3 Jun 2015 05:57:32 +0000 (14:57 +0900)]
pepper: APIs for accessing surface region information
Change-Id: I6d5fe86a308b757dc28b577a70a34f425a49bf86
Taekyun Kim [Wed, 3 Jun 2015 05:47:30 +0000 (14:47 +0900)]
Fixed various errors & bugs
Change-Id: I536531a3507fc493b7162e6b73fd548c12757265
Taekyun Kim [Mon, 1 Jun 2015 08:50:36 +0000 (17:50 +0900)]
Split source tree into separate libraries
Now the repository contains several packages. Each package is a separate
library or a bin program. Followings are brief descriptions of directories.
===============================================================================
pepper | Pepper core library package.
-------------------------------------------------------------------------------
render | Rendering library (pixman, OpenGL)
-------------------------------------------------------------------------------
desktop-shell | Desktop shell library
-------------------------------------------------------------------------------
drm | DRM output backend library
-------------------------------------------------------------------------------
libinput | Libinput input backend library
-------------------------------------------------------------------------------
wayland | Wayland output/input backend library
-------------------------------------------------------------------------------
x11 | X11 output/input backend library
-------------------------------------------------------------------------------
utils | Utility library
-------------------------------------------------------------------------------
samples | Sample programs for testing pepper libraries
-------------------------------------------------------------------------------
doctor | Reference server using pepper libraries
===============================================================================
Renderer is no longer a core object, instead, output libraries can freely use
it by linking against separate libpepper-render.
pepper_output_schedule_repaint() is now exposed as an API.
Put utility functions on the pepper-utils package.
Need a build script which takes options for enabling or disabling each library.
Change-Id: I5c686d158ea61056cd517f29c4eda4b2d4c7877a
jaehoon01.jeong [Mon, 1 Jun 2015 08:40:17 +0000 (17:40 +0900)]
event: function rename
pepper_compositor_remove_event_hook -> pepper_event_hook_destroy
Change-Id: Ie0a1701094a5b79f79fc34d0516c34ca459f996d
jaehoon01.jeong [Fri, 29 May 2015 05:45:33 +0000 (14:45 +0900)]
event: add event hook
1. Every modules, to want to handle input events, are use
pepper_compositor_add_event_hook() to placing event handler, even
compositor itself
2. pepper_compositor_add_hook() insert a new hook at the head of hook_list
3. pepper_seat_handle_event() traversing hook_list from head to tail, and
call hook_handlers
4. last installed hook called first.
Change-Id: I6b26754dee0c6129afd67010175df395df67fdd4
jh13.son [Wed, 27 May 2015 05:09:41 +0000 (14:09 +0900)]
gl-renderer: bugfix
Change-Id: Idb11798b139ce97eb925df67f173757bccc2380b
jh13.son [Tue, 26 May 2015 11:02:22 +0000 (20:02 +0900)]
Fix warnings
Change-Id: I1a67ad4b5ed7aec35084ae991e07590a1ccbbbe8
jh13.son [Tue, 26 May 2015 10:36:58 +0000 (19:36 +0900)]
Input implementation
- implement open & close functions for libinput library
- bug fix
Change-Id: If9a061be4a85a0385b14bd1a03f466892732e67c
jh13.son [Fri, 22 May 2015 11:07:33 +0000 (20:07 +0900)]
drm backend implementation
- output implementation
- initial version
- create framebuffers
- draw using gl-renderer or pixman-renderer
- add test code
Change-Id: I136872213c54ef887c3a58cbccad95b7f01d1801
jh13.son [Fri, 22 May 2015 10:28:54 +0000 (19:28 +0900)]
gl-renderer: bugfix
Change-Id: Ibff85542e89f4233de7b84103b90e5d8788c5490
Taekyun Kim [Fri, 22 May 2015 05:03:32 +0000 (14:03 +0900)]
gl-renderer: pixman-renderer: Refactor surface attach code
Change-Id: I14874b2b653b56ddcc22b3002f42f200f66026c4
Taekyun Kim [Wed, 20 May 2015 10:02:41 +0000 (19:02 +0900)]
gl-renderer: Surface attach.
Change-Id: I4734f39d27d6d6d43cd9b0b3bb7c1bba1b3c8a55
Taekyun Kim [Wed, 20 May 2015 05:06:21 +0000 (14:06 +0900)]
gl-renderer: EGL and GL extension initialization.
Change-Id: Id6274ac8fe46c084d38030eb574b5cb449728c7d
Taekyun Kim [Wed, 20 May 2015 04:26:58 +0000 (13:26 +0900)]
core: Added attach_surface() to the renderer interface.
In order to draw a view, the surface of the view should be attached to the
renderer first. For pixman renderer, we need a pixman_image_t for the given
surface's current buffer. For gl renderer, we need a texture.
Size of a buffer is unknown until it is attached to a renderer for some types
of buffers, for example, size of an EGL buffer can be queried via
eglQueryWaylandBufferWL() so the core should attach the buffer to a renderer
in order to get its size.
Normaly, only shm buffers can be attached to pixman renderers. But there're
platforms that can map DMABUFs into CPU address so that pixman renderer can
serve those types of buffers.
Change-Id: I4c07b48d1879a3c2d2d4c26db67b41019071458b
Taekyun Kim [Tue, 19 May 2015 08:41:25 +0000 (17:41 +0900)]
core: Surface user set/get APIs.
Given a pointer key value, one can set a user data for the key. This can be
used for maintaining user-side objects for a pepper_surface_t. For, example,
sub-compositing application can set an evas image object.
Change-Id: I791e891340d69a47b3dc566a5766e0d67760721e
Taekyun Kim [Tue, 19 May 2015 08:07:59 +0000 (17:07 +0900)]
util: Simple hash table implementation.
Change-Id: I5992e76740ea1b3d4a78539ab377d3e7146b9af7
Taekyun Kim [Tue, 19 May 2015 05:22:40 +0000 (14:22 +0900)]
core: Removed pepper-util.h from API header file.
Change-Id: I4959f5fefbb0cf0bb68b0da8a9cd667e0533136b
Taekyun Kim [Tue, 19 May 2015 05:19:34 +0000 (14:19 +0900)]
core: Buffer APIs are now exposed to users.
Change-Id: I35a94b2a29d1d96c2244ddc7e3e32bd18c6ff504
Taekyun Kim [Tue, 19 May 2015 05:17:49 +0000 (14:17 +0900)]
core: APIs for accessing surface's current buffer and etc.
Change-Id: Ic9508440c605c39fc09c825dfb391cc7ff02c527
Taekyun Kim [Tue, 12 May 2015 04:37:24 +0000 (13:37 +0900)]
core: Layer & View implementation
A compositor has layers stacked from bottom to top. Each layer has its views
which are also stached from bottom to top. Layer can be used for grouping views
and maintaining z-order. For example, a desktop can have several layers like
panel, background and application layers.
View represent visible elements in the compositor space.
<< Written under following criteria. >>
1. View is a rectangle of the same size with its surface.
2. A view can have a parent and multiple childs.
3. View position and transform is relative to its parent.
4. Parent-Child relationship does not affect the z-order.
5. A view can be contained in a single layer at a time.
Change-Id: Ib0ad01575467960c5b04d968389e37879500f21b
Taekyun Kim [Mon, 11 May 2015 08:43:24 +0000 (17:43 +0900)]
util: List implementation
We need something more than wl_list when an item should be contained in
multiple lists. pepper_list_t can do this while it can be used in the same way
with wl_list. Don't use container_of for a node which is internally allocated.
Change-Id: I59aa1536205a6e8b5cf10136cfef19b8c90b1b4b
Taekyun Kim [Tue, 28 Apr 2015 10:41:26 +0000 (19:41 +0900)]
desktop-shell: Initial implementation
Written under following criteria.
1. A compositor can have only one shell module loaded at a time.
2. A shell module can expose several shell protocols.
3. Pepper simply passes input events to the shell module.
Change-Id: I2e9f4a40c40cc708d437fa72beb376b6449a8ef0
jaehoon01.jeong [Tue, 28 Apr 2015 06:06:29 +0000 (15:06 +0900)]
test:
- fix makefile.am
Change-Id: I98fe8c33b741da95a1016ab268ca1b9323d103cd
jaehoon01.jeong [Thu, 23 Apr 2015 06:05:02 +0000 (15:05 +0900)]
data-device:
- initial data-device-manager implementation
Change-Id: I15b6fb29e8021d84bccd09a20d2004ee404d8a19
jaehoon01.jeong [Wed, 22 Apr 2015 08:17:13 +0000 (17:17 +0900)]
test: x11-backend
Change-Id: I1e47d804fa85d4376fa3aead8ac19ee817d835bb
jaehoon01.jeong [Wed, 22 Apr 2015 07:45:32 +0000 (16:45 +0900)]
x11: update x11-backend module
- renderer initialize
- pixman rendering with xcb-shm
- handle some x-events
Change-Id: Ib36902f6fe086c9018f89f20c891ee2b9ca3adda
jh13.son [Fri, 17 Apr 2015 11:22:30 +0000 (20:22 +0900)]
test: simple-touch
- add pointer & keyboard event handler
Change-Id: I9126567d2e600338ed566f02930b0c92620372f2
jh13.son [Thu, 16 Apr 2015 11:22:56 +0000 (20:22 +0900)]
Input implementation
- input module for drm & fbdev backends
- initial version
- using libinput
Change-Id: I963502abac30f5a75910b528d38d176c8ef9443d
Taekyun Kim [Thu, 16 Apr 2015 06:05:33 +0000 (15:05 +0900)]
test: Added weston's simple-shm, simple-touch test programs
Running them without any argument will connect to default server.
If an argument is given, it will connect to the given display name.
./simple-shm equals to ./simple-shm wayland-0
Change-Id: I677fd3809a87d29b5729244c9dadb42f375f6f1d
Taekyun Kim [Thu, 16 Apr 2015 05:30:21 +0000 (14:30 +0900)]
wayland: input: Fix some bugs
Change-Id: I84997592ec6aba955b78987bf524e2f149047801
Taekyun Kim [Wed, 15 Apr 2015 09:59:52 +0000 (18:59 +0900)]
wayland: pixman rendering via wl_shm_buffer
Change-Id: If95a155db5942f3fa08b49b2c2d53bf8ad40c5bb
Taekyun Kim [Wed, 15 Apr 2015 07:21:57 +0000 (16:21 +0900)]
output: initial output repaint and frame control implementation
Two boolean frame state flags
- scheduled : TRUE if repaint task is scheduled
- pending : TRUE if repaint is flushed but not posted
Three events affect the frame state flags
- Frame : called when any pending repaint is posted
- Repaint : Repaint the output
- Schedule : Schedule a repaint
<< Transition of "scheduled" state flag >>
-----------------------------------------
| | frame | repaint | schedule |
-----------------------------------------
| TRUE | TRUE | FALSE | TRUE |
-----------------------------------------
| FALSE | FALSE | error | TRUE |
-----------------------------------------
<< Transition of "pending" state flag >>
-----------------------------------------
| | frame | repaint | schedule |
-----------------------------------------
| TRUE | FALSE | error | TRUE |
-----------------------------------------
| FALSE | FALSE | TRUE | FALSE |
-----------------------------------------
Frame event is invoked by output backend module. wayland backend invokes it
when it receives frame callback done event. DRM backend invokes it in the
vblank period.
When to call repaint is upto pepper core, currently it is called in the frame
event handler function.
Schedule can be called at any time.
We should aim following criteria.
1. Don't make clients render frames which will not be seen on the display
This is done by sending frame done events to the clients when the compositor
is ready for following surface commits. This can be achieved by sending frame
done event once per frame at most.
2. Maximize FPS.
We also should maximize the FPS as possible as we can while still meets the
criteria #1. If a client can render its frame within a frame period, it should
be able to render at about display refresh rate.
3. Minimize latency
Latency means time between surface commit and actual display scanning. Short
latency is always preferable but we might have to do trade-off between FPS and
latency.
Change-Id: I9e3440ea5b79c20ed16229fcade2429afa00c767
jh13.son [Wed, 15 Apr 2015 04:15:25 +0000 (13:15 +0900)]
Change a member name in seat structure
- capability_signal ==> capabilities_signal
Change-Id: I2e0c4bd965913b7eac018354f6d62dece1f1bb5f
Taekyun Kim [Wed, 8 Apr 2015 06:27:43 +0000 (15:27 +0900)]
build: Changed default option for wayland backend egl support to no
We need a working EGL driver which supports wayland-egl for the wayland backend
to be properly compiled. We don't have such driver at the moment, just disable
it by default.
Change-Id: Ib45c0b7a312e3195ee37acb31231351ebc986d8d
Taekyun Kim [Wed, 8 Apr 2015 06:21:41 +0000 (15:21 +0900)]
Add test program template.
Add test program name to TESTPROGRAMS variable in test/Makefile.am
Change-Id: I888dd46730e2ce0a0fae75028fbe477e08fec8c9
Taekyun Kim [Wed, 8 Apr 2015 06:20:39 +0000 (15:20 +0900)]
Add missing initialization of signal and list
Change-Id: I5730e8b175f2fcae942dba25a345e1f9346e58ec
Taekyun Kim [Wed, 8 Apr 2015 04:50:05 +0000 (13:50 +0900)]
renderer: initial pixman renderer & wayland backend rendering functions
Change-Id: I6b906148d73405da3adc1cda5cedbb3968641507
Taekyun Kim [Tue, 7 Apr 2015 10:23:16 +0000 (19:23 +0900)]
Fix warnings
EGLint might be 64 bits, so just cast uint32_t to EGLint and compare.
Change-Id: I6f8d1a03e1034b2c2592fba306bd3e85f66bacd2
Taekyun Kim [Tue, 7 Apr 2015 08:16:17 +0000 (17:16 +0900)]
Added vim custom config file to .gitignore
Change-Id: Id8c4416735eb7c6a460b4d56a1de3f470d245e3a