forked from VirtualGL/virtualgl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog.txt
1793 lines (1722 loc) · 98.7 KB
/
ChangeLog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
===============================================================================
2.5 pre-beta
===============================================================================
[1]
librrfaker.so has been renamed to libvglfaker.so. The "rr" designation dates
from before VirtualGL was called "VirtualGL" (i.e. before it became an open
source project), and it is no longer relevant.
-------------------------------------------------------------------------------
[2]
The symlinks that VirtualGL previously installed for Chromium (the
long-obsolete parallel rendering package, not the web browser) are no longer
included in this release.
-------------------------------------------------------------------------------
[3]
The mechanism by which VirtualGL loads "real" GLX, OpenGL, X11, and XCB
functions from the respective system libraries has been refactored. This has
the following ramifications:
-- The "real" version of an interposed GLX/OpenGL/X11/XCB function will never
be loaded until the interposed function is called.
-- glXProcAddress[ARB]() is now used to load all "real" GLX/OpenGL functions
from libGL (except for the glXProcAddress[ARB]() function itself.) This
maintains the fixes implemented in 2.4[9] as well as the previous
work-arounds for certain buggy libGL implementations that do not export the
glXBindTexImageEXT() and glXReleaseTexImageEXT() functions in the libGL
symbol table (the latter was specifically known to be an issue with certain
versions of the ATI driver under Ubuntu.)
-- If -nodl is passed to vglrun, then libGL will not be loaded into the
application process until/unless the application actually calls a GLX/OpenGL
function.
-- Because XCB functions are now loaded only when needed, the XCB interposer is
no longer distribution-specific. Therefore, it is now included in the
official VirtualGL binaries. Furthermore, since the loading and interposing
of XCB symbols is now less intrusive, the XCB interposer is enabled by
default (it can be disabled with vglrun -xcb.)
-- Reverted 2.1.3[8], since that fallback mechanism is no longer necessary with
modern versions of the nVidia driver. The issue in question can still be
worked around by explicitly setting VGL_GLLIB and VGL_X11LIB.
-------------------------------------------------------------------------------
[4]
Support for color index rendering emulation has been retired in this version of
VirtualGL. That feature will continue to be maintained in the 2.4.x branch on
a break/fix basis only. Even when color index emulation was implemented in VGL
10 years ago, the applications that needed it were already extremely rare.
Since then, color index rendering has been officially obsoleted in the OpenGL
spec (as of version 3.1 in 2009), and modern Un*x graphics drivers no longer
support it, nor do they generally support PseudoColor X visuals (nVidia still
supports these, but only with transparent overlays.) Since there is generally
no reasonable way to run color index OpenGL applications without using legacy
hardware or software, it does not make sense to continue supporting these
applications in this version of VirtualGL, particularly given that color index
emulation adds a certain amount of overhead to some OpenGL calls.
-------------------------------------------------------------------------------
[5]
Added support for DirectColor rendering (DirectColor is similar to PseudoColor,
except that the colormap indices for red, green, and blue can be specified
separately.) GLXspheres now includes a DirectColor mode, replacing its
previous color index mode.
-------------------------------------------------------------------------------
[6]
VirtualGL can now be disabled on a display-by-display basis by specifying a
list of X displays to exclude (see the documentation for the VGL_EXCLUDE
environment variable.) This is useful with multi-GPU systems on which a single
application may want to access the GPUs directly for parallel rendering
purposes but use VirtualGL to display the final result.
-------------------------------------------------------------------------------
[7]
The vglconnect script now accepts an argument of -e {command}, which can be
used to specify a remote command to run. This is useful for situations in
which it is necessary to start a remote process non-interactively with
vglconnect when using the -s or -x options.
-------------------------------------------------------------------------------
[8]
The glXCreateWindow() function no longer fails when passed the handle of an X
window that was created in a different process or using XCB. This specifically
fixes issues encountered when attempting to run VLC in VirtualGL, but other
applications may have been affected as well.
-------------------------------------------------------------------------------
[9]
Fixed a typo in /etc/udev/rules.d/99-virtualgl-dri.rules, which is created by
vglserver_config. More specifically, the typo caused incorrect group
permissions to be assigned to the framebuffer device when not using the
vglusers group.
-------------------------------------------------------------------------------
[10]
Certain applications (known to be the case with recent versions of Firefox with
off-main-thread compositing enabled) would crash with the following error when
running in VirtualGL:
[VGL] ERROR: in readPixels--
[VGL] XXX: VirtualDrawable instance has not been fully initialized
This was due to the application creating a GLX Pixmap and then calling
XCopyArea() on the Pixmap prior to performing any OpenGL rendering with it.
In these cases, VirtualGL now treats the Pixmap as a 2D Pixmap until the
application has performed any OpenGL rendering with it.
-------------------------------------------------------------------------------
[11]
glxinfo has been extended to report whether a particular GLX FB config supports
GLX_BIND_TO_TEXTURE_RGB_EXT and GLX_BIND_TO_TEXTURE_RGBA_EXT, i.e. whether the
FB config can be used with GLX_EXT_texture_from_pixmap.
-------------------------------------------------------------------------------
[12]
vglserver_config should now work properly with SDDM, if its scripts are
installed in the standard location (/usr/share/sddm/scripts).
-------------------------------------------------------------------------------
===============================================================================
2.4.1
===============================================================================
[1]
When an application doesn't explicitly specify its visual requirements by
calling glXChooseVisual()/glXChooseFBConfig(), the default GLX framebuffer
config that VirtualGL assigns to it now contains a stencil buffer. This
eliminates the need to specify VGL_DEFAULTFBCONFIG=GLX_STENCIL_SIZE,8 with
certain applications (previously necessary when running Abaqus v6 and MAGMA5.)
-------------------------------------------------------------------------------
[2]
VirtualGL will no longer advertise that it supports the GLX_ARB_create_context
and GLX_ARB_create_context_profile extensions unless the underlying OpenGL
library exports the glXCreateContextAttribsARB() function.
-------------------------------------------------------------------------------
[3]
Fixed "Invalid MIT-MAGIC-COOKIE-1" errors that would prevent VirtualGL from
working when vglconnect was used to connect to a VirtualGL server from a
client running Cygwin/X.
-------------------------------------------------------------------------------
[4]
If a 3D application is rendering to the front buffer and one of the
end-of-frame trigger functions (glFlush()/glFinish()/glXWaitGL()) is called,
VirtualGL will no longer read back the framebuffer unless the render mode is
GL_RENDER. Reading back the front buffer when the render mode is GL_SELECT
or GL_FEEDBACK is not only unnecessary, but it was known to cause a
GLXBadContextState error with newer nVidia drivers (340.xx and later) in
certain cases.
-------------------------------------------------------------------------------
[5]
Fixed a deadlock that occurred in the multi-threaded rendering test of fakerut
when it was run with the XCB interposer enabled. This was due to VirtualGL
attempting to handle XCB events when Xlib owned the event queue. It is
possible that this issue affected or would have affected real-world
applications as well.
-------------------------------------------------------------------------------
[6]
Fixed an issue that caused certain 3D applications (observed with CAESES/FFW,
although others were possibly affected as well) to abort with
"ERROR: in TempContext-- Could not bind OpenGL context to window (window may
have disappeared)". When the 3D application called glXChooseVisual(),
VirtualGL was choosing a corresponding FB config with
GLX_DRAWABLE_TYPE=GLX_PBUFFER_BIT (assuming that VGL_DRAWABLE=pbuffer, which is
the default.) This is incorrect, however, because regardless of the value of
VGL_DRAWABLE, VirtualGL still uses Pixmaps on the 3D X server to represent
GLX Pixmaps (necessary in order to make GLX_EXT_texture_from_pixmap work
properly.) Thus, VGL needs to choose an FB config that supports both Pbuffers
and Pixmaps. This was generally only a problem with nVidia drivers, because
they export different FB configs for GLX_PBUFFER_BIT and
GLX_PBUFFER_BIT|GLX_PIXMAP_BIT.
-------------------------------------------------------------------------------
===============================================================================
2.4
===============================================================================
[1]
Fixed an issue that prevented recent versions of Google Chrome/Chromium from
running properly in VirtualGL.
-------------------------------------------------------------------------------
[2]
VGL_SYNC now affects glFlush(). Although this does not strictly conform to the
OpenGL spec (glFlush() is supposed to be an asynchronous command), it was
necessary in order to make certain features of Cadence Allegro work properly.
Since virtually no applications require VGL_SYNC, it is believed that this
change is innocuous.
-------------------------------------------------------------------------------
[3]
Fixed a bug in vglconnect introduced in VirtualGL 2.3 that prevented
'vglconnect -x' from working properly if the user did not have access to the
current directory (vglconnect was erroneously creating a temporary file in the
current directory instead of in /tmp.)
-------------------------------------------------------------------------------
[4]
GLXspheres now warns if the specified polygon count would exceed the limit of
57600 polygons per sphere imposed by GLU and prints the actual polygon count
with this limit taken into account. Also, a new option (-n) has been
introduced to increase the sphere count.
-------------------------------------------------------------------------------
[5]
VirtualGL will now only enable color index rendering emulation if a color index
context is current. This specifically fixes an interaction issue with MSC
Mentat, which occasionally calls glIndexi() when an RGBA context is current,
but the fix may affect other applications as well.
-------------------------------------------------------------------------------
[6]
VirtualGL can now interpose enough of the XCB API to make Qt 5 work properly.
Qt 5 does not use XCB to perform 3D rendering (there is no suitable XCB
replacement for GLX yet), but it does use XCB to detect whether the GLX
extension is available and to handle the application's event queue(s). Thus,
when attempting to run Qt 5 applications in VirtualGL, previously the OpenGL
portion of the window would fail to resize when the window was resized, or the
application would complain that OpenGL was not available and fail to start, or
the application would fall back to non-OpenGL rendering.
Currently, enabling XCB support in VirtualGL requires building VirtualGL from
source and adding -DVGL_FAKEXCB=1 to the CMake command line. The XCB
interposer is also disabled by default at run time. It must be enabled by
setting the VGL_FAKEXCB environment variable to 1 or passing +xcb to vglrun.
-------------------------------------------------------------------------------
[7]
Fixed a deadlock that occurred when running compiz 0.9.11 (and possibly other
versions as well) with VirtualGL. The issue occurred when compiz called
XGrabServer(), followed by glXCreatePixmap() and glXDestroyPixmap(). In
VirtualGL, a GLX pixmap resides on the 3D X server, but the corresponding X11
pixmap resides on the 2D X server. Thus, VirtualGL has to synchronize pixels
between the two pixmaps in response to certain operations, such as XCopyArea()
and XGetImage(), or when the GLX pixmap is destroyed. VirtualGL was previously
opening a new connection to the 2D X server in order to perform this
synchronization, and because the 2D X server was grabbed, compiz locked up when
VirtualGL called XCloseDisplay() on the new display connection. In fact,
however, the new display connection was unnecessary, since the GLX/X11 pixmap
synchronization occurs within the 3D rendering thread. Thus, VirtualGL now
simply reuses the same display connection that is passed to
glXCreate[GLX]Pixmap().
-------------------------------------------------------------------------------
[8]
NetTest and TCBench for Windows are now supplied in a package called
VirtualGL-Utils, which can be built from the VirtualGL source. When the
VirtualGL Client for Exceed was discontinued, these utilities ceased to have a
home, but they are still useful tools to have, irrespective of the thin client
solution that is being used. The Windows build of TCBench was temporarily
moved into the Windows TurboVNC Viewer packages, but it proved to be a pain to
keep the source code synchronized between the two projects.
The VirtualGL-Utils package additionally contains a WGL version of GLXspheres,
which is a useful tool to have when benchmarking Windows virtual machines that
are running in a VirtualGL environment.
-------------------------------------------------------------------------------
[9]
Worked around an issue in recent versions of SPECviewperf and FEMFAT visualizer
that caused them to segfault when used with VirtualGL. Those applications
apparently use a dynamic loading mechanism for OpenGL extension functions, and
this mechanism defines symbols such as "glGenBuffers" at file scope. Any
symbol exported by an application will override a symbol of the same name
exported by a shared library, so when VirtualGL tried to call glGenBuffers(),
glBindBuffer(), etc., it was picking up the symbols from the application, not
from libGL (and those symbols from the application were not necessarily
defined.) VirtualGL now obtains the function pointers it needs for PBO
readback directly from libGL using glXProcAddress() rather than relying on the
dynamic linker to resolve them. Note that this issue could be worked around in
previous versions of VirtualGL by setting VGL_READBACK=sync.
-------------------------------------------------------------------------------
===============================================================================
2.4 beta1
===============================================================================
[1]
The VirtualGL Client for Exceed has been retired. It will continue to be
maintained in the 2.3.x branch on a break/fix basis only. Cygwin/X has matured
to the point that it now provides an adequate solution for using the VirtualGL
Client on Windows, with the only major limitation being lack of quad-buffered
stereo support. That feature alone is insufficient to justify a code base
that is basically twice as complex as it otherwise would be. Further, we are
now maintaining our own Cygwin repository for the VirtualGL Client, which makes
it easier to install on that platform.
The VirtualGL Client for Exceed reflects VirtualGL's origins as an add-on
technology for existing remote X environments. These days, most people use
VirtualGL with some sort of X proxy instead. There have been no significant
changes to vglclient since version 2.2.1, as most of the efforts of The
VirtualGL Project in recent years have focused on the server-side components
and TurboVNC. In the early days of the project, there were performance
advantages to the VGL Transport, but that is no longer the case. In fact,
TurboVNC will generally do a better and faster job of compressing the image
stream, since it uses a hybrid compression scheme rather than pure JPEG.
The native Windows version of TCBench, which previously shipped with the
VirtualGL Client for Exceed, has been moved into the Windows TurboVNC Viewer
package.
-------------------------------------------------------------------------------
[2]
The VirtualGL source code has been extensively refactored to use more modern
variable, class, and method naming conventions, and automated test scripts for
the utility libraries and the faker have been added.
-------------------------------------------------------------------------------
[3]
glXChooseFBConfig() now properly handles the GLX_FBCONFIG_ID attribute. The
improper handling of this attribute was known to cause an error ("Could not
find GLX 1.3 config from peer info") when running the LWJGL (Lightweight Java
Game Library) on AMD GPUs, but it may have affected other apps as well.
-------------------------------------------------------------------------------
[4]
The performance of PBO readback on ATI FirePro adapters has been improved
dramatically (close to an order of magnitude.)
-------------------------------------------------------------------------------
[5]
vglserver_config will now set DRI device permissions properly on systems that
lack an xorg.conf file but have an xorg.conf.d directory.
-------------------------------------------------------------------------------
[6]
vglserver_config should now work with recent Debian releases.
-------------------------------------------------------------------------------
[7]
Fixed an issue whereby VirtualGL would not always resize the Pbuffer
corresponding to an Xt or Motif OpenGL widget whenever the widget was resized.
-------------------------------------------------------------------------------
[8]
The Mac packaging system now uses pkgbuild and productbuild rather than
PackageMaker (which is obsolete and no longer supported.) This means that
OS X 10.6 "Snow Leopard" or later must be used when packaging VirtualGL,
although the packages produced can be installed on OS X 10.5 "Leopard" or
later. OS X 10.4 "Tiger" is no longer supported.
-------------------------------------------------------------------------------
[9]
The "Uninstall VirtualGL" app should once again work on OS X 10.5.
-------------------------------------------------------------------------------
[10]
Fixed an infinite drawing loop that occurred when running Altair HyperBeam with
VirtualGL. Since 2.1.3, VirtualGL has been setting the WM_DELETE_WINDOW
property on any OpenGL window so that it (VGL) can be notified if the window
manager deletes the window (thus preventing VGL from trying to draw to the
window after it disappears.) This was originally done within the body of
XCreate[Simple]Window(), but Java did not like us overriding the property for
2D windows (refer to 2.3.1[9].) Thus, the setting of WM_DELETE_WINDOW was
moved into the body of glXMake[Context]Current() so that it affected only
OpenGL windows. However, VGL was incorrectly replacing the list of WM
protocols rather than simply adding WM_DELETE_WINDOW to the existing list. VGL
was also not checking whether WM_DELETE_WINDOW already existed in the list
before adding it. For reasons that are not well understood, this caused
HyperBeam to get into an infinite loop, because calling XSetWMProtocols()
within the body of glXMakeCurrent() seemed to cause the application to call
glXMakeCurrent() again. This issue may have affected other applications as
well.
-------------------------------------------------------------------------------
[11]
Fixed an issue whereby the RPMs generated by VirtualGL's packaging system
(including the official RPMs for VGL 2.3.2 and 2.3.3) could not be installed on
later Fedora releases.
-------------------------------------------------------------------------------
[12]
Fixed an issue whereby glXSwapBuffers() would not work properly unless the
drawable passed to that function was current. This specifically fixes a
rendering issue with voreen, but it may have affected other apps as well.
-------------------------------------------------------------------------------
[13]
Fixed an issue that prevented vglgenkey from working properly on Red Hat
Enterprise Linux 7.
-------------------------------------------------------------------------------
[14]
Fixed an issue that prevented vglserver_config from working properly on
Ubuntu 14.04.
-------------------------------------------------------------------------------
===============================================================================
2.3.3
===============================================================================
[1]
VirtualGL will no longer throw an exception if a 3D application calls certain
X11 and GLX functions with a NULL argument. It will instead allow the
underlying X11 or GLX library to handle the error. This specifically works
around an issue with Fiji.
-------------------------------------------------------------------------------
[2]
Worked around an issue whereby, when ANSYS Workbench 14.5 was run with
VirtualGL, subprocesses (such as the geometry editor) launched from within the
Workbench environment would not exit properly (and thus would become zombies.)
This issue also affected ANSYS HFSS, which would either lock up when exiting or
would print an error message: "terminate called after throwing an instance of
'rrerror'".
-------------------------------------------------------------------------------
[3]
Worked around an issue whereby, when using MAGMA5 with VirtualGL, the second
and subsequent perspectives opened within the application would not always
display correctly.
-------------------------------------------------------------------------------
[4]
Added support for the GLX_EXT_texture_from_pixmap extension.
-------------------------------------------------------------------------------
[5]
Added support for the GLX_EXT_swap_control and GLX_SGI_swap_control extensions
and a new configuration variable (VGL_REFRESHRATE) that can be used to control
them. See the User's Guide for more information.
-------------------------------------------------------------------------------
[6]
Added support for depth=32 visuals and FB configs.
-------------------------------------------------------------------------------
[7]
Added a new "window manager" mode that disables certain features in VirtualGL
that interfere with 3D window managers such as compiz. This, combined with
[6] and [4] above, should allow compiz to run properly with this version of
VirtualGL, provided that the 2D X Server has support for the X Composite
extension. See the User's Guide for more information.
-------------------------------------------------------------------------------
[8]
Fixed a BadDrawable X11 error that occurred when running the Steam client in
VirtualGL.
-------------------------------------------------------------------------------
[9]
Improved the accuracy of TCBench and CPUstat
-------------------------------------------------------------------------------
[10]
Streamlined VirtualGL's behavior when it is installed from source:
-- vglrun now works regardless of where the faker libraries have been
installed. The build system hard-codes the value of the VGL_LIBDIR CMake
variable into a script that vglrun invokes so it can add this directory to
LD_LIBRARY_PATH. If the faker libraries are installed into a system library
directory, then packagers can choose to omit the new script, and vglrun will
continue to work as it always has.
-- Whenever a 64-bit build is installed, glxspheres is now renamed
glxspheres64, per the convention of the official packages. This makes it
possible to install a 32-bit and a 64-bit version of VirtualGL into the same
directory.
-- If the install prefix is set to the default (/opt/VirtualGL), then the
build system defaults to installing faker libraries from a 32-bit build into
/opt/VirtualGL/lib32 and faker libraries from a 64-bit build into
/opt/VirtualGL/lib64.
-- Similarly, if the install prefix is set to the default (/opt/VirtualGL),
then the build system defaults to installing the libGL symlink for Chromium
from a 32-bit build into /opt/VirtualGL/fakelib32 and the libGL symlink for
Chromium from a 64-bit build into /opt/VirtualGL/fakelib64.
-------------------------------------------------------------------------------
[11]
PBO readback mode is now enabled by default. Further research has shown that
professional-grade GPUs always benefit from PBOs being enabled (quite
dramatically, in the case of AMD FirePro adapters.) With consumer-grade AMD
adapters, PBOs generally do no harm, and with consumer-grade nVidia (GeForce)
adapters, the results are mixed. The GeForce drivers will fall back to
blocking readbacks if the pixel format requested in glReadPixels() doesn't
match the pixel format of the Pbuffer, so PBOs will generally be slower in
those cases. Thus, VirtualGL now falls back to synchronous readback mode if it
detects that PBOs are not behaving asynchronously.
Further, VGL_FORCEALPHA is no longer enabled by default when PBOs are enabled.
This option was introduced because of the GeForce behavior mentioned above, but
the option has no effect whatsoever with the professional-grade GPUs that are
recommended for use with VirtualGL. Instead, VGL will now detect situations in
which VGL_FORCEALPHA might be beneficial and suggest enabling or disabling it
(if VGL_VERBOSE=1.)
-------------------------------------------------------------------------------
[12]
This version of VirtualGL provides a binary package and full support for
Cygwin64.
-------------------------------------------------------------------------------
===============================================================================
2.3.2
===============================================================================
[1]
Added new stereo options, including green/magenta and blue/yellow anaglyphic as
well as three half-resolution passive stereo options that can be used to drive
3D TV's.
-------------------------------------------------------------------------------
[2]
The 32-bit supplementary package for amd64 Debian systems should now work
properly on MultiArch-compatible systems (such as Ubuntu 11 and later.)
-------------------------------------------------------------------------------
[3]
vglserver_config should now work properly with LightDM.
-------------------------------------------------------------------------------
[4]
VirtualGL was not advertising that it supported the
GLX_ARB_create_context_profile extension, even though it does. This has been
fixed.
-------------------------------------------------------------------------------
[5]
VirtualGL now uses a separate OpenGL context to perform pixel readback. This
fixes several issues, including an error ("GL_ARB_pixel_buffer_object extension
not available") when trying to enable PBO readback with applications that use a
3.x or later OpenGL core profile, and incorrect rendering in JPCSP and other
applications that modify certain pixel store parameters (such as
GL_PACK_SWAP_BYTES or GL_PACK_ROW_LENGTH) that VirtualGL wasn't properly
handling.
-------------------------------------------------------------------------------
[6]
VGL_FORCEALPHA=1 now works properly if the 3D application specifies visual
attributes of GLX_RED_SIZE=GLX_GREEN_SIZE=GLX_BLUE_SIZE=1.
-------------------------------------------------------------------------------
[7]
glXUseXFont() has been extended to work with Pbuffers. Due to an oversight,
VirtualGL would previously abort with an error message if the 3D application
attempted to render text to a Pbuffer that it created.
-------------------------------------------------------------------------------
[8]
Fixed an issue whereby, when displaying to a 2D X server that lacked the
MIT-SHM extension, the X11 Transport would sometimes fail to resize its
internal Pixmap (used for double buffering) whenever the X window was resized.
This specifically caused OpendTect to display only a portion of its 3D view
whenever it resized its 3D window after a "Restore" operation, but the issue
may have affected other applications as well.
-------------------------------------------------------------------------------
[9]
Previously, 3D applications running in VirtualGL could not successfully use
XGetImage() to obtain the rendered 3D pixels from a GLX pixmap. This has been
fixed.
-------------------------------------------------------------------------------
[10]
vglrun now automatically sets an environment variable that disables the
execution of the VBoxTestOGL program in VirtualBox 4.2 and later. Since
LD_PRELOAD is not propagated down to VBoxTestOGL whenever VirtualBox launches
it (because VirtualBox is a setuid root executable), VBoxTestOGL always fails
in a VirtualGL environment, which makes VirtualBox believe that the system has
no 3D support. With version 4.1.10, VirtualBox began running VBoxTestOGL every
time a VM was launched, which effectively prevented VBox from being used with
VirtualGL unless the user hacked their system by symlinking /bin/true to
/usr/lib/virtualbox/VBoxTestOGL.
-------------------------------------------------------------------------------
===============================================================================
2.3.1
===============================================================================
[1]
Work around seg fault that occurred when running CoreBreach.
-------------------------------------------------------------------------------
[2]
VirtualGL now properly handles implicit deletion of windows/subwindows via
XCloseDisplay(), implicit deletion of subwindows via XDestroyWindow(), and
explicit deletion of subwindows via XDestroySubwindows(). This specifically
addresses BadDrawable errors that occurred when running certain applications
in WINE 1.3.34 and later.
-------------------------------------------------------------------------------
[3]
Fix crash in glXCreateGLXPbufferSGIX() that occurred when a NULL attribute list
pointer was passed to it.
-------------------------------------------------------------------------------
[4]
VirtualGL should now build and run properly on FreeBSD.
-------------------------------------------------------------------------------
[5]
VirtualGL now works properly with applications that dynamically load libX11.
This specifically fixes several issues that occurred when running SDL-based
applications against a version of libSDL that was configured with
--enable-x11-shared.
-------------------------------------------------------------------------------
[6]
Changed Debian package names to lower case ("virtualgl" and "virtualgl32") to
avoid an issue whereby the package was always being installed, even if the
installed version was up to date.
-------------------------------------------------------------------------------
[7]
vglserver_config now works properly with KDM on RHEL/CentOS 5 systems.
-------------------------------------------------------------------------------
[8]
Added a new option (VGL_GLFLUSHTRIGGER) that, when set to 0, will cause
VirtualGL to ignore glFlush() commands from the 3D application. This is
intended for rare applications that do front buffer rendering and use glFlush()
as an "intermediate" synchronization command but then subsequently call
glFinish() to indicate the end of the frame.
-------------------------------------------------------------------------------
[9]
Fixed an issue whereby drag & drop operations in certain Java applications
would cause VNC servers (any VNC server, not just TurboVNC) to hang whenever
the Java application was run using VirtualGL.
-------------------------------------------------------------------------------
===============================================================================
2.3
===============================================================================
[1]
Fix regression bug whereby GLXSpheres would ignore the first argument after
-fs.
-------------------------------------------------------------------------------
[2]
glXChooseFBConfig() and glXChooseFBConfigSGIX() were erroneously returning an
error when a NULL attribute list pointer was passed to them. They now behave
correctly.
-------------------------------------------------------------------------------
[3]
Fixed regression issue whereby VirtualGL would deadlock when using the X11
Transport with a remote X connection.
-------------------------------------------------------------------------------
[4]
Fixed a GL_INVALID_OPERATION error that would occur after a call to
glXSwapBuffers() when a context with the OpenGL Core Profile was being used.
-------------------------------------------------------------------------------
[5]
Fixed an issue whereby VirtualGL would abort with "terminate called after
throwing an instance of 'rrerror'" whenever a 3D application running in
VirtualGL exited and VirtualGL was compiled with GCC 4.6.
-------------------------------------------------------------------------------
[6]
Added a new configuration option (VGL_DEFAULTFBCONFIG), which can be used to
manually specify the rendering attributes of the default FB config that
VirtualGL uses in the event that a 3D application does not call
glXChooseVisual() to specify a desired set of attributes. Refer to the User's
Guide for more information.
-------------------------------------------------------------------------------
[7]
Worked around an issue whereby using very large fonts with glXUseXFont() would
cause Pixmap allocation failures with certain X servers.
-------------------------------------------------------------------------------
===============================================================================
2.3 beta1
===============================================================================
[1]
Re-fixed issue that caused MainWin-based applications to hang. This was
initially fixed in VGL 2.1 final, but it was re-broken by the rewrite of the
global faker configuration routines in VGL 2.2.
-------------------------------------------------------------------------------
[2]
Overhauled the way VirtualGL handles Pixmap rendering, mainly to fix
interaction issues with Mathematica.
-------------------------------------------------------------------------------
[3]
Added an option (VGL_ALLOWINDIRECT) which, when enabled, will cause VirtualGL
to honor an application's request to create an indirect OpenGL context.
Normally, VirtualGL forces all contexts to be direct for performance reasons,
but this causes problems with certain applications (notably Mathematica 7.)
-------------------------------------------------------------------------------
[4]
Added two new command line options to GLXSpheres which allow the window size
to be changed and which allow the total number of frames to be specified (the
application will abort after the total number of frames has been rendered.)
-------------------------------------------------------------------------------
[5]
VirtualGL will no longer die if glXGetConfig() or glXGetFBConfigAttrib() is
passed a NULL argument.
-------------------------------------------------------------------------------
[6]
Fixed a BadMatch X11 error that occurred when an application attempted to
apply a new OpenGL rendering context to a drawable and the FB config of the new
OpenGL context differed from that of a context that was previously applied to
the same drawable. This specifically was known to affect D3D applications
running in WINE.
-------------------------------------------------------------------------------
[7]
CMake-based build and packaging system
-------------------------------------------------------------------------------
[8]
TCBench now takes 100 samples/second by default instead of 50.
-------------------------------------------------------------------------------
[9]
Added support for the GLX_ARB_create_context extension.
-------------------------------------------------------------------------------
===============================================================================
2.2.1
===============================================================================
[1]
A 64-bit version of the VirtualGL Client for Exceed is now fully supported.
-------------------------------------------------------------------------------
[2]
Fixed a severe readback performance problem that occurred whenever an
application set the render mode to GL_SELECT and called glFlush() while doing
front buffer rendering.
-------------------------------------------------------------------------------
[3]
vglserver_config will now work properly whenever vglgenkey is installed in a
directory other than /usr/bin or /opt/VirtualGL/bin, as long as vglgenkey is
installed in the same directory as vglserver_config.
-------------------------------------------------------------------------------
[4]
vglconnect now allows the user to specify the directory in which VirtualGL
binaries are installed on the server, rather than always assuming that they are
in /opt/VirtualGL/bin.
-------------------------------------------------------------------------------
[5]
Fixed issues with vglconnect.bat that occurred when it was installed under
c:\Program Files (x86) on 64-bit Windows systems and invoked with the -x or -s
options.
-------------------------------------------------------------------------------
[6]
Clarified the documentation of the VGL_DISPLAY option and documented how to use
VirtualGL with multiple graphics cards.
-------------------------------------------------------------------------------
[7]
VirtualGL will no longer die if glXDestroyContext() is passed a NULL argument.
-------------------------------------------------------------------------------
[8]
Fixed a BadWindow error that would occur whenever a 3D application attempted to
call glXSwapIntervalSGI() (specifically, this was observed when running
Direct3D applications using WINE 1.3.11 or later.) The nVidia GLX
implementation requires that a window be current (not a Pbuffer) when calling
glXSwapIntervalSGI(), so VirtualGL now interposes that function and makes it
a noop.
-------------------------------------------------------------------------------
[9]
Fixed an issue whereby, if a 3D application set
GL_{RED|GREEN|BLUE|ALPHA}_SCALE or GL_{RED|GREEN|BLUE|ALPHA}_BIAS to
non-default values, the colors would appear wrong when running the
application in VirtualGL, and the readback performance would be very slow.
-------------------------------------------------------------------------------
[10]
Fixed an issue whereby 3D applications that requested an overlay visual would
fail with BadRequest or other X11 errors if the 2D X server lacked GLX support
(as is the case with TurboVNC.) This was caused by the fact that VirtualGL
passes through glXChooseVisual() and related calls to the 2D X server if it
detects that an overlay visual is being requested. Now, VirtualGL will first
check that the 2D X server supports GLX before passing through those calls.
-------------------------------------------------------------------------------
[11]
vglclient -kill and vglclient -killall now work (again) in the Exceed client.
-------------------------------------------------------------------------------
===============================================================================
2.2
===============================================================================
[1]
Added VGL_SPOILLAST environment variable which, when set to 0, will change the
frame spoiling algorithm used for frames triggered by glFlush() calls. This
is necessary to make Ansoft HFSS display properly.
-------------------------------------------------------------------------------
[2]
Add compatibility mode to allow NetTest to communicate with older versions
(from VGL 2.1.x and prior.)
-------------------------------------------------------------------------------
[3]
Fix race condition in vglclient which would frequently cause an "incorrect
checksum for freed object" error when the client was shut down via CTRL-C.
This problem was reported only on OS X but could have existed on other
platforms as well.
-------------------------------------------------------------------------------
===============================================================================
2.2 beta1
===============================================================================
[1]
Added option which, when enabled, will cause VirtualGL to display a logo in the
bottom right-hand corner of the 3D window. This is meant as a debugging tool
to allow users to determine whether or not VirtualGL is active.
-------------------------------------------------------------------------------
[2]
Support for encrypting the VGL Transport with OpenSSL has been removed from the
official VirtualGL packages. It was only a marginally useful feature, because
VirtualGL also has the ability to tunnel the VGL Transport through SSH. It was
necessary to maintain our own static OpenSSL libraries on Linux in order to
provide a version of VirtualGL that was compatible across all Linux platforms,
and this required us to keep abreast of the latest OpenSSL security fixes, etc.
OpenSSL support can easily be re-added by building VirtualGL from source (see
BUILDING.txt.)
-------------------------------------------------------------------------------
[3]
Added a framework for creating generic image transport plugins. See
rrtransport.h for a description of the API.
-------------------------------------------------------------------------------
[4]
Removed support for the proprietary Sun Ray plugin, since that plugin is no
longer available from Sun.
-------------------------------------------------------------------------------
[5]
For Linux, Mac/Intel, Solaris/x86, and Windows systems, the default build of
VirtualGL no longer uses TurboJPEG/IPP (which was based on the proprietary
Intel Performance Primitives) or Sun mediaLib. Instead, VirtualGL now uses
libjpeg-turbo, a fully open source vector-accelerated JPEG codec developed in
conjunction with the TigerVNC Project (and based on libjpeg/SIMD.)
As a result of this, it is no longer necessary to install a separate TurboJPEG
package on Linux systems.
-------------------------------------------------------------------------------
[6]
Added a universal 32/64-bit VirtualGL Client binary for OS X. The 32-bit fork
works on 10.4 "Tiger" or later, and the 64-bit fork works on 10.5 "Leopard" or
later.
-------------------------------------------------------------------------------
[7]
Added support for encoding images as I420 YUV and displaying through X Video.
The images can either be displayed directly to the X server or sent through
the VGL transport for display using vglclient. See the User's Guide for more
details.
-------------------------------------------------------------------------------
[8]
Renamed /etc/modprobe.d/virtualgl to /etc/modprobe.d/virtualgl.conf to comply
with the Ubuntu standard.
-------------------------------------------------------------------------------
[9]
Added VGL_SAMPLES environment variable (and vglrun -ms command line switch) to
force VirtualGL to select a multisampled visual or override the level of
multisampling selected by the 3D application.
-------------------------------------------------------------------------------
[10]
The uninstall script in the Mac distribution package should now work on OS X
10.6.
-------------------------------------------------------------------------------
[11]
VirtualGL can now use pixel buffer objects (PBO's) to accelerate the
readback of the 3D pixels. This particularly helps when multiple users are
sharing the GPU. See the "Advanced Configuration" section of the User's Guide
for more information.
-------------------------------------------------------------------------------
[12]
On Linux systems, this version of VirtualGL works around the interaction issues
between libdlfaker.so and VirtualBox, thus eliminating the need to specify
CR_SYSTEM_GL_PATH or to run the VirtualBox application using 'vglrun -nodl'.
-------------------------------------------------------------------------------
[13]
This version of VirtualGL provides a binary package, documentation, and full
support for Cygwin/X.
-------------------------------------------------------------------------------
[14]
Fixed "free(): invalid pointer" error which occurred whenever an application
called XCloseDisplay() and the VGL_XVENDOR environment variable was set.
-------------------------------------------------------------------------------
[15]
VirtualGL should now work properly when used with applications that render to
framebuffer objects (FBO's).
-------------------------------------------------------------------------------
[16]
vglconnect.bat should now work properly on 64-bit Windows systems. Previously,
it would fail if it was installed under the "Program Files (x86)" directory.
-------------------------------------------------------------------------------
[17]
Added -gid option to vglserver_config to allow the group ID of the vglusers
group to be specified, if that group must be created.
-------------------------------------------------------------------------------
[18]
TCBench should now work properly on OS X.
-------------------------------------------------------------------------------
===============================================================================
2.1.4
===============================================================================
[1]
Fixed a regression bug in vglserver_config which caused a "binary operator
expected" error when restricting framebuffer device access to the vglusers
group.
-------------------------------------------------------------------------------
[2]
Fixed an issue in vglserver_config whereby the device permissions were not
being set correctly on SuSE Linux Enterprise Desktop 11.
-------------------------------------------------------------------------------
[3]
VGL should now properly ignore GLX_BUFFER_SIZE if an application attempts to
specify it when requesting a true color visual. Specifically, this allows the
Second Life SnowGlobe client to run properly in VGL and WINE.
-------------------------------------------------------------------------------
[4]
vglserver_config should now work even if /sbin and /usr/sbin are not in the
PATH.
-------------------------------------------------------------------------------
[5]
The Solaris 10/x86 version of VirtualGL should now work properly with
the nVidia 18x.xx series drivers.
-------------------------------------------------------------------------------
[6]
Fix memory leak that occurred when running VirtualGL in quad-buffered stereo
mode.
-------------------------------------------------------------------------------
[7]
The DRI device permissions in RHEL 5 were being overridden whenever a user
logged in, because RHEL 5 uses a file in /etc/security/console.perms.d to
specify the default DRI permissions rather than using
/etc/security/console.perms. vglserver_config has been modified to handle
this.
-------------------------------------------------------------------------------
[8]
Added an option to vglconnect on Linux/Unix to allow it to use gsissh from the
Globus Toolkit instead of the regular ssh program.
-------------------------------------------------------------------------------
===============================================================================
2.1.3
===============================================================================
[1]
VirtualGL 2.1.2 printed numerous "Cannot obtain a Pbuffer-enabled 24-bit FB
config ..." error messages when starting Google Earth. This has been fixed,
and the message has been changed to a warning and clarified. These error
messages were printed whenever the application called VirtualGL's interposed
version of glXChooseVisual() and that function subsequently failed to obtain an
appropriate visual for performing 3D rendering. However, this is not
necessarily an error, because applications will sometimes call
glXChooseVisual() multiple times until they find a visual with desired
attributes.
-------------------------------------------------------------------------------
[2]
Changed the matching criteria in VirtualGL's interposed version of dlopen().
In previous versions of VirtualGL, any calls to dlopen("*libGL*") would be
replaced with a call to dlopen("librrfaker.so"). This caused problems with
VisIt, which has a library named "libGLabelPlot.so" that was being interposed
by mistake. The matching criteria has been changed such that dlopen() only
overrides calls to dlopen("libGL\.*") or dlopen("*/libGL\.*").
-------------------------------------------------------------------------------
[3]
vglserver_config should now work properly with DRI-compatible graphics drivers
(including ATI.)
-------------------------------------------------------------------------------
[4]
VirtualGL's interposed version of dlopen() will now modify calls to
dlopen("libdl*") as well as dlopen("libGL*"). This is to work around an
interaction issue with v180.xx of the nVidia accelerated 3D drivers and WINE.
-------------------------------------------------------------------------------
[5]
Fixed interaction issue with QT4 in which VirtualGL would not properly handle
window resize events under certain circumstances.
-------------------------------------------------------------------------------
[6]
Moved dlopen() back into a separate faker library (libdlfaker.so.)
libdlfaker.so is loaded by default, which should maintain the behavior of
VGL 2.1.2. However, it can be unloaded by passing an argument of '-nodl' to
vglrun. The latter is necessary to make VirtualBox 2.2.x work with VirtualGL.
-------------------------------------------------------------------------------
[7]
vglserver_config should now work properly on Ubuntu 9.04 when using gdm or kdm.
It should also (mostly) work on Fedora 11 (disabling XTEST does not work on
Fedora 11 when using gdm.)
-------------------------------------------------------------------------------
[8]
Added fallback logic to VirtualGL's symbol loader which will try to directly
load the GLX/OpenGL symbols from libGL.so.1 and the X11 symbols from
libX11.so.6 if loading these symbols using dlsym(RTLD_NEXT, ...) fails. This
is to work around an issue with version 18x.xx of the nVidia Linux Display
Driver.
-------------------------------------------------------------------------------
[9]
If an application window was destroyed by the window manager and the
application did not explicitly monitor and handle the WM_DELETE protocol
message, then previous versions of VirtualGL would, when using the X11 image
transport, generally abort with an X11 BadDrawable error. This occurred
because the window was basically being ripped out from underneath VirtualGL's
blitter thread without warning. This version of VirtualGL has been modified
to monitor WM_DELETE messages, so VirtualGL can now bow out gracefully if the
3D application window is closed by the window manager but the application
does not handle WM_DELETE.
-------------------------------------------------------------------------------
[10]
Worked around an interaction issue with IDL whereby the application was calling
XGetGeometry() with the same pointer for every argument, and this was causing
VirtualGL to lose the width and height data returned from the "real"
XGetGeometry() function. Subsequently, the Pbuffer corresponding to the main
IDL window would become improperly sized, and the rendering area would not
appear to update.
-------------------------------------------------------------------------------
[11]
Added VGL_TRAPX11 option, which will cause VirtualGL to gracefully trap X11
errors, print a warning message when these occur, and allow the application to
continue running.
-------------------------------------------------------------------------------
===============================================================================
2.1.2
===============================================================================
[1]
Fixed a buffer overrun issue in TurboJPEG/mediaLib that may have caused
problems on Solaris/x86 VirtualGL servers.
-------------------------------------------------------------------------------
[2]
Integrated libdlfaker.so into librrfaker.so to eliminate the need for
invoking 'vglrun -dl'.
-------------------------------------------------------------------------------
[3]
Developed a proper uninstaller app for the Mac OS X VirtualGL package.
-------------------------------------------------------------------------------
[4]
Modified MAXINST variable in SUNWvgl Solaris package to prevent multiple
instances of this package from being installed simultaneously.
-------------------------------------------------------------------------------
===============================================================================
2.1.1
===============================================================================
[1]
Fixed issues that occurred when displaying to the second or subsequent
screens on a multi-screen X server.
-------------------------------------------------------------------------------
[2]
Updated to wxWindows Library License v3.1.
-------------------------------------------------------------------------------
[3]
Added uncompressed YUV encoding option to the Sun Ray plugin. This provides
significantly better performance than DPCM on Sun Ray 1 clients, and it
provides significantly better image quality in all cases. YUV encoding will
generally use about 50% more network bandwidth than DPCM, all else being equal.
-------------------------------------------------------------------------------
[4]
Further optimized the Huffman encoder in the mediaLib implementation of
TurboJPEG. This should decrease the CPU usage when running VirtualGL on
Solaris VirtualGL servers, particularly Solaris/x86 servers running 32-bit
applications.
-------------------------------------------------------------------------------
[5]
vglconnect now works properly with Cygwin.
-------------------------------------------------------------------------------
[6]
Fixed regression that caused VirtualGL to remove any part of the VGL_XVENDOR
string following the first white space.
-------------------------------------------------------------------------------
[7]
vglserver_config now works properly with OpenSolaris systems.
-------------------------------------------------------------------------------
[8]
glXUseXFont() now works if a Pixmap is the current drawable.
-------------------------------------------------------------------------------
[9]
vglserver_config now works properly with Debian Linux systems.
-------------------------------------------------------------------------------
[10]
Fixed a typo in vglconnect which caused it to leave temporary files lying
about.
-------------------------------------------------------------------------------
[11]