More Reference Rasterizer

markbiddlecom

Newcomer
Joined
Jun 30, 2003
Messages
13
Location
Denver, CO
Hi, all, I'm begging for some help again...

Here's my situation: I've 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 won't 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.

We've got a test machine here running Windows 98. At one point, this approach worked. It doesn't 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.

What's worse, I simply can't get any detailed information on the error, because dbmon doesn't seem to work on the system with or without the Developer's runtime.

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

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

Thanks in advance,

Mark
 
I've never tried using the Reference Rasterizer as I thought it was mostly for developers who want to test out functionality that they don't 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 you're using functions that the user's graphics card doesn't support in hardware OR software, you're stuck with the reference guy. I think there's 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 isn't a debug version of the DirectX dlls, so dbmon won't 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, I've gotten frame rates down around 1 or .5 (that's 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 didn't even offer one, and that's 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. I'm making static images rather than animations, so it's not that much of an issue. Besides, we're "recommending" every one has hardware support anyway ;)

Assuming that I can't get to the software renderer, do you have any idea what registry keys need to be enabled to enable the reference device? I've done some extensive searching online and in my own registry, and I haven't 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 I'm 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 I'd read that) - but I'm 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 you're looking and not finding anything, I'm throwing out anything that might help.

I just did a quick search on google (with "site:microsoft.com") and didn't 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 it's not currently installed as part of the enduser runtime (which would make sense given your tests). Since there doesn't 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 I've got one last question for you.

I've noticed the option for creating a software device, and I've 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. I'll 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).

I've 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 it's possible that their cards don't 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 isn't supported.

If you do build from the wizard, look in the D3DEnumeration class that gets added. It's 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-user's machine unless they have the developer's runtime installed.

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

And although I didn't 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, we've included support for the reference device, and have instructed users as to how to obtain it (d/l and install the 80MB developer's runtime distributable from MS). But we don't 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