Alex Deucher wrote:

--- "Robert S. Kerr" <[EMAIL PROTECTED]> wrote:


Alex,

I'm sending this to you directly because I have been unable to get
this message sent to the dri-developer's list. For whatever reason, the dri-list doesn't appear to like my e-mail address. I knew you would have some interest in this issue, but I think it merits posting to
the list. Perhaps I'll be able to figure out how to get it up there
soon.


Rob Kerr

<begin message>
Based on Alex Deucher's recent request to test the Savage driver he
and Felix have been working on, I recently pulled the savage-2-0-0-branch


and compiled the driver for testing.

My configuration is Fedora Core 1, AMD Athlon 2200, 512 MB,
ProsavageDDR in a Shuttle SK41G.


My results have been good so far. I was able to get the driver up
and running on a monitor quickly. X seems stable and I haven't had any crashes so far.



Have you tried 3D? how has that worked out? what about modes? 1280x1024? 800x600? etc. any problems with Xv?


I haven't tried 3D yet. I'll see if I can get glxgears running and let you know what happens.
I've had it running in 1024x768, 800x600 and in 640x480 on a Dell P990 monitor. Didn't try 1280x1024. I ran using the stock XF86Config generated by X. It correctly identified my chipset and picked the right driver. I manually adjusted the default bitdepth to use 16. Dunno what refresh I was getting, but I was able to switch modes normally using CTRL + ALT + '+'. Only got 640x480 on TV because of my external encoder.
I'll check on Xv. I'm fairly certain that it was using Xv though.




What isn't working, however is TV out. Any time I start X with a TV connected, I get an error saying that displays have been found, but
no valid modes for the displays are available. I did some looking
around and I know what the problem is, I'm just not sure of the correct fix
for it.


In savage_vbe.c, there is a method 'SavageQueryVBEInfo' that queries
for supported displays and sets up some TV Out information. Noteably,
the TvSizeX & TvSizeY are set to 0. For all chips other than S3_TWISTER,


they stay at TvSizeX =0, & TvSizeY = 0. For S3_TWISTER chips, they
are set to a size based on the external TV encoder. In my case they stay
at 0 because I have an S3_PROSAVAGEDDR chip.


Later on, when the driver is trying to find valid modes in 'SavageValidMode' (savage_driver.c), since TvSizeX & TvSizeY are 0,
all modes are bad.


My fix would be to add a check for my chip in the
'SavageQueryVBEInfo' method, (in fact I did this last night and was able to get TV out working at least a little bit), but I don't know if that is really
the right answer. Seems like that check is in there because when the
driver was written, S3_TWISTER was the only chip that supported TV out. I'm





That's probably the right answer. the DDR chips are basically
prosavage/twister chips that support DDR memory. I think the only
difference between prosavage and twister was chipset support. Prosavage was for Intel and twister was for AMD. the cores are pretty
much the same.


I'm thinking that a better answer would be to change the 'if' test into a switch statement that can set the TvSizeX & Y as required for each chip. I think that would be a bit more clear on the intention in there anyway if we did that. I could set up the one for my chip (Prosavage) and the others would remain at 0,0 (which would mean TV out is broken for them) until we can figure out what the right sizes are for those. They'll need to have something though, or the driver will throw out all of the modes for them. My board uses a CH7005 for the external chip so I'm limited to 640x480 for TV out. Any idea what the supported resolutions for the chipsets with built-in TV encoders are?



certain that there must be others and so I wanted to know if anyone knows which of the savage chips support TV out so we can set up the right 'if' test.



I don't have a prosavage-based board to test with, but I suspect all prosavage/twister/ddr chips should work the same for tv-out.



So, does anyone know which savage chips support TV out?



Just about all of them do to a certain degree.




Do they all use the external encoders like the S3_TWISTER does?



The laptop chips (mx/ix/supersavage) included a built in tv-encoder. they also have two crtcs and can do dualhead. the prosavage/twister
chips only have one crtc and no built in tv-encoder, hence to have to
use an external one to support tv-out.


Dunno how we would enable dual heading in the driver. I wouldn't know how to set up XF86Config to tell the driver which modes to use, etc.



Is adding additional chips into the 'if' test the right answer here?




I think so. I'd say add twister/prosavage/prosavageddr. Attach a
patch if you like. I'll probably mess with the mode/Xv code at some
point this week (depending on time). I'll take a look at you patch
then if you provide one, otherwise I'll just take a look at the code in
question. felix has a ddr and perhaps he can test.


I'll see if I can put together a patch and send it. As it is I could get TV out working, but I think there is something up with the BIOS mode matching code. I was getting screwy scan stuff on the TV screen. More on that in another thread later. Might not get to it until later in the week.

Alex



Thoughts?

Rob Kerr.

BTW, I've been following the work of Alex and Felix for these last
few weeks excitedly. Kudos to them for getting the Savage driver to the state that it is in such short order.
<end message>



Rob Kerr


begin:vcard
fn:Robert S. Kerr
n:Kerr;Robert
org:Digital Sandbox, Inc.
adr;dom:Suite 501;;12355 Sunrise Valley Drive;Reston;VA;20191
email;internet:[EMAIL PROTECTED]
title:Chief Software Architect
tel;work:703-390-9770
tel;fax:703-390-9778
tel;cell:703-798-9069
url:http://www.dsbox.com
version:2.1
end:vcard

Reply via email to