From: Jose F. <jfo...@vm...> - 2010-04-03 00:26:11
|
Probably the problems are just as you describe. But I'll be offline soon so I'll only review this and all your other changes carefully another day. Jose ________________________________________ From: luc...@gm... [luc...@gm...] On Behalf Of Luca Barbieri [lu...@lu...] Sent: Saturday, April 03, 2010 1:08 To: Jose Fonseca Cc: Brian Paul; mes...@li... Subject: Re: [Mesa3d-dev] How do we init half float tables? Sorry for the regression. This whole thing was done to fix the u_gctors.cpp issue, originally done by me, sent out without full testing since I saw duplicate work being done, and then merged by Roland if I recall correctly. I probably should not have fixed s3tc/util_format like it was done for u_half and instead put it in a branch and sent it to the ML first. Note that everything that reads pixels and does not call util_format_s3tc_init (e.g. I think rbug tools) needs something like this, or an explicit call which is likely to be forgotten (even finding out everything that ends up calling util_format is nontrivial). Anyway, this patch fixes a couple of bugs that may have caused the regression. How can I reproduce it locally? The DXTn unit tests do fail, but the values have usually a difference of 1, so I assume it's an approximation error. commit 80214ef6265d406496dc4fd3c76d8ac782cd012b Author: Luca Barbieri <lu...@lu...> Date: Sat Apr 3 01:55:27 2010 +0200 gallium/util: fix inverted if is_nop logic in s3tc diff --git a/src/gallium/auxiliary/util/u_format_s3tc.c b/src/gallium/auxiliary/util/u_format_s3tc.c index d48551f..7808210 100644 --- a/src/gallium/auxiliary/util/u_format_s3tc.c +++ b/src/gallium/auxiliary/util/u_format_s3tc.c @@ -303,7 +303,7 @@ util_format_dxt3_rgba_unpack_8unorm(uint8_t *dst_row, unsigned dst_stride, const void util_format_dxt5_rgba_unpack_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) { - if (is_nop(util_format_dxt5_rgba_fetch)) { + if (!is_nop(util_format_dxt5_rgba_fetch)) { unsigned x, y, i, j; for(y = 0; y < height; y += 4) { const uint8_t *src = src_row; @@ -324,7 +324,7 @@ util_format_dxt5_rgba_unpack_8unorm(uint8_t *dst_row, unsigned dst_stride, const void util_format_dxt1_rgb_unpack_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height) { - if (is_nop(util_format_dxt1_rgb_fetch)) { + if (!is_nop(util_format_dxt1_rgb_fetch)) { unsigned x, y, i, j; for(y = 0; y < height; y += 4) { const uint8_t *src = src_row; |