All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gary Thomas <samoht.yrag@gmail.com>
To: Otavio Salvador <otavio@ossystems.com.br>
Cc: "meta-freescale@yoctoproject.org" <meta-freescale@yoctoproject.org>
Subject: Re: [meta-fsl-arm][PATCH 0/2] Fixes for current state of 1.4
Date: Wed, 19 Dec 2012 12:09:18 -0700	[thread overview]
Message-ID: <50D210DE.2070202@gmail.com> (raw)
In-Reply-To: <CAP9ODKrWenqMK2gY2q4G4NZJAkyuSGzwPgTQKCixawOps+AEjg@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5411 bytes --]

On 2012-12-19 11:39, Otavio Salvador wrote:
> On Wed, Dec 19, 2012 at 4:36 PM, Gary Thomas <samoht.yrag@gmail.com> wrote:
>> On 2012-12-19 11:26, Gary Thomas wrote:
>>>
>>> On 2012-12-19 11:11, Otavio Salvador wrote:
>>>>
>>>> On Wed, Dec 19, 2012 at 1:52 PM, Gary Thomas <samoht.yrag@gmail.com>
>>>> wrote:
>>>>>
>>>>> On 2012-12-19 08:35, Otavio Salvador wrote:
>>>>>>
>>>>>>
>>>>>> On Wed, Dec 19, 2012 at 1:22 PM, Gary Thomas <samoht.yrag@gmail.com>
>>>>>> wrote:
>>>>>> ...
>>>>>>>
>>>>>>>
>>>>>>> Thanks, I'm now using the yoctoproject.org repository and can see the
>>>>>>> recent changes.
>>>>>>>
>>>>>>> Sadly though, I can't build X11 drivers - full log attached.
>>>>>>> | In file included from ./vivante_util/vivante_common.h:69:0,
>>>>>>> |                  from vivante_fbdev/vivante_fbdev_driver.c:23:
>>>>>>> |
>>>>>>>
>>>>>>>
>>>>>>> /home/local/imx6_poky/tmp/sysroots/sabrelite/usr/include/xorg/fbdevhw.h:50:23:
>>>>>>> note: declared here
>>>>>>> | vivante_fbdev/vivante_fbdev_driver.c:780:26: warning: assignment
>>>>>>> from
>>>>>>> incompatible pointer type [enabled by default]
>>>>>>> | vivante_fbdev/vivante_fbdev_driver.c: In function 'VivCloseScreen':
>>>>>>> | vivante_fbdev/vivante_fbdev_driver.c:826:5: warning: passing
>>>>>>> argument 1
>>>>>>> of
>>>>>>> 'pScreen->CloseScreen' makes pointer from integer without a cast
>>>>>>> [enabled
>>>>>>> by
>>>>>>> default]
>>>>>>> | vivante_fbdev/vivante_fbdev_driver.c:826:5: note: expected
>>>>>>> 'ScreenPtr'
>>>>>>> but
>>>>>>> argument is of type 'int'
>>>>>>> | vivante_fbdev/vivante_fbdev_driver.c:826:5: error: too many
>>>>>>> arguments
>>>>>>> to
>>>>>>> function 'pScreen->CloseScreen'
>>>>>>> | make[2]: *** [vivante_fbdev_driver.lo] Error 1
>>>>>>> | make[2]: *** Waiting for unfinished jobs....
>>>>>>> | make[2]: Leaving directory
>>>>>>>
>>>>>>>
>>>>>>> `/home/local/imx6_poky/tmp/work/sabrelite-amltd-linux-gnueabi/xf86-video-imxfb-vivante/2_12.09.01-r20.1/xserver-xorg-video-imx-viv-12.09.01/src'
>>>>>>> | make[1]: *** [all-recursive] Error 1
>>>>>>> | make[1]: Leaving directory
>>>>>>>
>>>>>>>
>>>>>>> `/home/local/imx6_poky/tmp/work/sabrelite-amltd-linux-gnueabi/xf86-video-imxfb-vivante/2_12.09.01-r20.1/xserver-xorg-video-imx-viv-12.09.01'
>>>>>>>
>>>>>>> Any ideas?  Maybe I've missed something else.
>>>>>>>
>>>>>>
>>>>>> It seems xf86 api changes; you need to check the change in API and
>>>>>> prepare a patch to the driver ... otherwise I can do it ...
>>>>>
>>>>>
>>>>>
>>>>> OK, I'll look at this.  I had expected this to already work, based on
>>>>> the earlier comments, but no problem.
>>>>
>>>>
>>>> I've researched how to make it in a flexible way and I found
>>>>
>>>> http://cgit.freedesktop.org/xorg/driver/xf86-video-geode/commit/?id=a83fcb6f84995dc50b8adffc27e264a663fbd606
>>>>
>>>> So it's adviced to use a compat-api.h header that allows it to be
>>>> usable in old and new Xorg API's.
>>>
>>>
>>> Thanks.  I found much the same and have already integrated this method.
>>> I'll send a patch for it soon.
>>
>>
>> This may take some time.  While it does now build, it immediately dies
>> with a segmentation violation.
>
> You might have did a wrong replace for a macro and then pass a wrong
> param; another thing, when adding the patch in the commit please add:
>
> Upstream-Status: Pending
>
> So we can grep for it later and propose for merge.

