On 11-03-01 04:02 PM, Nathan Kidd wrote:
Hmmm, actually, I have an idea, based on what DRC said before about
NV-GLX. When an NV-GLX libGL talks to a server that supports NV-GLX it
has additional traffic (major opcode 139 on my server). This must be
where the error comes from and why nothing decoded it. Since NV-GLX is a
private protocol, we don't have any VGL hooks for it.
Experiment for whoever gets time first: in VGL disable NV-GLX in the X
extension strings and see if that fixes it (since client libGL no longer
is able to do NV-GLX traffic).
It tested this hypothesis, it seems correct.
Don't apply attached patch, and run with DISPLAY and VGL_DISPLAY as :0
with NVIDIA 260 driver:
fails with VendorPrivate error.
Apply attached path, and run with DISPLAY and VGL_DISPLAY as :0 with
NVIDIA 260 driver:
debris demo works.
Apply attached patch, and run with DISPLAY=remote X.org + 185 driver
and VGL_DISPLAY as :0 on 260 driver:
fails with invalid Render command (obviously NVIDIA tries to fall
back to unofficial GLX when NV-GLX isn't present if the Vendor is
NVIDIA, even when the AllowUnofficialGLX flag is off).
Apply attached patch, and run with DISPLAY=Exceed with ATI driver :
it gets so far as to draw the window and start the progress bar, but
then fails with:
X Error of failed request: GLXUnsupportedPrivateRequest
Major opcode of failed request: 136 (GLX)
Minor opcode of failed request: 16 (X_GLXVendorPrivate)
Serial number of failed request: 1639
Current serial number in output stream: 1640
(This error returned by Exceed).
The vop is 1416, which Exceed doesn't claim to support via extensions,
and I don't know anything about (googling turns up empty).
The only thing I didn't test was a remove NVIDIA 260 driver with NV-GLX
disabled (because I want to keep my other 185 driver), but given making
DISPLAY and VGL_DISPLAY = :0 reproduced the same VendorPrivate error and
disabling NV-GLX fixed it I think it should work.
Conclusion is NVIDIA does bad things in its driver with unknown protocol
and it seems that's pretty difficult for VGL to work around.
-Nathan
diff --git a/rr/faker.cpp b/rr/faker.cpp
index 03699d4..b58fc23 100644
--- a/rr/faker.cpp
+++ b/rr/faker.cpp
@@ -297,6 +297,7 @@ Bool XQueryExtension(Display *dpy, _Xconst char *name, int *major_opcode,
retval=_XQueryExtension(dpy, name, major_opcode, first_event, first_error);
if(!strcmp(name, "GLX")) retval=True;
+ if(!strcmp(name, "NV-GLX")) retval=False;
stoptrace(); if(major_opcode) prargi(*major_opcode);
if(first_event) prargi(*first_event);
@@ -327,6 +328,7 @@ char **XListExtensions(Display *dpy, int *next)
{
listlen+=strlen(list[i])+1;
if(!strcmp(list[i], "GLX")) hasglx=1;
+ if(!strcmp(list[i], "NV-GLX")) list[i][0]='X';
}
}
}
------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
VirtualGL-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/virtualgl-users