On Mon, Aug 14, 2017 at 8:55 PM, Leo Liu <leo....@amd.com> wrote:

>
>
> On 08/14/2017 11:19 AM, Gurkirpal Singh wrote:
>
>
>
> On Mon, Aug 14, 2017 at 8:05 PM, Leo Liu <leo....@amd.com> wrote:
>
>>
>>
>> On 08/14/2017 05:46 AM, Julien Isorce wrote:
>>
>> Hi Leo,
>>
>> >It would be better if you can extract the common code between bellagio
>> and tizonia to avoid the duplication.
>>
>> This is something Gurkirpal and me discussed, like having
>> state_trackers/omx/common, state_trackers/omx/bellagio,
>> state_trackers/omx/tizonia. To anticipate that Gurkirpal sent an email
>> https://www.mail-archive.com/mesa-dev@lists.freedeskto
>> p.org/msg153562.html during the Community Bonding period in May (a few
>> weeks from the date (early May) students are officially accepted to the
>> date (end May) where student actually starts working)
>>
>> The problem with the directory layout above is that it would look like it
>> will be built together in the same shared library. This is not good because
>> it is suppose to export OMX_ComponentInit for each target. Of course this
>> would still be possible to have 2 shared libs but I believe in
>> state_trackers dir, all sub dir are for one target. Also we were afraid
>> that there would be other limitations so we decided to go for a separate
>> directory.
>> And since there were no objections in Gurkirpal's mail above we went this
>> way.
>>
>> Now if I look into state_trackers/omx_tizonia, in fact the common code
>> with state_trackers/omx_bellagio does not have anything to do with omx. For
>> example "slice_header". Maybe it can be moved to gallium/auxiliary/vl/ like
>> it is done already for vl_rbsp_init. Same for omx_get_screen.
>>
>> So I suggest this 'factorization' to be not a blocker for merging
>> state_trackers/omx_tizonia into usptream. But later on we can move
>> gradually bits from state_trackers/omx_bellagio to gallium/auxiliary. And
>> then make state_trackers/omx_tizonia use it as well.
>> This way you will only bother about maintaining
>> state_trackers/omx_bellagio the time being. This also allows to not slowly
>> get its work lost.
>>
>> Of course we would have done differently if we knew advance. But as today
>> Gurkirpal won't have enough time to do this factorization/move as the
>> project ends in 1 week. Having all of this merged in upstream is not
>> mandatory to succeed the project but Gurkirpal will need some rest after
>> these 3 months of hard work. And who knows what happens after, whether he
>> will still be around after sometimes or not. And this is entirely up to him.
>>
>> So again I suggest this factorization/move not to be a blocker for the
>> reasons above. What do you think?
>>
>>
>> When the whole project will be completed, as least same status as
>> bellagio? Is there anyone keep working on this project after this step 1?
>>
> Hi, I plan on continuing working on this after the GSoC project ends.
>
>
> Is the GSoC project done with your current patches?
>
> Apart from these patches, at least two more will be needed for the
project. One for adding H.264 enc and other for adding EGLImage support to
H.264 dec.
Since I keep revising the commits quite frequently I'll give the link to
the branch https://github.com/gpalsingh/mesa/commits/gsoc

Cheers

