Re: State management in D3D
I guess that seems like a large undertaking, and those are all doomed to failure.. but it doesn't have to be. The key idea that I care about seems to be to move GL code from device.c into the data structure object, and figure out a way to apply a set of delayed states at draw time. We don't have to replace everything right now - we could have 2 coexisting data structures and slowly move things from one to the other, but I wanted to see if people agree with that idea. I don't like the way things are done right now - Set* functions can do one of two things - record to a stateblock, or apply state. Then the stateblock calls the Set* functions itself when it's applied - seems very ugly to me [ and also in certain places we're forced to disable recording to get a state applied immediately using a Set* function ].
State management in D3D
State management in D3D... is currently kind of a mess. Stefan D. posted a message about this some time ago, but I can't find it right now... - some states are applied immediately (via Set* calls) - some are applied at draw time (like shaders, textures, transforms, ...) - some are recorded into a stateblock structure, and applied when the app says apply(). - the GL code is all over the place, tightly coupled to the d3d code. === There's a number of projects going on at the moment, from what I understand: - Roderick is working on making wined3d -> wgl - Stefan D. has expressed concern about multithreaded d3d (where the D3D device state is shared, but not necessarily the GL one - or can GL contexts be shared between multiple threads?) - I'm trying to get FBOs to work, where the FBO needs to be bound once both the render and stencil target have been assigned (that's 2 calls from the app in any order) - i.e I need those states to be applied in a delayed fashion, before draw - Henri Verbeet wants multiple render target support added to that (meaning the FBO needs to be bound once *all* render targets are assigned in addition to the depth/stencil one). All of the above have a common theme - better state management is needed, with more encapsulation, and better separation between D3D and GL. So, let's come up with a plan, and try to implement it. How about we redesign the stateblock object like this: - remove deltas. I.E. if a SetLightEnable() command is sent, fetch the light, enable it, then save the light back - store only state, and no deltas. This should make the recording stateblock (updateStateBlock) the same as the initial device stateblock, which stores states - provide a uniform internal interface for accessing states inside the stateblock - like: SetState(stateblock, ID_XYZ, (void*) state_data); GetState(stateblock, ID_XYZ, (void**) state_data); CaptureState(stateblock, ID_XYZ); ApplyState(stateblock, ID_XYZ); ID_XYZ could be an individual state, or a "trigger" keyword, which will refer to a whole group of states. Those would be private functions in addition to the standard interface. - provide a fn pointer table inside the stateblock [ which can be directed to OGL or WGL or AGL ], which, for each ID_XYZ, maps a get and set function using the same interface - move all device.c GL code into those functions - now all device.c Get* and Set* requests will do is: - error checking - recording into updateStateBlock - or writing to stateBlock (which may be applied later, at our discretion). - apply() would just loop through all the IDs and call the corresponding function pointer if the states are marked dirty (we'll keep the 'dirty' field) - capture() would do the same in the get* direction. - new object can be instantiated per device, or per device per thread to address multithreading. It could have an associated glContext, and can be locked as necessary. - it would use ideas from the d3d9 test framework for stateblock, except of course more competently written, and cleaner :)
Low-level coding
Hi,I was interested in starting to play with wine and maybe even build a few functions for it...but then I realized that it's low-level coding, something I'm not familiar with (higher level is more of my expertise). Correct me if I'm wrong, I could be looking at the wrong files :S. Does anyone have any good places to go to to learn about low-level coding, and afterwards coding for wine specifically? Thanks.-- Tired of being hammered by spyware, or want to browse the internet in a whole new way? Download Firefox and enjoy a much better internet experience. http://getfirefox.com/
Re: Making people aware about appdb and outdated Wine versions.
killertux killertux wrote: Hello, I have problem... It's know as dublication of effort. Basicly there are sites that "compeate" with appdb it means HOWTOS, test result and everyting else are distributed in few thousands forums, wikis etc... Solution is that Wine should advertice Wine AppDB so people would actully use it rather than unoffical sites. So I would like to see some AppDB "adverticement" in winecfg. Winecfg about section is one good place to inform wonders of appdb but even better would be popup window when starting winecfg(at lest in first run) that informs about appdb. Normal users obtain copy of Wine trought their package manager and that means they do not know about appdb unless they they read it somewhere. This change must be done in order to kill useless stuff like this: http://forums.gentoo.org/viewtopic-t-496836.html Second: Old version of Wine are still quite used because of package managers just offers "stable" Wine versions over the "unstable" ones so I would like to see another popup or warning in winecfg that informs user that their Wine is getting old... so after specific number of days(from release of Wine version X) counter gives some warnings about old Wine version. I agree with your comments above however in addition having read the Gentoo thread you mention, I also see what the first comment is getting at. That it's very time consuming to find which apps have Platium or Gold Status with looking at every page & version in the AppDB. The APPDB is really lacking a STATS page. i.e. A page that shows the number of apps that have results reported where maybe 80% results are Platinum or gold etc and the ability to see what apps are classied as Platinum or Gold with drawling through thousands of appdb pages to find the Gold Apps. The Stats page should be fully automated requiring nobody to update it, the system just calculates the stats from the user entered results at the results. The Stats Page should include information like ... 1. Number of Applications. 2. Number of Applications with 100% of results reporting platinum status. Click here to see the > [LIST] 3. Number of Applications with >50% of results reporting platinum status. Click here to see the > [LIST] 4. Number of Applications with 100% of results reporting gold status. Click here to see the > [LIST] 5. Number of Applications with >50% of results reporting gold status. Click here to see the > [LIST] 6. Number of Applications with 100% of results reporting Bronze status. Click here to see the > [LIST] 7. Number of Applications with >50% of results reporting Bronze status. Click here to see the > [LIST] 8. Number of Applications with 100% of results reporting garbage status. Click here to see the > [LIST] 9. Number of Applications with >50% of results reporting garbage status. Click here to see the > [LIST] 10. Number of apps with no results. 11. Which Distros are used the most > Click here to see the graph > [GRAPH] 12. List Apps that are the most active as determined from the number of comments. Click here to see the [LIST] ... ... ... etc You could even have the percentage selectable rather than just 50% or 100%. A further page with graphs showing trends would also be useful. You could instantly then see more and more APPS getting Gold or Platinum status over time ( or not ) the [LIST] should be the Application Name and you should be able to click on it to take you straight to the page.. ... :-) Sounds like a neat little project for somebody into PHP & Mysql Regards Nick Law WoW AppDB SM
Re: Jonathan Ernst : winecfg: French translation update.
Le dimanche 10 septembre 2006 à 20:56 +0200, Frank Richter a écrit : > On 10.09.2006 10:28, Alexandre Julliard wrote: > > -LTEXT "This library is free software; you can redistribute > > it and/or modify it under the terms of the GNU Lesser General Public > > License as published by the Free Software Foundation; either version 2.1 of > > the License, or (at your option) any later version.", > > +LTEXT "Cette biblioth�que est un logiciel libre�; vous > > pouvez la redistribuer et/ou la modifier conform�ment aux dispositions de > > la Licence Publique G�n�rale GNU, telle que publi�e par la Free Software > > Foundation�; version 2.1 de la licence, ou encore (� votre choix) toute > > version ult�rieure." > > IDC_STATIC,119,44,124,72 > > It seems that all (L)GPL translations are marked "unofficial" by the > FSF. That's why I though it wouldn't be bad to put in a translated "This > library is ..." but keep the original English notice as well for the > German translation. > > -f.r. > Hi Frank, At least in the GNOME translation project we are now translating these legal things as well even if they are "unofficial". By the way, in that case, the license is not translated, only the fact that Wine is free software and that you have to read the LGPL, so I think that we don't need to put both French and English text. Regards, Jonathan signature.asc Description: Ceci est une partie de message numériquement signée
Re: Re: Making people aware about appdb and outdated Wine versions.
On 9/10/06, Tom Wickline <[EMAIL PROTECTED]> wrote: If they have any common sense about them they will see that the application database is advertised on the winehq front page and go there on there own. You get out of Wine what you put into it! Most users, as far as I can tell, never goto winehq. They get wine from their distro's package manager, and then when it breaks head to their distro's support / community. - Hide quoted text - As for people contributing to third party forum's and wiki's, that is a double edged sword its nice that they contribute there findings so others can play a game or use a app. I personally don't feel we should discourage people from posting there findings to other sites. But at the same time it would be nice if they contributed that information to our wiki or application database.
Page Fault when try to start Railroad Tycoon
HelloI'm currently on testing my apps for 0.9.20 and getting the following error when try to run a cleanly installed RailRoad Tycoon 3 (on new wine dir). Can somebody help me to figure out the problem? I use a Matrox Parhelia with Tripple-Monitor Configuration.ThanksRoland Kaesererr:x11drv:X11DRV_CreateWindow invalid window width 1919249263err:x11drv:X11DRV_CreateWindow invalid window height 1952540704err:ole:CoInitializeEx Attempt to change threading model of this apartment from multi-threaded to apartment threadedfixme:d3d:IWineD3DDeviceImpl_CreateAdditionalSwapChain The app requests more than one back buffer, this can't be supported properly. Please configure the application to use double buffering(=1 back buffer) if possibleerr:x11settings:X11DRV_ChangeDisplaySettingsEx No matching mode found! (desktop)fixme:d3d:IWineD3DDeviceImpl_GetAvailableTextureMem (0x18b400) : stub, simulating 64MB for now, returning 64MB leftfixme:d3d:IWineD3DDeviceImpl_ValidateDevice (0x18b400) : stubfixme:d3d:IWineD3DDeviceImpl_ValidateDevice (0x18b400) : stubwine: Unhandled page fault on read access to 0x1874 at address 0x7e03d9c1 (thread 000e), starting debugger...WineDbg starting on pid 0xdUnhandled exception: page fault on read access to 0x1874 in 32-bit code (0x7e03d9c1).Register dump: CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033 EIP:7e03d9c1 ESP:003100a8 EBP:0001 EFLAGS:00210206( - 00 - RIP1) EAX:1860 EBX:7e3b6efc ECX:7c29daf0 EDX: ESI: EDI:7c2957e0Stack dump:0x003100a8: 7df65d78 7c29da6c 7c29ee94 0x003100b8: 3f80 7e04ac27 00310340 0x003100c8: 7e3b6efc 7c2bf3d0 7e40b7ac 003102240x003100d8: 7dfb58ba 7c2957e0 7c2c11ec 7e1f5fb50x003100e8: 0001 7e3b6efc0x003100f8: 7e3b6efc fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for c119Backtrace:=>1 0x7e03d9c1 in libgl.so.1 (+0x1199c1) (0x7e03d9c1) 2 0x (0x)0x7e03d9c1: movl 0x14(%eax),%edxModules:Module Address Debug info Name (91 modules)PE 40-da2000 Deferred rt3cPE 2110-21164000 Deferred mss32PE 3000-30072000 Deferred binkw32ELF 7bf0-7bf03000 Deferred ELF 7d543000-7d559000 Deferred midimap \-PE 7d55-7d559000 \ midimapELF 7d57f000-7d597000 Deferred msacm32 \-PE 7d59-7d597000 \ msacm32ELF 7d597000-7d5d7000 Deferred wineoss \-PE 7d5a-7d5d7000 \ wineossELF 7d6ed000-7d6f7000 Deferred libnss_files.so.2ELF 7d6f7000-7d81d000 Deferred libcrypto.so.0.9.8ELF 7d81d000-7d85a000 Deferred libssl.so.0.9.8ELF 7d85a000-7d878000 Deferred libcups.so.2ELF 7d90d000-7d93f000 Deferred uxtheme \-PE 7d91-7d93f000 \ uxthemeELF 7d941000-7d95d000 Deferred imm32 \-PE 7d95-7d95d000 \ imm32ELF 7d9a3000-7d9a6000 Deferred libxrandr.so.2ELF 7d9a6000-7d9ae000 Deferred libxrender.so.1ELF 7d9ae000-7d9b3000 Deferred libxfixes.so.3ELF 7d9b3000-7d9bc000 Deferred libxcursor.so.1ELF 7d9bc000-7d9d9000 Deferred ximcp.so.2ELF 7d9d9000-7d9db000 Deferred xlcutf8load.so.2ELF 7d9db000-7da6a000 Deferred winex11 \-PE 7d9f-7da6a000 \ winex11ELF 7dc36000-7dc55000 Deferred libexpat.so.1ELF 7dc55000-7dc8e000 Deferred libfontconfig.so.1ELF 7dc8e000-7dca Deferred libz.so.1ELF 7dca-7dd0d000 Deferred libfreetype.so.6ELF 7dd0d000-7dd27000 Deferred wsock32 \-PE 7dd1-7dd27000 \ wsock32ELF 7dd27000-7dd4 Deferred version \-PE 7dd3-7dd4 \ versionELF 7dd4-7dd6d000 Deferred ws2_32 \-PE 7dd5-7dd6d000 \ ws2_32ELF 7dd6d000-7ddb9000 Deferred dsound \-PE 7dd8-7ddb9000 \ dsoundELF 7ddb9000-7ddf Deferred dinput \-PE 7ddc-7ddf \ dinputELF 7deae000-7df24000 Deferred libglu.so.1ELF 7df24000-7e40c000 Export libgl.so.1ELF 7e40c000-7e503000 Deferred libx11.so.6ELF 7e503000-7e511000 Deferred libxext.so.6ELF 7e511000-7e529000 Deferred libice.so.6ELF 7e529000-7e532000 Deferred libsm.so.6ELF 7e533000-7e547000 Deferred lz32 \-PE 7e54-7e547000 \ lz32ELF 7e547000-7e55f000 Deferred dinput8 \-PE 7e55-7e55f000 \ dinput8ELF 7e55f000-7e613000 Deferred wined3d \-PE 7e57-7e613000
Re: Re: Making people aware about appdb and outdated Wine versions.
On 9/10/06, killertux killertux <[EMAIL PROTECTED]> wrote: OK, if not popup then fixme or someting like if there is problems they can go to Wine AppDB to get some compatibility help. If they have any common sense about them they will see that the application database is advertised on the winehq front page and go there on there own. You get out of Wine what you put into it! As for people contributing to third party forum's and wiki's, that is a double edged sword its nice that they contribute there findings so others can play a game or use a app. I personally don't feel we should discourage people from posting there findings to other sites. But at the same time it would be nice if they contributed that information to our wiki or application database.
Re: Re: Making people aware about appdb and outdated Wine versions.
OK, if not popup then fixme or someting like if there is problems they can go to Wine AppDB to get some compatibility help. >> --SNIP-- >> Second: Old version of Wine are still quite used because of package >> managers just offers "stable" Wine versions over the "unstable" ones so I would like >> to see another popup or warning in winecfg that informs user that their Wine is >> getting old... so after specific number of days(from release of Wine version X) >> counter gives some warnings about old Wine version. > >Having a popup (or anything that requires user interaction) could get >really irritating - there are situations where people would use an >older version of wine on purpose. Like if a large organization uses it >to run one specific app, and has a specific version that works >perfectly, they might not have any reason to update. > >How about a fixme when wine is run, informing them that the version >they are running was released X long ago, and that if they have any >issues they should try a newer version? > >It'd be nice, too, if people then reported bugs with that on the top >of the output - it could save a lot of work chasing down already- fixed >issues. > >--Matt >
Re: Making people aware about appdb and outdated Wine versions.
--SNIP-- Second: Old version of Wine are still quite used because of package managers just offers "stable" Wine versions over the "unstable" ones so I would like to see another popup or warning in winecfg that informs user that their Wine is getting old... so after specific number of days(from release of Wine version X) counter gives some warnings about old Wine version. Having a popup (or anything that requires user interaction) could get really irritating - there are situations where people would use an older version of wine on purpose. Like if a large organization uses it to run one specific app, and has a specific version that works perfectly, they might not have any reason to update. How about a fixme when wine is run, informing them that the version they are running was released X long ago, and that if they have any issues they should try a newer version? It'd be nice, too, if people then reported bugs with that on the top of the output - it could save a lot of work chasing down already-fixed issues. --Matt
Making people aware about appdb and outdated Wine versions.
Hello, I have problem... It's know as dublication of effort. Basicly there are sites that "compeate" with appdb it means HOWTOS, test result and everyting else are distributed in few thousands forums, wikis etc... Solution is that Wine should advertice Wine AppDB so people would actully use it rather than unoffical sites. So I would like to see some AppDB "adverticement" in winecfg. Winecfg about section is one good place to inform wonders of appdb but even better would be popup window when starting winecfg(at lest in first run) that informs about appdb. Normal users obtain copy of Wine trought their package manager and that means they do not know about appdb unless they they read it somewhere. This change must be done in order to kill useless stuff like this: http://forums.gentoo.org/viewtopic-t-496836.html Second: Old version of Wine are still quite used because of package managers just offers "stable" Wine versions over the "unstable" ones so I would like to see another popup or warning in winecfg that informs user that their Wine is getting old... so after specific number of days(from release of Wine version X) counter gives some warnings about old Wine version.
Re: Jonathan Ernst : winecfg: French translation update.
On 10.09.2006 10:28, Alexandre Julliard wrote: > -LTEXT "This library is free software; you can redistribute it > and/or modify it under the terms of the GNU Lesser General Public License as > published by the Free Software Foundation; either version 2.1 of the License, > or (at your option) any later version.", > +LTEXT "Cette biblioth�que est un logiciel libre�; vous pouvez > la redistribuer et/ou la modifier conform�ment aux dispositions de la Licence > Publique G�n�rale GNU, telle que publi�e par la Free Software Foundation�; > version 2.1 de la licence, ou encore (� votre choix) toute version > ult�rieure." > IDC_STATIC,119,44,124,72 It seems that all (L)GPL translations are marked "unofficial" by the FSF. That's why I though it wouldn't be bad to put in a translated "This library is ..." but keep the original English notice as well for the German translation. -f.r.
Can't compile wine at Linux-ppc
Hello, All! The last wine version which at least compiles fine is 0.9.17. Since then I can't even compile Wine. It fails with the next message ../../tools/widl/widl -I. -I. -I../../include -I../../include -D__WINESRC__ -D_SHDOCVW_ -t -T shdocvw_v1.tlb shdocvw_v1.idl warning: create_msft_typeinfo: ignoring attr 46 warning: create_msft_typeinfo: ignoring attr 46 warning: add_func_desc: ignoring attr 5 error: encode_type: VT_USERDEFINED - unhandled type 17 make[2]: *** [shdocvw_v1.tlb] Error 2 make[2]: Leaving directory `/home/petro/work/projects/wine/dlls/shdocvw' make[1]: *** [shdocvw] Error 2 make[1]: Leaving directory `/home/petro/work/projects/wine/dlls' make: *** [dlls] Error 2 I have no clue how to debug this situation, so I wold ask you: how to fix this strange situation? -- With best regards!