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