[Mesa-dev] [PATCH 00/20] Auto-generate pack/unpack functions
Iago Toral
itoral at igalia.com
Wed Nov 19 00:25:01 PST 2014
On Tue, 2014-11-18 at 13:41 -0800, Jason Ekstrand wrote:
> Iago,
>
> Most of this looks pretty good to me. The one primary concern I have
> is in the handling of integer formats. I made the comment in a couple
> of patches, but I'll make it in general here. In a lot of the code,
> when you convert from integer formats to float, you treat them as if
> they are normalized. Can you explain why you are doing this? It
> seems very wrong to me.
Right, I have been discussing this with Samuel and it does look wrong.
He will change the code and run a new piglit run to verify the changes.
>
> One other issue is that I couldn't actually get it to compile. This
> is probably due to the fact that I always build out-of-tree, so
> sourcedir and builddir are not the same. Not really sure what's going
> on there.
Mmm... that's weird. I think I remember seeing a patch that added a new
file and could be the source of that issue. We will look into it.
>
> Other than that, It's looking pretty good. I'll try and get to
> reviewing your second patch series tomorrow. Since my R-B obviously
> doesn't mean much on the code I wrote I'll try and dig up a second
> reviewer as well.
Yes, that makes sense.
Thanks for looking into these patches so fast!
Iago
> --Jason
>
>
> On Tue, Nov 18, 2014 at 12:43 AM, Iago Toral Quiroga
> <itoral at igalia.com> wrote:
> This is the fist of two series of patches to address:
> https://bugs.freedesktop.org/show_bug.cgi?id=84566
>
> The idea is that we have a lot of format conversion code
> scattered through
> different files in the repository, a lot of that is
> redundant / duplicated,
> so this intends to address that issue.
>
> The goal of this first series is to address auto-generation of
> our pack/unpack
> functions (format_pack.c and format_unpack.c). Currently, we
> have a ton of
> hand-coded pack/unpack functions for lots of formats, but we
> can auto-generate
> most of that code instead, so this series handles this.
>
> This is based on initial work by Jason Ekstrand.
>
> Tested on i965, classic swrast and gallium (radeon, nouveau,
> llvmpipe) without
> regressions.
>
> For software drivers we worked with a trimmed set of piglit
> tests (related to
> format conversion), ~5700 tests selected with the following
> filter:
>
> -t format -t color -t tex -t image -t swizzle -t clamp -t rgb
> -t lum -t pix
> -t fbo -t frame
>
> Summary of the patches:
> * Patches 1-7 are general fixes to the current code that were
> found while
> working on this.
> * Patches 8-16 implement auto-generation of pack/unpack
> functions.
> * Patches 17-20 make use of the auto-generated pack/unpack
> functions in
> various places to simplify the current code.
>
> Notice that some of the fixes in patches 1-7 will become
> obsolete as soon as
> we auto-generate the pack/unpack functions, but we thought it
> would make sense
> to keep them in the patch set anyway since we started from
> that base and they
> should be correct fixes to the currently existing code.
>
> Iago Toral Quiroga (1):
> swrast: Remove unused variable.
>
> Jason Ekstrand (9):
> mesa/format_utils: Fix a bug in one of the format helper
> functions
> mesa: Fix packing/unpacking of MESA_FORMAT_R5G6B5_UNORM
> mesa/colormac: Remove an unused macro
> mesa: Fix A1R5G5B5 packing/unpacking
> mesa/format_utils: Prefix and expose the conversion helper
> functions
> mesa: Add a concept of an array format
> mesa: Add a _mesa_is_format_color_format helper
> mesa: Autogenerate most of format_pack.c
> mesa: Autogenerate format_unpack.c
>
> Samuel Iglesias Gonsalvez (10):
> mesa: Fix get_texbuffer_format().
> mesa: Fix _mesa_swizzle_and_convert integer conversions to
> clamp
> properly
> mesa: Add _mesa_pack_uint_rgba_row() format conversion
> function
> mesa: Add non-normalized formats support for ubyte packing
> functions
> mesa/format_pack: Add _mesa_pack_int_rgba_row()
> mesa/formats: add new mesa formats and their pack/unpack
> functions.
> mesa: use format conversion functions in swrast
> mesa/pack: use autogenerated format_pack functions
> mesa/main/pack_tmp.h: Add float conversion support
> mesa/pack: refactor _mesa_pack_rgba_span_float()
>
> src/mesa/Makefile.am | 18 +
> src/mesa/Makefile.sources | 4 +-
> src/mesa/main/colormac.h | 3 -
> src/mesa/main/format_convert.py | 71 +
> src/mesa/main/format_info.py | 41 +
> src/mesa/main/format_pack.c | 2994
> ------------------------
> src/mesa/main/format_pack.c.mako | 1147 ++++++++++
> src/mesa/main/format_pack.h | 6 +
> src/mesa/main/format_unpack.c | 4400
> ------------------------------------
> src/mesa/main/format_unpack.c.mako | 914 ++++++++
> src/mesa/main/format_utils.c | 248 +-
> src/mesa/main/format_utils.h | 105 +
> src/mesa/main/formats.c | 193 +-
> src/mesa/main/formats.csv | 13 +
> src/mesa/main/formats.h | 73 +
> src/mesa/main/pack.c | 2111 +++--------------
> src/mesa/main/pack_tmp.h | 76 +-
> src/mesa/main/run_mako.py | 7 +
> src/mesa/main/teximage.c | 4 +-
> src/mesa/main/texstore.c | 2 +-
> src/mesa/swrast/s_drawpix.c | 3 -
> src/mesa/swrast/s_texfetch.c | 13 +
> src/mesa/swrast/s_texfetch_tmp.h | 1359 +----------
> 23 files changed, 3222 insertions(+), 10583 deletions(-)
> create mode 100644 src/mesa/main/format_convert.py
> delete mode 100644 src/mesa/main/format_pack.c
> create mode 100644 src/mesa/main/format_pack.c.mako
> delete mode 100644 src/mesa/main/format_unpack.c
> create mode 100644 src/mesa/main/format_unpack.c.mako
> create mode 100644 src/mesa/main/run_mako.py
>
> --
> 1.9.1
>
> _______________________________________________
> 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