[osg-users] Minor change proposal : Blacklist usage of all unsized texture internat format

Julien Valentin julienvalentin51 at gmail.com
Tue Aug 14 17:00:39 PDT 2018

If others users express themself on the subject It would be great...

I found what I searched for in the spec

> section "8.5 Texture Image Specification":
>     The internal component resolution is the number of bits allocated to each value in a texture image. If internalformat is specified as a base internal format, the GL stores the resulting texture with internal component resolutions of its own choosing.

So GL implementation do whatever it want with base internal format.
If osg doesnt take care of these base internal formats, it can exibit behavior divergence among different hardwares...which is bad...

Please, don't rush in rejection, take your time to understand my point.
(I think I have enough developped it...to be understable)
and please explain me at last what do you mean by "not setting internalFormat". It doesn't make any sense to me ?!


robertosfield wrote:
> HI Julien,
> On Tue, 14 Aug 2018 at 17:24, Julien Valentin
> <> wrote:
> > So if noone have a better idea, my proposal is to simply to ban usage unsized _internalFormats. I think it would sanitize osg
> > 
> I have already rejected that idea.
> Your changes to use glTextureStorage in master have broken the OSG for
> existing users as reported elsewhere.  I don't think it's acceptable.
> Your changes have introduced a regression and we need to fix this, not
> push the blame for this regression onto users for not explicitly
> setting the internal format where applications were perfectly OK
> previously.
> You need to start thinking about backwards compatibility.
> If glTextureStorage adds a requirement that the internal format is set
> then perhaps we should just disable it's use when the internal format
> is not set and just rely upon glTextureStorage when it is.  This way
> original usage will use the original code paths and not break
> anything.
> Robert.
> mp3butcher wrote:
> > I repose the problem:
> > 
> > Deductions we can do to help user setting its Texture (fill unsetted)
> > -Texture::_internalformat ->sourceFormat
> > -Image::_pixelformat->_internalFormat,_sourceFormat
> > 
> > glTexStorage only allow SIZED internalFormat whereas glTexImage allow both sized and unsized
> > 
> > Texture with Image already had glTexStorage support and there was no problem since _internalFormat is set based on a deduction from Image::_pixelFormat
> > 
> > I added glTexStorage for ImageLess Texture code path and now we see a problem: we don't have a _pixelFormat to deduce _intenalFoamt
> > 
> > One solution would be to add an other 'osg only' conventions to translate unsized to sized internalFormat.
> > 
> > Problem would be
> > -it add more convolutions to understand what osg do with textures :/
> > -it could perhaps introduce divergence among diff hardware
> > (ex: I don't read anywhere that _internalFormat=GL_RGBA is understand as GL_RGBA8 or GL_RGBA16 on all machines)
> > 
> > So if noone have a better idea, my proposal is to simply ban usage of unsized _internalFormats. I think it would sanitize osg
> > 
> > Please, argue on this base
> > 
> > PS at Roberts: If you call my proposal backward compatibility breaking, I think it would involve less pain for user code maintanability than the change you've made on _textureunit,..
> > i had to debug to see i can't anymore put the same texture on differents textureunits (and lot of code change were involved:/)...
> > And I think I'm not the only one using this "niche feature"...
> > 
> > Cheers 
> > 
>  ------------------
> Post generated by Mail2Forum

Twirling twirling twirling toward freedom

Read this topic online here:

More information about the osg-users mailing list