I think I may need to pass this on to you - it's blowing up during the very
initial steps.  Here's my GDB backtrace:
Program received signal SIGSEGV, Segmentation fault.
VivScreenInit (scrnIndex=scrnIndex@entry=1930440, pScreen=pScreen@entry=0x1, argc=argc@entry=2130705924,
     argv=<optimized out>) at vivante_fbdev/vivante_fbdev_driver.c:615
615     vivante_fbdev/vivante_fbdev_driver.c: No such file or directory.
(gdb) dir tmp/work/sabrelite-amltd-linux-gnueabi/xf86-video-imxfb-vivante/2_12.09.01-r20.1/xserver-xorg-video-imx-viv-12.09.01/src/vivante_fbdev
Source directories searched: 
/home/local/imx6_poky/tmp/work/sabrelite-amltd-linux-gnueabi/xf86-video-imxfb-vivante/2_12.09.01-r20.1/xserver-xorg-video-imx-viv-12.09.01/src/vivante_fbdev:$cdir:$cwd
(gdb) l
610         TRACE_EXIT(TRUE);
611     }
612
613     static Bool
614     VivScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) {
615         ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
616         VivPtr fPtr = GET_VIV_PTR(pScrn);
617         VisualPtr visual;
618         int init_picture = 0;
619         int ret, flags;
(gdb) bt
#0  VivScreenInit (scrnIndex=scrnIndex@entry=1930440, pScreen=pScreen@entry=0x1, argc=argc@entry=2130705924,
     argv=<optimized out>) at vivante_fbdev/vivante_fbdev_driver.c:615
#1  0x0003689c in AddScreen (pfnInit=0x2af556f0 <VivScreenInit>, argc=1, argc@entry=509968, argv=0x7efffe04,
     argv@entry=0x6df14 <xf86SetDGAMode>) at dispatch.c:3830
#2  0x000755fc in InitOutput (pScreenInfo=0x1aa870 <nmajor>, pScreenInfo@entry=0x1b5c88 <screenInfo>, argc=509968,
     argc@entry=1, argv=0x6df14 <xf86SetDGAMode>, argv@entry=0x25fec <main+596>) at xf86Init.c:882
#3  0x00025fec in main (argc=1, argv=0x25fec <main+596>, envp=<optimized out>) at main.c:204

Looks like there are more than the [cosmetic] changes I made for CloseScreen().

My preliminary patch is attached, maybe you can help.


