replace 'tizen_buffer_pool' interface with 'wayland-tbm' library 11/48311/1 accepted/tizen/mobile/20150921.090204 accepted/tizen/tv/20150921.090217 accepted/tizen/wearable/20150921.090255 submit/tizen/20150921.055555
authorBoram Park <boram1288.park@samsung.com>
Mon, 14 Sep 2015 00:43:03 +0000 (09:43 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 17 Sep 2015 07:40:02 +0000 (16:40 +0900)
Change-Id: I7228283397aac9a546a536137f33c602cb756a19

src/bin/Makefile.mk
src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/bin/e_drm_buffer_pool.c [deleted file]
src/bin/e_drm_buffer_pool.h [deleted file]
src/bin/e_includes.h
src/bin/e_pixmap.c

index 8dc393fa34dd747b1ba847989610ed7a50ef31a7..c46f482da4c4a53e304b055e8b90f2ebf30b9446 100644 (file)
@@ -206,7 +206,6 @@ src/bin/e_zone.h
 
 if HAVE_WAYLAND
 ENLIGHTENMENTHEADERS += \
-src/bin/e_drm_buffer_pool.h \
 src/bin/e_uuid_store.h \
 src/bin/e_comp_wl_data.h \
 src/bin/e_comp_wl_input.h \
@@ -386,7 +385,6 @@ endif
 
 if HAVE_WAYLAND
 enlightenment_src += \
-src/bin/e_drm_buffer_pool.c \
 src/bin/e_uuid_store.c \
 src/bin/e_comp_wl_data.c \
 src/bin/e_comp_wl_input.c \
index 80a2ea675462f047e1a6cd9af2a23462541e90ab..d06e5444967cb537025b0ce2801446e791576683 100755 (executable)
@@ -1,6 +1,8 @@
 #define E_COMP_WL
 #include "e.h"
 
+#include <wayland-tbm-server.h>
+
 /* handle include for printing uint64_t */
 #define __STDC_FORMAT_MACROS
 #include <inttypes.h>
@@ -1797,7 +1799,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
              EINA_LIST_FREE(state->damages, dmg)
                {
                   /* not creating damage for ec that shows a underlay video */
-                  if (ec->comp_data->buffer_ref.buffer->type != E_COMP_WL_BUFFER_TYPE_DRM ||
+                  if (ec->comp_data->buffer_ref.buffer->type != E_COMP_WL_BUFFER_TYPE_TBM ||
                       !e_comp->wl_comp_data->available_hw_accel.underlay)
                     e_comp_object_damage(ec->frame, dmg->x, dmg->y, dmg->w, dmg->h);
 
@@ -1858,7 +1860,7 @@ _e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state)
    EINA_LIST_FOREACH(state->frames, l, cb)
      eina_list_move(&ec->comp_data->frames, &state->frames, cb);
 
-   if (ec->comp_data->buffer_ref.buffer->type == E_COMP_WL_BUFFER_TYPE_DRM &&
+   if (ec->comp_data->buffer_ref.buffer->type == E_COMP_WL_BUFFER_TYPE_TBM &&
        e_comp->wl_comp_data->available_hw_accel.underlay)
      e_pixmap_image_clear(ec->pixmap, 1);
 
@@ -3942,7 +3944,7 @@ e_comp_wl_buffer_get(struct wl_resource *resource)
    struct wl_shm_buffer *shmbuff;
    E_Comp_Data *cdata;
    Eina_Bool res;
-   E_Drm_Buffer *drm_buffer;
+   tbm_surface_h tbm_surf;
 
    listener =
      wl_resource_get_destroy_listener(resource, _e_comp_wl_buffer_cb_destroy);
@@ -3960,16 +3962,16 @@ e_comp_wl_buffer_get(struct wl_resource *resource)
         buffer->w = wl_shm_buffer_get_width(shmbuff);
         buffer->h = wl_shm_buffer_get_height(shmbuff);
      }
-   else if ((drm_buffer = e_drm_buffer_get(resource)))
-     {
-        buffer->type = E_COMP_WL_BUFFER_TYPE_DRM;
-        buffer->w = drm_buffer->width;
-        buffer->h = drm_buffer->height;
-     }
    else
      {
         cdata = e_comp->wl_comp_data;
-        if (cdata->gl.api)
+        if ((tbm_surf = wayland_tbm_server_get_surface(cdata->tbm.server, resource)))
+          {
+             buffer->type = E_COMP_WL_BUFFER_TYPE_TBM;
+             buffer->w = tbm_surface_get_width(tbm_surf);
+             buffer->h = tbm_surface_get_height(tbm_surf);
+          }
+        else if (cdata->gl.api)
           {
              buffer->type = E_COMP_WL_BUFFER_TYPE_NATIVE;
 
index a54c9bb00166ad7a8cd42a8d454c259d3426fefd..e57d09f92a2cc6e02b339d890d7ccad2d2698a82 100755 (executable)
@@ -52,7 +52,7 @@ typedef enum _E_Comp_Wl_Buffer_Type
    E_COMP_WL_BUFFER_TYPE_NONE = 0,
    E_COMP_WL_BUFFER_TYPE_SHM = 1,
    E_COMP_WL_BUFFER_TYPE_NATIVE = 2,
-   E_COMP_WL_BUFFER_TYPE_DRM = 3
+   E_COMP_WL_BUFFER_TYPE_TBM = 3
 } E_Comp_Wl_Buffer_Type;
 
 struct _E_Comp_Wl_Buffer
diff --git a/src/bin/e_drm_buffer_pool.c b/src/bin/e_drm_buffer_pool.c
deleted file mode 100644 (file)
index e26918e..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright © 2011 Kristian Høgsberg
- * Copyright © 2011 Benjamin Franzke
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- *    Kristian Høgsberg <krh@bitplanet.net>
- *    Benjamin Franzke <benjaminfranzke@googlemail.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stddef.h>
-#include <unistd.h>
-
-#include <Ecore_Drm.h>
-#include "e.h"
-#include "e_drm_buffer_pool.h"
-#include <tizen-extension-server-protocol.h>
-
-#undef MIN
-#define MIN(x,y) (((x)<(y))?(x):(y))
-
-struct _E_Drm_Buffer_Pool
-{
-   struct wl_display *display;
-   E_Drm_Buffer_Callbacks *callbacks;
-   void *user_data;
-
-   Eina_List *format_list;
-   struct wl_global *wl_global;
-};
-
-/* TODO: what's better way to get device_name? */
-static const char*
-get_device_name(void)
-{
-   Eina_List *devs = ecore_drm_devices_get();
-   Ecore_Drm_Device *dev;
-
-   if (!devs)
-     return NULL;
-
-   dev = eina_list_nth(devs, 0);
-
-   return ecore_drm_device_name_get(dev);
-}
-
-static void
-destroy_drm_buffer(struct wl_resource *resource)
-{
-   E_Drm_Buffer *buffer = wl_resource_get_user_data(resource);
-   E_Drm_Buffer_Pool *pool = buffer->pool;
-
-   pool->callbacks->release_buffer(pool->user_data, buffer);
-   free(buffer);
-}
-
-static void
-_e_drm_buffer_cb_destroy(struct wl_client *client, struct wl_resource *resource)
-{
-   wl_resource_destroy(resource);
-}
-
-static const struct wl_buffer_interface _e_drm_buffer_interface = {
-   _e_drm_buffer_cb_destroy
-};
-
-static void
-create_drm_buffer(struct wl_client *client, struct wl_resource *resource, uint32_t id,
-                  int32_t width, int32_t height, uint32_t format,
-                  uint32_t name0, int32_t offset0, int32_t stride0,
-                  uint32_t name1, int32_t offset1, int32_t stride1,
-                  uint32_t name2, int32_t offset2, int32_t stride2)
-{
-   E_Drm_Buffer_Pool *pool = wl_resource_get_user_data(resource);
-   E_Drm_Buffer *buffer;
-   void *fmt;
-   Eina_List *f;
-   Eina_Bool found = EINA_FALSE;
-
-   EINA_LIST_FOREACH(pool->format_list, f, fmt)
-     {
-        if (format == (uint)(uintptr_t)fmt)
-          {
-            found = EINA_TRUE;
-            break;
-          }
-     }
-
-   if (!found)
-     {
-        wl_resource_post_error(resource, TIZEN_BUFFER_POOL_ERROR_INVALID_FORMAT, "invalid format");
-        return;
-     }
-
-   buffer = calloc(1, sizeof *buffer);
-   if (buffer == NULL)
-     {
-        wl_resource_post_no_memory(resource);
-        return;
-     }
-
-   buffer->resource = wl_resource_create(client, &wl_buffer_interface, 1, id);
-   if (!buffer->resource)
-     {
-        wl_resource_post_no_memory(resource);
-        free(buffer);
-        return;
-     }
-
-   wl_resource_set_implementation(buffer->resource, &_e_drm_buffer_interface,
-                                  buffer, destroy_drm_buffer);
-
-   buffer->width = width;
-   buffer->height = height;
-   buffer->format = format;
-   buffer->name[0] = name0;
-   buffer->offset[0] = offset0;
-   buffer->stride[0] = stride0;
-   buffer->name[1] = name1;
-   buffer->offset[1] = offset1;
-   buffer->stride[1] = stride1;
-   buffer->name[2] = name2;
-   buffer->offset[2] = offset2;
-   buffer->stride[2] = stride2;
-   buffer->pool = pool;
-
-   pool->callbacks->reference_buffer(pool->user_data, buffer);
-   if (buffer->driver_buffer == NULL)
-     {
-        wl_resource_post_error(resource, TIZEN_BUFFER_POOL_ERROR_INVALID_NAME, "invalid name");
-        free(buffer);
-        return;
-     }
-}
-
-static void
-_e_drm_buffer_pool_authenticate(struct wl_client *client, struct wl_resource *resource, uint32_t id)
-{
-   tizen_buffer_pool_send_authenticated(resource);
-}
-
-static void
-_e_drm_buffer_pool_create_buffer(struct wl_client *client,
-                                 struct wl_resource *resource, uint32_t id, uint32_t name,
-                                 int32_t width, int32_t height, uint32_t stride, uint32_t format)
-{
-   create_drm_buffer(client, resource, id, width, height, format, name, 0, stride,
-                     0, 0, 0, 0, 0, 0);
-}
-
-static void
-_e_drm_buffer_pool_create_planar_buffer(struct wl_client *client,
-                                        struct wl_resource *resource, uint32_t id,
-                                        int32_t width, int32_t height, uint32_t format,
-                                        uint32_t name0, int32_t offset0, int32_t stride0,
-                                        uint32_t name1, int32_t offset1, int32_t stride1,
-                                        uint32_t name2, int32_t offset2, int32_t stride2)
-{
-   create_drm_buffer(client, resource, id, width, height, format, name0, offset0, stride0,
-                     name1, offset1, stride1, name2, offset2, stride2);
-}
-
-static const struct tizen_buffer_pool_interface _e_drm_buffer_pool_interface =
-{
-   _e_drm_buffer_pool_authenticate,
-   _e_drm_buffer_pool_create_buffer,
-   _e_drm_buffer_pool_create_planar_buffer
-};
-
-static void
-_e_drm_buffer_pool_cb_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
-{
-   E_Drm_Buffer_Pool *pool = data;
-   struct wl_resource *res;
-   const char *device_name = get_device_name();
-   uint caps = 0;
-   int i, fmt_cnt = 0;
-   uint *fmts;
-
-   if (!(res = wl_resource_create(client, &tizen_buffer_pool_interface, MIN(version, 1), id)))
-     {
-        ERR("Could not create tizen_screenshooter resource: %m");
-        wl_client_post_no_memory(client);
-        return;
-     }
-
-   wl_resource_set_implementation(res, &_e_drm_buffer_pool_interface, pool, NULL);
-
-   if (pool->callbacks->get_capbilities)
-     caps = pool->callbacks->get_capbilities(pool->user_data);
-
-   fmts = pool->callbacks->get_formats(pool->user_data, &fmt_cnt);
-
-   tizen_buffer_pool_send_device(res, device_name ? device_name : "unkown");
-   tizen_buffer_pool_send_capabilities(res, caps);
-   for (i = 0; i < fmt_cnt; i++)
-     {
-        pool->format_list = eina_list_append(pool->format_list, (void*)(uintptr_t)fmts[i]);
-        tizen_buffer_pool_send_format(res, fmts[i]);
-     }
-   free(fmts);
-}
-
-EAPI int
-e_drm_buffer_pool_init(struct wl_display *display, E_Drm_Buffer_Callbacks *callbacks, void *user_data)
-{
-   E_Drm_Buffer_Pool *pool;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(display, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(callbacks, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(callbacks->get_formats, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(callbacks->reference_buffer, 0);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(callbacks->release_buffer, 0);
-
-   pool = malloc(sizeof *pool);
-   EINA_SAFETY_ON_NULL_RETURN_VAL(pool, 0);
-
-   pool->display = display;
-   pool->callbacks = callbacks;
-   pool->user_data = user_data;
-
-   pool->format_list = NULL;
-   pool->wl_global = wl_global_create(display, &tizen_buffer_pool_interface, 1,
-                                      pool, _e_drm_buffer_pool_cb_bind);
-   if (!pool->wl_global)
-     {
-        free (pool);
-        return 0;
-     }
-
-   return 1;
-}
-
-EAPI E_Drm_Buffer*
-e_drm_buffer_get(struct wl_resource *resource)
-{
-   if (resource == NULL)
-     return NULL;
-
-   if (wl_resource_instance_of(resource, &wl_buffer_interface, &_e_drm_buffer_interface))
-     return wl_resource_get_user_data(resource);
-   else
-     return NULL;
-}
diff --git a/src/bin/e_drm_buffer_pool.h b/src/bin/e_drm_buffer_pool.h
deleted file mode 100644 (file)
index 3129c75..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifdef E_TYPEDEFS
-
-#else
-#ifndef E_BUFFER_POOL_H
-#define E_BUFFER_POOL_H
-
-#include <wayland-server.h>
-
-typedef struct _E_Drm_Buffer_Pool E_Drm_Buffer_Pool;
-
-typedef struct _E_Drm_Buffer
-{
-   int   width, height;
-   uint  format;
-   uint  name[3];
-   int   offset[3];
-   int   stride[3];
-
-   E_Drm_Buffer_Pool *pool;
-   struct wl_resource *resource;
-   void *driver_buffer;
-} E_Drm_Buffer;
-
-typedef struct _E_Drm_Buffer_Callbacks
-{
-   uint  (*get_capbilities)(void *user_data);
-   uint* (*get_formats)(void *user_data, int *format_cnt);
-   void  (*reference_buffer)(void *user_data, E_Drm_Buffer *buffer);
-   void  (*release_buffer)(void *user_data, E_Drm_Buffer *buffer);
-} E_Drm_Buffer_Callbacks;
-
-EAPI int e_drm_buffer_pool_init(struct wl_display *display,
-                                E_Drm_Buffer_Callbacks *callbacks,
-                                void *user_data);
-
-EAPI E_Drm_Buffer *e_drm_buffer_get(struct wl_resource *resource);
-
-#endif
-#endif
index e9fefd27f2b1f017f29946643e2efe2411b07009..305bff80bcdb4a0cd6e043f77289e1aa8a6fd9b0 100755 (executable)
 # include "e_comp_wl_data.h"
 # include "e_comp_wl_input.h"
 # include "e_uuid_store.h"
-# include "e_drm_buffer_pool.h"
 #ifdef HAVE_WAYLAND_TBM
 # include "e_comp_wl_tbm.h"
 #endif
index fa933ba50d7e9d6dc97f83f3e6383151dd1737af..6e4d55f363b7f2893c39299000b74d6f810bd2c7 100644 (file)
@@ -2,6 +2,7 @@
 
 #if defined(HAVE_WAYLAND_CLIENTS) || defined(HAVE_WAYLAND_ONLY)
 # include "e_comp_wl.h"
+# include <wayland-tbm-server.h>
 #include <tizen-extension-server-protocol.h>
 #endif
 #ifndef HAVE_WAYLAND_ONLY
@@ -713,17 +714,17 @@ e_pixmap_resource_set(E_Pixmap *cp, void *resource)
                }
 
           }
-        else if (buffer->type == E_COMP_WL_BUFFER_TYPE_DRM)
+        else if (buffer->type == E_COMP_WL_BUFFER_TYPE_TBM)
           {
-             E_Drm_Buffer *drm_buffer = e_drm_buffer_get(buffer->resource);
              E_Comp_Wl_Data *wl_comp_data = (E_Comp_Wl_Data *)e_comp->wl_comp_data;
+             tbm_surface_h tbm_surf = wayland_tbm_server_get_surface(wl_comp_data->tbm.server, buffer->resource);
 
              buffer->shm_buffer = NULL;
              cp->w = buffer->w;
              cp->h = buffer->h;
-             switch (drm_buffer->format)
+             switch (tbm_surface_get_format(tbm_surf))
                {
-                case TIZEN_BUFFER_POOL_FORMAT_ARGB8888:
+                case TBM_FORMAT_ARGB8888:
                    cp->image_argb = EINA_TRUE;
                    break;
                 default: