[PATCH] Cygwin/X: Fix windres rule for automake silent rules

2010-02-21 Thread Yaakov (Cygwin/X)
From: Yaakov Selkowitz yselkow...@users.sourceforge.net

Signed-off-by: Yaakov Selkowitz yselkow...@users.sourceforge.net
---
 hw/xwin/Makefile.am |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/hw/xwin/Makefile.am b/hw/xwin/Makefile.am
index 26cae92..6d8f823 100644
--- a/hw/xwin/Makefile.am
+++ b/hw/xwin/Makefile.am
@@ -152,7 +152,7 @@ XWin_DEPENDENCIES = $(XWIN_LIBS)
 XWin_LDADD = $(MULTIWINDOWEXTWM_LIBS) $(XWIN_LIBS) $(MAIN_LIB) $(XSERVER_LIBS) 
$(XSERVER_SYS_LIBS) $(XWIN_SYS_LIBS)
 
 .rc.o:
-   $(WINDRES) --use-temp-file -i $ --input-format=rc -o $@ -O coff -I 
$(top_builddir)/include
+   $(AM_V_GEN)$(WINDRES) --use-temp-file -i $ --input-format=rc -o $@ -O 
coff -I $(top_builddir)/include
 
 XWin_LDFLAGS = -mwindows -static
 
-- 
1.6.6.1

___
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel


Re: [PATCH] Cygwin/X: Fix windres rule for automake silent rules

2010-02-21 Thread Rémi Cardona
Le 21/02/2010 09:10, Yaakov (Cygwin/X) a écrit :
 From: Yaakov Selkowitz yselkow...@users.sourceforge.net
 
 Signed-off-by: Yaakov Selkowitz yselkow...@users.sourceforge.net

Reviewed-by: Rémi Cardona r...@gentoo.org

Cheers
___
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel


Improvements to Intel DDX for implementation of DRI2 OML_sync_control extensions.

2010-02-21 Thread Mario Kleiner
This series of 2 patches fixes issues in the Intel DDX implementation
of I830DRI2ScheduleWaitMSC() and I830DRI2ScheduleSwap().

The previous implementation should mostly work in the simple
glXSwapBuffers() case, although it may reduce the maximum
swaprate to half the video refresh interval, e.g., max 30 fps
at a refresh of 60 Hz. It won't work correctly for the
glXSwapBuffersMscOML(target_msc, divisor, remainder) case if
divisor or remainder are non-zero or target_msc is not  2
frames ahead of the current vblank count. It doesn't handle
the (msc % divisor) == remainder case correctly.

A similar problem exists for calls to glXWaitForMscOML().

These patches should fix above issues, or at least make
handling more robust.

Jesse Barnes already had a look at these patches, but due to
lack of suitable hardware, i haven't tested them myself, not
even if they compile cleanly.

Could somebody please give them some good testing and merge
them if appropriate?

Thanks,
-mario

___
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel


[PATCH xf86-video-intel 2/2] Fix handling of target_msc, divisor, remainder in I830DRI2ScheduleSwap()

2010-02-21 Thread Mario Kleiner
The current code in I830DRI2ScheduleSwap() only schedules the
correct vblank events for the case divisor == 0, i.e., the
simple glXSwapBuffers() case.

In a glXSwapBuffersMscOML() request, divisor can be  0, which would go
wrong.

This modified code should handle target_msc, divisor, remainder and
the different cases defined in the OML_sync_control extension
correctly for the divisor  0 case.

It also tries to make sure that the effective framecount of swap satisfies
all constraints, taking the 1 frame delay in pageflipping mode and possible
delays in blitting/exchange mode due to DRM_VBLANK_NEXTONMISS into account.

The swap_interval logic in the X-Servers DRI2SwapBuffers() call expects
the returned swap_target from the DDX to be reasonably accurate, otherwise
implementation of swap_interval for the glXSwapBuffers() as defined in the
SGI_swap_interval extension may become unreliable.

