<?xml version="1.0" ?>
<kc>

<title>Wine Traffic</title>

<author contact="http://www.theshell.com/~vinn">Brian Vincent</author>
<issue num="317" date="19 Jun 2006 00:00:00 -0800" />
<intro> <p>This is the 317th issue of the Wine Weekly News publication.
Its main goal is to have a party. It also serves to inform you of what's going on around Wine. Wine is an open source implementation of the Windows API on top of X and Unix.  Think of it as a Windows compatibility layer.  Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available.   You can find more info at <a href="http://www.winehq.org">www.winehq.org</a></p> </intro>
<stats posts="201" size="398" contrib="77" multiples="37" lastweek="32">

<person posts="20" size="20" who="mike at plan99.net (Mike Hearn)" />
<person posts="15" size="15" who="julliard at winehq.org (Alexandre Julliard)" />
<person posts="12" size="13" who="dmitry at codeweavers.com (Dmitry Timoshkov)" />
<person posts="8" size="15" who="saulius2 at ar.fi.lt (Saulius Krasuckas)" />
<person posts="7" size="7" who="mike at codeweavers.com (Mike McCormack)" />
<person posts="6" size="26" who="andreas.bierfert at lowlatency.de (Andreas Bierfert)" />
<person posts="6" size="15" who="hverbeet at gmail.com (H. Verbeet)" />
<person posts="6" size="12" who="wine-devel at kievinfo.com (Vitaliy Margolen)" />
<person posts="6" size="9" who="wine.dev at web.de (Detlef Riekenberg)" />
<person posts="5" size="20" who="fenix at club-internet.fr (Raphael)" />
<person posts="5" size="9" who="ivg231 at gmail.com (Ivan Gyurdiev)" />
<person posts="4" size="7" who="brian.vincent at gmail.com (Brian Vincent)" />
<person posts="4" size="6" who="infyquest at gmail.com (Vijay Kiran Kamuju)" />
<person posts="4" size="5" who="ahziem1 at mailbolt.com (Andrew Ziem)" />
<person posts="4" size="4" who="hans at it.vu.nl (Hans Leidekker)" />
<person posts="3" size="10" who="kylewinkler at gmail.com (Kyle Winkler)" />
<person posts="3" size="6" who="jacek at codeweavers.com (Jacek Caban)" />
<person posts="3" size="6" who="n0dalus+wine at gmail.com (n0dalus)" />
<person posts="3" size="4" who="Paul.Vriens at xs4all.nl (Paul Vriens)" />
<person posts="3" size="2" who="truiken at gmail.com (James Hawkins)" />
<person posts="2" size="8" who="astrand at cendio.se (=?iso-8859-1?Q?Peter_=C5strand?=)" />
<person posts="2" size="7" who="stefan at codeweavers.com (Stefan D&#246;singer)" />
<person posts="2" size="5" who="mmestnik at visi.com (Mike Mestnik)" />
<person posts="2" size="5" who="christian.gmeiner at students.fhv.at (Christian Gmeiner)" />
<person posts="2" size="4" who="benjamin.fabricius at lawo.de (Benjamin Fabricius)" />
<person posts="2" size="4" who="tony.lambregts at gmail.com (Tony Lambregts)" />
<person posts="2" size="4" who="mario.demontis at email.it (Mario Demontis)" />
<person posts="2" size="3" who="jwstolk at gmail.com (Jaap Stolk)" />
<person posts="2" size="3" who="the3dfxdude at gmail.com (Jesse Allen)" />
<person posts="2" size="2" who="mikolaj at zalewski.pl (=?UTF-8?B?TWlrb8WCYWogWmFsZXdza2k=?=)" />
<person posts="2" size="2" who="rob at codeweavers.com (Robert Shearman)" />
<person posts="2" size="2" who="molle.bestefich at gmail.com (Molle Bestefich)" />
<person posts="2" size="2" who="winehacker at gmail.com (Steven Edwards)" />
<person posts="2" size="1" who="juan_lang at yahoo.com (Juan Lang)" />
<person posts="3" size="3" who="eric.pouech at wanadoo.fr (Eric Pouech)" />
<person posts="2" size="1" who="dank at kegel.com (Dan Kegel)" />
<person posts="2" size="1" who="paul at linuxaudiosystems.com (Paul Davis)" />
<person posts="1" size="38" who="quintok at gmail.com (Nick Cronin)" />
<person posts="1" size="6" who="stefandoesinger at gmx.at (Stefan D&#246;singer)" />
<person posts="1" size="6" who="vbudovsk at cs.rmit.edu.au (Vitaly Budovski)" />
<person posts="1" size="5" who="Stephen.Clark at seclark.us (Stephen Clark)" />
<person posts="1" size="3" who="leidola at newcon.de (Olaf Leidinger)" />
<person posts="1" size="3" who="wine at electrozaur.com (Boaz Harrosh)" />
<person posts="1" size="3" who="mstefani at redhat.com (Michael Stefaniuc)" />
<person posts="1" size="2" who="juris.smotrovs at sets.lv (Juris Smotrovs)" />
<person posts="1" size="2" who="jonathan at ernstfamily.ch (Jonathan Ernst)" />
<person posts="1" size="2" who="a_villacis at palosanto.com (=?ISO-8859-1?Q?Alex_Villac=ED=ADs_Lasso?=)" />
<person posts="1" size="2" who="yuriy.kozlov at gmail.com (Yuriy)" />
<person posts="1" size="2" who="stefan at codeweavers.com (Stefan D&#246;singer)" />
<person posts="1" size="2" who="rick.opper at cegetel.net (Rick Opper)" />
<person posts="1" size="2" who="me at benjaminarai.com (Benjamin Arai)" />
<person posts="1" size="1" who="Stefan.Leichter at camLine.com (Stefan Leichter)" />
<person posts="1" size="1" who="huw at codeweavers.com (Huw Davies)" />
<person posts="1" size="1" who="scott at open-vote.org (Scott Ritchie)" />
<person posts="1" size="1" who="jave27 at gmail.com (Jason Green)" />
<person posts="1" size="1" who="stefan at codeweavers.com" />
<person posts="1" size="1" who="thunderbird2k at gmx.net (Roderick Colenbrander)" />
<person posts="1" size="1" who="keshav at gatech.edu (Keshav Attrey)" />
<person posts="1" size="1" who="piotr.caban at gmail.com (Piotr Caban)" />
<person posts="1" size="1" who="scottb at xandros.com (Scott Bambrough)" />
<person posts="1" size="1" who="chris.kcat at gmail.com (Chris)" />
<person posts="1" size="1" who="jim at pagesmiths.com (Jim White)" />
<person posts="1" size="1" who="davea42 at earthlink.net (David Anderson)" />
<person posts="1" size="1" who="bon at elektron.ikp.physik.tu-darmstadt.de (Uwe Bonnes)" />
<person posts="1" size="1" who="jorishuizer at planet.nl (Joris Huizer)" />
<person posts="1" size="1" who="meissner at suse.de (Marcus Meissner)" />
<person posts="1" size="1" who="Andrew.Talbot at talbotville.com (Andrew Talbot)" />
<person posts="1" size="1" who="ulrich.czekalla at utoronto.ca (Ulrich Czekalla)" />
<person posts="1" size="0" who="jnewman at codeweavers.com (Jeremy Newman)" />
<person posts="1" size="0" who="alleykat at gmail.com (Travis Watkins)" />
<person posts="1" size="0" who="ead1234 at hotmail.com (EA Durbin)" />
<person posts="1" size="0" who="paul.vriens at xs4all.nl (Paul Vriens)" />
<person posts="1" size="0" who="daniel.skorka at stud.uni-karlsruhe.de (Daniel Skorka)" />
<person posts="1" size="0" who="martin-fuchs at gmx.net (Martin Fuchs)" />
<person posts="1" size="0" who="lav at etersoft.ru (Vitaly Lipatov)" />

