• Advertisement
Sign in to follow this  

Ignoring redundant SetSamplerState

This topic is 4179 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, When I turn on dx debug and output level max I found some messages in output window. "Direct3D9: (WARN) :Ignoring redundant SetSamplerState Sampler: 0, State: 13 Direct3D9: (WARN) :Ignoring redundant SetSamplerState Sampler: 0, State: 14 Direct3D9: (WARN) :Ignoring redundant SetSamplerState Sampler: 0, State: 25 ..." I understand "ignoring redundant setsamplerstate". But what I don't know is next this sentence. "State:13, 14, 25, 15,16, 17, 18, 19, 20,..." "D3DSAMPLERSTATETYPE" is defined and "D3DSAMP_DMAPOFFSET = 13" is the end as I know. is there more enum value in samplerstate? thanks.

Share this post


Link to post
Share on other sites
Advertisement
This is the exact thing that I have been wondering. In this utility I have been playing with, I tried to map those state numbers to the real enum, but those numbers...don't exist in the enumeration :P

Share this post


Link to post
Share on other sites
They reason for this is the way RefRast is implemented. As a Software device is use a similar interface as a real driver. As D3D drivers on XP need to be compatible to older runtimes the sampler states are a problem because they are not serrated from the texture stage states in earlier versions. To ease the driver development the D3D9 runtime maps the new Sampler states to the old texture stage stages before they are passed to the driver. Unfortunately the RefRast don't convert them back. But there is a list in the DDK

#define     D3DTSS_ADDRESSU         ((D3DTEXTURESTAGESTATETYPE)13)
#define D3DTSS_ADDRESSV ((D3DTEXTURESTAGESTATETYPE)14)
#define D3DTSS_BORDERCOLOR ((D3DTEXTURESTAGESTATETYPE)15)
#define D3DTSS_MAGFILTER ((D3DTEXTURESTAGESTATETYPE)16)
#define D3DTSS_MINFILTER ((D3DTEXTURESTAGESTATETYPE)17)
#define D3DTSS_MIPFILTER ((D3DTEXTURESTAGESTATETYPE)18)
#define D3DTSS_MIPMAPLODBIAS ((D3DTEXTURESTAGESTATETYPE)19)
#define D3DTSS_MAXMIPLEVEL ((D3DTEXTURESTAGESTATETYPE)20)
#define D3DTSS_MAXANISOTROPY ((D3DTEXTURESTAGESTATETYPE)21)
#define D3DTSS_ADDRESSW ((D3DTEXTURESTAGESTATETYPE)25)
#define D3DTSS_SRGBTEXTURE ((D3DTEXTURESTAGESTATETYPE)29)
#define D3DTSS_ELEMENTINDEX ((D3DTEXTURESTAGESTATETYPE)30)
#define D3DTSS_DMAPOFFSET ((D3DTEXTURESTAGESTATETYPE)31)

Share this post


Link to post
Share on other sites
Thanks..
But i'm still wondering why samplerstate warning appear.
I didn't use SetSamplerState() at all.
I just use Pixel shader and so simple as you see.

===========================================
sampler TextureSampler0 =
sampler_state
{
Texture = <tex0>;
};

float4 PS( float2 Tex: TEXCOORD0 ) : COLOR
{
return tex2D(TextureSampler0, Tex);
}
===========================================
if I don't use texture in ps() there is no redundant sampler warning.
I don't know why and I don't know how to fix it.


Share this post


Link to post
Share on other sites
Quote:
Original post by Demirug
They reason for this is the way RefRast is implemented. As a Software device is use a similar interface as a real driver. As D3D drivers on XP need to be compatible to older runtimes the sampler states are a problem because they are not serrated from the texture stage states in earlier versions. To ease the driver development the D3D9 runtime maps the new Sampler states to the old texture stage stages before they are passed to the driver. Unfortunately the RefRast don't convert them back. But there is a list in the DDK

Aha - that would explain it! Thanks [smile]

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement