On Mon, Jan 15, 2018 at 9:24 PM, Leo Liu <leo....@amd.com> wrote:

> Hi lists,
>
>
> If there is no more questions, and no objection, I would like to commit
> this new OMX st. to upstream.
>
> @Gurkipal, If you can send me or lists your rebased patches set for
> committing, that would be appreciated.
>
I wanted to know if it's required to test the patches before sending them.
I've since then switched to a laptop with NVIDIA card and have limited
access to the desktop with the AMD card (that i used to work on during the
project).
So I'm unable to test the encoder on this machine right now. It could take
a few  weeks until I could do so.

>
> Leo
>
> On 12/04/2017 08:58 AM, Leo Liu wrote:
>
>
>
> On 12/03/2017 10:04 AM, Gurkirpal Singh wrote:
>
> I sent the modified patches in another thread a while ago.
> Please review in case got missed.
>
> Please be patient for a few days to see if any other comments.
> After then please rebase, add rb/ab to your patches, and send them to me,
> I will commit them for you.
>
> Leo
>
>
>
> On Thu, Nov 30, 2017 at 7:35 PM, Leo Liu <leo....@amd.com> wrote:
>
>>
>>
>> On 11/30/2017 06:22 AM, Julien Isorce wrote:
>>
>> Hi Gurkirpal,
>>
>> > Before refactoring process both the state trackers were in independent
>> directories.
>> > During earlier refactoring effort we decided to keep that directory
>> structure so it made
>> > sense to move them to auxiliary code. After that I moved them both
>> under st/omx.
>> > Since there could be a chance of it being useful out of st/omx, I left
>> the decision to
>> > keep it or move it back to st/omx to the mailing list.
>>
>> Yes please move it back to st/omx for the reasons you said, i.e. there
>> will now 2
>> sub directories, st/omx/bellagio and st/omx/tizonia and common code in
>> st/omx.
>>
>> Yes. Please move them back to st/omx.
>>
>> With that fixed, the series are:
>>
>> Acked-by: Leo Liu <leo....@amd.com> <leo....@amd.com>
>>
>> Thanks for the work!
>>
>> Leo
>>
>>
>>
>>
>> Another reason is that the env var "OMX_RENDER_NODE" mentions OMX.
>>
>> Thx!
>> Julien
>>
>>
>> On 29 November 2017 at 04:02, Gurkirpal Singh <gurkirpal...@gmail.com>
>> wrote:
>>
>>> ---
>>>  src/gallium/auxiliary/Makefile.sources             |   2 +
>>>  src/gallium/auxiliary/vl/vl_screen.c               | 107
>>> +++++++++++++++++++++
>>>  src/gallium/auxiliary/vl/vl_screen.h               |  33 +++++++
>>>  .../state_trackers/omx_bellagio/entrypoint.c       |  83
>>> ----------------
>>>  .../state_trackers/omx_bellagio/entrypoint.h       |   3 -
>>>  src/gallium/state_trackers/omx_bellagio/vid_dec.c  |   5 +-
>>>  src/gallium/state_trackers/omx_bellagio/vid_enc.c  |   5 +-
>>>  7 files changed, 148 insertions(+), 90 deletions(-)
>>>  create mode 100644 src/gallium/auxiliary/vl/vl_screen.c
>>>  create mode 100644 src/gallium/auxiliary/vl/vl_screen.h
>>>
>>> diff --git a/src/gallium/auxiliary/Makefile.sources
>>> b/src/gallium/auxiliary/Makefile.sources
>>> index f40c472..35e89f9 100644
>>> --- a/src/gallium/auxiliary/Makefile.sources
>>> +++ b/src/gallium/auxiliary/Makefile.sources
>>> @@ -343,6 +343,8 @@ VL_SOURCES := \
>>>         vl/vl_mpeg12_decoder.c \
>>>         vl/vl_mpeg12_decoder.h \
>>>         vl/vl_rbsp.h \
>>> +       vl/vl_screen.c \
>>> +       vl/vl_screen.h \
>>>         vl/vl_types.h \
>>>         vl/vl_vertex_buffers.c \
>>>         vl/vl_vertex_buffers.h \
>>> diff --git a/src/gallium/auxiliary/vl/vl_screen.c
>>> b/src/gallium/auxiliary/vl/vl_screen.c
>>> new file mode 100644
>>> index 0000000..7192802
>>> --- /dev/null
>>> +++ b/src/gallium/auxiliary/vl/vl_screen.c
>>> @@ -0,0 +1,107 @@
>>> +/**********************************************************
>>> ****************
>>> + *
>>> + * 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, sub license, 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
>>> NON-INFRINGEMENT.
>>> + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
>>> + *
>>> + ************************************************************
>>> **************/
>>> +
>>> +#include <assert.h>
>>> +#include <string.h>
>>> +#include <stdbool.h>
>>> +
>>> +#include "os/os_thread.h"
>>> +#include "util/u_memory.h"
>>> +#include "loader/loader.h"
>>> +#include "vl_screen.h"
>>> +
>>> +#if defined(HAVE_X11_PLATFORM)
>>> +#include <X11/Xlib.h>
>>> +#else
>>> +#define XOpenDisplay(x) NULL
>>> +#define XCloseDisplay(x)
>>> +#define Display void
>>> +#endif
>>> +
>>> +static mtx_t st_lock = _MTX_INITIALIZER_NP;
>>> +static Display *st_display = NULL;
>>> +static struct vl_screen *st_screen = NULL;
>>> +static unsigned st_usecount = 0;
>>> +static const char *st_render_node = NULL;
>>> +static int drm_fd;
>>> +
>>> +struct vl_screen *vl_get_screen(const char* render_node)
>>> +{
>>> +   static bool first_time = true;
>>> +   mtx_lock(&st_lock);
>>> +
>>> +   if (!st_screen) {
>>> +      if (first_time) {
>>> +         st_render_node = debug_get_option(render_node, NULL);
>>> +         first_time = false;
>>> +      }
>>> +      if (st_render_node) {
>>> +         drm_fd = loader_open_device(st_render_node);
>>> +         if (drm_fd < 0)
>>> +            goto error;
>>> +
>>> +         st_screen = vl_drm_screen_create(drm_fd);
>>> +         if (!st_screen) {
>>> +            close(drm_fd);
>>> +            goto error;
>>> +         }
>>> +      } else {
>>> +         st_display = XOpenDisplay(NULL);
>>> +         if (!st_display)
>>> +            goto error;
>>> +
>>> +         st_screen = vl_dri3_screen_create(st_display, 0);
>>> +         if (!st_screen)
>>> +            st_screen = vl_dri2_screen_create(st_display, 0);
>>> +         if (!st_screen) {
>>> +            XCloseDisplay(st_display);
>>> +            goto error;
>>> +         }
>>> +      }
>>> +   }
>>> +
>>> +   ++st_usecount;
>>> +
>>> +   mtx_unlock(&st_lock);
>>> +   return st_screen;
>>> +
>>> +error:
>>> +   mtx_unlock(&st_lock);
>>> +   return NULL;
>>> +}
>>> +
>>> +void vl_put_screen(void)
>>> +{
>>> +   mtx_lock(&st_lock);
>>> +   if ((--st_usecount) == 0) {
>>> +      st_screen->destroy(st_screen);
>>> +      st_screen = NULL;
>>> +
>>> +      if (st_render_node)
>>> +         close(drm_fd);
>>> +      else
>>> +         XCloseDisplay(st_display);
>>> +   }
>>> +   mtx_unlock(&st_lock);
>>> +}
>>> diff --git a/src/gallium/auxiliary/vl/vl_screen.h
>>> b/src/gallium/auxiliary/vl/vl_screen.h
>>> new file mode 100644
>>> index 0000000..1e14775
>>> --- /dev/null
>>> +++ b/src/gallium/auxiliary/vl/vl_screen.h
>>> @@ -0,0 +1,33 @@
>>> +/**********************************************************
>>> ****************
>>> + *
>>> + * 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, sub license, 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
>>> NON-INFRINGEMENT.
>>> + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS 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.
>>> + *
>>> + ************************************************************
>>> **************/
>>> +
>>> +#ifndef VL_VL_SCREEN_H
>>> +#define VL_VL_SCREEN_H
>>> +
>>> +#include "vl_winsys.h"
>>> +
>>> +struct vl_screen *vl_get_screen(const char* render_node);
>>> +void vl_put_screen(void);
>>> +
>>> +#endif
>>> diff --git a/src/gallium/state_trackers/omx_bellagio/entrypoint.c
>>> b/src/gallium/state_trackers/omx_bellagio/entrypoint.c
>>> index 251cc7d..5c75e8d 100644
>>> --- a/src/gallium/state_trackers/omx_bellagio/entrypoint.c
>>> +++ b/src/gallium/state_trackers/omx_bellagio/entrypoint.c
>>> @@ -31,33 +31,10 @@
>>>   *
>>>   */
>>>
>>> -#include <assert.h>
>>> -#include <string.h>
>>> -#include <stdbool.h>
>>> -
>>> -#if defined(HAVE_X11_PLATFORM)
>>> -#include <X11/Xlib.h>
>>> -#else
>>> -#define XOpenDisplay(x) NULL
>>> -#define XCloseDisplay(x)
>>> -#define Display void
>>> -#endif
>>> -
>>> -#include "os/os_thread.h"
>>> -#include "util/u_memory.h"
>>> -#include "loader/loader.h"
>>> -
>>>  #include "entrypoint.h"
>>>  #include "vid_dec.h"
>>>  #include "vid_enc.h"
>>>
>>> -static mtx_t omx_lock = _MTX_INITIALIZER_NP;
>>> -static Display *omx_display = NULL;
>>> -static struct vl_screen *omx_screen = NULL;
>>> -static unsigned omx_usecount = 0;
>>> -static const char *omx_render_node = NULL;
>>> -static int drm_fd;
>>> -
>>>  int omx_component_library_Setup(stLoaderComponentType **stComponents)
>>>  {
>>>     OMX_ERRORTYPE r;
>>> @@ -78,66 +55,6 @@ int omx_component_library_Setup(stLoaderComponentType
>>> **stComponents)
>>>     return 2;
>>>  }
>>>
>>> -struct vl_screen *omx_get_screen(void)
>>> -{
>>> -   static bool first_time = true;
>>> -   mtx_lock(&omx_lock);
>>> -
>>> -   if (!omx_screen) {
>>> -      if (first_time) {
>>> -         omx_render_node = debug_get_option("OMX_RENDER_NODE", NULL);
>>> -         first_time = false;
>>> -      }
>>> -      if (omx_render_node) {
>>> -         drm_fd = loader_open_device(omx_render_node);
>>> -         if (drm_fd < 0)
>>> -            goto error;
>>> -
>>> -         omx_screen = vl_drm_screen_create(drm_fd);
>>> -         if (!omx_screen) {
>>> -            close(drm_fd);
>>> -            goto error;
>>> -         }
>>> -      } else {
>>> -         omx_display = XOpenDisplay(NULL);
>>> -         if (!omx_display)
>>> -            goto error;
>>> -
>>> -         omx_screen = vl_dri3_screen_create(omx_display, 0);
>>> -         if (!omx_screen)
>>> -            omx_screen = vl_dri2_screen_create(omx_display, 0);
>>> -         if (!omx_screen) {
>>> -            XCloseDisplay(omx_display);
>>> -            goto error;
>>> -         }
>>> -      }
>>> -   }
>>> -
>>> -   ++omx_usecount;
>>> -
>>> -   mtx_unlock(&omx_lock);
>>> -   return omx_screen;
>>> -
>>> -error:
>>> -   mtx_unlock(&omx_lock);
>>> -   return NULL;
>>> -}
>>> -
>>> -void omx_put_screen(void)
>>> -{
>>> -   mtx_lock(&omx_lock);
>>> -   if ((--omx_usecount) == 0) {
>>> -      omx_screen->destroy(omx_screen);
>>> -      omx_screen = NULL;
>>> -
>>> -      if (omx_render_node)
>>> -         close(drm_fd);
>>> -      else
>>> -         XCloseDisplay(omx_display);
>>> -   }
>>> -   mtx_unlock(&omx_lock);
>>> -}
>>> -
>>>  OMX_ERRORTYPE omx_workaround_Destructor(OMX_COMPONENTTYPE *comp)
>>>  {
>>>     omx_base_component_PrivateType* priv =
>>> (omx_base_component_PrivateType*)comp->pComponentPrivate;
>>> diff --git a/src/gallium/state_trackers/omx_bellagio/entrypoint.h
>>> b/src/gallium/state_trackers/omx_bellagio/entrypoint.h
>>> index 7625d7a..d566d1e 100644
>>> --- a/src/gallium/state_trackers/omx_bellagio/entrypoint.h
>>> +++ b/src/gallium/state_trackers/omx_bellagio/entrypoint.h
>>> @@ -40,9 +40,6 @@
>>>
>>>  PUBLIC extern int omx_component_library_Setup(stLoaderComponentType
>>> **stComponents);
>>>
>>> -struct vl_screen *omx_get_screen(void);
>>> -void omx_put_screen(void);
>>> -
>>>  OMX_ERRORTYPE omx_workaround_Destructor(OMX_COMPONENTTYPE *comp);
>>>
>>>  #endif
>>> diff --git a/src/gallium/state_trackers/omx_bellagio/vid_dec.c
>>> b/src/gallium/state_trackers/omx_bellagio/vid_dec.c
>>> index f9fe19f..b62c705 100644
>>> --- a/src/gallium/state_trackers/omx_bellagio/vid_dec.c
>>> +++ b/src/gallium/state_trackers/omx_bellagio/vid_dec.c
>>> @@ -50,6 +50,7 @@
>>>  #include "util/u_surface.h"
>>>  #include "vl/vl_video_buffer.h"
>>>  #include "vl/vl_vlc.h"
>>> +#include "vl/vl_screen.h"
>>>
>>>  #include "entrypoint.h"
>>>  #include "vid_dec.h"
>>> @@ -173,7 +174,7 @@ static OMX_ERRORTYPE 
>>> vid_dec_Constructor(OMX_COMPONENTTYPE
>>> *comp, OMX_STRING nam
>>>     comp->SetParameter = vid_dec_SetParameter;
>>>     comp->GetParameter = vid_dec_GetParameter;
>>>
>>> -   priv->screen = omx_get_screen();
>>> +   priv->screen = vl_get_screen("OMX_RENDER_NODE");
>>>     if (!priv->screen)
>>>        return OMX_ErrorInsufficientResources;
>>>
>>> @@ -253,7 +254,7 @@ static OMX_ERRORTYPE 
>>> vid_dec_Destructor(OMX_COMPONENTTYPE
>>> *comp)
>>>     }
>>>
>>>     if (priv->screen)
>>> -      omx_put_screen();
>>> +      vl_put_screen();
>>>
>>>     return omx_workaround_Destructor(comp);
>>>  }
>>> diff --git a/src/gallium/state_trackers/omx_bellagio/vid_enc.c
>>> b/src/gallium/state_trackers/omx_bellagio/vid_enc.c
>>> index 1a4fb62..40e7a0f 100644
>>> --- a/src/gallium/state_trackers/omx_bellagio/vid_enc.c
>>> +++ b/src/gallium/state_trackers/omx_bellagio/vid_enc.c
>>> @@ -50,6 +50,7 @@
>>>  #include "pipe/p_video_codec.h"
>>>  #include "util/u_memory.h"
>>>  #include "vl/vl_video_buffer.h"
>>> +#include "vl/vl_screen.h"
>>>
>>>  #include "entrypoint.h"
>>>  #include "vid_enc.h"
>>> @@ -170,7 +171,7 @@ static OMX_ERRORTYPE 
>>> vid_enc_Constructor(OMX_COMPONENTTYPE
>>> *comp, OMX_STRING nam
>>>     comp->GetConfig = vid_enc_GetConfig;
>>>     comp->SetConfig = vid_enc_SetConfig;
>>>
>>> -   priv->screen = omx_get_screen();
>>> +   priv->screen = vl_get_screen("OMX_RENDER_NODE");
>>>     if (!priv->screen)
>>>        return OMX_ErrorInsufficientResources;
>>>
>>> @@ -296,7 +297,7 @@ static OMX_ERRORTYPE 
>>> vid_enc_Destructor(OMX_COMPONENTTYPE
>>> *comp)
>>>        priv->t_pipe->destroy(priv->t_pipe);
>>>
>>>     if (priv->screen)
>>> -      omx_put_screen();
>>> +      vl_put_screen();
>>>
>>>     return omx_workaround_Destructor(comp);
>>>  }
>>> --
>>> 2.7.4
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>>>
>>
>>
>>
>> _______________________________________________
>> mesa-dev mailing 
>> listmesa-dev@lists.freedesktop.orghttps://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