<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-21348073</id><updated>2009-10-31T00:27:35.355+01:00</updated><title type='text'>behold: Rudolf's corner</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21348073.post-2444820012082282805</id><published>2009-05-11T10:09:00.002+02:00</published><updated>2009-05-11T10:11:22.919+02:00</updated><title type='text'>Moving to another internet provider..</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;Currently I am working on moving to another internet provider. This means my Email adresses and homepage will go into oblivion. The locations that is, not the content. :-)&lt;br /&gt;&lt;br /&gt;Anyhow, please take note of the mirror site's adress and of this weblog since these two will remain operational.&lt;br /&gt;&lt;br /&gt;I'll post more news once it becomes available.&lt;br /&gt;&lt;br /&gt;Greetings!&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-2444820012082282805?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/2444820012082282805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=2444820012082282805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/2444820012082282805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/2444820012082282805'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2009/05/moving-to-another-internet-provider.html' title='Moving to another internet provider..'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-6007318259741353897</id><published>2009-01-25T13:00:00.026+01:00</published><updated>2009-01-25T15:27:10.692+01:00</updated><title type='text'>Something else - Logitech Z680 mod for lower Bass output</title><content type='html'>&lt;strong&gt;NOTE: If you execute the modification suggested below and you blow-up your set, you are on your own! I can give no warranties of any kind whatsoever...&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Hi,&lt;br /&gt;&lt;br /&gt;Ever since I can remember I have a Logitech Z680 5.1 audio set which I use to watch movies and listen to my music. It was the top-of-the-line audioset for PC's from Logitech way back, there's a follow-up top-set now: The Z5500.&lt;br /&gt;&lt;br /&gt;This (Z680) is an audioset with integrated Dolby digital and DTS decoder and it has a remote as well. You can input audio using 3.5Inch jacks, but also using coaxial or optical cable. You can choose from 3 input signals using the remote so I have the set connected to my stand-alone DVD player, but also to an old stand-alone audio set with CD player.&lt;br /&gt;&lt;br /&gt;On the Z680 (one of) the downside(s) is that you cannot set the sub-woofers volume between 0 and 100% in small steps. Instead you can set 0%, and about 60-100%. On the Z5500 this limitation was removed BTW.&lt;br /&gt;&lt;br /&gt;A lot of Z680 users including myself found that the 60% setting of the subwoofer is much too loud for most (living) rooms: Neighbours will complain about pictures falling of their walls, and the sound is not optimal for the user him (or her)self either.&lt;br /&gt;&lt;br /&gt;So, I decided to take my set apart and modify it to be actually useable. I did two modifications: for one I added a RS232C interface in the hope I could (re)program the set some way. This RS232C interface was there on the board already, it just missed a few components placed though. Unfortunately the set's firmware does not have RS232C connectivity I found out.&lt;br /&gt;&lt;br /&gt;The second modification, which is much more low-level, worked like a charm for me. I'll decribe that modification below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Z680 Modification for a lower bass setting range.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The control POD of the Z680 has all digital inputs and the decoders. After all signal processing is done, the audio channels are converted to analog signals. These analog signals are then transferred to the bass speaker housing via the 15-pins thick black signal cable. In the bass speaker housing sits the analog amplifier that cranks up the signals so you can hear them from the speakers.&lt;br /&gt;&lt;br /&gt;This means lowering the bass signal range can be simply done in the control pod at the exiting spot to the amplifier. I just located the signal wire for the sub-woofer speaker and took the wire loose. I then added a simple resistor network which divides the voltage to 1/3rd of the original level, and I attached the signal wire to the output of this divider. (The input of the divider is connected to where the wire was before.)&lt;br /&gt;&lt;br /&gt;Since the voltage is now 1/3rd of the original, the current through the speaker is also at 1/3rd of the original which means output power is 1/3 * 1/3 = 1/9th of the original for a specific volume setting.&lt;br /&gt;&lt;br /&gt;Now I can set the volume perfectly for my taste!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Photo's and a more detailed description.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before you start make sure you have the following:&lt;br /&gt;- a screwdriver&lt;br /&gt;- a soldering iron&lt;br /&gt;- soldering tin&lt;br /&gt;- two resistors: one of 1k-Ohm and one of 2k-ohm or there about. 1/8th Watt versions will do nicely.&lt;br /&gt;&lt;br /&gt;First, remove mains power and take the Z680 control POD loose from the set and any extra wires. Now remove the four black screws at the backside: make sure you removed them completely (take them out).&lt;br /&gt;After you did this, you can gently pull of the front panel. Please note that a wire sits in between the front panel and the mainboard which will remain in the back part of the housing: so be gently indeed!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_TjkbF5TuKGQ/SXxceDANOXI/AAAAAAAAAAM/rsxdiyrfkiI/s1600-h/1-top-unscrewed.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295208933152864626" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 233px" alt="" src="http://4.bp.blogspot.com/_TjkbF5TuKGQ/SXxceDANOXI/AAAAAAAAAAM/rsxdiyrfkiI/s320/1-top-unscrewed.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Picture 1:&lt;/div&gt;&lt;div&gt;The four black screws removed completely and the front cover removed gently.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;You can see the dark-grey ribbon cable that connects the frontcover part with the POD's mainboard. Note that the light-grey ribbon cable will not be there in your case: this cable belongs to the RS232C modification I did. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;This RS232C modification is not needed.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Once you have the situation as shown in picture 1 you can pull-off the dark-grey ribbon cable gently so the front-panel part nolonger bothers you while you do the modification. Please note the red wire in this cable as it denotes PIN1 of the connector (has a small triangle pointing at it on the mainboard if you look closely).&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;OK. Now you should gently pull the mainboard from the back part of the housing. Please note that at the backside of the mainboard there is a soldered connection to the thick black wire that normally connects to the Bass speaker's housing. Lift up the mainboard (including the other boards that sit on it) and gently turn it over.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once you did that you'll be in the situation of Picture number 2 below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_TjkbF5TuKGQ/SXxd71M7C8I/AAAAAAAAAAU/8_3wVwWnXMQ/s1600-h/2-board-pulled-out.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295210544355806146" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px" alt="" src="http://1.bp.blogspot.com/_TjkbF5TuKGQ/SXxd71M7C8I/AAAAAAAAAAU/8_3wVwWnXMQ/s320/2-board-pulled-out.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Picture 2:&lt;br /&gt;mainboard removed from back part of the housing. Again you can see the light-grey ribbon cable that belongs to my RS232C mod.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You'll not have that in your situation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Below there's a closeup picture (3) of the situation in picture 2. Please note that the area of interest is where the black cable is soldered too. Please note the white characters printed on the board denoting (among others) the analog channels that are outputted on the respective wires:&lt;br /&gt;&lt;br /&gt;+8 - +8V 'logic' power supply&lt;br /&gt;G - 'logic' supply ground (return)&lt;br /&gt;SB - ??&lt;br /&gt;G - signal ground&lt;br /&gt;RR - Rear Right speaker channel&lt;br /&gt;RL - Read Left speaker channel&lt;br /&gt;C - Center speaker channel&lt;br /&gt;S - Subwoofer speaker channel - this signal we are going to modify&lt;br /&gt;FR - Front Right speaker channel&lt;br /&gt;FL - Front Left speaker channel&lt;br /&gt;G - Signal ground&lt;br /&gt;G - Signal ground&lt;br /&gt;-18 - -18V analog power supply&lt;br /&gt;G - analog power supply ground (return)&lt;br /&gt;+18 - +18V analog power supply&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_TjkbF5TuKGQ/SXxfqmdqIKI/AAAAAAAAAAk/pSepqAiEokY/s1600-h/3-board-closeup.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295212447364948130" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 218px" alt="" src="http://3.bp.blogspot.com/_TjkbF5TuKGQ/SXxfqmdqIKI/AAAAAAAAAAk/pSepqAiEokY/s320/3-board-closeup.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Picture 3.&lt;br /&gt;The area of interest, specificially the 'S' wire and the two G wires next to each other next to -18V.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now flip the board so the other side faces up. Now Heat up your soldering iron and remove the brown wire that's soldered to the 'S' connection. Solder the 2K resistor (or 2 1k resistors in series as I did) to the S connection of the board leaving the other end free in the air.&lt;br /&gt;&lt;br /&gt;Solder the 1k resistor with one side to the 'G' connection(s) next to the -18 signal as these G connections are closest by. Make ABSOLUTELY SURE you don't connect the -18 with the G next to it by accident! You'll probably blow-up the power supply in your set if you'd turn it on in such a case...&lt;br /&gt;&lt;br /&gt;The other end of the 1K resistor needs to be soldered to the free end of the 2K resistor. Also connect the loose brown wire to this point. If you do it as neat as in picture 4 you can leave it as it is: it will fit nicely in the housing this way without making shortcuts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_TjkbF5TuKGQ/SXxjDXL5XUI/AAAAAAAAAAs/ia3UaVA0ZVY/s1600-h/4-board-flipped-with-mod.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295216171295530306" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 218px" alt="" src="http://1.bp.blogspot.com/_TjkbF5TuKGQ/SXxjDXL5XUI/AAAAAAAAAAs/ia3UaVA0ZVY/s320/4-board-flipped-with-mod.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Picture 4:&lt;br /&gt;The board is flipped over showing the modification done to decrease the subwoofers power level.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The next picture shows the same modification from a different angle. Note BTW that I removed some of the white transparant 'glue' to be able to solder decently..&lt;/p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_TjkbF5TuKGQ/SXxkvrnYJAI/AAAAAAAAAA0/2AIzeRArSOc/s1600-h/5-board-mod-closeup.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295218032205374466" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 185px" alt="" src="http://1.bp.blogspot.com/_TjkbF5TuKGQ/SXxkvrnYJAI/AAAAAAAAAA0/2AIzeRArSOc/s320/5-board-mod-closeup.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Picture 5:&lt;br /&gt;Same spot viewed from a different angle.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OK, that's it!&lt;br /&gt;&lt;br /&gt;Now put the control POD back together gently, keeping an eye on the modification and where you put the black cable. Re-attach the grey ribbon cable with the red wire at the same spot is was before. make sure all pins are indeed in the connector: no pins should be visible next to the connector's sides!&lt;br /&gt;&lt;br /&gt;Gently put the top side on the backside: it should fit perfecly. If it does not, you probably made a mistake somewhere and you should just do it once more.&lt;br /&gt;Put the four black screws in the backside and screw everything back together.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All set? Reconnect mains power and try your set. If it doesn't work remove mains power quickly and trace back all your steps to see if you made any mistakes, maybe it can be fixed.&lt;br /&gt;&lt;br /&gt;If all is right it should work without a problem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Variations:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;You could also use other resistor values for more or less attenuation to fit your needs. I suggest to keep the values in the range from 1k to 10k Ohm and not much higher since the impedances of the circuitry around it are 'low' as well. It's said in the electronics that you get the best power-transfer if the impedances match..&lt;br /&gt;&lt;br /&gt;Good luck!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-6007318259741353897?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/6007318259741353897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=6007318259741353897' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/6007318259741353897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/6007318259741353897'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2009/01/something-else-logitech-z680-mod-for.html' title='Something else - Logitech Z680 mod for lower Bass output'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_TjkbF5TuKGQ/SXxceDANOXI/AAAAAAAAAAM/rsxdiyrfkiI/s72-c/1-top-unscrewed.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-4207153378376810555</id><published>2008-05-26T19:30:00.003+02:00</published><updated>2008-05-26T20:45:43.286+02:00</updated><title type='text'>New cards on my block..</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;I've not been working on 3D much unfortunately, nor with the 2D driver.&lt;br /&gt;There are some very recent developments however.&lt;br /&gt;&lt;br /&gt;I've been in contact with BeOS/Haiku developer Matt Madia lately, and he decided to send me two new gfx cards to 'thank me' for my previous work (as he wrote). The cards are a Geforce 7300LE (G72) and a Geforce 8500GS (G86), both for PCI-E.&lt;br /&gt;&lt;br /&gt;Also I'm working on finding the Haiku problem with my driver that makes the acceleration engine inoperable (not yet done). In the meantime I came into possesion of a P3-600/FSB133 Mhz system and a second computercase that's still empty.&lt;br /&gt;Seems I'm going to have to arrange for a PCI-E mainboard now so I can test with the two new cards and fork the nvidia driver to create a second one for the G8x series cards... It will probably be a Asus Intel P35 chipset board with two PCI-e x16 slots, a PCIe x1 slot and some PCI slots so I have maximum flexibility for gfx testing for Haiku/BeOS.&lt;br /&gt;&lt;br /&gt;Still, time is and will remain limited in which I'll do this stuff. I'm curious how effective I can make it..&lt;br /&gt;&lt;br /&gt;Well, it's fun playing around a bit again, that's for sure!&lt;br /&gt;&lt;br /&gt;Matt, big thanks for those cards you sent me!!&lt;br /&gt;&lt;br /&gt;Oh, about 3D. Seems there's a newer versioning system used much for Linux these days called git (Mesa3D, the nouveau driver among others). Unfortunately there's no BeOS/Haiku port which makes accessing sources I need for 3D dev hard to do. Still, I could download some stuff using an early windows port and it's an interesting read.&lt;br /&gt;&lt;br /&gt;The next step I need to take for 3D is finding out what the exaxt format of the nouveau_vertex structure is, as I need to create and feed those in the NV15's engine. If anyone accidentally knows where to find that info, please advice :-)&lt;br /&gt;And if someone would want to port that versioning system, rest assured I'd be using it to checkout some interesting sources...&lt;br /&gt;&lt;br /&gt;Have a look here:&lt;br /&gt;http://git.or.cz/&lt;br /&gt;&lt;br /&gt;Bye!&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-4207153378376810555?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/4207153378376810555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=4207153378376810555' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/4207153378376810555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/4207153378376810555'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2008/05/new-cards-on-my-block.html' title='New cards on my block..'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-4059894976737779455</id><published>2008-02-17T21:44:00.002+01:00</published><updated>2008-02-17T21:54:30.901+01:00</updated><title type='text'>3D.. testing testing..</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Just so you know: every now and then I'm fiddling with 3D support improvement. The high-level interface I wrote about two years ago is 'nothing more' than a new 3D command in the engines. This command is called TCL_PRIMITIVE_3D, and I'm testing it on a NV15.&lt;br /&gt;&lt;br /&gt;I already noted some time ago that the command NV11_TCL_PRIMITIVE_3D is responding on my NV15: I can set the colorspace for the back colorbuffer. I can also set the Z buffer range on the card and apparantly most other stuff without hanging the engine. The old 3D command keeps rendering nicely as always so that's good I think.&lt;br /&gt;&lt;br /&gt;Just one thing is hanging the engine: setting the 2D window position. Well, I'll leave that disabled for now since it's working anyway on this card.&lt;br /&gt;&lt;br /&gt;Tonight I find myself at the spot where I need to actually try to render using the new command. Which means I'll now shut-down the old 3D render command and test the new one. The coming time that is..&lt;br /&gt;&lt;br /&gt;I have to admit I'm feeling exited about this. Will I actually be able to get this thing going or not? And: will it improve speed for Q2 and the teapot? And after it works on NV15: could NV20/NV30 be made to work?&lt;br /&gt;&lt;br /&gt;Interesting stuff. Anyhow: little time to work in, lots to do. (as usual ;-)&lt;br /&gt;&lt;br /&gt;Bye!&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-4059894976737779455?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/4059894976737779455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=4059894976737779455' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/4059894976737779455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/4059894976737779455'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2008/02/3d-testing-testing.html' title='3D.. testing testing..'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-8264246157839258257</id><published>2007-10-28T20:55:00.000+01:00</published><updated>2007-10-28T21:11:14.786+01:00</updated><title type='text'>G80 support remains non-existing for now.</title><content type='html'>Hi there.&lt;br /&gt;&lt;br /&gt;No news about 3D yet. Seemed like I had to add support for more cards to the 2D driver first. I synced the driver against nVidia's april 2007 ID list which meant adding 24 more cards (one extra was reported by a user).&lt;br /&gt;&lt;br /&gt;Anyway, some 'bad' news I have I guess:&lt;br /&gt;&lt;br /&gt;After testing on a G86 laptop, looking at the logfiles, and looking at the X.org nv driver code I decided to block G80 and higher support in the driver's accelerant.&lt;br /&gt;Since the 2D accelerant is becoming crowded anyway with all those cards with little differences in them, it seems to me we need to create a new, seperate accelerant (and maybe kerneldriver too) for G80 and higher cards.&lt;br /&gt;&lt;br /&gt;These cards have new CRTC's, DAC's and accelerant engine I think. It won't do the current driver any good (readability for one) to add support for this more extensive modified hardware.&lt;br /&gt;&lt;br /&gt;If anyone is up to the task,  I guess it's a good starting point to copy the current nvidia driver and start tweaking that copy to only get G80 and higher support. That would mean a big cleanup to that version of the driver I guess... ;-)&lt;br /&gt;&lt;br /&gt;Since I have no hardware to work with (and of course little time) I won't start on this myself now.&lt;br /&gt;&lt;br /&gt;This means the current 2D driver just needs to have the ID's added for all new, but pre-G80 cards that are left. And of course this driver could still have some functional gain in the future, like more 2D accelerated functions.&lt;br /&gt;&lt;br /&gt;The driver now has version number 0.84.&lt;br /&gt;&lt;br /&gt;See you later!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-8264246157839258257?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/8264246157839258257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=8264246157839258257' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/8264246157839258257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/8264246157839258257'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2007/10/g80-support-remains-non-existing-for.html' title='G80 support remains non-existing for now.'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-673067309051257502</id><published>2007-09-18T21:31:00.001+02:00</published><updated>2007-09-18T21:46:25.222+02:00</updated><title type='text'>3D is running OK again over here :-)</title><content type='html'>Hi there!&lt;br /&gt;&lt;br /&gt;Well, the 3D accelerant Alpha 4.1 is running correctly again over here: just saw the 152fps timedemo2 going well :-)&lt;br /&gt;&lt;br /&gt;As it turns out something changed with the compiler (or so) indeed: I had a enumeration list of TVencoders defined inside shared_info: apparantly this list gets (more/less) room assigned to it in shared info with the result that every entry coming after that pointed to 'nothing'. When I released the 3D accelerant compiling both the 2D and 3D driver gave the same result in both: the driver worked. These days however the 2D driver compiles differently, so I had to move this TVencoder list outside shared_info to correct the problem. I only had to do so inside the 2D driver: the 3D driver (originally compiled version) then works correctly again.&lt;br /&gt;&lt;br /&gt;Strange. However, I'm glad I nailed it down now. This was irritating me for quite some time. :-)&lt;br /&gt;&lt;br /&gt;This means I can have a look at the Linux world now to see XFree's current card ID's (we're much behind I guess) and the 3D nouveau attempts. For 3D I think I'll try to modify a 3d accelerant command to use the high-level interface on the NV15 card here and see what happens.&lt;br /&gt;&lt;br /&gt;When I again have some time that is :)&lt;br /&gt;&lt;br /&gt;Oh, SVN has the fix of the above described problem now of course.&lt;br /&gt;And: my public Email adress is up again.&lt;br /&gt;&lt;br /&gt;Bye!&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-673067309051257502?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/673067309051257502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=673067309051257502' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/673067309051257502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/673067309051257502'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2007/09/3d-is-running-ok-again-over-here.html' title='3D is running OK again over here :-)'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-6561299908270280968</id><published>2007-09-11T21:00:00.000+02:00</published><updated>2007-09-13T13:19:54.669+02:00</updated><title type='text'>Wow, I missed something.??</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;I was very surprised to learn this week that AMD bought ATI? And on top of that, there's talk of AMD opening up specs (or a opensource driver?) for 3D specs for R500 and up? I didn't expect that!&lt;br /&gt;&lt;br /&gt;And Intel is now maintaining it's own opensource 3D driver for Linux?&lt;br /&gt;&lt;br /&gt;I knew already, but it's confirmed once again: a lot can happen in a year time! I'm very curious what nVidia is going to do if this ATI thing is going to happen.. (Ok, nothing probably ;-)&lt;br /&gt;&lt;br /&gt;Anyway, time will tell, as always.&lt;br /&gt;&lt;br /&gt;I'm trying to get my 3D driver going again on my P4-2800 system, but I seem to have a shared_info problem. if I recompile the 2D driver it's no good when 3D runs, while the old compiled 0.80 driver works OK.. What changed in haiku?&lt;br /&gt;&lt;br /&gt;As we speak I'm trying to checkout the complete trunk so I can recompile from scratch (or so) to see what happens. If I get it going again I want to give the high-level 3D engine setup a spin (if possible), I want to see what nouveau has come up with in the past one and a half year in this respect.&lt;br /&gt;&lt;br /&gt;Mind you, I have just a few hours per week to spend, so nothing might actually happen. Still: I am interested in this.&lt;br /&gt;&lt;br /&gt;Oh, I am trying to get my 'public' Email adres up again (the one still listed on my homepage). Might come in handy again.&lt;br /&gt;&lt;br /&gt;Until later. :)&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-6561299908270280968?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/6561299908270280968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=6561299908270280968' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/6561299908270280968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/6561299908270280968'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2007/09/wow-i-missed-something.html' title='Wow, I missed something.??'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-2677094302610815498</id><published>2007-06-15T20:10:00.000+02:00</published><updated>2007-06-15T20:34:33.626+02:00</updated><title type='text'>A new age.</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;It's been a while since I wrote here. It feels like years have passed..&lt;br /&gt;Thanks everyone for the kind responses you gave me back then, it meant and still means a lot to me.&lt;br /&gt;&lt;br /&gt;I'm happy to see Haiku remains being developed towards a first official release, still can't wait to see that day coming. In the meantime I didn't code a single line myself ..&lt;br /&gt;&lt;br /&gt;Well, at least I've been able to keep my homepage online, and this will remain so I expect since I could succesfully transfer it from my old provider account to a new one some weeks ago.&lt;br /&gt;&lt;br /&gt;Maybe I'll even be able to write a few lines of code for Haiku's drivers in the future. Though I still need to setup my 'old' equipment a bit for that. I guess only time will tell what will come of it.&lt;br /&gt;&lt;br /&gt;In the meantime I did not get messages from people wanting to take over driver development, so all hardware remains in my possession for now. I'm curious when we'll see that situation change btw.. :-)&lt;br /&gt;&lt;br /&gt;I have to confess that I am looking to the ReactOS site every now and then: maybe you've heard of it: it's a opensource Windows clone running native Windows apps and drivers. It looks like a viable alternate OS to Windows for the future to me. If they don't get 'killed' that is.&lt;br /&gt;&lt;br /&gt;Anyhow: I am a Haiku/BeOS fan myself when it comes to coding, and I love the community.&lt;br /&gt;&lt;br /&gt;I haven't got more to say at this time, so I'm signing off now. If and when I got some news, you'll no doubt hear of it some way or another. I'm still curious to that higher level 3D engine a bit..&lt;br /&gt;&lt;br /&gt;Until next time.&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;br /&gt;&lt;br /&gt;Oh, my 'public' Email adresses are still off-line and will remain so for the time being. Bye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-2677094302610815498?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/2677094302610815498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=2677094302610815498' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/2677094302610815498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/2677094302610815498'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2007/06/new-age.html' title='A new age.'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114915897855193541</id><published>2006-06-01T11:00:00.000+02:00</published><updated>2006-06-01T12:49:38.593+02:00</updated><title type='text'>It's been fun...</title><content type='html'>Hi all.&lt;br /&gt;&lt;br /&gt;The time has come for me to make a statement about my future concerning BeOS/Haiku. I owe you that I think, since I've been a  very regular contributor to this community upto now.&lt;br /&gt;&lt;br /&gt;I've been on holiday for a few weeks in Spain just now, in a tiny place where 'time stood still' so to speak. The old village where I stayed is situated in the mountains. There's nothing much to do there, except enjoying the overwhelming nature, do long walks, think, talk with the people I travelled with, eat a orange here and there, and drink a beer. Much in contrast to my busy 'normal, daily life' back home. And much in contrast to 'normal' holiday 'resorts' I tended to visit. Being in this village has been an experience I will *never* forget, it's changing my life. It's good. I feel it in my heart. I have to follow this new path unfolding before my eyes. It's my destination. It's real life. I love it, I need it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;About my (future) contributions for BeOS/Haiku.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As you all probably know, I've spent most of my freetime on BeOS related development. This means that other aspects of my life have been 'neglected' a lot. I've always felt it deep down and I knew it had to change someday. Well, that day has come.&lt;br /&gt;&lt;br /&gt;So, I'll nolonger work on all those drivers much. Maybe even I'll quit alltogether. I'll keep following Haiku progressing towards a full, useable 'replacement' operating system for BeOS though. I really hope it will succeed. I love those systems. They are intuitive and easy to use. They make using computers a breeze. Unlike using Windows or Linux which scare me away and make me feel frustrated.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Here are my suggestions:&lt;/strong&gt;&lt;br /&gt;- I'll do one more Matrox driver release pending updated TVout support completion for G100 and G200 cards. There's not much work left todo for that.&lt;br /&gt;- I now nolonger support any of the programs and drivers I wrote, apart from maybe tiny patches like adding cardID's and such which virtually cost no time to do.&lt;br /&gt;- For the nVidia driver I might continue to do a bit more work for now though: I'm talking about testing a bit with 3D support for newer cards so the new Linux open DRI driver has an improved chance on success. The efforts I'll do are minimal though: only a few nessesities and only if I can manage this while putting in small amounts of time.&lt;br /&gt;- We (the BeOS/Haiku community) need (a) new maintainer(s) for all stuff I did, including for the nVidia driver. I won't be responsible any longer for these items. I might be able to guide someone a bit though every once and a while.&lt;br /&gt;- I have a few items here that can be given to new maintainers: a VIA Nimble V5 and several Matrox graphics cards.&lt;br /&gt;- nVidia hardware I'll probably need a bit longer for those 'final' 3D tests. Some cards can be given to a new maintainter in a bit of time though: and some I'll keep because I had to purchase them. Unless these will be payed for.&lt;br /&gt;- a General 3D related thought: For 3D support I suggest 'porting' Linux DRI drivers back to Haiku 'in the end', including the new nVidia DRI driver that's in the process of being developed. My nVidia driver is probably best left alone in the end, since it's based on an very old version of MESA. It's just a proof-of-concept, along with a good testing bed for hardware knowledge development (for the new DRI driver 'for instance').&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusion.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So, that's about it! It's been a hell of a fun ride! I've given my *very* best efforts to this community, I hope you see that. I don't regret having done that, though it came at a cost. This was a (technical) chapter I needed in my life. it's done now however.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Before continuing life, hopefully finding inner tranquillity; Before continuing life in a much more complete, sensitive, loving and personal way, I need to do some soul searching. So, I'm taking a time-out. I'll probably not respond to Email much.&lt;br /&gt;&lt;br /&gt;Thanks for your awesome support people!!&lt;br /&gt;&lt;br /&gt;Kind regards, and the very best to you all.&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114915897855193541?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114915897855193541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114915897855193541' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114915897855193541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114915897855193541'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/06/its-been-fun.html' title='It&apos;s been fun...'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114535019915898500</id><published>2006-04-18T10:43:00.000+02:00</published><updated>2006-04-18T10:49:59.160+02:00</updated><title type='text'>3D driver Alpha 4.1 / 2D driver 0.80 benchmarks</title><content type='html'>As promised, I posted the benchmark results on the nVidia 3D news page for 3D driver Alpha 4.1 combined with 2D driver 0.80. Have a look there for the details. I've placed a link at the left column of this blogger page that will take you there.&lt;br /&gt;&lt;br /&gt;About my driver's pages:&lt;br /&gt;I'll try to update them a bit more in the coming time as it's all very much outdated these days. I'll probably take down some stuff and point at Haiku's bugzilla and the Bebits download entries instead, since that's more official anyway and saves me updating efforts at the same time.&lt;br /&gt;&lt;br /&gt;That's it for now. Seems I can now work a bit more on the videonode related stuff. See you later !:-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114535019915898500?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114535019915898500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114535019915898500' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114535019915898500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114535019915898500'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/04/3d-driver-alpha-41-2d-driver-080.html' title='3D driver Alpha 4.1 / 2D driver 0.80 benchmarks'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114444639375569298</id><published>2006-04-07T22:58:00.000+02:00</published><updated>2006-04-08T10:19:40.960+02:00</updated><title type='text'>3D rendering speed now upto twice as fast!</title><content type='html'>As some of you already know, 3D rendering speed went up with a factor of 1.4-2.0 on all supported GeForce style cards. TNT2(M64) render 1-4% faster, which is not very impressive compared to the GeForce speedup: but nevertheless noticable in some occasions.&lt;br /&gt;&lt;br /&gt;The 3D driver renders at approx. 40% of the Windows driver speed for TNTx style cards, if the Windows driver uses the same setup as our BeOS driver: blits for swapbuffers, 16-bit texturing and disabled retrace-sync. For GeForce style cards, the driver now runs at approx. 30% of the Windows driver speed.&lt;br /&gt;&lt;br /&gt;Needless to say I think, is that I am very happy with the big improve in speed we now see. If you compare different cards for speed using Windows, and you put the results of that next to a comparison in speed using BeOS: you'll find that the relative scores are starting to match! In other words, if a certain card performs fastest in Windows, it will now also perform fastest in BeOS..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hey, what happened?&lt;/strong&gt;&lt;br /&gt;Well, after finding the results of the delta-speed test I did, I (once again) did a sweep of the engine init code in the 2D driver. Only this time, much more detailed than ever before. And then I found what I needed: just a few tiny bits needed toggling to get the new speeds! Don't really know what they do though.. We had sub-optimal settings, especially for GeForce cards. When you think about it, it could have been expected, as the UtahGLX driver my work is based on was very old: first created probably in the pre-GeForce era.&lt;br /&gt;&lt;br /&gt;Anyhow, I did the sweep on all cards I have here, so TNT1, TNT2, TNT2-M64, GeForce2MX, GeForce2Ti, GeForce 4MX440, and GeForce 4MX4000. I am very sure the init setup code is now optimal speedwise. Of course I also looked at degrading quality: but that I didn't see. This combined with the speed comparison against Windows (for all those cards) leads me to believe this should be perfectly OK now.&lt;br /&gt;&lt;br /&gt;So, thinking about how the engine's inner workings are: those ROP's in there (parallel raster outputs) are all working already. So two on most cards, and four on the GeForce 2Ti cards. The new speed comparisons on BeOS confirm this (more or less).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Release?&lt;/strong&gt;&lt;br /&gt;I'll release a new 2D driver asap: probably current SVN version 0.79. I'll also recompile the Alpha4 3D add-on against it and publish the combination as well as Alpha 4.1. Note: the 3D driver has not changed one bit, it's just that the shared_info in the 2D driver was expanded with a new (unrelated) nv.setting: that's why the recompile is needed.&lt;br /&gt;&lt;br /&gt;Furthermore I'll publish a new benchmark table with all those results on both Windows and BeOS. Still done with Quake2 timedemo 1 (with sound running), as I always did: you can easily compare it to those old Alpha 2 benchmarking results I published.&lt;br /&gt;&lt;br /&gt;The new benchmark table will be on the driver's homepage (3D news page), instead of here though. Just so you know.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;So, why are we not yet at 100% of 'Windows' speed?&lt;/strong&gt;&lt;br /&gt;Well, there are a number of things to account for that.&lt;br /&gt;&lt;br /&gt;1. The acceleration engines are still idle at times during rendering, even on the faster CPU systems. This has to do with the bursting nature of those vertices being sent, and can only be fixed by using a higher-level interface to Mesa. Luckily Mesa3.4.2 turns out to have this interface, so I'll try to interface to it for a later Alpha release. This interface sends entire GLbegin()/GLend() sequences in one call to the driver, instead of the current one-triangle-per-call system. Furthermore this higher-level interface is needed for current Mesa as well, so interfacing to that would be a 'translation step' for me: which is good. :-)&lt;br /&gt;&lt;br /&gt;Having this higher-level interface in place might very well increase rendering speed with a factor 1.5 or so: even (much) more so on slower CPU systems. Of course I'm guessing a bit about the possible speedgain at this point.&lt;br /&gt;&lt;br /&gt;2. on TNT style cards, no more gain is possible: this high-level Mesa interface needs to be translated down to the current low-level hardware interface: sending seperate triangles.&lt;br /&gt;&lt;br /&gt;On GeForce style cards however, this higher-level interface Mesa has, is also supported in the hardware!. This means that in theory it's possible to tell the engine what type of primitives we want to render (at GLbegin() time), like seperate triangles, tri-strips, tri-fans, and all other styles GLbegin() supports. The nice thing about this is of course, that we don't need to send seperate triangles to the engine, but just the vertices needed to describe the primitive we want to render (so literally like the app does that sends the commands).&lt;br /&gt;&lt;br /&gt;Seems that this would save the driver sending tremendous amounts of redundant vertices: after all, in a real scene a lot of triangles have sides in common.&lt;br /&gt;&lt;br /&gt;(Example: a quad. sending seperate triangles means we need to send 6 vertices, while a quad by itself only needs 4 vertices to describe it.)&lt;br /&gt;&lt;br /&gt;(Example 2: a cube. There are 8 vertices needed to descibe it. Now break it down in seperate triangles, we'd need 36. Right?)&lt;br /&gt;&lt;br /&gt;Well, this would increase rendering speed: can't miss. And the (very) good news is, that we might even be able to get this hardware interface up and running! Thanks to a very new open nVidia DRI driver attempt that is...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How about maximizing effective use of the RAM-datapath-width?&lt;/strong&gt;&lt;br /&gt;We talked about this a bit: about how fetching a single point (pixel) would waste valuable bandwidth, and how a crossbar memory controller could improve effectiveness by using smaller 'lanes'. Remember? Well, that crossbar controller was invented for GeForce3 and later: so we can't be suffering from that.&lt;br /&gt;No. It turns out that it's like this:&lt;br /&gt;- the hardware &lt;strong&gt;already&lt;/strong&gt; maximises effective use of bandwidth! After all, we are not drawing single pixels, we are drawing 'entire' triangles! These consists of a large number of pixels (most of the time), so the engine can 'auto-optimize' access by doing parallel pixel rendering!&lt;br /&gt;- a crossbar memory controller only comes in handy when you render lots of very small triangles: here the internal engine parallelisation fails (we deal with just one, or a few pixels). So, this crossbar controller is needed for next-generation games, where much more (smaller) triangles make up a scene. Makes all sense now, no?&lt;br /&gt;&lt;br /&gt;So, we don't have more bottlenecks than described just now (those two), apart from probably some extra Mesa software overhead caused by the fact that we will 'never' be able to utilize all hardware tweaks and features that could exist in the cards: lack of docs (and time), as ususal.&lt;br /&gt;Personally, I can live with that. I mean, if those two bottlenecks could be fixed, I'd be very satisfied. Ah, I'm glad with what we have already &lt;em&gt;now&lt;/em&gt; as well... ;-)&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114444639375569298?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114444639375569298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114444639375569298' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114444639375569298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114444639375569298'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/04/3d-rendering-speed-now-upto-twice-as.html' title='3D rendering speed now upto twice as fast!'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114409832417431402</id><published>2006-04-03T22:33:00.000+02:00</published><updated>2006-04-03T23:21:49.330+02:00</updated><title type='text'>RAM access bandwidth test for 3D in nVidia driver</title><content type='html'>I promised to tell you about that 'delta speed test' I did with the 3D driver, which I did to get a better idea about how fast the RAM could be actually accessed by the 3D part of the acceleration engine. I considered this interesting because the 3D driver was rather slow compared to it's windows counterpart.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So how did I test?&lt;/strong&gt;&lt;br /&gt;It was rather simple, really. In the previous post I did I already 'calculated' some numbers for RAM bandwidth, and bandwidth needed by the CRTC to fetch the data to show us the memory content on the monitor. So I thought, if I can ascertain how much fps is gained by stopping CRTC accesses to the memory, I also know how much fps is theoretically feasable if the engine could use the complete bandwidth.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;In a formula&lt;/strong&gt;&lt;br /&gt;(total RAM bandwidth / needed bandwidth by CRTC access) * (fps without CRTC accessing memory - fps with CRTC accessing memory) = nominal fps rate possible.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The setup&lt;/strong&gt;&lt;br /&gt;Just modify the 2D driver to enter DPMS sleep mode as soon as the cursor is turned off, and enter DPMS on mode when the cursor is turned back on. DPMS sleep mode in facts sets the CRTC in a 'reset' state since it's not required to fetch any data anymore: we won't be looking at it anyway (monitor is shut off). So this DPMS sleep state gives back the memory bandwidth otherwise used by the CRTC, to the 3D engine.&lt;br /&gt;&lt;br /&gt;Since:&lt;br /&gt;- you can start Quake2 from a terminal 'command line', including instructing it to do a timedemo test,&lt;br /&gt;- you see the fps results back on the command line after game quitting and,&lt;br /&gt;- starting Quake2 turns off the driver's hardware cursor, while stopping it turns it back on,&lt;br /&gt;This setup will work nicely.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Result for the Geforce4MX, NV18&lt;/strong&gt;&lt;br /&gt;(6000 / 225) * (29.9 - 26.3) = 96 fps. (Windows measured value = 119 fps)&lt;br /&gt;&lt;br /&gt;Well, for my taste this proves enough already that RAM access is actually OK, and the fault would not be low clocked RAM or something like that. So the reason for slow fps on BeOS should be found somewhere else.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;Why is the delta speed with the CRTC test actually OK, while the total rendering speed is much to low? Well, it's interesting to realize that CRTC accesses are spread evenly through time, while 3D engine memory access requests are of a bursting nature.&lt;br /&gt;&lt;br /&gt;The conclusion would be that there's some bottleneck in the GPU somehow after all... And with this new knowledge I went to sleep, not knowing yet what to make of this new information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114409832417431402?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114409832417431402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114409832417431402' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114409832417431402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114409832417431402'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/04/ram-access-bandwidth-test-for-3d-in.html' title='RAM access bandwidth test for 3D in nVidia driver'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114332059121194634</id><published>2006-03-25T21:05:00.000+01:00</published><updated>2006-04-03T23:13:45.580+02:00</updated><title type='text'>3D add-on Alpha 4 released..</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Well, it's done: Alpha 4 is outthere. I had to do a lot more work than I anticipated, hence the delay. But it's well worth it I think: a lot more bugs were solved. In other words, Quake 1 and 2 showed more rendering errors after all, just less easy to see for someone not much running games (yet :).&lt;br /&gt;&lt;br /&gt;The driver entry on bebits contains a list of all errors solved, so just have a look there for the nifty details, or just download Alpha 4 and read the included HTML file (which contains the same list plus updated application running status info).&lt;br /&gt;&lt;br /&gt;What can I add to that info?&lt;br /&gt;Well, rendering speed is higher than ever before, although still slow compared to windows and linux closed source drivers. But I mentioned that already as well. I'll try to do a new benchmark using Alpha 4 to give you the current detailed results: that way you can (finally) compare it to old Alpha 2 speeds I once gave.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GPU and RAM speed (overclocking and bottlenecks)&lt;/strong&gt;&lt;br /&gt;Let's talk a bit about rendering speed and bottlenecks. I spent a lot of time to find out why the speed is so much slower than on Windows and Linux closed-source drivers. I also tried to get NV20 and higher going once more. I did not find the solution to either problem, but I learned more about the cards and windows drivers in the meantime: who knows, it might help one day.&lt;br /&gt;&lt;br /&gt;Anyway, one of the things I did was add tweaking options for GPU and RAM clocking speed in the 2D driver. Of course the 3D driver also benefits from this, and that was the intended result.&lt;br /&gt;I did a test on my P4 at 2.8Ghz/533Mhz fsb, using the GeForce 4MX 440. This card has BIOS settings 275Mhz clock for GPU and 400Mhz for RAM. Coldstarting the card revealed that these speeds are actually programmed.&lt;br /&gt;Here's the result of testing GPU speed with RAM speed at default (400Mhz):&lt;br /&gt;GPU speed, Q2 timedemo1 fps in 800x600x16 mode (Alpha 4)&lt;br /&gt;50, 38.8&lt;br /&gt;100, 66.2&lt;br /&gt;150, 78.8&lt;br /&gt;200, 82.8&lt;br /&gt;275, 86.0&lt;br /&gt;&lt;br /&gt;I find this interesting, doubing the GPU speed did NOT double the rendering speed. Now look at RAM testing with GPU at default (275Mhz):&lt;br /&gt;RAM speed, Q2 fps&lt;br /&gt;100, engine hang&lt;br /&gt;150, engine hang&lt;br /&gt;200, engine hang&lt;br /&gt;250, 55.7&lt;br /&gt;300, 66.4&lt;br /&gt;350, 76.4&lt;br /&gt;400, 86.1&lt;br /&gt;450, 92.9 (overclocking 12%!)&lt;br /&gt;&lt;br /&gt;Interesting here is the fact that increasing the RAM with a certain percentage, increases fps with the same percentage! When we combine both tables, we can conclude that the RAM access speed is the bottleneck, not the GPU speed. When you benchmark Q2 some more using different settings for texture filtering this conclusion remains intact: fps is not influenced one bit depending on filtering. At least, the GPU doesn't care.&lt;br /&gt;&lt;br /&gt;About the engine hangs at low speeds: most RAM used on graphics cards is of the dynamic type: it must be refreshed within a certain amount of time to keep it's content. When it's done too slow the content gets damaged: hence trouble.&lt;br /&gt;&lt;br /&gt;So, why is RAM access the bottleneck?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;background: RAM bandwidth considerations&lt;/strong&gt;&lt;br /&gt;So how much data can be transferred with RAM anyway? Well, raw speeds look like about this.&lt;br /&gt;the NV18 (most cards as a fact still), have a 128bit wide path between GPU and RAM. This means that per clock-cycle (SD-RAM) 128/8=16 bytes data are transferred. If we have a clock of 400Mhz, that means 400.000.000 * 16 bytes = 6,4Gbytes/second can be transferred.&lt;br /&gt;We need to deduct some room for refreshcycles, so let's say for argument sake we keep about 6Gbytes/sec bandwidth for our card's functions.&lt;br /&gt;&lt;br /&gt;So which functions are running? Well, we need to send RAM content to the screen (monitor). In 1024x768x32 mode at 75Hz refresh that means 1024*768*4*75 = 225Mb/sec are transferred.&lt;br /&gt;&lt;br /&gt;This leaves some 4.8Gbytes/sec bandwidth for the GPU accesses and CPU accesses combined.&lt;br /&gt;Note that when you run for instance Quake2 timedemo, that at first the textures are loaded into the cardRAM, and then the demo starts running. Running the demo nolonger transfers data between the host system (CPU) and cardRAM: everything needed is already there. Apart from the actual rendering commands that is, but these are a relatively small amount of data: which resides in main system RAM, and are fetched by the GPU directly (AGP DMA accesses). So these commands don't load the RAM bandwidth. Just the GPU.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Bottleneck identification?&lt;/strong&gt;&lt;br /&gt;One serious 'problem' with these calculations is the fact that the GPU not always needs chunks of 16 bytes (128bits, the width of the datapath, data transferred in one clock-cycle). If you render using a 16-bit Z-buffer, and some serious hardware access optimisation doesn't exist, those two bytes will cost 16 bytes worth of bandwidth. In other words: these accesses run at 2/16 = 12,5% of maximum speed. For a 32bit colorbuffer, this would be 4/16 = 25% speed.&lt;br /&gt;&lt;br /&gt;This could be what we are looking at. Unfortunately, I don't have a clue how to engage optimisation in the GPU for this kind of stuff: the crossbar memory controller (if it exists in those cards, this I should check in the coarse specs from nVidia). This piece of hardware is capable of splitting up those 16 bytes in seperate smaller lanes so to speak.&lt;br /&gt;&lt;br /&gt;On the other hand, this same problem should exist on TNT class cards: but we are running at relatively high speeds there already compared to GeForce class cards. If you look at the windows driver results. But then again, there might be completely other reasons for that. It remains sort of guessing.&lt;br /&gt;&lt;br /&gt;So, how are those speeds again? I'll sum a bit up once more (for the P4 2.8Ghz system at 1024x768x32 mode):&lt;br /&gt;card, windows (blit-swapbuffer function forced, 16-bit textures), beos ALpha 4&lt;br /&gt;TNT2 (ASUS V3800) , 41.3, 15.6&lt;br /&gt;GF2MX400, 86.0, ---&lt;br /&gt;GF2Ti, 165, ---&lt;br /&gt;GF4MX440, 119, 26.3&lt;br /&gt;(--- means: not tested)&lt;br /&gt;&lt;br /&gt;So, the TNT2 works at 15.6/41.3 = 38% of max. speed. The GF4MX440 at 26.3/119 = 22% of max speed. Both cards have 128 bit wide buses by the way.&lt;br /&gt;&lt;strong&gt;Note to self&lt;/strong&gt;: so geforce class cards seem to be running at relatively 50% speed of the TNT class cards. Do we need to enable DDR (double data rate) explicitly?? At least more cards should be compared for this. I seem to remember the GF2Ti running at some 23fps on BeOS, which would be relatively much slower than the GF4MX440.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Indications for actual RAM access bandwidth on BeOS&lt;/strong&gt;&lt;br /&gt;I had in mind to give you the result of an interesting delta-speed test I did on BeOS, but that will have to wait until another day. Time is up for now. But I'll post it as next item, I promise. It's very much related to the above story after all!&lt;br /&gt;&lt;br /&gt;In the meantime: have fun with 3D! It seems we can run Quake1,2 and 3 all on BeOS now. With acceleration...&lt;br /&gt;&lt;br /&gt;Signing off. Good night :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114332059121194634?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114332059121194634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114332059121194634' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114332059121194634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114332059121194634'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/03/3d-add-on-alpha-4-released.html' title='3D add-on Alpha 4 released..'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114082526099770042</id><published>2006-02-25T00:16:00.000+01:00</published><updated>2006-02-25T01:02:20.036+01:00</updated><title type='text'>nVidia 3D status update</title><content type='html'>High-time for a status update I'd say. A lot has happened.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resizing outputwindows and another BeOS bug&lt;/strong&gt;&lt;br /&gt;This function is implemented and working reliably now. However, that took some time: there turns out to be another BeOS (R5 and dano) bug here: when you enable Window resizing events in the constructor of the BGLview, the corresponding routines are called: but the new size given to the resize routine is &lt;strong&gt;NOT&lt;/strong&gt; the new one! Instead the one before the latest one is given.. Needles to say it took a lot of testing and trying to recognize this bug. By the time I knew what was going wrong, I saw a workaround in Be's teapot code: not using the given size, but asking for it itself.&lt;br /&gt;After I added this workaround to the driver as well, resizing worked correctly. But not before I added LockLooper()/UnlockLooper() calls to the routines LockGL() and UnlockGL(): this was the trouble I saw about resizing being asynchronous to rendering. So not a Mesa problem, but 'my' problem: syncing threads. Fortunately this solution was already there in current Mesa, so I just copied it over to my driver.&lt;br /&gt;&lt;br /&gt;Resizing sometimes still temporary distorts the rendered output, but that's not very important. Although it could look better of course. The driver is not calling Mesa GLviewport or resize_buffer functions, that's a task for the application programmer (as can be seen in various code examples outthere). The driver only takes care of programming the card right. It's nice to see a very large Teapot spin around, and to recognize the speed effects of resizing it. :-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Trilineair filtering: 'random' engine crashes&lt;/strong&gt;&lt;br /&gt;As usual (so I can say these days :-) BeOS Mr.X is 'betatesting' the driver for me. As he has a lot of knowledge about the Quake series of games and the console commands you can give them, he finds bugs rather easy compared to myself. One of the problems he encountered was that using GL_LINEAR_MIPMAP_LINEAR texture rendering in Quake2 hung the driver. After two days of searching I discovered what was wrong: the original UtahGLX driver I based my work on contained an error: the rendering quality setting was increased 'by one step' when rendering switched from textured rendering to non-textured rendering. Of course the driver meant to set a basic 'level 1' as textures aren't actually used then.&lt;br /&gt;&lt;br /&gt;The driver crashed the acceleration engine because it was fed with an illegal setup: a non-existing filtering mode.&lt;br /&gt;So: alpha 4 will have this problem fixed. And the really funny part is that I didn't even &lt;em&gt;know &lt;/em&gt;the driver supported filtering in this area... But it does: you can choose no filtering, bilinear filtering, and trilinear filtering: all just a setting fed into the engine. Checkout the &lt;em&gt;gl_texturemode&lt;/em&gt; console command for Quake1 and Quake2 if you are interested.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Quake1 touching keyboard hangs game&lt;/strong&gt;.&lt;br /&gt;Another interesting thing to have a look at. Since the sources of GLquake are outthere, I made it compile on R5 and dano. That turned out to be a relatively easy thing todo. After having the game run, I could now go on a bughunt for this error. It turns out that the keyboard routine is protected by a semaphore, which is also grabbed when a new frame is rendered. This is a bad situation apparantly, as rendering stops completely when the keyboard was touched. I could fix it anyway by modifying the game executable a bit: acquiring/releaseing the semaphore as close to actual rendering as can be (inside the LockGL()/UnlockGL() part instead of outside of it.) Still you see the keyboard lagging on high-res modes however. Anyway: it has to do. Unless someone else is going to have a better look ofcourse. (Enable the networking support someone?).&lt;br /&gt;&lt;br /&gt;With Be's software GL the game did not hang, but then, this renders rather slowly. I could prevent hanging in the accelerated driver by adding a snooze(100000)...&lt;br /&gt;If someone knows of a driver-way to overcome this problem I am interested in knowing: after all R4.5's accelerated GL did not suffer from this symptom.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Quake1 rendering faults.&lt;/strong&gt;&lt;br /&gt;While I was playing around with Q1, I decided to try to find the reason for the wrongly rendered game scores at the mid-bottom of Quake1's screen. I found it after another day or two: yet another 'original' UtahGLX driver bug. It forgot to send the active texture's colorspace to the engine when a new one was activated...&lt;br /&gt;Oh, doing a timerefresh in Q1 console was strange to see as well: it rendered in the foreground buffer. As the nVidia driver doesn't support that yet, I modified this command to use the backbuffer so it's accelerated: it's nasty to have to wait for 128 frames when rendering a single one cost about a second or so.&lt;br /&gt;&lt;br /&gt;Anyway: it makes more sense as well to have it render in the backbuffer as otherwise we would always see the 'distortions' of the engine building up the frames in plain sight.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Next up..&lt;/strong&gt;&lt;br /&gt;So: all in all all rendering faults for both Quake1 and Quake2 have been solved. I guess I should release an updated version of Quake1 to bebits (including source) so this game can be played using openGL once more on BeOS. It would be nice if someone could take it from there to update it for networking and such I'd say.&lt;br /&gt;&lt;br /&gt;OK, back to work. I want to have a look at switching resolutions inside Quake2 (wich only works partly for some reason), and then comes the 'real' swapbuffer thing. Apart from these items the driver seems ready for a new release.&lt;br /&gt;&lt;br /&gt;Talk to you later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114082526099770042?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114082526099770042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114082526099770042' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114082526099770042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114082526099770042'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/02/nvidia-3d-status-update.html' title='nVidia 3D status update'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-114025905970740795</id><published>2006-02-18T10:53:00.000+01:00</published><updated>2006-02-18T11:37:39.753+01:00</updated><title type='text'>nVidia 3D: back on Mesa 3.4.2</title><content type='html'>While searching for a good solution for that delayed swap I mentioned to solve drawing errors, I once again compared Mesa 3.2.1 and 3.4.2. One of the differences between them turns out to be the added Mesa feature to complete pending drawing commands right before a driver issues the swapbuffer() command.&lt;br /&gt;In other words, I switched back to Mesa 3.4.2, as that solves the drawing problem neatly if I add executing that Mesa internal command in the driver's swapbuffer function.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Mesa speed&lt;/strong&gt;&lt;br /&gt;The reason for me to fallback to the older Mesa before (alpha 3.5) was the apparant lower rendering speed the newer version had. Luckily it turns out I made a mistake myself: I forgot to enable hardware accelerated Z-buffer clearing! Once I enabled that, speed came a lot closer to Mesa 3.2.1's. Mesa 3.4.2 is indeed a bit slower, but just a tiny bit now.&lt;br /&gt;Of course, I wanted to see if I could at least come up with the old speed, so I started looking once more at the hardware rendering commands hoping to find something I could optimize a bit more. Well, I found something indeed. Instead of issuing the vertexes and drawing commands seperately, I now issue them in one single burst of writes into the DMA cmd buffer. Also I use other vertex offsets in the engine, so the last vertex written automatically points me at the first drawing command entry. This saves overhead in explicitly setting engine register pointers in there, increasing rendering speed a bit (5-10% less words written into the DMA cmd buffer). If only Mesa could send 4 points, 4 lines and 5 triangles in one call... then I could increase the burst to it's max increasing speed another few percents, and save software routine calling overhead a lot.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vertical retrace sync&lt;/strong&gt;&lt;br /&gt;In the meantime I added a new nv.settings option in the 2D driver called 'force_sync'. This option is now taken by the 3D accelerant to enforce retrace syncing for the swapbuffers command. With a small addition to the 2D's driver acc engine init code, we can now instruct the acceleration engine to wait for a retrace occuring before coninuing exec of commands. This is a bit nicer than explicitly waiting for a retrace (by CPU), as this enables us to keep sending rendering commands to the engine while that engine wait for the retrace. One of the important things for optimum fps rates, is that we try to keep the engine's DMA command buffer 'filled' at all times... The app should stay ahead with filling of the engine emptying and executing.&lt;br /&gt;&lt;br /&gt;This engine wait exists in NV11 and newer cards, so the driver autoselects the retrace sync method depending on card architecture.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Swapbuffers: swapping instead of blitting (copying)&lt;/strong&gt;&lt;br /&gt;Adding real swapping turns out to be a challenge! The reason for wanting to add this function is to remove some of the acc engine load (used for blitting), so that space-in-time becomes available for 3D acceleration.&lt;br /&gt;Unfortunately, swapping requires a sync to retrace: the CRTC (cathode ray tube controller) part of the GPU cannot do a swap at all times, as it's very busy with data fetching while the screen is drawn. You need to issue such a swap during retraces, otherwise the point in time the actual switch occurs cannot be guaranteed (over here it typically delays some 100 'lines': this register holding the pointer is doublebuffered in hardware apparantly).&lt;br /&gt;Well, you guessed it: if we have to wait for a retrace, then we waste valuable GPU time we could otherwise use for 3D rendering! This contradicts our goal of course... In effect we loose speed instead of gaining it.&lt;br /&gt;&lt;br /&gt;So: is there a solution to this problem? Yes, there is I think (I still need to check this out though). On BeOS, all 3D rendering uses double buffering. We have the 'frontbuffer' and the 'backbuffer': two buffers. You could switch between those once rendering to the backbuffer is done. The backbuffer then becomes the frontbuffer and vice versa. The next frame will be rendered to the old frontbuffer, now being the backbuffer. You see the problem: we need to wait until the CRTC actually displays the new frontbuffer, before we can delete and render in the old frontbuffer.&lt;br /&gt;The solution presents itself: setup triple buffering. When we use that we don't really care when exactly the CRTC switches to the new buffer, we leave the old one alone anyway! Instead we use the third buffer to render into... Of course we need to wait anyway if the CRTC needs more time to switch than we need to render one frame: I don't know yet how to sync rendering to this limitation.&lt;br /&gt;&lt;br /&gt;All in all I don't know yet if swapping will make it into alpha 4: I want to see the thing actually work OK before I promise that. Oh, this solution has a downside as well (of course): we need extra graphics memory to hold the third buffer. Though that is no real problem in practice.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resizing buffers (viewports, the output window)&lt;/strong&gt;&lt;br /&gt;This is another subject I am once again putting time into. The last action I took (late last yesterday evening) was determining that we have a hardware (sync) problem here! This is good news for me, as I should be able to fix that. Once I do I can retest the Mesa internal function for resizing buffers (and resizing viewports). Looks like Mesa deservers (much) more credit than I initially gave it: it's well thought out, internal sync wise. I was under the impression that hangs and render errors could occur with out-of-sync events like resizing output windows, but it might well be that this is not the case at all. I'm a happy camper.&lt;br /&gt;&lt;br /&gt;If I can find a solution the the hardware problem, and Mesa's function for resizing works well enough (under heavy acc engine load): I'll enable driver support for resizing. This means the teapot can be stretched etc via resizing the window it spins in (unlike having the repeating pots pattern you see now). Also this means that apps that initially create very small buffers and resize later will work (without modification) now.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;Well, it looks like this will be an important update: Alpha4. Although in effect the speed won't differ that much (upto 10% speed gain depending on CPU and GPU power: P4-2800, NV18 +10%, dualP3-500 NV11 +3%), there are a lot of visible bugfixes concerning rendering.&lt;br /&gt;&lt;br /&gt;I hope this will stimulate people to do some more 3D apps... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-114025905970740795?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/114025905970740795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=114025905970740795' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114025905970740795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/114025905970740795'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/02/nvidia-3d-back-on-mesa-342.html' title='nVidia 3D: back on Mesa 3.4.2'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-113970637980046346</id><published>2006-02-12T01:50:00.000+01:00</published><updated>2006-02-12T02:10:56.976+01:00</updated><title type='text'>Mesa 3.2.1 and accelerated 3D on nVidia (again)</title><content type='html'>While working on updating the nVidia 2D driver for a new BeBits release, I decided to clean-up for 3D support. I tested a lot of register configuration settings with help of two cards in a system: I could never test as speedy as these days (nolonger reboots required).&lt;br /&gt;&lt;br /&gt;Some 'nonsense' 3D setup where removed, and I could also find one point where more speed could be gained for 3D: I modified the rendering output colorspace from some 'special' type with different input/output spaces, to 'standard' ARGB32. This apparantly means less drawing overhead, which lead to a 11% rendering speedup in B_RGB32 space on my P4-2.8Ghz using the NV18 card. On my dualP3-500 with NV11 a 7% speedup was still gained. 15 and 16 bit spaces are unmodified speed-wise.&lt;br /&gt;&lt;br /&gt;While I was very nearby the 3D subject again, I wandered off more into the 3D accelerant and Mesa3.2.1. I ended up trying to setup a real swapbuffer command (instead of using blitting), which could give us another 5% speedgain for all spaces in fullscreen modes. It still doesn't work correctly (I am thinking another Mesa bug..), but it gave me an interesting view on the rendering behind-the-scenes (seeing a scene being constructed in the backbuffer).&lt;br /&gt;&lt;br /&gt;It became apparant to me, that although we have several drawing errors with Quake2 (missing texts, missing parts of text, missing bitmaps, intermittant missing crosshair and scores), these items &lt;strong&gt;were&lt;/strong&gt; drawn none the less! As it turns out, the normally visible rendered buffer (with the just mentioned errors) is rendered in the background, then swapped on-screen, and &lt;strong&gt;then&lt;/strong&gt; the missing pieces are rendered in the now obsolete background! Of course they are never shown, as after this final rendering part, the erase buffers command comes up...&lt;br /&gt;&lt;br /&gt;So, I tried a delayed swap, and &lt;strong&gt;YES&lt;/strong&gt;!! Q2 renders without any drawing fault (32bit mode atm)!&lt;br /&gt;&lt;br /&gt;This sudden success means I'll put some more time in the alpha3.5 3D add-on, and see what I can do to modify it for general improvement here: I am hoping I can get this incorporated so that it's still useable with other 3D apps as well. I will update the BeBits entry to be Alpha4 after I release the 'current' 2D driver, hopefully with both the 'perfect draw' and the fullscreen swap function in place: all in all for instance 1024x768x32 mode in Q2 would go up from 22 to 28fps then, and without drawing errors anymore.&lt;br /&gt;&lt;br /&gt;Well, 'back to work'. Talk to you later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-113970637980046346?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/113970637980046346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=113970637980046346' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/113970637980046346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/113970637980046346'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/02/mesa-321-and-accelerated-3d-on-nvidia.html' title='Mesa 3.2.1 and accelerated 3D on nVidia (again)'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-113809658364010955</id><published>2006-01-24T10:40:00.000+01:00</published><updated>2006-02-08T20:27:45.446+01:00</updated><title type='text'>official Be drivers and multiple cards</title><content type='html'>I've been playing around a lot lately with multiple graphicscards in one system, seeing what happens if you try to use the second (or tertiary or whatever) card in there. It turns out to be quite interesting, a lof of things happen I didn't really expect.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What card will be used by the BeOS to display the Desktop?&lt;/span&gt;&lt;br /&gt;If you start a terminal session, and type:&lt;br /&gt;ls -l /dev/graphics&lt;br /&gt;You'll get a list of kerneldrivers currently loaded for graphicscards. The first one listed is tried first by BeOS. If it determines that one doesn't work, it will try the second one listed etc. 'Stub' is not a real driver, but a fallback option to display your Desktop if no suitable real driver is found.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does a driver signal that it won't work?&lt;/span&gt;&lt;br /&gt;This is rather interesting, and rather unspecified. remember, a driver consists of two parts: the kerneldriver and the accelerant. The kerneldriver is the one creating the /dev/graphics/ entries.&lt;br /&gt;So: the system (app_server) tries to open the kerneldriver first. Some closed source drivers will block more than one open instance.&lt;br /&gt;- The matrox driver(s) do this to signal that the card in question is already in use: handy for me if I want to determine which cards are still free for a video consumer node for instance.&lt;br /&gt;- However: the sis driver does this if it determines that the card can't be made to work: i.e. it sees that this card wasn't coldstarted by the system BIOS (displaying POST messages etc). The sis driver itself doesn't feature internal coldstart support, so if a sis card is non-primary according to your system BIOS, the driver will signal that it can't be used.&lt;br /&gt;&lt;br /&gt;While I personally like the first 'feature', I don't really like the second one: it's likely that a accelerant will be the better place to check if a card can be really used: the kerneldriver's functionality should only be mapping the device: not *using* it.&lt;br /&gt;&lt;br /&gt;On a sidenote I can tell you I tried converting the Haiku nVidia driver to use this signalling for 'being busy', but I miserably failed. I am no expert here, but it seems that the cookie managed by the system somehow is causing trouble. And besides: Be probably documented multiple-opens to be supported in their Graphics Driver kit for a good reason, although their own drivers (sometimes) work differently.&lt;br /&gt;&lt;br /&gt;So, I modified the Accelerant's INIT_ACCELERANT and CLONE_ACCELERANT hooks to return B_NOT_ALLOWED in case the order of them being executed is not valid. Also I'll add aborting on unuseable cards later on in INIT_ACCELERANT.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Driver errors encountered during node development&lt;/span&gt;&lt;br /&gt;For some reason most Be drivers can't seem to correctly identify their own hardware. Say you have two cards in a system, the desktop displayed on card 1, and card 2 not used. If you start using card 2, you might well discover that the driver for card 2 somehow gains access to card 1 and messes up it's programming. I have a feeling this has to do with non-system-wide-unique named areas mapped by the kerneldrivers.&lt;br /&gt;Luckily the Haiku drivers don't have this issue: I guess the Be Alpha driver kit has a fix for this problem in it.&lt;br /&gt;&lt;br /&gt;Other errors encounted were:&lt;br /&gt;- Be SiS driver has overlay support, but it's broken. It supports single buffered overlay only, but vertical 'bars' of repeating video are shown instead of normal video. Also shutting of overlay doesn't work: once enabled it stays enabled.&lt;br /&gt;- Be unified nVidia driver has broken GET_ACCELERANT_DEVICE_INFO hook: you need to issue it twice to get valid info (after that it's OK).&lt;br /&gt;- DPMS state preservation over SetMode() calls is 'broken' on most Be drivers. Apparantly they didn't have time to update all of their drivers to what the alpha driver kit prescribes. (SiS driver is OK, nVidia and Matrox are 'broken'). BTW, I think preserving DPMS state is the way to go indeed. :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, that's about it I guess. This is the third time I am trying to write this 'article', so forgive me if I'm a bit sloppy. The fun in writing an article fades away fast if browsers and sites constantly mess-up...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-113809658364010955?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/113809658364010955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=113809658364010955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/113809658364010955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/113809658364010955'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/01/official-be-drivers-and-multiple-cards.html' title='official Be drivers and multiple cards'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21348073.post-113795214480389690</id><published>2006-01-22T18:45:00.000+01:00</published><updated>2006-01-22T18:49:04.813+01:00</updated><title type='text'>Back again...</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;Let's try blogging this way once more. It's a lot less work than editing HTML myself after all, and more is possible (considering my limited knowledge on this stuff).&lt;br /&gt;&lt;br /&gt;Hopefully I'll find the time to keep messages coming here :-)&lt;br /&gt;&lt;br /&gt;Rudolf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21348073-113795214480389690?l=be-hold.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://be-hold.blogspot.com/feeds/113795214480389690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=21348073&amp;postID=113795214480389690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/113795214480389690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21348073/posts/default/113795214480389690'/><link rel='alternate' type='text/html' href='http://be-hold.blogspot.com/2006/01/back-again.html' title='Back again...'/><author><name>Rudolf Cornelissen</name><uri>http://www.blogger.com/profile/14149827140103426742</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03778723288353485407'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>