</stats>
<section 
	title="News: Linux.com Article"
	subject="News"
	archive="http://applications.linux.com/applications/06/06/07/1920213.shtml?tid=47"
	posts="1"
>
<topic>News</topic>
<mention>Microsoft</mention>
<mention>News</mention>
<mention>Google</mention>

<p>An article by Nathan Willis appeared on Linux.com last week titled,
<a href="http://applications.linux.com/applications/06/06/07/1920213.shtml?tid=47"><i>Wine Doors opens Windows under Linux</i></a>.
There's a lot of good information in there and it nicely summarizes some of
things going on in Wine development.  It also discusses a new application
being developed independent of Wine called 
<a href="http://www.wine-doors.org"><i>Wine Doors</i></a>:</p>
<quote who="Linux.com"><p>
Like WineTools, Wine Doors is designed to user-friendlify your Wine 
installation -- setting up phony Windows drives, adding Windows applications, 
and so on. The goal is to let users manage their Wine-based apps with 
point-and-click ease -- from free apps such as Google Earth to closed, 
commercial software like Photoshop or Internet Explorer -- as well as support 
packages like font packs supplied by Microsoft.
</p><p>...</p><p>
Wine Doors' installer module utilizes "application packs," which are 
XML-based recipes that specify configuration options, prerequisites, file 
permissions, and other meta-data -- much like native Linux .rpm and .deb 
package formats. The Wine Doors application itself can retrieve application 
packs and pack lists from remote repositories, maintaining a local cache for 
the sake of speed.
</p><p>
Wine Doors can thus be integrated with the existing Wine project's AppDB, akin 
to the way Debian-based Linux distributions link to remote repositories with 
APT. But that's not all. Lattimer is quick to emphasize that third-party 
independent software vendors can create and maintain their own application 
repositories. In corporate environments, he says, the ability to deploy a 
private repository is important to systems administrators -- and corporate 
environments often rely more heavily on Wine to transition their desktops to 
Linux than do individual home users.</p></quote>

