Hi,

 just for reference: Couldn't persuade the closed source driver to use
vsync with the suggested methods (or setting vblank_mode=1), but
removing the idle routine altogether and implementing redraw with
either tick or timers got rid of the cpu load.

Thanks a lot!

Best,
Orm

Am Sonntag, den 29. Mai 2022 um 19:54:35 Uhr (-0500) schrieb Bart Botta:
> It sounds like you are running without vsync on one of the drivers,
> which means you are displaying frames as fast as you can. "As fast as
> you can" usually means either "100% CPU" or "100% GPU" (sometimes
> "100% RAM or bus bandwidth").
> 
> Check the settings for the driver to see if vsync has been forced to
> off, or defaulting to off.
> 
> I don't think there is an easy way to control vsync from glut (and
> drivers can ignore what programs say anyway), but for a test you can
> try something like:
> 
>   #+unix
>   (let ((p (glut:get-proc-address "glxSwapIntervalEXT")))
>     (unless (cffi:null-pointer-p p)
>       (cffi:foreign-funcall-pointer p () :int 1 :int))) ;; 0 to
> disable vsync, 2 to run at half monitor frame rate, etc
> 
> in glut:display-window :before
> 
> Note that just checking for a null pointer like that is wrong, and you
> should be checking for the presence of the extension first, which
> would require some more work with CFFI to get and parse the glx
> extension string.
> 
> For the case where you aren't drawing anything, I think 100% CPU is
> expected. Per freeglut docs, the idle callback is "called continuously
> from freeglut while no events are received", which sounds like it
> would use 100% CPU. You might try using glut:tick instead (with
> :tick-interval argument to window instance creation), as in the
> shader-vao example, which runs on a timer instead of constantly.
> 
> On Sun, May 29, 2022 at 1:46 PM Orm Finnendahl
> <orm.finnend...@selma.hfmdk-frankfurt.de> wrote:
> >
> > Hi,
> >
> >  I might have been a bit unprecise and I just found out it might be
> > off topic for this list (see below): This is all related to my laptop
> > running an AMD ryzen 7 integrated cpu/gpu on a linux arch system with
> > latest sbcl/slime/emacs.
> >
> > Running (cl-glut-examples:gears) using the open source radeon driver,
> > everything works as expected and the REPL reports a framerate of 60
> > fps.
> >
> > Using the closed source pro driver of amd, the framerate goes up to
> > ca. 1000 fps and the cpu maxes out. Putting a timer in the display
> > function (calling #'glut:post-redisplay), the framerate goes down, but
> > the cpu is still above 100%.
> >
> > I just found out that this is also true for the glxgears program:
> > running it with the open source driver give 60 fps, using it with the
> > pro driver gives 12000 fps and the cpu maxes out.
> >
> > Even as this therefore seems to be more realted to the graphics driver
> > than cl I'd still appreciate if anyone has an idea, how to deal with
> > this...
> >
> >
> > --
> > Orm
> >
> >

Reply via email to