[Mesa-dev] [PATCH 00/41] ARB_direct_state_access texture functions

Anuj Phogat anuj.phogat at gmail.com
Tue Jan 6 12:20:15 PST 2015


I ran gles3 conformance on your adsa-textures branch. Your patches
cause no regressions.

With all  the comments fixed, and no piglit regressions, this series is
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

On Tue, Dec 30, 2014 at 4:27 PM, Laura Ekstrand <laura at jlekstrand.net> wrote:
> That is now fixed.  Each added entry point in my history passes make check
> now.
>
> Thanks.
>
> Laura
>
> On Tue, Dec 30, 2014 at 2:21 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
>>
>> Your adsa-textures branch on fdo fails make check.
>>
>> On Tue, Dec 16, 2014 at 6:52 AM, Laura Ekstrand <laura at jlekstrand.net>
>> wrote:
>> > This implements all of the texture functions for
>> > ARB_direct_state_access, with the exception of glTextureBufferRange.  There
>> > is an outstanding bug on the specification for glTextureBufferRange.
>> > Fortunately, glTextureBufferRange shares its implementation with
>> > glTextureBuffer and will be trivial to add once the bug is fixed.
>> >
>> > Most of the implementation work involved abstracting the internals of
>> > the traditional GL functions and writing the DSA functions on top of these
>> > abstractions.  For instance, to implement GenerateTextureMipmap, most of the
>> > functionality of GenerateMipmap was moved to a function
>> >         void _mesa_generate_texture_mipmap(struct gl_context *ctx,
>> > struct gl_texture_object *texObj, GLenum target, bool dsa).
>> > GenerateMipmap and GenerateTextureMipmap were then implemented on top of
>> > this function as thin layers that get the context and the relevant texture
>> > object.  One exciting byproduct of the creation of these backend
>> > abstractions is the potential for driver internals (such as meta) to use
>> > nameless texture objects.  These objects could be created, used, and deleted
>> > without costly hash table lookups.  Moreover, the backend abstractions avoid
>> > the use of GET_CURRENT_CONTEXT(ctx), allowing driver internals to pass in a
>> > different context if desired.
>> >
>> > For this reason, most of the backend abstractions were exposed to the
>> > rest of Mesa and given a name of the form
>> > _mesa_[DSA_function_name_in_snake_case]. To avoid confusion between the
>> > backend function names and those of software fallbacks, software fallbacks
>> > were renamed in the form _mesa_[Driver_function_name]_sw.  For instance, the
>> > backend for TexStorage2D and TextureStorage2D is named
>> > _mesa_texture_storage.  To avoid confusion with the software fallback
>> > _mesa_alloc_texture_storage, the software fallback was renamed to
>> > _mesa_AllocTextureStorage_sw.
>> >
>> > ARB_direct_state_access allows the user to create and pass around
>> > objects with the effective target of GL_TEXTURE_CUBE_MAP.  This causes some
>> > unfortunate complexities in the implementation of TextureSubImage*D and
>> > GetTextureImage, and there is an outstanding bug on how these
>> > implementations should act if the user fails to provide enough storage for
>> > his or her cube map. In the meantime, TextureSubImage*D and GetTextureImage
>> > throw GL_INVALID_OPERATION if this happens.
>> >
>> > Laura Ekstrand (41):
>> >   glapi: Added ARB_direct_state_access.xml file.
>> >   main: Created a standard function that looks up a texture object by
>> >     its ID and throws INVALID_OPERATION if the ID isn't in the hash
>> >     table.
>> >   i965: intel_tex_image.c now accepts TEXTURE_CUBE_MAP as a valid
>> >     target.
>> >   main: Moved _mesa_lock_texture and _mesa_unlock_texture to texobj.h
>> >     from teximage.h.
>> >   main: Moved _mesa_get_current_tex_object from teximage.c to texobj.c.
>> >   main: Changed _mesa_alloc_texture_storage to
>> >     _mesa_AllocTextureStorage_sw.
>> >   main: Renamed _mesa_get_teximage to _mesa_GetTexImage_sw.
>> >   main: Renamed _mesa_get_compressed_teximage to
>> >     _mesa_GetCompressedTexImage_sw.
>> >   main: Removed trailing whitespace in texstate.c.
>> >   main: Added entry point for glCreateTextures.
>> >   main: Added entry points for glTextureStorage*D.
>> >   main: Added entry points for glTextureSubImage*D.
>> >   main: Corrected comment on _mesa_is_zero_size_texture.
>> >   main: Added entry point for BindTextureUnit.
>> >   main: set_tex_parameteri now handles errors according to the OpenGL
>> >     4.5 Specification.
>> >   main: set_tex_parameterf now handles errors according to the OpenGL
>> >     4.5 Specification.
>> >   main: Added get_texobj_by_name in texparam.c.
>> >   main: Added entry point for glTextureParameterf.
>> >   main: Added entry point for glTextureParameterfv.
>> >   main: Added entry point for glTextureParameteri.
>> >   main: Added entry points for glTextureParameteriv, Iiv, Iuiv.
>> >   main: legal_get_tex_level_parameter_target now handles
>> >     GL_TEXTURE_CUBE_MAP.
>> >   main: Added entry points for glGetTextureLevelParameteriv, fv.
>> >   main: Added entry point for glGetTextureParameterfv.
>> >   main: Added entry points for glGetTextureParameteriv, Iiv, and Iuiv.
>> >   main: Fixed some comments in texparam.c
>> >   main: Added entry points for CopyTextureSubImage*D.
>> >   main: Nameless texture creation and deletion. Does not affect normal
>> >     creation and deletion paths.
>> >   main: Added entry point for glGetTextureImage.
>> >   main: Added entry point for glGetCompressedTextureImage.
>> >   main: Added entry points for glCompressedTextureSubImage*D.
>> >   main: Added entry point for glGenerateTextureMipmap.
>> >   main: Added entry points for glTextureStorage2DMultisample and
>> >     glTextureStorage3DMultisample.
>> >   main: Fixed _mesa_texture_image_multisample so that it updates the
>> >     texObj->Immutable flag correctly.
>> >   main: Added entry point for glTextureBuffer.
>> >   main: Deleted trailing whitespaces in texobj.c.
>> >   main: Fixed whitespace errors in teximage.h and teximage.c.
>> >   main: Refactor in teximage.c to handle NULL from
>> >     _mesa_get_current_tex_object.
>> >   main: glDeleteTextures now throws GL_INVALID_VALUE if n is negative.
>> >   main: Checking for cube completeness in GetTextureImage.
>> >   main: Checking for cube completeness in TextureSubImage.
>> >
>> >  src/mapi/glapi/gen/ARB_direct_state_access.xml |  271 ++++++
>> >  src/mapi/glapi/gen/Makefile.am                 |    1 +
>> >  src/mapi/glapi/gen/gl_API.xml                  |    6 +-
>> >  src/mesa/drivers/common/driverfuncs.c          |    4 +-
>> >  src/mesa/drivers/common/meta.c                 |    2 +-
>> >  src/mesa/drivers/dri/i965/intel_tex.c          |    2 +-
>> >  src/mesa/drivers/dri/i965/intel_tex_copy.c     |    1 +
>> >  src/mesa/drivers/dri/i965/intel_tex_image.c    |    1 +
>> >  src/mesa/drivers/dri/swrast/swrast.c           |    1 +
>> >  src/mesa/main/extensions.c                     |    1 +
>> >  src/mesa/main/genmipmap.c                      |   73 +-
>> >  src/mesa/main/genmipmap.h                      |    6 +
>> >  src/mesa/main/texgetimage.c                    |  497 ++++++++---
>> >  src/mesa/main/texgetimage.h                    |   33 +-
>> >  src/mesa/main/teximage.c                       | 1096
>> > +++++++++++++++++-------
>> >  src/mesa/main/teximage.h                       |  133 ++-
>> >  src/mesa/main/texobj.c                         |  397 ++++++++-
>> >  src/mesa/main/texobj.h                         |   48 +-
>> >  src/mesa/main/texparam.c                       |  758 ++++++++++++----
>> >  src/mesa/main/texparam.h                       |   84 +-
>> >  src/mesa/main/texstate.c                       |   22 +-
>> >  src/mesa/main/texstate.h                       |   39 +-
>> >  src/mesa/main/texstorage.c                     |  213 +++--
>> >  src/mesa/main/texstorage.h                     |   39 +-
>> >  src/mesa/state_tracker/st_cb_texture.c         |   12 +-
>> >  25 files changed, 2971 insertions(+), 769 deletions(-)
>> >  create mode 100644 src/mapi/glapi/gen/ARB_direct_state_access.xml
>> >
>> > --
>> > 2.1.0
>> >
>> > _______________________________________________
>> > mesa-dev mailing list
>> > mesa-dev at lists.freedesktop.org
>> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>


More information about the mesa-dev mailing list