http://bugs.winehq.org/show_bug.cgi?id=16699
Summary: OpenGL anti-aliasing capabilities of nVidia gpu not exposed to Google Sketchup 7 Product: Wine Version: 1.1.11 Platform: PC OS/Version: Linux Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: ethana2@gmail.com
I have an nVidia GeForce 8400M GS, WINE 1.1.11 installed from an official .deb, and Google Sketchup doesn't see the anti-aliasing capabilities of the gpu.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #1 from Ethan Anderson ethana2@gmail.com 2009-01-01 04:35:08 --- Created an attachment (id=18359) --> (http://bugs.winehq.org/attachment.cgi?id=18359) Screenshot demonstrating problem
http://bugs.winehq.org/show_bug.cgi?id=16699
Roderick Colenbrander thunderbird2k@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |opengl
--- Comment #2 from Roderick Colenbrander thunderbird2k@gmx.net 2009-01-01 05:18:58 --- Hmm, I would expect this to just work as we do support multisampling. Perhaps Sketchup is performing some strange detection. Marking this as an opengl bug. Try to attach a +wgl log (WINEDEBUG=+wgl wine sketchup &> log) and attach it to here.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #3 from Ethan Anderson ethana2@gmail.com 2009-01-01 10:12:18 --- http://paste.ubuntu.com/97693/
Bugzilla wouldn't take the file, it's like 10% too big.
http://bugs.winehq.org/show_bug.cgi?id=16699
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dank@kegel.com
--- Comment #4 from Dan Kegel dank@kegel.com 2009-01-01 10:23:08 --- Ethan added in email: "[The problems are visually apparant], everything always looks all pixel-y."
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #5 from Austin English austinenglish@gmail.com 2009-01-01 17:47:07 --- (In reply to comment #3)
http://paste.ubuntu.com/97693/
Bugzilla wouldn't take the file, it's like 10% too big.
If it's too big, compress it with 'bzip2 -9', then attach.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #6 from Ethan Anderson ethana2@gmail.com 2009-01-01 17:57:59 --- Created an attachment (id=18373) --> (http://bugs.winehq.org/attachment.cgi?id=18373) WINEDEBUG=+wgl wine sketchup &> log
http://bugs.winehq.org/show_bug.cgi?id=16699
Jean-Louis Bourdon jean-louis.bourdon@laposte.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jean- | |louis.bourdon@laposte.net
--- Comment #7 from Jean-Louis Bourdon jean-louis.bourdon@laposte.net 2009-01-31 05:37:24 --- Agreed (wine 1.1.14, Sketchup 7, Nvidia GeForce Go 7200, driver 177.20)
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #8 from Dan Kegel dank@kegel.com 2009-05-23 23:49:13 --- Antialiasing still shown as 0x on my GeForce 7100 system with Nvidia driver version 180 in the Sketchup Preferences window.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #9 from Dan Kegel dank@kegel.com 2009-05-23 23:52:39 --- Can others confirm whether the problem is still there for them?
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #10 from Ethan Anderson ethana2@gmail.com 2009-05-24 00:04:40 --- I'm installing WINE from apt now, but I won't be able to do any real testing until tomorrow or the day after.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #11 from Vitaliy Margolen vitaliy@kievinfo.com 2009-05-24 11:56:53 --- Have you enabled it (Multisampling=enabled)? http://wiki.winehq.org/UsefulRegistryKeys
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #12 from Dan Kegel dank@kegel.com 2009-05-24 12:08:41 --- No, Roderick said it should just work, so I had no idea a registry key was needed. I'll give it a shot.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #13 from Dan Kegel dank@kegel.com 2009-05-24 18:35:59 --- Even after adding the registry key, I'm still seeing 0x on Windows / Preferences / OpenGL / Antialiasing.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #14 from Dan Kegel dank@kegel.com 2009-05-24 18:37:18 --- Created an attachment (id=21297) --> (http://bugs.winehq.org/attachment.cgi?id=21297) The registry key I created
http://bugs.winehq.org/show_bug.cgi?id=16699
Roderick Colenbrander thunderbird2k@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |thunderbird2k@gmail.com
--- Comment #15 from Roderick Colenbrander thunderbird2k@gmail.com 2009-06-10 03:13:33 --- Sketchup uses opengl and for opengl multisampling works out of the box. The registry key was needed for Direct3D due to bugs in the Nvidia drivers which prevented Direct3D from working at some point. That key can go away soon.
http://bugs.winehq.org/show_bug.cgi?id=16699
Marco teimcrr@libero.it changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |teimcrr@libero.it
--- Comment #16 from Marco teimcrr@libero.it 2009-08-22 09:09:28 --- I can confirm this bug with Google Sketchup Pro 7 and Ubuntu 8.04 Video card is nVidia 8800GT. Can't activate antialiasing from inside the program. However, if I set from nvidia-setting the OpenGL antialising to "override application setting", then antialising works fine (after restarting Sketchup). I use this workaround for now.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #17 from Dan Kegel dank@kegel.com 2009-08-22 12:51:08 --- That's interesting, thanks for the tip. Roderick, what do you make of that?
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #18 from Roderick Colenbrander thunderbird2k@gmail.com 2009-08-22 13:15:22 --- The way 'classic' opengl works is that there is a list of so called pixel formats. A pixel format has properties like the number of colors bits, color depth and also the level of 'anti-aliasing'. The Wine/Sketchup bug is that for some reason Sketchup is not happy with the pixel formats Wine offers. On a Windows box I checked the formats which Sketchup selects on Windows and the same are around on Wine. I would need to know what Sketchup is doing to fix the bug.
Adjusting of the anti-aliasing level in nvidia-settings basically overrides the pixel format a program selects in Wine. So when lets say Wine gives Sketchup pixel format number 10 which does not offer multisampling, after playing with nvidia-settings this pixel format 10 will receive multisampling support but the app is not aware of this.
So using nvidia-settings you can work around a Wine bug but since I don't know what Sketchup exactly wants (there might also just be a bug in Sketchup) I can't fix it.
Roderick
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #19 from Ethan Anderson ethana2@gmail.com 2009-08-22 13:26:22 --- So, the next step is to get this to a SketchUp developer, right? I was under the impression they were committed to making SketchUp work nicely in WINE, seeing as Linux based operating systems support has been their most requested feature since ever.
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #20 from Austin English austinenglish@gmail.com 2010-09-07 16:48:34 CDT --- This is your friendly reminder that there has been no bug activity for a year. Is this still an issue in current (1.3.2 or newer) wine?
http://bugs.winehq.org/show_bug.cgi?id=16699
Andrey andrey.slepuhin@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |andrey.slepuhin@gmail.com
--- Comment #21 from Andrey andrey.slepuhin@gmail.com 2010-10-10 07:43:03 CDT --- I have the same issue but with ATI Radeon HD4330. Even overriding the application settings in ATI Catalyst Control Center doesn't help. Wine-1.3.4 on Ubuntu 10.04. I tried Sketchup 7 and 8 with the same result. Also antialiasing doesn't work with SolidWorks eDrawings 2010 viewer, and I see a warning "No sertified OpenGL library found" on application startup.
http://bugs.winehq.org/show_bug.cgi?id=16699
frans fransvangorsel@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fransvangorsel@hotmail.com
http://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #22 from butraxz@gmail.com 2013-04-23 15:24:07 CDT --- No update for 900 days. Is this still an issue in 1.5.28 or higher or should this be closed as abandoned ?
https://bugs.winehq.org/show_bug.cgi?id=16699
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW URL| |http://dl.trimble.com/sketc | |hup/gsu8/FW-3-0-16846-EN.ex | |e CC| |focht@gmx.net Summary|OpenGL anti-aliasing |OpenGL anti-aliasing |capabilities of nVidia gpu |capabilities of graphics |not exposed to Google |driver not exposed to |Sketchup 7 |Google Sketchup 7/8 | |(wglGetPixelFormatAttribivA | |RB doesn't allow | |WGL_SWAP_METHOD_ARB | |support) Ever confirmed|0 |1
--- Comment #23 from Anastasius Focht focht@gmx.net --- Hello folks,
sorry being a few years late to the party ... confirming.
In my case the standard dialog 'Window' -> 'System Preferences' -> 'OpenGL' shows:
--- snip --- Colors: True color, Precision: Medium, Shadows: Yes, AA: 0x #1 -> 1,ICD,DBL,RGBA,32 (8-8-8-0),24,8,64 (16-16-16-16)
Colors: True color, Precision: Medium, Shadows: No, AA: 0x #38 -> 1,ICD,DBL,RGBA,32 (8-8-8-0),24,8,64 (16-16-16-16) --- snip ---
Using trace log and a debugger I figured out the following ...
The app code looks for 'WGL_ARB_multisample' cap in extension string:
--- snip --- 0023:Call opengl32.wglGetProcAddress(00afc22c "wglGetExtensionsStringARB") ret=0071106e 0023:trace:wgl:wglGetProcAddress returning wglGetExtensionsStringARB -> 0x7e340de2 0023:Ret opengl32.wglGetProcAddress() retval=7e340de2 ret=0071106e 0023:Call opengl32.wglGetCurrentDC() ret=0071107a 0023:Ret opengl32.wglGetCurrentDC() retval=00010028 ret=0071107a 0023:Call gdi32.__wine_get_wgl_driver(00010028,0000000b) ret=7e33e669 0023:Ret gdi32.__wine_get_wgl_driver() retval=7d384fc0 ret=7e33e669 0023:trace:wgl:X11DRV_wglGetExtensionsStringARB () returning "WGL_ARB_create_context WGL_ARB_create_context_profile WGL_ARB_pixel_format_float WGL_ATI_pixel_format_float WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_multisample WGL_ARB_pbuffer WGL_ARB_pixel_format WGL_ARB_render_texture WGL_NV_float_buffer WGL_NV_render_texture_rectangle WGL_EXT_extensions_string WGL_EXT_swap_control WGL_EXT_framebuffer_sRGB WGL_EXT_swap_control_tear WGL_NV_vertex_array_range WGL_WINE_pixel_format_passthrough" ... 0023:Call msvcr80.strstr(7d388a90 "WGL_ARB_create_context WGL_ARB_create_context_profile WGL_ARB_pixel_format_float WGL_ATI_pixel_format_float WGL_ARB_extensions_string WGL_ARB_make_current_read WGL_ARB_multisample WGL_ARB_pbuffer WGL_ARB_pixel_format WGL_ARB_render_texture WGL_NV_float_buffer WGL_NV_render_texture_rectangle WGL_EXT_e"...,00afc354 "WGL_ARB_multisample") ret=007110bd 0023:Ret msvcr80.strstr() retval=7d388b30 ret=007110bd --- snip ---
If supported it proceeds to check for 4x multisampling support (GLX_SAMPLES_ARB: 4). This succeeds in my case, I have NVIDIA blob:
--- snip --- 0023:Call gdi32.__wine_get_wgl_driver(0002004e,0000000b) ret=7e33e669 0023:Ret gdi32.__wine_get_wgl_driver() retval=7d384fc0 ret=7e33e669 0023:trace:wgl:X11DRV_wglChoosePixelFormatARB (0x2004e, 0x33ddc4, 0x33ddac, 1, 0x33dd9c, 0x33dda4): hackish 0023:fixme:wgl:X11DRV_wglChoosePixelFormatARB unused pfAttribFList 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[0] = 2001 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[1] = WGL_DRAW_TO_WINDOW_ARB: 1 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[2] = 2010 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[3] = WGL_SUPPORT_OPENGL_ARB: 1 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[4] = 2003 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[5] = WGL_ACCELERATION_ARB: 8231 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[6] = 2014 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[7] = GLX_BUFFER_SIZE: 24 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[8] = 201b 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[9] = GLX_ALPHA_SIZE: 8 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[10] = 2022 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[11] = GLX_DEPTH_SIZE: 16 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[12] = 2023 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[13] = GLX_STENCIL_SIZE: 8 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[14] = 2011 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[15] = GLX_DOUBLEBUFFER: 1 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[16] = 2041 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[17] = GLX_SAMPLE_BUFFERS_ARB: 1 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[18] = 2042 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[19] = GLX_SAMPLES_ARB: 4 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[20] = 2007 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[21] = WGL_SWAP_METHOD_ARB: 0x2028 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_DRAWABLE_TYPE: 0x1 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_RENDER_TYPE: 0xffffffff 0023:trace:wgl:ConvertAttribWGLtoGLX pAttr[?] = GLX_FLOAT_COMPONENTS_NV: 0xffffffff 0023:trace:wgl:X11DRV_wglChoosePixelFormatARB at 1/9 found FBCONFIG_ID 0x133 (59) --- snip ----
It then queries for 'WGL_SWAP_METHOD_ARB' attribute and specifically checks for 'WGL_SWAP_EXCHANGE_ARB' value upon return.
--- snip ---- 0023:Call gdi32.__wine_get_wgl_driver(0002004e,0000000b) ret=7e33e669 0023:Ret gdi32.__wine_get_wgl_driver() retval=7d384fc0 ret=7e33e669 0023:trace:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x2004e, 59, 0, 1, 0x33ddb4, 0x33dda0) 0023:trace:wgl:get_pixel_format Returning fmt_id=0x133 for iPixelFormat=59 0023:trace:wgl:X11DRV_wglGetPixelFormatAttribivARB pAttr[0] = 2007 --- snip ----
This fails, debugger session:
--- snip ---
Wine-dbg>bt Backtrace: =>0 0x7d337d32 X11DRV_wglGetPixelFormatAttribivARB+0x757(hdc=0x10028, iPixelFormat=0x25, iLayerPlane=0, nAttributes=0x1, piAttributes=0x33f690, piValues=0x33f688) [/home/focht/projects/wine/wine.repo/src/dlls/winex11.drv/opengl.c:2744] in winex11 (0x0033f608) 1 0x7e340b25 wglGetPixelFormatAttribivARB+0x68(hdc=0x10028, format=0x25, layer=0, count=0x1, attribs=0x33f690, values=0x33f688) [/home/focht/projects/wine/wine.repo/src/dlls/opengl32/wgl.c:929] in opengl32 (0x0033f64c) 2 0x007239d3 in sketchup (+0x3239d2) (0x7e340abc)
Wine-dbg>n 2620 switch (curWGLAttr) { Wine-dbg>n 2744 piValues[i] = WGL_SWAP_EXCHANGE_ARB;
...
Wine-dbg>n 2812 if (0 != curGLXAttr && iPixelFormat != 0) { Wine-dbg>n 2818 piValues[i] = GL_FALSE; --- snip ---
Source:
http://source.winehq.org/git/wine.git/blob/351fae120690a19530f0c399f0a8956aa...
http://source.winehq.org/git/wine.git/blob/351fae120690a19530f0c399f0a8956aa...
The same sequence is executed again for 2x multisample which also fails.
In the end it reports "swap copy unavailable" and keeps multisampling disabled for the pixel format.
I researched some tutorials how to check for proper multisampling support, for example here:
http://nehe.gamedev.net/tutorial/fullscreen_antialiasing/16008/
Nowhere was a connection between multisampling support and WGL_SWAP_METHOD_ARB made.
Anyway, hacking 'winex11.drv' to allow 'wglGetPixelFormatAttribivARB' to return 'WGL_SWAP_EXCHANGE_ARB' for the selected pixel formats helped.
The comment in Wine source indicates this is a weak area (TODO).
The 'OpenGL' dialog window now showed 3 pixel formats with 0x, 2x, 4x anti-aliasing.
When I selected 2x or 4x anti-aliasing in the dialog, everything became smoother so it really worked :)
$ sha1sum FW-3-0-16846-EN.exe 6c9a61fe12b21fe9a1d6b5ee1bb79f331a5fc36c FW-3-0-16846-EN.exe
$ du -sh FW-3-0-16846-EN.exe 35M FW-3-0-16846-EN.exe
$ wine --version wine-1.7.21-19-g8812193
Regards
https://bugs.winehq.org/show_bug.cgi?id=16699
ngrcld ngrcld@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ngrcld@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #24 from Ken Thomases ken@codeweavers.com --- Hi Anastasius,
I'm a bit confused by your analysis...
(In reply to Anastasius Focht from comment #23)
It then queries for 'WGL_SWAP_METHOD_ARB' attribute and specifically checks for 'WGL_SWAP_EXCHANGE_ARB' value upon return.
Meaning it wants WGL_SWAP_EXCHANGE_ARB, right? You later say:
Anyway, hacking 'winex11.drv' to allow 'wglGetPixelFormatAttribivARB' to return 'WGL_SWAP_EXCHANGE_ARB' for the selected pixel formats helped.
Which seems to indicate that. However:
Wine-dbg>n 2620 switch (curWGLAttr) { Wine-dbg>n 2744 piValues[i] = WGL_SWAP_EXCHANGE_ARB;
...
Wine-dbg>n 2812 if (0 != curGLXAttr && iPixelFormat != 0) { Wine-dbg>n 2818 piValues[i] = GL_FALSE;
This last statement is the "else" for the "if" shown just before it. It should only happen when 0 == curGLXAttr || iPixelFormat == 0. But neither of those should be the case, at least not in the same call that hit the earlier piValues[i] = WGL_SWAP_EXCHANGE_ARB statement.
Are you sure the function did not report WGL_SWAP_EXCHANGE_ARB out as the swap method?
In the end it reports "swap copy unavailable" and keeps multisampling disabled for the pixel format.
This suggests the program doesn't want WGL_SWAP_EXCHANGE_ARB, it wants WGL_SWAP_COPY_ARB. It looks to me like winex11.drv claims to support the former but not the latter.
https://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #25 from Ken Thomases ken@codeweavers.com --- This works with the Mac driver, which has real support for WGL_SWAP_COPY_ARB and WGL_SWAP_UNDEFINED_ARB, but not WGL_SWAP_EXCHANGE_ARB. That's because the underlying OpenGL doesn't _promise_ that the buffers will be exchanged on a swap (i.e. that the former contents of the front buffer will be in the back buffer after the swap). There's a mode where it will promise to copy the back buffer to the front and leave the back buffer contents as they were, and there's a mode where it's free to do whatever is most efficient but doesn't promise anything about how it leaves the contents of the back buffer. Hence the "undefined" in WGL_SWAP_UNDEFINED_ARB.
Anyway, it seems that the program is not requiring WGL_SWAP_EXCHANGE_ARB before enabling anti-aliasing. I think it's requiring WGL_SWAP_COPY_ARB.
https://bugs.winehq.org/show_bug.cgi?id=16699
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|opengl |winex11.drv Summary|OpenGL anti-aliasing |OpenGL anti-aliasing |capabilities of graphics |capabilities of graphics |driver not exposed to |driver not exposed to |Google Sketchup 7/8 |Google Sketchup 7/8 (needs |(wglGetPixelFormatAttribivA |WGL_SWAP_COPY_ARB support) |RB doesn't allow | |WGL_SWAP_METHOD_ARB | |support) |
--- Comment #26 from Anastasius Focht focht@gmx.net --- Hello Ken,
your reasoning seems correct, I might have mixed up WGL_SWAP_EXCHANGE_ARB and WGL_SWAP_COPY_ARB at one point.
Correcting the summary to reflect that.
Regards
https://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #27 from Bruno Jesus 00cpxxx@gmail.com --- A patch related to this bug was commited: http://source.winehq.org/git/wine.git/?a=commit;h=3ac85842d34cce334305d2165b...
https://bugs.winehq.org/show_bug.cgi?id=16699
--- Comment #28 from Anastasius Focht focht@gmx.net --- Created attachment 49958 --> https://bugs.winehq.org/attachment.cgi?id=49958 AA options visible, 4x AA selected
Hello folks,
indeed fixed by commit http://source.winehq.org/git/wine.git/commitdiff/3ac85842d34cce334305d2165bc...
Thanks Matteo
Attached is screenshot for proof.
Regards
https://bugs.winehq.org/show_bug.cgi?id=16699
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |3ac85842d34cce334305d2165bc | |7c50159dfc8cd Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #29 from Anastasius Focht focht@gmx.net --- and resolving ...
https://bugs.winehq.org/show_bug.cgi?id=16699
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #30 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 1.7.31.
https://bugs.winehq.org/show_bug.cgi?id=16699
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://dl.trimble.com/sketc |https://web.archive.org/web |hup/gsu8/FW-3-0-16846-EN.ex |/20200105182803/http://dl.t |e |rimble.com/sketchup/gsu8/FW | |-3-0-16846-EN.exe