>
> Regards,
> Leo
>
>
>
>> The left stuff compared to bellagio are codecs of mpeg2 and hevc, and
>> encoding that is more important, since the most usage for omx currently is
>> to use transcoding from one codec to another.
>>
>> Other is the transcoding performance,  at least meet the performance of
>> bellagio's.
>>
>> If the above could be addressed at early time,  we could remove Bellagio
>> completely, then there is no need to do any refactor now.
>>
> The original plan was this but making gst-omx  OMX IL 1.2 compatible has
> been a bit time consuming.
>
>>
>>
>> BTW what's the plan for new feature like EGL Images?
>>
> We've been able to make it work but with wrong colours in output. I've
> written more about it and the performance comparison in my blog post here
> https://singhcodes.wordpress.com/2017/08/04/gsoc-2017-third-phase-starts/
> But recently the EGLImage hook stopped working and I've opened the issue
> https://github.com/gpalsingh/mesa/issues/15 to keep track of it.
> This happened after we fixed another issue which made changes to gst-omx
> which might be the cause https://github.com/gpalsingh/mesa/issues/2#
> issuecomment-321839195
> I'm still looking into this.
>
> Cheers
>
>>
>> Regards,
>> Leo
>>
>>
>>
>> Thx
>> Julien
>>
>> On 13 August 2017 at 16:52, Gurkirpal Singh <gurkirpal...@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Sun, Aug 13, 2017 at 8:47 AM, Leo Liu <leo....@amd.com> wrote:
>>>
>>>> Where is the patch 1?
>>>
>>> Sorry for the patches got messed up somehow while sending, I could only
>>> see two patches on mail-archive but three on patchwork.
>>> Tried two times and same result.
>>> About the first one I got a mail saying that it was too large has been
>>> put aside for mod approval.
>>> The changes I made were to just rename the st/omx directory to
>>> st/omx_bellagio (the reason it became large)
>>> and renaming bits in the configure.ac and Makefiles.
>>>
>>>>
>>>>
>>>>
>>>> On 08/12/2017 12:07 PM, Gurkirpal Singh wrote:
>>>>
>>>>> Coexist with --enable-omx so they can be built independently
>>>>> Detect tizonia package config file
>>>>> Generate libomxtiz_mesa.so and install it to libtizcore.pc::pluginsdir
>>>>> Only compile empty source (target.c) for now.
>>>>>
>>>>> v2: Show error message when --enable-omx is used (Christian)
>>>>>      Use single PKG_CHECK_MODULES for omx_tizonia checks (Emil)
>>>>>      Use spaces instead of tabs
>>>>>      Add checks around omx-tizonia
>>>>>
>>>>> GSoC Project link: https://summerofcode.withgoogl
>>>>> e.com/projects/#4737166321123328
>>>>>
>>>>> Signed-off-by: Gurkirpal Singh <gurkirpal...@gmail.com>
>>>>> Reviewed-and-Tested-by: Julien Isorce <julien.iso...@gmail.com>
>>>>> ---
>>>>>   configure.ac                                | 40 ++++++++++++++-
>>>>>   src/gallium/Makefile.am                     |  4 ++
>>>>>   src/gallium/targets/omx-tizonia/Makefile.am | 77
>>>>> +++++++++++++++++++++++++++++
>>>>>   src/gallium/targets/omx-tizonia/omx.sym     | 11 +++++
>>>>>   src/gallium/targets/omx-tizonia/target.c    |  2 +
>>>>>   5 files changed, 132 insertions(+), 2 deletions(-)
>>>>>   create mode 100644 src/gallium/targets/omx-tizonia/Makefile.am
>>>>>   create mode 100644 src/gallium/targets/omx-tizonia/omx.sym
>>>>>   create mode 100644 src/gallium/targets/omx-tizonia/target.c
>>>>>
>>>>> diff --git a/configure.ac b/configure.ac
>>>>> index 38af96a..5669695 100644
>>>>> --- a/configure.ac
>>>>> +++ b/configure.ac
>>>>> @@ -85,6 +85,7 @@ dnl Versions for external dependencies
>>>>>   DRI2PROTO_REQUIRED=2.8
>>>>>   GLPROTO_REQUIRED=1.4.14
>>>>>   LIBOMXIL_BELLAGIO_REQUIRED=0.0
>>>>> +LIBOMXIL_TIZONIA_REQUIRED=0.9.0
>>>>>   LIBVA_REQUIRED=0.38.0
>>>>>   VDPAU_REQUIRED=1.1
>>>>>   WAYLAND_REQUIRED=1.11
>>>>> @@ -1216,14 +1217,19 @@ AC_ARG_ENABLE([vdpau],
>>>>>      [enable_vdpau=auto])
>>>>>   AC_ARG_ENABLE([omx],
>>>>>      [AS_HELP_STRING([--enable-omx],
>>>>> -         [DEPRECATED: Use --enable-omx-bellagio instead
>>>>> @<:@default=auto@:>@])],
>>>>> -   [AC_MSG_ERROR([--enable-omx is deprecated. Use
>>>>> --enable-omx-bellagio instead.])],
>>>>>
>>>>
>>>> Is this in patch 1?
>>>
>>> Yes, it is so.
>>>
>>>>
>>>>
>>>> +         [DEPRECATED: Use --enable-omx-bellagio or
>>>>> --enable-omx-tizonia instead @<:@default=auto@:>@])],
>>>>> +   [AC_MSG_ERROR([--enable-omx is deprecated. Use
>>>>> --enable-omx-bellagio or --enable-omx-tizonia instead.])],
>>>>>      [])
>>>>>   AC_ARG_ENABLE([omx-bellagio],
>>>>>      [AS_HELP_STRING([--enable-omx-bellagio],
>>>>>            [enable OpenMAX Bellagio library @<:@default=disabled@
>>>>> :>@])],
>>>>>      [enable_omx_bellagio="$enableval"],
>>>>>      [enable_omx_bellagio=no])
>>>>> +AC_ARG_ENABLE([omx-tizonia],
>>>>> +   [AS_HELP_STRING([--enable-omx-tizonia],
>>>>> +         [enable OpenMAX Tizonia library @<:@default=disabled@:>@])],
>>>>> +   [enable_omx_tizonia="$enableval"],
>>>>> +   [enable_omx_tizonia=no])
>>>>>   AC_ARG_ENABLE([va],
>>>>>      [AS_HELP_STRING([--enable-va],
>>>>>            [enable va library @<:@default=auto@:>@])],
>>>>> @@ -1275,6 +1281,7 @@ if test "x$enable_opengl" = xno -a \
>>>>>           "x$enable_xvmc" = xno -a \
>>>>>           "x$enable_vdpau" = xno -a \
>>>>>           "x$enable_omx_bellagio" = xno -a \
>>>>> +        "x$enable_omx_tizonia" = xno -a \
>>>>>           "x$enable_va" = xno -a \
>>>>>           "x$enable_opencl" = xno; then
>>>>>       AC_MSG_ERROR([at least one API should be enabled])
>>>>> @@ -2121,6 +2128,10 @@ if test -n "$with_gallium_drivers" -a
>>>>> "x$with_gallium_drivers" != xswrast; then
>>>>>           PKG_CHECK_EXISTS([libomxil-bellagio >=
>>>>> $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx_bellagio=yes],
>>>>> [enable_omx_bellagio=no])
>>>>>       fi
>>>>>   +    if test "x$enable_omx_tizonia" = xauto -a "x$have_omx_platform"
>>>>> = xyes; then
>>>>> +       PKG_CHECK_EXISTS([libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED],
>>>>> [enable_omx_tizonia=yes], [enable_omx_tizonia=no])
>>>>> +    fi
>>>>> +
>>>>>       if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes;
>>>>> then
>>>>>           PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED],
>>>>> [enable_va=yes], [enable_va=no])
>>>>>       fi
>>>>> @@ -2130,6 +2141,7 @@ if test "x$enable_dri" = xyes -o \
>>>>>           "x$enable_xvmc" = xyes -o \
>>>>>           "x$enable_vdpau" = xyes -o \
>>>>>           "x$enable_omx_bellagio" = xyes -o \
>>>>> +        "x$enable_omx_tizonia" = xyes -o \
>>>>>           "x$enable_va" = xyes; then
>>>>>       need_gallium_vl=yes
>>>>>   fi
>>>>> @@ -2138,6 +2150,7 @@ AM_CONDITIONAL(NEED_GALLIUM_VL, test
>>>>> "x$need_gallium_vl" = xyes)
>>>>>   if test "x$enable_xvmc" = xyes -o \
>>>>>           "x$enable_vdpau" = xyes -o \
>>>>>           "x$enable_omx_bellagio" = xyes -o \
>>>>> +        "x$enable_omx_tizonia" = xyes -o \
>>>>>           "x$enable_va" = xyes; then
>>>>>       PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >=
>>>>> $XCBDRI2_REQUIRED])
>>>>>       need_gallium_vl_winsys=yes
>>>>> @@ -2172,6 +2185,18 @@ if test "x$enable_omx_bellagio" = xyes; then
>>>>>   fi
>>>>>   AM_CONDITIONAL(HAVE_ST_OMX_BELLAGIO, test "x$enable_omx_bellagio" =
>>>>> xyes)
>>>>>   +if test "x$enable_omx_tizonia" = xyes; then
>>>>> +    if test "x$have_omx_platform" != xyes; then
>>>>> +        AC_MSG_ERROR([OMX requires at least one of the x11 or drm
>>>>> platforms])
>>>>> +    fi
>>>>> +    PKG_CHECK_MODULES([OMX_TIZONIA],
>>>>> +                      [libtizonia >= $LIBOMXIL_TIZONIA_REQUIRED
>>>>> +                       tizilheaders >= $LIBOMXIL_TIZONIA_REQUIRED
>>>>> +                       libtizplatform >= $LIBOMXIL_TIZONIA_REQUIRED])
>>>>> +    gallium_st="$gallium_st omx_tizonia"
>>>>> +fi
>>>>> +AM_CONDITIONAL(HAVE_ST_OMX_TIZONIA, test "x$enable_omx_tizonia" =
>>>>> xyes)
>>>>> +
>>>>>   if test "x$enable_va" = xyes; then
>>>>>       if test "x$have_va_platform" != xyes; then
>>>>>           AC_MSG_ERROR([VA requires at least one of the x11 drm or
>>>>> wayland platforms])
>>>>> @@ -2342,6 +2367,15 @@ AC_ARG_WITH([omx-bellagio-libdir],
>>>>>                                      $PKG_CONFIG
>>>>> --define-variable=libdir=\$libdir --variable=pluginsdir
>>>>> libomxil-bellagio`])
>>>>>   AC_SUBST([OMX_BELLAGIO_LIB_INSTALL_DIR])
>>>>>   +dnl Directory for OMX_TIZONIA libs
>>>>> +
>>>>> +AC_ARG_WITH([omx-tizonia-libdir],
>>>>> +    [AS_HELP_STRING([--with-omx-tizonia-libdir=DIR],
>>>>> +        [directory for the OMX_TIZONIA libraries])],
>>>>> +    [OMX_TIZONIA_LIB_INSTALL_DIR="$withval"],
>>>>> +    [OMX_TIZONIA_LIB_INSTALL_DIR=`$PKG_CONFIG
>>>>> --define-variable=libdir=\$libdir --variable=pluginsdir libtizcore`])
>>>>> +AC_SUBST([OMX_TIZONIA_LIB_INSTALL_DIR])
>>>>> +
>>>>>   dnl Directory for VA libs
>>>>>     AC_ARG_WITH([va-libdir],
>>>>> @@ -2840,6 +2874,7 @@ AC_CONFIG_FILES([Makefile
>>>>>                    src/gallium/state_trackers/glx/xlib/Makefile
>>>>>                    src/gallium/state_trackers/nine/Makefile
>>>>>                    src/gallium/state_trackers/omx_bellagio/Makefile
>>>>> +                 src/gallium/state_trackers/omx_tizonia/Makefile
>>>>>                    src/gallium/state_trackers/osmesa/Makefile
>>>>>                    src/gallium/state_trackers/va/Makefile
>>>>>                    src/gallium/state_trackers/vdpau/Makefile
>>>>> @@ -2850,6 +2885,7 @@ AC_CONFIG_FILES([Makefile
>>>>>                    src/gallium/targets/dri/Makefile
>>>>>                    src/gallium/targets/libgl-xlib/Makefile
>>>>>                    src/gallium/targets/omx-bellagio/Makefile
>>>>> +                 src/gallium/targets/omx-tizonia/Makefile
>>>>>                    src/gallium/targets/opencl/Makefile
>>>>>                    src/gallium/targets/opencl/mesa.icd
>>>>>                    src/gallium/targets/osmesa/Makefile
>>>>> diff --git a/src/gallium/Makefile.am b/src/gallium/Makefile.am
>>>>> index 2b930ac..e17c679 100644
>>>>> --- a/src/gallium/Makefile.am
>>>>> +++ b/src/gallium/Makefile.am
>>>>> @@ -153,6 +153,10 @@ if HAVE_ST_OMX_BELLAGIO
>>>>>   SUBDIRS += state_trackers/omx_bellagio targets/omx-bellagio
>>>>>   endif
>>>>>   +if HAVE_ST_OMX_TIZONIA
>>>>> +SUBDIRS += state_trackers/omx_tizonia targets/omx-tizonia
>>>>> +endif
>>>>> +
>>>>>
>>>>
>>>> So now we have 2 OMX ST under gallium state trackers
>>>>
>>>> Is possible that we could have both tizonia and bellagio  as
>>>> sub-directory under st/omx?, so that they could share the same Makefile.am,
>>>> Makefile.source, and entrypoint.[ch] etc.
>>>> even maybe same idea for gallium/target?
>>>>
>>>> Regards,
>>>> Leo
>>>>
>>>> The original plan was to completely replace the existing OMX IL ST
>>> however porting wasn't that straightforward since the new OMX IL version
>>> breaks backward compatibility.
>>> I think Julien will be able to expain better here.
>>>
>>> So the plan is still to replace the ST but for now we've postponed that
>>> task until all the components have been ported. As it is now we'll later
>>> just remove omx_bellagio and rename omx_tizonia to omx.
>>> I think that merging them both will make the transition a little bit
>>> harder.
>>>
>>> So maybe if you still insist can we mark it as good-to-have for later?
>>> Actually Julien gave the same idea earlier when we started on the project
>>> and decided to postpone it for later due to project time restraints.
>>>
>>> Cheers
>>>
>>>
>>>>
>>>>   if HAVE_GALLIUM_OSMESA
>>>>>   SUBDIRS += state_trackers/osmesa targets/osmesa
>>>>>   endif
>>>>> diff --git a/src/gallium/targets/omx-tizonia/Makefile.am
>>>>> b/src/gallium/targets/omx-tizonia/Makefile.am
>>>>> new file mode 100644
>>>>> index 0000000..6baacaa
>>>>> --- /dev/null
>>>>> +++ b/src/gallium/targets/omx-tizonia/Makefile.am
>>>>> @@ -0,0 +1,77 @@
>>>>> +include $(top_srcdir)/src/gallium/Automake.inc
>>>>> +
>>>>> +AM_CFLAGS = \
>>>>> +       $(GALLIUM_TARGET_CFLAGS)
>>>>> +
>>>>> +omxdir = $(OMX_TIZONIA_LIB_INSTALL_DIR)
>>>>> +omx_LTLIBRARIES = libomxtiz_mesa.la
>>>>> +
>>>>> +nodist_EXTRA_libomxtiz_mesa_la_SOURCES = dummy.cpp
>>>>> +libomxtiz_mesa_la_SOURCES =
>>>>> +
>>>>> +libomxtiz_mesa_la_LDFLAGS = \
>>>>> +       -shared \
>>>>> +       -module \
>>>>> +       -no-undefined \
>>>>> +       -avoid-version \
>>>>> +       $(GC_SECTIONS) \
>>>>> +       $(LD_NO_UNDEFINED)
>>>>> +
>>>>> +if HAVE_LD_VERSION_SCRIPT
>>>>> +libomxtiz_mesa_la_LDFLAGS += \
>>>>> +       -Wl,--version-script=$(top_srcdir)/src/gallium/targets/omx-
>>>>> tizonia/omx.sym
>>>>> +endif # HAVE_LD_VERSION_SCRIPT
>>>>> +
>>>>> +libomxtiz_mesa_la_LIBADD = \
>>>>> +       $(top_builddir)/src/gallium/state_trackers/omx_tizonia/libo
>>>>> mxtiztracker.la \
>>>>> +       $(top_builddir)/src/gallium/auxiliary/libgalliumvlwinsys.la \
>>>>> +       $(top_builddir)/src/gallium/auxiliary/libgalliumvl.la \
>>>>> +       $(top_builddir)/src/gallium/auxiliary/libgallium.la \
>>>>> +       $(top_builddir)/src/util/libmesautil.la \
>>>>> +       $(OMX_TIZONIA_LIBS) \
>>>>> +       $(OMX_TIZILHEADERS_LIBS) \
>>>>> +       $(OMX_TIZPLATFORM_LIBS) \
>>>>> +       $(LIBDRM_LIBS) \
>>>>> +       $(GALLIUM_COMMON_LIB_DEPS)
>>>>> +
>>>>> +if HAVE_PLATFORM_X11
>>>>> +libomxtiz_mesa_la_LIBADD += \
>>>>> +       $(VL_LIBS) \
>>>>> +       $(XCB_DRI3_LIBS)
>>>>> +endif
>>>>> +
>>>>> +EXTRA_libomxtiz_mesa_la_DEPENDENCIES = omx.sym
>>>>> +EXTRA_DIST = omx.sym
>>>>> +
>>>>> +if HAVE_GALLIUM_STATIC_TARGETS
>>>>> +
>>>>> +TARGET_DRIVERS =
>>>>> +TARGET_CPPFLAGS =
>>>>> +TARGET_LIB_DEPS =
>>>>> +
>>>>> +
>>>>> +include $(top_srcdir)/src/gallium/drivers/nouveau/Automake.inc
>>>>> +
>>>>> +include $(top_srcdir)/src/gallium/drivers/r600/Automake.inc
>>>>> +include $(top_srcdir)/src/gallium/drivers/radeonsi/Automake.inc
>>>>> +
>>>>> +libomxtiz_mesa_la_SOURCES += target.c
>>>>> +libomxtiz_mesa_la_CPPFLAGS = $(TARGET_CPPFLAGS)
>>>>> +libomxtiz_mesa_la_LIBADD += \
>>>>> +       $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_l
>>>>> oader_static.la \
>>>>> +       $(GALLIUM_PIPE_LOADER_WINSYS_LIBS) \
>>>>> +       $(TARGET_LIB_DEPS) \
>>>>> +       $(TARGET_COMPILER_LIB_DEPS) \
>>>>> +       $(TARGET_RADEON_WINSYS) $(TARGET_RADEON_COMMON)
>>>>> +
>>>>> +else # HAVE_GALLIUM_STATIC_TARGETS
>>>>> +
>>>>> +libomxtiz_mesa_la_LIBADD += \
>>>>> +       $(top_builddir)/src/gallium/auxiliary/pipe-loader/libpipe_l
>>>>> oader_dynamic.la
>>>>> +
>>>>> +endif # HAVE_GALLIUM_STATIC_TARGETS
>>>>> +
>>>>> +if HAVE_GALLIUM_LLVM
>>>>> +libomxtiz_mesa_la_LIBADD += $(LLVM_LIBS)
>>>>> +libomxtiz_mesa_la_LDFLAGS += $(LLVM_LDFLAGS)
>>>>> +endif
>>>>> diff --git a/src/gallium/targets/omx-tizonia/omx.sym
>>>>> b/src/gallium/targets/omx-tizonia/omx.sym
>>>>> new file mode 100644
>>>>> index 0000000..2aafb29
>>>>> --- /dev/null
>>>>> +++ b/src/gallium/targets/omx-tizonia/omx.sym
>>>>> @@ -0,0 +1,11 @@
>>>>> +{
>>>>> +       global:
>>>>> +               OMX_ComponentInit;
>>>>> +
>>>>> +               # Workaround for an LLVM warning with
>>>>> -simplifycfg-sink-common
>>>>> +               # due to LLVM being initialized multiple times.
>>>>> +               radeon_drm_winsys_create;
>>>>> +               amdgpu_winsys_create;
>>>>> +       local:
>>>>> +               *;
>>>>> +};
>>>>> diff --git a/src/gallium/targets/omx-tizonia/target.c
>>>>> b/src/gallium/targets/omx-tizonia/target.c
>>>>> new file mode 100644
>>>>> index 0000000..308e23b
>>>>> --- /dev/null
>>>>> +++ b/src/gallium/targets/omx-tizonia/target.c
>>>>> @@ -0,0 +1,2 @@
>>>>> +#include "target-helpers/drm_helper.h"
>>>>> +#include "target-helpers/sw_helper.h"
>>>>>
>>>>
>>>>
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>>
>>
>>
>
>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to