From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ptmx.org (ptmx.org [178.63.28.110]) by yocto-www.yoctoproject.org (Postfix) with ESMTP id C1143E009C4 for ; Thu, 3 Apr 2014 03:32:08 -0700 (PDT) Received: from [10.1.14.248] (unknown [91.114.0.140]) by ptmx.org (Postfix) with ESMTPSA id 8CC4F24F78; Thu, 3 Apr 2014 12:32:06 +0200 (CEST) Message-ID: <533D38A6.2050404@pseudoterminal.org> Date: Thu, 03 Apr 2014 12:32:06 +0200 From: Carlos Rafael Giani User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: meta-freescale@yoctoproject.org References: <533D37E3.9070109@pr.hu> In-Reply-To: <533D37E3.9070109@pr.hu> Subject: Re: Sync to V-blank X-BeenThere: meta-freescale@yoctoproject.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Usage and development list for the meta-fsl-* layers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Apr 2014 10:32:12 -0000 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit This X11 vsync problem has been bugging several people, and to date, there is no proper solution (other than to use framebuffer directly instead, or switch to Wayland). Eric Nelson mentioned details about this, as well as a possible workaround. I appended his email here: ================================================= On 03/18/2014 02:39 PM, Carlos Rafael Giani wrote: > Hello, > > in the past, there has always been a problem with vsync, OpenGL ES > output, and X11. Very noticeable tearing affects all such applications. > So far, neither Vivante nor Freescale have ever commented on this. Is > there anything known? Should the newest drivers fix this? You have odd timing. I was just looking into this today for a customer. In our kernels and the Freescale kernels. there seems to be an issue with the default allocation of the frame-buffer, such that only space for a single buffer is present. http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/drivers/video/mxc/mxc_ipuv3_fb.c?h=imx_3.0.35_4.1.0#n862 Without a larger allocation, I don't think the frame buffer driver has any way of swapping cleanly at vertical sync. The 3.10.17-beta kernel seems to do the same thing: http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/drivers/video/mxc/mxc_ipuv3_fb.c?h=imx_3.10.17_1.0.0_beta#n870 You can see this at run-time by looking in /sys/class/graphics/fb0/virtual_size. # cat /sys/class/graphics/fb0/mode U:1280x800p-59 # cat /sys/class/graphics/fb0/virtual_size 1280,800 You can also alter things by using sysfs: # echo 1280,1600 > /sys/class/graphics/fb0/virtual_size After changing the size, the FBIO_PAN ioctl does the right thing. i.e.: variable_info.yoffset = x; err = ioctl(fdfb,FBIOPAN_DISPLAY,&variable_info); And you can see the same thing using /sys/class/graphics/fb0/pan. It's not clear to me who should be doing this though. In an X environment, I would expect this to be controlled through xorg.conf somehow, but my attempts to get fbdev and shadowfb proved fruitless. I haven't had a chance to look into the Vivante X driver and I'm not sure where the OpenGL stack this should be performed, but since the timing really has to be coordinated by the frame-buffer, there should be a call somewhere. In my immediate customer case, using the frame buffer calls directly is sufficient. Regards, Eric