I need this now especially as it gets us the shader modification mechanisms to work around Mac GL crashes, see bug 665578
The relevant ANGLE revisions are 734, 738, and 740 fixes a bug in 738.
This also allows us to reset our set of cherrypicked ANGLE revisions which was starting to be very big.
A GLES 2.0 extension exists that allows us to use GL_UNPACK_ROW_LENGTH, amongst
other variables. This really helps us when uploading sub-regions of a buffer
that don't span the entire width of that buffer (for example, when scrolling
horizontally).
This extension is available on Android tablets, and possibly other Tegra 2
devices, so is very much worth taking advantage of.
Details:
http://www.khronos.org/registry/gles/extensions/EXT/GL_EXT_unpack_subimage.txt
TiledTextureImage breaks BeginUpdate/EndUpdate in these cases:
- The update is encompassed by more than one tile
- The update is encompassed by a single tile that isn't the first tile
- The update is a non-rectangular region that covers more than one tile
Fixed by using signed instead of unsigned integers in tile loops, correcting
an incorrect device offset and correcting the region returned by BeginUpdate.
Although we currently have buffer rotation disabled for shadow buffers when
using the GL layer manager, if you re-enable it, it will be broken. This is
because we don't take into account the rotation when handling updates.
This fixes that handling by offsetting the updated region by the rotation,
and if that new region crosses texture boundaries, splitting it into
multiple uploads.
Drawing of rotated buffers relies on texture-wrapping, but in the case of
tiled textures, this would cause each individual tile to wrap instead of
wrapping the compound texture.
Add a special case for tiled textures that manually does the wrapping.
Currently fixup_unbounded_boxes assumes that the extents are tight when we only
have one box. This is not always true. e.g. when we tesselate boxes we can end
up with only one box which is smaller than the extents and the extents are not
updated.
--HG--
extra : rebase_source : 5e01da7d845c1cd34f9e87d5c7de22dafe9df7a4
Although we currently have buffer rotation disabled for shadow buffers when
using the GL layer manager, if you re-enable it, it will be broken. This is
because we don't take into account the rotation when handling uploads.
This fixes that handling by offsetting the updated region by the rotation and
adds an assertion if the updated region crosses a rotation boundary (which
should never happen).
Drawing of rotated buffers relies on texture-wrapping, but in the case of
tiled textures, this would cause each individual tile to wrap instead of
wrapping the compound texture.
Add a special case for tiled textures that manually does the wrapping.
TiledTextureImage breaks BeginUpdate/EndUpdate in these cases:
- The update is encompassed by more than one tile
- The update is encompassed by a single tile that isn't the first tile
- The update is a non-rectangular region that covers more than one tile
Fixed by using signed instead of unsigned integers in tile loops, correcting
an incorrect device offset and correcting the region returned by BeginUpdate.