Pull and merge from ssh://hg@bitbucket.org/lindenlab/viewer-release.
commit
78b7a4b37c
108
.hgtags
108
.hgtags
|
|
@ -72,35 +72,35 @@ b53a0576eec80614d7767ed72b40ed67aeff27c9 DRTVWR-38_2.5.2-release
|
|||
461c8c65b5c799ddfe365422f9be9c0095d91e7d 2.6.0-beta1-tip
|
||||
9e4641f4a7870c0f565a25a2971368d5a29516a1 2.6.0-beta2
|
||||
9e4641f4a7870c0f565a25a2971368d5a29516a1 DRTVWR-41_2.6.0-beta2
|
||||
42f32494bac475d0737799346f6831558ae8bf5d 2.6.0-release
|
||||
42f32494bac475d0737799346f6831558ae8bf5d DRTVWR-39_2.6.0-release
|
||||
c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-beta1
|
||||
c5bdef3aaa2744626aef3c217ce29e1900d357b3 2.6.1-start
|
||||
c5bdef3aaa2744626aef3c217ce29e1900d357b3 DRTVWR-43_2.6.1-beta1
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa 2.6.1-release
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release
|
||||
56b2778c743c2a964d82e1caf11084d76a87de2c 2.6.2-start
|
||||
d1203046bb653b763f835b04d184646949d8dd5c 2.6.2-beta1
|
||||
d1203046bb653b763f835b04d184646949d8dd5c DRTVWR-45_2.6.2-beta1
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 2.6.2-release
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release
|
||||
42f32494bac475d0737799346f6831558ae8bf5d 2.6.0-release
|
||||
42f32494bac475d0737799346f6831558ae8bf5d DRTVWR-39_2.6.0-release
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa 2.6.1-release
|
||||
c9182ed77d427c759cfacf49a7b71a2e20d522aa DRTVWR-42_2.6.1-release
|
||||
52b2263ab28f0976c689fd0b76c55a9eb027cdbf end-of-develop.py
|
||||
ec32f1045e7c2644015245df3a9933620aa194b8 2.6.3-start
|
||||
d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc 2.6.3-beta1
|
||||
d7fcefabdf32bb61a9ea6d6037c1bb26190a85bc DRTVWR-47_2.6.3-beta1
|
||||
0630e977504af5ea320c58d33cae4e1ddee793e9 2.6.3-beta2
|
||||
0630e977504af5ea320c58d33cae4e1ddee793e9 DRTVWR-48_2.6.3-beta2
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release
|
||||
3178e311da3a8739a85363665006ea3c4610cad4 dons-headless-hackathon-work
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 2.6.2-release
|
||||
214180ad5714ce8392b82bbebcc92f4babd98300 DRTVWR-44_2.6.2-release
|
||||
7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd 2.6.5-beta1
|
||||
7db558aaa7c176f2022b3e9cfe38ac72f6d1fccd DRTVWR-50_2.6.5-beta1
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 2.6.3-release
|
||||
8f2da1701c81a62352df2b8d413d27fb2cade9a6 DRTVWR-46_2.6.3-release
|
||||
800cefce8d364ffdd2f383cbecb91294da3ea424 2.6.6-start
|
||||
bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 2.6.6-beta1
|
||||
bb1075286b3b147b1dae2e3d6b2d56f04ff03f35 DRTVWR-52_2.6.6-beta1
|
||||
5e349dbe9cc84ea5795af8aeb6d473a0af9d4953 2.6.8-start
|
||||
dac76a711da5f1489a01c1fa62ec97d99c25736d 2.6.6-release
|
||||
dac76a711da5f1489a01c1fa62ec97d99c25736d DRTVWR-51_2.6.6-release
|
||||
5e349dbe9cc84ea5795af8aeb6d473a0af9d4953 2.6.8-start
|
||||
beafa8a9bd1d1b670b7523d865204dc4a4b38eef 2.6.8-beta1
|
||||
beafa8a9bd1d1b670b7523d865204dc4a4b38eef DRTVWR-55_2.6.8-beta1
|
||||
be2000b946f8cb3de5f44b2d419287d4c48ec4eb 2.6.8-release
|
||||
|
|
@ -119,50 +119,50 @@ e67da2c6e3125966dd49eef98b36317afac1fcfe 2.6.9-start
|
|||
9f79a6ed8fdcd2f3dac33ea6b3236eeb278dccfe 2.7.2-start
|
||||
e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb 2.7.2-beta1
|
||||
e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb DRTVWR-63_2.7.2-beta1
|
||||
6a3e7e403bd19e45fdfc2fcc716867af3ab80861 2.7.3-start
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release
|
||||
6a3e7e403bd19e45fdfc2fcc716867af3ab80861 2.7.3-start
|
||||
6af10678de4736222b2c3f7e010e984fb5b327de 2.7.4-start
|
||||
be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1
|
||||
be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release
|
||||
19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start
|
||||
09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1
|
||||
09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1
|
||||
6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release
|
||||
6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start
|
||||
e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release
|
||||
057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release
|
||||
6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release
|
||||
6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release
|
||||
502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start
|
||||
2c7e459e0c883f8e406b932e41e60097e9ee077e 2.8.1-beta1
|
||||
2c7e459e0c883f8e406b932e41e60097e9ee077e DRTVWR-73_2.8.1-beta1
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 2.8.0-release
|
||||
493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release
|
||||
54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start
|
||||
ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release
|
||||
29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release
|
||||
4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix
|
||||
4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix
|
||||
54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start
|
||||
ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start
|
||||
599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1
|
||||
599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release
|
||||
6b678ea52f90d5c14181661dcd2546e25bde483e 3.0.0-start
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 3.0.0-beta1
|
||||
b0be6ce3adfef3a014a2389d360539f8a86c5439 DRTVWR-78_3.0.0-beta1
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 3.0.0-release
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release
|
||||
fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release
|
||||
82a2079ffcb57ecb1b3849cb41376b443e1eb912 3.0.1-start
|
||||
364fd63517fbacbbcb9129d096187171ba8c9e48 3.0.1-beta1
|
||||
364fd63517fbacbbcb9129d096187171ba8c9e48 DRTVWR-81_3.0.1-beta1
|
||||
f2412ecd6740803ea9452f1d17fd872e263a0df7 3.0.2-start
|
||||
42784bf50fa01974bada2a1af3892ee09c93fcda 3.0.2-beta1
|
||||
42784bf50fa01974bada2a1af3892ee09c93fcda DRTVWR-83_3.0.2-beta1
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 3.0.0-release
|
||||
1778f26b6d0ae762dec3ca37140f66620f2485d9 DRTVWR-77_3.0.0-release
|
||||
e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e 3.0.2-beta2
|
||||
e5c9af2d7980a99a71650be3a0cf7b2b3c3b897e DRTVWR-86_3.0.2-beta2
|
||||
b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
|
||||
|
|
@ -170,9 +170,9 @@ b95ddac176ac944efdc85cbee94ac2e1eab44c79 3.0.3-start
|
|||
6694f3f062aa45f64ab391d25a3eb3d5eb1b0871 DRTVWR-85_3.0.3-beta1
|
||||
61aa7974df089e8621fe9a4c69bcdefdb3cc208a 3.0.3-beta2
|
||||
61aa7974df089e8621fe9a4c69bcdefdb3cc208a DRTVWR-89_3.0.3-beta2
|
||||
586907287be581817b2422b5137971b22d54ea48 3.0.4-start
|
||||
0496d2f74043cf4e6058e76ac3db03d44cff42ce 3.0.3-release
|
||||
0496d2f74043cf4e6058e76ac3db03d44cff42ce DRTVWR-84_3.0.3-release
|
||||
586907287be581817b2422b5137971b22d54ea48 3.0.4-start
|
||||
92a3aa04775438226399b19deee12ac3b5a62838 3.0.5-start
|
||||
c7282e59f374ee904bd793c3c444455e3399b0c5 3.1.0-start
|
||||
2657fa785bbfac115852c41bd0adaff74c2ad5da 3.1.0-beta1
|
||||
|
|
@ -193,11 +193,11 @@ e440cd1dfbd128d7d5467019e497f7f803640ad6 DRTVWR-95_3.2.0-beta1
|
|||
c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start
|
||||
9e390d76807fa70d356b8716fb83b8ce42a629ef 3.2.1-beta1
|
||||
9e390d76807fa70d356b8716fb83b8ce42a629ef DRTVWR-100_3.2.1-beta1
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release
|
||||
40b46edba007d15d0059c80864b708b99c1da368 3.2.2-start
|
||||
523df3e67378541498d516d52af4402176a26bac 3.2.2-beta1
|
||||
523df3e67378541498d516d52af4402176a26bac DRTVWR-102_3.2.2-beta1
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release
|
||||
80f3e30d8aa4d8f674a48bd742aaa6d8e9eae0b5 3.2.3-start
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start
|
||||
|
|
@ -248,68 +248,58 @@ bb9932a7a5fd00edf52d95f354e3b37ae6a942db DRTVWR-156
|
|||
6414ecdabc5d89515b08d1f872cf923ed3a5523a DRTVWR-148
|
||||
2a3965b3ad202df7ea25d2be689291bb14a1280e DRTVWR-155
|
||||
24a7281bef42bd4430ceb25db8b195449c2c7de3 DRTVWR-153
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
5910f8063a7e1ddddf504c2f35ca831cc5e8f469 DRTVWR-160
|
||||
f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 3.3.3-beta1
|
||||
f0a174c2adb4bc39b16722a61d7eeb4f2a1d4843 DRTVWR-144
|
||||
089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163
|
||||
2d6c0634b11e6f3df11002b8510a72a0433da00a DRTVWR-164
|
||||
600f3b3920d94de805ac6dc8bb6def9c069dd360 DRTVWR-162
|
||||
80b5e5e9775966d3839331ffa7a16a60f9d7c930 DRTVWR-165
|
||||
fdcc08a4f20ae9bb060f4693c8980d216534efdf 3.3.3-beta2
|
||||
af5f3e43e6e4424b1da19d9e16f6b853a7b822ed DRTVWR-169
|
||||
4b3c68199a86cabaa5d9466d7b0f7e141e901d7a 3.3.3-beta3
|
||||
6428242e124b523813bfaf4c45b3d422f0298c81 3.3.3-release
|
||||
a716684aa7c07c440b1de5815b8a1f3dd3fd8bfb DRTVWR-159
|
||||
9a78ac13f047056f788c4734dd91aebfe30970e3 DRTVWR-157
|
||||
089e5c84b2dece68f2b016c842ef9b5de4786842 DRTVWR-161
|
||||
c08e2ac17a99973b2a94477659220b99b8847ae2 DRTVWR-163
|
||||
b9d0170b62eb1c7c3adaa37a0b13a833e5e659f9 DRTVWR-171
|
||||
050e48759337249130f684b4a21080b683f61732 DRTVWR-168
|
||||
09ef7fd1b0781f33b8a3a9af6236b7bcb4831910 DRTVWR-170
|
||||
f87bfbe0b62d26f451d02a47c80ebef6b9168fc2 DRTVWR-158
|
||||
f91d003091a61937a044652c4c674447f7dcbb7a 3.3.4-beta1
|
||||
005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167
|
||||
bce218b2b45b730b22cc51e4807aa8b571cadef3 DRTVWR-173
|
||||
cbea6356ce9cb0c313b6777f10c5c14783264fcc DRTVWR-174
|
||||
82b5330bc8b17d0d4b598832e9c5a92e90075682 3.3.4-beta2
|
||||
57d221de3df94f90b55204313c2cef044a3c0ae2 DRTVWR-176
|
||||
eb539c65e6ee26eea2bf373af2d0f4b52dc91289 DRTVWR-177
|
||||
a8057e1b9a1246b434a27405be35e030f7d28b0c 3.3.4-beta3
|
||||
888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175
|
||||
4281aa899fb2cedb7a9ca7ce91c5c29d4aa69594 DRTVWR-180
|
||||
5c08e1d8edd871807153603b690e3ee9dbb548aa DRTVWR-183
|
||||
6c75f220b103db1420919c8b635fe53e2177f318 3.3.4-beta4
|
||||
9cd174d3a54d93d409a7c346a15b8bfb40fc58f4 DRTVWR-184
|
||||
ab2ffc547c8a8950ff187c4f6c95e5334fab597b 3.3.4-beta5
|
||||
28e100d0379a2b0710c57647a28fc5239d3d7b99 3.3.4-release
|
||||
005dfe5c4c377207d065fb27858d2eb0b53b143a DRTVWR-167
|
||||
888768f162d2c0a8de1dcc5fb9a08bd8bd120a6b DRTVWR-175
|
||||
a8b3eca451a9eaab59987efb0ab1c4217e3f2dcc DRTVWR-182
|
||||
1f27cdfdc54246484f8afbbe42ce48e954175cbd 3.4.0-beta1
|
||||
81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186
|
||||
47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190
|
||||
cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181
|
||||
c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188
|
||||
9ee9387789701d597130f879d9011a4958753862 DRTVWR-189
|
||||
47f0d08ba7ade0a3905074009067c6d3df7e16ae DRTVWR-190
|
||||
421126293dcbde918e0da027ca0ab9deb5b4fbf2 DRTVWR-192
|
||||
4b2c52aecb7a75de31dbb12d9f5b9a251d8707be DRTVWR-191
|
||||
33a2fc7a910ae29ff8b4850316ed7fbff9f64d33 DRTVWR-195
|
||||
e9732c739c8a72a590216951505ea9c76a526a84 DRTVWR-193
|
||||
78ca0bbf43a92e8914d4cfa87d69a6717ef7d4cf DRTVWR-194
|
||||
7602f61c804a512764e349c034c02ddabeefebc4 DRTVWR-196
|
||||
ae5c83dd61d2d37c45f1d5b8bf2b036d87599f1b DRTVWR-198
|
||||
507bdfbd6bf844a511c1ffeda4baa80016ed1346 DRTVWR-197
|
||||
b1dbb1a83f48f93f6f878cff9e52d2cb635e145c 3.4.0-beta2
|
||||
37402e2b19af970d51b0a814d79892cc5647532b DRTVWR-200
|
||||
182a9bf30e81070361bb020a78003b1cf398e79c 3.4.0-beta3
|
||||
248f4acd92a706c79e842bc83d80baa7369c0c2e DRTVWR-203
|
||||
6dfb0fba782c9233dd95f24ec48146db0d3f210b DRTVWR-199
|
||||
7c9102fb998885621919f2474a002c35b583539b 3.3.4-release2
|
||||
7649a3dff5ec22d3727377e5f02efd0f421e4cb5 DRTVWR-201
|
||||
84fb70dfe3444e75a44fb4bee43e2fc8221cebdd 3.4.0-beta4
|
||||
092a9effbedd1a0276fa5ced520992ce00f96fbf CHUI-PV-0
|
||||
de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202
|
||||
573e863be2f26d3687161def4b9fea9b7038dda8 3.4.0-beta5
|
||||
34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag
|
||||
6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205
|
||||
7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206
|
||||
8c9085066c78ed5f6c9379dc054c82a6fcdb1851 DRTVWR-207
|
||||
351eea5f9dc192fc5ddea3b02958de97677a0a12 3.3.4-release3
|
||||
af7b28e75bd5a629cd9e0dc46fb3f1757626f493 DRTVWR-212
|
||||
|
|
@ -320,7 +310,6 @@ ceed0b65a69f1eac20d523e0203320a32f9a3f3c DRTVWR-215
|
|||
97977c67245f52db20eb15f1918cc0f24778cabc 3.4.0-release
|
||||
5adb2b8f96c3cac88ad7c7d996d707f1b29df336 3.4.1-beta1
|
||||
b3f74858a1c8720c82d0978f3877a3fc8ba459ec 3.4.1-beta1a
|
||||
b61afe175b829c149d369524a4e974dfda99facf DRTVWR-219
|
||||
2b779f233ee6f38c89cb921650c773a96e63da92 DRTVWR-220
|
||||
0b9d95f4bfb6867cbf56eaec51633b0da2f1262d DRTVWR-221
|
||||
e6e553761829dc0270eaaa712b7cb0622535b076 3.4.1-beta3
|
||||
|
|
@ -345,21 +334,42 @@ baf97f06ae17223614c5e31aa42e71d87cff07fe DRTVWR-236
|
|||
b2f21e3442542283a80e7eaebae9f833e5a927b6 DRTVWR-237
|
||||
3f9be82de642d468c5fc272cb9d96b46b5498402 3.4.1-beta12
|
||||
e59ffd3fe0838ae6b09b242a6e9df71761b88f41 3.4.1-release
|
||||
81f6b745ef27f5915fd07f988fdec9944f2bb73e DRTVWR-186
|
||||
cc953f00956be52cc64c30637bbeec310eea603f DRTVWR-181
|
||||
c04e68e1b0034fd0a20815ae24c77e5f8428e822 DRTVWR-188
|
||||
4b2c52aecb7a75de31dbb12d9f5b9a251d8707be DRTVWR-191
|
||||
78ca0bbf43a92e8914d4cfa87d69a6717ef7d4cf DRTVWR-194
|
||||
248f4acd92a706c79e842bc83d80baa7369c0c2e DRTVWR-203
|
||||
de3be913f68813a9bac7d1c671fef96d1159bcd6 DRTVWR-202
|
||||
34dbbe2b00afe90352d3acf8290eb10ab90d1c8b oz-build-test-tag
|
||||
6ee71714935ffcd159db3d4f5800c1929aac54e1 DRTVWR-205
|
||||
7b22c612fc756e0ea63b10b163e81d107f85dbf8 DRTVWR-206
|
||||
b61afe175b829c149d369524a4e974dfda99facf DRTVWR-219
|
||||
32896d5e920ca9a29256ff3b747c2e99752aa5ae DRTVWR-217
|
||||
704bbae7b182a1f2811a47a054e680522966f54a 3.4.2-beta1
|
||||
d799593b53ed733862e9a13871e318e886469377 DRTVWR-208
|
||||
e497dcde7a3653e384eb223a8a460030e89c294c DRTVWR-223
|
||||
288539fc0408ed4b69a99665de33bbbc2c3c08fe DRTVWR-216
|
||||
e664473c16df1d82ffaff382e7b3e023da202d52 3.4.2-beta2
|
||||
93ab02d83f51e30a3cabad98aff89601befd9413 DRTVWR-240
|
||||
0891d7a773a31397dcad48be3fa66531d567a821 DRTVWR-242
|
||||
710785535362b3cb801b6a3dc4703be3373bd0cd 3.4.2-beta3
|
||||
e9a5886052433d5db9e504ffaca10890f9932979 DRTVWR-243
|
||||
73b84b9864dc650fe7c8fc9f52361450f0849004 3.4.2-beta4
|
||||
16310aabccf315870f7cc9bf966926c0ad6954fa 3.4.2-release
|
||||
d799593b53ed733862e9a13871e318e886469377 DRTVWR-208
|
||||
e497dcde7a3653e384eb223a8a460030e89c294c DRTVWR-223
|
||||
93ab02d83f51e30a3cabad98aff89601befd9413 DRTVWR-240
|
||||
2aa72e3372a83dece4df9cf72fb1e7c34f90b5e3 DRTVWR-209
|
||||
f7bedce18ad52283e6072814db23318907261487 DRTVWR-238
|
||||
7b64c96fbcadf360bd2feaae19d330166b70877c DRTVWR-210
|
||||
e9a5886052433d5db9e504ffaca10890f9932979 DRTVWR-243
|
||||
73b84b9864dc650fe7c8fc9f52361450f0849004 3.4.2-beta4
|
||||
5e4e4128b256525bafc07a62e35ae8527aaa9c9d DRTVWR-241
|
||||
f1d3b3fcab28ed9ea532bf50db0ba96f5c8cc8e9 DRTVWR-232
|
||||
4918b150e75df6b516fb6c2616d32043fa6b4cac DRTVWR-245
|
||||
94ab2b49458ab372a95d2d6949fdf574f413068d 3.4.3-beta1
|
||||
965b9a35e260c0f53be1a25f0db7abc8a67eaf47 DRTVWR-252
|
||||
bb10adc4f76cf0067fca7075146f00cdc0740e9d DRTVWR-251
|
||||
ab0aa2f6ba22b52fed30a2337197f589156edc75 DRTVWR-253
|
||||
48382ec79741671d19ce4cc3e8cd59e9a521e4a7 DRTVWR-254
|
||||
937ec902bb9a1cbceff17bd89e3923352b0a5fbc DRTVWR-256
|
||||
44e764a6ac9e672a4f3bce821a4b6a218590c374 DRTVWR-258
|
||||
c23d734065ed593b2413385aecd8366d8e0ee96b DRTVWR-257
|
||||
452ce96d4046dc05a3ecaecc203e2cc8ddd72e76 DRTVWR-259
|
||||
5cba5f39d0a81d659f24ebc4b5efd025a39e3db1 3.4.3-release
|
||||
|
|
|
|||
|
|
@ -111,7 +111,15 @@ const int HTTP_TRACE_MIN = HTTP_TRACE_OFF;
|
|||
const int HTTP_TRACE_MAX = HTTP_TRACE_CURL_BODIES;
|
||||
|
||||
// Request retry limits
|
||||
const int HTTP_RETRY_COUNT_DEFAULT = 5;
|
||||
//
|
||||
// At a minimum, retries need to extend past any throttling
|
||||
// window we're expecting from central services. In the case
|
||||
// of Linden services running through the caps routers, there's
|
||||
// a five-second or so window for throttling with some spillover.
|
||||
// We want to span a few windows to allow transport to slow
|
||||
// after onset of the throttles and then recover without a final
|
||||
// failure. Other systems may need other constants.
|
||||
const int HTTP_RETRY_COUNT_DEFAULT = 8;
|
||||
const int HTTP_RETRY_COUNT_MIN = 0;
|
||||
const int HTTP_RETRY_COUNT_MAX = 100;
|
||||
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ public:
|
|||
//
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
LLCore::HttpStatus status;
|
||||
bool do_random(false);
|
||||
bool do_verbose(false);
|
||||
|
||||
|
|
@ -215,6 +216,9 @@ int main(int argc, char** argv)
|
|||
// Initialization
|
||||
init_curl();
|
||||
LLCore::HttpRequest::createService();
|
||||
LLCore::HttpRequest::setPolicyClassOption(LLCore::HttpRequest::DEFAULT_POLICY_ID,
|
||||
LLCore::HttpRequest::CP_CONNECTION_LIMIT,
|
||||
concurrency_limit);
|
||||
LLCore::HttpRequest::startThread();
|
||||
|
||||
// Get service point
|
||||
|
|
@ -228,7 +232,7 @@ int main(int argc, char** argv)
|
|||
ws.loadTextureUuids(uuids);
|
||||
ws.mRandomRange = do_random;
|
||||
ws.mVerbose = do_verbose;
|
||||
ws.mMaxConcurrency = concurrency_limit;
|
||||
ws.mMaxConcurrency = 100;
|
||||
|
||||
if (! ws.mTextures.size())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -51,11 +51,13 @@ void check_framebuffer_status()
|
|||
}
|
||||
|
||||
bool LLRenderTarget::sUseFBO = false;
|
||||
U32 LLRenderTarget::sCurFBO = 0;
|
||||
|
||||
LLRenderTarget::LLRenderTarget() :
|
||||
mResX(0),
|
||||
mResY(0),
|
||||
mFBO(0),
|
||||
mPreviousFBO(0),
|
||||
mDepth(0),
|
||||
mStencil(0),
|
||||
mUseDepth(false),
|
||||
|
|
@ -107,6 +109,9 @@ void LLRenderTarget::resize(U32 resx, U32 resy, U32 color_fmt)
|
|||
|
||||
bool LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage, bool use_fbo, S32 samples)
|
||||
{
|
||||
resx = llmin(resx, (U32) 4096);
|
||||
resy = llmin(resy, (U32) 4096);
|
||||
|
||||
stop_glerror();
|
||||
release();
|
||||
stop_glerror();
|
||||
|
|
@ -146,7 +151,7 @@ bool LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo
|
|||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, LLTexUnit::getInternalType(mUsage), mDepth, 0);
|
||||
stop_glerror();
|
||||
}
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, sCurFBO);
|
||||
}
|
||||
|
||||
stop_glerror();
|
||||
|
|
@ -233,7 +238,7 @@ bool LLRenderTarget::addColorAttachment(U32 color_fmt)
|
|||
|
||||
check_framebuffer_status();
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, sCurFBO);
|
||||
}
|
||||
|
||||
mTex.push_back(tex);
|
||||
|
|
@ -322,7 +327,7 @@ void LLRenderTarget::shareDepthBuffer(LLRenderTarget& target)
|
|||
|
||||
check_framebuffer_status();
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, sCurFBO);
|
||||
|
||||
target.mUseDepth = true;
|
||||
}
|
||||
|
|
@ -385,9 +390,13 @@ void LLRenderTarget::bindTarget()
|
|||
{
|
||||
if (mFBO)
|
||||
{
|
||||
mPreviousFBO = sCurFBO;
|
||||
|
||||
stop_glerror();
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mFBO);
|
||||
sCurFBO = mFBO;
|
||||
|
||||
stop_glerror();
|
||||
if (gGLManager.mHasDrawBuffers)
|
||||
{ //setup multiple render targets
|
||||
|
|
@ -413,16 +422,6 @@ void LLRenderTarget::bindTarget()
|
|||
sBoundTarget = this;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLRenderTarget::unbindTarget()
|
||||
{
|
||||
if (gGLManager.mHasFramebufferObject)
|
||||
{
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
}
|
||||
sBoundTarget = NULL;
|
||||
}
|
||||
|
||||
void LLRenderTarget::clear(U32 mask_in)
|
||||
{
|
||||
U32 mask = GL_COLOR_BUFFER_BIT;
|
||||
|
|
@ -488,7 +487,8 @@ void LLRenderTarget::flush(bool fetch_depth)
|
|||
else
|
||||
{
|
||||
stop_glerror();
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, mPreviousFBO);
|
||||
sCurFBO = mPreviousFBO;
|
||||
stop_glerror();
|
||||
}
|
||||
}
|
||||
|
|
@ -518,7 +518,7 @@ void LLRenderTarget::copyContents(LLRenderTarget& source, S32 srcX0, S32 srcY0,
|
|||
stop_glerror();
|
||||
glCopyTexSubImage2D(LLTexUnit::getInternalType(mUsage), 0, srcX0, srcY0, dstX0, dstY0, dstX1, dstY1);
|
||||
stop_glerror();
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, sCurFBO);
|
||||
stop_glerror();
|
||||
}
|
||||
else
|
||||
|
|
@ -535,7 +535,7 @@ void LLRenderTarget::copyContents(LLRenderTarget& source, S32 srcX0, S32 srcY0,
|
|||
stop_glerror();
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
stop_glerror();
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, sCurFBO);
|
||||
stop_glerror();
|
||||
}
|
||||
}
|
||||
|
|
@ -561,7 +561,7 @@ void LLRenderTarget::copyContentsToFramebuffer(LLRenderTarget& source, S32 srcX0
|
|||
stop_glerror();
|
||||
glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
stop_glerror();
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, sCurFBO);
|
||||
stop_glerror();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ public:
|
|||
//whether or not to use FBO implementation
|
||||
static bool sUseFBO;
|
||||
static U32 sBytesAllocated;
|
||||
static U32 sCurFBO;
|
||||
|
||||
LLRenderTarget();
|
||||
~LLRenderTarget();
|
||||
|
|
@ -96,9 +97,6 @@ public:
|
|||
//applies appropriate viewport
|
||||
void bindTarget();
|
||||
|
||||
//unbind target for rendering
|
||||
static void unbindTarget();
|
||||
|
||||
//clear render targer, clears depth buffer if present,
|
||||
//uses scissor rect if in copy-to-texture mode
|
||||
void clear(U32 mask = 0xFFFFFFFF);
|
||||
|
|
@ -148,6 +146,7 @@ protected:
|
|||
std::vector<U32> mTex;
|
||||
std::vector<U32> mInternalFormat;
|
||||
U32 mFBO;
|
||||
U32 mPreviousFBO;
|
||||
U32 mDepth;
|
||||
bool mStencil;
|
||||
bool mUseDepth;
|
||||
|
|
|
|||
|
|
@ -14290,5 +14290,17 @@
|
|||
<real>1.0</real>
|
||||
</array>
|
||||
</map>
|
||||
|
||||
<key>SimulateFBOFailure</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>[DEBUG] Make allocateScreenBuffer return false. Used to test error handling.</string>
|
||||
<key>Persist</key>
|
||||
<integer>0</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
</map>
|
||||
</llsd>
|
||||
|
|
|
|||
|
|
@ -2093,7 +2093,6 @@ uniform sampler2D diffuseMap;
|
|||
uniform vec2 rcp_screen_res;
|
||||
uniform vec4 rcp_frame_opt;
|
||||
uniform vec4 rcp_frame_opt2;
|
||||
uniform vec2 screen_res;
|
||||
VARYING vec2 vary_fragcoord;
|
||||
VARYING vec2 vary_tc;
|
||||
|
||||
|
|
|
|||
|
|
@ -70,11 +70,11 @@ ATI ASUS EAH58xx .*ATI.*ASUS.*EAH58.* 5 1 1 4.1
|
|||
ATI ASUS EAH62xx .*ATI.*ASUS.*EAH62.* 2 1 0 0
|
||||
ATI ASUS EAH63xx .*ATI.*ASUS.*EAH63.* 2 1 0 0
|
||||
ATI ASUS EAH64xx .*ATI.*ASUS.*EAH64.* 2 1 0 0
|
||||
ATI ASUS EAH65xx .*ATI.*ASUS.*EAH65.* 2 1 0 0
|
||||
ATI ASUS EAH66xx .*ATI.*ASUS.*EAH66.* 3 1 0 0
|
||||
ATI ASUS EAH65xx .*ATI.*ASUS.*EAH65.* 2 1 0 4.1
|
||||
ATI ASUS EAH66xx .*ATI.*ASUS.*EAH66.* 3 1 0 4.1
|
||||
ATI ASUS EAH67xx .*ATI.*ASUS.*EAH67.* 3 1 0 0
|
||||
ATI ASUS EAH68xx .*ATI.*ASUS.*EAH68.* 5 1 0 0
|
||||
ATI ASUS EAH69xx .*ATI.*ASUS.*EAH69.* 5 1 0 0
|
||||
ATI ASUS EAH68xx .*ATI.*ASUS.*EAH68.* 5 1 0 4
|
||||
ATI ASUS EAH69xx .*ATI.*ASUS.*EAH69.* 5 1 0 4.1
|
||||
ATI ASUS Radeon X1xxx .*ATI.*ASUS.*X1.* 2 1 1 2.1
|
||||
ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 0 0
|
||||
ATI Radeon X19xx .*ATI.*(Radeon|Diamond) X19.* ?.* 2 1 1 2.1
|
||||
|
|
@ -108,13 +108,22 @@ ATI Radeon HD 65xx .*ATI.*AMD Radeon.* HD [67]5..[MG] 2 1 1 4.2
|
|||
ATI Radeon HD 66xx .*ATI.*AMD Radeon.* HD [67]6..[MG] 3 1 1 4.2
|
||||
ATI Radeon HD 7100 .*ATI.*AMD Radeon.* HD 71.* 2 1 0 0
|
||||
ATI Radeon HD 7200 .*ATI.*AMD Radeon.* HD 72.* 2 1 0 0
|
||||
ATI Radeon HD 7300 .*ATI.*AMD Radeon.* HD 73.* 2 1 0 0
|
||||
ATI Radeon HD 7400 .*ATI.*AMD Radeon.* HD 74.* 2 1 0 0
|
||||
ATI Radeon HD 7300 .*ATI.*AMD Radeon.* HD 73.* 2 1 0 4.2
|
||||
ATI Radeon HD 7400 .*ATI.*AMD Radeon.* HD 74.* 2 1 0 4.2
|
||||
ATI Radeon HD 7500 .*ATI.*AMD Radeon.* HD 75.* 3 1 1 4.2
|
||||
ATI Radeon HD 7600 .*ATI.*AMD Radeon.* HD 76.* 3 1 0 0
|
||||
ATI Radeon HD 7600 .*ATI.*AMD Radeon.* HD 76.* 3 1 0 4.2
|
||||
ATI Radeon HD 7700 .*ATI.*AMD Radeon.* HD 77.* 4 1 1 4.2
|
||||
ATI Radeon HD 7800 .*ATI.*AMD Radeon.* HD 78.* 5 1 1 4.2
|
||||
ATI Radeon HD 7900 .*ATI.*AMD Radeon.* HD 79.* 5 1 1 4.2
|
||||
ATI ASUS HD7100 .*ATI.*ASUS.* HD71.* 2 1 0 0
|
||||
ATI ASUS HD7200 .*ATI.*ASUS.* HD72.* 2 1 0 0
|
||||
ATI ASUS HD7300 .*ATI.*ASUS.* HD73.* 2 1 0 0
|
||||
ATI ASUS HD7400 .*ATI.*ASUS.* HD74.* 2 1 0 0
|
||||
ATI ASUS HD7500 .*ATI.*ASUS.* HD75.* 3 1 1 4.2
|
||||
ATI ASUS HD7600 .*ATI.*ASUS.* HD76.* 3 1 0 0
|
||||
ATI ASUS HD7700 .*ATI.*ASUS.* HD77.* 4 1 1 4.2
|
||||
ATI ASUS HD7800 .*ATI.*ASUS.* HD78.* 5 1 1 4.2
|
||||
ATI ASUS HD7900 .*ATI.*ASUS.* HD79.* 5 1 1 4.2
|
||||
ATI Mobility Radeon 4100 .*ATI.*Mobility.*41.. 1 1 1 3.3
|
||||
ATI Mobility Radeon 7xxx .*ATI.*Mobility.*Radeon 7.* 0 1 1 1.3
|
||||
ATI Mobility Radeon 8xxx .*ATI.*Mobility.*Radeon 8.* 0 1 0 0
|
||||
|
|
@ -167,6 +176,7 @@ ATI Radeon HD 3400 .*ATI.*Radeon HD *34.. 1 1 1 4
|
|||
ATI Radeon HD 3500 .*ATI.*Radeon HD *35.. 2 1 0 0
|
||||
ATI Radeon HD 3600 .*ATI.*Radeon HD *36.. 3 1 1 3.3
|
||||
ATI Radeon HD 3700 .*ATI.*Radeon HD *37.. 3 1 0 0
|
||||
ATI HD3700 .*ATI.* HD37.. 3 1 0 3.3
|
||||
ATI Radeon HD 3800 .*ATI.*Radeon HD *38.. 3 1 1 4
|
||||
ATI Radeon HD 4100 .*ATI.*Radeon HD *41.. 1 1 0 0
|
||||
ATI Radeon HD 4200 .*ATI.*Radeon HD *42.. 1 1 1 4
|
||||
|
|
@ -176,8 +186,10 @@ ATI Radeon HD 4500 .*ATI.*Radeon HD *45.. 2 1 1 3.3
|
|||
ATI Radeon HD 4600 .*ATI.*Radeon HD *46.. 3 1 1 4
|
||||
ATI Radeon HD 4700 .*ATI.*Radeon HD *47.. 3 1 1 3.3
|
||||
ATI Radeon HD 4800 .*ATI.*Radeon HD *48.. 3 1 1 4
|
||||
ATI ASUS EAH5400 .*ATI.*ASUS EAH54.. 3 1 1 4.2
|
||||
ATI Radeon HD 5400 .*ATI.*Radeon HD *54.. 3 1 1 4.2
|
||||
ATI Radeon HD 5500 .*ATI.*Radeon HD *55.. 3 1 1 4.2
|
||||
ATI ASUS EAH5500 .*ATI.*ASUS EAH55.. 3 1 1 4.2
|
||||
ATI Radeon HD 5600 .*ATI.*Radeon HD *56.. 3 1 1 4.2
|
||||
ATI Radeon HD 5700 .*ATI.*Radeon HD *57.. 3 1 1 4.2
|
||||
ATI Radeon HD 5800 .*ATI.*Radeon HD *58.. 4 1 1 4.2
|
||||
|
|
@ -270,7 +282,7 @@ ATI FirePro 5000 .*ATI.*FirePro V5.* 3 1 0 0
|
|||
ATI FirePro 7000 .*ATI.*FirePro V7.* 3 1 0 0
|
||||
ATI FirePro M .*ATI.*FirePro M.* 3 1 1 4.2
|
||||
ATI R300 (9700) .*R300.* 0 1 1 2.1
|
||||
ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1 0 0
|
||||
ATI Radeon .*ATI.*(Diamond|Radeon).* 0 1 0 4.2
|
||||
Intel X3100 .*Intel.*X3100.* 1 1 1 2.1
|
||||
Intel GMA 3600 .*Intel.* 3600.* 0 1 1 3
|
||||
Intel 830M .*Intel.*830M 0 0 0 0
|
||||
|
|
@ -293,9 +305,9 @@ Intel Brookdale .*Intel.*Brookdale.* 0 0 1 1.3
|
|||
Intel Cantiga .*Intel.*Cantiga.* 0 0 1 2
|
||||
Intel Eaglelake .*Intel.*Eaglelake.* 1 1 1 2
|
||||
Intel Graphics Media HD .*Intel.*Graphics Media.*HD.* 1 1 1 2.1
|
||||
Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 0
|
||||
Intel HD Graphics 2000 .*Intel.*HD Graphics 2.* 2 1 0 4
|
||||
Intel HD Graphics 3000 .*Intel.*HD Graphics 3.* 3 1 1 3.1
|
||||
Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 3.3
|
||||
Intel HD Graphics 4000 .*Intel.*HD Graphics 4.* 3 1 1 4
|
||||
Intel HD2000 .*Intel.*HD2000.* 2 1 0 0
|
||||
Intel HD3000 .*Intel.*HD3000.* 3 1 0 0
|
||||
Intel HD Graphics .*Intel.*HD Graphics.* 2 1 1 4
|
||||
|
|
@ -341,8 +353,8 @@ NVIDIA GT 325M .*NVIDIA .*GT *32*M.* 3 1 1 3.3
|
|||
NVIDIA GT 330M .*NVIDIA .*GT *33*M.* 3 1 1 3.3
|
||||
NVIDIA GT 340M .*NVIDIA .*GT *34*M.* 4 1 1 3.3
|
||||
NVIDIA GTS 350M .*NVIDIA .*GTS *35*M.* 4 1 1 3.3
|
||||
NVIDIA GTS 360M .*NVIDIA .*GTS *36*M.* 5 1 1 3.3
|
||||
NVIDIA 405M .*NVIDIA .* 40*M.* 2 1 0 0
|
||||
NVIDIA GTS 360M .*NVIDIA .*GTS *360M.* 5 1 1 3.3
|
||||
NVIDIA 405M .*NVIDIA .* 40*M.* 2 1 0 4.2
|
||||
NVIDIA 410M .*NVIDIA .* 41*M.* 3 1 0 0
|
||||
NVIDIA GT 415M .*NVIDIA .*GT *41*M.* 3 1 1 4.2
|
||||
NVIDIA GT 420M .*NVIDIA .*GT *42*M.* 3 1 1 4.2
|
||||
|
|
@ -369,46 +381,51 @@ NVIDIA GTX 670M .*NVIDIA .*GTX *67*M.* 5 1 1 4.2
|
|||
NVIDIA GTX 680M .*NVIDIA .*GTX *68*M.* 5 1 0 0
|
||||
NVIDIA GTX 690M .*NVIDIA .*GTX *69*M.* 5 1 0 0
|
||||
NVIDIA G100 .*NVIDIA .*G10.* 3 1 1 4.2
|
||||
NVIDIA GT 120 .*NVIDIA .*GT *12.* 2 1 0 0
|
||||
NVIDIA GT 130 .*NVIDIA .*GT *13.* 2 1 0 0
|
||||
NVIDIA GT 120 .*NVIDIA .*GT *12.* 2 1 0 3
|
||||
NVIDIA GT 130 .*NVIDIA .*GT *13.* 2 1 0 3.3
|
||||
NVIDIA GTS 150 .*NVIDIA .*GTS *15.* 2 1 0 0
|
||||
NVIDIA 205 .*NVIDIA .*GeForce 205.* 2 1 1 3.3
|
||||
NVIDIA 200 .*NVIDIA .*GeForce 20.* 2 1 1 3.3
|
||||
NVIDIA G200 .*NVIDIA .*GeForce G20.* 2 1 1 3.3
|
||||
NVIDIA G210 .*NVIDIA .*GeForce G210.* 3 1 1 3.3
|
||||
NVIDIA 210 .*NVIDIA .*GeForce 210.* 3 1 1 3.3
|
||||
NVIDIA GT 220 .*NVIDIA .*GT *22.* 2 1 1 3.3
|
||||
NVIDIA GT 230 .*NVIDIA .*GT *23.* 2 1 1 3.3
|
||||
NVIDIA GT 240 .*NVIDIA .*GT *24.* 4 1 1 3.3
|
||||
NVIDIA GTS 240 .*NVIDIA .*GTS *24.* 4 1 1 3.3
|
||||
NVIDIA GTS 250 .*NVIDIA .*GTS *25.* 4 1 1 3.3
|
||||
NVIDIA GTX 260 .*NVIDIA .*GTX *26.* 4 1 1 3.3
|
||||
NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 4 1 0 0
|
||||
NVIDIA GTX 270 .*NVIDIA .*GTX *27.* 4 1 0 3.3
|
||||
NVIDIA GTX 280 .*NVIDIA .*GTX *28.* 4 1 1 3.3
|
||||
NVIDIA GTX 290 .*NVIDIA .*GTX *29.* 5 1 0 0
|
||||
NVIDIA GTX 290 .*NVIDIA .*GTX *29.* 5 1 0 3.3
|
||||
NVIDIA 310 .*NVIDIA .*GeForce 310.* 3 1 1 3.3
|
||||
NVIDIA 315 .*NVIDIA .*GeForce 315.* 3 1 1 3.3
|
||||
NVIDIA GT 320 .*NVIDIA .*GT *32.* 3 1 0 0
|
||||
NVIDIA GT 330 .*NVIDIA .*GT *33.* 3 1 0 0
|
||||
NVIDIA GT 320 .*NVIDIA .*GT *32.* 3 1 0 3.3
|
||||
NVIDIA GT 330 .*NVIDIA .*GT *33.* 3 1 0 3.3
|
||||
NVIDIA GT 340 .*NVIDIA .*GT *34.* 3 1 0 0
|
||||
NVIDIA 405 .*NVIDIA .* 405.* 3 1 0 0
|
||||
NVIDIA 405 .*NVIDIA .* 405.* 3 1 0 3.3
|
||||
NVIDIA GT 420 .*NVIDIA .*GT *42.* 3 1 1 4.2
|
||||
NVIDIA GT 430 .*NVIDIA .*GT *43.* 3 1 1 4.1
|
||||
NVIDIA GT 440 .*NVIDIA .*GT *44.* 4 1 0 0
|
||||
NVIDIA GT 430 .*NVIDIA .*GT *43.* 3 1 1 4.2
|
||||
NVIDIA GT 440 .*NVIDIA .*GT *44.* 4 1 0 4.2
|
||||
NVIDIA GTS 450 .*NVIDIA .*GTS *45.* 4 1 1 4.2
|
||||
NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 5 1 1 4.2
|
||||
NVIDIA GTX 460 .*NVIDIA .*GTX *46.* 5 1 1 4.3
|
||||
NVIDIA GTX 470 .*NVIDIA .*GTX *47.* 5 1 1 4.2
|
||||
NVIDIA GTX 480 .*NVIDIA .*GTX *48.* 5 1 1 4.2
|
||||
NVIDIA 510 .*NVIDIA .* 510.* 3 1 0 0
|
||||
NVIDIA GT 520 .*NVIDIA .*GT *52.* 3 1 1 4.2
|
||||
NVIDIA GT 530 .*NVIDIA .*GT *53.* 3 1 1 4.2
|
||||
NVIDIA GT 540 .*NVIDIA .*GT *54.* 3 1 1 4.2
|
||||
NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 5 1 1 4.2
|
||||
NVIDIA GTX 550 .*NVIDIA .*GTX *55.* 5 1 1 4.3
|
||||
NVIDIA GTX 560 .*NVIDIA .*GTX *56.* 5 1 1 4.2
|
||||
NVIDIA GTX 570 .*NVIDIA .*GTX *57.* 5 1 1 4.2
|
||||
NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 5 1 1 4.2
|
||||
NVIDIA GTX 580 .*NVIDIA .*GTX *58.* 5 1 1 4.3
|
||||
NVIDIA GTX 590 .*NVIDIA .*GTX *59.* 5 1 1 4.2
|
||||
NVIDIA GT 610 .*NVIDIA .*GT *61.* 3 1 1 4.2
|
||||
NVIDIA GT 620 .*NVIDIA .*GT *62.* 3 1 0 0
|
||||
NVIDIA GT 630 .*NVIDIA .*GT *63.* 3 1 0 0
|
||||
NVIDIA GT 640 .*NVIDIA .*GT *64.* 3 1 0 0
|
||||
NVIDIA GT 620 .*NVIDIA .*GT *62.* 3 1 0 4.2
|
||||
NVIDIA GT 630 .*NVIDIA .*GT *63.* 3 1 0 4.2
|
||||
NVIDIA GT 640 .*NVIDIA .*GT *64.* 3 1 0 4.3
|
||||
NVIDIA GT 650 .*NVIDIA .*GT *65.* 3 1 1 4.2
|
||||
NVIDIA GTX 660 .*NVIDIA .*GTX *66.* 5 1 0 0
|
||||
NVIDIA GTX 650 .*NVIDIA .*GTX *65.* 3 1 1 4.2
|
||||
NVIDIA GTX 660 .*NVIDIA .*GTX *66.* 5 1 0 4.3
|
||||
NVIDIA GTX 670 .*NVIDIA .*GTX *67.* 5 1 1 4.2
|
||||
NVIDIA GTX 680 .*NVIDIA .*GTX *68.* 5 1 1 4.2
|
||||
NVIDIA GTX 690 .*NVIDIA .*GTX *69.* 5 1 1 4.2
|
||||
|
|
@ -442,8 +459,8 @@ NVIDIA GeForce 7600 .*NVIDIA .*GeForce 76.* 2 1 1 2.1
|
|||
NVIDIA GeForce 7800 .*NVIDIA .*GeForce 78.* 2 1 1 2.1
|
||||
NVIDIA GeForce 7900 .*NVIDIA .*GeForce 79.* 3 1 1 2.1
|
||||
NVIDIA GeForce 8100 .*NVIDIA .*GeForce 81.* 1 1 0 0
|
||||
NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1 0 0
|
||||
NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 0
|
||||
NVIDIA GeForce 8200M .*NVIDIA .*GeForce 8200M.* 1 1 0 3.3
|
||||
NVIDIA GeForce 8200 .*NVIDIA .*GeForce 82.* 1 1 0 2.1
|
||||
NVIDIA GeForce 8300 .*NVIDIA .*GeForce 83.* 3 1 1 3.3
|
||||
NVIDIA GeForce 8400M .*NVIDIA .*GeForce 8400M.* 1 1 1 3.3
|
||||
NVIDIA GeForce 8400 .*NVIDIA .*GeForce 84.* 2 1 1 3.3
|
||||
|
|
@ -455,9 +472,9 @@ NVIDIA GeForce 8700 .*NVIDIA .*GeForce 87.* 3 1 0 0
|
|||
NVIDIA GeForce 8800M .*NVIDIA .*GeForce 8800M.* 2 1 1 3.3
|
||||
NVIDIA GeForce 8800 .*NVIDIA .*GeForce 88.* 3 1 1 3.3
|
||||
NVIDIA GeForce 9100M .*NVIDIA .*GeForce 9100M.* 0 1 0 0
|
||||
NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 0
|
||||
NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1 0 0
|
||||
NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 0
|
||||
NVIDIA GeForce 9100 .*NVIDIA .*GeForce 91.* 0 1 0 3.3
|
||||
NVIDIA GeForce 9200M .*NVIDIA .*GeForce 9200M.* 1 1 0 3.1
|
||||
NVIDIA GeForce 9200 .*NVIDIA .*GeForce 92.* 1 1 0 3.3
|
||||
NVIDIA GeForce 9300M .*NVIDIA .*GeForce 9300M.* 1 1 1 3.3
|
||||
NVIDIA GeForce 9300 .*NVIDIA .*GeForce 93.* 1 1 1 3.3
|
||||
NVIDIA GeForce 9400M .*NVIDIA .*GeForce 9400M.* 2 1 1 3.3
|
||||
|
|
@ -470,7 +487,7 @@ NVIDIA GeForce 9700M .*NVIDIA .*GeForce 9700M.* 0 1 1 3.3
|
|||
NVIDIA GeForce 9800M .*NVIDIA .*GeForce 9800M.* 2 1 1 3.3
|
||||
NVIDIA GeForce 9800 .*NVIDIA .*GeForce 98.* 3 1 1 3.3
|
||||
NVIDIA GeForce FX 5100 .*NVIDIA .*GeForce FX 51.* 0 1 0 0
|
||||
NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 0
|
||||
NVIDIA GeForce FX 5200 .*NVIDIA .*GeForce FX 52.* 0 1 0 2.1
|
||||
NVIDIA GeForce FX 5300 .*NVIDIA .*GeForce FX 53.* 0 1 0 0
|
||||
NVIDIA GeForce FX 5500 .*NVIDIA .*GeForce FX 55.* 0 1 1 2.1
|
||||
NVIDIA GeForce FX 5600 .*NVIDIA .*GeForce FX 56.* 1 1 1 2.1
|
||||
|
|
@ -505,7 +522,7 @@ NVIDIA D9M .*NVIDIA .*D9M.* 1 1 0 0
|
|||
NVIDIA G94 .*NVIDIA .*G94.* 3 1 0 0
|
||||
NVIDIA GeForce Go 6 .*GeForce Go 6.* 1 1 0 0
|
||||
NVIDIA ION 2 .*NVIDIA .*ION 2.* 2 1 0 0
|
||||
NVIDIA ION .*NVIDIA Corporation.*ION.* 2 1 1 0
|
||||
NVIDIA ION .*NVIDIA Corporation.*ION.* 2 1 1 3.3
|
||||
NVIDIA NB8M .*NVIDIA .*NB8M.* 1 1 0 0
|
||||
NVIDIA NB8P .*NVIDIA .*NB8P.* 2 1 0 0
|
||||
NVIDIA NB9E .*NVIDIA .*NB9E.* 3 1 0 0
|
||||
|
|
@ -513,7 +530,7 @@ NVIDIA NB9M .*NVIDIA .*NB9M.* 1 1 0 0
|
|||
NVIDIA NB9P .*NVIDIA .*NB9P.* 2 1 0 0
|
||||
NVIDIA N10 .*NVIDIA .*N10.* 1 1 0 0
|
||||
NVIDIA GeForce PCX .*GeForce PCX.* 0 1 0 0
|
||||
NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 0 0
|
||||
NVIDIA Generic .*NVIDIA .*Unknown.* 0 0 0 3
|
||||
NVIDIA NV17 .*NVIDIA .*NV17.* 0 1 0 0
|
||||
NVIDIA NV34 .*NVIDIA .*NV34.* 0 1 0 0
|
||||
NVIDIA NV35 .*NVIDIA .*NV35.* 0 1 0 0
|
||||
|
|
@ -521,7 +538,7 @@ NVIDIA NV36 .*NVIDIA .*NV36.* 1 1 0 0
|
|||
NVIDIA NV41 .*NVIDIA .*NV41.* 1 1 0 0
|
||||
NVIDIA NV43 .*NVIDIA .*NV43.* 1 1 0 0
|
||||
NVIDIA NV44 .*NVIDIA .*NV44.* 1 1 0 0
|
||||
NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 0
|
||||
NVIDIA nForce .*NVIDIA .*nForce.* 0 0 0 3.3
|
||||
NVIDIA MCP51 .*NVIDIA .*MCP51.* 1 1 0 0
|
||||
NVIDIA MCP61 .*NVIDIA .*MCP61.* 1 1 0 0
|
||||
NVIDIA MCP67 .*NVIDIA .*MCP67.* 1 1 0 0
|
||||
|
|
@ -532,40 +549,40 @@ NVIDIA MCP78 .*NVIDIA .*MCP78.* 1 1 0 0
|
|||
NVIDIA MCP79 .*NVIDIA .*MCP79.* 1 1 0 0
|
||||
NVIDIA MCP7A .*NVIDIA .*MCP7A.* 1 1 0 0
|
||||
NVIDIA Quadro2 .*Quadro2.* 0 1 0 0
|
||||
NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 0 0
|
||||
NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1 0 0
|
||||
NVIDIA Quadro 1000M .*Quadro.*1000M.* 2 1 0 4.2
|
||||
NVIDIA Quadro 2000 M/D .*Quadro.*2000.* 3 1 0 4.2
|
||||
NVIDIA Quadro 3000M .*Quadro.*3000M.* 3 1 0 0
|
||||
NVIDIA Quadro 4000M .*Quadro.*4000M.* 3 1 0 0
|
||||
NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 0 0
|
||||
NVIDIA Quadro 4000 .*Quadro *4000.* 3 1 0 4.2
|
||||
NVIDIA Quadro 50x0 M .*Quadro.*50.0.* 3 1 0 0
|
||||
NVIDIA Quadro 6000 .*Quadro.*6000.* 3 1 0 0
|
||||
NVIDIA Quadro 400 .*Quadro.*400.* 2 1 0 0
|
||||
NVIDIA Quadro 600 .*Quadro.*600.* 2 1 0 0
|
||||
NVIDIA Quadro 400 .*Quadro.*400.* 2 1 0 3.3
|
||||
NVIDIA Quadro 600 .*Quadro.*600.* 2 1 0 3.3
|
||||
NVIDIA Quadro4 .*Quadro4.* 0 1 0 0
|
||||
NVIDIA Quadro DCC .*Quadro DCC.* 0 1 0 0
|
||||
NVIDIA Quadro CX .*Quadro.*CX.* 3 1 0 0
|
||||
NVIDIA Quadro FX 770M .*Quadro.*FX *770M.* 2 1 0 0
|
||||
NVIDIA Quadro FX 1500M .*Quadro.*FX *1500M.* 1 1 0 0
|
||||
NVIDIA Quadro FX 1500M .*Quadro.*FX *1500M.* 1 1 0 2.1
|
||||
NVIDIA Quadro FX 1600M .*Quadro.*FX *1600M.* 2 1 0 0
|
||||
NVIDIA Quadro FX 2500M .*Quadro.*FX *2500M.* 2 1 0 0
|
||||
NVIDIA Quadro FX 2700M .*Quadro.*FX *2700M.* 3 1 0 0
|
||||
NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 0 0
|
||||
NVIDIA Quadro FX 2800M .*Quadro.*FX *2800M.* 3 1 0 3.3
|
||||
NVIDIA Quadro FX 3500 .*Quadro.*FX *3500.* 2 1 0 2.1
|
||||
NVIDIA Quadro FX 3600 .*Quadro.*FX *3600.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 0 0
|
||||
NVIDIA Quadro FX 3700 .*Quadro.*FX *3700.* 3 1 0 3.3
|
||||
NVIDIA Quadro FX 3800 .*Quadro.*FX *3800.* 3 1 0 3.2
|
||||
NVIDIA Quadro FX 4500 .*Quadro.*FX *45.* 3 1 0 0
|
||||
NVIDIA Quadro FX 880M .*Quadro.*FX *880M.* 3 1 0 0
|
||||
NVIDIA Quadro FX 880M .*Quadro.*FX *880M.* 3 1 0 3.3
|
||||
NVIDIA Quadro FX 4800 .*NVIDIA .*Quadro *FX *4800.* 3 1 0 0
|
||||
NVIDIA Quadro FX .*Quadro FX.* 1 1 0 0
|
||||
NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 1 2.1
|
||||
NVIDIA Quadro FX .*Quadro FX.* 1 1 0 3.3
|
||||
NVIDIA Quadro NVS 1xxM .*Quadro NVS *1.[05]M.* 0 1 1 3.3
|
||||
NVIDIA Quadro NVS 300M .*NVIDIA .*NVS *300M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 320M .*NVIDIA .*NVS *320M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 2100M .*NVIDIA .*NVS *2100M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 3100M .*NVIDIA .*NVS *3100M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS 4200M .*NVIDIA .*NVS *4200M.* 2 1 0 4.1
|
||||
NVIDIA Quadro NVS 5100M .*NVIDIA .*NVS *5100M.* 2 1 0 0
|
||||
NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 0 0
|
||||
NVIDIA Quadro NVS .*NVIDIA .*NVS 0 1 0 3.2
|
||||
NVIDIA Corporation N12P .*NVIDIA .*N12P.* 1 1 1 4.1
|
||||
NVIDIA Corporation N11M .*NVIDIA .*N11M.* 2 1 0 0
|
||||
NVIDIA RIVA TNT .*RIVA TNT.* 0 0 0 0
|
||||
|
|
@ -579,5 +596,3 @@ Apple Generic Apple.*Generic.* 0 0 0 0
|
|||
Apple Software Renderer Apple.*Software Renderer.* 0 0 0 0
|
||||
Humper Humper.* 0 1 1 2.1
|
||||
PowerVR SGX545 .*PowerVR SGX.* 1 1 1 3
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -419,7 +419,7 @@ void LLFeatureManager::parseGPUTable(std::string filename)
|
|||
|
||||
// setup the tokenizer
|
||||
std::string buf(buffer);
|
||||
std::string cls, label, expr, supported;
|
||||
std::string cls, label, expr, supported, stats_based, expected_gl_version;
|
||||
boost_tokenizer tokens(buf, boost::char_separator<char>("\t\n"));
|
||||
boost_tokenizer::iterator token_iter = tokens.begin();
|
||||
|
||||
|
|
@ -440,6 +440,14 @@ void LLFeatureManager::parseGPUTable(std::string filename)
|
|||
{
|
||||
supported = *token_iter++;
|
||||
}
|
||||
if (token_iter != tokens.end())
|
||||
{
|
||||
stats_based = *token_iter++;
|
||||
}
|
||||
if (token_iter != tokens.end())
|
||||
{
|
||||
expected_gl_version = *token_iter++;
|
||||
}
|
||||
|
||||
if (label.empty() || expr.empty() || cls.empty() || supported.empty())
|
||||
{
|
||||
|
|
@ -450,7 +458,9 @@ void LLFeatureManager::parseGPUTable(std::string filename)
|
|||
json << "{'label' : '" << label << "',\n" <<
|
||||
"'regexp' : '" << expr << "',\n" <<
|
||||
"'class' : '" << cls << "',\n" <<
|
||||
"'supported' : '" << supported << "'\n},\n";
|
||||
"'supported' : '" << supported << "',\n" <<
|
||||
"'stats_based' : " << stats_based << ",\n" <<
|
||||
"'gl_version' : " << expected_gl_version << "\n},\n";
|
||||
#endif
|
||||
|
||||
for (U32 i = 0; i < expr.length(); i++) /*Flawfinder: ignore*/
|
||||
|
|
@ -720,7 +730,9 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
|
|||
maskFeatures("High");
|
||||
maskFeatures("Class5");
|
||||
break;
|
||||
|
||||
case 6:
|
||||
maskFeatures("Ultra");
|
||||
break;
|
||||
default:
|
||||
maskFeatures("Low");
|
||||
maskFeatures("Class0");
|
||||
|
|
|
|||
|
|
@ -749,7 +749,10 @@ void LLFloaterPreference::onClose(bool app_quitting)
|
|||
{
|
||||
gSavedSettings.setS32("LastPrefTab", getChild<LLTabContainer>("pref core")->getCurrentPanelIndex());
|
||||
LLPanelLogin::setAlwaysRefresh(false);
|
||||
cancel();
|
||||
if (!app_quitting)
|
||||
{
|
||||
cancel();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterPreference::onOpenHardwareSettings()
|
||||
|
|
|
|||
|
|
@ -238,6 +238,7 @@ LLGroupMgrGroupData::LLGroupMgrGroupData(const LLUUID& id) :
|
|||
mPendingRoleMemberRequest(FALSE),
|
||||
mAccessTime(0.0f)
|
||||
{
|
||||
mMemberVersion.generate();
|
||||
}
|
||||
|
||||
void LLGroupMgrGroupData::setAccessed()
|
||||
|
|
@ -318,14 +319,14 @@ void LLGroupMgrGroupData::setRoleData(const LLUUID& role_id, LLRoleData role_dat
|
|||
role_data.mChangeType = RC_UPDATE_DATA;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
role_data.mChangeType = RC_UPDATE_POWERS;
|
||||
}
|
||||
|
||||
mRoleChanges[role_id] = role_data;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
llwarns << "Change being made to non-existant role " << role_id << llendl;
|
||||
}
|
||||
}
|
||||
|
|
@ -424,6 +425,7 @@ void LLGroupMgrGroupData::removeMemberData()
|
|||
}
|
||||
mMembers.clear();
|
||||
mMemberDataComplete = FALSE;
|
||||
mMemberVersion.generate();
|
||||
}
|
||||
|
||||
void LLGroupMgrGroupData::removeRoleData()
|
||||
|
|
@ -945,6 +947,8 @@ void LLGroupMgr::processGroupMembersReply(LLMessageSystem* msg, void** data)
|
|||
}
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
|
||||
if (group_datap->mMembers.size() == (U32)group_datap->mMemberCount)
|
||||
{
|
||||
group_datap->mMemberDataComplete = TRUE;
|
||||
|
|
@ -1771,8 +1775,6 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
|
|||
bool start_message = true;
|
||||
LLMessageSystem* msg = gMessageSystem;
|
||||
|
||||
|
||||
|
||||
LLGroupMgrGroupData* group_datap = LLGroupMgr::getInstance()->getGroupData(group_id);
|
||||
if (!group_datap) return;
|
||||
|
||||
|
|
@ -1833,6 +1835,8 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id,
|
|||
{
|
||||
gAgent.sendReliableMessage();
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1990,6 +1994,8 @@ void LLGroupMgr::processCapGroupMembersRequest(const LLSD& content)
|
|||
group_datap->mMembers[member_id] = data;
|
||||
}
|
||||
|
||||
group_datap->mMemberVersion.generate();
|
||||
|
||||
// Technically, we have this data, but to prevent completely overhauling
|
||||
// this entire system (it would be nice, but I don't have the time),
|
||||
// I'm going to be dumb and just call services I most likely don't need
|
||||
|
|
|
|||
|
|
@ -236,6 +236,8 @@ public:
|
|||
F32 getAccessTime() const { return mAccessTime; }
|
||||
void setAccessed();
|
||||
|
||||
const LLUUID& getMemberVersion() const { return mMemberVersion; }
|
||||
|
||||
public:
|
||||
typedef std::map<LLUUID,LLGroupMemberData*> member_list_t;
|
||||
typedef std::map<LLUUID,LLGroupRoleData*> role_list_t;
|
||||
|
|
@ -284,6 +286,9 @@ private:
|
|||
|
||||
BOOL mPendingRoleMemberRequest;
|
||||
F32 mAccessTime;
|
||||
|
||||
// Generate a new ID every time mMembers
|
||||
LLUUID mMemberVersion;
|
||||
};
|
||||
|
||||
struct LLRoleAction
|
||||
|
|
|
|||
|
|
@ -670,7 +670,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
|
|||
{
|
||||
mMemberProgress = gdatap->mMembers.begin();
|
||||
mPendingMemberUpdate = TRUE;
|
||||
mUdpateSessionID.generate();
|
||||
|
||||
sSDTime = 0.0f;
|
||||
sElementTime = 0.0f;
|
||||
|
|
@ -730,7 +729,7 @@ void LLPanelGroupGeneral::updateMembers()
|
|||
// If name is not cached, onNameCache() should be called when it is cached and add this member to list.
|
||||
LLAvatarNameCache::get(mMemberProgress->first,
|
||||
boost::bind(&LLPanelGroupGeneral::onNameCache,
|
||||
this, mUdpateSessionID, member, _1, _2));
|
||||
this, gdatap->getMemberVersion(), member, _2));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -768,11 +767,15 @@ void LLPanelGroupGeneral::addMember(LLGroupMemberData* member)
|
|||
}
|
||||
}
|
||||
|
||||
void LLPanelGroupGeneral::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name)
|
||||
void LLPanelGroupGeneral::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name)
|
||||
{
|
||||
if (!member
|
||||
|| update_id != mUdpateSessionID)
|
||||
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
|
||||
|
||||
if (!gdatap
|
||||
|| !gdatap->isMemberDataComplete()
|
||||
|| gdatap->getMemberVersion() != update_id)
|
||||
{
|
||||
// Stale data
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ public:
|
|||
|
||||
virtual void setupCtrls (LLPanel* parent);
|
||||
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name);
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name);
|
||||
private:
|
||||
void reset();
|
||||
|
||||
|
|
@ -90,7 +90,6 @@ private:
|
|||
BOOL mChanged;
|
||||
BOOL mFirstUse;
|
||||
std::string mIncompleteMemberDataStr;
|
||||
LLUUID mUdpateSessionID;
|
||||
|
||||
// Group information (include any updates in updateChanged)
|
||||
LLLineEditor *mGroupNameEditor;
|
||||
|
|
|
|||
|
|
@ -745,7 +745,6 @@ LLPanelGroupMembersSubTab::LLPanelGroupMembersSubTab()
|
|||
mHasMatch(FALSE),
|
||||
mNumOwnerAdditions(0)
|
||||
{
|
||||
mUdpateSessionID = LLUUID::null;
|
||||
}
|
||||
|
||||
LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab()
|
||||
|
|
@ -1427,13 +1426,20 @@ U64 LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges(const LLUUID& ag
|
|||
return GP_NO_POWERS;
|
||||
}
|
||||
|
||||
LLGroupMemberData* member_data = gdatap->mMembers[agent_id];
|
||||
if ( !member_data )
|
||||
LLGroupMgrGroupData::member_list_t::iterator iter = gdatap->mMembers.find(agent_id);
|
||||
if ( iter == gdatap->mMembers.end() )
|
||||
{
|
||||
llwarns << "LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges() -- No member data for member with UUID " << agent_id << llendl;
|
||||
return GP_NO_POWERS;
|
||||
}
|
||||
|
||||
LLGroupMemberData* member_data = (*iter).second;
|
||||
if (!member_data)
|
||||
{
|
||||
llwarns << "LLPanelGroupMembersSubTab::getAgentPowersBasedOnRoleChanges() -- Null member data for member with UUID " << agent_id << llendl;
|
||||
return GP_NO_POWERS;
|
||||
}
|
||||
|
||||
//see if there are unsaved role changes for this agent
|
||||
role_change_data_map_t* role_change_datap = NULL;
|
||||
member_role_changes_map_t::iterator member = mMemberRoleChangeData.find(agent_id);
|
||||
|
|
@ -1548,10 +1554,6 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)
|
|||
mMemberProgress = gdatap->mMembers.begin();
|
||||
mPendingMemberUpdate = TRUE;
|
||||
mHasMatch = FALSE;
|
||||
// Generate unique ID for current updateMembers()- see onNameCache for details.
|
||||
// Using unique UUID is perhaps an overkill but this way we are perfectly safe
|
||||
// from coincidences.
|
||||
mUdpateSessionID.generate();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1579,14 +1581,14 @@ void LLPanelGroupMembersSubTab::update(LLGroupChange gc)
|
|||
}
|
||||
}
|
||||
|
||||
void LLPanelGroupMembersSubTab::addMemberToList(LLUUID id, LLGroupMemberData* data)
|
||||
void LLPanelGroupMembersSubTab::addMemberToList(LLGroupMemberData* data)
|
||||
{
|
||||
if (!data) return;
|
||||
LLUIString donated = getString("donation_area");
|
||||
donated.setArg("[AREA]", llformat("%d", data->getContribution()));
|
||||
|
||||
LLNameListCtrl::NameItem item_params;
|
||||
item_params.value = id;
|
||||
item_params.value = data->getID();
|
||||
|
||||
item_params.columns.add().column("name").font.name("SANSSERIF_SMALL").style("NORMAL");
|
||||
|
||||
|
|
@ -1600,17 +1602,12 @@ void LLPanelGroupMembersSubTab::addMemberToList(LLUUID id, LLGroupMemberData* da
|
|||
mHasMatch = TRUE;
|
||||
}
|
||||
|
||||
void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name)
|
||||
void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name)
|
||||
{
|
||||
// Update ID is used to determine whether member whose id is passed
|
||||
// into onNameCache() was passed after current or previous user-initiated update.
|
||||
// This is needed to avoid probable duplication of members in list after changing filter
|
||||
// or adding of members of another group if gets for their names were called on
|
||||
// previous update. If this id is from get() called from older update,
|
||||
// we do nothing.
|
||||
if (mUdpateSessionID != update_id) return;
|
||||
|
||||
if (!member)
|
||||
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
|
||||
if (!gdatap
|
||||
|| gdatap->getMemberVersion() != update_id
|
||||
|| !member)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -1618,7 +1615,7 @@ void LLPanelGroupMembersSubTab::onNameCache(const LLUUID& update_id, LLGroupMemb
|
|||
// trying to avoid unnecessary hash lookups
|
||||
if (matchesSearchFilter(av_name.getUserName()))
|
||||
{
|
||||
addMemberToList(id, member);
|
||||
addMemberToList(member);
|
||||
if(!mMembersList->getEnabled())
|
||||
{
|
||||
mMembersList->setEnabled(TRUE);
|
||||
|
|
@ -1672,14 +1669,14 @@ void LLPanelGroupMembersSubTab::updateMembers()
|
|||
{
|
||||
if (matchesSearchFilter(av_name.getUserName()))
|
||||
{
|
||||
addMemberToList(mMemberProgress->first, mMemberProgress->second);
|
||||
addMemberToList(mMemberProgress->second);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If name is not cached, onNameCache() should be called when it is cached and add this member to list.
|
||||
LLAvatarNameCache::get(mMemberProgress->first, boost::bind(&LLPanelGroupMembersSubTab::onNameCache,
|
||||
this, mUdpateSessionID, mMemberProgress->second, _1, _2));
|
||||
this, gdatap->getMemberVersion(), mMemberProgress->second, _2));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -187,8 +187,8 @@ public:
|
|||
|
||||
virtual void setGroupID(const LLUUID& id);
|
||||
|
||||
void addMemberToList(LLUUID id, LLGroupMemberData* data);
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLUUID& id, const LLAvatarName& av_name);
|
||||
void addMemberToList(LLGroupMemberData* data);
|
||||
void onNameCache(const LLUUID& update_id, LLGroupMemberData* member, const LLAvatarName& av_name);
|
||||
|
||||
protected:
|
||||
typedef std::map<LLUUID, LLRoleMemberChangeType> role_change_data_map_t;
|
||||
|
|
@ -210,9 +210,6 @@ protected:
|
|||
BOOL mPendingMemberUpdate;
|
||||
BOOL mHasMatch;
|
||||
|
||||
// This id is generated after each user initiated member list update(opening Roles or changing filter)
|
||||
LLUUID mUdpateSessionID;
|
||||
|
||||
member_role_changes_map_t mMemberRoleChangeData;
|
||||
U32 mNumOwnerAdditions;
|
||||
|
||||
|
|
|
|||
|
|
@ -1861,7 +1861,12 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
|
|||
|
||||
mFastCachep->seek(APR_SET, offset);
|
||||
|
||||
llassert_always(mFastCachep->read(head, TEXTURE_FAST_CACHE_ENTRY_OVERHEAD) == TEXTURE_FAST_CACHE_ENTRY_OVERHEAD);
|
||||
if(mFastCachep->read(head, TEXTURE_FAST_CACHE_ENTRY_OVERHEAD) != TEXTURE_FAST_CACHE_ENTRY_OVERHEAD)
|
||||
{
|
||||
//cache corrupted or under thread race condition
|
||||
closeFastCache();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
S32 image_size = head[0] * head[1] * head[2];
|
||||
if(!image_size) //invalid
|
||||
|
|
@ -1872,7 +1877,13 @@ LLPointer<LLImageRaw> LLTextureCache::readFromFastCache(const LLUUID& id, S32& d
|
|||
discardlevel = head[3];
|
||||
|
||||
data = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), image_size);
|
||||
llassert_always(mFastCachep->read(data, image_size) == image_size);
|
||||
if(mFastCachep->read(data, image_size) != image_size)
|
||||
{
|
||||
FREE_MEM(LLImageBase::getPrivatePool(), data);
|
||||
closeFastCache();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
closeFastCache();
|
||||
}
|
||||
LLPointer<LLImageRaw> raw = new LLImageRaw(data, head[0], head[1], head[2], true);
|
||||
|
|
@ -1926,7 +1937,11 @@ bool LLTextureCache::writeToFastCache(S32 id, LLPointer<LLImageRaw> raw, S32 dis
|
|||
openFastCache();
|
||||
|
||||
mFastCachep->seek(APR_SET, offset);
|
||||
llassert_always(mFastCachep->write(mFastCachePadBuffer, TEXTURE_FAST_CACHE_ENTRY_SIZE) == TEXTURE_FAST_CACHE_ENTRY_SIZE);
|
||||
|
||||
//no need to do this assertion check. When it fails, let it fail quietly.
|
||||
//this failure could happen because other viewer removes the fast cache file when clearing cache.
|
||||
//--> llassert_always(mFastCachep->write(mFastCachePadBuffer, TEXTURE_FAST_CACHE_ENTRY_SIZE) == TEXTURE_FAST_CACHE_ENTRY_SIZE);
|
||||
mFastCachep->write(mFastCachePadBuffer, TEXTURE_FAST_CACHE_ENTRY_SIZE);
|
||||
|
||||
closeFastCache(true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4245,14 +4245,48 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
image_height = llmin(image_height, window_height);
|
||||
}
|
||||
|
||||
S32 original_width = 0;
|
||||
S32 original_height = 0;
|
||||
bool reset_deferred = false;
|
||||
|
||||
LLRenderTarget scratch_space;
|
||||
|
||||
F32 scale_factor = 1.0f ;
|
||||
if (!keep_window_aspect || (image_width > window_width) || (image_height > window_height))
|
||||
{
|
||||
// if image cropping or need to enlarge the scene, compute a scale_factor
|
||||
F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ;
|
||||
snapshot_width = (S32)(ratio * image_width) ;
|
||||
snapshot_height = (S32)(ratio * image_height) ;
|
||||
scale_factor = llmax(1.0f, 1.0f / ratio) ;
|
||||
if ((image_width > window_width || image_height > window_height) && LLPipeline::sRenderDeferred && !show_ui)
|
||||
{
|
||||
if (scratch_space.allocate(image_width, image_height, GL_RGBA, true, true))
|
||||
{
|
||||
original_width = gPipeline.mDeferredScreen.getWidth();
|
||||
original_height = gPipeline.mDeferredScreen.getHeight();
|
||||
|
||||
if (gPipeline.allocateScreenBuffer(image_width, image_height))
|
||||
{
|
||||
window_width = image_width;
|
||||
window_height = image_height;
|
||||
snapshot_width = image_width;
|
||||
snapshot_height = image_height;
|
||||
reset_deferred = true;
|
||||
mWorldViewRectRaw.set(0, image_height, image_width, 0);
|
||||
scratch_space.bindTarget();
|
||||
}
|
||||
else
|
||||
{
|
||||
scratch_space.release();
|
||||
gPipeline.allocateScreenBuffer(original_width, original_height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!reset_deferred)
|
||||
{
|
||||
// if image cropping or need to enlarge the scene, compute a scale_factor
|
||||
F32 ratio = llmin( (F32)window_width / image_width , (F32)window_height / image_height) ;
|
||||
snapshot_width = (S32)(ratio * image_width) ;
|
||||
snapshot_height = (S32)(ratio * image_height) ;
|
||||
scale_factor = llmax(1.0f, 1.0f / ratio) ;
|
||||
}
|
||||
}
|
||||
|
||||
if (show_ui && scale_factor > 1.f)
|
||||
|
|
@ -4441,11 +4475,20 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
gPipeline.resetDrawOrders();
|
||||
}
|
||||
|
||||
if (reset_deferred)
|
||||
{
|
||||
mWorldViewRectRaw = window_rect;
|
||||
scratch_space.flush();
|
||||
scratch_space.release();
|
||||
gPipeline.allocateScreenBuffer(original_width, original_height);
|
||||
|
||||
}
|
||||
|
||||
if (high_res)
|
||||
{
|
||||
send_agent_resume();
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -779,18 +779,57 @@ void LLPipeline::allocatePhysicsBuffer()
|
|||
}
|
||||
}
|
||||
|
||||
void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
||||
bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
||||
{
|
||||
refreshCachedSettings();
|
||||
U32 samples = RenderFSAASamples;
|
||||
|
||||
bool save_settings = sRenderDeferred;
|
||||
if (save_settings)
|
||||
{
|
||||
// Set this flag in case we crash while resizing window or allocating space for deferred rendering targets
|
||||
gSavedSettings.setBOOL("RenderInitError", TRUE);
|
||||
gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
|
||||
}
|
||||
|
||||
//try to allocate screen buffers at requested resolution and samples
|
||||
eFBOStatus ret = doAllocateScreenBuffer(resX, resY);
|
||||
|
||||
if (save_settings)
|
||||
{
|
||||
// don't disable shaders on next session
|
||||
gSavedSettings.setBOOL("RenderInitError", FALSE);
|
||||
gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
|
||||
}
|
||||
|
||||
if (ret == FBO_FAILURE)
|
||||
{ //FAILSAFE: screen buffer allocation failed, disable deferred rendering if it's enabled
|
||||
//NOTE: if the session closes successfully after this call, deferred rendering will be
|
||||
// disabled on future sessions
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
gSavedSettings.setBOOL("RenderDeferred", FALSE);
|
||||
LLPipeline::refreshCachedSettings();
|
||||
}
|
||||
}
|
||||
|
||||
return ret == FBO_SUCCESS_FULLRES;
|
||||
}
|
||||
|
||||
|
||||
LLPipeline::eFBOStatus LLPipeline::doAllocateScreenBuffer(U32 resX, U32 resY)
|
||||
{
|
||||
// try to allocate screen buffers at requested resolution and samples
|
||||
// - on failure, shrink number of samples and try again
|
||||
// - if not multisampled, shrink resolution and try again (favor X resolution over Y)
|
||||
// Make sure to call "releaseScreenBuffers" after each failure to cleanup the partially loaded state
|
||||
|
||||
U32 samples = RenderFSAASamples;
|
||||
|
||||
eFBOStatus ret = FBO_SUCCESS_FULLRES;
|
||||
if (!allocateScreenBuffer(resX, resY, samples))
|
||||
{
|
||||
//failed to allocate at requested specification, return false
|
||||
ret = FBO_FAILURE;
|
||||
|
||||
releaseScreenBuffers();
|
||||
//reduce number of samples
|
||||
while (samples > 0)
|
||||
|
|
@ -798,7 +837,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
|||
samples /= 2;
|
||||
if (allocateScreenBuffer(resX, resY, samples))
|
||||
{ //success
|
||||
return;
|
||||
return FBO_SUCCESS_LOWRES;
|
||||
}
|
||||
releaseScreenBuffers();
|
||||
}
|
||||
|
|
@ -811,22 +850,23 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY)
|
|||
resY /= 2;
|
||||
if (allocateScreenBuffer(resX, resY, samples))
|
||||
{
|
||||
return;
|
||||
return FBO_SUCCESS_LOWRES;
|
||||
}
|
||||
releaseScreenBuffers();
|
||||
|
||||
resX /= 2;
|
||||
if (allocateScreenBuffer(resX, resY, samples))
|
||||
{
|
||||
return;
|
||||
return FBO_SUCCESS_LOWRES;
|
||||
}
|
||||
releaseScreenBuffers();
|
||||
}
|
||||
|
||||
llwarns << "Unable to allocate screen buffer at any resolution!" << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
||||
{
|
||||
|
|
@ -854,10 +894,6 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
|
||||
if (LLPipeline::sRenderDeferred)
|
||||
{
|
||||
// Set this flag in case we crash while resizing window or allocating space for deferred rendering targets
|
||||
gSavedSettings.setBOOL("RenderInitError", TRUE);
|
||||
gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
|
||||
|
||||
S32 shadow_detail = RenderShadowDetail;
|
||||
BOOL ssao = RenderDeferredSSAO;
|
||||
|
||||
|
|
@ -869,7 +905,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false;
|
||||
if (samples > 0)
|
||||
{
|
||||
if (!mFXAABuffer.allocate(nhpo2(resX), nhpo2(resY), GL_RGBA, FALSE, FALSE, LLTexUnit::TT_TEXTURE, FALSE, samples)) return false;
|
||||
if (!mFXAABuffer.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_TEXTURE, FALSE, samples)) return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -903,7 +939,7 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
}
|
||||
}
|
||||
|
||||
U32 width = nhpo2(U32(resX*scale))/2;
|
||||
U32 width = (U32) (resX*scale);
|
||||
U32 height = width;
|
||||
|
||||
if (shadow_detail > 1)
|
||||
|
|
@ -922,9 +958,11 @@ bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples)
|
|||
}
|
||||
}
|
||||
|
||||
// don't disable shaders on next session
|
||||
gSavedSettings.setBOOL("RenderInitError", FALSE);
|
||||
gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
|
||||
//HACK make screenbuffer allocations start failing after 30 seconds
|
||||
if (gSavedSettings.getBOOL("SimulateFBOFailure"))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -7112,11 +7150,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield)
|
|||
|
||||
gGlowProgram.unbind();
|
||||
|
||||
if (LLRenderTarget::sUseFBO)
|
||||
/*if (LLRenderTarget::sUseFBO)
|
||||
{
|
||||
LLFastTimer ftm(FTM_RENDER_BLOOM_FBO);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
}
|
||||
}*/
|
||||
|
||||
gGLViewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft;
|
||||
gGLViewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom;
|
||||
|
|
@ -7992,10 +8030,6 @@ void LLPipeline::renderDeferredLighting()
|
|||
gGL.popMatrix();
|
||||
stop_glerror();
|
||||
|
||||
//copy depth and stencil from deferred screen
|
||||
//mScreen.copyContents(mDeferredScreen, 0, 0, mDeferredScreen.getWidth(), mDeferredScreen.getHeight(),
|
||||
// 0, 0, mScreen.getWidth(), mScreen.getHeight(), GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);
|
||||
|
||||
mScreen.bindTarget();
|
||||
// clear color buffer here - zeroing alpha (glow) is important or it will accumulate against sky
|
||||
glClearColor(0,0,0,0);
|
||||
|
|
@ -8767,8 +8801,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
}
|
||||
last_update = LLDrawPoolWater::sNeedsReflectionUpdate && LLDrawPoolWater::sNeedsDistortionUpdate;
|
||||
|
||||
LLRenderTarget::unbindTarget();
|
||||
|
||||
LLPipeline::sReflectionRender = FALSE;
|
||||
|
||||
if (!LLRenderTarget::sUseFBO)
|
||||
|
|
|
|||
|
|
@ -119,8 +119,25 @@ public:
|
|||
void createGLBuffers();
|
||||
void createLUTBuffers();
|
||||
|
||||
void allocateScreenBuffer(U32 resX, U32 resY);
|
||||
//allocate the largest screen buffer possible up to resX, resY
|
||||
//returns true if full size buffer allocated, false if some other size is allocated
|
||||
bool allocateScreenBuffer(U32 resX, U32 resY);
|
||||
|
||||
typedef enum {
|
||||
FBO_SUCCESS_FULLRES = 0,
|
||||
FBO_SUCCESS_LOWRES,
|
||||
FBO_FAILURE
|
||||
} eFBOStatus;
|
||||
|
||||
private:
|
||||
//implementation of above, wrapped for easy error handling
|
||||
eFBOStatus doAllocateScreenBuffer(U32 resX, U32 resY);
|
||||
public:
|
||||
|
||||
//attempt to allocate screen buffers at resX, resY
|
||||
//returns true if allocation successful, false otherwise
|
||||
bool allocateScreenBuffer(U32 resX, U32 resY, U32 samples);
|
||||
|
||||
void allocatePhysicsBuffer();
|
||||
|
||||
void resetVertexBuffers(LLDrawable* drawable);
|
||||
|
|
|
|||
|
|
@ -55,22 +55,31 @@
|
|||
name="LowGraphicsDivet"
|
||||
top_delta="-2"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="41"
|
||||
name="LowMidraphicsDivet"
|
||||
top_delta="-2"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="83"
|
||||
left_pad="41"
|
||||
name="MidGraphicsDivet"
|
||||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="85"
|
||||
name="HighGraphicsDivet"
|
||||
left_pad="41"
|
||||
name="MidHighGraphicsDivet"
|
||||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
|
|
@ -78,7 +87,25 @@
|
|||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="83"
|
||||
left_pad="41"
|
||||
name="HighGraphicsDivet"
|
||||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="41"
|
||||
name="HighUltraGraphicsDivet"
|
||||
top_delta="0"
|
||||
width="2" />
|
||||
<icon
|
||||
color="0.12 0.12 0.12 1"
|
||||
height="14"
|
||||
image_name="Rounded_Square"
|
||||
layout="topleft"
|
||||
left_pad="41"
|
||||
name="UltraGraphicsDivet"
|
||||
top_delta="0"
|
||||
width="2" />
|
||||
|
|
@ -91,7 +118,7 @@
|
|||
initial_value="0"
|
||||
layout="topleft"
|
||||
left="120"
|
||||
max_val="3"
|
||||
max_val="6"
|
||||
name="QualityPerformanceSelection"
|
||||
show_text="false"
|
||||
top_delta="-2"
|
||||
|
|
@ -120,12 +147,12 @@
|
|||
height="12"
|
||||
layout="topleft"
|
||||
left_delta="87"
|
||||
name="ShadersPrefText2"
|
||||
name="ShadersPrefText3"
|
||||
top_delta="0"
|
||||
width="80">
|
||||
Mid
|
||||
</text>
|
||||
<text
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
|
|
@ -136,8 +163,8 @@
|
|||
name="ShadersPrefText3"
|
||||
top_delta="0"
|
||||
width="80">
|
||||
High
|
||||
</text>
|
||||
High
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
|
|||
Loading…
Reference in New Issue