<p>We briefly touched on the original idea of Wine Doors a few months ago in WWN
<a href="http://www.winehq.com/?issue=308#WineTools..%20part%20II">#308</a>,
but the thread continued on after that.  It looks as though things are
going well for the project.</p>

<p>Finally, a beta of Google Earth 4 is 
<a href="http://earth.google.com/download-earth.html">available for 
download.</a>  This news actually has nothing to do with Wine; the
port is completely native and uses OpenGL and Qt.  For those of you
who've downloaded it, 
<a href="http://www.googleearthhacks.com/downloads">here's</a> some stuff
to play with.</p><p>
Finally, I stumbled across the <a href="http://www.alkyproject.com/">Alky</a>
project this week.  They're trying to come up with a different way to run
Windows binaries on Linux/MacOS.
</p>
</section>
<section 
	title="Safedisc Support Revisited"
	subject="One more shot at ntoskrnl implementation"
	archive="http://www.winehq.com/pipermail/wine-devel/2006-June/048583.html"
	posts="1"
>
<topic>Architecture</topic>
<p>You might remember last year a lot of work was done to implement
ntoskrnl.exe last year.  On Windows NT systems that's what would 
typically be thought of as the kernel.  On Wine, it's, um, nothing
right now.  We use wineserver to synchronize across processes instead.
It seems copy protection methods need to do things like load special
drivers and that in turn requires ntoskrnl.exe to have some basic 
functionality.  So, last year work was done to create
a basic version of it (see WWN
<a href="http://www.winehq.com/?issue=270#Safedisk%20Help%20Needed">#270</a>,
<a href="http://www.winehq.com/?issue=289#Safedisc%20Update">#289</a>, and
<a href="http://www.winehq.com/?issue=290#Safedisc%20Begins%20to%20Work">#290</a> 
for more details.)  
</p><p>In the end, the mechanism that was developed was sufficient for
copy protection.  There was one little problem though: Alexandre didn't
quite like the final design.  On Windows there's a concept of I/O request
packets (IRP) used by the Windows Driver Model to communicate with the
operating system.  A few months ago Ivan Leo Puoti described the
issue with the implementation used by Wine's ntoskrnl:</p>
<quote who="Ivan Leo Puoti"><p>
Well we never actually wrote a real irp queue system, we simply had a
single irp stack allocated irp struct that we recycled for each call.
The whole thing works quite well, the only real issue is that
Alexandre decided last December he didn't like the idea of using named
pipes for ntdll to ntoskrnl IPC (ntosknrl runs as an independent
process), and wanted the whole thing rewritten using the wineserver
portocol, which is sort of time consuming and I won't be able to do it
before summer. If you want to look over it I can send you what we
currently have.</p></quote>