[-- Attachment #2: 0001-Fix-build-errors-due-to-changes-in-API.patch --]
[-- Type: text/x-patch, Size: 9820 bytes --]

From 80fb4b97f6e58d70ac9575324703d8a9376224ca Mon Sep 17 00:00:00 2001
From: Gary Thomas <gary@mlbassoc.com>
Date: Wed, 19 Dec 2012 12:06:15 -0700
Subject: [PATCH] Fix build errors due to changes in API

---
 .../fix-vivante-build.patch                        |  196 ++++++++++++++++++++
 .../xf86-video-imxfb-vivante_12.09.01.bb           |    1 +
 2 files changed, 197 insertions(+)
 create mode 100644 recipes-graphics/xorg-driver/xf86-video-imxfb-vivante/fix-vivante-build.patch

diff --git a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante/fix-vivante-build.patch b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante/fix-vivante-build.patch
new file mode 100644
index 0000000..ac3d0e1
--- /dev/null
+++ b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante/fix-vivante-build.patch
@@ -0,0 +1,196 @@
+diff -uNr xserver-xorg-video-imx-viv-12.09.01/src/vivante_fbdev/vivante_dri.h xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_fbdev/vivante_dri.h
+--- xserver-xorg-video-imx-viv-12.09.01/src/vivante_fbdev/vivante_dri.h	2012-08-21 03:51:17.000000000 -0600
++++ xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_fbdev/vivante_dri.h	2012-12-19 10:58:25.612916840 -0700
+@@ -67,7 +67,7 @@
+ } vvtDeviceInfo;
+ 
+ Bool VivDRIScreenInit(ScreenPtr pScreen);
+-void VivDRICloseScreen(ScreenPtr pScreen);
++void VivDRICloseScreen(CLOSE_SCREEN_ARGS_DECL);
+ Bool VivDRIFinishScreenInit(ScreenPtr pScreen);
+ 
+ #endif /* _VIVANTE_DRI_H_ */
+diff -uNr xserver-xorg-video-imx-viv-12.09.01/src/vivante_fbdev/vivante_fbdev_driver.c xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_fbdev/vivante_fbdev_driver.c
+--- xserver-xorg-video-imx-viv-12.09.01/src/vivante_fbdev/vivante_fbdev_driver.c	2012-08-21 03:51:17.000000000 -0600
++++ xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_fbdev/vivante_fbdev_driver.c	2012-12-19 11:26:03.246916879 -0700
+@@ -19,7 +19,6 @@
+ *****************************************************************************/
+ 
+ 
+-
+ #include "vivante_common.h"
+ #include "vivante.h"
+ #include "vivante_exa.h"
+@@ -56,7 +55,7 @@
+ static Bool VivPreInit(ScrnInfoPtr pScrn, int flags);
+ static Bool VivScreenInit(int Index, ScreenPtr pScreen, int argc,
+         char **argv);
+-static Bool VivCloseScreen(int scrnIndex, ScreenPtr pScreen);
++static Bool VivCloseScreen(CLOSE_SCREEN_ARGS_DECL);
+ static Bool VivDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op,
+         pointer ptr);
+ 
+@@ -651,7 +650,7 @@
+         TRACE_EXIT(FALSE);
+     }
+     fbdevHWSaveScreen(pScreen, SCREEN_SAVER_ON);
+-    fbdevHWAdjustFrame(scrnIndex, 0, 0, 0);
++    fbdevHWAdjustFrame(FBDEVHWADJUSTFRAME_ARGS(0, 0));
+ 
+ 
+ 
+@@ -799,18 +798,18 @@
+ }
+ 
+ static Bool
+-VivCloseScreen(int scrnIndex, ScreenPtr pScreen) {
+-    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++VivCloseScreen(CLOSE_SCREEN_ARGS_DECL) {
++    CLOSE_SCREEN_DECL_ScrnInfoPtr;
+     VivPtr fPtr = GET_VIV_PTR(pScrn);
+     Bool ret = FALSE;
+     TRACE_ENTER();
+ 
+-    VivDRICloseScreen(pScreen);
++    VivDRICloseScreen(CLOSE_SCREEN_ARGS);
+ 
+     if (fPtr->mFakeExa.mUseExaFlag) {
+         DEBUGP("UnLoading EXA");
+         if (fPtr->mFakeExa.mIsInited && !DestroyExaLayer(pScreen)) {
+-            xf86DrvMsg(scrnIndex, X_ERROR,
++            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                     "internal error: DestroyExaLayer failed "
+                     "in VivCloseScreen()\n");
+         }
+@@ -823,7 +822,7 @@
+ 
+     pScreen->CreateScreenResources = fPtr->CreateScreenResources;
+     pScreen->CloseScreen = fPtr->CloseScreen;
+-    ret = (*pScreen->CloseScreen)(scrnIndex, pScreen);
++    ret = (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS);
+     TRACE_EXIT(ret);
+ }
+ 
+diff -uNr xserver-xorg-video-imx-viv-12.09.01/src/vivante_util/compat-api.h xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_util/compat-api.h
+--- xserver-xorg-video-imx-viv-12.09.01/src/vivante_util/compat-api.h	1969-12-31 17:00:00.000000000 -0700
++++ xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_util/compat-api.h	2012-12-19 11:26:03.894917071 -0700
+@@ -0,0 +1,106 @@
++/*
++ * Copyright 2012 Red Hat, Inc.
++ *
++ * 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.
++ *
++ * Author: Dave Airlie <airlied@redhat.com>
++ */
++
++/* this file provides API compat between server post 1.13 and pre it,
++   it should be reused inside as many drivers as possible */
++#ifndef COMPAT_API_H
++#define COMPAT_API_H
++
++#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
++#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
++#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
++#endif
++
++#ifndef XF86_HAS_SCRN_CONV
++#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
++#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
++#endif
++
++#ifndef XF86_SCRN_INTERFACE
++
++#define SCRN_ARG_TYPE int
++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = xf86Screens[(arg1)]
++
++#define SCREEN_ARG_TYPE int
++#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)]
++
++#define SCREEN_INIT_ARGS_DECL int index, ScreenPtr pScreen, int argc, char **argv
++
++#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask
++#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask
++
++#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen
++#define CLOSE_SCREEN_ARGS scrnIndex, pScreen
++#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
++
++#define FBDEVHWADJUSTFRAME_ARGS(x, y) scrnIndex, (x), (y), 0
++
++#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
++
++#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
++
++#define FREE_SCREEN_ARGS_DECL int arg, int flags
++#define FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0
++
++#define VT_FUNC_ARGS_DECL int arg, int flags
++#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags)
++
++#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn->scrnIndex, b
++
++#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
++#else
++#define SCRN_ARG_TYPE ScrnInfoPtr
++#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1)
++
++#define SCREEN_ARG_TYPE ScreenPtr
++#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1)
++
++#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv
++
++#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask
++#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask
++
++#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen
++#define CLOSE_SCREEN_ARGS pScreen
++#define CLOSE_SCREEN_DECL_ScrnInfoPtr ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
++
++#define FBDEVHWADJUSTFRAME_ARGS(x, y) pScrn, (x), (y)
++
++#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
++#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
++
++#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
++#define FREE_SCREEN_ARGS(x) (x)
++
++#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
++#define VT_FUNC_ARGS(flags) pScrn
++
++#define ENABLE_DISABLE_FB_ACCESS_ARGS(pScrn, b) pScrn, b
++
++#define XF86_ENABLEDISABLEFB_ARG(x) (x)
++
++#endif
++
++#endif
+diff -uNr xserver-xorg-video-imx-viv-12.09.01/src/vivante_util/vivante_common.h xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_util/vivante_common.h
+--- xserver-xorg-video-imx-viv-12.09.01/src/vivante_util/vivante_common.h	2012-08-21 03:51:17.000000000 -0600
++++ xserver-xorg-video-imx-viv-12.09.01.NEW/src/vivante_util/vivante_common.h	2012-12-19 11:04:45.162911723 -0700
+@@ -76,6 +76,9 @@
+ #include "xf86Crtc.h"
+ #include "cursorstr.h"
+ 
++    /* System API compatability */
++#include "compat-api.h"
++
+     /*Debug*/
+ #include "vivante_debug.h"
+ 
diff --git a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_12.09.01.bb b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_12.09.01.bb
index 2b0d0a0..798e450 100644
--- a/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_12.09.01.bb
+++ b/recipes-graphics/xorg-driver/xf86-video-imxfb-vivante_12.09.01.bb
@@ -10,6 +10,7 @@ DEPENDS += "virtual/libx11 virtual/libgal-x11 gpu-viv-bin-mx6q"
 LIC_FILES_CHKSUM = "file://src/vivante_fbdev/vivante.h;endline=19;md5=93a322f91ec495569dcbcfbb2a95454a"
 
 SRC_URI = "${FSL_MIRROR}/xserver-xorg-video-imx-viv-${PV}.tar.gz \
+           file://fix-vivante-compile.patch \
            file://Makefile.am-remove-prefixed-include-path.patch"
 SRC_URI[md5sum] = "1948119717aa01bed1f630be9ee7a708"
 SRC_URI[sha256sum] = "5b3be4b426d2d2803554df9e4d8919d1f9d17659c3153c71c6529f43c37e6ed1"
-- 
1.7.9.5


  reply	other threads:[~2012-12-19 19:08 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-18 22:37 [meta-fsl-arm][PATCH 0/2] Fixes for current state of 1.4 Otavio Salvador
2012-12-18 22:37 ` [meta-fsl-arm][PATCH 1/2] udev: Drop bbappend as Meta-OpenEmbedded does not has it anymore Otavio Salvador
2012-12-19 12:33   ` Daiane Angolini
2012-12-18 22:37 ` [meta-fsl-arm][PATCH 2/2] README: Update for current state regarding master branch Otavio Salvador
2012-12-19 12:32   ` Daiane Angolini
2012-12-19 12:31 ` [meta-fsl-arm][PATCH 0/2] Fixes for current state of 1.4 Daiane Angolini
2012-12-19 12:35   ` Otavio Salvador
2012-12-19 12:41     ` Otavio Salvador
2012-12-19 12:45       ` Daiane Angolini
2012-12-19 12:53       ` Gary Thomas
2012-12-19 12:55         ` Otavio Salvador
2012-12-19 15:22           ` Gary Thomas
2012-12-19 15:35             ` Otavio Salvador
2012-12-19 15:52               ` Gary Thomas
2012-12-19 18:11                 ` Otavio Salvador
2012-12-19 18:26                   ` Gary Thomas
2012-12-19 18:36                     ` Gary Thomas
2012-12-19 18:39                       ` Otavio Salvador
2012-12-19 19:09                         ` Gary Thomas [this message]
2012-12-19 19:16                           ` Otavio Salvador
2012-12-19 19:57                             ` Gary Thomas
2012-12-19 19:57                               ` Otavio Salvador

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50D210DE.2070202@gmail.com \
    --to=samoht.yrag@gmail.com \
    --cc=meta-freescale@yoctoproject.org \
    --cc=otavio@ossystems.com.br \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.