Roland Scheidegger wrote:
> On 25.02.2010 18:39, michal wrote:
>> Roland Scheidegger wrote on 2010-02-24 15:18:
>>> On 24.02.2010 12:48, Christoph Bumiller wrote:
>>>   
>>>> This wasn't a problem before because textures and samplers were
>>>> linked 1:1, but in view of the gallium-gpu4-texture-opcodes branch,
>>>> this coordinate normalization bit becomes a problem.
>>>>
>>>> NV50 hardware has that bit in the RESOURCE binding, and not the
>>>> SAMPLER binding, and you can imagine that this will lead to us having
>>>> to jump through a few annoying looking hoops to accomodate.
>>>>
>>>> As far as I can see, neither D3D10 nor D3D11 nor OpenGL nor CUDA have
>>>> sampler states that are decoupled from the texture, and which contain
>>>> a normalized coordinates bit, so it's worth considering not having it there
>>>> in gallium either.
>>>>
>>>> For OpenGL, unnormalized coordinates are only used for RECT textures,
>>>> and in this case it makes sense to make it a property of the texture.
>>>>     
>>> I agree this is not sampler state, but I don't quite agree this should
>>> be texture state.
>>> This changes how texture coordinates get interpreted in the interpolator
>>> - in that sense it is similar to the cylindrical texture coord wrap
>>> which we moved away from sampler state recently. This one got moved to
>>> shader declaration. I wonder if the normalization bit should be treated
>>> the same.
>>> Though OTOH you're quite right that in OpenGL this really is texture
>>> property (it is a different texture target after all), and afaik d3d
>>> doesn't support non-normalized coords (?). Hmm...
>>>
>>>   
>> Isn't it the case that for RECT targets we clear the bit, and for others 
>> we always set it?
>>
>> In mesa st I see:
>>
>>          if (texobj->Target != GL_TEXTURE_RECTANGLE_ARB)
>>             sampler->normalized_coords = 1;
>>
>> By definition, RECT texture with normalised coordinates is just an NPOT. 
>> If we removed this apparently redundant flag, would that make nouveau 
>> developers life easier?
> But we don't have rect targets in gallium hence we need the flag. I
> think conceptually this makes sense since for texture layouts etc.
> drivers won't care one bit if this is 2d npot or rect texture.
> Though I guess introducing rect targets instead would be another option.

We should also be thinking about texture array targets.  With a 2D 
texture array, the S and T coords would be normalized, but not R.

I think we either need new texture targets for RECT, 1D_ARRAY, 
2D_ARRAY, etc. or per-dimension normalization flags.  I'm thinking the 
former may be better (simpler) since textures are created as a 
particular type and not changed afterward.  We also know the texture 
type/target when we execute TEX shader instructions.  If it's part of 
sampler state it gives the impression that it's variable state, but it 
really isn't.

-Brian


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to