-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 12/09/2013 04:58 PM, Eric Anholt wrote: > Ian Romanick <i...@freedesktop.org> writes: > >> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 >> >> On 12/03/2013 10:44 AM, Eric Anholt wrote: >>> Siavash Eliasi <siavashser...@gmail.com> writes: >>> >>>> Hello, this is V2 series of patches to accomplish *Enable >>>> ARB_map_buffer_alignment in all drivers* newbie project >>>> suggested by Ian Romanick. >>> >>> I think there's a piece missing to this, which is this bit of >>> spec text: >>> >>> "If no error occurs, the pointer value returned by >>> MapBufferRange must reflect an allocation aligned to the value >>> of MIN_MAP_BUFFER_ALIGNMENT basic machine units. Subtracting >>> <offset> basic machine units from the returned pointer will >>> always produce a multiple of the value of >>> MIN_MAP_BUFFER_ALIGNMENT." >>> >>> In i965's intel_bufferobj_map_range, range_map_bo or >>> range_map_buffer mappings won't have that alignment. >> >> Yeah... I had forgotten about that when I originally posted the >> project. There are a couple ways we could handle it. The one >> that occurred to me first is to modify _mesa_MapBufferRange to >> only call ctx->Driver.MapBufferRange with a properly aligned >> offset (and do the fix-up on the pointer before storing it in >> gl_buffer_object::Pointer). We don't have to worry about >> gl_buffer_object::Offset being rounded because, as far as I can >> tell, it's not visible to applications. We'd just have to make >> sure that each driver's UnmapBuffer implementation only uses >> Offset and not Pointer. >> >> Does that sound sensible? > > No, because expanding someone's range with the INVALIDATE_RANGE > flag would produce incorrect results.
Foo. Good catch. And the offset /is/ visible via glGetIntegerv(GL_BUFFER_MAP_OFFSET). I missed that on my first skim of the spec. > You just have to fix the implementations to know about the > extension. Right. I'll cook up a patch for the Intel classic drivers tomorrow. Looking at intel_bufferobj_map_range, it should be pretty trivial. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iEYEARECAAYFAlKmb6EACgkQX1gOwKyEAw/71ACgi0bS1m5EKGjvpI4N4IqAZyzq cacAnjx1I0Rf4swgIV0KhuMBx4SUFQxc =+ppa -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev