On Wed, Aug 11, 2010 at 10:07 PM, Luca Barbieri <l...@luca-barbieri.com>wrote:
> > Because all nvidia hardware seems to have the normalized bit as a > property > > of a resource (PIPE_TEXTURE_RECT or a flag would be okay here), and all > ATI > > hardware has the normalized bit as part of the texture instruction (it's > a > > shader state, so a driver looks for TGSI_TEXTURE_RECT), I believe it > would > > really be best for everyone to have this RECT texture target type and > > removing normalized_coords from pipe_sampler_state. Luca, you've already > > done some work for this change. If you don't have time to finish > > PIPE_TEXTURE_RECT, I'll do that. > > So no hardware at all supports specifying the normalization as part of > the sampler state? > > One has to keep in mind OpenCL though, which has the following API: > cl_sampler clCreateSampler (cl_context context, > cl_bool normalized_coords, > cl_addressing_mode addressing_mode, > cl_filter_mode filter_mode, cl_int *errcode_ret) > > If you put the bit in the resource itself, then it becomes impossible > to change the normalization without copying the whole resource, which > would seem to be a major problem for implementing OpenCL. > > A possible solution could be removing the bit from the sampler state > and adding the bit to both TEX instructions and sampler views. > This would seem to suit nv50, which has it in the hardware sampler > view, and r300-r700 which has it in the hardware shader instruction > (according to you). > I'm not sure if it is good enough for OpenCL (i.e. whether the OpenCL > state tracker can statically determine the sampler<->texture mapping), > but I suppose it is, since it matches the hardware and the proprietary > drivers manage to support OpenCL. > > A flag would need to be passed on resource creation anyway though, > since nv30 needs to use different memory layouts. > > Also in this option, adding the resource hint and moving the bit out > from the sampler state would be independent. > ACK for your patch series from me. Getting rid of that normalized_coords bit in pipe_sampler_state would make implementing OpenCL really hard. I'll try to come up with a sane way to rewrite shaders for all ATI hardware. Masking out PIPE_RESOURCE_FLAG_UNNORMALIZED_COORDS_HINT in r600_texture_create should be enough to keep r600g in a working state. -Marek
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev