src/bin/displaymgr/e_hwc_window_queue.c \
src/bin/displaymgr/video/e_video_hwc.c \
src/bin/displaymgr/video/e_video_hwc_windows.c \
-src/bin/displaymgr/video/e_video_external.c \
src/bin/displaymgr/video/e_video_fallback.c \
src/bin/utils/e_env.c \
src/bin/utils/e_path.c \
-#include "e_zone_video_intern.h"
#include "e_client_video_intern.h"
#include "e_comp_wl_intern.h"
#include "e_zone_intern.h"
#include "e_comp_wl_subsurface_intern.h"
#include "e_video_debug_intern.h"
#include "e_video_hwc_intern.h"
-#include "e_video_external_intern.h"
#include "e_video_fallback_intern.h"
#include "e_comp_wl_rsm_intern.h"
#include "e_eom_intern.h"
_e_client_video_comp_iface_init(E_Client_Video *ecv)
{
E_Video_Comp_Iface *iface = NULL;
- E_Hwc_Policy hwc_pol;
-
- hwc_pol = e_zone_video_hwc_policy_get(ecv->zone);
-
- if ((e_config->eom_enable == EINA_TRUE) && (e_eom_is_ec_external(ecv->ec)) &&
- (hwc_pol == E_HWC_POLICY_PLANES))
- {
- VIN("Try to intialize external interface", ecv->ec);
- iface = e_video_external_iface_create(ecv);
- goto end;
- }
if (e_video_debug_display_primary_plane_value_get())
{
goto end;
}
- if (hwc_pol != E_HWC_POLICY_NONE)
- {
- VIN("Initialize the interface of the client_video for HWC mode", ecv->ec);
- iface = e_video_hwc_iface_create(ecv);
- if (iface)
- e_video_hwc_render_fail_callback_set(iface, _e_client_video_cb_hwc_render_fail);
- }
+ VIN("Initialize the interface of the client_video for HWC mode", ecv->ec);
+ iface = e_video_hwc_iface_create(ecv);
+ if (iface)
+ e_video_hwc_render_fail_callback_set(iface, _e_client_video_cb_hwc_render_fail);
end:
if (!iface)
-#include "e_zone_video_intern.h"
#include "e_comp_screen_intern.h"
#include "e_display_intern.h"
return EINA_TRUE;
}
-EINTERN E_Hwc_Policy
-e_zone_video_hwc_policy_get(E_Zone *zone)
-{
- E_Output *eout;
-
- eout = e_output_find(zone->output_id);
- if (!eout)
- {
- ERR("Something wrong, couldn't find 'E_Output' from 'E_Zone'");
- return E_HWC_POLICY_NONE;
- }
-
- return e_hwc_policy_get(eout->hwc);
-}
+++ /dev/null
-#ifndef E_ZONE_VIDEO_INTERN_H
-#define E_ZONE_VIDEO_INTERN_H
-
-#include "e_intern.h"
-#include "e_zone_video.h"
-
-EINTERN E_Hwc_Policy e_zone_video_hwc_policy_get(E_Zone *zone);
-
-#endif
+++ /dev/null
-#include "e_video_external_intern.h"
-
-typedef struct _E_Video_External E_Video_External;
-
-struct _E_Video_External
-{
- E_Video_Comp_Iface base;
- E_Client_Video *ecv;
-};
-
-static void
-_e_video_external_iface_destroy(E_Video_Comp_Iface *iface)
-{
- E_Video_External *eve;
-
- eve = container_of(iface, E_Video_External, base);
- e_client_video_hw_composition_unset(eve->ecv);
-
- free(eve);
-}
-
-static void
-_e_video_external_init(E_Client_Video *ecv)
-{
- e_client_video_hw_composition_set(ecv);
-}
-
-EINTERN E_Video_Comp_Iface *
-e_video_external_iface_create(E_Client_Video *ecv)
-{
- E_Video_External *eve;
-
- INF("Intializing External Compositing mode");
-
- eve = E_NEW(E_Video_External, 1);
- if (!eve)
- {
- ERR("Failed to create E_Video_External");
- return NULL;
- }
-
- _e_video_external_init(ecv);
-
- eve->ecv = ecv;
- eve->base.destroy = _e_video_external_iface_destroy;
-
- return &eve->base;
-}
+++ /dev/null
-#ifndef E_VIDEO_EXTERNAL_INTERN_H
-#define E_VIDEO_EXTERNAL_INTERN_H
-
-#include "e_intern.h"
-#include "e_video_comp_iface.h"
-
-/* For external interface */
-EINTERN E_Video_Comp_Iface *e_video_external_iface_create(E_Client_Video *ecv);
-
-#endif
-#include "e_zone_video_intern.h"
#include "e_client_video_intern.h"
#include "e_video_hwc_intern.h"
#include "e_comp_screen_intern.h"
need_hide = EINA_TRUE;
}
- if (eina_list_data_find(evh->bqueue, vbuf))
- {
- VIN("waiting fb destroyed", evh->ec);
- evh->bqueue = eina_list_remove(evh->bqueue, vbuf);
- }
-
if (need_hide)
evh->backend.buffer_commit(evh, NULL);
}
if (evh->committed_vbuf == vbuf)
evh->committed_vbuf = NULL;
- evh->bqueue = eina_list_remove(evh->bqueue, vbuf);
-
evh->pp_buffer_list = eina_list_remove(evh->pp_buffer_list, vbuf);
}
}
if (evh->pp_buffer_list)
NEVER_GET_HERE();
-
- if (evh->bqueue)
- NEVER_GET_HERE();
}
}
return EINA_TRUE;
}
-static void
-_e_video_hwc_buffer_enqueue(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf)
-{
- /* Remove enqueued video buffer first. */
- evh->bqueue = eina_list_remove(evh->bqueue, vbuf);
- evh->bqueue = eina_list_append(evh->bqueue, vbuf);
- VDB("There are waiting fbs more than 1", evh->ec);
-}
-
-static E_Comp_Wl_Video_Buf *
-_e_video_hwc_buffer_dequeue(E_Video_Hwc *evh)
-{
- E_Comp_Wl_Video_Buf *vbuf;
-
- if (!evh->bqueue)
- return NULL;
-
- vbuf = eina_list_nth(evh->bqueue, 0);
- evh->bqueue = eina_list_remove(evh->bqueue, vbuf);
-
- return vbuf;
-}
-
-static void
-_e_video_hwc_wait_buffer_commit(E_Video_Hwc *evh)
-{
- E_Comp_Wl_Video_Buf *vbuf;
-
- /* committed_vbuf has to be null */
- EINA_SAFETY_ON_FALSE_RETURN(evh->committed_vbuf == NULL);
-
- vbuf = _e_video_hwc_buffer_dequeue(evh);
- if (!vbuf)
- return;
-
- _e_video_hwc_buffer_commit(evh, vbuf);
-}
-
static void
_e_video_hwc_buffer_commit(E_Video_Hwc *evh, E_Comp_Wl_Video_Buf *vbuf)
{
no_commit:
_e_video_hwc_current_fb_update(evh);
- _e_video_hwc_wait_buffer_commit(evh);
}
static void
if (vbuf->comp_buffer)
e_comp_wl_buffer_reference(&vbuf->buffer_ref, vbuf->comp_buffer);
- if ((evh->hwc_policy == E_HWC_POLICY_PLANES) && (evh->committed_vbuf))
- _e_video_hwc_buffer_enqueue(evh, vbuf);
- else
- _e_video_hwc_buffer_commit(evh, vbuf);
+ _e_video_hwc_buffer_commit(evh, vbuf);
}
static void
_e_video_hwc_hide(E_Video_Hwc *evh)
{
- E_Comp_Wl_Video_Buf *vbuf;
-
if ((evh->current_fb) || (evh->committed_vbuf))
{
if (evh->current_fb)
if (evh->old_comp_buffer)
evh->old_comp_buffer = NULL;
-
- EINA_LIST_FREE(evh->bqueue, vbuf)
- e_comp_wl_video_buffer_set_use(vbuf, EINA_FALSE);
}
static Eina_Rectangle
{
IFACE_ENTRY;
- if (evh->hwc_policy != E_HWC_POLICY_WINDOWS)
- return EINA_FALSE;
return e_video_hwc_windows_info_get(evh, info);
}
{
IFACE_ENTRY;
- if (evh->hwc_policy != E_HWC_POLICY_WINDOWS)
- return EINA_FALSE;
return e_video_hwc_windows_commit_data_release(evh, sequence, tv_sec, tv_usec);
}
{
IFACE_ENTRY;
- if (evh->hwc_policy != E_HWC_POLICY_WINDOWS)
- return NULL;
return e_video_hwc_windows_tbm_surface_get(evh);
}
_e_video_hwc_create(E_Client *ec)
{
E_Video_Hwc *evh;
- E_Hwc_Policy hwc_policy;
E_Output *output;
E_Zone *zone;
E_View_Client* view_client;
return NULL;
}
- hwc_policy = e_zone_video_hwc_policy_get(zone);
- if (hwc_policy == E_HWC_POLICY_WINDOWS)
- evh = e_video_hwc_windows_create(output, ec);
- else
- {
- VER("Unknown HWC mode %d", ec, hwc_policy);
- return NULL;
- }
-
+ evh = e_video_hwc_windows_create(output, ec);
if (!evh)
{
VER("Failed to create 'E_Video_Hwc'", ec);
if (view_client)
e_view_client_size_set(view_client, 1, 1);
- evh->hwc_policy = hwc_policy;
evh->e_output = output;
evh->ec = ec;
return _e_video_hwc_current_fb_update(evh);
}
-EINTERN void
-e_video_hwc_wait_buffer_commit(E_Video_Hwc *evh)
-{
- _e_video_hwc_wait_buffer_commit(evh);
-}
-
EINTERN void
e_video_hwc_client_mask_update(E_Video_Hwc *evh)
{
E_Video_Comp_Iface iface;
E_Video_Hwc_Iface backend;
- E_Hwc_Policy hwc_policy;
-
E_Client_Video *ecv;
E_Client *ec;
E_Output *e_output;
* And when it's committed, it will be moved to committed_list.
* Finally when the commit handler is called, it will become current_fb.
*/
- Eina_List *bqueue; /* A queue for buffer which will have to be committed next time. */
E_Comp_Wl_Video_Buf *committed_vbuf; /* A committed video buffer to backend */
E_Comp_Wl_Video_Buf *current_fb; /* buffer which is showing on screen currently */
EINTERN void e_video_hwc_render_fail_callback_set(E_Video_Comp_Iface *iface, E_Video_Hwc_Render_Fail_Cb func);
/* Functions for HWC */
-EINTERN void e_video_hwc_wait_buffer_commit(E_Video_Hwc *evh);
EINTERN void e_video_hwc_client_mask_update(E_Video_Hwc *evh);
EINTERN Eina_Bool e_video_hwc_current_fb_update(E_Video_Hwc *evh);
evhw = (E_Video_Hwc_Windows *)evh;
evhw->commit_data.wait_release = EINA_FALSE;
- if (e_video_hwc_current_fb_update(evh))
- e_video_hwc_wait_buffer_commit(evh);
+ e_video_hwc_current_fb_update(evh);
return EINA_TRUE;
}
#include "e_info_server_intern.h"
#include "e_comp_wl_intern.h"
#include "e_comp_wl_video_buffer_intern.h"
-#include "e_zone_video_intern.h"
#include "e_comp_wl_intern.h"
#include "e_comp_wl_viewport_intern.h"
#include "e_utils_intern.h"
#include "e_client_intern.h"
#include "e_view_intern.h"
#include "e_view_client_intern.h"
+#include "e_zone_video.h"
#include <tizen-extension-server-protocol.h>