<p>Apparently Vitaliy Margolen picked it up recently and announced some
changes:</p>
<quote who="Vitaliy Margolen"><p>
Here is latest installment of safedisc support in Wine.
</p><p>
The major change from last version is the way user space talks to ntoskrnl. Now
I'm passing the information through wineserver with a help of 4 server calls.
</p><p>
There are still some areas that require work.
</p><p>
I will appreciate any input that you guys might have about any part of this
code. It's been on my lap for way too long. It would be really cool to finally
get it in.
</p></quote>

</section>
<section 
	title="Vertex Buffer Objects"
	subject="Vertex Buffer Objects for WineD3D"
	archive="http://www.winehq.com/pipermail/wine-devel/2006-June/048463.html"
	posts="5"
>
<topic>DirectX</topic>
<p>Direct3D work continues to steamroll along.  Stefan D&#246;singer
announced work this week to add vertex buffer objects to WineD3D:</p>
<quote who="Stefan Dosinger"><p>
In the last days I've been working on using the OpenGL vertex buffer objects
extension for IWineD3DVertexBuffer. The aims of this were:
<ul>
<li> Store geometry data in the hardware for more efficient rendering</li>
<li> Convert the colors and rhw values on upload and get rid of 
drawStridedSlow</li></ul></p><p>

The result is in this diff, and it basically works, although not as good as
I've hoped. It gives a nice performance boost to Battlefield 1942, and is an
improvement for Half-Life 2, but it is not perfect yet. The main shortcomings
are:
<ul>
<li> Shader support: I'm afraid that the conversion code at this points breaks
shaders. I've tested with battlefield 1942. The vertex shaders in this game
don't work correctly yet, the hands of soldiers are missing and there are
some incorrect planes with odd colors. However, with this patch the hands are
drawn as apparently random vertices all over the screen. I think I'll need a
little help from the shader people for that.</li>

<li> The vertex conversion is slow, and it turned out that if the app Locks the
Buffer every frame then drawStridedSlow is faster Converting +
drawStridedSlow. Because of that VBOs and the conversion aren't used for
vertex buffers in system memory and vbs with WINED3DUSAGE_DYNAMIC are not
loaded into a vbo.</li>

<li> In Direct3D7 there is no way for the app to specify a range of vertices to
be locked. Because of that DX7 apps are generally slower if they update the
vertices regularily. To avoid that drawback there is no VBO created for DX7
apps if they have vertex data that needs conversion. The geometry in DX7 apps
is usually quite simple, so DrawStridedSlow isn't a big performance hit in
those apps.</li></ul></p></quote>

<p>Then a few days later Stefan updated the patch:</p>
<quote who="Stefan Dosinger"><p>

This is an updated version of the VBO patch. The main difference is the
integration with IWineD3DDevice::ProcessVertices which gives a nice
performance boost for Half-Life 1 and propably Anarchy Online(not tested
yet).
</p><p>
What is missing is work with vertex shaders(awaiting the download of the dx8
sdk for the dolphin demo) and an implementation of
IDirect3DVertexbuffer7::ProcessVertices.
</p></quote>



</section>
<section 
	title="Wine on 64-bit AMD / Ubuntu"
	subject="Build on kubuntu 6.06,amd_64 works"
	archive="http://www.winehq.com/pipermail/wine-devel/2006-June/048637.html"
	posts="2"
>
<topic>Ports</topic>
<mention>cvs</mention>

<p>David Anderson wrote in with a step-by-step guide to getting Wine
to build on an AMD-64 system using Kubuntu 6.06 (Dapper Drake):</p>
<quote who="David Anderson"><p>
I finally got around to finishing a build, with current cvs sources.
First one must install the necessary libraries:  Finding the correct
set may take a few minutes and several tries.
</p><p>
<tt>configure</tt> will find several omissions, but a few will only
be noticed by the 'make' steps.
</p><p>

 The following is links  that the library install does not make:
 Do this by hand, it won't work as a script as written.
