Chris Rankin wrote:
--- Brian Paul <[EMAIL PROTECTED]> wrote:

Any application which depends upon the root window
having particular GLX attributes is in error.


It's a screensaver. Using the root window would seem
to be a requirement here. So what you're really saying
is "Who cares if you can't perform OpenGL / direct
rendering on the root window?". And the answer is
"Everyone who runs xscreensaver, for a start!".

I'm not trying to marginalize the problem you found. It's just that OpenGL drivers for Linux can come from many sources (XFree86/DRI, NVIDIA, ATI, Xi, etc) and there's no guarantee that any of them will give you a root window with particular GLX attributes. Sometimes you might get lucky.


[I've lost count of how many times this has come up over the years, BTW.]

If you'd have changed cards in your system and found this problem would you be as upset? Or, suppose you started running your X server at a different default resolution and the GLX visuals changed.


Do other graphics cards have this problem?

Probably. I use NVIDIA's cards/drivers for a project that I work on and it's not unusual to see that the list of GLX visuals changes from one driver release to the next.



You have just killed OpenGL screensavers
with the G400, for example, and goodness knows
what else.

*I* did? Give me a break.


That's "you" as in "DRI developers". Not "you"
personally. (Not to my knowledge, anyway.)


You can play semantics and say it isn't a bug,
but it is definitely a regression that will be
very unpopular with a lot of Matrox users.

I wouldn't call it a regression either.


Did work before, doesn't work now. That's the very
*definition* of a regression.

If something changes, but the new behaviour is still within specificied operational parameters, I guess I don't consider that a regression.


A concrete example of a similar user experience happened a while back when I changed the default maximum 3D texture size in Mesa. It was unrealistically large (I don't remember the value, maybe 1024x1024x1024) and I reduced it to a reasonable size (128x128x128 now). A user complained that his app stopped working. It turned out he wasn't querying GL_MAX_3D_TEXTURE_SIZE or using a proxy texture to be sure what he was trying to do was legal. I'm sure that if he'd have tried other GL drivers he'd have eventually found the same problem. Is that a regression?


b) The screensavers don't segfault because there's
no suitable visual available. They seem to do so
while trying to activate the indirect rendering
instead. This is presumably why the rest of the
OpenGL hacks flash the "libGL error: InitDriver
failed" message on the screen and then run very
slowly. And segfaults are always bugs.


It sounds like there might be a broader issue here. What does 'glxinfo' report? Does glxgears run with
hardware acceleration?


$ glxgears -info
GL_RENDERER   = Mesa DRI G400 20020221 AGP 4x
x86/MMX/SSE
GL_VERSION    = 1.2 Mesa 4.0.4
GL_VENDOR     = VA Linux Systems Inc.
GL_EXTENSIONS = GL_ARB_multisample GL_ARB_multitexture
GL_ARB_texture_compression GL_ARB_texture_env_add
GL_ARB_transpose_matrix GL_EXT_abgr GL_EXT_bgra
GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array
GL_EXT_packed_pixels GL_EXT_polygon_offset
GL_EXT_rescale_normal GL_EXT_texture3D
GL_EXT_texture_env_add GL_EXT_texture_object
GL_EXT_vertex_array GL_IBM_rasterpos_clip
GL_MESA_window_pos GL_NV_texgen_reflection
GL_SGIS_generate_mipmap
4155 frames in 5.0 seconds = 831.000 FPS
4122 frames in 5.0 seconds = 824.400 FPS
4116 frames in 5.0 seconds = 823.200 FPS
4099 frames in 5.0 seconds = 819.800 FPS

I'm guessing "yes", but then, why wouldn't it? It's
not running on the root window.

I have already posted the output from glxinfo to this
list,

OK, I went and found your other post.


   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav
 id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------
0x23 16 tc  1 16  0 r  y  .  5  6  5  0  0 16  0  0  0  0  0  0 0 None
0x24 16 tc  1 16  0 r  .  .  5  6  5  0  0 16  0  0  0  0  0  0 0 None
0x25 16 tc  1 16  0 r  y  .  5  6  5  0  0 16  8  0  0  0  0  0 0 Slow

Looks like the only difference between visual 0x23 (the root visual) and 0x25 (what xscreensaver wants) is the addition of a stencil buffer in the later. I wonder if the GL screensavers really need stencil. Also note that visual 0x25 is flagged as 'Slow'. This is because the stencil buffer is implemented in software. So if a GL screensaver really does use stencil, it's going to be using software rendering (while GL_STENCIL_TEST is enabled anyway).


> together with a back-trace from one of the
SIGSEGV cores and the DEBUG output from the mga.o
kernel module while running the "atlantis" hack.
(Atlantis is one that seems to switch to indirect
rendering rather than crashing.)

Unfortunately, my G400 card died a while back and I can't test. Maybe someone else can.

-Brian



-------------------------------------------------------
This SF.net email is sponsored by:
The Definitive IT and Networking Event. Be There!
NetWorld+Interop Las Vegas 2003 -- Register today!
http://ads.sourceforge.net/cgi-bin/redirect.pl?keyn0001en
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to