More Reference Rasterizer

markbiddlecom

Member
Joined
Jun 30, 2003
Messages
13
Location
Denver, CO
Hi, all, Im begging for some help again...

Heres my situation: Ive written a 3D mapping programing that uses D3D 9 for the graphics end of things.

Because this product is going out to a bunch of people that wont have hardware acceleration, I need to be able to use the reference rasterizer as a backup.

After a whole lot of toying around, I seem to have discovered that all you need to do to place a reference rasterizer on a computer is copy d3dref*.dll to the system directory on that machine.

Or so I thought.

Weve got a test machine here running Windows 98. At one point, this approach worked. It doesnt seem to any more.

Now, I can determine the capabilities of the reference rasterizer successfully, but whenever I try to create a device--windowed or full-screen, the call fails.

Whats worse, I simply cant get any detailed information on the error, because dbmon doesnt seem to work on the system with or without the Developers runtime.

Has anybody ever heard of this kind of behavior before? Especially on Windows 98... I know its not very common to try and use the reference rasterizer these days, but as I said this isnt a performance application, and I dont care about speed.

Anyway, any input, however trivial, would be appreciated.

Thanks in advance,

Mark
 
Ive never tried using the Reference Rasterizer as I thought it was mostly for developers who want to test out functionality that they dont have access to on their video cards. Most users would rather use the Software renderer over the Reference one since the Reference one is SOOO slow.

Of course if youre using functions that the users graphics card doesnt support in hardware OR software, youre stuck with the reference guy. I think theres a registry setting to allow use of the reference driver (in addition to just copying over the dll). There might also be something in the DirectX control panel applet thingy. Also, most end users will only have the end user runtime installed which isnt a debug version of the DirectX dlls, so dbmon wont be getting any messages. You can test this by going to the control panel for DirectX and seeing if you can enable the "Debug" radio buttons.

By the way, Ive gotten frame rates down around 1 or .5 (thats one frame every two seconds) using the Reference driver using the following cards (bother are pretty nice):
GeForce 2 GTS (32meg)
Radeon 9500 Pro (64 meg)

Good luck :)

-nerseus
 
Software Renderer?

Maybe I missed something here, but what software renderer? I was under the impression that DX didnt even offer one, and thats why I was dealing with the reference rasterizer...

Anyway, as for the frame rate, I only need to redraw when the viewing, coloring, and texturing parameters change, which is not very often. I render to a bitmap in memory and then I just display that bitmap whenever the screen needs to be refreshed. Im making static images rather than animations, so its not that much of an issue. Besides, were "recommending" every one has hardware support anyway ;)

Assuming that I cant get to the software renderer, do you have any idea what registry keys need to be enabled to enable the reference device? Ive done some extensive searching online and in my own registry, and I havent found any keys that are different and seem to be related when I install the end-user or developer runtimes.

Thanks for your input, and I hope to hear more soon.

-Mark
 
Yep, the GraphicsDeviceInfo object has a DevType property that takes DeviceType.Hardware, DeviceType.Software, or DeviceType.Reference.

As for getting the reference driver to work, I remember reading something about the registry but that may not be right - I have a bad memory sometimes, especially when Im only half listening. I also have Okbutonitis - when I install things and I get a dialog with only an Ok button, I tend to press it before reading the message. I sometimes catch a glance of the text and think (wow, wish Id read that) - but Im too lazy to uninstall/reinstall to read it. Did I just say that out loud? :)

I remember from DX8 (or DX7 - and *maybe* DX9) that there was a batch file or small EXE in the Samples folder (I think - all very vague right now) that enabled/disabled the use of the reference driver. That may all be made up and related to something else, but it might be a start. And since youre looking and not finding anything, Im throwing out anything that might help.

I just did a quick search on google (with "site:microsoft.com") and didnt find much. But from a few notes here and there, it appears that they consider the reference driver a developer tool mostly. My guess is that its not currently installed as part of the enduser runtime (which would make sense given your tests). Since there doesnt appear to be any info on installing that driver by itself, you might want to ask this question on the MS forums (msnews.microsoft.com using Outlook Express or your favorite news reader). They are frequented by MS people on occasion so even if no one else can help you, you might still get an answer from the DirectX team.

-Ner
 
oh...

Thanks again, Ner, but Ive got one last question for you.

Ive noticed the option for creating a software device, and Ive seen information about the DDK support for software renderers. However, when I attempted to create one, I got a failure on every machine I ran the code on. My conclusion had been that there is no Microsoft-supplied software device. Am I wrong here?

As for the registry keys, I did A LOT of searching, and I think that DX7 was the last version where Microsoft included explicit, universal support for the reference rasterizer. There was, in fact, a specific error code that suggested enabling the RR using a registry snapshot called enablerefrast.reg, included in the DX7 SDK.

So, I went and searched around to see if I could download that SDK, and finally found a legacy copy that is currently 78% downloaded. Ill post here when and if I find something out.

-Mark
 
lol - my memory was working after all, sort of (the enablerefrast.reg was what I was thinking of).

Ive gotten the Software renderer to work (I think). I used the Project Template that came with DX9 (start a new DX9 project, Direct3D, follow the wizard to the end). You can tweak the code they gave to use it, to turn off the hardware support. At least, I think I tried that around 6 months ago and it worked. I guess its possible that their cards dont support either...? Maybe try to run the code on your machine, but choose the Software renderer over the Hardware one instead of having it pick it only if hardware isnt supported.

If you do build from the wizard, look in the D3DEnumeration class that gets added. Its got a TON of code for setting up the device properly.

-Ner
 
heh... heh...

:-\

Weeeeeeellllll

After some digging around, and after talking to some of the MS peeps, I know at least have a confirmed report that the reference rasterizer is not available on an end-users machine unless they have the developers runtime installed.

Furthermore, were not allowed to distribute the reference rasterizer, even if we knew how.

And although I didnt follow up on this, it seems that there is no default software renderer, either, unless some company has placed a software driver on the machine (the DDK supports pluggable software drivers).

So, in summary, I convinced the higher powers that there was only one solution to the problem: require hardware acceleration.

But, just so as not to alienate too many customers, weve included support for the reference device, and have instructed users as to how to obtain it (d/l and install the 80MB developers runtime distributable from MS). But we dont officially support that option.

Not sure if the follow up might help anyone in the same situation as me (if anybody ever is), but here it is anyway.

Oh, by the way, my talks with MS indicated that they HAVE had requests to bring the reference device back at a universal level, and that they were "considering" it, but that no guarantees could be provided.

-Mark
 
Back
Top