layout(rg16ui) uniform restrict readonly uimage2D dsyms_tex;
layout(r8) uniform restrict writeonly image2D out_tex;
layout(r16i) uniform restrict writeonly iimage2D coeff_tex;
+uniform int num_blocks;
const uint prob_bits = 12;
const uint prob_scale = 1 << prob_bits;
58, 59, 52, 45, 38, 31, 39, 46,
53, 60, 61, 54, 47, 55, 62, 63
};
+const uint stream_mapping[64] = {
+ 0, 0, 1, 1, 2, 2, 3, 3,
+ 0, 0, 1, 2, 2, 2, 3, 3,
+ 1, 1, 2, 2, 2, 3, 3, 3,
+ 1, 1, 2, 2, 2, 3, 3, 3,
+ 1, 2, 2, 2, 2, 3, 3, 3,
+ 2, 2, 2, 2, 3, 3, 3, 3,
+ 2, 2, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3,
+};
layout(std430, binding = 9) buffer layoutName
{
const uint local_y = (gl_LocalInvocationID.x / 8) % 8;
const uint local_z = gl_LocalInvocationID.x / 64;
- const uint num_blocks = 720 / 16; // FIXME: make a uniform
const uint slice_num = local_z;
const uint thread_num = local_y * 8 + local_x;
//const uint coeff_num = ff_zigzag_direct[thread_num];
const uint coeff_num = thread_num;
const uint stream_num = coeff_num * num_blocks + block_row;
- const uint model_num = min((coeff_num % 8) + (coeff_num / 8), 7);
+ const uint model_num = stream_mapping[coeff_num];
const uint sign_bias = sign_bias_per_model[model_num];
// Initialize rANS decoder.