From: Steinar H. Gunderson Date: Mon, 16 Oct 2017 20:16:27 +0000 (+0200) Subject: Fix some off-by-ones in the tally shader. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=4e20a14f8ca0bc3259fa2be5bbbd4057080ce62c;p=narabu Fix some off-by-ones in the tally shader. --- diff --git a/narabu-encoder.cpp b/narabu-encoder.cpp index 6b1df48..b1b86d8 100644 --- a/narabu-encoder.cpp +++ b/narabu-encoder.cpp @@ -344,8 +344,8 @@ int main(int argc, char **argv) for (unsigned i = 0; i < 4; ++i) { printf("writing table %d\n", i); for (unsigned j = 0; j < NUM_SYMS; ++j) { - printf("%d,%d: %d\n", i, j, rans_dist->ransdist[i * 256 + j].first); - write_varint(rans_dist->ransdist[i * 256 + j].first, codedfp); + printf("%d,%d: start=%d freq=%d\n", i, j, rans_dist->ransdist[i * 256 + j].first, rans_dist->ransdist[i * 256 + j].second); + write_varint(rans_dist->ransdist[i * 256 + j].second, codedfp); } } } diff --git a/tally.shader b/tally.shader index 0d6d09e..fba526b 100644 --- a/tally.shader +++ b/tally.shader @@ -145,6 +145,8 @@ void main() memoryBarrierShared(); barrier(); + new_val = new_dist[i]; + for (uint layer = 2; layer <= 256; layer *= 2) { if ((i & (layer - 1)) == layer - 1) { new_dist[i] += new_dist[i - (layer / 2)]; @@ -159,5 +161,5 @@ void main() memoryBarrierShared(); barrier(); } - ransdist[base + i] = uvec2(new_val, new_dist[i]); + ransdist[base + i] = uvec2(new_dist[i] - new_val, new_val); }