<ol>
<li><tt>sudo sh</tt></li>
<li><tt>cd /usr/lib32</tt></li>
<li><tt>ln -s libX11.so.6 libX11.so</tt></li>
<li><tt>ln -s libXext.so.6 libXext.so</tt></li></ol>
</p><p>[<i>Then you can compile:</i>]
<ol>
<li><tt>LDFLAGS="-L/lib32 -L/usr/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" 
./configure</tt></li>
<li><tt>make depend</tt></li>
<li><tt>make all</tt></li>
<li><tt>sudo make install</tt></li></ol>
</p><p>

If all needed libraries are present there will be no missing-library warnings or errors anywhere.
wine seems to work (installed in /usr/local)
</p></quote>

<p>Scott Ritchie, the Ubuntu/Debian package maintainer, thanked him for it:</p>
<quote who="Scott Ritchie"><p>
It's basically a step-by-step to rewriting the build
script to work on AMD-64 for the packages.  I'll try hacking around with
it once 0.9.16 comes out.
</p><p>
I suspect, however, that doing it this way doesn't include EVERY lib
that Wine can use properly, as there are still some libs missing from
the 32bitlibs package in Ubuntu.</p></quote>

</section>
<section 
	title="DWARF2 Debugging"
	subject="[PATCH 00/31] Series short description"
	archive="http://www.winehq.com/pipermail/wine-devel/2006-June/027676.html"
	posts="3"
>
<topic>Debugging</topic>
<p>As of GCC v3, the standard debugging format has been 
<a href="http://dwarf.freestandards.org/faq.php">DWARF 2</a>.  Raphael
Junqeira did some working on Wine's debugger to support it and announced
the following changes:</p>
<quote who="Raphael Junqueira"><p>
Changelog:
<ul>
   <li> map lines section</li>
   <li> better robustness</li>
   <li> support of unamed syms</li>
   <li> better traces</li>
   <li> ref hash table to stabilize model</li></ul>
</p><p>
 TODO:
<ul>
   <li> find a clean way to handle forward declarations (some assertions can
 happen)</li>
   <li> debug lines parsing </li>
</ul></p></quote>

<p>Eric Pouech replied he had also been working on the same thing:</p>
<quote who="Eric Pouech"><p>
I did (in parallel) some work on the dwarf2 support. I have 20+ patches to
make it really work. Those patches bring:
<ul>

<li> type support, including forward declarations (which really requires a two
pass parser, hence a major rewrite of the code)</li>
<li> function's variables &amp; parameter support</li>
<li> line information is ok (except for inlined functions)</li>
<li> a couple of bug fixes from current code</li></ul></p><p>

I'd suggest hence not to apply this patch and to wait for the full solution
(likely sometimes this weekend).</p></quote>

<p>He followed that up with 31 patches.  He gave a clearer description of the
patches before posting them:</p>
<quote who="Eric Pouech"><p>
The following series implements a basic support for Dwarf2 debug information.
Basically, it's a major rewrite/enhancement of the current code.
At the end of the serie, we should have:
<li> type information (at least basic types, and struct unions)</li>
<li> functions's parameter and variable handling (1)</li>
<li> line number information</li>

What's not working yet:
<ul>
<li> some variables in functions (when using registers) -&lt; will require
  CFA parsing (and translation into FPO)</li>
<li> single stepping through trampolines (cross-DLL calls). BUT, THIS
  IS BROKEN FOR STABS TOO... Likely, the same issue for both formats</li>
<li> missing function's start point -&lt; this means the first insn of
  the functions will be seen, meaning that you need to do a couple
  of 'nexti' calls to step over the functions prologue (otherwise
  you won't see the current function's parameters)</li>
<li> inlined functions are not fully handled (meaning that you won't
  be able to see the inlined function's argument - but this wasn't
  available in stabs debug info)</li>
<li> nested types are not correctly handled</li></ul></p></quote>

</section></kc>
