[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#489729: xserver-xorg-video-intel: synchronization with virtical refresh broken after suspend to ram



Package: xserver-xorg-video-intel
Version: 2:2.3.2-2
Severity: normal

Starting with version 2:2.3.2-1 synchronization with virtical refresh
finally works! There is only a minor glitch: after suspend to ram it is
broken: The buffers are swapped at the wrong time.
#!/bin/sh
#| -*- mode: scheme; coding: utf-8; -*- |#
:; exec gosh -A/home/jens/develop/scripts -- $0 "$@"
;;
;; vblank test.  This program is in the public domain.

(use gl)
(use gl.glut)

(define *frames* 0)
(define *offset* 0)
(define *t0*	 0)
(define *width* 0)
(define *height* 0)

(define (draw)
  (gl-clear GL_COLOR_BUFFER_BIT)
  (gl-push-matrix)
  (gl-color 1 1 1)
  (gl-translate *offset* 0 0)
  (gl-begin GL_QUADS)
  (gl-vertex 0 0)
  (gl-vertex 0 *height*)
  (let1 w (+ (quotient *width* 100) 1)
	(gl-vertex w *height*)
	(gl-vertex w 0)
	(gl-end)
	(gl-pop-matrix)
	(glut-swap-buffers)

	(inc! *frames*)
	(set! *offset* (fmod (+ 4 *offset*) *width*))
	;;(set! *offset* (modulo (+ (floor (* w 100)) *offset*) *width*)))
	)

  (let1 t (glut-get GLUT_ELAPSED_TIME)
    (when (>= (- t *t0*) 5000)
      (let1 seconds (/ (- t *t0*) 1000.0)
        (print #`",*frames* in ,seconds seconds = ,(/ *frames* seconds) FPS")
        (set! *t0*	   t)
        (set! *frames* 0)))))

;; new window size or exposure
(define (reshape width height)
  (set! *width* width)
  (set! *height* height)
  ;;*** OpenGL BEGIN ***
  (gl-viewport 0 0 width height)
  (gl-matrix-mode GL_PROJECTION)
  (gl-load-identity)
  (gl-ortho 0 width 0 height 0 100)
  (gl-matrix-mode GL_MODELVIEW)
  (gl-load-identity)
  ;;*** OpenGL END ***
  )

(define (init)
  (newline)
  (print #`"GL_RENDERER	  = ,(gl-get-string GL_RENDERER)")
  (print #`"GL_VERSION	  = ,(gl-get-string GL_VERSION)")
  (print #`"GL_VENDOR	  = ,(gl-get-string GL_VENDOR)")
  (print #`"GL_EXTENSIONS = ,(gl-get-string GL_EXTENSIONS)")
  (newline)
  #|(gl-enable GL_BLEND)
  (gl-enable GL_LINE_SMOOTH)
  (gl-enable GL_POLYGON_SMOOTH)|#
  )

;; change view angle, exit upon ESC 
(define (key k x y)
  (let1 q (lambda () (glut-post-redisplay))
    (cond
     ((= k (char->integer #\escape)) (exit)))))

(define (visible vis)
  (if (= vis GLUT_VISIBLE)
      (glut-idle-func glut-post-redisplay)
      (glut-idle-func #f)))

(define (main args)
  (glut-init args)
  (glut-init-display-mode (logior GLUT_DOUBLE GLUT_RGB))
  (glut-create-window "vblank test")
  (init)
  (glut-display-func	draw)
  (glut-reshape-func	reshape)
  (glut-keyboard-func	key)
  (glut-visibility-func visible)
  
  (glut-main-loop)
  0)

(main '())

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'proposed-updates'), (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-1-686 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages xserver-xorg-video-intel depends on:
ii  libc6                         2.7-10     GNU C Library: Shared libraries
ii  libdrm2                       2.3.0-4    Userspace interface to kernel DRM 
ii  xserver-xorg-core             2:1.4.2-1  Xorg X server - core server

xserver-xorg-video-intel recommends no packages.

-- no debconf information

Reply to: