[DX9] HLSL fx shader compile fails without errors

Started by
6 comments, last by Demirug 13 years, 10 months ago
I can feel it in my bones - this is going to be a real bugger to fix...

I have a problem getting my current game to run on a laptop that has an Intel GMA card. I've narrowed the problem down to the shaders not compiling, but for some reason there's no errors being produced by the compiler.

Using D3DXCreateEffectFromFile, the buffer that's supposed to hold errors is empty, but the shader does not compile.

These shaders compile and run perfectly on other hardware, so I figure it must be related to the GMA card. The card is reporting it has HW vertex shaders and supports SM3 (and the shaders have an SM2 fallback if needs be).

The biggest hurdle is that this laptop is one that belongs to a friend, so I can't just go and start installing various tools and abducting her laptop just to test my code. She's happy to try running my game and feeds me back the logs, but it does make it difficult to properly narrow down the problem.

The d3d9 device is created fine, and there are no erroneous return results from anything in the run up to the shader compile attempt.

The laptop card is pretty good and plays modern games with ease, so I was surprised to see it fail like this.

Does anyone have any ideas what might cause this compiler problem? Or perhaps you have an idea to help narrow down the culprit?
------------------------------------------[New Delta Games] | [Sliders]
Advertisement
The compiling itself is independent from the hardware. You can even precompile your effects by using the command line tool or the API functions for this.

Therefore the problem must be related to the creation of the shaders. Unfortunately Intel has a tradition of delivering bad drivers. As you can’t install test tools all you can do is write a little test app that tries to create the precompiled versions of your shaders and log the results.
This one really does have me stumped.

I've tried both precompiled and dynamically compiled shaders - same problem, no shader created, no error returned.

So I tried running fxc.exe and compiling the shader on the laptop, and nothing happened. No errors, no compiled shader output, nothing. Nada. Zip. bupkiss. It just gave me back the dos prompt without so much as a copyright notice.

I simply do not understand what could be causing this. To get no output at all and for all return values to be ok, but still fail is crazy.
------------------------------------------[New Delta Games] | [Sliders]
Is the right D3D and D3DX version installed on the laptop? While the D3D component can be updated with Windows update you need to run the setup from the SDK (or the web installer) to get the right D3DX version there.
I vaguely remember something about DX9 and one of the D3DX components changing from a lib to a dll. Is that the problem here do you think? Would shipping the dll in the game folder work? I can't remember what the dll was off the top of my head, so I may be barking up the wrong tree.
------------------------------------------[New Delta Games] | [Sliders]
Shipping the D3DX dlls in your game folder is against the rules. There is a redist folder in the SDK that contains a setup that will do the right thing. As an alternate you can use the webinstaller:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3
Shouldn't the d3dx9.dll file already be installed on the laptop as part of DirectX9.0c? She's running Vista Home, probably with SP1 (she has auto update on) so DX9 should be installed by default (and she can run other DX9 games no problem). So I'm probably barking up the wrong tree anyway.

When I get the chance I'll try dropping the d3dx9.dll into the game folder on her laptop just to test and see if that is the problem or not.
------------------------------------------[New Delta Games] | [Sliders]
A standard Windows installation doesn’t include the D3DX Dll’s they are only distributed with the Redist setup or the web installer.

This topic is closed to new replies.

Advertisement