From 4e20a14f8ca0bc3259fa2be5bbbd4057080ce62c Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 16 Oct 2017 22:16:27 +0200 Subject: [PATCH] Fix some off-by-ones in the tally shader. --- narabu-encoder.cpp | 4 ++-- tally.shader | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) 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); } -- 2.39.2