On 10/25/2011 03:58 PM, Eric Anholt wrote:
The intel driver (and gallium, it looks like, though it doesn't use
these texstore functions at this point) doesn't bother making storage
for textures with 0 width, height, or depth.  This avoids them having
to deal with returning a mapping for that nonexistent data.

Fixes assertion failures with an upcoming intel driver change.

For the series:  Reviewed-by: Brian Paul <bri...@vmware.com>


However, there are some additional issues with texture borders that have existed all along that we should probably fix up in follow-on patches.

Suppose we've got a GL_TEXTURE_2D_ARRAY texture, if there's a border, it only applies to the width and height, not the depth. So we don't want to change the texture depth in this case. Similarly for 1D texture arrays and the height.

We should fix this in the border stipping code and in _mesa_init_teximage_fields() and probably other places TBD.

A helper function like this might be useful to split up the user-provided border value into per-dimension values:

void
split_border(GLenum target, GLint border,
             GLint *w_border, GLint *h_border, GLint *d_border)
{
   switch (target) {
   case GL_TEXTURE_1D:
   case GL_TEXTURE_1D_ARRAY:
      *w_border = border;
      *h_border = *d_border = 0;
      break;
   case GL_TEXTURE_2D:
   case GL_TEXTURE_2D_ARRAY:
      *w_border = *h_border = border;
      *d_border = 0;
      break;
   case GL_TEXTURE_3D:
      *w_border = *h_border = *d_border = border;
      break;
   case ...
   }
}


-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to