For non-pageflipped mode, the returned swap_target is always correct due to the
adjustments done by drmWaitVBlank(), as DRM_VBLANK_NEXTONMISS is set.

In pageflipped mode, DRM_VBLANK_NEXTONMISS can't be used without
severe impact on performance, so the code in I830DRI2ScheduleSwap()
must make manual adjustments to the returned vbl.reply.sequence number.

This patch adds the needed adjustments.

Signed-off-by: Mario Kleiner mario.klei...@tuebingen.mpg.de
---
 src/i830_dri.c |  110 +++
 1 files changed, 70 insertions(+), 40 deletions(-)

diff --git a/src/i830_dri.c b/src/i830_dri.c
index d5e085a..f3cd739 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -586,6 +586,7 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, 
DRI2BufferPtr front,
int ret, pipe = I830DRI2DrawablePipe(draw), flip = 0;
DRI2FrameEventPtr swap_info;
enum DRI2FrameEventType swap_type = DRI2_SWAP;
+   CARD64 current_msc;
 
swap_info = xcalloc(1, sizeof(DRI2FrameEventRec));
 
@@ -629,6 +630,8 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, 
DRI2BufferPtr front,
return FALSE;
}
 
+   current_msc = vbl.reply.sequence;
+
/* Flips need to be submitted one frame before */
if (DRI2CanFlip(draw)  !intel-shadow_present 
intel-use_pageflipping) {
@@ -638,55 +641,81 @@ I830DRI2ScheduleSwap(ClientPtr client, DrawablePtr draw, 
DRI2BufferPtr front,
 
swap_info-type = swap_type;
 
+   /* Correct target_msc by 'flip' if swap_type == DRI2_FLIP.
+* Do it early, so handling of different timing constraints
+* for divisor, remainder and msc vs. target_msc works.
+*/
+   if (*target_msc  0)
+   *target_msc -= flip;
+   
/*
-* If divisor is zero, we just need to make sure target_msc passes
-* before waking up the client.
+* If divisor is zero, or current_msc is smaller than target_msc,
+* we just need to make sure target_msc passes before initiating the 
swap.
 */
-   if (divisor == 0) {
-   vbl.request.type = DRM_VBLANK_NEXTONMISS |
-   DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT;
-   if (pipe  0)
-   vbl.request.type |= DRM_VBLANK_SECONDARY;
-
-   vbl.request.sequence = *target_msc;
-   vbl.request.sequence -= flip;
-   vbl.request.signal = (unsigned long)swap_info;
-   ret = drmWaitVBlank(intel-drmSubFD, vbl);
-   if (ret) {
-   xf86DrvMsg(scrn-scrnIndex, X_WARNING,
-  divisor 0 get vblank counter failed: %s\n,
-  strerror(errno));
-   return FALSE;
-   }
-
-   *target_msc = vbl.reply.sequence;
-   swap_info-frame = *target_msc;
-
-   return TRUE;
+   if (divisor == 0 || current_msc  *target_msc) {
+   vbl.request.type = DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT;
+   /* If non-pageflipping, but blitting/exchanging, we need to use
+* DRM_VBLANK_NEXTONMISS to avoid unreliable timestamping later on.
+*/
+   if (flip == 0)
+   vbl.request.type |= DRM_VBLANK_NEXTONMISS;
+   if (pipe  0)
+   vbl.request.type |= DRM_VBLANK_SECONDARY;
+   
+   /* If target_msc already reached or passed, set it to
+* current_msc to ensure we return a reasonable value back
+* to the caller. This makes swap_interval logic more robust.
+*/
+   if (current_msc = *target_msc)
+   *target_msc = current_msc;
+   
+   vbl.request.sequence = *target_msc;
+   vbl.request.signal = (unsigned long)swap_info;
+   ret = drmWaitVBlank(intel-drmSubFD, vbl);
+   if (ret) {
+   xf86DrvMsg(scrn-scrnIndex, X_WARNING,
+  divisor 0 get vblank counter failed: %s\n,
+   

[PATCH xf86-video-intel 1/2] Fix I830DRI2ScheduleWaitMSC() to correctly handle target_msc, divisor and remainder.

2010-02-21 Thread Mario Kleiner
Previous code only handled divisor == 0 case correctly. This should
honor a given target_msc for the divisor  0 case and handle the
(msc % divisor) == remainder constraint correctly.

Signed-off-by: Mario Kleiner mario.klei...@tuebingen.mpg.de
---
 src/i830_dri.c |   19 +++
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/i830_dri.c b/src/i830_dri.c
index e1c1470..d5e085a 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -756,6 +756,7 @@ I830DRI2ScheduleWaitMSC(ClientPtr client, DrawablePtr draw, 
CARD64 target_msc,
 DRI2FrameEventPtr wait_info;
 drmVBlank vbl;
 int ret, pipe = I830DRI2DrawablePipe(draw);
+CARD64 current_msc;
 
 /* Drawable not visible, return immediately */
 if (pipe == -1) {
@@ -785,11 +786,13 @@ I830DRI2ScheduleWaitMSC(ClientPtr client, DrawablePtr 
draw, CARD64 target_msc,
return FALSE;
 }
 
+current_msc = vbl.reply.sequence;
+
 /*
- * If divisor is zero, we just need to make sure target_msc passes
- * before waking up the client.
+ * If divisor is zero, or current_msc is smaller than target_msc,
+ * we just need to make sure target_msc passes before waking up the client.
  */
-if (divisor == 0) {
+if (divisor == 0 || current_msc  target_msc) {
vbl.request.type = DRM_VBLANK_ABSOLUTE | DRM_VBLANK_EVENT;
if (pipe  0)
vbl.request.type |= DRM_VBLANK_SECONDARY;
@@ -815,16 +818,16 @@ I830DRI2ScheduleWaitMSC(ClientPtr client, DrawablePtr 
draw, CARD64 target_msc,
 if (pipe  0)
vbl.request.type |= DRM_VBLANK_SECONDARY;
 
+vbl.request.sequence = current_msc - (current_msc % divisor) + remainder;
+
 /*
- * If we have no remainder and the condition isn't satisified, it means
+ * If calculated remainder is larger than requested remainder, it means
  * we've passed the last point where seq % divisor == remainder, so we need
  * to wait for the next time that will happen.
  */
-if (((vbl.reply.sequence % divisor) != remainder)  !remainder)
-   vbl.request.sequence += divisor;
+if ((current_msc % divisor)  remainder)
+   vbl.request.sequence += divisor;
 
-vbl.request.sequence = vbl.reply.sequence - (vbl.reply.sequence % divisor) 
+
-   remainder;
 vbl.request.signal = (unsigned long)wait_info;
 ret = drmWaitVBlank(intel-drmSubFD, vbl);
 if (ret) {
-- 
1.6.6

___
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel


[PATCH] RECORD patch, SetDeviceMode cleanup

2010-02-21 Thread Peter Hutterer
Keith,

please pull from my repo. Only two patches this time, the
SetDeviceMode one and - finally - the patch re-enabling RECORD.
Thanks.

Cheers,
  Peter

The following changes since commit 4e8bf12b13690afa6d9fee0e339d3819ef16fb3f:
  Jeremy Huddleston (1):
XQuartz: Fix a possible buffer overrun in quartzAudio

are available in the git repository at:

  git://people.freedesktop.org/~whot/xserver.git for-keith

Chris Dekter (1):
  Re-enable RECORD extension.

Peter Hutterer (1):
  Xi: assume BadMode for non-BadMatch errors returned from SetDeviceMode.

 Xi/exevents.c  |   13 +++--
 Xi/setmode.c   |   10 
 dix/events.c   |   15 +++---
 include/dix.h  |6 +-
 include/eventconvert.h |6 +-
 record/record.c|  123 +++-
 6 files changed, 101 insertions(+), 72 deletions(-)
___
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel