Am 01.07.2010 um 20:58 schrieb Fabian Bieler: > I hoped that OpenGL took care of those cases. According to the spec samplers > with incomplete textures bound to them should return (0, 0, 0, 1), too. > Wouldn't sampling from a texture unit to which the binding of matching > dimensionality is 0 count as incomplete? (At least as long as no one uploads > an image to it, I'm not sure if it's legal to use texture name 0) Part of the problem is that we don't maintain a texture dimension that isn't used on a sampler. E.g.
bind Volume texture to sampler 0 draw with a shader reading the volume texture bind 2D texture to sampler 0 draw with a shader reading the 2D texture bind a shader reading volume textures draw with that shader The last step reads from the volume texture bound in step 0, but I guess the correct thing would be to return 0,0,0,1 because the sampler doesn't match the shader. That's why I am afraid you'll have to fix this in the shader, by not sampling at all if the texture doesn't match. > Anyhow, I just did some testing and found out that nvidia returns (0, 0, 0, > 0) > for incomplete textures and 'unbound' texture units i.e. bound to 0. > Maybe it does that on windows for D3D, too. I only tested on AMD and the > reference rasterizer (which both return (0, 0, 0, 1)) and bug 14942 only > depends on the rgb components. I can do some testing, but first I have to fix the existing tests. I get about 1000 failures on my Win7+Nvidia box. > Also: If you want to work around the issue with more dummy textures, wouldn't > you also have to bind dummy textures to all available texture units (and not > just the ones exposed to the fixed-function-pipeline)? I don't think dummy textures are the way to go here. They're needed for fixed function for texture ops that don't involve textures, because otherwise ARB_texture_combiners returns an error. E.g. stage 1 texture: NULL stage 1 color op: D3DTOP_ADD stage 1 color arg1: D3DTA_PREVIOUS stage 1 color arg2: D3DTA_TEXFACTOR The texture isn't used here, but the texture_combiner API says that using a stage without a texture is an error, hence the dummy textures. We shouldn't need them for the nvrc, arbfp and atifs pipelines.